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 20 von 20
  1. Beiträge anzeigen #1 Zitieren
    OdysseeModTeam Avatar von Alain Dufont
    Registriert seit
    Oct 2016
    Ort
    hinter dem Mond
    Beiträge
    3.856
     
    Alain Dufont ist offline

    Odyssee - NPC sterben plötzlich nach Kampf

    Wir haben das Problem, dass alle NPCs, die der Hero angreift, nach dem Kampf sterben. Dabei spielt es keine Rolle welche Gilde die NPCs haben und welche Waffe der Hero trägt. Auch mit Fäusten boxt er NPCs tot. Das ist nicht bei Beginn der Mod so. Irgendein Ereignis im Spiel muss das ausgelöst haben. Ich habe versucht im GVE Tool den Fehler einzugrenzen. An der Sonderdamage scheint es nicht zu liegen. Vielleicht liegt es an irgendeiner Bedingung in der Datei C_DropUnconscious? Anbei ein Auszug davon.

    Code:
    ....
        {
            return FALSE;
        };
        //var int ADontKill;
        // ------ nur echte Humans können Unconscious werden ------
        if ((self.guild < GIL_SEPERATOR_HUM)
        && (!C_PlayerIsFakeDementor(self,other)))
        {
            if (self.guild != GIL_BDT)
            && (self.guild != GIL_DMT) 
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            
          
        
            {
                return TRUE;
            };
        }
        
        
        
        else if ((self.guild < GIL_SEPERATOR_HUM)
        && (C_PlayerIsFakeDementor(self,other)))
        {
            //if (self.guild != GIL_BDT)
            if ((self.guild == GIL_DMT)
            || (self.guild == GIL_STRF))//neu wegen Arenakämpfer - testen!
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            && (self.aivar[AIV_ArenaFight] == AF_RUNNING)
            && (self.npctype != NPCTYPE_ORC)
            {
                return TRUE;
            };
        }
        
        else if ((self.guild < GIL_SEPERATOR_HUM)
        && (C_PlayerIsFakeOrc(self,other)))
        {
            
            if ((self.guild == GIL_DMT)
            && (self.guild == GIL_ORC))
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            //&& (self.npctype != NPCTYPE_ORC)
            && (HEROALSORKFEINDERKANNT == FALSE)
            {
                return TRUE;
            };
        }
        
        
        else if ((self.guild < GIL_SEPERATOR_HUM)
        && (hero.guild == GIL_STRF))
        {
            if ((self.guild == GIL_BDT)
            || (self.guild == GIL_DMT)
            || (self.guild == GIL_ORC)
            || (self.guild == GIL_STRF))
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            && (self.npctype != NPCTYPE_ORC)
            {
                return TRUE;
            };
        }
        
        else if ((self.guild < GIL_SEPERATOR_HUM)
        && (C_PlayerIsFakeBandit(self,other)))
        {
            if (self.guild == GIL_BDT)
            //&& (self.guild != GIL_DMT)
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            && (self.npctype != NPCTYPE_ORC)
            {
                return TRUE;
            };
        };
            
        return FALSE;
    };
    Kann ich im GVE Tool die Ursache ermitteln? Welche Variable sollte ich überprüfen?
    Geändert von Alain Dufont (06.01.2018 um 13:59 Uhr)

  2. Beiträge anzeigen #2 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Ich schlage dir in solchen Fällen Rubber duck debugging vor. Damit lässt sich ziemlich schnell das Problem feststellen. Nach 35 Zeilen in dem Code oben solltest du das Problem gefunden haben. Wenn du willst kann ich dir das natürlich auch direkt sagen.

    So viel schon mal: Mit dem GVE wirst du da nichts tun können. Das wird ein Skriptpatch benötigen.

  3. Beiträge anzeigen #3 Zitieren
    OdysseeModTeam Avatar von Alain Dufont
    Registriert seit
    Oct 2016
    Ort
    hinter dem Mond
    Beiträge
    3.856
     
    Alain Dufont ist offline
    Zitat Zitat von mud-freak Beitrag anzeigen
    Ich schlage dir in solchen Fällen Rubber duck debugging vor. Damit lässt sich ziemlich schnell das Problem feststellen. Nach 35 Zeilen in dem Code oben solltest du das Problem gefunden haben. Wenn du willst kann ich dir das natürlich auch direkt sagen.

    So viel schon mal: Mit dem GVE wirst du da nichts tun können. Das wird ein Skriptpatch benötigen.
    Ok, ich vermute, dass es an dem ständigen "else if" liegt. Ich sollte es lieber wie folgt machen, richtig?


    Code:
    ....
        {
            return FALSE;
        };
        //var int ADontKill;
        // ------ nur echte Humans können Unconscious werden ------
        if ((self.guild < GIL_SEPERATOR_HUM)
        && (!C_PlayerIsFakeDementor(self,other)))
        {
            if (self.guild != GIL_BDT)
            && (self.guild != GIL_DMT) 
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            {
                return TRUE;
            };
        };
            
        return FALSE;
    };
        
        
        
        if ((self.guild < GIL_SEPERATOR_HUM)
        && (C_PlayerIsFakeDementor(self,other)))
        {
            //if (self.guild != GIL_BDT)
            if ((self.guild == GIL_DMT)
            || (self.guild == GIL_STRF))//neu wegen Arenakämpfer - testen!
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            && (self.aivar[AIV_ArenaFight] == AF_RUNNING)
            && (self.npctype != NPCTYPE_ORC)
              {
                return TRUE;
            };
        };
            
        return FALSE;
    };
        
        if ((self.guild < GIL_SEPERATOR_HUM)
        && (C_PlayerIsFakeOrc(self,other)))
        {
            
            if ((self.guild == GIL_DMT)
            && (self.guild == GIL_ORC))
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            //&& (self.npctype != NPCTYPE_ORC)
            && (HEROALSORKFEINDERKANNT == FALSE)
             {
                return TRUE;
            };
        };
            
        return FALSE;
    };
        
        
        if ((self.guild < GIL_SEPERATOR_HUM)
        && (hero.guild == GIL_STRF))
        {
            if ((self.guild == GIL_BDT)
            || (self.guild == GIL_DMT)
            || (self.guild == GIL_ORC)
            || (self.guild == GIL_STRF))
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            && (self.npctype != NPCTYPE_ORC)
             {
                return TRUE;
            };
        };
            
        return FALSE;
    };
        
        if ((self.guild < GIL_SEPERATOR_HUM)
        && (C_PlayerIsFakeBandit(self,other)))
        {
            if (self.guild == GIL_BDT)
            //&& (self.guild != GIL_DMT)
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            && (self.npctype != NPCTYPE_ORC)
            {
                return TRUE;
            };
        };
            
        return FALSE;
    };

  4. Beiträge anzeigen #4 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Zitat Zitat von Alain Dufont Beitrag anzeigen
    Ok, ich vermute, dass es an dem ständigen "else if" liegt.
    Ja, denn sonst werden nur entweder der erste oder der zweite Block in Betracht gezogen. Es reicht glaube ich völlig aus den "Else-Ifs" einfache "Ifs" zu machen. Das return FALSE mit der Klammer-zu, dass du nun überall hinzugefügt hast, würde die Funktion vorzeitig verlassen, wenn nicht sogar zu Parserfehlern führen (weil vorher eine entsprechende Klammer-auf fehlt).

    Am besten schaust du auch noch einmal den Code durch, ob die If-Abfragen alle aufgehen, wie sie sollen und sich nicht an anderer Stelle weiter ausschliessen. Einmal wird sogar plötzlich hero verwendet anstatt other, was da gar nicht hin sollte.

  5. Beiträge anzeigen #5 Zitieren
    Ranger
    Registriert seit
    Aug 2012
    Ort
    Hagen
    Beiträge
    128
     
    mcgreg ist offline
    Ich kann mich erinnern, dass dies erst recht spät im Spiel passiert.
    Ich glaube nachdem man in Varant war oder während man in Varant ist.
    Ich glaube mich auch erinnern zu können, dass z.B. wenn man sich auf dem Schiff befindet und man jemanden angreift, EGAL wen, die ganze Schiffsbesatzung diesen ebenfalls angreift und ich glaube auch sofort getötet.
    Der Held wird von niemanden angegriffen (außer von dem NPC den man) und man wird noch nicht mehr Beschimpft ... man hat quasi einen Persilschein und kann machen was man will.

    Kann man mit der Gilde oder dem Staus des Helden selbst zusammenzuhängen bzw. dieses Verhalten unmittelbar mit dem anderen zusammenhängen?

  6. Beiträge anzeigen #6 Zitieren
    OdysseeModTeam Avatar von Alain Dufont
    Registriert seit
    Oct 2016
    Ort
    hinter dem Mond
    Beiträge
    3.856
     
    Alain Dufont ist offline
    Zitat Zitat von mud-freak Beitrag anzeigen
    Ja, denn sonst werden nur entweder der erste oder der zweite Block in Betracht gezogen. Es reicht glaube ich völlig aus den "Else-Ifs" einfache "Ifs" zu machen. Das return FALSE mit der Klammer-zu, dass du nun überall hinzugefügt hast, würde die Funktion vorzeitig verlassen, wenn nicht sogar zu Parserfehlern führen (weil vorher eine entsprechende Klammer-auf fehlt).

    Am besten schaust du auch noch einmal den Code durch, ob die If-Abfragen alle aufgehen, wie sie sollen und sich nicht an anderer Stelle weiter ausschliessen. Einmal wird sogar plötzlich hero verwendet anstatt other, was da gar nicht hin sollte.

    Ok, geändert und alles nochmal durchgesehen. Allerdings hat sich im save nichts geändert. Die NPCs fallen immer noch tot um. Es kann natürlich sein, dass die Änderung erst bei Neustart funktioniert.

    Schade übrigens, dass man im GVE Tool nicht alle Werte aufeinmal auf 0 zurücksetzen kann um Fehler in den Variablen auszuschließen.

    Zitat Zitat von mcgreg Beitrag anzeigen
    Ich kann mich erinnern, dass dies erst recht spät im Spiel passiert.
    Ich glaube nachdem man in Varant war oder während man in Varant ist.
    Ich glaube mich auch erinnern zu können, dass z.B. wenn man sich auf dem Schiff befindet und man jemanden angreift, EGAL wen, die ganze Schiffsbesatzung diesen ebenfalls angreift und ich glaube auch sofort getötet.
    Der Held wird von niemanden angegriffen (außer von dem NPC den man) und man wird noch nicht mehr Beschimpft ... man hat quasi einen Persilschein und kann machen was man will.

    Kann man mit der Gilde oder dem Staus des Helden selbst zusammenzuhängen bzw. dieses Verhalten unmittelbar mit dem anderen zusammenhängen?
    Ja, es scheint in Varant zu passieren. Ein Spieler teilte mir mit, dass die Arenakämpfe noch funktionierten, es aber bei der Befreiung Probleme gegeben hätte.
    Geändert von Alain Dufont (06.01.2018 um 15:45 Uhr)

  7. Beiträge anzeigen #7 Zitieren
    Kämpfer Avatar von SirSpike1984
    Registriert seit
    Nov 2007
    Ort
    Lutherstadt Eisleben
    Beiträge
    350
     
    SirSpike1984 ist offline
    Zitat Zitat von Alain Dufont Beitrag anzeigen
    Ok, geändert und alles nochmal durchgesehen. Allerdings hat sich im save nichts geändert. Die NPCs fallen immer noch tot um. Es kann natürlich sein, dass die Änderung erst bei Neustart funktioniert.
    Heißt ich müsste wieder von vorn anfangen wen ich den Fehler loswerden will?

    MfG Spike

  8. Beiträge anzeigen #8 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Zitat Zitat von Alain Dufont Beitrag anzeigen
    Allerdings hat sich im save nichts geändert. Die NPCs fallen immer noch tot um. Es kann natürlich sein, dass die Änderung erst bei Neustart funktioniert.
    Zitat Zitat von SirSpike1984 Beitrag anzeigen
    Heißt ich müsste wieder von vorn anfangen wen ich den Fehler loswerden will?
    Das sollte eigentlich nicht der Fall sein. Die Änderungen an sich benötigen keinen neuen Spielstart. Wenn das Problem bei Weiterbenutzung eines Spielstandes immer noch auftritt, wurde durch die Änderungen der Fehler nicht behoben. Da scheint an anderer Stelle in den Skripten der Wurm drin zu sein.
    Da heisst es jetzt mit etwas Debugging anzufangen. Ein guter Start wäre eben diese oben diskutierte Funktionen. Mittels Prints kannst du dort erst einmal herausfinden, ob sie tatsächlich FALSE zurück gibt - also mit dem Speicherstand in dem der Fehler auftritt. Wenn das der Fall ist, wäre der nächste Schritt, weiter mit Prints einzugrenzen warum in keine der If-Blöcke gegangen wird. Möglicherweise stimmt was mit den If-Abfragen nicht (da werden ja so einige Funktionen herangezogen).

  9. Beiträge anzeigen #9 Zitieren
    OdysseeModTeam Avatar von Alain Dufont
    Registriert seit
    Oct 2016
    Ort
    hinter dem Mond
    Beiträge
    3.856
     
    Alain Dufont ist offline
    Zitat Zitat von mud-freak Beitrag anzeigen
    Das sollte eigentlich nicht der Fall sein. Die Änderungen an sich benötigen keinen neuen Spielstart. Wenn das Problem bei Weiterbenutzung eines Spielstandes immer noch auftritt, wurde durch die Änderungen der Fehler nicht behoben. Da scheint an anderer Stelle in den Skripten der Wurm drin zu sein.
    Da heisst es jetzt mit etwas Debugging anzufangen. Ein guter Start wäre eben diese oben diskutierte Funktionen. Mittels Prints kannst du dort erst einmal herausfinden, ob sie tatsächlich FALSE zurück gibt - also mit dem Speicherstand in dem der Fehler auftritt. Wenn das der Fall ist, wäre der nächste Schritt, weiter mit Prints einzugrenzen warum in keine der If-Blöcke gegangen wird. Möglicherweise stimmt was mit den If-Abfragen nicht (da werden ja so einige Funktionen herangezogen).
    Ja, ok. Das werde ich machen. Aber erst morgen. Für heute ist erstmal Schluss.

  10. Beiträge anzeigen #10 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Ich habe mir mal erlaubt die C_DropUnconscious aus der Odyssee 2.4.3 (glaube ich) zu dekompilieren. Dort ist der Fehler nun offensichtlich, leider aber in dem Teil der Funktion den du hier nicht gepostet hattest:
    Code:
    func int c_dropunconscious() {
        var c_item heroarmor;
    
        heroarmor = npc_getequippedarmor(other);
        if (other.guild > gil_seperator_hum)
        || ((other.guild == gil_orc) && (hero.guild != gil_strf))
        || ((other.guild == gil_strf) && (hero.guild != gil_orc))
        || ((other.guild == gil_bdt) && (hero.guild != gil_strf))
        || ((mendoza.aivar[67] == true) && (korsar_7998.aivar[67] == true) && (korsar_7997.aivar[67] == false) && (korsar_7996.aivar[67] == true) && (korsar_7995.aivar[67] == true) && (korsar_7994.aivar[67] == true) && (korsar_7993.aivar[67] == true) && (harry_7992.aivar[67] == true) && (korsar_7989.aivar[67] == true) && (korsar_7988.aivar[67] == true) && (korsar_7987.aivar[67] == true) && (korsar_7986.aivar[67] == true) && (korsar_7985.aivar[67] == true) && (korsar_7984.aivar[67] == true) && (korsar_7983.aivar[67] == true) && (korsar_7982.aivar[67] == true) && (jerome_12503.aivar[67] == true) && (nat_12501.aivar[67] == true) && (huck_12502.aivar[67] == true) && (mendozaisenemy == true) && (jones_flucht == true))
        || (other.aivar[52] == true)
        || ((other.guild == gil_dmt) && (hlp_isitem(heroarmor, 27761) == true) || (hlp_isitem(heroarmor, 27764) == true) || (hlp_isitem(heroarmor, 27770) == true) || (hlp_isitem(heroarmor, 27771) == true) || (hlp_isitem(heroarmor, 27869) == true) || (hlp_isitem(heroarmor, 27868) == true) || (hlp_isitem(heroarmor, 28030) == true) || (hlp_isitem(heroarmor, 28031) == true) || (hlp_isitem(heroarmor, 28028) == true) || (hlp_isitem(heroarmor, 28029) == true) || (hlp_isitem(heroarmor, 28033) == true) || (hlp_isitem(heroarmor, 27805) == true) || (hlp_isitem(heroarmor, 27799) == true) || (hlp_isitem(heroarmor, 27802) == true) || (hlp_isitem(heroarmor, 27819) == true) || (hlp_isitem(heroarmor, 26740) == true) || (hlp_isitem(heroarmor, 27796) == true) || (hlp_isitem(heroarmor, 27825) == true) || (hlp_isitem(heroarmor, 27828) == true) || (hlp_isitem(heroarmor, 28035) == true) || (hlp_isitem(heroarmor, 28037) == true) || (hlp_isitem(heroarmor, 27822) == true) || (hlp_isitem(heroarmor, 27826) == true) || (hlp_isitem(heroarmor, 27811) == true) || (hlp_isitem(heroarmor, 28038) == true) || (hlp_isitem(heroarmor, 27812) == true) || (hlp_isitem(heroarmor, 26738) == true) || (hlp_isitem(heroarmor, 27754) == true) || (hlp_isitem(heroarmor, 27756) == true) || (hlp_isitem(heroarmor, 27757) == true) || (hlp_isitem(heroarmor, 27774) == true) || (hlp_isitem(heroarmor, 27775) == true) || (hlp_isitem(heroarmor, 27779) == true) || (hlp_isitem(heroarmor, 27782) == true) || (hlp_isitem(heroarmor, 27785) == true) || (hlp_isitem(heroarmor, 27791) == true) || (hlp_isitem(heroarmor, 27792) == true) || (hlp_isitem(heroarmor, 27794) == true) || (hlp_isitem(heroarmor, 27898) == true) || (hlp_isitem(heroarmor, 27899) == true))
        || (heroalsdmtfeinderkannt == true)
        || (npcugartot_points == 12)
        || (npcugartot_points == 13)
        || (npcugartot_points == 14)
        || (npcugartot_points == 15)
        || (npcugartot_points == 16)
        || (npcugartot_points == 17)
        || (npcugartot_points == 18)
        || (npcugartot_points == 19)
        || (npcugartot_points == 20)
        || (npcugartot_points == 21)
        || (npcugartot_points == 22)
        || (npcugartot_points == 23)
        || (npcugartot_points == 24)
        || (npcugartot_points == 25)
        || (npcugartot_points == 26)
        || (npcugartot_points == 27)
        || (npcugartot_points == 28)
        || (npcugartot_points == 29)
        || (npcugartot_points == 30)
        || (npcugartot_points == 31)
        || (npcugartot_points == 32)
        || (npcugartot_points == 33)
        || (npcugartot_points == 34)
        || (npcugartot_points == 35)
        || (npcugartot_points == 36)
        || (npcugartot_points == 37)
        || (npcugartot_points == 38)
        || (npcugartot_points == 39)
        || (npcugartot_points == 40)
        || (npcugartot_points == 41)
        || (npcugartot_points == 42)
        || (npcugartot_points == 43)
        || (npcugartot_points == 44)
        || (npcugartot_points == 45)
        || (npcugartot_points == 46)
        || (npcugartot_points == 47)
        || (npcugartot_points == 48)
        || (npcugartot_points == 49)
        || (npcugartot_points == 50)
        || (npcugartot_points == 51)
        || (npcugartot_points == 52)
        || (npcugartot_points == 53)
        || (npcugartot_points == 54)
        || (npcugartot_points == 55)
        || (npcugartot_points == 56)
        || (npcugartot_points == 57)
        || (npcugartot_points == 58)
        || (npcugartot_points == 59)
        || (npcugartot_points == 60)
        || (npcaschdodtot_points == 14)
        || (npcaschdodtot_points == 15)
        || (npcaschdodtot_points == 16)
        || (npcaschdodtot_points == 17)
        || (npcaschdodtot_points == 18)
        || (npcaschdodtot_points == 19)
        || (npcaschdodtot_points == 20)
        || (npcaschdodtot_points == 21)
        || (npcaschdodtot_points == 22)
        || (npcaschdodtot_points == 23)
        || (npcaschdodtot_points == 24)
        || (npcaschdodtot_points == 25)
        || (npcaschdodtot_points == 26)
        || (npcaschdodtot_points == 27)
        || (npcaschdodtot_points == 28)
        || (npcaschdodtot_points == 29)
        || (npcaschdodtot_points == 30)
        || (npcaschdodtot_points == 31)
        || (npcaschdodtot_points == 32)
        || (npcaschdodtot_points == 33)
        || (npcaschdodtot_points == 34)
        || (npcaschdodtot_points == 35)
        || (npcaschdodtot_points == 36)
        || (npcaschdodtot_points == 37)
        || (npcaschdodtot_points == 38)
        || (npcaschdodtot_points == 39)
        || (npcaschdodtot_points == 40)
        || (npcaschdodtot_points == 41)
        || (npcaschdodtot_points == 42)
        || (npcaschdodtot_points == 43)
        || (npcaschdodtot_points == 44)
        || (npcaschdodtot_points == 45)
        || (npcaschdodtot_points == 46)
        || (npcaschdodtot_points == 47)
        || (npcaschdodtot_points == 48)
        || (npcaschdodtot_points == 49)
        || (npcaschdodtot_points == 50)
        || (npcaschdodtot_points == 41)
        || (npcaschdodtot_points == 52)
        || (npcaschdodtot_points == 53)
        || (npcaschdodtot_points == 54)
        || (npcaschdodtot_points == 55)
        || (npcaschdodtot_points == 56)
        || (npcaschdodtot_points == 57)
        || (npcaschdodtot_points == 58)
        || (npcaschdodtot_points == 59)
        || (npcaschdodtot_points == 60)
        || (npcaschdodtot_points == 60)
        || (npcaschdodtot_points > 60)
        || (npcaschdodtot_points >= 60)
        || (npcorkscanyontot_points == 14)
        || (npcorkscanyontot_points == 15)
        || (npcorkscanyontot_points == 16)
        || (npcorkscanyontot_points == 17)
        || (npcorkscanyontot_points == 18)
        || (npcorkscanyontot_points == 19)
        || (npcorkscanyontot_points == 20)
        || (npcorkscanyontot_points == 21)
        || (npcorkscanyontot_points == 22)
        || (npcorkscanyontot_points == 23)
        || (npcorkscanyontot_points == 24)
        || (npcorkscanyontot_points == 25)
        || (npcorkscanyontot_points == 26)
        || (npcorkscanyontot_points == 27)
        || (npcorkscanyontot_points == 28)
        || (npcorkscanyontot_points == 29)
        || (npcorkscanyontot_points == 30)
        || (npcorkscanyontot_points == 31)
        || (npcorkscanyontot_points == 32)
        || (npcorkscanyontot_points == 33)
        || (npcorkscanyontot_points == 34)
        || (npcorkscanyontot_points == 35)
        || (npcorkscanyontot_points == 36)
        || (npcorkscanyontot_points == 37)
        || (npcorkscanyontot_points == 38)
        || (npcorkscanyontot_points == 39)
        || (npcorkscanyontot_points == 40)
        || (npcorkscanyontot_points == 41)
        || (npcorkscanyontot_points == 42)
        || (npcorkscanyontot_points == 43)
        || (npcorkscanyontot_points == 44)
        || (npcorkscanyontot_points == 45)
        || (npcorkscanyontot_points == 46)
        || (npcorkscanyontot_points == 47)
        || (npcorkscanyontot_points == 48)
        || (npcorkscanyontot_points == 49)
        || (npcorkscanyontot_points == 50)
        || (npcorkscanyontot_points == 51)
        || (npcorkscanyontot_points == 52)
        || (npcorkscanyontot_points == 53)
        || (npcorkscanyontot_points == 54)
        || (npcorkscanyontot_points == 55)
        || (npcorkscanyontot_points == 56)
        || (npcorkscanyontot_points == 57)
        || (npcorkscanyontot_points == 58)
        || (npcorkscanyontot_points == 59)
        || (npcorkscanyontot_points == 60)
        || (npcorkscanyontot_points > 60)
        || (npcorkscanyontot_points >= 60)
        || (npcamarnatot_points == 14)
        || (npcamarnatot_points == 15)
        || (npcamarnatot_points == 16)
        || (npcamarnatot_points == 17)
        || (npcamarnatot_points == 18)
        || (npcamarnatot_points == 19)
        || (npcamarnatot_points == 20)
        || (npcamarnatot_points == 21)
        || (npcamarnatot_points == 22)
        || (npcamarnatot_points == 23)
        || (npcamarnatot_points == 24)
        || (npcamarnatot_points == 25)
        || (npcamarnatot_points == 26)
        || (npcamarnatot_points == 27)
        || (npcamarnatot_points == 28)
        || (npcamarnatot_points == 29)
        || (npcamarnatot_points == 30)
        || (npcamarnatot_points == 31)
        || (npcamarnatot_points == 32)
        || (npcamarnatot_points == 33)
        || (npcamarnatot_points == 34)
        || (npcamarnatot_points == 35)
        || (npcamarnatot_points == 36)
        || (npcamarnatot_points == 37)
        || (npcamarnatot_points == 38)
        || (npcamarnatot_points == 39)
        || (npcamarnatot_points == 40)
        || (npcamarnatot_points == 41)
        || (npcamarnatot_points == 42)
        || (npcamarnatot_points == 43)
        || (npcamarnatot_points == 44)
        || (npcamarnatot_points == 45)
        || (npcamarnatot_points == 46)
        || (npcamarnatot_points == 47)
        || (npcamarnatot_points == 48)
        || (npcamarnatot_points == 49)
        || (npcamarnatot_points == 50)
        || (npcamarnatot_points == 51)
        || (npcamarnatot_points == 52)
        || (npcamarnatot_points == 53)
        || (npcamarnatot_points == 54)
        || (npcamarnatot_points == 55)
        || (npcamarnatot_points == 56)
        || (npcamarnatot_points == 57)
        || (npcamarnatot_points == 58)
        || (npcamarnatot_points == 59)
        || (npcamarnatot_points == 60)
        || (npcassdesserttot_points == 14)
        || (npcassdesserttot_points == 15)
        || (npcassdesserttot_points == 16)
        || (npcassdesserttot_points == 17)
        || (npcassdesserttot_points == 18)
        || (npcassdesserttot_points == 19)
        || (npcassdesserttot_points == 20)
        || (npcassdesserttot_points == 21)
        || (npcassdesserttot_points == 22)
        || (npcassdesserttot_points > 22)
        || (npcassdesserttot_points >= 22)
        || (entlarvtharunslager == true)
        || (npcassturmtot_points == 14)
        || (npcassturmtot_points == 15)
        || (npcassturmtot_points == 16)
        || (npcassturmtot_points == 17)
        || (npcassturmtot_points == 18)
        || (npcassturmtot_points == 19)
        || (npcassturmtot_points == 20)
        || (npcassturmtot_points == 21)
        || (npcassturmtot_points == 22)
        || (npcassturmtot_points == 23)
        || (npcassturmtot_points == 24)
        || (npcassturmtot_points == 25)
        || (npcassturmtot_points == 26)
        || (npcassturmtot_points == 27)
        || (npcassturmtot_points == 28)
        || (npcassturmtot_points == 29)
        || (npcassturmtot_points == 30)
        || (npcassturmtot_points > 30)
        || (npcassturmtot_points >= 30)
        || (kampfmitpasswache == true)
        || (npcasspasstot_points == 14)
        || (npcasspasstot_points == 15)
        || (npcasspasstot_points == 16)
        || (npcasspasstot_points == 17)
        || (npcasspasstot_points == 18)
        || (npcasspasstot_points == 19)
        || (npcasspasstot_points == 20)
        || (npcasspasstot_points == 21)
        || (npcasspasstot_points == 22)
        || (npcasspasstot_points == 23)
        || (npcasspasstot_points == 24)
        || (npcasspasstot_points == 25)
        || (npcasspasstot_points == 26)
        || (npcasspasstot_points == 27)
        || (npcasspasstot_points == 28)
        || (npcasspasstot_points == 29)
        || (npcasspasstot_points == 30)
        || (entlarvtasskueste == true)
        || (npcasskuestetot_points == 14)
        || (npcasskuestetot_points == 15)
        || (npcasskuestetot_points == 16)
        || (npcasskuestetot_points == 17)
        || (npcasskuestetot_points == 18)
        || (npcasskuestetot_points == 19)
        || (npcasskuestetot_points == 20)
        || (npcasskuestetot_points == 21)
        || (npcasskuestetot_points == 22)
        || (npcasskuestetot_points == 23)
        || (npcasskuestetot_points == 24)
        || (npcasskuestetot_points == 25)
        || (npcasskuestetot_points == 26)
        || (npcasskuestetot_points == 27)
        || (npcasskuestetot_points == 28)
        || (npcasskuestetot_points == 29)
        || (npcasskuestetot_points == 30)
        || (npcasskuestetot_points == 31)
        || (npcasskuestetot_points == 32)
        || (npcasskuestetot_points == 33)
        || (npcasskuestetot_points == 34)
        || (npckorsarmendozasinseltot_points == 10)
        || (npckorsarmendozasinseltot_points == 11)
        || (npckorsarmendozasinseltot_points == 12)
        || (npckorsarmendozasinseltot_points == 13)
        || (npckorsarmendozasinseltot_points == 14)
        || (npckorsarmendozasinseltot_points == 15)
        || (npckorsarmendozasinseltot_points == 16)
        || (jones_flucht == true)) {
            return false;
        };
    
        // ...
    (Alles darunter entspricht dem Code aus den Posts oben.)

    In den Originalskripten ist es bestimmt etwas anders formatiert, aber hier sieht man ganz deutlich, dass wohl irgendwo die Klammern falsch gesetzt sind. Einige Variablenchecks in dieser If-Abfragenverkettung stehen ganz für sich allein, dass sobald eine von ihnen TRUE ist, der Gegner immer stirbt, z.B. HeroAlsDMTFeindErkannt, KampfMitPassWache, EntlarvTassKueste, jones_flucht und all die Variablen, die seltsamerweise alle einzeln nach Zahlen geprüft werden, anstatt mit > und < zu arbeiten (könnte aber ein Artefakt vom Dekompilieren sein).
    Wenn du diese Abfragen besser verpackst, sollte das Problem behoben sein.

  11. Beiträge anzeigen #11 Zitieren
    OdysseeModTeam Avatar von Alain Dufont
    Registriert seit
    Oct 2016
    Ort
    hinter dem Mond
    Beiträge
    3.856
     
    Alain Dufont ist offline
    Bezieht sich dieser Teil des Scripts denn nicht auf das Verhalten der NPCs gegenüber der Spielfigur? Dachte es jedenfalls. Aber gut, dann werde ich das ändern.

  12. Beiträge anzeigen #12 Zitieren
    OdysseeModTeam Avatar von Alain Dufont
    Registriert seit
    Oct 2016
    Ort
    hinter dem Mond
    Beiträge
    3.856
     
    Alain Dufont ist offline
    Nach dem Einfügen deines geänderten Scripts hatte ich zunächst einen Fehler. Erst als ich vor (other.guild > gil_seperator_hum)eine weitere Klammer eingefügt hatte, konnte ich die Scripte parsen. Der Fehler bestand aber weiterhin. Dann kam ich auf die Idee die ursprünglichen Datei aus Gothic zu verwenden, nämlich diese:


    Code:
     func int C_DropUnconscious()
    {
        //if (Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Raven))
        //|| (Hlp_GetInstanceID(other) == Hlp_GetInstanceID(Raven))
        //{
        //    return TRUE;
        //};
        
        // ------ Folgende NSCs töten immer ------
        if (other.guild > GIL_SEPERATOR_HUM)
        || (other.guild == GIL_DMT)
        || (other.guild == GIL_BDT)
        || (other.aivar[AIV_DropDeadAndKill] == TRUE)
        {
            return FALSE;
        };
            
        // ------ nur echte Humans können Unconscious werden ------
        if (self.guild < GIL_SEPERATOR_HUM)
        {
            if (self.guild != GIL_DMT)
            && (self.guild != GIL_BDT)
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            {
                return TRUE;
            };
        };
                
        return FALSE;
    };

    Der Fehler trat daraufhin nicht mehr auf. Es wird also irgendeine Bedingung in der Datei sein, die auf TRUE gesetzt wurde. Jetzt muss ich nur noch herausfinden, welche.






  13. Beiträge anzeigen #13 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Zitat Zitat von Alain Dufont Beitrag anzeigen
    Nach dem Einfügen deines geänderten Scripts hatte ich zunächst einen Fehler. Erst als ich vor (other.guild > gil_seperator_hum) eine weitere Klammer eingefügt hatte, konnte ich die Scripte parsen.
    Warte, ich habe doch gar kein Skript vorgeschlagen?! Der Skriptauszug aus meinem vorherigen Post war das dekompilierte Skript aus Odyssee (unverändert). Damit wollte ich zeigen, woran der Fehler liegen könnte.

    Die Funktion von den Originalskripten neu aufzubauen, ist aber auf jeden Fall eine gute Idee.

  14. Beiträge anzeigen #14 Zitieren
    OdysseeModTeam Avatar von Alain Dufont
    Registriert seit
    Oct 2016
    Ort
    hinter dem Mond
    Beiträge
    3.856
     
    Alain Dufont ist offline
    Zitat Zitat von mud-freak Beitrag anzeigen
    Warte, ich habe doch gar kein Skript vorgeschlagen?! Der Skriptauszug aus meinem vorherigen Post war das dekompilierte Skript aus Odyssee (unverändert). Damit wollte ich zeigen, woran der Fehler liegen könnte.

    Die Funktion von den Originalskripten neu aufzubauen, ist aber auf jeden Fall eine gute Idee.
    Ach so. Ich dachte, dass du das Script geändert hattest, da es bei mir anders aufgebaut war. Jedenfalls habe ich das Script wie folgt geändert und es funktioniert.

    Code:
    // **************************************************************
    // C_DropUnconscious
    // -----------------
    // self und other hier vom Programm initialisiert:
    // self ist immer der NPC, für den diese Funktion den Check macht
    // other ist immer der Täter (der den Treffer gelandet hat)
    // **************************************************************
    
    func int C_DropUnconscious()
    {
        //if (Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Raven))
        //|| (Hlp_GetInstanceID(other) == Hlp_GetInstanceID(Raven))
        //{
        //    return TRUE;
        //};
        var c_item heroarmor;
        heroarmor = npc_getequippedarmor(other);
        
        
        if (other.guild > gil_seperator_hum)
        {   
        
            //wenn Hero zur Gilde STRF gehört
            if ((other.guild == GIL_ORC)
            && (other.guild == GIL_BDT)
            && (hero.guild != GIL_STRF))
            {
              return false;
            };
      
       
            //wenn Hero zur Gilde Ork gehört
            if ((other.guild == GIL_STRF)
            && (hero.guild != GIL_ORC))
            {
              return false;
            };
      
            //Wenn Gegner AIV_DropDeadAndKill auf TRUE gesetzt haben
            if (other.aivar[AIV_DropDeadAndKill] == TRUE)
            {
              return false;
            };
      
         
            //nur wichtig für Mod Das Korsarennest)
            if ((other.guild == GIL_BDT)
            && (Mendoza.aivar[AIV_KilledByPlayer] == TRUE)
            && (Korsar_7998.aivar[AIV_KilledByPlayer] == TRUE)
            && (Korsar_7997.aivar[AIV_KilledByPlayer] == FALSE)
            && (Korsar_7996.aivar[AIV_KilledByPlayer] == TRUE)
            && (Korsar_7995.aivar[AIV_KilledByPlayer] == TRUE)
            && (Korsar_7994.aivar[AIV_KilledByPlayer] == TRUE)
            && (Korsar_7993.aivar[AIV_KilledByPlayer] == TRUE)
            && (Harry_7992.aivar[AIV_KilledByPlayer] == TRUE)
            && (Korsar_7989.aivar[AIV_KilledByPlayer] == TRUE)
            && (Korsar_7988.aivar[AIV_KilledByPlayer] == TRUE)
            && (Korsar_7987.aivar[AIV_KilledByPlayer] == TRUE)
            && (Korsar_7986.aivar[AIV_KilledByPlayer] == TRUE)
            && (Korsar_7985.aivar[AIV_KilledByPlayer] == TRUE)
            && (Korsar_7984.aivar[AIV_KilledByPlayer] == TRUE)
            && (Korsar_7983.aivar[AIV_KilledByPlayer] == TRUE)
            && (Korsar_7982.aivar[AIV_KilledByPlayer] == TRUE)
            && (Jerome_12503.aivar[AIV_KilledByPlayer] == TRUE)
            && (Nat_12501.aivar[AIV_KilledByPlayer] == TRUE)
            && (Huck_12502.aivar[AIV_KilledByPlayer] == TRUE)
            && (MendozaIsEnemy == TRUE)
            && (JONES_FLUCHT == TRUE))
            {
              return false;
            };
      
     
            
            if ((other.guild == GIL_DMT)
            &&  ((Hlp_IsItem(heroArmor, ITAR_MIL_L) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_MIL_M) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_PAL_M) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_PAL_H) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_KETPAL_OHNEHELM) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_PAL_OHNEHELM) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_VS_KETPAL_OHNEHELM) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_VS_PAL_OHNEHELM) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_VS_PAL_M) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_VS_PAL_H) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_VS_KDF_XARDAS) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_KDF_XARDAS) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_KDF_L) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_KDF_H) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_KDW_H) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_KDW_L_Addon) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_NOV_L) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_WUESTENRAEUBER_L) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_WUESTENRAEUBER_H) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_VS_WUESTENRAEUBER_L) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_VS_WUESTENRAEUBER_H) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_LEICHTER_NOMADE) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_NOMADE_H) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_BDT_M) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_VS_BDT_M) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_BDT_H) == TRUE)
            //|| (Hlp_IsItem (heroArmor, ITAR_Leather_L) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_RANGER_Addon) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_VLK_L) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_VLK_M) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_VLK_H) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_BAU_L) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_BAU_M) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_SLD_L) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_SLD_M) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_SLD_H) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_DJG_L) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_DJG_M) == TRUE)
            || (Hlp_IsItem (heroArmor, ITAR_DJG_H) == TRUE)
            //|| (Hlp_IsItem (heroArmor, NO_ARMOR) == TRUE)
            || (Hlp_IsItem (heroArmor, ORE_ARMOR_M) == TRUE)
            || (Hlp_IsItem (heroArmor, ORE_ARMOR_H) == TRUE))
            || (HEROALSDMTFEINDERKANNT == TRUE)
            || (NpcUgarTot_Points == 12)
            || (NpcUgarTot_Points == 13)
            || (NpcUgarTot_Points == 14)
            || (NpcUgarTot_Points == 15)
            || (NpcUgarTot_Points == 16)
            || (NpcUgarTot_Points == 17)
            || (NpcUgarTot_Points == 18)
            || (NpcUgarTot_Points == 19)
            || (NpcUgarTot_Points == 20)
            || (NpcUgarTot_Points == 21)
            || (NpcUgarTot_Points == 22)
            || (NpcUgarTot_Points == 23)
            || (NpcUgarTot_Points == 24)
            || (NpcUgarTot_Points == 25)
            || (NpcUgarTot_Points == 26)
            || (NpcUgarTot_Points == 27)
            || (NpcUgarTot_Points == 28)
            || (NpcUgarTot_Points == 29)
            || (NpcUgarTot_Points == 30)
            || (NpcUgarTot_Points == 31)
            || (NpcUgarTot_Points == 32)
            || (NpcUgarTot_Points == 33)
            || (NpcUgarTot_Points == 34)
            || (NpcUgarTot_Points == 35)
            || (NpcUgarTot_Points == 36)
            || (NpcUgarTot_Points == 37)
            || (NpcUgarTot_Points == 38)
            || (NpcUgarTot_Points == 39)
            || (NpcUgarTot_Points == 40)
            || (NpcUgarTot_Points == 41)
            || (NpcUgarTot_Points == 42)
            || (NpcUgarTot_Points == 43)
            || (NpcUgarTot_Points == 44)
            || (NpcUgarTot_Points == 45)
            || (NpcUgarTot_Points == 46)
            || (NpcUgarTot_Points == 47)
            || (NpcUgarTot_Points == 48)
            || (NpcUgarTot_Points == 49)
            || (NpcUgarTot_Points == 50)
            || (NpcUgarTot_Points == 51)
            || (NpcUgarTot_Points == 52)
            || (NpcUgarTot_Points == 53)
            || (NpcUgarTot_Points == 54)
            || (NpcUgarTot_Points == 55)
            || (NpcUgarTot_Points == 56)
            || (NpcUgarTot_Points == 57)
            || (NpcUgarTot_Points == 58)
            || (NpcUgarTot_Points == 59)
            || (NpcUgarTot_Points == 60)
            || (NpcAschdodTot_Points == 14)
            || (NpcAschdodTot_Points == 15)    
            || (NpcAschdodTot_Points == 16)
            || (NpcAschdodTot_Points == 17)    
            || (NpcAschdodTot_Points == 18)
            || (NpcAschdodTot_Points == 19)
            || (NpcAschdodTot_Points == 20)    
            || (NpcAschdodTot_Points == 21)
            || (NpcAschdodTot_Points == 22)    
            || (NpcAschdodTot_Points == 23)
            || (NpcAschdodTot_Points == 24)
            || (NpcAschdodTot_Points == 25)    
            || (NpcAschdodTot_Points == 26)
            || (NpcAschdodTot_Points == 27)    
            || (NpcAschdodTot_Points == 28)
            || (NpcAschdodTot_Points == 29)
            || (NpcAschdodTot_Points == 30)
            || (NpcAschdodTot_Points == 31)
            || (NpcAschdodTot_Points == 32)    
            || (NpcAschdodTot_Points == 33)
            || (NpcAschdodTot_Points == 34)
            || (NpcAschdodTot_Points == 35)    
            || (NpcAschdodTot_Points == 36)
            || (NpcAschdodTot_Points == 37)    
            || (NpcAschdodTot_Points == 38)
            || (NpcAschdodTot_Points == 39)
            || (NpcAschdodTot_Points == 40)
            || (NpcAschdodTot_Points == 41)
            || (NpcAschdodTot_Points == 42)    
            || (NpcAschdodTot_Points == 43)
            || (NpcAschdodTot_Points == 44)
            || (NpcAschdodTot_Points == 45)    
            || (NpcAschdodTot_Points == 46)
            || (NpcAschdodTot_Points == 47)    
            || (NpcAschdodTot_Points == 48)
            || (NpcAschdodTot_Points == 49)
            || (NpcAschdodTot_Points == 50)
            || (NpcAschdodTot_Points == 41)
            || (NpcAschdodTot_Points == 52)    
            || (NpcAschdodTot_Points == 53)
            || (NpcAschdodTot_Points == 54)
            || (NpcAschdodTot_Points == 55)    
            || (NpcAschdodTot_Points == 56)
            || (NpcAschdodTot_Points == 57)    
            || (NpcAschdodTot_Points == 58)
            || (NpcAschdodTot_Points == 59)
            || (NpcAschdodTot_Points == 60)
            || (NpcAschdodTot_Points == 60)
            || (NpcAschdodTot_Points > 60)
            || (NpcAschdodTot_Points >= 60) 
            || (NpcOrksCanyonTot_Points == 14)
            || (NpcOrksCanyonTot_Points == 15)
            || (NpcOrksCanyonTot_Points == 16)
            || (NpcOrksCanyonTot_Points == 17)
            || (NpcOrksCanyonTot_Points == 18)
            || (NpcOrksCanyonTot_Points == 19)
            || (NpcOrksCanyonTot_Points == 20)
            || (NpcOrksCanyonTot_Points == 21)
            || (NpcOrksCanyonTot_Points == 22)
            || (NpcOrksCanyonTot_Points == 23)
            || (NpcOrksCanyonTot_Points == 24)
            || (NpcOrksCanyonTot_Points == 25)
            || (NpcOrksCanyonTot_Points == 26)
            || (NpcOrksCanyonTot_Points == 27)
            || (NpcOrksCanyonTot_Points == 28)
            || (NpcOrksCanyonTot_Points == 29)
            || (NpcOrksCanyonTot_Points == 30)
            || (NpcOrksCanyonTot_Points == 31)
            || (NpcOrksCanyonTot_Points == 32)
            || (NpcOrksCanyonTot_Points == 33)
            || (NpcOrksCanyonTot_Points == 34)
            || (NpcOrksCanyonTot_Points == 35)
            || (NpcOrksCanyonTot_Points == 36)
            || (NpcOrksCanyonTot_Points == 37)
            || (NpcOrksCanyonTot_Points == 38)
            || (NpcOrksCanyonTot_Points == 39)
            || (NpcOrksCanyonTot_Points == 40)
            || (NpcOrksCanyonTot_Points == 41)
            || (NpcOrksCanyonTot_Points == 42)
            || (NpcOrksCanyonTot_Points == 43)
            || (NpcOrksCanyonTot_Points == 44)
            || (NpcOrksCanyonTot_Points == 45)
            || (NpcOrksCanyonTot_Points == 46)
            || (NpcOrksCanyonTot_Points == 47)
            || (NpcOrksCanyonTot_Points == 48)
            || (NpcOrksCanyonTot_Points == 49)
            || (NpcOrksCanyonTot_Points == 50)
            || (NpcOrksCanyonTot_Points == 51)
            || (NpcOrksCanyonTot_Points == 52)
            || (NpcOrksCanyonTot_Points == 53)
            || (NpcOrksCanyonTot_Points == 54)
            || (NpcOrksCanyonTot_Points == 55)
            || (NpcOrksCanyonTot_Points == 56)
            || (NpcOrksCanyonTot_Points == 57)
            || (NpcOrksCanyonTot_Points == 58)
            || (NpcOrksCanyonTot_Points == 59)
            || (NpcOrksCanyonTot_Points == 60)
            || (NpcOrksCanyonTot_Points > 60)
            || (NpcOrksCanyonTot_Points >= 60)     
            || (NpcAmarnaTot_Points == 14)
            || (NpcAmarnaTot_Points == 15)
            || (NpcAmarnaTot_Points == 16)
            || (NpcAmarnaTot_Points == 17)
            || (NpcAmarnaTot_Points == 18)
            || (NpcAmarnaTot_Points == 19)
            || (NpcAmarnaTot_Points == 20)
            || (NpcAmarnaTot_Points == 21)
            || (NpcAmarnaTot_Points == 22)
            || (NpcAmarnaTot_Points == 23)
            || (NpcAmarnaTot_Points == 24)
            || (NpcAmarnaTot_Points == 25)
            || (NpcAmarnaTot_Points == 26)
            || (NpcAmarnaTot_Points == 27)
            || (NpcAmarnaTot_Points == 28)
            || (NpcAmarnaTot_Points == 29)
            || (NpcAmarnaTot_Points == 30)
            || (NpcAmarnaTot_Points == 31)
            || (NpcAmarnaTot_Points == 32)
            || (NpcAmarnaTot_Points == 33)
            || (NpcAmarnaTot_Points == 34)
            || (NpcAmarnaTot_Points == 35)
            || (NpcAmarnaTot_Points == 36)
            || (NpcAmarnaTot_Points == 37)
            || (NpcAmarnaTot_Points == 38)
            || (NpcAmarnaTot_Points == 39)
            || (NpcAmarnaTot_Points == 40)
            || (NpcAmarnaTot_Points == 41)
            || (NpcAmarnaTot_Points == 42)
            || (NpcAmarnaTot_Points == 43)
            || (NpcAmarnaTot_Points == 44)
            || (NpcAmarnaTot_Points == 45)
            || (NpcAmarnaTot_Points == 46)
            || (NpcAmarnaTot_Points == 47)
            || (NpcAmarnaTot_Points == 48)
            || (NpcAmarnaTot_Points == 49)
            || (NpcAmarnaTot_Points == 50)
            || (NpcAmarnaTot_Points == 51)
            || (NpcAmarnaTot_Points == 52)
            || (NpcAmarnaTot_Points == 53)
            || (NpcAmarnaTot_Points == 54)
            || (NpcAmarnaTot_Points == 55)
            || (NpcAmarnaTot_Points == 56)
            || (NpcAmarnaTot_Points == 57)
            || (NpcAmarnaTot_Points == 58)
            || (NpcAmarnaTot_Points == 59)
            || (NpcAmarnaTot_Points == 60)
            || (NpcAssDessertTot_Points == 14)
            || (NpcAssDessertTot_Points == 15)
            || (NpcAssDessertTot_Points == 16)
            || (NpcAssDessertTot_Points == 17)
            || (NpcAssDessertTot_Points == 18)
            || (NpcAssDessertTot_Points == 19)
            || (NpcAssDessertTot_Points == 20)
            || (NpcAssDessertTot_Points == 21)
            || (NpcAssDessertTot_Points == 22)
            || (NpcAssDessertTot_Points > 22)
            || (NpcAssDessertTot_Points >= 22)         
            || (EntlarvtHarunsLager == TRUE)
            || (NpcAssTurmTot_Points == 14)
            || (NpcAssTurmTot_Points == 15)
            || (NpcAssTurmTot_Points == 16)
            || (NpcAssTurmTot_Points == 17)
            || (NpcAssTurmTot_Points == 18)
            || (NpcAssTurmTot_Points == 19)
            || (NpcAssTurmTot_Points == 20)
            || (NpcAssTurmTot_Points == 21)
            || (NpcAssTurmTot_Points == 22)
            || (NpcAssTurmTot_Points == 23)
            || (NpcAssTurmTot_Points == 24)
            || (NpcAssTurmTot_Points == 25)
            || (NpcAssTurmTot_Points == 26)
            || (NpcAssTurmTot_Points == 27)
            || (NpcAssTurmTot_Points == 28)
            || (NpcAssTurmTot_Points == 29)
            || (NpcAssTurmTot_Points == 30)
            || (NpcAssTurmTot_Points > 30)
            || (NpcAssTurmTot_Points >= 30) 
            || (KampfMitPasswache == TRUE)
            || (NpcAssPassTot_Points == 14)
            || (NpcAssPassTot_Points == 15)
            || (NpcAssPassTot_Points == 16)
            || (NpcAssPassTot_Points == 17)
            || (NpcAssPassTot_Points == 18)
            || (NpcAssPassTot_Points == 19)
            || (NpcAssPassTot_Points == 20)
            || (NpcAssPassTot_Points == 21)
            || (NpcAssPassTot_Points == 22)
            || (NpcAssPassTot_Points == 23)
            || (NpcAssPassTot_Points == 24)
            || (NpcAssPassTot_Points == 25)
            || (NpcAssPassTot_Points == 26)
            || (NpcAssPassTot_Points == 27)
            || (NpcAssPassTot_Points == 28)
            || (NpcAssPassTot_Points == 29)
            || (NpcAssPassTot_Points == 30)
            || (EntlarvtAssKueste == TRUE)
            || (NpcAssKuesteTot_Points == 14)
            || (NpcAssKuesteTot_Points == 15)
            || (NpcAssKuesteTot_Points == 16)
            || (NpcAssKuesteTot_Points == 17)
            || (NpcAssKuesteTot_Points == 18)
            || (NpcAssKuesteTot_Points == 19)
            || (NpcAssKuesteTot_Points == 20)
            || (NpcAssKuesteTot_Points == 21)
            || (NpcAssKuesteTot_Points == 22)
            || (NpcAssKuesteTot_Points == 23)
            || (NpcAssKuesteTot_Points == 24)
            || (NpcAssKuesteTot_Points == 25)
            || (NpcAssKuesteTot_Points == 26)
            || (NpcAssKuesteTot_Points == 27)
            || (NpcAssKuesteTot_Points == 28)
            || (NpcAssKuesteTot_Points == 29)
            || (NpcAssKuesteTot_Points == 30)
            || (NpcAssKuesteTot_Points == 31)
            || (NpcAssKuesteTot_Points == 32)
            || (NpcAssKuesteTot_Points == 33)
            || (NpcAssKuesteTot_Points == 34)
            || (NpcKorsarMendozasInselTot_Points == 10)
            || (NpcKorsarMendozasInselTot_Points == 11)
            || (NpcKorsarMendozasInselTot_Points == 12)
            || (NpcKorsarMendozasInselTot_Points == 13)
            || (NpcKorsarMendozasInselTot_Points == 14)
            || (NpcKorsarMendozasInselTot_Points == 15)
            || (NpcKorsarMendozasInselTot_Points == 16))
            {
             return false;
            };
      
      };
        
        
        
            
        //var int ADontKill;
        // ------ nur echte Humans können Unconscious werden ------
        if ((self.guild < GIL_SEPERATOR_HUM)
        && (!C_PlayerIsFakeDementor(self,other)))
        {
            if (self.guild != GIL_BDT)
            //&& ((self.guild != GIL_BDT)
            //&& (SnipeADontKill == FALSE))nur wichtig für Mod Korsarennest Alain 6.1.18
            && (self.guild != GIL_DMT) 
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
              
            {
                return TRUE;
            };
        };
        
        
        
        if ((self.guild < GIL_SEPERATOR_HUM)
        && (C_PlayerIsFakeDementor(self,other)))
        {
            //if (self.guild != GIL_BDT)
            if ((self.guild == GIL_DMT)
            || (self.guild == GIL_STRF))//neu wegen Arenakämpfer - testen!
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            && (self.aivar[AIV_ArenaFight] == AF_RUNNING)
            && (self.npctype != NPCTYPE_ORC)
            {
                return TRUE;
            };
        };
        
        if ((self.guild < GIL_SEPERATOR_HUM)
        && (C_PlayerIsFakeOrc(self,other)))
        {
            
            if ((self.guild == GIL_DMT)
            && (self.guild == GIL_ORC))
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            //&& (self.npctype != NPCTYPE_ORC)
            && (HEROALSORKFEINDERKANNT == FALSE)
            {
                return TRUE;
            };
        };
        
        
        if ((self.guild < GIL_SEPERATOR_HUM)
        && (other.guild == GIL_STRF))
        {
            if ((self.guild == GIL_BDT)
            || (self.guild == GIL_DMT)
            || (self.guild == GIL_ORC)
            || (self.guild == GIL_STRF))
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            && (self.npctype != NPCTYPE_ORC)
            {
                return TRUE;
            };
        };
        
        if ((self.guild < GIL_SEPERATOR_HUM)
        && (C_PlayerIsFakeBandit(self,other)))
        {
            if (self.guild == GIL_BDT)
            //&& (self.guild != GIL_DMT)
            && (self.aivar[AIV_DropDeadAndKill] == FALSE)
            && (self.npctype != NPCTYPE_ORC)
            {
                return TRUE;
            };
        };
            
        return FALSE;
    };

  15. Beiträge anzeigen #15 Zitieren
    Ehrengarde Avatar von mud-freak
    Registriert seit
    Dec 2005
    Beiträge
    2.199
     
    mud-freak ist offline
    Cool, dass es nun klappt.
    Wo du noch aufpassen solltest ist, dass die Funktion nicht nur für den Helden aufgerufen wird! Sie wird auch für jegliche NPCs aufgerufen, wenn sie Täter oder Opfer sind. Daher wäre die Abfrage, ob es sich bei einen von den beiden überhaupt um den Helden handelt ratsam, bevor du auf die Rüstung des Helden schaust.

    (Die Aneinanderreihungen von den Zahlen, kannst du wie gesagt durch Zahlenbereiche mit grösser/kleiner (>, <) abfragen, um es etwas leichter lesbar zu machen (siehe NpcUgarTot_Points). Funktionell macht das aber keinen Unterschied.)

  16. Beiträge anzeigen #16 Zitieren
    OdysseeModTeam Avatar von Alain Dufont
    Registriert seit
    Oct 2016
    Ort
    hinter dem Mond
    Beiträge
    3.856
     
    Alain Dufont ist offline
    Zitat Zitat von mud-freak Beitrag anzeigen
    Cool, dass es nun klappt.
    Wo du noch aufpassen solltest ist, dass die Funktion nicht nur für den Helden aufgerufen wird! Sie wird auch für jegliche NPCs aufgerufen, wenn sie Täter oder Opfer sind. Daher wäre die Abfrage, ob es sich bei einen von den beiden überhaupt um den Helden handelt ratsam, bevor du auf die Rüstung des Helden schaust.

    (Die Aneinanderreihungen von den Zahlen, kannst du wie gesagt durch Zahlenbereiche mit grösser/kleiner (>, <) abfragen, um es etwas leichter lesbar zu machen (siehe NpcUgarTot_Points). Funktionell macht das aber keinen Unterschied.)
    blackpirate hatte mir vorhin angeschrieben und mich darauf aufmerksam gemacht, dass ich auf ein paar Dinge achten sollte. Das Verhalten der NPCs soll sich je nach Rüstung ändern. Die Assassinen sollen einen angreifen, wenn man keine ihrer Rüstungen trägt, die Nomaden hingegen sollen den Spieler angreifen, wenn er Assassinenklamotten trägt. Das scheint aber nach wie vor der Fall zu sein. Das einzig Dumme ist, dass der Hero auch in Assassinenkleidungen sowohl von Assassinen (GIL_DMT) getötet wird, wie auch diese tötet. Da habe ich wohl was nicht beachtet.

  17. Beiträge anzeigen #17 Zitieren
    Kämpfer Avatar von SirSpike1984
    Registriert seit
    Nov 2007
    Ort
    Lutherstadt Eisleben
    Beiträge
    350
     
    SirSpike1984 ist offline
    Zitat Zitat von Alain Dufont Beitrag anzeigen
    Das einzig Dumme ist, dass der Hero auch in Assassinenkleidungen sowohl von Assassinen (GIL_DMT) getötet wird, wie auch diese tötet. Da habe ich wohl was nicht beachtet.
    Falls du noch mit meinem Save testest, bedenke ds ich über den Schutz der Assasinenrüstung hinaus bin. Ist also egal ob ich sie trage oder nicht, sie greifen mich trotzdem an.

    MfG Spike

  18. Beiträge anzeigen #18 Zitieren
    OdysseeModTeam Avatar von Alain Dufont
    Registriert seit
    Oct 2016
    Ort
    hinter dem Mond
    Beiträge
    3.856
     
    Alain Dufont ist offline
    Zitat Zitat von SirSpike1984 Beitrag anzeigen
    Falls du noch mit meinem Save testest, bedenke ds ich über den Schutz der Assasinenrüstung hinaus bin. Ist also egal ob ich sie trage oder nicht, sie greifen mich trotzdem an.

    MfG Spike
    Nein, in diesem Fall teste ich nicht mit deinem save.

  19. Beiträge anzeigen #19 Zitieren
    Ranger
    Registriert seit
    Aug 2012
    Ort
    Hagen
    Beiträge
    128
     
    mcgreg ist offline
    Ich würde mich sehr freuen wenn dieser Bug gefixt würde. Er hat mich damals beim (2. mal) durchspielen so geärgert, dass ich abgebrochen habe.
    Ich würde daher bei einer Version ohne diesen Bug durchaus überlegen nochmal von vorne zu beginnen weil die Mod einfach unschlagbar klasse ist und extrem Freude macht.
    Daher bitte bei einer weiteren Version deutlich drauf hinweisen.
    Vielen Dank.

  20. Beiträge anzeigen #20 Zitieren
    OdysseeModTeam Avatar von Alain Dufont
    Registriert seit
    Oct 2016
    Ort
    hinter dem Mond
    Beiträge
    3.856
     
    Alain Dufont ist offline
    Zitat Zitat von mcgreg Beitrag anzeigen
    Ich würde mich sehr freuen wenn dieser Bug gefixt würde. Er hat mich damals beim (2. mal) durchspielen so geärgert, dass ich abgebrochen habe.
    Ich würde daher bei einer Version ohne diesen Bug durchaus überlegen nochmal von vorne zu beginnen weil die Mod einfach unschlagbar klasse ist und extrem Freude macht.
    Daher bitte bei einer weiteren Version deutlich drauf hinweisen.
    Vielen Dank.
    Ist bereits gefixt und wird in den Änderungen der neuen Version 2.5 erwähnt.
    Geändert von Alain Dufont (08.01.2018 um 18:31 Uhr)

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