-
27.05.2021 22:58
#1
Confused Merchant Trade - Duplicate Items, What happened and how?
Kapitel 1
[Bild: Trade1.jpg]
Kapitel 2 - First trade
[Bild: Trade2AK2.jpg]
Kapitel 2 - 2.Trade or Buying a Item in First Trade
[Bild: Trade3.jpg]
B_GiveTradeInv_Zuris
Code:
var int Zuris_ItemsGiven_Chapter_1;
var int Zuris_ItemsGiven_Chapter_2;
var int Zuris_ItemsGiven_Chapter_3;
var int Zuris_ItemsGiven_Chapter_4;
var int Zuris_ItemsGiven_Chapter_5;
FUNC VOID B_GiveTradeInv_Zuris (var C_NPC slf)
{
if ((Kapitel >= 1)
&& (Zuris_ItemsGiven_Chapter_1 == FALSE))
{
CreateInvItems (slf,ItPo_Mana_01 ,10);
CreateInvItems (slf,ItPo_Health_01 ,10);
CreateInvItems (slf, ItPo_Health_Addon_04, 2);
CreateInvItems (slf, ItPo_Mana_Addon_04, 2);
CreateInvItems (slf,ItMi_ApfelTabak ,2); //für Abuyin
CreateInvItems (slf,ItWr_Astronomy_Mis,1); //Für Mission HygalsBringBook
CreateInvItems (slf,ItFo_Addon_Pfeffer_01,1);//FÜR Mission fortuno
CreateInvItems (slf, ItPl_Health_Herb_01 , 2);
CreateInvItems (slf, ItPl_Mushroom_01 , 3);
// ------ Scrolls ------
CreateInvItems (slf,ItSc_Light ,3);
CreateInvItems (slf,ItSc_Firebolt ,5);
CreateInvItems (slf,ItSc_Icebolt ,3);
CreateInvItems (slf,ItSc_Sleep ,1);
CreateInvItems (slf,ItSc_Zap ,1);
CreateInvItems (slf,ItSc_SumWolf ,1);
// ------ AmRiBe ------
CreateInvItems (slf,ItBe_Addon_Prot_MAGIC, 1);
CreateInvItems (slf,ItAm_Hp_Mana_01 ,1);
Zuris_ItemsGiven_Chapter_1 = TRUE;
};
if ((Kapitel >= 2)
&& (Zuris_ItemsGiven_Chapter_2 == FALSE))
{
CreateInvItems (slf,ItPo_Health_Addon_04, 2);
CreateInvItems (slf,ItPo_Mana_Addon_04, 2);
CreateInvItems (slf,ItPo_Mana_01 ,15);
CreateInvItems (slf,ItPo_Mana_02 , 1);
CreateInvItems (slf,ItPo_Health_01 ,15);
CreateInvItems (slf,ItPo_Health_02 , 2);
CreateInvItems (slf,ItMi_ApfelTabak ,5);
Zuris_ItemsGiven_Chapter_2 = TRUE;
};
....
DIA_VLK_409_Zuris
Code:
///////////////////////////////////////////////////////////////////////
// Info WAREZ
///////////////////////////////////////////////////////////////////////
var int Zuris_einmal;
instance DIA_Zuris_WAREZ (C_INFO)
{
npc = VLK_409_Zuris;
nr = 2;
condition = DIA_Zuris_WAREZ_Condition;
information = DIA_Zuris_WAREZ_Info;
permanent = TRUE;
trade = TRUE;
description = "Zeig mir deine Ware.";
};
func int DIA_Zuris_WAREZ_Condition ()
{
return TRUE;
};
func void DIA_Zuris_WAREZ_Info ()
{
B_GiveTradeInv (self);
AI_Output (other, self, "DIA_Zuris_WAREZ_15_00"); //Zeig mir deine Ware.
if (Zuris_einmal == FALSE)
&& (!Npc_KnowsInfo (other, DIA_Zuris_Potions))
{
AI_Output (self, other, "DIA_Zuris_GREET_14_02"); //Gerade jetzt habe ich neue Tränke bekommen. Mein Gast, Meister Daron, der Feuermagier, hat sie mir aus dem Kloster mitgebracht.
Zuris_einmal = TRUE;
};
if (Kapitel == 1)
{
Npc_RemoveInvItems (self, ItPo_Mana_01, Npc_HasItems (self,ItPo_Mana_01) );
CreateInvItems (self, ItPo_Mana_01, 10);
Npc_RemoveInvItems (self, ItPo_Health_01, Npc_HasItems (self,ItPo_Health_01) );
CreateInvItems (self, ItPo_Health_01, 10);
};
if (Kapitel == 2)
{
Npc_RemoveInvItems (self, ItPo_Mana_01, Npc_HasItems (self,ItPo_Mana_01) );
CreateInvItems (self, ItPo_Mana_01, 15);
Npc_RemoveInvItems (self, ItPo_Health_01, Npc_HasItems (self,ItPo_Health_01) );
CreateInvItems (self, ItPo_Health_01, 15);
Npc_RemoveInvItems (self, ItPo_Mana_02, Npc_HasItems (self,ItPo_Mana_02) );
CreateInvItems (self, ItPo_Mana_02, 1);
Npc_RemoveInvItems (self, ItPo_Health_02, Npc_HasItems (self,ItPo_Health_02) );
CreateInvItems (self, ItPo_Health_02, 2);
};
if (Kapitel == 3)
{
Npc_RemoveInvItems (self, ItPo_Mana_01, Npc_HasItems (self,ItPo_Mana_01) );
CreateInvItems (self, ItPo_Mana_01, 25);
Npc_RemoveInvItems (self, ItPo_Health_01, Npc_HasItems (self,ItPo_Health_01) );
CreateInvItems (self, ItPo_Health_01, 25);
Npc_RemoveInvItems (self, ItPo_Mana_02, Npc_HasItems (self,ItPo_Mana_02) );
CreateInvItems (self, ItPo_Mana_02, 3);
Npc_RemoveInvItems (self, ItPo_Health_02, Npc_HasItems (self,ItPo_Health_02) );
CreateInvItems (self, ItPo_Health_02, 15);
};
if (Kapitel == 4)
{
Npc_RemoveInvItems (self, ItPo_Mana_01, Npc_HasItems (self,ItPo_Mana_01) );
CreateInvItems (self, ItPo_Mana_01, 35);
Npc_RemoveInvItems (self, ItPo_Health_01, Npc_HasItems (self,ItPo_Health_01) );
CreateInvItems (self, ItPo_Health_01, 35);
Npc_RemoveInvItems (self, ItPo_Mana_02, Npc_HasItems (self,ItPo_Mana_02) );
CreateInvItems (self, ItPo_Mana_02, 15);
Npc_RemoveInvItems (self, ItPo_Health_02, Npc_HasItems (self,ItPo_Health_02) );
CreateInvItems (self, ItPo_Health_02, 20);
Npc_RemoveInvItems (self, ItPo_Health_03, Npc_HasItems (self,ItPo_Health_03) );
CreateInvItems (self, ItPo_Health_03, 10);
};
if (Kapitel == 5)
{
Npc_RemoveInvItems (self, ItPo_Mana_01, Npc_HasItems (self,ItPo_Mana_01) );
CreateInvItems (self, ItPo_Mana_01, 55);
Npc_RemoveInvItems (self, ItPo_Health_01, Npc_HasItems (self,ItPo_Health_01) );
CreateInvItems (self, ItPo_Health_01, 55);
Npc_RemoveInvItems (self, ItPo_Mana_02, Npc_HasItems (self,ItPo_Mana_02) );
CreateInvItems (self, ItPo_Mana_02, 35);
Npc_RemoveInvItems (self, ItPo_Health_02, Npc_HasItems (self,ItPo_Health_02) );
CreateInvItems (self, ItPo_Health_02, 30);
Npc_RemoveInvItems (self, ItPo_Mana_03, Npc_HasItems (self,ItPo_Mana_03) );
CreateInvItems (self, ItPo_Mana_03, 15);
Npc_RemoveInvItems (self, ItPo_Health_03, Npc_HasItems (self,ItPo_Health_03) );
CreateInvItems (self, ItPo_Health_03, 20);
};
};
Can anyone help me with this Problem?
-
What does B_GiveTradeInv() look like?
I'm assuming that's where B_GiveTradeInv_Zuris() is called from, correct?
-
27.05.2021 23:58
#3
Zitat von Arkaros
What does B_GiveTradeInv() look like?
I'm assuming that's where B_GiveTradeInv_Zuris() is called from, correct?
It's G2 merchant list with Clear junk
Code:
// **********************************************
// B_GiveTradeInventory
// --------------------
// Verteiler. Aufruf aller B_GiveTradeInv-Befehle
// **********************************************
func void B_GiveTradeInv (var C_NPC slf)
{
//******************************************************************
// Hier muss jeder Händler eingetragen werden!!!!!!!
//******************************************************************
//Nostalgic
var C_NPC Trd_Rupert; Trd_Rupert = Hlp_GetNpc (VLK_458_Rupert);
var C_NPC Trd_Thorben; Trd_Thorben = Hlp_GetNpc (VLK_462_Thorben);
var C_NPC Trd_Hodges; Trd_Hodges = Hlp_GetNpc (BAU_908_Hodges);
var C_NPC Trd_Cipher; Trd_Cipher = Hlp_GetNpc (SLD_803_Cipher);
var C_NPC Trd_Ramirez; Trd_Ramirez = Hlp_GetNpc (VLK_445_Ramirez);
var C_NPC Trd_Xardas; Trd_Xardas = Hlp_GetNpc (NONE_100_Xardas);
var C_NPC Trd_Alwin; Trd_Alwin = Hlp_GetNpc (VLK_424_Alwin);
var C_NPC Trd_Thekla; Trd_Thekla = Hlp_GetNpc (BAU_913_Thekla);
var C_NPC Trd_Snaf; Trd_Snaf = Hlp_GetNpc (BDT_1098_Addon_Snaf);
var C_NPC Trd_Peck; Trd_Peck = Hlp_GetNpc (MIL_324_Peck);
//ADDON
var C_NPC Trd_Cronos_NW; Trd_Cronos_NW = Hlp_GetNpc (KDW_1401_Addon_Cronos_NW);
var C_NPC Trd_Cronos_ADW; Trd_Cronos_ADW = Hlp_GetNpc (KDW_14010_Addon_Cronos_ADW);
var C_NPC Trd_Martin; Trd_Martin = Hlp_GetNpc (Mil_350_Addon_Martin);
var C_NPC Trd_Garett; Trd_Garett = Hlp_GetNpc (PIR_1357_Addon_Garett);
var C_NPC Trd_Fisk; Trd_Fisk = Hlp_GetNpc (BDT_1097_Addon_Fisk);
var C_NPC Trd_Huno; Trd_Huno = Hlp_GetNpc (BDT_1099_Addon_Huno);
var C_NPC Trd_Erol; Trd_Erol = Hlp_GetNpc (VLK_4303_Addon_Erol);
var C_NPC Trd_Juan; Trd_Juan = Hlp_GetNpc (BDT_10017_Addon_Juan);
var C_NPC Trd_Lucia; Trd_Lucia = Hlp_GetNpc (BDT_1091_Addon_Lucia);
var C_NPC Trd_Samuel; Trd_Samuel = Hlp_GetNpc (PIR_1351_Addon_Samuel);
var C_NPC Trd_Miguel; Trd_Miguel = Hlp_GetNpc (BDT_10022_Addon_Miguel);
var C_NPC Trd_Scatty; Trd_Scatty = Hlp_GetNpc (BDT_1086_Addon_Scatty);
// GOTHIC2
var C_NPC Trd_Engor; Trd_Engor = Hlp_GetNpc (VLK_4108_Engor);
var C_NPC Trd_Matteo; Trd_Matteo = Hlp_GetNpc (VLK_416_Matteo);
var C_NPC Trd_Halvor; Trd_Halvor = Hlp_GetNpc (VLK_469_Halvor);
var C_NPC Trd_Bosper; Trd_Bosper = Hlp_GetNpc (VLK_413_Bosper);
var C_NPC Trd_Harad; Trd_Harad = Hlp_GetNpc (VLK_412_Harad);
var C_NPC Trd_Brian; Trd_Brian = Hlp_GetNpc (VLK_457_Brian);
var C_NPC Trd_Brahim; Trd_Brahim = Hlp_GetNpc (VLK_437_Brahim);
var C_NPC Trd_Constantino; Trd_Constantino = Hlp_GetNpc (VLK_417_Constantino);
var C_NPC Trd_Kardif; Trd_Kardif = Hlp_GetNpc (VLK_431_Kardif);
var C_NPC Trd_Zuris; Trd_Zuris = Hlp_GetNpc (VLK_409_Zuris);
var C_NPC Trd_Baltram; Trd_Baltram = Hlp_GetNpc (VLK_410_Baltram);
var C_NPC Trd_Canthar; Trd_Canthar = Hlp_GetNpc (VLK_468_Canthar);
var C_NPC Trd_Sarah; Trd_Sarah = Hlp_GetNpc (VLK_470_Sarah);
var C_NPC Trd_Jora; Trd_Jora = Hlp_GetNpc (VLK_408_Jora);
var C_NPC Trd_Hakon; Trd_Hakon = Hlp_GetNpc (VLK_407_Hakon);
var C_NPC Trd_Coragon; Trd_Coragon = Hlp_GetNpc (VLK_420_Coragon);
var C_NPC Trd_Gorax; Trd_Gorax = Hlp_GetNpc (KDF_508_Gorax);
var C_NPC Trd_Orlan; Trd_Orlan = Hlp_GetNpc (BAU_970_Orlan);
var C_NPC Trd_Bennet; Trd_Bennet = Hlp_GetNpc (SLD_809_Bennet);
var C_NPC Trd_Bennet_DI; Trd_Bennet_DI = Hlp_GetNpc (SLD_809_Bennet_DI);
var C_NPC Trd_Elena; Trd_Elena = Hlp_GetNpc (BAU_911_Elena);
var C_NPC Trd_Sagitta; Trd_Sagitta = Hlp_GetNpc (BAU_980_Sagitta);
var C_NPC Trd_Kjorn; Trd_Kjorn = Hlp_GetNpc (DJG_710_Kjorn);
var C_NPC Trd_Rethon; Trd_Rethon = Hlp_GetNpc (DJG_709_Rethon);
var C_NPC Trd_Rosi; Trd_Rosi = Hlp_GetNpc (BAU_936_Rosi);
var C_NPC Trd_Ignaz; Trd_Ignaz = Hlp_GetNpc (VLK_498_Ignaz);
var C_NPC Trd_Milten_DI; Trd_Milten_DI = Hlp_GetNpc (PC_Mage_DI);
var C_NPC Trd_Vatras_DI; Trd_Vatras_DI = Hlp_GetNpc (VLK_439_Vatras_DI);
var C_NPC Trd_Diego_DI; Trd_Diego_DI = Hlp_GetNpc (PC_Thief_DI);
var C_NPC Trd_Tandor; Trd_Tandor = Hlp_GetNpc (PAL_260_Tandor);
var C_NPC Trd_Sengrath; Trd_Sengrath = Hlp_GetNpc (PAL_267_Sengrath);
var C_NPC Trd_Isgaroth; Trd_Isgaroth = Hlp_GetNpc (KDF_509_Isgaroth);
var C_NPC Trd_Fenia; Trd_Fenia = Hlp_GetNpc (VLK_476_Fenia);
var C_NPC Trd_Khaled; Trd_Khaled = Hlp_GetNpc (SLD_823_Khaled);
var C_NPC Trd_Karras; Trd_Karras = Hlp_GetNpc (KDF_503_Karras);
var C_NPC Trd_Salandril; Trd_Salandril = Hlp_GetNpc (VLK_422_Salandril);
var C_NPC Trd_Gaertner; Trd_Gaertner = Hlp_GetNpc (VLK_411_Gaertner);
var C_NPC Trd_Lutero; Trd_Lutero = Hlp_GetNpc (VLK_404_Lutero);
//********************************************************************
// Hier auch!!!
//********************************************************************
B_ClearRuneInv (slf);
if (slf.aivar[AIV_ChapterInv] <= Kapitel)
{
//Nostalgic
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Rupert) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Rupert (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Thorben) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Thorben (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Hodges) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Hodges (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Cipher) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Cipher (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Ramirez) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Ramirez (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Xardas) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Xardas (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Alwin) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Alwin (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Thekla) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Thekla (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Snaf) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Addon_Snaf (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Peck) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Peck (slf);};
//ADDON
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Cronos_NW) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Addon_Cronos_NW (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Cronos_ADW) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Addon_Cronos_ADW (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Martin) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Addon_Martin (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Garett) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Addon_Garett (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Fisk) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Addon_Fisk (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Huno) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Addon_Huno (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Erol) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Addon_Erol (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Juan) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Addon_Juan (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Lucia) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Addon_Lucia (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Samuel) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Addon_Samuel (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Scatty) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Addon_Scatty (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Miguel) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Addon_Miguel (slf);};
//GOTHIC 2
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Engor) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Engor (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Matteo) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Matteo (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Halvor) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Halvor (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Bosper) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Bosper (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Harad) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Harad (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Brian) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Brian (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Brahim) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Brahim (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Constantino) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Constantino (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Kardif) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Kardif (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Zuris) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Zuris (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Baltram) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Baltram (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Canthar) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Canthar (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Sarah) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Sarah (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Jora) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Jora (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Hakon) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Hakon (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Coragon) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Coragon (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Gorax) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Gorax (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Orlan) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Orlan (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Bennet) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Bennet (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Bennet_DI) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Bennet_DI (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Elena) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Elena (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Sagitta) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Sagitta (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Kjorn) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Kjorn (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Rethon) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Rethon (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Rosi) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Rosi (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Ignaz) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Ignaz (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Milten_DI) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Milten_DI (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Vatras_DI) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Vatras_DI (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Diego_DI) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Diego_DI (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Tandor) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Tandor (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Sengrath) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Sengrath (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Isgaroth) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Isgaroth (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Fenia) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Fenia (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Khaled) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Khaled (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Karras) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Karras (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Salandril) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Salandril (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Gaertner) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Gaertner (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Lutero) {B_ClearJunkTradeInv (slf); B_GiveTradeInv_Lutero (slf);};
slf.aivar[AIV_ChapterInv] = (Kapitel +1);
};
////////////////////////////////////////////////////////////////////////////////////////////////////
// Handelsware Clearen und Ambientstuff in die Tasche, wenn Trader Unconscious oder Dead
////////////////////////////////////////////////////////////////////////////////////////////////////
if (Npc_IsInState (slf, ZS_Dead))
|| (Npc_IsInState (slf, ZS_Unconscious))
{
//Nostalgic
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Rupert) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Thorben) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Hodges) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Cipher) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Ramirez) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Xardas) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Alwin) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Thekla) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Snaf) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Peck) {B_ClearDeadTrader (slf);};
//Addon
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Cronos_NW) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Cronos_ADW) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Martin) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Garett) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Fisk) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Huno) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Erol) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Juan) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Lucia) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Samuel) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Miguel) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Scatty) {B_ClearDeadTrader (slf);};
//GOTHIC 2
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Engor) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Matteo) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Halvor) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Bosper) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Harad) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Brian) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Brahim) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Constantino) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Kardif) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Zuris) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Baltram) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Canthar) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Sarah) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Jora) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Hakon) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Coragon) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Gorax) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Orlan) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Bennet) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Bennet_DI) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Elena) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Sagitta) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Kjorn) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Rethon) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Rosi) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Ignaz) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Milten_DI) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Vatras_DI) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Diego_DI) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Tandor) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Sengrath) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Isgaroth) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Fenia) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Khaled) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Karras) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Salandril) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Gaertner) {B_ClearDeadTrader (slf);};
if Hlp_GetInstanceID (slf) == Hlp_GetInstanceID (Trd_Lutero) {B_ClearDeadTrader (slf);};
};
};
Code:
// ******************************************************
// B_ClearJunkTradeInv
// --------------------
// Löscht alle slftems aus dem Inventory der Händler
// bei einem Kapitelwechsel wird in B_GiveTradeInv_<slf>
// aufgerufen
// ******************************************************
func void B_ClearJunkTradeInv (var C_NPC slf)
{
if (Hlp_IsValidNpc(slf))
{
// Waffen
Npc_RemoveInvItems (slf ,ItMw_2H_OrcAxe_01 , Npc_HasItems (slf, ItMw_2H_OrcAxe_01));
Npc_RemoveInvItems (slf ,ItMw_2H_OrcAxe_02 , Npc_HasItems (slf, ItMw_2H_OrcAxe_02));
Npc_RemoveInvItems (slf ,ItMw_2H_OrcAxe_03 , Npc_HasItems (slf, ItMw_2H_OrcAxe_03));
Npc_RemoveInvItems (slf ,ItMw_2H_OrcAxe_04 , Npc_HasItems (slf, ItMw_2H_OrcAxe_04));
Npc_RemoveInvItems (slf ,ItMw_2H_OrcSword_01 , Npc_HasItems (slf, ItMw_2H_OrcSword_01));
Npc_RemoveInvItems (slf ,ItMw_2H_OrcSword_02 , Npc_HasItems (slf, ItMw_2H_OrcSword_02));
Npc_RemoveInvItems (slf ,ItMw_2H_OrcMace_01 , Npc_HasItems (slf, ItMw_2H_OrcMace_01));
Npc_RemoveInvItems (slf ,ItMw_1h_Bau_Mace , Npc_HasItems (slf, ItMw_1h_Bau_Mace));
// Animaltrophies
Npc_RemoveInvItems (slf ,ItAt_Meatbugflesh , Npc_HasItems (slf, ItAt_Meatbugflesh));
Npc_RemoveInvItems (slf ,ItAt_SheepFur , Npc_HasItems (slf, ItAt_SheepFur));
Npc_RemoveInvItems (slf ,ItAt_WolfFur , Npc_HasItems (slf, ItAt_WolfFur));
Npc_RemoveInvItems (slf ,ItAt_HyenaFur , Npc_HasItems (slf, ItAt_HyenaFur));
Npc_RemoveInvItems (slf ,ItAt_BugMandibles , Npc_HasItems (slf, ItAt_BugMandibles));
Npc_RemoveInvItems (slf ,ItAt_Claw , Npc_HasItems (slf, ItAt_Claw));
Npc_RemoveInvItems (slf ,ItAt_LurkerClaw , Npc_HasItems (slf, ItAt_LurkerClaw));
Npc_RemoveInvItems (slf ,ItAt_LurkerEye , Npc_HasItems (slf, ItAt_LurkerEye));
Npc_RemoveInvItems (slf ,ItAt_Teeth , Npc_HasItems (slf, ItAt_Teeth));
Npc_RemoveInvItems (slf ,ItAt_CrawlerMandibles , Npc_HasItems (slf, ItAt_CrawlerMandibles));
Npc_RemoveInvItems (slf ,ItAt_Wing , Npc_HasItems (slf, ItAt_Wing));
Npc_RemoveInvItems (slf ,ItAt_Sting , Npc_HasItems (slf, ItAt_Sting));
Npc_RemoveInvItems (slf ,ItAt_WingG1 , Npc_HasItems (slf, ItAt_WingG1));
Npc_RemoveInvItems (slf ,ItAt_StingG1 , Npc_HasItems (slf, ItAt_StingG1));
Npc_RemoveInvItems (slf ,itat_LurkerSkin , Npc_HasItems (slf, ItAt_LurkerSkin));
Npc_RemoveInvItems (slf ,ItAt_OrcdogFur , Npc_HasItems (slf, ItAt_OrcdogFur));
Npc_RemoveInvItems (slf ,ItAt_WargFur , Npc_HasItems (slf, ItAt_WargFur));
Npc_RemoveInvItems (slf ,ItAt_DrgSnapperHorn , Npc_HasItems (slf, ItAt_DrgSnapperHorn));
Npc_RemoveInvItems (slf ,ItAt_CrawlerPlate , Npc_HasItems (slf, ItAt_CrawlerPlate));
Npc_RemoveInvItems (slf ,ItAt_ShadowFur , Npc_HasItems (slf, ItAt_ShadowFur));
Npc_RemoveInvItems (slf ,ItAt_SharkSkin , Npc_HasItems (slf, ItAt_SharkSkin));
Npc_RemoveInvItems (slf ,ItAt_TrollFur , Npc_HasItems (slf, ItAt_TrollFur));
Npc_RemoveInvItems (slf ,ItAt_BearFur , Npc_HasItems (slf, ItAt_BearFur));
Npc_RemoveInvItems (slf ,ItAt_WaranFiretongue , Npc_HasItems (slf, ItAt_WaranFiretongue));
Npc_RemoveInvItems (slf ,ItAt_PantherFur , Npc_HasItems (slf, ItAt_PantherFur));
Npc_RemoveInvItems (slf ,ItAt_PumaFur , Npc_HasItems (slf, ItAt_PumaFur));
Npc_RemoveInvItems (slf ,ItAt_Addon_KeilerFur , Npc_HasItems (slf, ItAt_Addon_KeilerFur));
Npc_RemoveInvItems (slf ,ItAt_IcewolfFur , Npc_HasItems (slf, ItAt_IcewolfFur));
Npc_RemoveInvItems (slf ,ItAt_LurkerSkinG1 , Npc_HasItems (slf, ItAt_LurkerSkinG1));
Npc_RemoveInvItems (slf ,ItAt_SnapperSkin , Npc_HasItems (slf, ItAt_SnapperSkin));
Npc_RemoveInvItems (slf ,ItAt_RazorSkin , Npc_HasItems (slf, ItAt_RazorSkin));
Npc_RemoveInvItems (slf ,ItAt_DragonSnapperSkin , Npc_HasItems (slf, ItAt_DragonSnapperSkin));
Npc_RemoveInvItems (slf ,ItAt_WaranSkin , Npc_HasItems (slf, ItAt_WaranSkin));
Npc_RemoveInvItems (slf ,ItAt_FireWaranSkin , Npc_HasItems (slf, ItAt_FireWaranSkin));
// Food
Npc_RemoveInvItems (slf ,ItFo_Apple , Npc_HasItems (slf, ItFo_Apple));
Npc_RemoveInvItems (slf ,ItFo_Cheese , Npc_HasItems (slf, ItFo_Cheese));
Npc_RemoveInvItems (slf ,ItFo_Bacon , Npc_HasItems (slf, ItFo_Bacon));
Npc_RemoveInvItems (slf ,ItFo_Bread , Npc_HasItems (slf, ItFo_Bread));
Npc_RemoveInvItems (slf ,ItFo_Fish , Npc_HasItems (slf, ItFo_Fish));
Npc_RemoveInvItems (slf ,ItFoMuttonRaw , Npc_HasItems (slf, ItFoMuttonRaw));
Npc_RemoveInvItems (slf ,ItFoMutton , Npc_HasItems (slf, ItFoMutton));
Npc_RemoveInvItems (slf ,ItFo_Stew , Npc_HasItems (slf, ItFo_Stew));
Npc_RemoveInvItems (slf ,ItFo_FishSoup , Npc_HasItems (slf, ItFo_FishSoup));
Npc_RemoveInvItems (slf ,ItFo_Sausage , Npc_HasItems (slf, ItFo_Sausage));
Npc_RemoveInvItems (slf ,ItFo_Honey , Npc_HasItems (slf, ItFo_Honey));
Npc_RemoveInvItems (slf ,ItFo_wineberrys , Npc_HasItems (slf, ItFo_wineberrys));
Npc_RemoveInvItems (slf ,ItFo_Rice , Npc_HasItems (slf, ItFo_Rice));
Npc_RemoveInvItems (slf ,ItFo_Soup , Npc_HasItems (slf, ItFo_Soup));
Npc_RemoveInvItems (slf ,ItFo_Meatbugragout , Npc_HasItems (slf, ItFo_Meatbugragout));
Npc_RemoveInvItems (slf ,ItFo_Crawlersoup , Npc_HasItems (slf, ItFo_Crawlersoup));
Npc_RemoveInvItems (slf ,ItFo_Bier , Npc_HasItems (slf, ItFo_Bier));
Npc_RemoveInvItems (slf ,ItFo_Schnaps , Npc_HasItems (slf, ItFo_Schnaps));
Npc_RemoveInvItems (slf ,ItFo_Wein , Npc_HasItems (slf, ItFo_Wein));
Npc_RemoveInvItems (slf ,ItFo_Water , Npc_HasItems (slf, ItFo_Water));
Npc_RemoveInvItems (slf ,ItFo_Beer , Npc_HasItems (slf, ItFo_Beer));
Npc_RemoveInvItems (slf ,ItFo_Booze , Npc_HasItems (slf, ItFo_Booze));
Npc_RemoveInvItems (slf ,ItFo_Wine , Npc_HasItems (slf, ItFo_Wine));
Npc_RemoveInvItems (slf ,ItFo_Milk , Npc_HasItems (slf, ItFo_Milk));
// Misc
Npc_RemoveInvItems (slf ,ItMi_Stomper , Npc_HasItems (slf, ItMi_Stomper));
Npc_RemoveInvItems (slf ,ItMi_Hammer , Npc_HasItems (slf, ItMi_Hammer));
Npc_RemoveInvItems (slf ,ItMi_Scoop , Npc_HasItems (slf, ItMi_Scoop));
Npc_RemoveInvItems (slf ,ItMi_Rake , Npc_HasItems (slf, ItMi_Rake));
Npc_RemoveInvItems (slf ,ItMi_Broom , Npc_HasItems (slf, ItMi_Broom));
Npc_RemoveInvItems (slf ,ItMi_Lute , Npc_HasItems (slf, ItMi_Lute));
Npc_RemoveInvItems (slf ,ItMi_Brush , Npc_HasItems (slf, ItMi_Brush));
Npc_RemoveInvItems (slf ,ItMw_1H_SledgeHammer_01 , Npc_HasItems (slf, ItMw_1H_SledgeHammer_01));
Npc_RemoveInvItems (slf ,ItMi_Schnitzstock , Npc_HasItems (slf, ItMi_Schnitzstock));
Npc_RemoveInvItems (slf ,ItMi_Schnitzmesser , Npc_HasItems (slf, ItMi_Schnitzmesser));
Npc_RemoveInvItems (slf ,ItMi_FishingRod , Npc_HasItems (slf, ItMi_FishingRod));
Npc_RemoveInvItems (slf ,ItMi_OldCoin , Npc_HasItems (slf, ItMi_OldCoin));
Npc_RemoveInvItems (slf ,ItMi_SilverRing , Npc_HasItems (slf, ItMi_SilverRing));
Npc_RemoveInvItems (slf ,ItMi_SilverNecklace , Npc_HasItems (slf, ItMi_SilverNecklace));
Npc_RemoveInvItems (slf ,ItMi_SilverCandleHolder , Npc_HasItems (slf, ItMi_SilverCandleHolder));
Npc_RemoveInvItems (slf ,ItMi_SilverPlate , Npc_HasItems (slf, ItMi_SilverPlate));
Npc_RemoveInvItems (slf ,ItMi_SilverCup , Npc_HasItems (slf, ItMi_SilverCup));
Npc_RemoveInvItems (slf ,ItMi_SilverChalice , Npc_HasItems (slf, ItMi_SilverChalice));
Npc_RemoveInvItems (slf ,ItMi_GoldRing , Npc_HasItems (slf, ItMi_GoldRing));
Npc_RemoveInvItems (slf ,ItMi_GoldNecklace , Npc_HasItems (slf, ItMi_GoldNecklace));
Npc_RemoveInvItems (slf ,ItMi_GoldCandleHolder , Npc_HasItems (slf, ItMi_GoldCandleHolder));
Npc_RemoveInvItems (slf ,ItMi_GoldCup , Npc_HasItems (slf, ItMi_GoldCup));
Npc_RemoveInvItems (slf ,ItMi_GoldChest , Npc_HasItems (slf, ItMi_GoldChest));
Npc_RemoveInvItems (slf ,ItMi_JeweleryChest , Npc_HasItems (slf, ItMi_JeweleryChest));
Npc_RemoveInvItems (slf ,ItMi_InnosStatue , Npc_HasItems (slf, ItMi_InnosStatue));
Npc_RemoveInvItems (slf ,ItMi_Sextant , Npc_HasItems (slf, ItMi_Sextant));
// Pflanzen
Npc_RemoveInvItems (slf ,ItPl_Beet , Npc_HasItems (slf, ItPl_Beet));
Npc_RemoveInvItems (slf ,ItPl_SwampHerb , Npc_HasItems (slf, ItPl_SwampHerb));
Npc_RemoveInvItems (slf ,ItPl_Mushroom_01 , Npc_HasItems (slf, ItPl_Mushroom_01));
Npc_RemoveInvItems (slf ,ItPl_Mushroom_02 , Npc_HasItems (slf, ItPl_Mushroom_02));
Npc_RemoveInvItems (slf ,ItPl_Blueplant , Npc_HasItems (slf, ItPl_Blueplant));
Npc_RemoveInvItems (slf ,ItPl_Forestberry , Npc_HasItems (slf, ItPl_Forestberry));
Npc_RemoveInvItems (slf ,ItPl_Planeberry , Npc_HasItems (slf, ItPl_Planeberry));
};
};
-
Hm, strange. Looks like Zuris_ItemsGiven_Chapter_2 is set back to false at some point. Did you make sure that the variable doesn't appear anywhere else in the code?
Did the Items that are duped jump straight to the amounts in the screenshot (which would be weird) or do they dupe incrementally every time the trade window appears (which would be a little less weird)?
From the looks of it, the only thing that's duped is everything inside the if-statement for chapter 2 within B_GiveTradeInv_Zuris. Since you're clearing Health and Mana Potions within the DIA at
Code:
Npc_RemoveInvItems (self, ItPo_Mana_01, Npc_HasItems (self,ItPo_Mana_01) );
CreateInvItems (self, ItPo_Mana_01, 15);
...
those aren't affected by the duping (which makes them redundant within the GiveTradeInv, but that's a different story and has nothing to do with the problem at hand, i suppose)
-
Union fix it
The engine can add an item to the inventory twice
from union.patch
Code:
#patch [Items_Insert_Bug]
HEX @0x0068E08E = 'E8 83 1E 0B 00'
HEX @0x0073FF11 = 'E9 FC 08 00 00 64 A1 00 00 00 00 6A FF 68 B8 F8 7B 00 50 64 89 25 00 00 00 00 83 EC 14 53 55 56 8B 74 24 30 33 DB 3B F3 8B E9 75 16 5E 5D 33 C0 5B 8B 4C 24 14 64 89 0D 00 00 00 00 83 C4 20 C2 04 00 8B CE E8 06 A2 E4 FF 8D 48 04 A1 24 B5 8D 00 3B C3 75 05 B8 A8 08 7D 00 8B 15 28 B5 8D 00 57 52 50 8B 41 08 50 53 E8 F2 9E CC FF 85 C0 0F 85 A8 00 00 00 8A 4C 24 34 88 4C 24 14 53 8D 4C 24 18 E8 38 33 CC FF 83 C9 FF 33 C0 BF 90 CE 84 00 F2 AE F7 D1 49 51 68 90 CE 84 00 8D 4C 24 1C E8 5A 30 CC FF BF E8 06 7D 00 89 7C 24 10 8B 0D BC A6 8D 00 8B 01 8D 54 24 10 52 68 81 00 00 00 89 5C 24 34 FF 90 8C 00 00 00 8B C8 E8 AE 61 F9 FF 8B F0 8B 44 24 18 3B C3 C7 44 24 2C FF FF FF FF 89 7C 24 10 74 28 8A 48 FF 48 3A CB 74 17'
HEX @0x00740000 = '80 F9 FF 74 12 FE C9 88 08 89 5C 24 18 89 5C 24 1C 89 5C 24 20 EB 1A 50 E8 93 EB E0 FF 83 C4 04 89 5C 24 18 89 5C 24 1C 89 5C 24 20 EB 03 FF 46 04 8B BE A8 00 00 00 3B FB 74 23 8B 17 8B CF FF 12 3B C3 74 19 90 3D 28 C5 8D 00 74 09 8B 40 3C 3B C3 75 F2 EB 08 8B 07 56 8B CF FF 50 70 8B 95 50 05 00 00 8D 8D 50 05 00 00 56 81 7A 30 D0 C7 66 00 74 32 FF 52 30 8B 4E 04 49 8B F8 8B C1 3B C3 89 4E 04 7F 09 8B 06 6A 01 8B CE FF 50 0C 8B 4C 24 24 8B C7 5F 5E 5D 5B 64 89 0D 00 00 00 00 83 C4 20 C2 04 00 E8 02 00 00 00 EB CA A3 C0 FF 9D 00 89 0D C4 FF 9D 00 89 15 C8 FF 9D 00 E8 3D 03 F3 FF A1 C0 FF 9D 00 8B 0D C4 FF 9D 00 8B 15 C8 FF 9D 00 E9 F7 C6 F2 FF'
HEX @0x007400AE = 4x00000040
HEX @0x007400C4 = 4x00000040
HEX @0x007400B4 = 4x00000044
HEX @0x007400CA = 4x00000044
HEX @0x007400BA = 4x00000048
HEX @0x007400D0 = 4x00000048
#/patch
-
28.05.2021 14:50
#6
Zitat von N1kX
Union fix it
The engine can add an item to the inventory twice
from union.patch
Code:
#patch [Items_Insert_Bug]
HEX @0x0068E08E = 'E8 83 1E 0B 00'
HEX @0x0073FF11 = 'E9 FC 08 00 00 64 A1 00 00 00 00 6A FF 68 B8 F8 7B 00 50 64 89 25 00 00 00 00 83 EC 14 53 55 56 8B 74 24 30 33 DB 3B F3 8B E9 75 16 5E 5D 33 C0 5B 8B 4C 24 14 64 89 0D 00 00 00 00 83 C4 20 C2 04 00 8B CE E8 06 A2 E4 FF 8D 48 04 A1 24 B5 8D 00 3B C3 75 05 B8 A8 08 7D 00 8B 15 28 B5 8D 00 57 52 50 8B 41 08 50 53 E8 F2 9E CC FF 85 C0 0F 85 A8 00 00 00 8A 4C 24 34 88 4C 24 14 53 8D 4C 24 18 E8 38 33 CC FF 83 C9 FF 33 C0 BF 90 CE 84 00 F2 AE F7 D1 49 51 68 90 CE 84 00 8D 4C 24 1C E8 5A 30 CC FF BF E8 06 7D 00 89 7C 24 10 8B 0D BC A6 8D 00 8B 01 8D 54 24 10 52 68 81 00 00 00 89 5C 24 34 FF 90 8C 00 00 00 8B C8 E8 AE 61 F9 FF 8B F0 8B 44 24 18 3B C3 C7 44 24 2C FF FF FF FF 89 7C 24 10 74 28 8A 48 FF 48 3A CB 74 17'
HEX @0x00740000 = '80 F9 FF 74 12 FE C9 88 08 89 5C 24 18 89 5C 24 1C 89 5C 24 20 EB 1A 50 E8 93 EB E0 FF 83 C4 04 89 5C 24 18 89 5C 24 1C 89 5C 24 20 EB 03 FF 46 04 8B BE A8 00 00 00 3B FB 74 23 8B 17 8B CF FF 12 3B C3 74 19 90 3D 28 C5 8D 00 74 09 8B 40 3C 3B C3 75 F2 EB 08 8B 07 56 8B CF FF 50 70 8B 95 50 05 00 00 8D 8D 50 05 00 00 56 81 7A 30 D0 C7 66 00 74 32 FF 52 30 8B 4E 04 49 8B F8 8B C1 3B C3 89 4E 04 7F 09 8B 06 6A 01 8B CE FF 50 0C 8B 4C 24 24 8B C7 5F 5E 5D 5B 64 89 0D 00 00 00 00 83 C4 20 C2 04 00 E8 02 00 00 00 EB CA A3 C0 FF 9D 00 89 0D C4 FF 9D 00 89 15 C8 FF 9D 00 E8 3D 03 F3 FF A1 C0 FF 9D 00 8B 0D C4 FF 9D 00 8B 15 C8 FF 9D 00 E9 F7 C6 F2 FF'
HEX @0x007400AE = 4x00000040
HEX @0x007400C4 = 4x00000040
HEX @0x007400B4 = 4x00000044
HEX @0x007400CA = 4x00000044
HEX @0x007400BA = 4x00000048
HEX @0x007400D0 = 4x00000048
#/patch
I'am not sure what Union do. Fix a Bug and create another?
MobInter Collision? https://youtu.be/AdmKKIqACUM?t=1254
Monsters in Walls? https://youtu.be/_dB0H8BvoN0?t=1654
This should never happen.
-
Zitat von Falugify
Why did you decide that these are Union bugs? Do you think the original game's collision system is ideal?
I can easily reproduce the second bug with clean Gothic II installation.
Geändert von TopLayer (28.05.2021 um 18:26 Uhr)
-
28.05.2021 20:07
#8
Zitat von TopLayer
Why did you decide that these are Union bugs? Do you think the original game's collision system is ideal?
I can easily reproduce the second bug with clean Gothic II installation.
What changes Union there? Lot's of Playthroughs shows Gothic 1/2 with SystemPack 1.6 - 1.8 and works very good in the most situations. Of course, there are few exceptions that occur very rarely. In this Playthrough you can see Edda flying over the Cauldron, too. I don't recall it happening so often at all before, because the AI should do the using again if the NPC flew while spawned. It feels like it often comes to strange situations.
Zitat von TopLayer
I can easily reproduce the second bug with clean Gothic II installation.
I am interested to see that. I can't reproduce this.
-
Zitat von Falugify
What changes Union there? Lot's of Playthroughs shows Gothic 1/2 with SystemPack 1.6 - 1.8 and works very good in the most situations. Of course, there are few exceptions that occur very rarely. In this Playthrough you can see Edda flying over the Cauldron, too. I don't recall it happening so often at all before, because the AI should do the using again if the NPC flew while spawned. It feels like it often comes to strange situations.
You are right. I dont install Union from scratch but only update it, so I didn't notice that InteractionCollision patch became enabled since 1.1i. In original Gothic you are able to walk through MOBSI objects that are currently used by NPCs. This patch disables it. But Edda flies sometimes because of that. Maybe Cavalorn bug is also related (unable to reproduce). You can add this lines to your mod ini file in order to disable this patch:
Code:
[OVERRIDES_SP]
PARAMETERS.InteractionCollision=0
Zitat von Falugify
I am interested to see that. I can't reproduce this.
Nothing interesting, you just go through the pillar as a giant bug...
https://www.youtube.com/watch?v=sCTb9LEUB9c
-
29.05.2021 02:34
#10
Zitat von TopLayer
You are right. I dont install Union from scratch but only update it, so I didn't notice that InteractionCollision patch became enabled since 1.1i. In original Gothic you are able to walk through MOBSI objects that are currently used by NPCs. This patch disables it. But Edda flies sometimes because of that. Maybe Cavalorn bug is also related (unable to reproduce). You can add this lines to your mod ini file in order to disable this patch:
Code:
[OVERRIDES_SP]
PARAMETERS.InteractionCollision=0
Thanks, I think that probably makes sense if it stays at 0.
Zitat von TopLayer
You are right, it was the same for me when I tried again.
-
11.07.2021 01:17
#11
When testing I noticed that even with Union for example Zuris later in the 2nd chapter if you sold him things has 14 apple tobacco, items are duplicated, this is also not a problem of the mod. Kirides also tested his mod recently with Union and the bug also occurred with him. The problem could be related to B_ClearJunkTradeInv in combination of internal errors, which is called every time you trade for the first time on a new chapter. Is there a workaround for this?
-
Zitat von Falugify
Is there a workaround for this?
Prehook oCStealContainer :: CreateList and unpack the owner's inventory. In C++:
Code:
void __fastcall Hook_oCStealContainer_CreateList(oCStealContainer* _this, void* vtable)
{
if (_this->owner)
_this->owner->inventory2.UnpackAllItems();
Ivk_oCStealContainer_CreateList(_this);
}
-
Here is the Ikarus version of the code
It hooks oCStealContainer::CreateList, checks for the owner and calls UnpackAllItems.
Mit diesem Code hat Zuris bei Ch2->Ch3 "nur" 50->75 Heitränke, statt der "fehlerhaften" 50->150. (Spielstand war defekt, daher hatte Zuris 50 Heiltränke, obwohl er in Ch2 nur 25 haben sollte. 10+15 => 25, durch den Dopplungs bug -> (10+15 = 25*2) = 50)
Code:
/*
Fixes duplicating after trader get new items in another chapter.
Eg. after you buy or sell an item, Zuris will get twice the health potions he should actually have.
*/
func void _Hook_Fix_oCStealContainer_CreateList() {
const int owner = 0; owner = MEM_ReadInt(ECX + 160);
if (owner) {
const int oCNpcInventory_UnpackAllItems_G2 = 7405616; // 00710030
var oCNpc ownerNpc; ownerNpc = _^(owner);
const int inventory = 0; inventory = _@(ownerNpc.inventory2_vtbl);
const int call = 0;
if (CALL_Begin(call)) {
CALL__thiscall(_@(inventory), oCNpcInventory_UnpackAllItems_G2);
call = CALL_End();
};
};
};
func void Fix_TraderItemsDuplicating_Init() {
const int oCStealContainer_CreateList_G2 = 7384544; // 0070ade0, size: 7
HookEngineF(oCStealContainer_CreateList_G2, 7, _Hook_Fix_oCStealContainer_CreateList);
};
Geändert von Kirides (11.07.2021 um 16:02 Uhr)
-
11.07.2021 16:26
#14
Thanks a lot you guys! The bug was always very annoying
-
Keep in mind that there are other inventory bugs related to packString. I described them here: https://forum.worldofplayers.de/foru...1#post26730380
-
11.07.2021 18:36
#16
Zitat von TopLayer
Do you know if this has been fixed with Union?
-
Zitat von Falugify
Do you know if this has been fixed with Union?
Not. I have a plugin that fixes some engine bugs, including those related to packString. But it is not part of Union.
-
12.07.2021 17:56
#18
Zitat von TopLayer
Not. I have a plugin that fixes some engine bugs, including those related to packString. But it is not part of Union.
Thanks. It would make sense to transfer some bugfixes from the plugin to the basic version of Union.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|