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 2 von 2 « Erste 12
Ergebnis 21 bis 30 von 30
  1. Beiträge anzeigen #21 Zitieren
    Kämpfer
    Registriert seit
    Feb 2016
    Ort
    Dresden
    Beiträge
    349
     
    gladi1994 ist offline
    Vielen Dank für die Skripte, Lord Sargon! Ließen sich wunderbar parsen und funktionierte auch (fast) alles auf Anhieb. Zumindest soweit ich getestet habe.

    Mal schauen, bin jetzt das Wochenende nicht da, da probiere ich später weiter.

    Muss jetzt erstmal noch den einen Fehler suchen und beseitigen, aber sonst siehts gut aus.

    LG

  2. Beiträge anzeigen #22 Zitieren
    Kämpfer
    Registriert seit
    Feb 2016
    Ort
    Dresden
    Beiträge
    349
     
    gladi1994 ist offline
    Ich bins wieder

    Also ich habe jetzt einiges ausprobiert und mir die Skripte durchgeschaut, in der Hoffnung, zwei Fehler beheben zu können:
    Zum Einen den bekannten Bug, dass man die Klaue Beliars sofort nach Spielbeginn im Turm von Xardas erbeten kann, obwohl man die Klaue noch gar nicht im Inventar und Raven noch nicht besiegt hat.
    Und zum Zweiten ein Bug, dass ich den Stachel Beliars nicht als Pfeil erbeten kann. Sobald das Bogen-Talent höher als das Armbrust-Talent ist, soll der Stachel Beliars ja ein Pfeil und kein Bolzen mehr sein. Das klappt auch nicht, ich bekomme keinen Pfeil ins Inventar gelegt und danach sind auch die Auswahloptionen am Beliarschrein weg, die Klaue aufzubessern oder wieder in etwas anderes umzuwandeln. (Bolzen funktioniert einwandfrei und ist auch benutzbar!)

    Aber erstmal zum ersten Bug, der ja allseits bekannt ist. Habe mir den Code dazu angeschaut und kann eigentlich keine Fehler erkennen... Was ich aber nicht so ganz verstehe sind folgende Codezeilen:

    Code:
    func int C_SCHASBELIARSRUNE()
    {
        if NPC_HASITEMS(HERO, ITRU_BELIARSRAGE) == TRUE || NPC_HASITEMS(HERO, ITRU_SUCKENERGY) == TRUE || NPC_HASITEMS(HERO, ITRU_GREENTENTACLE) == TRUE || NPC_HASITEMS(HERO, ITRU_SWARM) == TRUE || NPC_HASITEMS(HERO, ITRU_SKULL) == TRUE || NPC_HASITEMS(HERO, ITRU_SUMMONZOMBIE) == TRUE || NPC_HASITEMS(HERO, ITRU_SUMMONGUARDIAN) == TRUE || NPC_HASITEMS(HERO, ITRU_ZEITSPALT) == TRUE
        {
            return TRUE;
        };
        return FALSE;
    };
    
    func int C_SCHASBELIARSRANGEDWEAPON()
    {
        if BELIARW_UPGRADETOARROW > 0 || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_01) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_02) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_03) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_04) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_05) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_06) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_07) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_08) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_09) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_10) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_11) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_12) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_13) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_14) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_15) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_16) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_17) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_18) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_19) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_20) || BELIARW_UPGRADETOBOLT > 0 || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_01) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_02) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_03) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_04) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_05) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_06) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_07) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_08) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_09) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_10) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_11) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_12) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_13) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_14) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_15) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_16) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_17) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_18) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_19) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_20)
        {
            return TRUE;
        };
        return FALSE;
    };
    
    func int C_SCHASBELIARSMELEEWEAPON()
    {
        if NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_RAVEN) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_01) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_02) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_03) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_04) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_05) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_06) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_07) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_08) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_09) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_10) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_11) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_12) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_13) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_14) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_15) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_16) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_17) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_18) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_19) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_1H_20) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_01) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_02) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_03) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_04) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_05) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_06) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_07) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_08) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_09) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_10) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_11) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_12) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_13) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_14) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_15) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_16) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_17) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_18) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_19) || NPC_HASITEMS(HERO, ITMW_BELIARWEAPON_2H_20)
        {
            return TRUE;
        };
        return FALSE;
    };
    
    func int C_SCHASBELIARSWEAPON()
    {
        if C_SCHASBELIARSMELEEWEAPON() || C_SCHASBELIARSRUNE() || C_SCHASBELIARSRANGEDWEAPON()
        {
            return TRUE;
        };
        return FALSE;
    };
    
    func int C_ISITEMBELIARSWEAPON(var C_ITEM WEAP)
    {
        if HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_RAVEN) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_01) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_02) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_03) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_04) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_05) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_06) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_07) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_08) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_09) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_10) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_11) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_12) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_13) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_14) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_15) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_16) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_17) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_18) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_19) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_1H_20) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_01) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_02) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_03) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_04) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_05) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_06) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_07) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_08) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_09) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_10) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_11) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_12) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_13) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_14) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_15) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_16) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_17) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_18) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_19) == TRUE || HLP_ISITEM(WEAP, ITMW_BELIARWEAPON_2H_20) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_01) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_02) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_03) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_04) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_05) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_06) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_07) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_08) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_09) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_10) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_11) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_12) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_13) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_14) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_15) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_16) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_17) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_18) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_19) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_ARROW_20) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_01) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_02) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_03) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_04) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_05) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_06) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_07) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_08) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_09) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_10) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_11) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_12) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_13) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_14) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_15) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_16) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_17) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_18) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_19) == TRUE || HLP_ISITEM(WEAP, ITRW_BELIARWEAPON_BOLT_20) == TRUE || HLP_ISITEM(WEAP, ITRU_BELIARSRAGE) == TRUE || HLP_ISITEM(WEAP, ITRU_SUCKENERGY) == TRUE || HLP_ISITEM(WEAP, ITRU_GREENTENTACLE) == TRUE || HLP_ISITEM(WEAP, ITRU_SWARM) == TRUE || HLP_ISITEM(WEAP, ITRU_SKULL) == TRUE || HLP_ISITEM(WEAP, ITRU_SUMMONZOMBIE) == TRUE || HLP_ISITEM(WEAP, ITRU_SUMMONGUARDIAN) == TRUE || HLP_ISITEM(WEAP, ITRU_ZEITSPALT) == TRUE
        {
            return TRUE;
        };
        return FALSE;
    };
    
    func int C_SCHASREADIEDBELIARSWEAPON()
    {
        var C_ITEM READYWEAP;
        READYWEAP = NPC_GETREADIEDWEAPON(HERO);
        if C_ISITEMBELIARSWEAPON(READYWEAP)
        {
            return TRUE;
        };
        return FALSE;
    };
    
    func int C_SCHASEQUIPPEDBELIARSWEAPON()
    {
        var C_ITEM EQUIPWEAP;
        EQUIPWEAP = NPC_GETEQUIPPEDMELEEWEAPON(HERO);
        if C_ISITEMBELIARSWEAPON(EQUIPWEAP)
        {
            return TRUE;
        };
        return FALSE;
    };
    Return True und direkt danach wieder Return False? Was bringt das?

    Edit: Für mich ergibt das keinen Sinn, erst eine lange If-Condition, die TRUE zurückgibt, wenn alles erfüllt wird, und direkt hinter dem If wird FALSE zurückgegeben?? Ist das vielleicht der Fehler? :S
    Geändert von gladi1994 (08.05.2017 um 12:34 Uhr)

  3. Beiträge anzeigen #23 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Warum ergibt das keinen Sinn? Folgendes ist doch auch perfekt logisch:

    Code:
    func int greaterThanFive(var int nr) {
        if (nr > 5) {
            return TRUE;
        };
        return FALSE;
    };

  4. Beiträge anzeigen #24 Zitieren
    Kämpfer
    Registriert seit
    Feb 2016
    Ort
    Dresden
    Beiträge
    349
     
    gladi1994 ist offline
    Zitat Zitat von Lehona Beitrag anzeigen
    Warum ergibt das keinen Sinn? Folgendes ist doch auch perfekt logisch:

    Code:
    func int greaterThanFive(var int nr) {
        if (nr > 5) {
            return TRUE;
        };
        return FALSE;
    };
    Stimmt, jetzt wo du es schreibst... Mir fehlte da irgendwie das ELSE, aber das muss ja nicht da stehen.
    Blöde Frage, sorry...

    Kann man Folgendes denn auch so schreiben? :

    Code:
    func int C_SCHASBELIARSRUNE()
    {
        if NPC_HASITEMS(HERO, ITRU_BELIARSRAGE)  == TRUE  || NPC_HASITEMS(HERO, ITRU_SUCKENERGY) == TRUE || NPC_HASITEMS(HERO, ITRU_GREENTENTACLE) == TRUE  || NPC_HASITEMS(HERO, ITRU_SWARM) == TRUE || NPC_HASITEMS(HERO, ITRU_SKULL)  == TRUE   || NPC_HASITEMS(HERO, ITRU_SUMMONZOMBIE) == TRUE || NPC_HASITEMS(HERO, ITRU_SUMMONGUARDIAN ) == TRUE || NPC_HASITEMS(HERO, ITRU_ZEITSPALT) == TRUE 
        {
            return TRUE;
        };
        return FALSE;
    };
    
    func int C_SCHASBELIARSRANGEDWEAPON()
    {
        if BELIARW_UPGRADETOARROW > 0 || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_01) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_02) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_03) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_04) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_05) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_06) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_07) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_08) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_09) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_10) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_11) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_12) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_13) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_14) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_15) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_16) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_17) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_18) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_19) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_ARROW_20) || BELIARW_UPGRADETOBOLT > 0 || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_01) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_02) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_03) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_04) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_05) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_06) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_07) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_08) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_09) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_10) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_11) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_12) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_13) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_14) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_15) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_16) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_17) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_18) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_19) || NPC_HASITEMS(HERO, ITRW_BELIARWEAPON_BOLT_20)
        {
            return TRUE;
        };
        return FALSE;
    };
    Genau so steht es im Skript. In der Funktion C_ScHasBeliarsRune wird "Npc_HasItems" immer mit "== TRUE" abgefragt, in der Funktion C_ScHasBeliarsRangedWeapon hingegen nicht. Kann man das "== TRUE" weglassen? Das weiß ich auch nicht...

  5. Beiträge anzeigen #25 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Daedalus kann, wie C, mit Integern in einer If-Abfrage arbeiten. Um genau zu sein gelten alle Werte ungleich 0 als TRUE und nur 0 zählt als FALSE. Bei Vergleichen (mit ==) ist das Ergebnis entweder 1 (wenn die Werte gleich sind) oder 0 (wenn die Werte unterschiedlich sind).

    Das heißt aber auch, dass folgende Versionen unterschiedliche Bedeutungen haben:

    Code:
    if (Npc_HasItems(...) == TRUE) { // Der NPC hat genau 1 Item
    if (Npc_HasItems(...)) { // Der NPC hat mindestens 1 Item
    Die erste Funktion würde also FALSE zurückgeben, wenn man mehr als eine von irgendeiner Beliarrune hat. Das ist natürlich nicht vorgesehen, also sollte es üblicherweise funktionieren...

  6. Beiträge anzeigen #26 Zitieren
    Kämpfer
    Registriert seit
    Feb 2016
    Ort
    Dresden
    Beiträge
    349
     
    gladi1994 ist offline
    Also ist auch das korrekt und daran liegt es nicht... Mist! ^^
    Dann muss ich weiter schauen..

    Vielen Dank trotzdem

  7. Beiträge anzeigen #27 Zitieren
    research Avatar von NicoDE
    Registriert seit
    Dec 2004
    Beiträge
    7.410
     
    NicoDE ist offline
    Auf den ersten Blick: In B_CreateBeliarsRangedWeapon() wird BeliarW_UpgradeToArrow immer auf 0 gesetzt. Damit ist der ganze obere Block hinfällig und sinnlos (ganz davon abgesehen, dass BeliarWeapCurrentLvl > 20 'undefiniert' ist).

    Ich habe es mal umformatiert, damit man es besser lesen kann ohne ewig zu scrollen:
    Code:
    func void B_CreateBeliarsRangedWeapon(var C_NPC slf)
    {
    	if slf.HitChance[NPC_TALENT_BOW] > slf.HitChance[NPC_TALENT_CROSSBOW] {
    		if      BeliarWeapCurrentLvl <=  1 { BeliarW_UpgradeToArrow =  1; }
    		else if BeliarWeapCurrentLvl ==  2 { BeliarW_UpgradeToArrow =  2; }
    		else if BeliarWeapCurrentLvl ==  3 { BeliarW_UpgradeToArrow =  3; }
    		else if BeliarWeapCurrentLvl ==  4 { BeliarW_UpgradeToArrow =  4; }
    		else if BeliarWeapCurrentLvl ==  5 { BeliarW_UpgradeToArrow =  5; }
    		else if BeliarWeapCurrentLvl ==  6 { BeliarW_UpgradeToArrow =  6; }
    		else if BeliarWeapCurrentLvl ==  7 { BeliarW_UpgradeToArrow =  7; }
    		else if BeliarWeapCurrentLvl ==  8 { BeliarW_UpgradeToArrow =  8; }
    		else if BeliarWeapCurrentLvl ==  9 { BeliarW_UpgradeToArrow =  9; }
    		else if BeliarWeapCurrentLvl == 10 { BeliarW_UpgradeToArrow = 10; }
    		else if BeliarWeapCurrentLvl == 11 { BeliarW_UpgradeToArrow = 11; }
    		else if BeliarWeapCurrentLvl == 12 { BeliarW_UpgradeToArrow = 12; }
    		else if BeliarWeapCurrentLvl == 13 { BeliarW_UpgradeToArrow = 13; }
    		else if BeliarWeapCurrentLvl == 14 { BeliarW_UpgradeToArrow = 14; }
    		else if BeliarWeapCurrentLvl == 15 { BeliarW_UpgradeToArrow = 15; }
    		else if BeliarWeapCurrentLvl == 16 { BeliarW_UpgradeToArrow = 16; }
    		else if BeliarWeapCurrentLvl == 17 { BeliarW_UpgradeToArrow = 17; }
    		else if BeliarWeapCurrentLvl == 18 { BeliarW_UpgradeToArrow = 18; }
    		else if BeliarWeapCurrentLvl == 19 { BeliarW_UpgradeToArrow = 19; }
    		else if BeliarWeapCurrentLvl == 20 { BeliarW_UpgradeToArrow = 20; };
    		BeliarW_UpgradeToBolt = 0;
    	}
    	else if BeliarWeapCurrentLvl <=  1 { BeliarW_UpgradeToBolt =  1; }
     	else if BeliarWeapCurrentLvl ==  2 { BeliarW_UpgradeToBolt =  2; }
    	else if BeliarWeapCurrentLvl ==  3 { BeliarW_UpgradeToBolt =  3; }
    	else if BeliarWeapCurrentLvl ==  4 { BeliarW_UpgradeToBolt =  4; }
    	else if BeliarWeapCurrentLvl ==  5 { BeliarW_UpgradeToBolt =  5; }
    	else if BeliarWeapCurrentLvl ==  6 { BeliarW_UpgradeToBolt =  6; }
    	else if BeliarWeapCurrentLvl ==  7 { BeliarW_UpgradeToBolt =  7; }
    	else if BeliarWeapCurrentLvl ==  8 { BeliarW_UpgradeToBolt =  8; }
    	else if BeliarWeapCurrentLvl ==  9 { BeliarW_UpgradeToBolt =  9; }
    	else if BeliarWeapCurrentLvl == 10 { BeliarW_UpgradeToBolt = 10; }
    	else if BeliarWeapCurrentLvl == 11 { BeliarW_UpgradeToBolt = 11; }
    	else if BeliarWeapCurrentLvl == 12 { BeliarW_UpgradeToBolt = 12; }
    	else if BeliarWeapCurrentLvl == 13 { BeliarW_UpgradeToBolt = 13; }
    	else if BeliarWeapCurrentLvl == 14 { BeliarW_UpgradeToBolt = 14; }
    	else if BeliarWeapCurrentLvl == 15 { BeliarW_UpgradeToBolt = 15; }
    	else if BeliarWeapCurrentLvl == 16 { BeliarW_UpgradeToBolt = 16; }
    	else if BeliarWeapCurrentLvl == 17 { BeliarW_UpgradeToBolt = 17; }
    	else if BeliarWeapCurrentLvl == 18 { BeliarW_UpgradeToBolt = 18; }
    	else if BeliarWeapCurrentLvl == 19 { BeliarW_UpgradeToBolt = 19; }
    	else if BeliarWeapCurrentLvl == 20 { BeliarW_UpgradeToBolt = 20; };
    	BeliarW_UpgradeToArrow = 0;
    };
    Wahrscheinlich war eher das gemeint:
    Code:
    func void B_CreateBeliarsRangedWeapon(var C_NPC slf)
    {
    	if slf.HitChance[NPC_TALENT_BOW] > slf.HitChance[NPC_TALENT_CROSSBOW] {
    		if BeliarWeapCurrentLvl < 1 {
    			BeliarW_UpgradeToArrow = 1;
    		} else if BeliarWeapCurrentLvl > 20 {
    			BeliarW_UpgradeToArrow = 20;  //FIXME: 0? (no upgrade if > 20)
    		} else {
    			BeliarW_UpgradeToArrow = BeliarWeapCurrentLvl;
    		};
    		BeliarW_UpgradeToBolt = 0;
    	} else {  // HitChance[NPC_TALENT_BOW] <= HitChance[NPC_TALENT_CROSSBOW]
    		if BeliarWeapCurrentLvl < 1 {
    			BeliarW_UpgradeToBolt = 1;
    		} else if BeliarWeapCurrentLvl > 20 {
    			BeliarW_UpgradeToBolt = 20;  //FIXME: 0? (no upgrade if > 20)
    		} else {
    			BeliarW_UpgradeToBolt = BeliarWeapCurrentLvl;
    		};
    		BeliarW_UpgradeToArrow = 0;
    	};
    };
    "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 (08.05.2017 um 14:37 Uhr)

  8. Beiträge anzeigen #28 Zitieren
    Kämpfer
    Registriert seit
    Feb 2016
    Ort
    Dresden
    Beiträge
    349
     
    gladi1994 ist offline
    Wow, vielen Dank!! So funktioniert es!

    Ich war gerade etwas verwirrt, das hatte ich doch gar nicht im obigen Post gezeigt. Hast du dir die Skripte selbst runtergeladen und reingeschaut? Vielen Dank dafür! Ich bin nur etwas deprimiert, weil ich da Stunden mit verbringe und du und Lehona da einfach nur schnell reinschauen und den Fehler haben...

    Jetzt wäre noch interessant zu wissen, warum man die Klaue am Beliarschrein schon direkt zu Beginn erbeten kann? Da verstehe ich auch ein paar Sachen nicht:

    Code:
    instance PC_PRAYSHRINE_UPGRATEBELIARSWEAPON(C_INFO)
    {
        NPC = PC_HERO;
        NR = 90;
        CONDITION = PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_CONDITION;
        INFORMATION = PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_INFO;
        PERMANENT = TRUE;
        DESCRIPTION = NAME_ADDON_UPGRATEBELIARSWEAPON;
    };
    
    func int PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_CONDITION()
    {
        if PLAYER_MOBSI_PRODUCTION == MOBSI_PRAYIDOL && C_SCCANUPGRATEBELIARSWEAPON(-1) == TRUE && C_SCHASBELIARSWEAPON() == TRUE && HERO.GUILD != GIL_KDW
        {
            return FALSE;
        };
    };
    
    func void PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_INFO()
    {
        B_CLEARBELIARSMELEEWEAPON(HERO);
        B_CLEARBELIARSRANGEDWEAPON(HERO);
        B_CLEARBELIARSRUNE(HERO);
        B_SET_STANDARDAMMO(HERO);
        B_UPGRATEBELIARSWEAPON(-1);
    };
    
    instance PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_SWORD(C_INFO)
    {
        NPC = PC_HERO;
        NR = 70;
        CONDITION = PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_SWORD_CONDITION;
        INFORMATION = PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_SWORD_INFO;
        PERMANENT = TRUE;
    };
    
    func int PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_SWORD_CONDITION()
    {
        if C_SCCANUPGRATEBELIARSWEAPON(UPGRADE_SWORD) == TRUE
        {
            if C_SCHASBELIARSRANGEDWEAPON()
            {
                PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_SWORD.DESCRIPTION = "'Den Stachel Beliars' in die 'Klaue Beliars' umwandeln und verbessern";
            }
            else if C_SCHASBELIARSRUNE() == TRUE
            {
                PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_SWORD.DESCRIPTION = "Die Rune in die 'Klaue Beliars' umwandeln und verbessern";
            }
            else
            {
                PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_SWORD.DESCRIPTION = "'Die Klaue Beliars' verbessern";
            };
        }
        else if C_SCHASBELIARSRANGEDWEAPON()
        {
            PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_SWORD.DESCRIPTION = "'Den Stachel Beliars' in die 'Klaue Beliars' umwandeln";
        }
        else if C_SCHASBELIARSRUNE() == TRUE
        {
            PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_SWORD.DESCRIPTION = "Die Rune in die 'Klaue Beliars' umwandeln";
        }
        else
        {
            PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_SWORD.DESCRIPTION = "'Die Klaue Beliars' verbessern";
        };
        if PLAYER_MOBSI_PRODUCTION == MOBSI_PRAYIDOL && HERO.GUILD != GIL_KDF && (C_SCCANUPGRATEBELIARSWEAPON(UPGRADE_SWORD) == TRUE || C_SCHASBELIARSRUNE() == TRUE || C_SCHASBELIARSRANGEDWEAPON())
        {
            return TRUE;
        };
    };
    
    func void PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_SWORD_INFO()
    {
        B_CLEARBELIARSMELEEWEAPON(HERO);
        B_CLEARBELIARSRANGEDWEAPON(HERO);
        B_CLEARBELIARSRUNE(HERO);
        B_SET_STANDARDAMMO(HERO);
        B_UPGRATEBELIARSWEAPON(UPGRADE_SWORD);
    };
    
    instance PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_AMMO(C_INFO)
    {
        NPC = PC_HERO;
        NR = 80;
        CONDITION = PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_AMMO_CONDITION;
        INFORMATION = PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_AMMO_INFO;
        PERMANENT = TRUE;
    };
    
    func int PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_AMMO_CONDITION()
    {
        if C_SCCANUPGRATEBELIARSWEAPON(UPGRADE_MUNI) == TRUE
        {
            if C_SCHASBELIARSMELEEWEAPON() == TRUE
            {
                PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_AMMO.DESCRIPTION = "'Die Klaue Beliars' in den 'Stachel Beliars' umwandeln und verbessern";
            }
            else if C_SCHASBELIARSRUNE() == TRUE
            {
                PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_AMMO.DESCRIPTION = "Die Rune in den 'Stachel Beliars' umwandeln und verbessern";
            }
            else
            {
                PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_AMMO.DESCRIPTION = "'Den Stachel Beliars' verbessern";
            };
        }
        else if C_SCHASBELIARSMELEEWEAPON() == TRUE
        {
            PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_AMMO.DESCRIPTION = "'Die Klaue Beliars' in den 'Stachel Beliars' umwandeln";
        }
        else if C_SCHASBELIARSRUNE() == TRUE
        {
            PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_AMMO.DESCRIPTION = "Die Rune in den 'Stachel Beliars' umwandeln";
        }
        else
        {
            PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_AMMO.DESCRIPTION = "'Den Stachel Beliars' verbessern";
        };
        if PLAYER_MOBSI_PRODUCTION == MOBSI_PRAYIDOL && HERO.GUILD != GIL_KDF && (C_SCCANUPGRATEBELIARSWEAPON(UPGRADE_MUNI) == TRUE || C_SCHASBELIARSMELEEWEAPON() == TRUE || C_SCHASBELIARSRUNE() == TRUE)
        {
            return TRUE;
        };
    };
    
    func void PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_AMMO_INFO()
    {
        B_CLEARBELIARSMELEEWEAPON(HERO);
        B_CLEARBELIARSRANGEDWEAPON(HERO);
        B_CLEARBELIARSRUNE(HERO);
        B_SET_STANDARDAMMO(HERO);
        B_UPGRATEBELIARSWEAPON(UPGRADE_MUNI);
    };
    
    instance PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_RUNE(C_INFO)
    {
        NPC = PC_HERO;
        NR = 90;
        CONDITION = PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_RUNE_CONDITION;
        INFORMATION = PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_RUNE_INFO;
        PERMANENT = TRUE;
    };
    
    func int PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_RUNE_CONDITION()
    {
        if C_SCHASBELIARSMELEEWEAPON()
        {
            PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_RUNE.DESCRIPTION = "'Die Klaue Beliars' in eine Rune umwandeln";
        }
        else if C_SCHASBELIARSRANGEDWEAPON()
        {
            PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_RUNE.DESCRIPTION = "'Den Stachel Beliars' in eine Rune umwandeln";
        }
        else
        {
            PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_RUNE.DESCRIPTION = "Eine Rune auswählen";
        };
        if PLAYER_MOBSI_PRODUCTION == MOBSI_PRAYIDOL && (HERO.GUILD == GIL_KDW || HERO.GUILD == GIL_KDF) && (C_SCCANUPGRATEBELIARSWEAPON(UPGRADE_RUNE) == TRUE || C_SCHASBELIARSWEAPON() == TRUE)
        {
            return TRUE;
        };
    };
    
    func void PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_RUNE_INFO()
    {
        B_CLEARBELIARSMELEEWEAPON(HERO);
        B_CLEARBELIARSRANGEDWEAPON(HERO);
        B_CLEARBELIARSRUNE(HERO);
        B_SET_STANDARDAMMO(HERO);
        B_UPGRATEBELIARSWEAPON(UPGRADE_RUNE);
    };
    Zum Beispiel die rot markierte -1. Was hat denn die -1 da zu bedeuten?

  9. #29 Zitieren
    Lord Sargon
    Gast
     
    Zitat Zitat von gladi1994 Beitrag anzeigen
    Zum Beispiel die rot markierte -1. Was hat denn die -1 da zu bedeuten?
    Das wird gar nicht verwendet, die PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_CONDITION liefert ohnehin immer FALSE.

    Relevant sind also weiter unten die PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_SWORD_CONDITION und die PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_AMMO_CONDITION, die liefern beide TRUE, wenn man keine Klaue hat, weil die Abfrage C_SCCANUPGRATEBELIARSWEAPON TRUE liefert, also muss zusätzlich abgefragt werden, ob man die jeweilige Waffe hat.

    Das wäre dann C_SCCANUPGRATEBELIARSWEAPON(UPGRADE_SWORD) && C_SCHASBELIARSMELEEWEAPON() bzw. C_SCCANUPGRATEBELIARSWEAPON(UPGRADE_MUNI) && C_SCHASBELIARSRANGEDWEAPON()...

  10. Beiträge anzeigen #30 Zitieren
    Kämpfer
    Registriert seit
    Feb 2016
    Ort
    Dresden
    Beiträge
    349
     
    gladi1994 ist offline
    Zitat Zitat von Lord Sargon Beitrag anzeigen
    Das wird gar nicht verwendet, die PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_CONDITION liefert ohnehin immer FALSE.

    Relevant sind also weiter unten die PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_SWORD_CONDITION und die PC_PRAYSHRINE_UPGRATEBELIARSWEAPON_AMMO_CONDITION, die liefern beide TRUE, wenn man keine Klaue hat, weil die Abfrage C_SCCANUPGRATEBELIARSWEAPON TRUE liefert, also muss zusätzlich abgefragt werden, ob man die jeweilige Waffe hat.

    Das wäre dann C_SCCANUPGRATEBELIARSWEAPON(UPGRADE_SWORD) && C_SCHASBELIARSMELEEWEAPON() bzw. C_SCCANUPGRATEBELIARSWEAPON(UPGRADE_MUNI) && C_SCHASBELIARSRANGEDWEAPON()...
    Vielen Dank!

    Das Allein hat leider nicht komplett ausgereicht, aber es hat mir einen Denkanstoß gegeben und jetzt funktioniert es so, wie ich möchte!

    Vielen, vielen Dank euch Allen!

Seite 2 von 2 « Erste 12

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