Skocz do zawartości

Rudy

Użytkownicy
  • Postów

    154
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Rudy

  1. Nie jestem pewien, ale czy nazwa rooma może zaczynać się od liczby?
  2. Chciałeś być zbyt przykładny :) . Między warunkiem (to co po if), a klamrami nie ma być średnika.
  3. GML step_dystans = point_distance(x,y,cel.x,cel.y) if(dystans<=(step_dystans/2)){direction-=2} else if(dystans>(step_dystans/2)){direction+=2} // ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // tutaj też musisz podzielić przez 2 tego tutaj już nie trzeba, jeśli pierwszy warunek się nie zgadza, drugi musi się zgadzać</span> Zakładam, że "dystans" ustalasz raz w Create. No i zmiana direction jest odpowiednio mała. Jeśli skręci więcej niż 90° nim doleci do połowy dystansu, to wróci i trafi w ciebie :D .
  4. Tak jak lechu napisał, dajesz to pod koniec step A jak nie działa, wpisz twój kod na sterowanie
  5. GML (Create) time=0; // tworzenie timera i ustawianie na 0 (gotowość)</span> GML (Step) if keyboard_check(vk_space) // czy spacja wciśnięta { if time>=0 time+=1; // jeśli nie wykonano jeszcze akcji, odliczaj if time>=5*room_speed // jeśli minęło 5 sekund { //akcja time=-1; // ustawianie timera na -1 (wykonanie akcji) } } else time=0; // jeśli nie wciśnięta spacja (czyli puszczono) zeruj timer (gotowość)</span> Teraz nie wykona ci się, puki drugi raz nie wciśniesz spacji, jeśli chcesz co pięć sekund, bierz ten kod: GML (Create) time=0; // tworzenie timera i ustawianie na 0</span> GML (Step) if keyboard_check(vk_space) // czy spacja wciśnięta { time+=1; // odliczaj if time>=5*room_speed // jeśli minęło 5 sekund { //akcja time=0; // zerowanie timera } } else time=0; // jeśli nie wciśnięta spacja (czyli puszczono) zeruj timer</span>
  6. Rudy

    Allegro

    Ta stronka może pomóc: Kurs ddt Spróbuj zrobić tablicę bitmap, do każdej zapisz po jednym obrazku, potem definicja zmiennej image_index no i pododawaj wszędzie image_index=numer_obrazka
  7. Więc to wina break. Przy dodawaniu najpierw zwiększało ilość w jednej komórce. break nic nie dawało, po prostu wychodziło z klamry, z której i tak by wyszło. Potem przechodziło do drugiej for i ponownie dodawało się (w końcu wciąż były wolne miejsca). Po dodaniu exit wychodziło się nie tylko z klamer, ale z całego kodu. Minusem jest tylko to, że nie po przejściu przez exit nie wykona nic więcej z tego klocka
  8. Jeśli to wina break, zamień je na exit i sprawdź. No a jeśli to pierwsze... po dłuższym przemyśleniu to to chyba tak nie jest :) Miejmy nadzieję, że nie.
  9. Jedyne co mi się nasuwa na myśl to to, że GM aktualizuje zmienne do innych obiektów dopiero po wykonaniu stepu. Czyli linią : baza.ido_plecak[a]=2 wcale nie zmieniasz wartości, ale tylko wysyłasz do GM info o tym, że ma się zmienić, a on to robi pod koniec stepa - jak już drugi item zostanie przydzielony. A może break nie działa jak należy... ma on wychodzić z pętli, czy z kodu? Jeśli z pętli to po dodaniu itemu, kontynuuje kod i dodaje się po raz kolejny (przechodzi do drugiego for). Takie moje przypuszczenia... :)
  10. Czy po użyciu jakiegoś itemu ustawiasz komórkę, gdzie był ten item w plecaku na 0? (chodzi o ido_plecak, nie o ilosc_plecak, możliwe, że nie do końca ten item znika, zostawia po sobie jakiś ślad :) )
  11. Ymmm... sprytnie :) Dziex wszystkim za pomoc i wyjaśnienie :thumbsup: To chyba jeszcze nie wszystko... Najpierw przedstawię wszystko, co dzieje się z tą tablicą: Tu był kodzik, ale jest już przestarzały :) Mimo iż przed WM_DESTROY musi być stworzone okno, kompilator tego nie przepuści. I jak tu coś takiego zrobić? Najlepiej byłoby jakoś zadeklarować powstawanie tablicy jako globalnej, przed wszystkimi funkcjami. Ale czy tak można? Tzn. czy można zadeklarować tablicę globalną (dynamiczną), i dopiero później przypisać jej, ile ma mieć miejsc? Ok, poradziłem sobie. Na początku deklaruję tylko wskaźnik, potem (po rozpoczęciu main) przypisuje jej tablice, na końcu main ją zwalniam.
  12. A dynamiczna tablica może być dwuwymiarowa? Bo wyskakuje błąd, wnioskuję, że chodzi właśnie o to, że jest dwuwymiarowa, nie zwykła: kod: unsigned short value1 = 5; unsigned short value2 = 3; ... int *array = new int [value1][value2]; ... delete[] array; error: cannot convert `int (*)[10]' to `int*' in initialization
  13. No właśnie, jak zadeklarować stworzenie tablicy, w której o ilości tych członów decyduje zmienna? czyli: unsigned short value1 = 5; unsigned short value2 = 3; ... int array [value1][value2]; przy czym między kropkami te zmienne mogą się zmienić.
  14. Rudy

    Code Block

    będą uzupełnione, są to domyślne położenia plików. Twoim zadaniem będzie zweryfikowanie tych pól. Najpierw sprawdź, czy istnieje folder z kompilatorem (pierwsze pole). Jeśli tak, wejdź w tym folderze do folderu bin i sprawdź, czy każdy exe'k wpisany w następnych polach w C::B jest w tym folderze. Jeśli nie, musisz sobie załatwić potrzebne pliki (lub cały kompilator, jeśli go nie masz).
  15. Rudy

    Pobieranie uchwytu kontrolki

    Yupi, yupi yey, działa :sp_ike: thx Will :D
  16. Witam wszystkich forumowiczów! Mam pewien problem w WinAPI. Na początek przedstawię plik *.rc mojego projektu, ma to być okno dialogowe z paroma kontrolkami (działa poprawnie): #include "windows.h" IDD_TEXT DIALOG DISCARDABLE 160,160,216,85 STYLE DS_MODALFRAME | WS_SYSMENU | WS_VISIBLE CAPTION "Okno z polem tekstowym" FONT 8,"MS Sans Serif" { LTEXT "Ładny tekst okienka",IDTEXT,23,10,170,14 EDITTEXT IDTEXTBAR,38,35,140,14 DEFPUSHBUTTON "&OK",IDOK,28,60,75,14 PUSHBUTTON "&Anuluj",IDCANCEL,113,60,75,14 } Ten kod działa poprawnie, nie ma w nim żadnego błędu, IDD_TEXT, IDTEXT i IDTEXTBAR zostały wcześniej zdefiniowane. Z wyświetlenie też nie ma żadnego problemu, okno wygląda jak wyglądać powinno. W czym więc problem? A więc jak ktoś się wczytał, zauważył, że w oknie jest pole do wpisywania tekstu. Jak z niego pobrać wartość, którą wpisał użytkownik? Naturalnie jest funkcja GetWindowText, ale wymaga ona uchwytu do kontrolki, a skąd tu taką wytrzasnąć? Podsumowując: Jak załatwić uchwyt do kontrolki (hWnd) mając tylko jego identyfikator (mianowicie IDTEXTBAR)?
  17. Hmmm... U mnie wszystko gra tak jak powinno. Wg mnie jest to jedno z poniższych blędów, sprawdź każdy 1. Problem z czcionką Czcionka, z której korzystasz obsługuje tylko zwykłe, niepowiększane znaki. Rozwiązanie: Spróbuj zmienić czcionkę na Arial i sprawdź jak teraz wygląda 2. Problem z wgraniem czcionki Znaki odpowiadające dużym i polskim literom nie są wczytywane przez GM Rozwiązanie: W opcjach czcionki ustaw dwie liczby, które tam są na 0 i 255 lub kliknij "All" 3. Problem z kodowaniem Być może tekst który piszesz nie pokrywa się z GM'owskim kodowaniem i przez to niektóre litery są odczytywane jako inne Rozwiązanie: Hmmm... pewnego nie ma, ale spróbuj pobawić się z pakiem języka (w XP jest obok pasku powiadomień po prawej stronie paska) EDIT: Zakładam, że dziwne znaczki to na przykład: "Ä", "Ĺ", albo "?". Najlepiej, jakbyśmy je zobaczyli, może to coś da :)
  18. Też miałem podobny problem. Zrobiłem zmienną global.game_play. Jeśli jest 1, u wszystkich obiektów gry wykonuje się normalnie akcja, jeśli 0, to nic nie robią (w międzyczasie zapisywane szybkości do zmiennej pomocniczej i takie tam). Zmienna przechodziła na 0 przy tworzeniu obiektu menu, a na 1, gdy się z niej wychodziło. Nie wiem, czy to najlepszy z możliwych sposobów, ale mój :) .
  19. można użyć dużego sprite'a. Można też za pomocą surface'a, PsichiX robił kiedyś tutorial do surface'ów, tam przy przykładzie "mgły wojny" znajdziesz odpowiedź ;)
  20. Było w bród tematów o lengthdir'ach, poszukaj. BTW: Uważam, że originy to zły pomysł. Nie wygląda zbyt ładnie, gdy ludek chodzi w kółko broni :) .
  21. Rudy

    Invalid initializer

    Aha, no tak, to takie oczywiste. Za długo siedziałem w GML'u :P
  22. Rudy

    Invalid initializer

    Witam wszystkich! Mam pewien problem. Kompilator wywala błąd już przy definicjach zmiennych, a dokładniej - przy definicji tablicy bool. Kod wygląda tak: /// wprowadzanie bibliotek /// #include "C:\Program Files\CodeBlocks\share\CodeBlocks\include\hge.h" /// deklaracje zmiennych globalnych /// HGE *hge = 0; unsigned short game_speed = 10; unsigned short add = 2+3*10; // czasami zapisuję parę małych wartości w jednej, mniej pamięci bierze unsigned short size_x = 10; unsigned short size_point = 1; unsigned short size_y = 10; unsigned short test_info = 1*1 + 1*2 + 0*4; bool click[10] = 0; // << o tutaj się błąd pojawia A kompilator pokazuje coś takiego: (...).cpp|14|error: invalid initializer| ||=== Build finished: 1 errors, 0 warnings ===| Pomoże mi ktoś?
  23. Ok, mam, dzięki za pomoc :) Edit: Xtend.dll by Snake [http://www.sgames.ovh.org/] process_find_id( ProcessName ) Returns ID of a specified process. Parameters: ProcessName [real]: Process name. Returns: [real] ID of the first process that is named as specified. If process has not been found, function will return 0. Że co? Jak można podać nazwę w realu? Wyjaśni mi to ktoś?
  24. Witam wszystkich! Chciałbym zrobić coś w rodzaju ukrytego programu (niekoniecznie GM), żeby co np. sekundę sprawdzał, czy dany proces jest uruchomiony i jeśli nie - uruchamia go. Chodzi o coś takiego: GMLif (second_last!=current_second) { if !(proces_uruchomiony("program.exe") execute_shell("program.exe",0); } second_last=current_second; Jeśli da się to w GML'u, to poproszę tylko tę funkcję, a jeśli się nie da... to jakoś inaczej :P
  25. Gra pobiera screen pulpitu (i okienek na pulpicie), potem fullscreen, screen na surface1 i surface2 i heyah :) . Domalowujesz efekty na surface2, wyświetlasz surface2 i menu, a jak reset, to pobierasz dane z surface1. Jedyny problem to pobranie screenu, chyba żeby jakoś pobrać background ze screenu, a potem surface z rooma.
×
×
  • Dodaj nową pozycję...