[G1] Skrypt na znikanie run z ciał pokonanego przeciwnika jak w Gothic 2 578 0

O temacie

Autor Kirgo2

Zaczęty 26.05.2025 roku

Wyświetleń 578

Odpowiedzi 0

Kirgo2

Kirgo2

Użytkownicy
posty29
Propsy5
ProfesjaGracz
  • Użytkownicy
Dużo filozofii tutaj nie ma. Skopiowałem funkcję b_clearruneinv z Gothica II, podmieniłem czary i zrobiłem by się aktywowała w momencie gdy postać jest nieprzytomna/zabita. Dzięki temu otrzymuje się taki efekt jak w Gothic II - np. jak przy zabiciu poszukiwacza, któremu nie da się zabrać zaklęć.

Przydatne jeżeli ktoś dodaje do swojej modyfikacji do Gothica I sporo przeciwników posługujących się runami i nie chce by potem gracz sprzedawał je handlarzom. W Gothic I runy są dość drogie, więc przy większej liczbie przeciwników postać dostałaby dość dużego zastrzyku magicznej rudy.

Wklejam gotowca dla oszczędności sił i czasu, bo nie ma sensu by każdy kolejny modder do swojego projektu wykonywał ten skrypt od nowa.

func void b_clearruneinv(var C_NPC slf)
{
var C_NPC her;
her = Hlp_GetNpc(pc_hero);
if(Hlp_GetInstanceID(self) != Hlp_GetInstanceID(her))
{
Npc_RemoveInvItems(slf,ItArRuneLight,Npc_HasItems(slf,ItArRuneLight));
Npc_RemoveInvItems(slf,ItArRuneFirebolt,Npc_HasItems(slf,ItArRuneFirebolt));
Npc_RemoveInvItems(slf,ItArRuneFireball,Npc_HasItems(slf,ItArRuneFireball));
Npc_RemoveInvItems(slf,ItArRuneFirestorm,Npc_HasItems(slf,ItArRuneFirestorm));
Npc_RemoveInvItems(slf,ItArRuneFireRain,Npc_HasItems(slf,ItArRuneFireRain));
Npc_RemoveInvItems(slf,ItArRuneHeal,Npc_HasItems(slf,ItArRuneHeal));
Npc_RemoveInvItems(slf,ItArRuneChainLightning,Npc_HasItems(slf,ItArRuneChainLightning));
Npc_RemoveInvItems(slf,ItArRuneThunderbolt,Npc_HasItems(slf,ItArRuneThunderbolt));
Npc_RemoveInvItems(slf,ItArRuneThunderball,Npc_HasItems(slf,ItArRuneThunderball));
Npc_RemoveInvItems(slf,ItArRuneIceCube,Npc_HasItems(slf,ItArRuneIceCube));
Npc_RemoveInvItems(slf,ItArRuneIceWave,Npc_HasItems(slf,ItArRuneIceWave));
Npc_RemoveInvItems(slf,ItArRuneDestroyUndead,Npc_HasItems(slf,ItArRuneDestroyUndead));
Npc_RemoveInvItems(slf,ItArRuneWindfist,Npc_HasItems(slf,ItArRuneWindfist));
Npc_RemoveInvItems(slf,ItArRuneStormfist,Npc_HasItems(slf,ItArRuneStormfist));
Npc_RemoveInvItems(slf,ItArRuneTelekinesis,Npc_HasItems(slf,ItArRuneTelekinesis));
Npc_RemoveInvItems(slf,ItArRuneCharm,Npc_HasItems(slf,ItArRuneCharm));
Npc_RemoveInvItems(slf,ItArRuneSleep,Npc_HasItems(slf,ItArRuneSleep));
Npc_RemoveInvItems(slf,ItArRunePyrokinesis,Npc_HasItems(slf,ItArRunePyrokinesis));
Npc_RemoveInvItems(slf,ItArRuneControl,Npc_HasItems(slf,ItArRuneControl));
Npc_RemoveInvItems(slf,ItArRuneBreathOfDeath,Npc_HasItems(slf,ItArRuneBreathOfDeath));
};
};

To co jest wyżej wkleiłem zwyczajowo do pliku "B_InExtremo.d" w Gothic\_work\DATA\scripts\Content\Story\B.

By funkcja się wywoływała wklejasz B_ClearRuneInv(self); w plikach "ZS_Dead.d" i "ZS_Unconscious.d". Oba pliki znajdują się w Gothic\_work\DATA\scripts\Content\AI\ZS_Human.

W pliku "ZS_Dead.d" możesz wkleić B_ClearRuneInv(self); pod B_GiveDeathInv();, zaś w ZS_Unconscious.d" tuż poniżej self.aivar[AIV_PLUNDERED] = FALSE;

Te wycinki powinny wyglądać wówczas tak:

W "ZS_Dead.d":

B_GiveDeathInv();
B_ClearRuneInv(self); //klaue alle runen!!

W "ZS_Unconscious.d"

self.aivar[AIV_PLUNDERED] = FALSE;
B_ClearRuneInv(self);//Hoshi, damit der Player keine Runen findet!

Gotowe!
 


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