XxMichałxX Opublikowano 15 Czerwca 2009 Udostępnij Opublikowano 15 Czerwca 2009 Ostatnio dużo rzeczy robię i zapomniałem o gmc, a trochę problemów się nazbierało. Przed chwilą sobie myślę: co tu zrobić z tym.. a od czego forum?! No to wam palnę niektóre z nich w kolejności od najważniejszego w dół: 1. [Problem (skrypt)] del_obj() Zrobiłem sobie taki system obiektów do programu Easy Outline Maker (każdy punkt, linia i inne to obiekty w moim systemie). No i teraz napisałem skrypt del_obj() i nie działa. Zmienne: objnum - ilość obiektów, _td - to delete; id obiektu do usuniecia. GML var _td; _td=argument0; if objnum<_td { return 0; } else { if objnum=_td objnum-=1; else { for(i=_td; i<=objnum; i+=1) { if i=objnum break; obj[i,type]=obj[i+1,type]; obj[i,x1]=obj[i+1,x1]; obj[i,y1]=obj[i+1,y1]; obj[i,x2]=obj[i+1,x2]; obj[i,y2]=obj[i+1,y2]; obj[i,name]=obj[i+1,name]; obj[i,idd]=obj[i+1,idd]; obj[i,chck]=obj[i+1,chck]; } return 1; } } 2. [Problem (skrypt)] draw_line_size() Naszła mnie chęć na napisanie skryptu rysującego linie o podanej grubości, aczkolwiek przydała by mi się do EOM, lecz ten mój twór nie działa. GML /* Rysuje linie o danej grubosci. argument0 - x1 argument1 - y1 argument2 - x2 argument3 - y2 argument4 - grubosc */ var _x1,_y1,_x2,_y2,_size,_dir; _x1=argument0; _y1=argument1; _x2=argument2; _y2=argument3; _size=argument4; for(i=0; i<=_size; i+=1) { _dir=point_direction(x1,y1,x2,y2); draw_line(x1+lengthdir_x(i,_dir-90),y1+lengthdir_y(i,_dir-90),x2+lengthdir_x(i,_dir-90),y2+lengthdir_y(i,_dir-90)) draw_line(x1+lengthdir_x(i,_dir+90),y1+lengthdir_y(i,_dir+90),x2+lengthdir_x(i,_dir+90),y2+lengthdir_y(i,_dir+90)) } 3. [Pytanie (funkcja)] show_menu() Czy są jakieś dodatki do show_menu(), żeby na przykład zrobić szary/zablokowany przycisk w menu? Albo może są dll-e/skrypty mające takie coś (nie chcę winapi do gm-a). 4. [Problem (funkcja && zmienne wbudowane)] collision_line() && x/y previous Dajmy na to, że mam sobie obj_bullet. W create: speed=50;, a w step: if collision_line(xprevious,yprevious,x,y,obj_wrog,1,1)!=noone obj_wrog.hp-=5;. Powyższy kod nie działa, tzn działa, ale nie do końca, bo działa tak jak zwykła kolizja - jak wypadnie, że w to miejsce skoczy co stoi obj_wrog to mu hp zabierze. Czemu? 5. [Problem/Pytanie (pętla)] for O co w tym chodzi cholipka?! Nie wiem czy w gm7 inaczej pętla for działała niż w gm7 czy co, bo np takie coś: GML log=0; for(i=0; i<5; i+=1) //i=0, jezeli i<5 to i+=1 i wykonac to ponizej, tak?? { //<to ponizej odwolujac sie do powyzej :P> log+=1; } show_message(string(log)); Doliczyło 5. A teraz: GML log=0; for(i=0; i<5; i+=1) //i=0, jezeli i<5 to i+=1 i wykonac to ponizej, tak?? { //<to ponizej odwolujac sie do powyzej :P> log+=1; show_message(string(i)); } Wyświetliło message-a 6 razy! Czyli kod wykonał się 6 razy, a pomimo to log=5? Co to ma być?! Edit: Dlatego też w powyższych kodach dawałem: GML /* Przykład */ for(i=1; i<=5; i+=1) { //instrukcja } Wszystko wina źle opisanej pętli 'for' w dokumentacji przez Tymona ;f Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 15 Czerwca 2009 Udostępnij Opublikowano 15 Czerwca 2009 4. Bo collision_line sprawdza kolizję jak sama nazwa wskazuje LINII, czyli zbioru punktów, nie zbioru spritów... Reszty nie chce mi się analizować. A ostatni - nie, kod wykonuje się 5 razy i tyle. Ty coś musiałeś spieprzyć, ale co, to nie wiem. Ed: Dokładnie, mi pokazuje się pięć okienek. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 15 Czerwca 2009 Udostępnij Opublikowano 15 Czerwca 2009 2. W GM7 jest nawet gotowa funkcja draw_line_width. A jak masz GM6 to poszukaj sobie na internecie algorytmu ( chyba był nawet na angielskiej wikipedii ). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 15 Czerwca 2009 Udostępnij Opublikowano 15 Czerwca 2009 Misiek, on nie chce rysować linii o podanej długości, tylko grubości. Bynajmniej tak mi się zdaje... Eh, nigdy nie używałem tej funkcji, to nawet nie wiedziałem xd W takim razie, strasznie dziwnie się nazywa :o Ed, kurde, samo : o wygląda lepiej niż ta emotka ;[ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 15 Czerwca 2009 Udostępnij Opublikowano 15 Czerwca 2009 no tak, mi się zdaje tak samo jak tobie. edit : Nazwa funkcji cię mogła zmylić ale tu chodzi o grubość. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się