alwin Opublikowano 25 Kwietnia 2010 Udostępnij Opublikowano 25 Kwietnia 2010 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 Więcej opcji udostępniania...
Lordis Opublikowano 25 Kwietnia 2010 Udostępnij Opublikowano 25 Kwietnia 2010 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 Więcej opcji udostępniania...
alwin Opublikowano 25 Kwietnia 2010 Autor Udostępnij Opublikowano 25 Kwietnia 2010 A to GML if (jednostka_parent.hp<jednostka_parent.max_hp) odwoła sie do wszystkich jednostek? Nie trzeba w pętli każdej osobno sprawdzać? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 25 Kwietnia 2010 Filar Społeczności Udostępnij Opublikowano 25 Kwietnia 2010 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 Więcej opcji udostępniania...
alwin Opublikowano 25 Kwietnia 2010 Autor Udostępnij Opublikowano 25 Kwietnia 2010 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 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ę