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

 

Seite 1 von 2 12 Letzte »
Ergebnis 1 bis 20 von 39
  1. Beiträge anzeigen #1 Zitieren
    OdysseeModTeam Avatar von blackpirate
    Registriert seit
    Jan 2008
    Ort
    Jharkendar
    Beiträge
    20.021
     
    blackpirate ist offline

    yINSTANCE_HELP

    Die Spieler bekommen in Odyssee beim looten toter Monster ein leeres rötliches item oder eins mit dem Namen yINSTANCE_HELP ins Inventar. "ÿINSTANCE_HELP" ('\0xFF' + "INSTANCE_HELP") ist ein Hilfssymbol für den Parser und ist scheinbar durch einen Hero-.Export in die Mod gekommen. Hat einer eine Idee wie man das wieder beheben kann?

    Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:
    ODYSSEE - IM AUFTRAG DES KÖNIGS



  2. Homepage besuchen Beiträge anzeigen #2 Zitieren
    Clockwork Origins Avatar von Bonne6
    Registriert seit
    Jun 2004
    Ort
    Erlangen
    Beiträge
    11.826
     
    Bonne6 ist offline
    Zitat Zitat von blackpirate Beitrag anzeigen
    Die Spieler bekommen in Odyssee beim looten toter Monster ein leeres rötliches item oder eins mit dem Namen yINSTANCE_HELP ins Inventar. "ÿINSTANCE_HELP" ('\0xFF' + "INSTANCE_HELP") ist ein Hilfssymbol für den Parser und ist scheinbar durch einen Hero-.Export in die Mod gekommen. Hat einer eine Idee wie man das wieder beheben kann?
    Hatte das beim Spielen ja auch (genauso wie komplett leere Items, also ohne Beschreibung, Name usw. (kann da beim nächsten Mal schauen wegen Insert-Code)). Kann mir aber nicht erklären, wo das herkommt, hab ja nichts gecheatet oder so.

  3. Beiträge anzeigen #3 Zitieren
    OdysseeModTeam Avatar von blackpirate
    Registriert seit
    Jan 2008
    Ort
    Jharkendar
    Beiträge
    20.021
     
    blackpirate ist offline
    Zitat Zitat von Bonne6 Beitrag anzeigen
    Hatte das beim Spielen ja auch (genauso wie komplett leere Items, also ohne Beschreibung, Name usw. (kann da beim nächsten Mal schauen wegen Insert-Code)). Kann mir aber nicht erklären, wo das herkommt, hab ja nichts gecheatet oder so.
    Der Fehler wird in den Scripten sein. Wir verwenden Ikarus und Lego. Vielelicht wurde da irgendetwas gemacht, was den Fehler verursacht hat. Vielleicht bei einer Legoaktualisierung.

    Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:
    ODYSSEE - IM AUFTRAG DES KÖNIGS



  4. Beiträge anzeigen #4 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Benutzt ihr nicht eine DLL von... Ingenieur, mit der dynamisch Instanzen erzeugt werden? Das klingt für mich am ehesten nach der Fehlerquelle.

  5. Beiträge anzeigen #5 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.410
     
    NicoDE ist offline
    Irgendwas hat irgendwann ein Item mit dem Symbolindex 0 ins Inventar getan. \255INSTANCE_HELP hat immer den Index 0 (weil es vom Parser sogar noch vor den Externals angelegt wird). Es wird intern dazu benutzt, Objektreferezenzen als Rückgabewert von Externals zurückzugeben. Es könnte sich zu dem Zeitpunkt also tatsächlich um eine C_Item-Referenz gehandelt haben... Nur war das wohl nicht beabsichtigt. Ein ähnliches Problem gibt es mit Npc_RemoveItem und anderen Externals. Eigentlich dürfte man ITEM (die Intanzvariable) nicht verwenden... aber der Support wurde teilweise in den Externals eingebaut...

  6. Beiträge anzeigen #6 Zitieren
    Legende der Amazonen Avatar von Bisasam
    Registriert seit
    Dec 2006
    Ort
    Meine Faust in Sinis Gesicht
    Beiträge
    9.639
     
    Bisasam ist offline
    Zitat Zitat von NicoDE Beitrag anzeigen
    Irgendwas hat irgendwann ein Item mit dem Symbolindex 0 ins Inventar getan. \255INSTANCE_HELP hat immer den Index 0 (weil es vom Parser sogar noch vor den Externals angelegt wird). Es wird intern dazu benutzt, Objektreferezenzen als Rückgabewert von Externals zurückzugeben. Es könnte sich zu dem Zeitpunkt also tatsächlich um eine C_Item-Referenz gehandelt haben... Nur war das wohl nicht beabsichtigt. Ein ähnliches Problem gibt es mit Npc_RemoveItem und anderen Externals. Eigentlich dürfte man ITEM (die Intanzvariable) nicht verwenden... aber der Support wurde teilweise in den Externals eingebaut...
    Soll heißen wenn ich Wld_RemoveItem oder Npc_RemoveItem verwende, dass dann leere Items auftauchen können? o.O


    "Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
    -Korallenkette

  7. Beiträge anzeigen #7 Zitieren
    OdysseeModTeam Avatar von blackpirate
    Registriert seit
    Jan 2008
    Ort
    Jharkendar
    Beiträge
    20.021
     
    blackpirate ist offline
    Zitat Zitat von Lehona Beitrag anzeigen
    Benutzt ihr nicht eine DLL von... Ingenieur, mit der dynamisch Instanzen erzeugt werden? Das klingt für mich am ehesten nach der Fehlerquelle.
    Keine Ahnung. Ich kann mich jetzt nicht an so eine DLL von Ingenieur erinnern.


    Zitat Zitat von NicoDE Beitrag anzeigen
    Irgendwas hat irgendwann ein Item mit dem Symbolindex 0 ins Inventar getan. \255INSTANCE_HELP hat immer den Index 0 (weil es vom Parser sogar noch vor den Externals angelegt wird). Es wird intern dazu benutzt, Objektreferezenzen als Rückgabewert von Externals zurückzugeben. Es könnte sich zu dem Zeitpunkt also tatsächlich um eine C_Item-Referenz gehandelt haben... Nur war das wohl nicht beabsichtigt. Ein ähnliches Problem gibt es mit Npc_RemoveItem und anderen Externals. Eigentlich dürfte man ITEM (die Intanzvariable) nicht verwenden... aber der Support wurde teilweise in den Externals eingebaut...
    Kann man die Ursache irgendwie ermitteln und korrigieren?

    Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:
    ODYSSEE - IM AUFTRAG DES KÖNIGS



  8. Beiträge anzeigen #8 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Zitat Zitat von blackpirate Beitrag anzeigen
    Keine Ahnung. Ich kann mich jetzt nicht an so eine DLL von Ingenieur erinnern.
    Du hast Recht, LoA hat die benutzt, nicht Odyssee

  9. Beiträge anzeigen #9 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.410
     
    NicoDE ist offline
    Zitat Zitat von blackpirate Beitrag anzeigen
    Kann man die Ursache irgendwie ermitteln und korrigieren?
    Zur Ursache müsste ich noch ein paar Dinge ausprobieren, aber zur Korrektur sollte Npc_RemoveInvItems mit 0 als ItemId reichen:
    Code:
    Npc_RemoveInvItems(hero, 0, Npc_HasItems(hero, 0));
    Ich habe es mit einem manipulierten Hero-Export/Import und folgendem Dokument unter Gothic 1 getestet:
    Code:
    func void DocTest()
    {
    	var int doc;
    	var int val;
    	doc = Doc_Create();
    	if (doc >= 0) {
    		Doc_SetPages(doc, 2);
    		Doc_SetPage(doc, 0, "BOOK_MAGE_L.TGA", FALSE);
    		Doc_SetMargins(doc, 0, 275, 20, 30, 20, TRUE);
    		Doc_SetPage(doc, 1, "BOOK_MAGE_R.TGA", FALSE);
    		Doc_SetMargins(doc, 1, 30, 20, 275, 20, TRUE);
    		Doc_SetFont(doc, -1, "FONT_10_BOOK.TGA");
    		val = Npc_HasItems(hero, 0);
    		Doc_PrintLine(doc, 0, ConcatStrings("amount = ", IntToString(val)));
    		if (val > 0) {
    			val = Npc_RemoveInvItems(hero, 0, val);
    			Doc_PrintLine(doc, 0, ConcatStrings("remove = ", IntToString(val)));
    			val = Npc_HasItems(hero, 0);
    			Doc_PrintLine(doc, 0, ConcatStrings("amount = ", IntToString(val)));
    		};
    		Doc_Show(doc);
    	};
    };
    
    instance ADocTest(C_Item)
    {
    	name        = "DocTest";
    	mainflag    = ITEM_KAT_DOCS;
    	flags       = ITEM_MISSION;
    	value       = 42;
    	visual      = "ItWr_Book_02_05.3ds";
    	material    = MAT_LEATHER;
    	scemeName   = "MAP";
    	on_state[0] = DocTest;
    };
    ps: Das Einfügen zum Reproduzieren ist ebenso einfach:
    Code:
    CreateInvItems(hero, 0, 42);
    pps: Noch "schöner" ist, dass man auch C_NPC-Instanzen ins Inventar legen kann:
    Code:
    CreateInvItems(hero, PC_Hero, 42);
    [Bild: attachment.php?s=dd4aec99c0ec9c93a030faf0d2c94162&attachmentid=45638&d=1495470962&thumb=1]
    "Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
    Geändert von NicoDE (22.05.2017 um 17:36 Uhr)

  10. Beiträge anzeigen #10 Zitieren
    OdysseeModTeam Avatar von Alain Dufont
    Registriert seit
    Oct 2016
    Ort
    hinter dem Mond
    Beiträge
    3.865
     
    Alain Dufont ist offline
    Zitat Zitat von NicoDE Beitrag anzeigen
    Zur Ursache müsste ich noch ein paar Dinge ausprobieren, aber zur Korrektur sollte Npc_RemoveInvItems mit 0 als ItemId reichen:
    Code:
    Npc_RemoveInvItems(hero, 0, Npc_HasItems(hero, 0));
    Ich habe es mit einem manipulierten Hero-Export/Import und folgendem Dokument unter Gothic 1 getestet:
    Code:
    func void DocTest()
    {
        var int doc;
        var int val;
        doc = Doc_Create();
        if (doc >= 0) {
            Doc_SetPages(doc, 2);
            Doc_SetPage(doc, 0, "BOOK_MAGE_L.TGA", FALSE);
            Doc_SetMargins(doc, 0, 275, 20, 30, 20, TRUE);
            Doc_SetPage(doc, 1, "BOOK_MAGE_R.TGA", FALSE);
            Doc_SetMargins(doc, 1, 30, 20, 275, 20, TRUE);
            Doc_SetFont(doc, -1, "FONT_10_BOOK.TGA");
            val = Npc_HasItems(hero, 0);
            Doc_PrintLine(doc, 0, ConcatStrings("amount = ", IntToString(val)));
            if (val > 0) {
                val = Npc_RemoveInvItems(hero, 0, val);
                Doc_PrintLine(doc, 0, ConcatStrings("remove = ", IntToString(val)));
                val = Npc_HasItems(hero, 0);
                Doc_PrintLine(doc, 0, ConcatStrings("amount = ", IntToString(val)));
            };
            Doc_Show(doc);
        };
    };
    
    instance ADocTest(C_Item)
    {
        name        = "DocTest";
        mainflag    = ITEM_KAT_DOCS;
        flags       = ITEM_MISSION;
        value       = 42;
        visual      = "ItWr_Book_02_05.3ds";
        material    = MAT_LEATHER;
        scemeName   = "MAP";
        on_state[0] = DocTest;
    };
    ps: Das Einfügen zum Reproduzieren ist ebenso einfach:
    Code:
    CreateInvItems(hero, 0, 42);

    Okay. Das mache ich.

    In welche Datei muss Npc_RemoveInvItems(hero, 0, Npc_HasItems(hero, 0)); eingefügt werden. In die Startup Global?

  11. Beiträge anzeigen #11 Zitieren
    OdysseeModTeam Avatar von blackpirate
    Registriert seit
    Jan 2008
    Ort
    Jharkendar
    Beiträge
    20.021
     
    blackpirate ist offline
    Zitat Zitat von Alain Dufont Beitrag anzeigen
    In welche Datei muss Npc_RemoveInvItems(hero, 0, Npc_HasItems(hero, 0)); eingefügt werden. In die Startup Global?

    Ich würde das in PC_hero eintragen.

    Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:
    ODYSSEE - IM AUFTRAG DES KÖNIGS



  12. Beiträge anzeigen #12 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Nein, das bringt natürlich nichts. Dann würden die Items nur einmal beim Spielstart entfernt, was nutzlos ist, wenn man sie im Spielverlauf erst aufsammelt

    Am einfachsten ist es wohl, das regelmäßig (z.B. in einer FrameFunc) aufzurufen. Wenn der Spieler keine "leeren" Items looten können soll, solltet ihr die Zeile wohl auch nochmal für das focus_vob ausführen, falls da ein NPC-Pointer drinsteht (Hlp_Is_oCNpc).

  13. Beiträge anzeigen #13 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.410
     
    NicoDE ist offline
    Zitat Zitat von Alain Dufont Beitrag anzeigen
    In die Startup Global?
    Ich bin nicht sicher, ob das funktioniert (ich kenne die Reihenfolge beim Laden nicht auswendig).

    Außerdem ist das eher eine kosmetische Korrektur, die interessantere Frage ist, wie der Spieler (bzw. die Monster - durch Plündern?) zu diesen 0-Items kommt. Wenn das geklärt und behoben ist, dann kann man sich auch gezielt um die automatische Beseitigung in alten Spielständen kümmern...
    "Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor

  14. Beiträge anzeigen #14 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Speziell heißt das: Da Monster üblicherweise keine Items aufsammeln, solltet ihr mal alle Aufrufe von Npc_CreateInvItem bzw. Npc_CreateInvItems durchschauen (Die meisten Texteditoren unterstützen eine Suche in mehreren Dateien/Ordnern). Wenn da eine feste Instanz (z.B. ItMi_Joint) steht, ist alles gut. Die Problemstellen sind potentiell all diejenigen Orte, wo eine Variable an die Funktion übergeben wird... Oder natürlich, wenn einfach immer 0 übergeben wird. Aber das sollte ja klar sein

    Edit: Nico hatte ja außerdem festgestellt, dass man z.B. auch NPCs ins Inventar tun kann... Ihr müsst also bei den Instanzen auch überprüfen, ob das wirklich C_Items sind. Das könnte man allerdings wohl auch automatisieren, mit ein wenig Aufwand... Insgesamt wird es aber wohl nicht so viele potentielle Stellen geben, wo der Fehler auftreten kann, da ist man von Hand vermutlich schneller.

  15. Beiträge anzeigen #15 Zitieren
    OdysseeModTeam Avatar von blackpirate
    Registriert seit
    Jan 2008
    Ort
    Jharkendar
    Beiträge
    20.021
     
    blackpirate ist offline
    Zitat Zitat von Lehona Beitrag anzeigen
    Speziell heißt das: Da Monster üblicherweise keine Items aufsammeln, solltet ihr mal alle Aufrufe von Npc_CreateInvItem bzw. Npc_CreateInvItems durchschauen (Die meisten Texteditoren unterstützen eine Suche in mehreren Dateien/Ordnern). Wenn da eine feste Instanz (z.B. ItMi_Joint) steht, ist alles gut. Die Problemstellen sind potentiell all diejenigen Orte, wo eine Variable an die Funktion übergeben wird... Oder natürlich, wenn einfach immer 0 übergeben wird. Aber das sollte ja klar sein

    Edit: Nico hatte ja außerdem festgestellt, dass man z.B. auch NPCs ins Inventar tun kann... Ihr müsst also bei den Instanzen auch überprüfen, ob das wirklich C_Items sind. Das könnte man allerdings wohl auch automatisieren, mit ein wenig Aufwand... Insgesamt wird es aber wohl nicht so viele potentielle Stellen geben, wo der Fehler auftreten kann, da ist man von Hand vermutlich schneller.
    Ich habe in den Scripten weder Npc_CreateInvItem noch Npc_CreateInvItems finden können. Es kommt lediglich in den Externals dieses hier:

    Code:
    func INT  	Npc_GetInvItemBySlot    	(VAR C_NPC self, VAR INT category, VAR INT slotNr)
    // Mit diesem Befehl läßt sich nachsehen, ob in einem bestimmten Slot einer bestimmten Kategorie ein item vorhanden ist
    // ist das der Fall, wird dieses Item in die globale Variable item geschrieben
    // gibt jetzt die Anzahl zurueck, wenn das Item stackable ist
    //. Den Transfer machst Du dann per Npc_RemoveInvItems() und Npc_CreateInvItems().

    Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:
    ODYSSEE - IM AUFTRAG DES KÖNIGS



  16. Beiträge anzeigen #16 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Ah, die Funktionen heißen einfach nur CreateInvItem bzw. CreateInvItems. Die haben wohl keinen Präfix.

    Für CreateInvItem bekomme ich selbst in den größtenteils bereinigten Scripten ~650 Ergebnisse. Es könnte sich also vermutlich lohnen, insbesondere die NPC-Scripte auszuschließen, da es unwahrscheinlich ist, dass sich in diesen Scripten ein Bug befindet, der alle NPCs betrifft.

  17. Beiträge anzeigen #17 Zitieren
    OdysseeModTeam Avatar von blackpirate
    Registriert seit
    Jan 2008
    Ort
    Jharkendar
    Beiträge
    20.021
     
    blackpirate ist offline
    Zitat Zitat von Lehona Beitrag anzeigen
    Ah, die Funktionen heißen einfach nur CreateInvItem bzw. CreateInvItems. Die haben wohl keinen Präfix.
    Dann wird das die Stecknadel im Heuhaufen, da die meisten NPCs CreateInvItem bzw. CreateInvItems im Script haben. Allerdings tritt der Fehler ja nur auf, wenn man Monster lootet. Könnte der Fehler dann nicht in der B_GiveDeathInv sein? In diesem befindet sich auch ein Killprotokoll. Vielleicht ist das ja die Fehlerursache?

    Hier das Script:
    Code:
    // **************************
    // B_GiveDeathInv
    // --------------
    // für Menschen und Monster
    // gibt Monstern AnimalTrophy
    // **************************
    
    	
    	//Für Killprotokoll 
    	var int death_HT; 
        func void onDeath(var int instance) 
        {
    	  if (!death_HT) 
    	  { 
    	  death_HT = HT_Create();
    	  };
    	
    	  if (HT_Get(death_HT, instance)) 
    
    	  { /* HT_Get() ist hier nicht sehr schön, allerdings gibt es HT_Has() im aktuellen Release noch nicht. Außerdem sind sie in diesem Fall gleichwertig */
    		
    		HT_Change(death_HT, HT_Get(death_HT, instance)+1, instance);
    	  } 
    	  else 
    	  {
    		HT_Insert(death_HT, 1, instance);
    	  };
        };
    	
    	
    func string GetSymbolNameByID(var int ID) 
    {
    	var zCPar_Symbol symb; symb = _^(MEM_GetSymbolByIndex(ID));
    	return symb.name;
    };
    
    
    func void writeKillcountToFile_sub(var int key, var int val) 
    {	
    	SB(GetSymbolNameByID(key));
    	SB(": ");
    	SBi(val);
    	SB("x getötet.\n");
    };
    
    func void writeKillcountToFile(var string file) 
    {
    	SB_New();
    	HT_ForEach(death_HT, writeKillcountToFile_sub);
    	BW_NewFile(file);
    	BW_String(STR_Unescape(SB_ToString()));
    	BW_Close();
    };
    
    
    func void saveKillcount(var int state) 
    {
        if (state != Gamestate_Saving) 
        { 
        return;
        };
        writeKillcountToFile("C:Killprotokoll.txt");
    };
    
    func void B_GiveDeathInv (var C_NPC slf)
    {
    	// EXIT IF...
    	
    	//-------- NUR beim ersten Durchlauf weitermachen (AIV_DeathInvGiven ist dann FALSE, wird hier (unten) auf TRUE gesetzt) --------
    	if	(slf.aivar[AIV_DeathInvGiven] == TRUE)
    	{
    		return;
    	};
    	
    	// FUNC
    	
    	// ------ Zähne verteilen ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Teeth] == TRUE)
    	{
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_BLACKDESSERTWOLF)		{	CreateInvItems (slf, ItAt_Teeth	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_BLACKWOLF)		{	CreateInvItems (slf, ItAt_Teeth	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_Hyena)		    {	CreateInvItems (slf, ItAt_Teeth	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_WOLF)			{	CreateInvItems (slf, ItAt_Teeth		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_ICEWOLF)		{	CreateInvItems (slf, ItAt_Teeth		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_WARG)			{	CreateInvItems (slf, ItAt_Teeth		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SNAPPER)		{	CreateInvItems (slf, ItAt_Teeth		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER)	{	CreateInvItems (slf, ItAt_Teeth		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_RAZOR)			{	CreateInvItems (slf, ItAt_Teeth		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST)	{	CreateInvItems (slf, ItAt_Teeth		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_BLOODHOUND)		{	CreateInvItems (slf, ItAt_Teeth		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SWAMPSHARK)		{	CreateInvItems (slf, ItAt_SharkTeeth, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SANDWURM)		{	CreateInvItems (slf, ItAt_SandwurmTeeth, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_LION)	     	{	CreateInvItems (slf, ItAt_Teeth		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_LIONESS)     	{	CreateInvItems (slf, ItAt_Teeth		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_PANTHER)     	{	CreateInvItems (slf, ItAt_Teeth		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_LEOPARD)	   	{	CreateInvItems (slf, ItAt_Teeth		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_DESSERTWOLF)   	{	CreateInvItems (slf, ItAt_Teeth		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SAEBELZAHN)		{	CreateInvItems (slf, ItAt_SaebelzahnTeeth	, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_TROLL)			{	CreateInvItems (slf, ItAt_TrollTooth, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SCHNEEBESTIE)	{	CreateInvItems (slf, ItAt_SchneebestieTooth, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_TROLL_BLACK)	{	CreateInvItems (slf, ItAt_TrollTooth, 4);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_UNDEADTROLL)			{	CreateInvItems (slf, ItAt_TrollTooth, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_UNDEADTROLL_BLACK)	{	CreateInvItems (slf, ItAt_TrollTooth, 4);	};
    	};
    	
    	// ------ Krallen verteilen ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] == TRUE)
    	{
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_WARAN)			{	CreateInvItems (slf, ItAt_Claw		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN)		{	CreateInvItems (slf, ItAt_Claw		, 4);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SNAPPER)		{	CreateInvItems (slf, ItAt_Claw		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_RAZOR)			{	CreateInvItems (slf, ItAt_Claw		, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER)	{	CreateInvItems (slf, ItAt_Claw		, 4);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST)	{	CreateInvItems (slf, ItAt_Claw		, 4);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_BLOODHOUND)		{	CreateInvItems (slf, ItAt_Claw		, 4);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_ZIEGE)		    {	CreateInvItems (slf, ItAt_Ziegenhorn, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_LION)	{	CreateInvItems (slf, ItAt_Claw		, 4);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_LIONESS)	{	CreateInvItems (slf, ItAt_Claw		, 4);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_PANTHER)	{	CreateInvItems (slf, ItAt_Claw		, 4);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_LEOPARD)	{	CreateInvItems (slf, ItAt_Claw		, 4);	};
    		
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_LURKER)			{	CreateInvItems (slf, ItAt_LurkerClaw, 1);	};	
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_GIFTLURKER)			{	CreateInvItems (slf, ItAt_LurkerClaw, 1);	};
    	};
    	
    	// ------ Fell und Häute verteilen ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Fur] == TRUE)
    	{
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SHEEP)			{	CreateInvItems (slf, ItAt_SheepFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_WOLF)			{	CreateInvItems (slf, ItAt_WolfFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_ICEWOLF)		{	CreateInvItems (slf, ItAt_IceWolfFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_DESSERTWOLF)		{	CreateInvItems (slf, ItAt_DessertWolfFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_BLACKDESSERTWOLF)		{	CreateInvItems (slf, ItAt_BlackDessertWolfFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_BLACKWOLF)		{	CreateInvItems (slf, ItAt_BlackDessertWolfFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SAEBELZAHN)		{	CreateInvItems (slf, ItAt_SaebelzahnFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_WARG)			{	CreateInvItems (slf, ItAt_WargFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST)	{	CreateInvItems (slf, ItAt_ShadowFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_LION)	        {	CreateInvItems (slf, ItAt_LionFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_ASLAN)	        {	CreateInvItems (slf, ItAt_AslansLionFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_LIONESS)	    {	CreateInvItems (slf, ItAt_LionFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_PANTHER)	    {	CreateInvItems (slf, ItAt_PantherFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SNAPPERVARANT)	    {	CreateInvItems (slf, ItAt_Snapperhaut	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SCHNEEBESTIE)		{	CreateInvItems (slf, ItAt_SchneebestieFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_TROLL)			{	CreateInvItems (slf, ItAt_TrollFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_TROLL_BLACK)	{	CreateInvItems (slf, ItAt_TrollBlackFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_WILDSCHWEIN)		{	CreateInvItems (slf, ItAt_Addon_KeilerFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_RIPPER)	      	{	CreateInvItems (slf, ItAt_RipperFur	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_Keiler)			{	CreateInvItems (slf, ItAt_Addon_KeilerFur, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_ZIEGE)			{	CreateInvItems (slf, ItMi_Ziegenfell_08, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_DACHS)			{	CreateInvItems (slf, ItAt_DachsFur, 1);	};
            if (slf.aivar[AIV_MM_REAL_ID] == ID_LEOPARD)	    {	CreateInvItems (slf, ItAt_LeopardFur	, 1);	};
    	    if (slf.aivar[AIV_MM_REAL_ID] == ID_SCHAKAL)		{	CreateInvItems (slf, ItAt_SchakalFur	, 1);	};
    	    if (slf.aivar[AIV_MM_REAL_ID] == ID_Hyena)			{	CreateInvItems (slf, ItAt_HyenaFur, 1);	};
    	
    	    
    	};
    	
    	// ------ Fell und Häute verteilen ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_ReptileSkin] == TRUE)
    	{
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_LURKER)			{	CreateInvItems (slf, itat_LurkerSkin, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_GIFTLURKER)		{	CreateInvItems (slf, itat_LurkerSkin, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SNAPPER)		{	CreateInvItems (slf, itat_LurkerSkin, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_RAZOR)			{	CreateInvItems (slf, itat_LurkerSkin, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER)	{	CreateInvItems (slf, itat_LurkerSkin, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_WARAN)			{	CreateInvItems (slf, itat_LurkerSkin, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN)		{	CreateInvItems (slf, itat_LurkerSkin, 1);	};
    		// ---------------------------------------------------------------------------------------------------
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SWAMPSHARK)		{	CreateInvItems (slf, ItAt_SharkSkin	, 1);	};	
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SANDWURM)		{	CreateInvItems (slf, ItAt_SandwurmSkin	, 1);	};	
    	};
    
    
    
    	// ------ Herzen verteilen ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Heart] == TRUE)
    	{
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_STONEGOLEM)		{	CreateInvItems (slf, ItAt_StoneGolemHeart	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_ERZGOLEM)		{	CreateInvItems (slf, ItAt_ErzGolemHeart	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_VARANTSTONEGOLEM)		{	CreateInvItems (slf, ItAt_VarantStoneGolemHeart	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SANDGOLEM)		{	CreateInvItems (slf, ItAt_SandGolemHeart	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SALZGOLEM)		{	CreateInvItems (slf, ItAt_SaltGolemHeart	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_KOHLEGOLEM)		{	CreateInvItems (slf, ItAt_CoalGolemHeart	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SILBERGOLEM)		{	CreateInvItems (slf, ItAt_SilverGolemHeart	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_WASSERGOLEM)		{	CreateInvItems (slf, ItAt_WaterGolemHeart	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_OZEANGOLEM)		{	CreateInvItems (slf, ItAt_OceanGolemHeart	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_FIREGOLEM)		{	CreateInvItems (slf, ItAt_FireGolemHeart	, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_ICEGOLEM)		{	CreateInvItems (slf, ItAt_IceGolemHeart		, 1);	};
    		
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_DEMON)			{	CreateInvItems (slf, ItAt_DemonHeart, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_DEMON_LORD)		{	CreateInvItems (slf, ItAt_DemonHeart, 1);	};
    		
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_WUESTENGEIST)			{	CreateInvItems (slf, ItMi_Kristall, 1);	};
    		
    		
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_EISDEMON)			{	CreateInvItems (slf, ItAt_EisDemonHeart, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_EISDEMON_LORD)		{	CreateInvItems (slf, ItAt_EisDemonHeart, 1);	};
    	};
    
    	// ------ Horn eines Shadowbeasts ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_ShadowHorn] == TRUE)
    	{
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SHADOWBEAST)	{	CreateInvItems (slf, ItAt_ShadowHorn, 1);	};
    	};
    	
    	// ------ Zunge eines Feuerwarans ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_FireTongue] == TRUE)
    	{
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN)		{	CreateInvItems (slf, ItAt_WaranFiretongue, 1);	};
    	};
    
    	// ------ Blutfliegen-Flügel ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_BFWing] == TRUE)
    	{
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_BLOODFLY)		{	CreateInvItems (slf, ItAt_Wing, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_GIFTFLIEGEKLEIN)		{	CreateInvItems (slf, ItAt_Wing, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_GIFTFLIEGEGROSS)		{	CreateInvItems (slf, ItAt_Wing, 2);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_GIFTWESPE)		{	CreateInvItems (slf, ItAt_Wing, 2);	};
    	};
    	
    	// ------ Blutfliegen-Stachel ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_BFSting] == TRUE)
    	{
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_BLOODFLY)		{	CreateInvItems (slf, ItAt_Sting, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_GIFTFLIEGEKLEIN)		{	CreateInvItems (slf, ItAt_Sting, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_GIFTFLIEGEGROSS)		{	CreateInvItems (slf, ItAt_Sting, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_GIFTWESPE)		{	CreateInvItems (slf, ItAt_Sting, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SWAMPDRONE)		{	CreateInvItems (slf, ItAt_Sting, 1);	};
    		
    	};
    	
    	// ------ Giftdrüse ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_BFSting] == TRUE)
    	{
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_GIFTLURKER)		{	CreateInvItems (slf, ItAt_Giftdruese, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_MUMIE)		    {	CreateInvItems (slf, ItAt_Giftdruese, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_RIPPER)		    {	CreateInvItems (slf, ItAt_Giftdruese, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_PESTRATTE)		{	CreateInvItems (slf, ItAt_Giftdruese, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_GIFTLURKER)		{	CreateInvItems (slf, ItAt_Giftdruese, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_SANDWURM)		{	CreateInvItems (slf, ItAt_Giftdruese, 1);	};
    	};
    	
    	// ------ Zangen von Giant_Bugs und Crawlern ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Mandibles] == TRUE)
    	{
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_GIANT_BUG)			{	CreateInvItems (slf, ItAt_BugMandibles, 	1);	};
    		
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLER)		{	CreateInvItems (slf, ItAt_CrawlerMandibles, 1);	};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLERWARRIOR)	{	CreateInvItems (slf, ItAt_CrawlerMandibles, 1);	};
    	};
    	
    	// ------ Crawler-Platten ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_CrawlerPlate] == TRUE)
    	{
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLER)		{	CreateInvItems (slf, ItAt_CrawlerPlate, 1);		};
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_MINECRAWLERWARRIOR)	{	CreateInvItems (slf, ItAt_CrawlerPlate, 2);		};
    	};
    	
    	// ------ Drachensnapperhorn ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DrgSnapperHorn] == TRUE)
    	{
    		if (slf.aivar[AIV_MM_REAL_ID] == ID_DRAGONSNAPPER)		{	CreateInvItems (slf, ItAt_DrgSnapperHorn, 2); 	};
    	};
    	
    	// ------ Drachen-Schuppen ------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DragonScale] == TRUE)
    	{
    		//Joly: die anderen Drachen bekommen ihren Stuff beim erlangen des Talentes TROPHY_DragonScale.
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(FireDragonIsland)){	CreateInvItems (slf, ItAt_DragonScale, 12);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Undeaddragon))	{	CreateInvItems (slf, ItAt_DragonScale, 12);		};
    		//Odyssee 
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Dragon_IceMinentalDead)){	CreateInvItems (slf, ItAt_DragonScale, 12);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Dragon_RockMinentalDead))	{	CreateInvItems (slf, ItAt_DragonScale, 12);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Dragon_SwampMinentalDead)){	CreateInvItems (slf, ItAt_DragonScale, 12);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Dragon_FireMinentalDead))	{	CreateInvItems (slf, ItAt_DragonScale, 12);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Jungdrache_Irdorath_01))	{	CreateInvItems (slf, ItAt_DragonScale, 8);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Jungdrache_Irdorath_02))	{	CreateInvItems (slf, ItAt_DragonScale, 8);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Jungdrache_Irdorath_03))	{	CreateInvItems (slf, ItAt_DragonScale, 8);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Jungdrache_Irdorath_04))	{	CreateInvItems (slf, ItAt_DragonScale, 8);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Jungdrache_Irdorath_05))	{	CreateInvItems (slf, ItAt_DragonScale, 8);		};
    	};
     	
    	// ------ Drachen-Blut------
    	if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_DragonBlood] == TRUE)
    	{
    		//Joly: die anderen Drachen bekommen ihren Stuff beim erlangen des Talentes TROPHY_DragonBlood.
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(FireDragonIsland))	{	CreateInvItems (slf, ItAt_DragonBlood, 2);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Undeaddragon))		{	CreateInvItems (slf, ItAt_DragonBlood, 2);		};
    		
    		//Odyssee 
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Dragon_IceMinentalDead)){	CreateInvItems (slf, ItAt_DragonBlood, 2);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Dragon_RockMinentalDead))	{	CreateInvItems (slf, ItAt_DragonBlood, 2);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Dragon_SwampMinentalDead)){	CreateInvItems (slf, ItAt_DragonBlood, 2);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Dragon_FireMinentalDead))	{	CreateInvItems (slf, ItAt_DragonBlood, 2);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Jungdrache_Irdorath_01))	{	CreateInvItems (slf, ItAt_DragonBlood, 2);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Jungdrache_Irdorath_02))	{	CreateInvItems (slf, ItAt_DragonBlood, 2);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Jungdrache_Irdorath_03))	{	CreateInvItems (slf, ItAt_DragonBlood, 2);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Jungdrache_Irdorath_04))	{	CreateInvItems (slf, ItAt_DragonBlood, 2);		};
    		if (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(Jungdrache_Irdorath_05))	{	CreateInvItems (slf, ItAt_DragonBlood, 2);		};
    	};
     	
     	// ------ Verteilung von ANFANG AN ------
    	if (slf.aivar[AIV_MM_REAL_ID] == ID_MEATBUG)		{	CreateInvItems (slf, ItAt_MeatbugFlesh, 1);		}
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_DRAGON_UNDEAD)	{	CreateInvItems (slf, ItAt_UndeadDragonSoulStone	, 1);	}
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_DRAGON_FIRE)	{	CreateInvItems (slf, ItAt_FireDragonHeart		, 1);	}
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_DRAGON_ICE)	{	CreateInvItems (slf, ItAt_IceDragonHeart		, 1);	}
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_DRAGON_ROCK)	{	CreateInvItems (slf, ItAt_RockDragonHeart		, 1);	}
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_DRAGON_SWAMP)	{	CreateInvItems (slf, ItAt_SwampDragonHeart		, 1);	}
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_SKELETON){	CreateInvItems (slf, ItAt_GoblinBone	, 1);	}
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_SKELETON)		{	CreateInvItems (slf, ItAt_SkeletonBone	, 1);	}
    	//----------------ADDON-----------------------
    	else if (self.aivar[AIV_MM_REAL_ID] == ID_BLATTCRAWLER) {	CreateInvItems (slf, ItAt_Addon_BCKopf		, 1);};
    
    	//ROHES FLEISCH IN NPC_SCRIPTEN!!! - HOGE
    	
    	// ------ Gobbo Green Inventory ------
    	GoblinGreen_Randomizer = Hlp_Random (100);
    	
    	if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN)	
    	&& (GoblinGreen_Randomizer == 0) 					{	CreateInvItems (slf, ItMi_SilverRing	, 1);	}
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN)		
    	&& (GoblinGreen_Randomizer <= 5) 					{	CreateInvItems (slf, ItPl_Mushroom_01	, 1);	}
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN)		
    	&& (GoblinGreen_Randomizer <= 15) 					{	CreateInvItems (slf, Itmi_Gold	, 5);	}
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN)		
    	&& (GoblinGreen_Randomizer <= 30) 					{	CreateInvItems (slf, ItFo_Fish	, 1);	}
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_GREEN)		
    	&& (GoblinGreen_Randomizer <= 50)					{	CreateInvItems (slf, ItMi_Gold	, 2);	};Npc_RemoveInvItems(self,ItMw_1h_Bau_Mace,1);Npc_RemoveInvItems (self, ItMw_Nagelkeule, 1);
    	
    	
    	// ------ Gobbo Black Inventory ------
    	GoblinBlack_Randomizer = Hlp_Random (100);
    	
    	if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK)	
    	&& (GoblinBlack_Randomizer == 0) 					{	CreateInvItems (slf, ItMi_GoldRing	, 1);	}
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK)		
    	&& (GoblinBlack_Randomizer <= 5) 					{	CreateInvItems (slf, ItFo_Fish	, 1);	}	//CreateInvItems (slf, ItPl_Dex_Herb_01	, 1);
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK)		
    	&& (GoblinBlack_Randomizer <= 15) 					{	CreateInvItems (slf, Itmi_Gold	, 10);	}
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK)		
    	&& (GoblinBlack_Randomizer <= 30) 					{	CreateInvItems (slf, ItPl_Mushroom_02	, 1);	}
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_BLACK)		
    	&& (GoblinBlack_Randomizer <= 50)					{	CreateInvItems (slf, ItMi_Gold	, 5);	};Npc_RemoveInvItems(self,ItMw_1h_Bau_Mace,1);Npc_RemoveInvItems (self, ItMw_1h_MISC_Sword, 1);Npc_RemoveInvItems (self, ItMw_2h_Sld_Axe, 1);Npc_RemoveInvItems (self, ItMw_1h_Misc_Axe, 1);
    	
    	// ------ Gobbo Shaman Inventory ------
    	GoblinBlack_Randomizer = Hlp_Random (100);
    	
    	if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_SHAMAN)	
    	&& (GoblinBlack_Randomizer == 0) 					{	CreateInvItems (slf, ItPo_Mana_02	, 1);	}
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_SHAMAN)		
    	&& (GoblinBlack_Randomizer <= 5) 					{	CreateInvItems (slf, ItMi_Sulfur	, 1);	}	//CreateInvItems (slf, ItPl_Dex_Herb_01	, 1);
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_SHAMAN)		
    	&& (GoblinBlack_Randomizer <= 15) 					{	CreateInvItems (slf, Itmi_Gold	, 10);	}
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_SHAMAN)		
    	&& (GoblinBlack_Randomizer <= 30) 					{	CreateInvItems (slf, ItMi_Coal	, 1);	}
    
    	else if (slf.aivar[AIV_MM_REAL_ID] == ID_GOBBO_SHAMAN)		
    	&& (GoblinBlack_Randomizer <= 50)					{	CreateInvItems (slf, ItSc_Firestorm	, 1);	};Npc_RemoveInvItems(self,ItMw_1h_Nov_Mace,1);Npc_RemoveInvItems(self,ItMw_Fackelkeule,1);Npc_RemoveInvItems(self,ItMw_1h_Bau_Mace,1);Npc_RemoveInvItems (self, ItMw_1h_MISC_Sword, 1);Npc_RemoveInvItems (self, ItMw_2h_Sld_Axe, 1);Npc_RemoveInvItems (self, ItMw_1h_Misc_Axe, 1);
    	
    	
    	// ------ Orc Inventory -----
    	Orc_Randomizer	= Hlp_Random (10);
    	
    	//------ Orcwarrior -----
    	
    	if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCWARRIOR)
    	&& (Orc_Randomizer == 0)		
    	{	
    		CreateInvItems (slf, ItPo_Health_02	, 1);
    		CreateInvItems (slf, ItMI_Gold	, 2);	
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCWARRIOR)
    	&& (Orc_Randomizer == 1)
    	{	
    		CreateInvItems (slf, ItPo_Health_01	, 1);
    		CreateInvItems (slf, ItFoMuttonRaw	, 1);	
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCWARRIOR)
    	&& (Orc_Randomizer == 2)
    	{	
    		CreateInvItems (slf, ItPo_Health_01	, 2);
    		CreateInvItems (slf, ItMI_Gold	, 18);	
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCWARRIOR)
    	&& (Orc_Randomizer == 3)
    	{	
    		CreateInvItems (slf, ItFo_Booze	, 1);
    		CreateInvItems (slf, ItMi_SilverRing	, 1);	
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCWARRIOR)
    	&& (Orc_Randomizer == 4)
    	{	
    		CreateInvItems (slf, ItPl_Health_Herb_01	, 1);
    		CreateInvItems (slf, ItMI_Gold	, 4);	
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCWARRIOR)
    	&& (Orc_Randomizer <= 7)
    	{	
    		CreateInvItems (slf, ItMI_Gold	, 9);	
    	};
    	//----- OrcShamane -----
    
    	if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCSHAMAN)
    	&& (Orc_Randomizer == 0)
    	{
    		CreateInvItems (slf, ItPo_Mana_03	, 1);
    		CreateInvItems (slf, ItMI_Gold	, 5);	
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCSHAMAN)
    	&& (Orc_Randomizer == 1)
    	{
    		CreateInvItems (slf, ItPo_Mana_02	, 2);
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCSHAMAN)
    	&& (Orc_Randomizer == 2)
    	{
    		CreateInvItems (slf, ItPo_Mana_02	, 1);
    		CreateInvItems (slf, ItMi_Coal,1); 
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCSHAMAN)
    	&& (Orc_Randomizer == 3)
    	{
    		CreateInvItems (slf, ItPo_Mana_01	, 2);
    		CreateInvItems (slf, ItMI_Gold	, 12);	
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCSHAMAN)
    	&& (Orc_Randomizer == 4)
    	{
    		CreateInvItems (slf, ItPo_Mana_01	, 1);
    		CreateInvItems (slf, ItMi_Sulfur,1); 
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCSHAMAN)
    	&& (Orc_Randomizer <= 8)
    	{
    		CreateInvItems (slf,ItPl_Mana_Herb_02,2);
    		CreateInvItems (slf, ItMI_Gold	, 8);	
    	};
    	//----- OrcElite -----
    
    	if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCELITE )
    	&& (Orc_Randomizer == 0)
    	{
    		CreateInvItems (slf,ItAt_WolfFur,1);
    		CreateInvItems (slf,ItPo_Health_03,1);
    		CreateInvItems (slf,ItFoMutton,2);
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCELITE)
    	&& (Orc_Randomizer == 1)
    	{
    		CreateInvItems (slf,ItMi_GoldRing,1);
    		CreateInvItems (slf,ItPo_Health_01,1);
    		CreateInvItems (slf,ItMi_Gold,26);
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCELITE)
    	&& (Orc_Randomizer == 2)
    	{
    		CreateInvItems (slf,ItSc_LightHeal,1);
    		CreateInvItems (slf,ItLSTorch,2);
    		CreateInvItems (slf,ItAt_Teeth,1); 
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCELITE)
    	&& (Orc_Randomizer <= 5)
    	{
    		CreateInvItems (slf,ItMi_Gold,19);
    		CreateInvItems (slf,ItPo_Health_02,1);
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCELITE)
    	&& (Orc_Randomizer == 6)
    	{
    		CreateInvItems (slf,ItAt_WargFur,1);
    		//CreateInvItems (slf,ItPl_Strength_Herb_01,1);
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_ORCELITE)
    	&& (Orc_Randomizer <= 9)
    	{
    		CreateInvItems (slf,ItMi_Gold ,22);
    		CreateInvItems (slf,ItPo_Health_01,1);
    	};
    	
    	//-------- Dämonen -----
    	if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_DEMON)
    	&& (Orc_Randomizer == 0)
    	{
    		CreateInvItems (slf, ItPo_Mana_03	, 2);
    		CreateInvItems (slf, ItMi_GoldRing	, 1);	
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_DEMON)
    	&& (Orc_Randomizer <= 2)
    	{
    		CreateInvItems (slf, ItPo_Mana_03	, 1);
    		CreateInvItems (slf, ItPo_Health_02	, 1);
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_DEMON)
    	&& (Orc_Randomizer <= 6)
    	{
    		CreateInvItems (slf, ItPo_Mana_02	, 2);
    		CreateInvItems (slf, ItMi_Pitch,1); 
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_DEMON)
    	{
    		CreateInvItems (slf, ItPo_Mana_02	, 1);
    		CreateInvItems (slf, ItPo_Health_02	, 1);	
    	};
    	
    	//-------- Dämonen Lord-----
    	if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_DEMON_LORD)
    	&& (Orc_Randomizer <= 1)
    	{
    		CreateInvItems (slf, ItPo_Mana_03	, 2);
    		CreateInvItems (slf, ItPo_Health_03	, 2);
    		CreateInvItems (slf, ItSc_SumDemon	, 1);	
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_DEMON_LORD)
    	&& (Orc_Randomizer <= 5)
    	{
    		CreateInvItems (slf, ItPo_Mana_03	, 2);
    		CreateInvItems (slf, ItPo_Health_03	, 2);
    	}
    	else if (slf.aivar[AIV_MM_REAL_ID]			== 	ID_DEMON_LORD)
    	{
    		CreateInvItems (slf, ItPo_Mana_03	, 1);
    		CreateInvItems (slf, ItPo_Health_03	, 1);	
    	};	
    	//-------- AIV setzen, damit INV-Items nur EINMAL vergeben werden  --------
    	slf.aivar[AIV_DeathInvGiven] = TRUE;
    };

    Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:
    ODYSSEE - IM AUFTRAG DES KÖNIGS


    Geändert von blackpirate (23.05.2017 um 15:52 Uhr)

  18. Beiträge anzeigen #18 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Ich habe nichts erkennen können. Auf Grund der Struktur der Funktion würde ich aber behaupten, dass der Fehler in so einem Fall immer auftreten würde (entweder für alle Monster oder für eine bestimmte Instanz).

    Die NPC-Skripte sollte man, wie gesagt, vermutlich ausschließen können.

  19. Beiträge anzeigen #19 Zitieren
    OdysseeModTeam Avatar von blackpirate
    Registriert seit
    Jan 2008
    Ort
    Jharkendar
    Beiträge
    20.021
     
    blackpirate ist offline
    Zitat Zitat von Lehona Beitrag anzeigen
    Ich habe nichts erkennen können. Auf Grund der Struktur der Funktion würde ich aber behaupten, dass der Fehler in so einem Fall immer auftreten würde (entweder für alle Monster oder für eine bestimmte Instanz).

    Die NPC-Skripte sollte man, wie gesagt, vermutlich ausschließen können.
    Die "B_GiveDeathInv" ist doch die einzige Datei, wo es eine CreativeItem Angabe beim Tod aller Monster gibt. Es gibt zwar auch bei den jeweiligen Monstern Eintragungen, aber das Problem scheint ja bei allen aufzutreten. Vielleicht sollte man das Killprotokoll einfach nur entfernen und testen ob der Fehler danach immer noch auftritt. Einen Suchlauf werde ich aber trotzdem noch machen.

    Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:
    ODYSSEE - IM AUFTRAG DES KÖNIGS



  20. Beiträge anzeigen #20 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.410
     
    NicoDE ist offline
    Sieht soweit OK aus...

    1) Habt ihr zwischendurch Instanzen entfernt oder umbenannt (und dann mit einem alten Spielstand weitergespielt)?
    2) Warum wird SELF anstatt SLF für die Npc_RemoveInvItems-Aufrufe in dem Skript verwendet?
    "Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor

Seite 1 von 2 12 Letzte »

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