Globals auf unbestimmten Wert setzen

Genwa

Betrachter
Registriert
08.01.2018
Beiträge
324
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:

Genwa

Betrachter
Registriert
08.01.2018
Beiträge
324
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:
Oben