Construction Set finde scriptfehler nicht

was ist daran falsch?
bitte nicht so viel kretisieren ich kann nicht mal mit tuto. wirklich scripten.


der fehler ist irgent wo hier (begin onadd SCTT player)
das objekt mit der ID Sctt existirt

der script ist ja nur ein test :roll:


scn SCTTscript

short SCTT

begin onadd SCTT player

set SCTT to getbuttonpressed

if SCTT >= 0

MessageBox "Frage?", " auswahl 1", auswahl 2"

elseif == 1
;Auswahl 1 A1
player.additem gold001 1000

elseif == 2
;Auswahl 2 A2
player.additem gold001 2000

endif

end
 
1.) Mag ja sein, dass das Objekt existiert, allerdings bringt das recht wenig. Mit OnAdd kannst du höchstens abfragen, wem/was der Gegenstand, auf dem das Script bzw. der Block liegt, hinzugefügt wird. es gilt also nur:

Begin OnAdd [Container/ActorRef]

2.) Die elseif-Abfragen sind fehlerhaft. In Worten heißt es im Moment so: "Oder wenn ... gleich 2 ist". Was soll also gleich 1 oder zwei sein?

3.) Du setzt erst die Variable gleich dem gedrückten Wert, bevor der Spieler überhaupt irgendwas drücken kann? Ô_o
Du kannst hier die Messagebox öffnen, aber die Abfrage, welchen Wert die Variable annimmt (bzw. vorher überhaupt die Variable auf dne Wert setzen), muss in einen GameMode-Block (dazu am besten eine weitere Short Variable, die nach der Messagebox auf 1 gesetzt wird, damit die Variablenabfrage auch nur dann ausgeführt wird)

4.) Bei dem "getbuttonpressed" wird von 0 an gezählt. D.h.: Wenn der Spieler die erste Möglichkeit drückt, ist die Variable == 0, bei der zweiten == 1, usw.

5.) Nachdem bei den jeweiligen Antwortmöglichkeiten getan wird, was getan werden soll, würde ich die Variable, die den Wert "GetButtonPressed" annimmt, zurück auf -1 stellen.



Da du ja gesagt hast, dass es ein Test ist, schreibe ich hier mal nicht das richtige Script hin, sondern lasse dich nach Möglichkeit selbst drauf kommmen ;)
 
Zuletzt bearbeitet:
???
ok ich lass es wieder alles mist:cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry::cry:
 
:eek: Wie oft hast du denn schon probiert, selbst ein funktionierendes Script zu schreiben?
Sind es schon so viele Versuche, dass es für dich keine Hoffnung gibt oder was? Das bezweifle ich ehrlich gesagt. Scripting scheint anfangs ziemlich schwer zu sein, aber es ist schließlich noch kein Meister vom Himmel gefallen!

Mag sein, dass dieses Script noch nicht sonderlich gut ist, aber wie sollte es das auch werden, wenn du sofort nach dem ersten Versuch dafür aufgibst? Wenn das Gildur, Low Post oder die vielen anderen hilfsbereiten leute hier getan hätten, glaubst du, dass sie das dann jetzt könnten?
Es ist wohl nicht unnatürlich, Fehler zu machen (Bei komplexeren Scripts ist es bie mir eine wahre seltenheit, dass es beim ersten Anlauf funktioniert), aber die sind dazu da, dass man aus ihnen lernt!
Also mein Apell an dich: Gib nicht sofort auf, probiere es weiter, nur dann kannst du es auch lernen ;)


Und jetzt nochmal zu deinem Script, diesmal etwas genauer erklärt:

1.) Es geht nur OnAdd player, das Script müsste dann eben auf das Objekt, auf das es sich bezieht (in dem Fall SCTT)

2.) elseif SCTT == 0 (die Variable muss sowohl beim "if", als auch bei jedem "elseif" genannt werden)

3.) & 4.) & 5.)
Code:
short active

OnAdd
messagebox [...]
set active to 1
end

Begin GameMode
if active == 1
set SCTT to GetButtonPressed
set active to 2
endif

if (SCTT == 0) && (active == 2) ; fragt immer ab, dass es auch wirklich etwas machen soll
[...]
set active to 0
set SCTT to -1
elseif (SCTT == 1) && (active == 2)
[...]
;das selbe wie zuvor
endif
end