Construction Set Skriptthread zum Construction Set

noch eine frage.

ich möchte einen Trank machen der denn der es trinkt zum einschlafen bringen. Jezt weiß ich nicht was das für ein script sein muss und wo ich ihn einfügen muss. Brauche dringend hilfe!
 
Ich denke nicht, dass es möglich ist, den Spieler zum Schlafen zu zwingen, nachdem er den Trank getrunken hat. Ein Schlaftrank ist also nicht möglich.

Du kannst es höchstens so machen, falls es eine Quest ist, die im Schlaf losgehen soll, dass beim nächsten Schlafen nach Einnahme des Tranks was passiert.

Das Schlafmenu kannst du nicht aufrufen. Du kannst höchstens noch eine Messagebox aufrufen, in der ein Text ala "Ich bin in einen tiefen Schlaf gefallen, nachdem ich den Trank getrunken habe" und zusätzlich die Uhrzeit im Spiel hochsetzen. Das kommt dem vermutlich noch am nähesten.
 
gibt es auch die möglichkeit einfach auf den boden zu sinken. also Ausdauer -1 zu machen? Dann würde man ja theoretisch auch schlafen

EDIT: so das man das schlafensmenü auch überspringen kann
 
Zuletzt bearbeitet:
Afaik gibt es keinen Skriptbefehl, der ein bestimmtes Menü aufrufen lässt (nur Rassen-, Klassen- und Sternzeichenmenü). Wenn der Spieler die Wahl haben darf, wie lange der Schlaf dauert, könntest du per Skript ein x-beliebiges Bett aktivieren, sodass der Spieler dann in das normale Menü kommt, allerdings kann er das dann auch abbrechen...
Ansonsten könntest du einfach die "GameHour" um die entsprechende Zeit erhöhen, wodurch der Spieler den Effekt bekommt, geschlafen zu haben, allerdings ohne Ladebildschirm und Speichern etc. Ich würde dann noch eine Messagebox zur Information des Geschehens anzeigen lassen... Das Skript sähe dann in etwa so aus...
Code:
scn name

short init

Begin onEquip
 if init == 0
  set init to 1
 endif
end

Begin GameMode
 if init == 1
  set init to 2
  set GameHour to GameHour + x
  messagebox "Ihr habt x Stunden geschlafen."
 endif
end
 
ich wollte egtl. das sowieso einfach alles umgehen einfach nur das dder Player sich da für euin aar stunden auf dem boden rumliegen sieht. Oder andere NPC die es trinken.
 
Hm, welchen Skript könnte man nehmen, wenn der Spieler einen Teleportstein haben soll??
Ich stelle mir das ungefähr so vor: Spieler benutzt Teleportstein-Schnellreise zu MapMarker XY
 
Es mag vielleicht klappen, aber du kannst nicht steuern, wie lange der Spieler auf dem Boden liegen bleibt... Manche Spieler haben Ausdauertränke parat oder Wiederherstellungszauber.
 
Ich brauche auch mal wieder etwas Hilfe. :)

Ich versuche vergeblich ein Timerskript zusammenzustellen. :(

Code:
begin GameMode
	if MGP00.getdead && MGP01.getdead && MGP02.getdead
		player.SetStage MFB00 20
		Set timer to 7
		Set Act to 1
	endif
end

Begin GameMode
	If Act == 1
		Set Timer to Timer - GetSecondsPassed
				If Timer <= 4
				MFBICShip00.disable
				MFBICShip01.disable
				MFBICShip02.disable
				MFBICShip03.disable
				if Timer <= 0
					Player.SetStage MFB00 25
				Endif
			EndIf
	EndIf
End

Sobald der Timer bei ist 4 sollen die 4 Teile per disabel verschwinden und bei 0 soll die Quest weitergeschalten werden.
Leider werden die 4 Teile sofort nach erfüllen der Vorraussetzung per disable entfernt und nicht erst nach 4 Sekunden und die Quest wird einfach nicht weitergeschalten.

Mfg Master of Worlds
 
ich würde das
if timer == 4
...
if timer == 0
...

machen, sonst passierts mehrfach, und ich würd act auf 2 setzen am Ende, damit das Script nicht andauernd wieder auslöst, und ich würde auch das oben geschriebene in einen Extra GameMode block packen.

edit: aber KA obs hilft, timer sind nicht so mein Gebiet^^
 
  • Like
Reaktionen: Master of Worlds
Bei einem timer eine genaue Abfrage, also mit ==, zu machen, ist nicht so gut. Kann passieren, dass die Stelle durchlaufen wird, ohne das der entsprechende Teil ausgelöst wird.

Zwei mal begin GameMode ist übrigens überflüssig. Das wird nicht anders behandelt als wenn man das nur einmal schreibt.

Probiers mal so:
Code:
begin GameMode
	if (MGP00.getdead == 1) && (MGP01.getdead == 1) && (MGP02.getdead == 1) && (Act == 0)
	    player.SetStage MFB00 20
	    Set timer to 7
	    set Act to 1
	endif

	If (Act == 1)
	    Set Timer to Timer - GetSecondsPassed
            set Act to 2
        endif
	
        If (Act == 2) && (Timer < 5) && (Timer > 3)
	     MFBICShip00.disable
 	     MFBICShip01.disable
             MFBICShip02.disable
	     MFBICShip03.disable
	elseif (Timer <= 0)
	     Player.SetStage MFB00 25
             set Act to 3
	endif
End
 
  • Like
Reaktionen: Master of Worlds
Jetzt wird nichteinmal mehr die Quest auf 20 gestellt :(
Also muss es jetzt am Anfang liegen.

Code:
begin GameMode
	if (MGP00.getdead == 1) && (MGP01.getdead == 1) && (MGP02.getdead == 1) && (Act == 0)
	    player.SetStage MFB00 20
	    Set timer to 7
	    set Act to 1
	endif

Mfg Master of Worlds
 
ich meinte das mit zweiter GameMOde Block ja genau so wie dus gemacht hast Knochenkeule. Hab mich vielleicht etwas blöd ausgedrückt.
 
Weil da noch einiges nicht stimmt...
Code:
begin GameMode

if timer >= 0
	set timer to timer - getsecondspassed
endif

if (MGP00.getdead) && (MGP01.getdead) && (MGP02.getdead) && (Act == 0)
	SetStage MFB00 20
	Set timer to 7
	set Act to 1
endif

If Act && timer <= 4
	MFBICShip00.disable
	MFBICShip01.disable
	MFBICShip02.disable
	MFBICShip03.disable
elseif Act && Timer <= 0
	set Act to 2
	SetStage MFB00 25
endif
End
 
Wie kann ich denn das Timerscript auf meinen Fall anwenden? Wollte nach dem Ablauf eines Timers eine Lampe ausschalten. Der Timer soll beginnen, sobald man einen Raum betritt.