Blokada npc podczas walki (Walka podzielona na etapy) 4407 10

O temacie

Autor Nergal

Zaczęty 7.07.2017 roku

Wyświetleń 4407

Odpowiedzi 10

Nergal

Nergal

Użytkownicy
Kawał ch*ja, reszta dziada
posty84
Propsy11
ProfesjaProgramista
  • Użytkownicy
  • Kawał ch*ja, reszta dziada
Witam. Mam mały problemik. Otóż stworzyłem sobie npc, chciałem zrobić z nim coś na zasadzie "boss fight'u" i jedna rzecz mi nie chce działać.
var int Bossenrage_first;
var int Bossenrage_second;
var int Bossenrage_third;

if(Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(NONE_666_Boss))
   {
   if((self.attribute[ATR_HITPOINTS] < 4000) && (bossenrage_first == FALSE))
       {
Npc_ClearAIQueue (self);
AI_Teleport(NONE_666_Dagon, "ALTAR");
AI_PlayAni  (self,"T_MAGRUN_2_HEASHOOT");
Bossenrage_first = TRUE;
self.flags =  2;
Wld_SpawnNpcRange(self,STRF_1122_Addon_Pardos,1,220); //Narazie dałem Pardosa, bo nie dorabiałem dodatkowych mobów.



};
if((Npc_IsDead(STRF_1122_Addon_Pardos)) && (Bossenrage_first == TRUE) && (Bossenrage_second == FALSE))
       {

Bossenrage_second = TRUE;
self.flags =  0;
AI_PlayAni  (self,"T_HEASHOOT_2_STAND");

};

Otóż gdy go teleportuje, on zamiast wykonać animację i się zablokować (coś chyba jak z krukiem w L'Hiverze), krzyczy "Nie próbuj tego jeszcze raz chłopczyku" i przestaje walczyć. Ma ktoś jakiś pomysł? Albo czy dobrze myślę, żeby wywołać mu ZS_MagicFreeze z nieograniczonym czasem, a przy śmierci Pardosa go zdjąć?
 
Nieoficjalne patche do Returning Rebalance v2.1:
http://themodders.org/index.php?topic=28417.0

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Spróbuj dodać AI_Attack ( chyba tak to się nazywało )
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Nergal

Nergal

Użytkownicy
Kawał ch*ja, reszta dziada
posty84
Propsy11
ProfesjaProgramista
  • Użytkownicy
  • Kawał ch*ja, reszta dziada
Jeśli dobrze Cię rozumiem, to AI_Attack sprawi, że on Zaatakuje mnie. Ale mi bardziej chodzi o to, żeby go teleportowało, dało mu nieśmiertelność i zrespiło tzw. ady. Zbicie ady spowoduje, że on straci nieśmiertelność, przerwie animację i mnie zaatakuje. (animacje wziąłem pomysł z Dialogu Abuyina, on dopóki nie wykona tej 2 animacji, wisi w powietrzu) Z zaatakowaniem po zabiciu addy to nie problem, wystarczy ZS_Attack wywołać. Ale co zrobić, żeby on wykonał animację. W sensie że nie oleje animacji, żeby przerwać walkę.

Nie wiem, może jakiś Aivar mi to blokuje, albo właśnie jakiś aivar mu dodać?
instance NONE_666_Boss (Npc_Default)
{
// ------ NSC ------
name = "Boss";
guild = GIL_BDT;
id = 666;
voice = 10;
flags      = 0;
npctype = NPCTYPE_MAIN;

level = 50;

attribute[ATR_STRENGTH] = 200; //+50 Waffe
attribute[ATR_DEXTERITY] = 50;
attribute[ATR_MANA_MAX] = 100;
attribute[ATR_MANA] = 100;
attribute[ATR_HITPOINTS_MAX] = 5000;
attribute[ATR_HITPOINTS] = 5000;

//aivar[AIV_IgnoresFakeGuild] = TRUE;
aivar[AIV_IgnoresArmor] = TRUE;
aivar[AIV_EnemyOverride] = TRUE;

attribute[ATR_MANA_MAX] = 666666; //Joly:für die Waffe

// ------ Kampf-Taktik ------
fight_tactic = FAI_HUMAN_MASTER;

// ------ Equippte Waffen ------ //Munition wird automatisch generiert, darf aber angegeben werden
EquipItem (self, ItMw_Elbastardo); 

// ------ Inventory ------
B_CreateAmbientInv (self);


// ------ visuals ------ //Muss NACH Attributen kommen, weil in B_SetNpcVisual die Breite abh. v. STR skaliert wird
B_SetNpcVisual (self, MALE, "Hum_Head_Thief", Face_N_Raven, BodyTex_N, ITAR_Raven_Addon);
Mdl_SetModelFatness (self, 0);
Mdl_ApplyOverlayMds (self, "Humans_Arrogance.mds");

// ------ NSC-relevante Talente vergeben ------
B_GiveNpcTalents (self);

// ------ Kampf-Talente ------ //Der enthaltene B_AddFightSkill setzt Talent-Ani abhängig von TrefferChance% - alle Kampftalente werden gleichhoch gesetzt
B_SetFightSkills (self, 90);

// ------ TA anmelden ------
daily_routine = Rtn_Start_666;
};

FUNC VOID Rtn_Start_666 ()
{
    TA_Sit_Throne (08,00,23,00,"NW_MONASTERY_THRONE_01");
    TA_Sit_Throne (23,00,08,00,"NW_MONASTERY_THRONE_01");
};

 
Nieoficjalne patche do Returning Rebalance v2.1:
http://themodders.org/index.php?topic=28417.0

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Popatrz do tutka na temat Ulu-mulu (tutaj na forum). Tam znajdziesz, jak zrobić żeby orkowie się nie rzucali na gracza. Starczy troszkę przerobić, dodać może i zmienną, która będzie określała, kiedy npc ma przestać atakować. W tych warunkach możesz dodatkowo dodać startowanie animacji.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Nergal

Nergal

Użytkownicy
Kawał ch*ja, reszta dziada
posty84
Propsy11
ProfesjaProgramista
  • Użytkownicy
  • Kawał ch*ja, reszta dziada
Popatrz do tutka na temat Ulu-mulu (tutaj na forum). Tam znajdziesz, jak zrobić żeby orkowie się nie rzucali na gracza. Starczy troszkę przerobić, dodać może i zmienną, która będzie określała, kiedy npc ma przestać atakować. W tych warunkach możesz dodatkowo dodać startowanie animacji.

Tylko mi nie chodzi, żeby on się nie rzucał na mnie. Bardziej chodzi mi o to, żeby po teleporcie nie kończył walki. 
 
Nieoficjalne patche do Returning Rebalance v2.1:
http://themodders.org/index.php?topic=28417.0

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
To w końcu co chcesz osiągnąć? Żeby npc przeteleportował się do danego miejsca, dalej Cię atakował ale był nieśmiertelny? Jeśli chcesz, żeby się teleportował i nie atakował to musisz to zrobić w ten sposób. Jeśli chcesz, żeby się tylko teleportował to dajesz AI_Teleport (nie pamiętam dokładnej nazwy), albo robisz swoją teleportację, jeśli używasz Ikarusa, jeśli chcesz żeby npc wykonywał animację. Jeśli chcesz, żeby npc po teleportacji dalej wykonywał animację, to musisz go zablokować, inaczej od razu pójdzie na Ciebie (polecam w tym momencie AI_StartState). Jeśli chcesz, żeby npc wykonał animację, teleportował się i dalej wykonywał animacje, po czym sam ją zakończy zaraz po teleporcie, musisz zrobić:
1. Wykonywanie animacji przez npc.
2. Przemieszczenie go.
3. Ustawienie tej samej animacji, ale od "środka" animacji.
4. Npc sam zakończy animację i pójdzie na Ciebie (zaatakuje).
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Nergal

Nergal

Użytkownicy
Kawał ch*ja, reszta dziada
posty84
Propsy11
ProfesjaProgramista
  • Użytkownicy
  • Kawał ch*ja, reszta dziada
Może zbyt chaotycznie to wszystko opisałem. Spróbuję inaczej.

1. Walka z npc, hp mu spada do 4000
2. W tym momencie teleportuje się do waypointu, zakłada flags = 2, wykonuje animację T_MAGRUN_2_HEASHOOT
3. W tym momencie jest nie do ruszenia, on sam też się na mnie nie rzuci
4. Przywołuje Pardosa
Potem po zabiciu pardosa kończy animację (T_HEASHOOT_2_STAND), zdejmuje mu flagę i znowu walka.

Jedyny problem jest taki, że po przeteleportowaniu on zakańcza walkę i dalsze... instrukcje dla niego (animacja) nie są wykonywane. Efekty, przywołanie pardosa są wykonywane.
 
Nieoficjalne patche do Returning Rebalance v2.1:
http://themodders.org/index.php?topic=28417.0

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Zrób albo na zasadzie mojego pierwszego postu, albo na AI_StartState. W AI_StartState możesz ustawić, że npc będzie ignorował wszystko, co się dzieje, manipulować nim jak tylko chcesz oraz zakończyć ten stan kiedy chcesz (chyba najlepszy sposób, problem w tym, że po zapisaniu i wczytaniu AI_StartState się wyłączy). Sposobem Ulu-mulu; możesz ustawić npcowi rutynę, która będzie działała praktycznie tak samo jak AI_StartState, ale będziesz mógł manipulować tym kiedy tylko chcesz. Zrobisz zmienną, która będzie określała, czy npc atakuje, czy nie (przez co będziesz mógł ustawić ignorowanie przeciwników dla danego npc, a jeśli jakimś cudem wejdzie w stan walki to go od razu zakończy). Do tego będziesz musiał edytować plik "WatchFight" (nie pamiętam dokładnej nazwy) i dodać tam ignorowanie walk dla tego bossa.

Sposób drugi jest trudniejszy, ale ma o wiele lepszy efekt. Jeśli nie chcesz się męczyć ze sposobem #2, zrób to na zasadzie AI_StartState, tyle, że będziesz musiał zakładać ten State po wczytaniu gry.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Nergal

Nergal

Użytkownicy
Kawał ch*ja, reszta dziada
posty84
Propsy11
ProfesjaProgramista
  • Użytkownicy
  • Kawał ch*ja, reszta dziada
Myślę że spróbuję tym sposobem z AI_StartState, tylko mam jedno chyba dość głupie pytanie. Czy istnieje taka funkcja jak AI_StopState ?
 
Nieoficjalne patche do Returning Rebalance v2.1:
http://themodders.org/index.php?topic=28417.0

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Nie. Wszystko ustawiasz w AI_StartState. Popatrz do ZS_MagicFreeze.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Nergal

Nergal

Użytkownicy
Kawał ch*ja, reszta dziada
posty84
Propsy11
ProfesjaProgramista
  • Użytkownicy
  • Kawał ch*ja, reszta dziada
Dziękuję za wielką pomoc. Podziałało z lekką przeróbką ZS_MagicFreeze. W każdym poście dorzuciłem Ci propsy. :)
Można zamknąć :)
 
Nieoficjalne patche do Returning Rebalance v2.1:
http://themodders.org/index.php?topic=28417.0


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry