Zakończenie loopa. 3113 7

O temacie

Autor TheKetrab

Zaczęty 18.12.2016 roku

Wyświetleń 3113

Odpowiedzi 7

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Cześć,

napotkałem niedawno coś, z czym nie potrafię sobie poradzić:
Przed walką na arenie NPC używa czaru przyzwania ducha i atakują mnie razem.

Robię to w ten sposób, że NPC zmienia aivar Magic na Always, potem używam:
B_Attack(self, other, AR_NONE, 1);Czyli NPC używa czaru (przyzywa ducha). Problem w tym, że NPC używa czaru bez końca... nie chce wyjść z pętli atakowania mnie. (przyzywa ducha za duchem... a ma tylko użyć czaru i wyjść z pętli ataku)

Dodam, że robiłem już wcześniej taką samą akcję, z tym, że NPC używał runy teleportacyjnej i wszystko działało.

A więc: jak zakończyć pętlę ZS_Attack? Co muszę zmienić w tamtym pliku?
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
B_SelectSpell odpowiada za to. Musisz ustawić mu aivar tak jak w przypadku Szkieleta Maga.
 
: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.

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Podpatrzyłem, ale wciąż nie działa :(

w B_SellectSpell:
if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(NASZ_115_Kurgan))
{
if (Npc_HasItems (slf, ItNa_KurganDuch) == 0)
{
CreateInvItems (slf, ItNa_KurganDuch, 1);
};

if (slf.aivar[AIV_SelectSpell] == 0)
{
B_ReadySpell (slf, SPL_SummonKurgan, 0);
return TRUE;
}

else {
Kurgan_Przyzwal_Ducha = TRUE;
return TRUE;
};

};

w ZS_Attack:
if (self.id == 115) && (Kurgan_Przyzwal_Ducha == TRUE)
{
B_ClearPerceptions (self);
Npc_ClearAIQueue(self);
AI_StandUpQuick(self);
return LOOP_END;
};

Powinien użyć czaru raz i natknąć się na zakończenie walki... Ale wciąż przyzywa ducha bez końca ;/

Jeśli w B_SellectSpell ustawię tak:
Spoiler
if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(NASZ_115_Kurgan))
{
if (Npc_HasItems (slf, ItNa_KurganDuch) == 0)
{
CreateInvItems (slf, ItNa_KurganDuch, 1);
};

if (slf.aivar[AIV_SelectSpell] == 0)
{
B_ReadySpell (slf, SPL_SummonKurgan, 0);
return TRUE;
}

else {
Kurgan_Przyzwal_Ducha = TRUE;
NASZ_115_Kurgan.aivar[AIV_SelectSpell] = 1;
return TRUE;
};

};
to od razu kończy walkę nie używając czaru ani razu...
 

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Lepiej dodać do B_SelectSpell wpis, że gdy NPC jest przed walką i duch nie jest przyzwany to przyzywa tego ducha i przechodzi do ataku?
 

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

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Troszkę nie mam koncepcji jak to ugryźć inaczej niż ja robię, bo całość ma wyglądać tak:

1. Gadają
2. Npc atakuje czyli przyzywa ducha
3. Jak przyzwie to kończy walkę od razu
4. Gadają znowu
5. Walczą wszyscy
 

Toworish

Toworish

Użytkownicy
http://chomikuj.pl/ToWoRiSh
posty1664
Propsy254
ProfesjaNierób
  • Użytkownicy
  • http://chomikuj.pl/ToWoRiSh
 
Niebawem...Pierdolnę se poradniki do Goticzka. Albo i nie, bo sie mnie nie chce.

Cruc

Cruc

Użytkownicy
posty667
Propsy236
Profesjabrak
  • Użytkownicy
Ja bym spróbował to zrobić tak.

TRUE oznacza pozostanie w trybie rzucania zaklęć, a FALSE przełącza NPCa do walki.
if (Kurgan_Przyzwal_Ducha){
return FALSE;
}
else {
B_ReadySpell (slf, SPL_SummonKurgan, 0);
Kurgan_Przyzwal_Ducha = TRUE;
return TRUE;
};

};
 
while (!success) try{...}

Najlepszy modder od gothic multiplayer - polecam pytać go o wszystko!

TheKetrab

TheKetrab

Użytkownicy
posty334
Propsy217
ProfesjaProducent
  • Użytkownicy
Trochę jeszcze pokombinowałem i poszło :) Musiałem zmienić troszkę system -> NPC w innym miejscu daje ReadySpell:

Spoiler
if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(NASZ_115_Kurgan))
{
if (Npc_HasItems (slf, ItNa_KurganDuch) == 0)
{
CreateInvItems (slf, ItNa_KurganDuch, 1);
};

B_ReadySpell (slf, SPL_SummonKurgan, 0);

if (Kurgan_Przyzwal_Ducha == FALSE){

Kurgan_Przyzwal_Ducha = TRUE;
return TRUE;
};

if (Kurgan_Przyzwal_Ducha == TRUE) {
KurganMozeStop = TRUE;

return TRUE;
};
};
Dzięki za wskazówki :)
 


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