Skocz do zawartości

wich..


Moldis

Rekomendowane odpowiedzi

Proszę o drobną pomoc, a mianowicie jak działa funkcja wich i kiedy się ją stosuje?

Patrzałem do helpa w gm'ie ale nie zbyt rozumiem co tam pisze..

 

Bo analizowałem właśnie kod w przykładzie "RpgAlaTibia" i tam jest coś takiego:

W destroy monstera:

with(instance_create(x,y,npc_respawn))

{

obj = npc_szczur;

}

 

W create npc_respawn:

obj = -1;

alarm[0]=room_speed*2;

 

W alarm[0] npc_respawn:

instance_create(x,y,obj);

instance_destroy();

 

 

Wywnioskowałem z tego że funkcja wich jakby zmienia zmienne w obiekcie który dopiero powstanie..

Więc pomyślałem że dodam jeszcze czas_respu dla każdego moba z osobna, dodałem więc zmienną 'czas_respu' w Create 'npc_respawn', ustawiłem żeby jej wartość była wysyłana z potwora którego zabijemy i była mnożnikiem czasu wykonania alarmu.. Ale to nie chce działać,tak jakby ta moja zmienna nie była w cale wysyłana, i tu wracam do początkowego pytanie, jak działa funkcja wich?

Odnośnik do komentarza
Udostępnij na innych stronach

zalóżmy że masz wlaczony obiekt0.

jeśli napiszesz

speed = 5 
instace_destroy()

 

to zmieni się speed obiekt0 i się usunie. proste. ale jak dasz w obiekt0

 

with(obiekt1)
{ 
speed = 5 
instace_destroy() 
}

to będzie to się tyczyć wszystkich obiekt1. czyli usuną się wszystkie obiekt1 i u wszystkich zmieni się speed. jeśli chcesz żeby to się tyczyło jakiejś konkretnej instancji to musisz wpisać jej id. dlatego tam było w tym kodzie instance_create bo ta funkcja zwraca to id.

Odnośnik do komentarza
Udostępnij na innych stronach

with odnosi się do obiektu w nawiasie.

 

np

witch(jablko)instance_destroy() // odnosi się do obiektu jablko - czyli do wszystkich jablek

 

w tym przypadku

with (instance_create(x,y,jablko))

 

odnosi się do stworzonego obiektu i definiuje mu zmienną :)

Odnośnik do komentarza
Udostępnij na innych stronach

Ja to robiłem tak:

destroy :

with(instance_create(x,y,npc_respawn))

{

obj = npc_szczur;

czas_respu = 5;

}

 

create :

obj = -1;

czas_respu =-1;

alarm[0]=room_speed*czas_respu;

 

I jak tak robie to jakby ta zmienna się nie zmieniała na to 5...

 

@Edit, a poprawiłeś się xD

Więc właśnie tak robie i nie działa :(

Odnośnik do komentarza
Udostępnij na innych stronach

ja już chyba wiem czemu to nie dziala :

 

with(instance_create(x,y,npc_respawn))

{

obj = npc_szczur;

czas_respu = 5;

}

 

najpierw tworzy się obiekt (instance_create) i wykonują się wszystkie akcje w create czyli :

obj = -1;

czas_respu =-1;

alarm[0]=room_speed*czas_respu

 

czyli czas_respu ustawia sie na -1 i odrazu wlacza sie alarm na -1, a dopiero pozniej zmienna zmienia wartosc na 5 ale wtedy jest za pozno bo juz sie kod wykonal xD ale jak to naprawic to nie wiem. dowód : daj w draw

draw_text(x,y,string(npc_respawn.czas_respu))

jak widzisz zmienna przyjela wartosc 5 czy jaka tam sobie ustawiles, ale juz sie nie wykona, bo alarm zostal szybciej ustawiony.

 

EDIT : wymyslilem xD

destroy moba :

with(instance_create(x,y,npc_respawn))
{
obj = npc_szczur;
czas_respu = 5;
}

create npc_respawn :

obj = -1;
czas_respu =-1;
alarm[1] = 2

alarm[1] npc_respawn :

alarm[0]=room_speed*czas_respu

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ę...