Skocz do zawartości

Zbiór moich małych problemów


Rekomendowane odpowiedzi

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

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

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...