Construction Set Script zum Rangaufsteigen

pooliebe

Neuankömmling
Sobald man ein Amulett angelegt hat, soll eine Messagebox kommen, ob ich mich dieser Fraction anschließen möchte, dort soll ich mit ja oder nein auswählen. Bei Ja, soll ich mich dieser Fraction angeschloßen haben

Danke im Vorraus
 
Code:
scn AmuletJoinFactionScript

short Button

begin OnAdd Player
   if Player.GetFactionRank FactionID < 0
      MessageBox "Wollt Ihr Euch XY anschließen?", "Ja", "Nein"
   endif
end

begin OnEquip Player ; Wiederholung für den Fall, einmal "Nein" geantwortet zu haben
   if Player.GetFactionRank FactionID < 0
      MessageBox "Wollt Ihr Euch XY anschließen?", "Ja", "Nein"
   endif
end

begin GameMode
   Set Button to GetButtonPressed
   if Button > -1
      if Button == 0 ; Antwort "Ja"
         Player.SetFactionRank FactionID 0 ; Erster Rang
         Set Button to -1 
      elseif Button == 1 ; Antwort "Nein"
         Set Button to -1
      endif
   endif
end
Ungetestet, ich hoffe, es funktioniert. Bin mir gerade nicht sicher, ob GameMode auch auf Items im Inventar funktioniert. Müsste aber...
Versuch doch mal selber, was auszuknobeln. Kannst dir doch nicht alle Skripte von anderen vorkauen lassen! ;)

Gruß, Haldor.
 
Zuletzt bearbeitet:
Tuhe ich ja nich, die andere scripts kann ich ja, nur halt nichtsolche:lol: , war das letzte Script was ich brauche.

Allerdings klappt das mit den SetButton nicht:( , steht immer setbutton not found.
 
Lücke zwischen Set und Button. Tippfehler meinerseits. Wenn mal wieder so ne Meldung kommt, einfach mal auf Tippfehler überprüfen!
 
Code:
scn AmuletJoinFactionScript

short Button

begin OnAdd Player
   if Player.GetFactionRank FactionID < 0
      MessageBox "Wollt Ihr Euch XY anschließen?", "Ja", "Nein"
   endif
end

begin OnEquip Player ; Wiederholung für den Fall, einmal "Nein" geantwortet zu haben
   if Player.GetFactionRank FactionID < 0
      MessageBox "Wollt Ihr Euch XY anschließen?", "Ja", "Nein"
   endif
end

begin GameMode
   Set Button to GetButtonPressed
   if Button > -1
      if Button == 0 ; Antwort "Ja"
         Player.SetFactionRank FactionID 0 ; Erster Rang
         Set Button to -1 
      elseif Button == 1 ; Antwort "Nein"
         Set Button to -1
      endif
   endif
end
Ungetestet, ich hoffe, es funktioniert. Bin mir gerade nicht sicher, ob GameMode auch auf Items im Inventar funktioniert. Müsste aber...
Versuch doch mal selber, was auszuknobeln. Kannst dir doch nicht alle Skripte von anderen vorkauen lassen! ;)

Gruß, Haldor.
Klar klappt Gamemode, wie soll die Messagebox sonst überhaupt funktionieren?:huh:
 
@ pooliebe (blöder Name übrigens... nicht persönlich nehmen)
Du musst Button oben als Variable deklarieren: short Button. Sonst kennt er die natürlich nicht. Steht auch so in meinem Skript drin!

@ Oberscht
Klar klappt GameMode. :roll: Ich bin mir nicht sicher, ob GameMode bei einem Item funzt, was sich im Inventar befindet, weil ich diesen Sonderfall noch nicht selber getestet habe. Wie gesagt dürfte das wahrscheinlich kein Problem sein. Aber man kann bei Oblivion nie wissen...
 
Eine einzelne Messagebox klappt im Inventar. Wenns mehrere sind, werden die Messages nach der ersten erst angezeigt, wenn das Inventar zu ist. Ansonsten nimm einfach MenuMode.
 
@ pooliebe (blöder Name übrigens... nicht persönlich nehmen)
Du musst Button oben als Variable deklarieren: short Button. Sonst kennt er die natürlich nicht. Steht auch so in meinem Skript drin!

@ Oberscht
Klar klappt GameMode. :roll: Ich bin mir nicht sicher, ob GameMode bei einem Item funzt, was sich im Inventar befindet, weil ich diesen Sonderfall noch nicht selber getestet habe. Wie gesagt dürfte das wahrscheinlich kein Problem sein. Aber man kann bei Oblivion nie wissen...

Vielen Dank, Haldor
Es klappt! Die messagebox hatte ich schon, daher habe ich nichjt oben gekuckt:lol:
Als namé viel mir nichts besseres ein. Und ich bin NICHT schwul, falls du das denken solltest:lol:
 
So, ich hab doch noch ne Frage:lol:
Ich probiere heute schon den Ganzen Tag, es hinzubekommen, dass die meldung, ob man beitrten will nur einaml kommt, aber sie kommt wirklich immer, wenn ich das Amulet anlege:(, aber sie soll ja nur einmal kommen.
 
du musst einfach am anfang des skripts ein short doOnce einfügen. dann vor der frage if doOnce == 0
und nachdem man in die faction aufgenommen wurde set doOnce to 1
 
du musst einfach am anfang des skripts ein short doOnce einfügen. dann vor der frage if doOnce == 0
und nachdem man in die faction aufgenommen wurde set doOnce to 1
Falsch!
Da muss if Doonce != 1 hin! Denn wenn die Variable noch nicht bestimmt wurde, dann hat sie irgendwas Unbekanntes, könnte -1 sein, wie bei Messageboxen, 0 jedenfalls nicht. Darum muss abgefragt werden, ob sie 1 oder was anderes ist.
 
Zuletzt bearbeitet:
Code:
scn Name
short doonce
begin OnActivate
if ( IsActionRef Player == 1 ) && ( doonce != 1 )
PlaySound SoundID 
Set doonce to 1
endif
end

short Button
begin OnEquip Player
if Player.GetFactionRank FactionID < 0
MessageBox "Wollt Ihr Euch XY anschließen?", "Ja", "Nein"
endif
end

begin GameMode
Set Button to GetButtonPressed
if Button > -1
if Button == 0 ; Antwort "Ja"
Player.SetFactionRank FactionID 0 
Set Button to -1 
elseif Button == 1 ; Antwort "Nein"
Set Button to -1
endif
endif
]

So in etwa:(
 
Zuletzt bearbeitet:
Was mir prompt auffällt:
Set Button to -1
elseif Button == 1 ; Antwort "Nein"
Wenn du vorher Button zu -1 gemacht hast, dann gibts gar keine Möglichkeit, dass der gleich danach 1 wird:roll:

Außerdem siehts bisher so aus, dass du mit Doonce nur verhinderst, dass der Sound abgespielt wird. Das GetFactionRank verhindert alles weitere. Allerdings musst du das per Reference machen, also
short Faktion
Set Faktion to player.GetFactionRank FactionID

und dann
if Faktion < 0

Ach ja, ist es gewollt, dass der Sound nur beim Aufnehmen vom Boden abgespielt wird?
 
Ja, da im Iventar kein Sound abgespielt wird.
Das mit den Set Button to -1 von Haldor, ich hab es einfach reinkopiert:lol:
Ich kapier nicht was ich jetzt machen muss, kannst vieleicht das ganze Script hinschreiben?:(
 
Code:
scn Name
short doonce
short Faktion
short Button

begin OnActivate
if ( IsActionRef Player == 1 ) && ( doonce != 1 )
PlaySound SoundID 
Set doonce to 1
endif
end

begin OnEquip Player
Set Faktion to Player.GetFactionRank FactionID
if Faktion < 0
MessageBox "Wollt Ihr Euch XY anschließen?", "Ja", "Nein"
endif
end

begin GameMode
Set Button to GetButtonPressed
if Button == 0 ; Antwort "Ja"
Player.SetFactionRank FactionID 0 
elseif Button == 1 ; Antwort "Nein"
endif
end
Hab noch einiges mehr ausgebessert. So brauchste Button gar nicht umstellen, wenn dus nimmer brauchst. Und du hasts so gemacht, dass die Messagebox nur erscheint, wenn Button kleiner als -1 ist.
 
  • Like
Reaktionen: pooliebe
scn Name
short doonce
short doonce2

begin OnActivate
if ( IsActionRef Player == 1 ) && ( doonce != 1 )
PlaySound SoundID
Set doonce to 1
endif
end

short Button

begin OnEquip Player

if doonce2 != 1
if Player.GetFactionRank FactionID < 0
MessageBox "Wollt Ihr Euch XY anschließen?", "Ja", "Nein"
set doonce2 to 1
endif
endif
end

begin GameMode

Set Button to GetButtonPressed
if Button > -1
if Button == 0 ; Antwort "Ja"
Player.SetFactionRank FactionID 0
Set Button to -1
elseif Button == 1 ; Antwort "Nein"
Set Button to -1
endif
endif

end

probiers mal so
 
Zuletzt bearbeitet:
  • Like
Reaktionen: pooliebe