Aloah Gemeinde,
evtl. kann mir jemand bei einem imho völlig wirren Problem helfen ...
Hero soll einen Trank trinken, daraufhin in Ohnmacht fallen und wegteleportiert werden (Levelchange).
In die USE-func des Trankes habe ich also zunächst ... 'AI_StartState (hero, ZS_MagicSleep2, 0, "");'
geschrieben, was auch gut funxte - da das Teleportieren danach zu Problemen führte, wollte ich nun
eine komplett neue ZS schreiben, die in der Loop anstelle von
Code:
if (Npc_GetStateTime(self) > SPL_Time_Sleep) {
Npc_ClearAIQueue(self);
B_StopMagicSleep(); // aufstehen, Kommentar etc.
return LOOP_END;
};
bereits nach kürzerer Zeit (SPL_Time_Sleep = 30) eine andere Folge-func aufruft:
Code:
if (Npc_GetStateTime(self) > 5 {
Npc_ClearAIQueue(self);
B_StopMagicTeleport(); // wegteleportieren
return LOOP_END;
};
Aus unerfindlichen Gründen funktioniert das nicht - und zwar GAR NICHT, denn
Hero sinkt nicht einmal ohnmächtig zusammen (wobei der erste Teil des neuen ZS
exakt übernommen wurde aus der originalen ZS-MagicSleep, incl.
'AI_PlayAniBS (self, "T_STAND_2_VICTIM_SLE", BS_LIE );'
Um dem Problem auf die Spur zu kommen, kommentierte ich meine func aus und
kopierte die originale ZS_MagicSleep 1 zu 1 dort hinein (aber benannte die dann um, klar)
- aber siehe: Es funktioniert nicht.
Obwohl GENAU DASSELBE drinsteht, zeigt Hero keinerlei Reaktion - er trinkt seinen Trank
und bleibt dann einfach stehen.
Schluss, aus.
wtf!?
edit: Habe das Problem jetzt mit purer Schlamperei umgangen - originale ZS_MagicSleep
umgeschrieben und einfach in die Loop ...
Code:
if Npc_IsPlayer (self) && SmuEVT_VAR[98] == 1 { // wird in der USE-func des Trankes gesetzt
if (Npc_GetStateTime(self) > 5) {
Npc_ClearAIQueue(self);
B_StopMagicTeleport();
return LOOP_END;
};
};
.. eingefügt. Bauernschlau, aber eben auch bauernhaft.
Nehme ich EXAKT diese Datei und benenne sie dann um (incl. aller kruzialen Teile),
passiert nach wie vor - nix.
Warum?