Globals auf unbestimmten Wert setzen

Dieses Thema im Forum "Modding Forum" wurde erstellt von Genwa, 28. Februar 2018.

  1. Genwa

    Genwa Betrachter

    Registriert seit:
    Jan. 2018
    Beiträge:
    221
    Zustimmungen:
    5
    Ich habe über ein Item nachgedacht, dass wie "Die Maske des Graufuchs" in TESIV bzw. wie "Agatha Maske" in der magische Stein funktioniert und dem Spieler ein alternatives Rufsystem gibt:

    Code:
    IF
      Global("NQ#M01","GLOBAL",0)                  // Maske inaktiv 2/2?
      HasItemEquiped("NQ#M01",Player1)             // Maske ausgerüstet?
      Reputation(Player1,1)                        // Aktueller normaler Ruf = 1?
    THEN
      RESPONSE #100
        SetGlobal("NQ#M01REP","GLOBAL",1)          // Normalen Ruf speichern: 1
        SetGlobal("NQ#M01","GLOBAL",1)             // Maske aktiv 1/2
    END
    
    IF
      Global("NQ#M01","GLOBAL",1)                  // Maske aktiv 1/2?
      Global("NQ#M02REP","GLOBAL",1)               // Gespeicherter Maskenruf = 1?
    THEN
      RESPONSE #100
        SetReputation(Player1,1)                   // Maskenruf aktivieren: Ruf auf 1 setzen.
        SetGlobal("NQ#M01","GLOBAL",2)             // Maske aktiv 2/2
    END
    
    IF
      Global("NQ#M01","GLOBAL",2)                  // Maske aktiv 2/2?
      !HasItemEquiped("NQ#M01",Player1)            // Maske nicht mehr ausgerüstet?
      Reputation(Player1,1)                        // Aktueller Maskenruf = 1?
    THEN
      RESPONSE #100
        SetGlobal("NQ#M02REP","GLOBAL",1)          // Maskenruf speichern: 1
        SetGlobal("NQ#M01","GLOBAL",3)             // Maske inaktiv 1/2
    END
    
    IF
      Global("NQ#M01","GLOBAL",3)
      Global("NQ#M01REP","GLOBAL",1)                // Gespeicherter normaler Ruf = 1?
    THEN
      RESPONSE #100
        SetReputation(Player1,1)                    // Normalen Ruf aktivieren: Ruf auf 1 setzen.
        SetGlobal("NQ#M01","GLOBAL",0)              // Maske inaktiv 2/2
    END
    Damit das ganze so funktioniert, müsste ich jede der Zeilen 19x (für jeden möglichen Rufpunkt) kopieren, da ich keine Weg kenne, der einen unbestimmten Wert auf ein Global überträgt, also den Wert der Global = dem Reputationswert setzt.

    Gibt es diesen Weg oder geht es nur so umständlich?
     
    Zuletzt bearbeitet: 3. Mai 2020
  2. Genwa

    Genwa Betrachter

    Registriert seit:
    Jan. 2018
    Beiträge:
    221
    Zustimmungen:
    5
    Notiz an mich selbst :P
    Reputation in unter 20 Schritten in einer Global speichern:

    Code:
    //     1. Zählen
    
    IF
      HasItemEquiped("NQ#M01",Player1)                        // Maske ausgerüstet
      Global("NQ#STEP","GLOBAL",0)                            // Zählung normaler Ruf noch nicht begonnen
    THEN
      RESPONSE #100
        SetGlobal("NQ#M01REP","GLOBAL",20)                    // Zähler auf 20 setzen
        SetGlobal("NQ#M02REP","GLOBAL",20)                    // Zählerspeicher auf 0 setzen
        SetGlobal("NQ#STEP","GLOBAL",1)                       // Ersten Schritt abschließen
    END
    
    IF
      Global("NQ#STEP","GLOBAL",1)                            // Erster Schritt abgeschlossen
      ReputationLT(Player1,20)                                // Aktueller Ruf unter 20
    THEN
      RESPONSE #100
        ReputationInc(1)                                      // Ruf erhöhen bis 20 erreicht wird
        IncrementGlobal("NQ#M01REP","GLOBAL",-1)              // Dabei von 20 runterzählen
    END
    
    IF
      Global("NQ#STEP","GLOBAL",1)                            // Erster Schritt ist abgeschlossen
      Reputation(Player1,20)                                  // Aktueller Ruf = 20
    THEN
      RESPONSE #100
        AddGlobals("NQ#M02REP","NQ#M01REP")                   // Zähler speichern
        SetGlobal("NQ#STEP","GLOBAL",2)                       // Zweiten Schritt abschließen
    END
    
    //     2. Zurücksetzen
    
    IF
      Global("NQ#STEP","GLOBAL",2)                            // Zweiter Schritt ist abgeschlossen
      !Global("NQ#M01REP","GLOBAL",20)                        // Noch nicht wieder hochgezählt
    THEN
      RESPONSE #100
        IncrementGlobal("NQ#M01REP","GLOBAL",1)               // Wieder hochzählen
        ReputationInc(-1)                                     // Ruf verringern bis Grundwert wieder erreicht wird (NQ#M01REP = 20 ist)
    END
    
    IF
      Global("NQ#STEP","GLOBAL",2)                            // Zweiter Schritt ist abgeschlossen
      Global("NQ#M01REP","GLOBAL",20)                         // Hochzählen abgeschlossen
    THEN
      RESPONSE #100
        SetGlobal("NQ#STEP","GLOBAL",3)                       // Dritten Schritt abschließen-> ruf wieder normal und Wert in "SetGlobal("NQ#M02REP","GLOBAL",1)" gespeichert.
    END
    Noch nicht getestet, aber sollte ein Schritt in die richtige Richtung sein. Zurücksetzen kann man sich sparen, wenn der Ruf mit Agathas Maske bekannt ist. Denn gleichen Script nochmal anwenden um deren Ruf beim absetzen der Maske zu aktualisieren und es sollte klappen.
     
    Zuletzt bearbeitet: 3. Mai 2020
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden