Skocz do zawartości

Leczenie Magiem


alwin

Rekomendowane odpowiedzi

Mam jednostki -

 

Piechur \

Łucznik }--> jednostka_parent

Mag /

 

I chciałbym zrobić że Mag leczy samoczynnie chore jednostki w danym obrebie(ale np siebie nie może)

 

Zrobiłem to tak-

GML
if(instance_exists(jednostka_parent)){

near=instance_nearest(x,y,jednostka_parent)

if(instance_exists(near)){

 

if(point_distance(x,y,near.x,near.y)>260)

{

 

if(near.hp

walczy=true;

move_towards_point(near.x,near.y,speed_)}

 

} else if(point_distance(x,y,near.x,near.y)<=300)

 

if(near.hp<near.hp_max){

 

p=instance_create(near.x,near.y,obj_heal) //tworzymy pocisk heal</span></span>

Ale po pierwsze- najbliższą jednostką zawsze jest ten mag, takze zawsze leczy psychol siebie:/

PO drugie- bierze pod uwage wszystkie jednostki- i sprawdza tą najblizszą- jezeli np ma ona max hp to nie robi nic(bo w kodzie ma na sprawdzanie najbliższej) także jeżeli choć o 1 pixel dalej stoi ranna postać to juz jej nie uleczy bo nearest jest zdrowa..

Nie mam pojęcia jak to rozwiązać.. help <_<

 

A więc chciałbym aby mag-

w danym obrebie szukał chorych i ich leczył.

 

 

edit:

hmmm inaczej. jak mam wyłapać id obiektów których mamy powiedzmy 10, ale tylko tych których hp<hp_max? jakąś pętlą?

Odnośnik do komentarza
Udostępnij na innych stronach

Może niech najpierw szuka chorej jednostki a potem niech patrzy czy jest w zasięgu?

wtedy nie będzie się zacinać na sobie, i na bliskich zdrowych jednostkach :)

 

EDIT:

 

Nie rozumiem wojego kodu :P bo nie wime do czego służą niektóre funkcje.

 

Ja bym zrobił to tak:

 

CREATE:

GML
alarm[0]=100 // Odstęp między uleczaniem</span></span></span>

 

 

ALARM[0]

GML
if (jednostka_parent.hp<jednostka_parent.max_hp)

{

if (distance_to_object(jednostka_parent)<500)

{

instance_create(jednostka_parent.x,jednostka_parent.y,obj_heal)

}

}

 

alarm[0]=100

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności
Może niech najpierw szuka chorej jednostki a potem niech patrzy czy jest w zasięgu?

wtedy nie będzie się zacinać na sobie, i na bliskich zdrowych jednostkach :)

 

EDIT:

 

Nie rozumiem wojego kodu :P bo nie wime do czego służą niektóre funkcje.

 

Ja bym zrobił to tak:

 

CREATE:

GML
alarm[0]=100 // Odstęp między uleczaniem</span></span></span></span>

 

 

ALARM[0]

GML
if (jednostka_parent.hp<jednostka_parent.max_hp)

{

if (distance_to_object(jednostka_parent)<500)

{

instance_create(jednostka_parent.x,jednostka_parent.y,obj_heal)

}

}

 

alarm[0]=100

 

Niezły sposób ale chyba nie na to o co prosił autor tematu..

Odnośnik do komentarza
Udostępnij na innych stronach

GML
for ( i = 0; i < instance_number( object ); i += 1 )

{

id_ = instance_find( object, i );

if ( point_distance( x, y, id_.x, id_.y ) < rr )

{

if(id_.hp<id_.hp_max)

{

if(leczy){

p=instance_create(id_.x,id_.y,obj_heal)

alarm[3]=30;

strzela=false;

 

}

}

 

}

}

 

a w alarmie leczy=true i po bólu:)

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