Construction Set Skriptthread zum Construction Set

Meine Idee wäre folgende:
Das "set button to GetButtonPressed" bezieht sich auf den gesamten MenuMode-Block. Das Ok von der zweiten MessageBox wird auch zu der Schleife gezählt und die Variable "button" wird auf "0" gesetzt, da Ok ja der erste Button ist. Deswegen wird der ganze Block noch einmal ausgeführt und wiederholt sich unendlich oft.

Vielleicht solltest du auch noch angeben, was passiert, wenn "Nein" gedrückt wird. So würde nein gedrückt und das Programm würde nichts machen.

Wieso ist denn "ok" auch button 0? Wäre es vielleicht eine Lösung "Ja" an zweite Stelle zu packen? Dann müsste man nämlich if button == 1?

Deine Idee klingt logisch, aber bei nein passiert halt einfach nichts...
 
hey kurze frage. Wie kann ich es einrichten das der Player ingame einen Xmarker, mit einem zauber an einer idividuellen stelle ,setzten kann?

Mfg
raist :)
 
Hallo
Und ich hätte auch eine Frage undzwar:
Ich möchte das beim aktivieren eines Gegenstandes (Buches) ein Menu kommt wo man wählen kann und bei der Quest Sages: "MB01 15" soll mal Wählen können <Nichts eingeben und weg legen> (Da man das benötigte noch nicht weiß. Doch wenn man die Stages: "MB02 10" erreicht hat soll eine weitere möglichkeit hinzu kommen: <Antwort>.
Das ähnelt dem Skript der Tür der Dunklen Bruderschaft (DarkSanctuaryDoorScript) wo man erst eintreten kann mit dem richtigen Quest.
Code:
Scriptname DarkSanctuaryDoorScript
;pcb block added to purge cell buffers for update01

short UseDoor 
short Button 
short DoOnce

float timer
 
Begin Onload
	pcb
End

Begin OnActivate

if IsActionRef player == 1
	if DoOnce == 1
		Activate
		player.SCAOnactor
	elseif ( UseDoor == 0 )
		set UseDoor to 1
		set timer to 0
		DarkSanctuaryDoorRef.Say DarkDoorSpeak 1 DarkDoorSpeakNPC 
	endif

elseif IsActionRef TelaendrilRef == 1 || IsActionRef VicenteValtieriRef == 1 || IsActionRef Dark19Murderer1Ref == 1 || IsActionRef Dark19Murderer2Ref == 1  || IsActionRef Dark19Murderer3Ref == 1 || IsActionRef OcheevaRef == 1  
	Activate

endif



End



Begin GameMode

if ( UseDoor == 1 )
	set timer to timer + GetSecondsPassed

	if ( timer > 5.2 )
		set timer to 0
		set UseDoor to 2
		if Dark00General.SancDoorPass == 1
			MessageBox "Eine mysteriöse Stimme stellt eine Frage: Welche Farbe hat die Nacht?",  "<Nichts sagen und weggehen.>" "Sanguine, mein Bruder."
		else
			MessageBox "Eine mysteriöse Stimme stellt eine Frage: Welche Farbe hat die Nacht?", "<Nichts sagen und weggehen.>"
		endif
 	endif
elseif ( UseDoor == 2 )

	set Button to GetButtonPressed

	if ( Button == 1 )
		set UseDoor to 0
		player.SCAOnactor
		DarkSanctuaryDoorRef.Unlock
		DarkSanctuaryDoorRef.Activate  
		set DoOnce to 1
	elseif ( Button == 0 )
		set UseDoor to 0
	endif
endif	

 

 



End

Mfg Yves :)
 
Zuletzt bearbeitet:
Hallo
Und ich hätte auch eine Frage undzwar:
Ich möchte das beim aktivieren eines Gegenstandes (Buches) ein Menu kommt wo man etwas wählen kann und bei der Quest Stage: "MB01 15" soll man Wählen können <Nichts eingeben und weg legen> (Da man das benötigte noch nicht weiß.) Doch wenn man die Stage: "MB02 10" erreicht hat soll eine weitere möglichkeit hinzu kommen: <Antwort>.
Das ähnelt dem Skript der Tür der Dunklen Bruderschaft (DarkSanctuaryDoorScript) wo man erst eintreten kann mit dem richtigen Quest.


Mfg Yves :)
Bei der dunklen Bruderschaft ist das glaube ich aber in einem Quest gelöst. Dort ist einfach der Quest von Anfang an offen, nur da noch kein Questeintrag vorhanden ist, sieht man es nicht. Und wenn man mit Lucien Lachance gesprochen hat und den einen umgebracht hat, dann steigt die Queststage auf ein Level, indem man bereits die Antwort geben kann.
 
Zuletzt bearbeitet:
Hi ich bin neu hier und hab da sone Frage:

Hat einer von euch Ahnung davon wie ich über ein angehängtes Skript im Dialog einer Gilde beitreten kann? ( also zb: NPC: Hallo! Möchtest du unserer Gilde beitreten?
Player: Ja/Nein)
Ich scheck das lämlich irgendwie net:cry:

Wär schön wenn einer etwas wüsste/ oder einen Link für ein Tutorial;)
 
@jimmartens
Okee und wie kriege ich das jetz hin dass das mit dem Buch geht und die entsprechende Antwort hinzugefügt wird wenn ich einen bestimmte Quest Stages reeicht habe. (Bin auf dem Skriptgebiet sehr unerfahren...)

Mfg Yves
 
Ich würde es mal so probieren:
Code:
scn <scriptname>

short button
short doonce
short stage

Begin OnActivate
if doonce == 0
set stage to GetStage <questname>
  if stage < 20
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>"
  elseif stage >= 20
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>" "<Antwort>"
  endif
  
  set button to GetButtonPressed
  if button == 1
    <Das was passieren soll, wenn man auf die Antwort klickt.>
    set doonce to 1
  endif
endif
end

Somit würde wenn Stage 20 des Quests erreicht wird, die Antwort erscheinen. Das was ich noch wissen müsste, wäre was nach dem drücken der Antwort passieren soll.
 
Zuletzt bearbeitet:
Wie gessagt:
Bei der Antwort: "Nichts machen und weglegen." soll das Menu sich schließen und dann bei der Antwort soll das Buch Aktiviert werden.
Und nachdem man aktiviert hat soll man nie wieder gefragt werden.

Mfg Yves
 
Gut das wäre dann der überarbeitete Skript:
Code:
scn <scriptname>

short button
short doonce
short stage

Begin OnActivate
if doonce == 0
set stage to GetStage <questname>
  if stage < 20
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>"
  elseif stage >= 20
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>" "<Antwort>"
  endif
  
  set button to GetButtonPressed
  if button == 1
    set doonce to 1
    activate
  endif
endif
end
 
Also wäre das dann so:
Code:
scn <scriptname>

short button
short doonce
short stage

Begin OnActivate
if doonce == 0
set stage to GetStage <FNHQ02 50>
  if stage < FNHQ03 5
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>"
  elseif stage >= FNHQ03 5
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>" "<Antwort>"
  endif
  
  set button to GetButtonPressed
  if button == 1
    set doonce to 1
    activate
  endif
endif
end

Und habe noch eine andere variante bekommen:

Code:
scn FNBookTributDerErde
short button
short level

begin OnActivate
if (player.GetStage FNHQ03 < 5) && (level == 0)
   Messagebox "Verschlüsselung", "Nichts eingeben und weglegen"
   set level to 1
if (player.GetStage FNHQ03 >= 5) && (level == 0)
   Messagebox "Verschlüsselung", "Nichts eingeben und weglegen", "Necromanti"
   set level to 2
endif
endif
end   


begin GameMode

set button to GetButtonPressed

if (level == 1) && (button == 0)
   return
   set level to 0
endif
   
if (level == 2) && (button == 0)
   return
   set level to 0
elseif (level == 2) && (button == 1)   
   activate
   set level to 0
endif   
end

Könnte die auch Funktionieren, da ich momentan nichts testen kann...

Mfg Yves
 
Also wäre das dann so:
Code:
scn <scriptname>

short button
short doonce
short stage

Begin OnActivate
if doonce == 0
set stage to GetStage FNHQ02
  if stage < 5
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>"
  elseif stage >= 5
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>" "<Antwort>"
  endif
  
  set button to GetButtonPressed
  if button == 1
    set doonce to 1
    activate
  endif
endif
end
Habe es mal korrigiert.
 
Aber eine frage wenn das jetz so bleibt:
Code:
scn <scriptname>

short button
short doonce
short stage

Begin OnActivate
if doonce == 0
set stage to GetStage FNHQ02
  if stage < 5
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>"
  elseif stage >= 5
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>" "<Antwort>"
  endif
  
  set button to GetButtonPressed
  if button == 1
    set doonce to 1
    activate
  endif
endif
Kommt das bei Stages 5 nicht aber bei allem was über 5 ist, doch das soll aber erst noch später kommen in einem ganz anderem Quest, also "FNHQ03 5".

Mfg yves
 
sSchreibe es doch einfach um:
Code:
scn <scriptname>

short button
short doonce

Begin OnActivate
if doonce == 0
  if GetStage FNHQ02 == 5
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>"
  elseif FNHQ03 == 5
    set doonce to 1
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>" "<Antwort>"
  endif
else
activate
endif
end

Begin GameMode
  set button to GetButtonPressed
  if button == 1 && doonce == 1
    set doonce to 2
    activate
  else
    set doonce to 0
  endif
End
 
  • Like
Reaktionen: robinH und Yves
sSchreibe es doch einfach um:
Code:
scn <scriptname>

short button
short doonce

Begin OnActivate
if doonce == 0
  if GetStage FNHQ02 == 5
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>"
  elseif FNHQ03 == 5
    set doonce to 1
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>" "<Antwort>"
  endif
else
activate
endif
end

Begin GameMode
  set button to GetButtonPressed
  if button == 1 && doonce == 1
    set doonce to 2
    activate
  else
    set doonce to 0
  endif
End
Besser aber eine Sache fehlt noch.:-D
Code:
scn <scriptname>

short button
short doonce

Begin OnActivate
if doonce == 0
  if GetStage FNHQ02 == 5
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>"
  elseif [COLOR=Red]GetStage[/COLOR] FNHQ03 == 5
    set doonce to 1
    MessageBox "Was wollt Ihr machen?", "<Nichts machen und weglegen.>" "<Antwort>"
  endif
else
activate
endif
end

Begin GameMode
  set button to GetButtonPressed
  if button == 1 && doonce == 1
    set doonce to 2
    activate
  else
    set doonce to 0
  endif
End
 
Also die Meldung kommt immer wieder wenn man: <Nichts machen und weglegen.> und wenn man dann einmal <Antwort.> gedrückt hat kommt das Menu nie wieder?