-
Scriptfrage
Hallo Leute,
Code:
ScriptName PaperHideOutScript
float button
Begin OnActivate
MessageBox "Wieviel Gold wollt ihr deponieren?", "100", "500", "1000", "2000", "5000", "10000", "50000"
set button to GetButtonPressed
if button == 0
Player.RemoveItem 0000000f 100
ChestHideoutGold.additem 0000000f 100
endif
End
weiß einer von euch, was hier dran nicht stimmt?
Folgenes Problem:
Das Script soll den Spieler per MessageBox fragen, wieviel Gold er ablegen will.
Das soll er aber später auch noch wiederbekommen können, denn der gleiche Betrag soll in einer Truhe abgelegt werden.
Daher die Zeilen
Code:
if button == 0
Player.RemoveItem 0000000f 100
ChestHideoutGold.additem 0000000f 100
endif
Nur meckert das CS bei der Reference ChestHideoutGold herum, das es diese nicht gäbe.
Hoffe ihr wisst Rat, ich weiß nämlich keinen:confused: (wie so oft)
Gruß
LP
-
Ganz spontan würde ich mal darauf tippen, das es in deinem Plugin keine Truhe gibt, deren Referenzbezeichnung "ChestHideoutGold" ist.
-
Das ist es ja geradeö.
Es gibt definitiv eine solche Truhe, weil ich eben diese erstellt habe.
Deshalb versteh ich auch nicht was das CS da für Probleme hat.http://www.multimediaxis.de/images/s...1/nixweiss.gif
Gru0
LP
-
Hast Du die Referenz auch auf persist gesetzt?
-
Hm was heißt den persist, und wo stellt man das genau ein?
-
Benutzt du die Referenz, und nicht die ItemID? Das sind unterschiedliche Sachen!
Nebenbei wird das Script ohnehin nicht funktionieren.
1. In Scripts EditorIDs, nicht FormIDs verwenden!
2. Soweit ich Messageboxes kenne, wirst du mindestens einen Frame brauchen, um den Knopfdruck zu erfassen. Ich weiß nicht, ob der onActivate Block dann überhaupt noch läuft.
-
Und wo kann man dann die editor id finden?
Den Frame müsste man doch durch MenuMode bekommen mönnen oder?
-
1. neue Kiste erstellen.
2. Kiste im Worldspace setzen (ist dann eine Referenz des Editiorobjektes)
3. Kiste im renderfenster doppelt anklicken.
http://www.mwspace.de/TES/Oblivion/Z...nablage01x.jpg
4. Den selbsterstellten Referenznamen in deinem Script nutzen, persistent anhakeln
5. Script auf das Editorobjekt binden
-
Code:
ScriptName PaperHideOutScript
float button
Begin OnActivate
MenuMode
MessageBox "Wieviel Gold wollt ihr deponieren?", "100", "500", "1000", "2000", "5000", "10000", "50000"
set button to GetButtonPressed
if button == 0
Player.RemoveItem 0000000f 100
ChestHideoutGoldEditor.AddItem 0000000f 100
Message "100 Gold deponiert"
endif
End
So sieht das Script jetzt aus.
Das Cs meckert jetzt auch nicht, d. h. es compiliert das Script.
Trotz alledem passiert nichts wenn ich dann im Spiel auf den Button "100" drücke.
Die andern Buttons habe ich jetzt noch nicht gescripted, ich will erst einmal das der 1. funktioniert.
Gruß
LP
-
Wurde auch schon von BG2408 gesagt.
Scripte können mit ID-Nummern wie 0000000f etc nichts anfangen. Setze da den Editorname ein. Glaube das war Gold001.
-
Außerdem würde ich das Menumode als eigenen Begin-Block verwenden. Ob das so überhaupt funktionieren kann weiß ich gar nicht.
Zusätzlich würde ich noch eine Abfrage einbauen, ob der Spieler überhaupt genug Gold hat. Dafür gibt's die Funktion GetGold (mit einem If-Block überprüfen).
bist du dir sicher, dass das ganze im Menumode und nicht im Gamemode abläuft?
btw: es reicht button als short zu definieren, GetButtonPressed gibt immer ganze Zahlenwerte heraus.
Code:
ScriptName PaperHideOutScript
short button
Begin OnActivate
MessageBox "Wieviel Gold wollt ihr deponieren?", "100", "500", "1000", "2000", "5000", "10000", "50000"
End
Begin Menumode
set button to GetButtonPressed
if button == 0 && Player.GetGold >= 100
Player.RemoveItem Gold001 100
ChestHideoutGoldEditor.AddItem Gold001 100
Message "100 Gold deponiert"
elseif button == 1 && Player.GetGold >= 500
Player.RemoveItem Gold001 500
ChestHideoutGoldEditor.AddItem Gold001 500
Message "500 Gold deponiert"
endif
End
Begin Gamemode
set button to GetButtonPressed
if button == 0 && Player.GetGold >= 100
Player.RemoveItem Gold001 100
ChestHideoutGoldEditor.AddItem Gold001 100
Message "100 Gold deponiert"
elseif button == 1 && Player.GetGold >= 500
Player.RemoveItem Gold001 500
ChestHideoutGoldEditor.AddItem Gold001 500
Message "500 Gold deponiert"
endif
End
-
Âlso, Script läuft http://www.multimediaxis.de/images/s.../old/sm_12.gif http://www.multimediaxis.de/images/s.../old/sm_12.gif .
Falls es jmd interressieren sollte:
Code:
ScriptName PaperHideOutScript
short button
Begin OnActivate
MessageBox "Wieviel Gold wollt ihr deponieren?", "10", "100", "500", "1000", "10000", "100000"
End
Begin Menumode
set button to GetButtonPressed
if button == 0 && Player.GetGold >= 10
Player.RemoveItem Gold001 10
ChestHideoutGoldEditor.AddItem Gold001 10
Message "10 Gold deponiert.", 2
elseif button == 1 && Player.GetGold >= 100
Player.RemoveItem Gold001 100
ChestHideoutGoldEditor.AddItem Gold001 100
Message "100 Gold deponiert.", 2
elseif button == 2 && Player.GetGold >= 500
Player.RemoveItem Gold001 500
ChestHideoutGoldEditor.AddItem Gold001 500
Message "500 Gold deponiert.", 2
elseif button == 3 && Player.GetGold >= 1000
Player.RemoveItem Gold001 1000
ChestHideoutGoldEditor.AddItem Gold001 1000
Message "1000 Gold deponiert.", 2
elseif button == 4 && Player.GetGold >= 10000
Player.RemoveItem Gold001 10000
ChestHideoutGoldEditor.Additem Gold001 10000
Message "10000 Gold deponiert.", 2
elseif button == 5 && Player.GetGold >= 100000
Player.RemoveItem Gold001 100000
ChestHideoutGoldEditor.AddItem Gold001 100000
Message "100000 Gold deponiert.", 2
endif
End
Begin Gamemode
set button to GetButtonPressed
if button == 0 && Player.GetGold >=10
Player.RemoveItem Gold001 10
ChestHideoutGoldEditor.Additem Gold001 10
Message "10 Gold deponiert.", 2
elseif button == 1 && Player.GetGold >= 100
Player.RemoveItem Gold001 100
ChestHideoutGoldEditor.AddItem Gold001 100
Message "100 Gold deponiert.", 2
elseif button == 2 && Player.GetGold >= 500
Player.RemoveItem Gold001 500
ChestHideoutGoldEditor.AddItem Gold001 500
Message "500 Gold deponiert.", 2
elseif button == 3 && Player.GetGold >= 1000
Player.RemoveItem Gold001 1000
ChestHideoutGoldEditor.AddItem Gold001 1000
Message "1000 Gold deponiert.", 2
elseif button == 4 && Player.GetGold >= 10000
Player.RemoveItem Gold001 10000
ChestHideoutGoldEditor.AddItem Gold001 10000
Message "10000 Gold deponiert.", 2
elseif button == 5 && Player.GetGold >= 100000
Player.RemoveItem Gold001 100000
ChestHideoutGoldEditor.AddItem Gold001 100000
Message "100000 Gold deponiert.", 2
endif
End
das ist die Endversion, die läuft.
Vielen Dank
LP