Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Ergebnis 1 bis 18 von 18
  1. #1 Zitieren
    Falugify
    Gast
     

    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?

  2. Beiträge anzeigen #2 Zitieren
    Kämpfer Avatar von Arkaros
    Registriert seit
    Aug 2007
    Beiträge
    329
     
    Arkaros ist offline
    What does B_GiveTradeInv() look like?
    I'm assuming that's where B_GiveTradeInv_Zuris() is called from, correct?

  3. #3 Zitieren
    Falugify
    Gast
     
    Zitat Zitat von Arkaros Beitrag anzeigen
    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));
    	};	
    };

  4. Beiträge anzeigen #4 Zitieren
    Kämpfer Avatar von Arkaros
    Registriert seit
    Aug 2007
    Beiträge
    329
     
    Arkaros ist offline
    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)

  5. Beiträge anzeigen #5 Zitieren
    Veteran Avatar von N1kX
    Registriert seit
    Aug 2018
    Ort
    Serov
    Beiträge
    640
     
    N1kX ist offline
    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

  6. #6 Zitieren
    Falugify
    Gast
     
    Zitat Zitat von N1kX Beitrag anzeigen
    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.

  7. Beiträge anzeigen #7 Zitieren
    Provinzheld Avatar von TopLayer
    Registriert seit
    Nov 2020
    Beiträge
    285
     
    TopLayer ist offline
    Zitat Zitat von Falugify Beitrag anzeigen
    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.
    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)

  8. #8 Zitieren
    Falugify
    Gast
     
    Zitat Zitat von TopLayer Beitrag anzeigen
    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 Zitat von TopLayer Beitrag anzeigen
    I can easily reproduce the second bug with clean Gothic II installation.
    I am interested to see that. I can't reproduce this.

  9. Beiträge anzeigen #9 Zitieren
    Provinzheld Avatar von TopLayer
    Registriert seit
    Nov 2020
    Beiträge
    285
     
    TopLayer ist offline
    Zitat Zitat von Falugify Beitrag anzeigen
    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 Zitat von Falugify Beitrag anzeigen
    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

  10. #10 Zitieren
    Falugify
    Gast
     
    Zitat Zitat von TopLayer Beitrag anzeigen
    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 Zitat von TopLayer Beitrag anzeigen
    Nothing interesting, you just go through the pillar as a giant bug...
    https://www.youtube.com/watch?v=sCTb9LEUB9c
    You are right, it was the same for me when I tried again.

  11. #11 Zitieren
    Falugify
    Gast
     
    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?

  12. Beiträge anzeigen #12 Zitieren
    Provinzheld Avatar von TopLayer
    Registriert seit
    Nov 2020
    Beiträge
    285
     
    TopLayer ist offline
    Zitat Zitat von Falugify Beitrag anzeigen
    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);
    }

  13. Beiträge anzeigen #13 Zitieren
    Ritter Avatar von Kirides
    Registriert seit
    Jul 2009
    Ort
    Norddeutschland
    Beiträge
    1.780
     
    Kirides ist offline
    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)

  14. #14 Zitieren
    Falugify
    Gast
     
    Thanks a lot you guys! The bug was always very annoying

  15. Beiträge anzeigen #15 Zitieren
    Provinzheld Avatar von TopLayer
    Registriert seit
    Nov 2020
    Beiträge
    285
     
    TopLayer ist offline
    Keep in mind that there are other inventory bugs related to packString. I described them here: https://forum.worldofplayers.de/foru...1#post26730380

  16. #16 Zitieren
    Falugify
    Gast
     
    Zitat Zitat von TopLayer Beitrag anzeigen
    Keep in mind that there are other inventory bugs related to packString. I described them here: https://forum.worldofplayers.de/foru...1#post26730380
    Do you know if this has been fixed with Union?

  17. Beiträge anzeigen #17 Zitieren
    Provinzheld Avatar von TopLayer
    Registriert seit
    Nov 2020
    Beiträge
    285
     
    TopLayer ist offline
    Zitat Zitat von Falugify Beitrag anzeigen
    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.

  18. #18 Zitieren
    Falugify
    Gast
     
    Zitat Zitat von TopLayer Beitrag anzeigen
    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
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide