Skocz do zawartości

Nie wykrywa gracza


Rekomendowane odpowiedzi

Witam, mam pewien dziwny bug.

 

Mianowicie mam sobie obiekt o_champion, który jest podpięty pod obiekt przeciwnicy. No i cóż, mam sobie w tym o_championie kod, który nie działa, bo nie wykrywa mi gracza, pomimo, iż reszta przeciwników go wykrywa. Z tego co zauważyłem to normalnie wykrywa, a nie wykrywa go jak jest poza viewem i zostaje deaktywowany. Ale to i tak dziwne, bo w innych przeciwnikach mi nie wywala takiego błędu z graczem :/

 

Tutaj jest kod błędu:

ERROR!!! :: ################################################################################

############

FATAL ERROR in

action number 1

of Step Event0

for object o_champion:

 

 

Unable to find any instance for object index '106757' name '<undefined>'

at gml_Object_o_champion_StepNormalEvent_1 (line 41) - if abs(x-cel.x)<250 && distance_to_object(cel)<250 goni=1 else goni=0;

################################################################################

############

 

 

Tutaj podaje wam cały step z o_championa:

GML
var cel=global.graczek[1];

var ocel=noone

if global.gracze=1

{

cel=global.graczek[1]

}

else

{

if distance_to_object(global.graczek[1])<distance_to_object(global.graczek[2]) && global.graczek[1].ginie=0

{

ocel=global.graczek[2];

cel=global.graczek[1];

}

else

{

ocel=global.graczek[1];

if global.graczek[2].ginie=0 cel=global.graczek[2] else cel=global.gracze[1];

}

}

//Odpych

if hspeed>0

{

hspeed-=0.2

}

if hspeed<0

{

hspeed+=0.2

}

if atakuje=2 && hspeed<=2 && hspeed>=-2 hspeed=0;

if moze>0 moze--;

 

//Grawitacja

if place_free(x,y+1)

{gravity = 0.5}

else

{gravity = 0}

 

if ginie=0 && stun=0{

//Kod na chodzenie

if goni=0 && stoi=0{

if abs(x-cel.x)<250 && distance_to_object(cel)<250 goni=1 else goni=0;

if zmien<1 and vspeed=0{

zmien=random(2*room_speed)

kierunek=irandom(2)

}

if zmien>0{

if kierunek=1{

image_xscale=-1

if place_free(x-spd,y){

x-=spd/2

sprite_index=sprit;

}

image_speed=0.3

}else{

image_xscale=1

if place_free(x+spd,y){

x+=spd/2

sprite_index=sprit;

}

image_speed=0.3

}

}

}else if goni=1 && cel.image_alpha=1{

if atakuje=0 && distance_to_object(cel)>dystans/2{

if cel.x>x image_xscale=1 else image_xscale=-1;

if place_free(x+spd*image_xscale,y) {x+=spd*image_xscale; sprite_index=sprit} else sprite_index=spr;

}

if atakuje=0 && moze=0 && distance_to_object(cel)<dystans{

moze=coile*room_speed;

atakuje=1;

image_index=0;

sprite_index=sprit_atak

image_speed=0.5;

if cel.x>x image_xscale=1 else image_xscale=-1;

}else if atakuje=1 && image_index>5{

atakuje=2;

kol=instance_create(x,y,o_wilk_kolizja);

kol.pan=id;

kol.atak=atak;

kol.sprite_index=spr_champion_kolizja;

}else if atakuje=2{

if place_free(x+(spd)*image_xscale,y){

x+=(spd)*image_xscale;

}

if image_index>9{

atakuje=3;

with(kol) instance_destroy();

}

}

}

}else if stun=1 && ginie=0{

atakuje=0;

image_speed=0.3;

sprite_index=spr;

stoi=0;

}

 

if hp<=0

{

with(kol) instance_destroy();

if ginie=0

{

dusz=instance_create(x,y,dusza)

dusz.sprite_index=duszas

dusz.image_xscale=image_xscale

dusz.pan=id

ginie=1

sprite_index=sprit_ginie

image_speed=0.4

image_index=0

}

}

 

if stun=1 and s=0

{

s=instance_create(x,y-yp,stunik)

s.pan=id

s.niszcz=0

}

if s!=0

{

if stun=0 or ginie!=0

{

if instance_exists(s) s.niszcz=1;

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

W którymś runtime kilka miesięcy temu nastąpiła zmiana, że jak masz instace_destroy() to się wykonuje natychmiast, a nie po skończeniu danego eventu - mi się nagle 3-4 miesiące temu zaczął pojawiać podobny błąd po takiej linijce:

 

GML
var a = instance_create(0,0,obj_enemy);

a.direction = irandom_range(0,90);

a sam obj_enemy miał w create:

GML
if instance_count(obj_enemy) > 50 instance_destroy();

No i kawałek z "a.direction" się wywalał, bo obiektu już nie było - a jestem niemal pewien, że kiedyś instance_destroy na stos się odkładało i dopiero po danym fragmencie kodu/evencie wykonywało. Musiało tak być, bo ten kod miał ze 3-4 lata i nagle dopiero teraz się zaczął wywalać.

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