Construction Set Skriptthread zum Construction Set

uuups übersehen, tut mir leid...:oops: ich sollte lieber ins bett gehen und das ganze dann morgen in die tat umsetzen :-D gute nacht :)

hauptsache das skript wird dann auch wieder beendet wenn die quest vorbei is, das wär s beste :)
 
Gute Nacht :D
meinst du wegen SPeicherverbrauch oder warum? Das weis ich nicht...aber die Methode von DarkRUler ist sicherlich schonender. Und ich glaube sogar Quest Scripts laufen nur, solange die QUest läuft. Weis ich aber ned sicher.
 
@Diarrhoe

OK, damit kann ich schon was anfangen. Also als erstes wird die magische Wand als Activator erstellt. Dann braucht das Skript noch eine Variable und wird auf den magischen Effekt gelegt. Soweit so klar. Aber wie sieht das Skript endgültig aus? Hier musst du mir helfen, allein kann ich das nicht.

PHP:
scn name 

short state

Begin ScriptEffectStart 
if state == 0
set state to 1
else
if state == 1
set state to 2
else
if state == 2
set state to 3

if getIsReference <Referenz-der-Mauer> 
  disable 
endif
endif
endif 
endif
end
 
Eine Variable im Magie-Effekt wird nicht funktionieren, weil diese immer wieder zurückgesetzt wird, bzw. von Effekt-Referenz zu Effekt-Referenz (ich nenn es mal so) verschieden ist. Du brauchst also entweder eine Global, eine Quest-Variable oder ein Variable im Skript einer beliebigen persistenten Referenz. Ich würde dabei eine Quest-Variable nehmen. Das Skript sähe dann so aus:
PHP:
scn name

Begin ScriptEffectStart

if getIsReference <Ref-der-Mauer>
  set <Variable> to ( <Variable> + 1 )
  if <Variable> == 3
    disable
  endif
endif

end
 
Oh Mann, warum muss bei mir immer alles so kompliziert sein....
Schau mal, mein Skript-Feld ist grau unterlegt, kann das Skript also dem magischen Effekt nicht zufügen. Was nun?

 
Schätzchen, du kannst so viel grummeln wie du willst, aber Variable sind für mich böhmische Dörfer.......:huh:
Hab echt keinen Plan, was da hin kommt!:lol:
 
Ist eigentlich super einfach.
Mach einen Questskript und schreibe vor allen darin vorkommenden Blocks (wie z.B. GameMode) Short Variable.
Merke dir die QuestID und den Variablennamen! Wichtig: Der Questskript muss im Questfenster mit der Quest verbunden sein.

Dann muss der Quest für den Zauber so aussehen.
PHP:
scn name

Begin ScriptEffectStart

if getIsReference <Ref-der-Mauer>
  set QuestID.Variable to ( QuestID.Variable + 1 )
  if QuestID.Variable == 3
    disable
  endif
endif

end
 
  • Like
Reaktionen: Arielle 1000
Vielen Dank DarkRuler,

dein Skript funktioniert sehr gut. Anhand deiner Erklärung konnte ich auch begreifen, was überhaupt gemeint ist. Der Begriff Variable ist demnach nur ein Platzhalter für einen Begriff, den ich mir selber ausdenken und im Questskript einsetzen muss. Diesen gleichen Begriff setze ich dann auch im Skript für das Item/Trigger oder was auch immer.
Wie auch immer, es funktioniert nun tadellos.

Aber hier noch eine Frage

PHP:
scn AWDExitPortal

short trigger
short doonce
Short button

begin ontrigger player

if doonce==0
if IsActionRef player == 1
      messagebox"Wollt Ihr nun in die Welt der Menschen zurückkehren?" "Ja." "Nein, noch nicht."
set doonce to 1
endif
endif
end

begin GameMode

set button to getbuttonpressed

if button == 0
	player.moveto BoethiaShrineMarker
elseif button == 1
	message "Dann kehrt zurück, wenn Ihr bereit seid."
endif

end


Dieses Skript liegt auf einem Trigger, der mich zurück nach Cyrodiil teleportieren soll. Die "Ja" - Abfrage funktioniert schon mal recht gut.
Bei der "Nein"-Abfrage habe ich das Problem, dass die Messagebox nicht mehr erscheint, wenn ich wieder durch den Trigger laufe. So hat der Player keine Gelegenheit mehr, sich zurückzuteleportieren. Was fehlt noch im Skript?
 
Du musst hier

Code:
[COLOR=#000000][COLOR=#007700]elseif [/COLOR][COLOR=#0000BB]button [/COLOR][COLOR=#007700]== [/COLOR][COLOR=#0000BB]1 
    message [/COLOR][COLOR=#DD0000]"Dann kehrt zurück, wenn Ihr bereit seid." 
[/COLOR][COLOR=#007700]endif [/COLOR][/COLOR]
noch ein
Code:
set doonce to 0
im If-Block einbauen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Arielle 1000
Ja, vielen Dank Kahmul, das hat funktioniert. Leider hab ich beim Ingametesten ein Problem festgestellt, und zwar folgendes:

der Player befindet sich ja im Trigger, wenn die Ja/Nein-Abfrage läuft. Klickt er nein an, befindet er sich immer noch im Trigger, und die Messagebox wird immer und immer wieder angezeigt, und er kommt aus dem Trigger nicht mehr raus. Da muss eine andere Lösung gefunden werden. Was kannst du mir raten?
 
Man könnte einen Timer einbauen, der erst nach X Sekunden die Nachricht wieder erscheinen lässt.
Dafür ersetzt Du den GameMode-Block einfach mit dem hier:

PHP:
Begin GameMode

Float Timer

if(doonce == 2)
  set timer to timer + getsecondspassed
 if(timer >= 5)
   set doonce to 0
   set timer to 0
  return
 endif
endif

set button to getbuttonpressed

if button == 0
    player.moveto BoethiaShrineMarker
elseif button == 1
    message "Dann kehrt zurück, wenn Ihr bereit seid."
    set doonce to 2
endif

end
Wenn Du die Sekunden ändern willst, ändere einfach diese Zeile:

PHP:
 if(timer >= 5)
Die 5 steht für die Sekunden.
 
Zuletzt bearbeitet:
Hmm, irgendwie passiert gar nichts nach 5 Sekunden. Der Player bleibt an diesem Ort gefangen, weil die Messagebox nicht mehr erscheint.
Aber wenigstens bleibt er nicht mehr im Trigger stecken, das ist doch schon mal eine gute Nachricht.:lol:

Bist du denn ganz sicher, dass es in der vorletzten Zeile vor dem End "set doonce to 2" heißen muss? An dieser Stelle muss doch die ganze Sache zurückgesetzt werden, weil die komplette Messagebox nochmal neu erscheinen muss.