Construction Set Skriptthread zum Construction Set

Ja ich weiß auch nicht was der Timer soll:?
Damit das Script durch den Stuhl aktiviert wird müsste es aber auf dem Stuhl liegen. Und dann müsste man die REF vom Boot bei der X-Achsen-Verschiebung davorschreiben. Oder man ändert das "OnActivate" in "Gamemode"
 
  • Like
Reaktionen: MadHatter16
Es tut mir wirklich Leid, wenn ich nocheinmal so blöd frage (Und ich komme mir wirklich doof vor), aber wie genau sollte es aussehen, damit es hinhaut?
Nicht, damit ich euch mit noch mehr falschen Versionen plage..

(Wenn es möglich ist, so zeigt mir am besten auf, wo ich etwas ersetzen muss - Normalerweise sollte ich das von selbst erkennen, aber man weiß ja nie..)

Ich nerve wirklich nur ungern mit solchen Problemchen.. :/

Naja.

Mit freundlichen Grüßen,

MadHatter :)
 
HTML:
 SCN 000DLvDBootBewegung
Float XAchsePosition
Float XAchse
Short State

Begin GameMode
if ( State == 1 )
DisablePlayerControls
Set State to 2
elseif ( State == 2 )
  if (GetDistance, STOP-MARKER-REF > 200 )
  Set XAchsePosition to GetPos X 
  Set XAchse to XachsePosition +5
  SetPos X Xachse
  elseif (GetDistance, STOP-MARKER-REF <= 200 )
   EnablePlayerControls
   Set State to 0
endif
End

Code:
scn StuhlScript

begin onactivate
activate
set BOOT-REF.state to 1
end
Man korrigiere mich, sofern Fehler drin sind.
 
  • Like
Reaktionen: MadHatter16
Guten Tag,

ich habe ein kleines Problem, sowohl scripttechnisch als auch logisch.

Ich habe über die Karte einige Triggerboxen verteilt, acht an der Zahl. Jede Triggerbox representiert einen Buchstaben. Wenn man durch eine Triggerbox läuft, wird eine Quest um eine Stage weitergebracht.

Wenn alle Buchstaben eingesammelt wurden, soll eine extra Nachricht ausgegeben werden.

Praktisch :


Buchstabe A -> setze Quest auf 10
Buchstabe B -> setze Quest auf 20
Buchstabe C -> setze Quest auf 30
...
Buchstabe H -> setze Quest auf 80

Alle Buchstaben eingesammelt -> Nachricht


Gruss rojep
 
Ich würds so machen :

Mach mehrere TriggerScripts und einen Questscript

Questscript
PHP:
scn ...

short VarFuerA
short VarFuerB
...
short VarFuerH

Begin GameMode

If (VarFuerA == 1) && (VarFuerB == 1) && ... && (VarFuerH == 1)
 SetStage QuestID Stage
Endif
End

Einzelne TriggerScripts, wovon du für jeden Buchstaben einen machen musst.
PHP:
scn

Short DoOnce

Begin onTrigger player

If (DoOnce != 0)
 Return
Else
 Set QuestID.VarFuerA To 1
 Set DoOnce To 1
Endif
End

=====
Und ich hätt auch ne Frage.
In Adash hat LordKain es iwie fertiggebracht, dass eine Tür einen Geistershader besitzt. Wie geht das denn?
Ich hab jetzt PMS EffectID auf einen GameMode-Block einer Tür gelegt. Ingame sieht sie stinknormal aus.
 
Guten Tag,

das hört sich ja ganz gut an, wenn ich aber das Script für die Triggerbox zu Spriechern versuche, bekomme ich folgende Fehlermeldung:

PHP:
Unknown variable 'blablabla.VarFuerA'

Gruss rojep
 
Folgender Script auf die Objekte:

Code:
scn Scriptname

short queststage

Begin OnTrigger
if queststage == 0
    set queststage to getstage [QuestID] + 10
    setStage [QuestID] queststage
endif
End
Du musst nur [QuestID] durch eben deine QuestID ersetzen(die brackets auch, also [] sollte im Script nicht mehr da stehen). Bei dem Script ist es übrigens egal, in welcher Reihenfolge man diese einsammelt, ich bin davon ausgegangen, dass es so gewollt war. Wenn nicht einfach schreien. :lol:

Grüße,

Gildur
 
Da meine Skriptfrage anscheinend etwas untergegangen ist, poste ich sie einfach nochmal:

Bei dem Skript wird zwar auch in Cells die "Default" als Musiktyp haben, Musik abgespielt, nur leider nicht die richtige.

Code:
Scn AAAMusikWürfelScript

Short Choosing
short button

Begin onActivate player
     if Choosing == 0
          set Choosing to -1
     endif
end

Begin onEquip player
     if Choosing == 0
          set Choosing to -1
     endif
end

Begin gameMode
     If (Choosing == -1)
          MessageBox "Was möchtet ihr tun?", "Nehmen", "Musik auswählen", "Fertig"
          set Choosing to 1
          return
     elseif (Choosing == 1)
          set button to GetButtonPressed
          if (button== -1)
               return
          elseif (button == 0)
               Activate
               Set Choosing to 0
          elseif (button == 1)
               Set Choosing to -2
          elseif (button == 2)
               Set Choosing to 0
          endif
     Endif

     If (Choosing == -2)
          MessageBox "Welche Musik möchtet ihr hören?", "Lied 1", "Lied 2", "Lied 3", "Lied 4", "Lied 5", "Zurück", "Abbrechen"
          set Choosing to 2
          return
     elseif (Choosing == 2)
          set button to GetButtonPressed
          if (button == -1)
               return
          elseif (button  == 5)
               Set Choosing to -1
          elseif (button == 6)
               Set Choosing to 0
          else
               StreamMusic random
               set Choosing to 3
               return
          endif
      elseif (Choosing == 3)
          if (button == 0)
               StreamMusic "Data\Music\Eydis\Lied_1.mp3"
          elseif (button  == 1)
               StreamMusic "Data\Music\Eydis\Lied_2.mp3"
          elseif (button == 2)
               StreamMusic "Data\Music\Eydis\Lied_3.mp3"
          elseif (button == 3)
               StreamMusic "Data\Music\Eydis\Lied_4.mp3"
          elseif (button == 4)
               StreamMusic "Data\Music\Eydis\Lied_5.mp3"
          endif
          set Choosing to 0
     Endif
End

Begin menuMode
     If (Choosing == -1)
          MessageBox "Was möchtet ihr tun?", "Ablegen", "Musik auswählen", "Fertig"
          set Choosing to 1
          return
     elseif (Choosing == 1)
          set button to GetButtonPressed
          if (button== -1)
               return
          elseif (button == 0)
               Set Choosing to 0
               DropMe
          elseif (button == 1)
               Set Choosing to -2
          elseif (button == 2)
               Set Choosing to 0
          endif
     Endif

     If (Choosing == -2)
          MessageBox "Welche Musik möchtet ihr hören?", "Lied 1", "Lied 2", "Lied 3", "Lied 4", "Lied 5", "Zurück", "Abbrechen"
          set Choosing to 2
          return
     elseif (Choosing == 2)
          set button to GetButtonPressed
          if (button == -1)
               return
          elseif (button  == 5)
               Set Choosing to -1
          elseif (button == 6)
               Set Choosing to 0
          else
               StreamMusic random
               set Choosing to 3
               return
          endif
      elseif (Choosing == 3)
          if (button == 0)
               StreamMusic "Data\Music\Eydis\Lied_1.mp3"
          elseif (button  == 1)
               StreamMusic "Data\Music\Eydis\Lied_2.mp3"
          elseif (button == 2)
               StreamMusic "Data\Music\Eydis\Lied_3.mp3"
          elseif (button == 3)
               StreamMusic "Data\Music\Eydis\Lied_4.mp3"
          elseif (button == 4)
               StreamMusic "Data\Music\Eydis\Lied_5.mp3"
          endif
          set Choosing to 0
     Endif
End

Was müsste ich bei dem Skript ändern, damit die ausgewählten Lieder abgespielt werden? Ich vermute, dass der Teil mit Streammusic Random noch nicht so ganz funktioniert, was müsste ich dort ändern?

Liebe Grüße,
Eydis
 
Habe es jetzt mal selbst getestet und angepasst. Nach ca. einer halben Stunde kam ich auf einen grünen Zweig. Man muss einfach länger als einen Frame warten, 2 Sekunden klappen bei mir eigentlich immer. Außerdem habe ich noch ein paar Bedingungen eingebaut um den Script etwas "zuverlässiger" zu gestalten.
Code:
Scn AAAMusikWürfelScript

short Choosing
short button
float timer
short playerflag

Begin onActivate player
     if Choosing == 0
          set Choosing to -1
     endif
end

Begin onEquip player
     if Choosing == 0
          set Choosing to -1
     endif
end

Begin gameMode
     If (Choosing == -1)
		if getcontainer == player
			MessageBox "Was möchtet ihr tun?", "Ablegen", "Musik auswählen", "Fertig"
			set playerflag to 1
		else
          	MessageBox "Was möchtet ihr tun?", "Nehmen", "Musik auswählen", "Fertig"
			set playerflag to 0
		endif
          set Choosing to 1
          return
     elseif (Choosing == 1)
          set button to GetButtonPressed
          if (button== -1)
               return
          elseif (button == 0)
			if playerflag == 0
               	Activate
			else
				dropme
			endif
               Set Choosing to 0
          elseif (button == 1)
               Set Choosing to -2
          elseif (button == 2)
               Set Choosing to 0
          endif
     Endif

     If (Choosing == -2)
          MessageBox "Welche Musik möchtet ihr hören?", "Lied 1", "Lied 2", "Lied 3", "Lied 4", "Lied 5", "Zurück", "Abbrechen"
          set Choosing to 2
          return
     elseif (Choosing == 2)
          set button to GetButtonPressed
          if (button == -1)
               return
          elseif (button  == 5)
               Set Choosing to -1
          elseif (button == 6)
               Set Choosing to 0
          else
          	StreamMusic random
          	set Choosing to 3
			set timer to 2
			return
          endif
      elseif (Choosing == 3)
		if timer > 0
			set timer to timer - getsecondspassed
			return
		endif
          if (button == 0)
               StreamMusic "Data\Music\Eydis\Lied_1.mp3"
          elseif (button  == 1)
               StreamMusic "Data\Music\Eydis\Lied_2.mp3"
          elseif (button == 2)
               StreamMusic "Data\Music\Eydis\Lied_3.mp3"
          elseif (button == 3)
               StreamMusic "Data\Music\Eydis\Lied_4.mp3"
          elseif (button == 4)
               StreamMusic "Data\Music\Eydis\Lied_5.mp3"
          endif
          set Choosing to 0
     Endif
End

Begin menuMode
     If (Choosing == -1)
		if getcontainer == player
			MessageBox "Was möchtet ihr tun?", "Ablegen", "Musik auswählen", "Fertig"
			set playerflag to 1
		else
          	MessageBox "Was möchtet ihr tun?", "Nehmen", "Musik auswählen", "Fertig"
			set playerflag to 0
		endif
          set Choosing to 1
          return
     elseif (Choosing == 1)
          set button to GetButtonPressed
          if (button== -1)
               return
          elseif (button == 0)
			if playerflag == 0
               	Activate
			else
				dropme
			endif
               Set Choosing to 0
          elseif (button == 1)
               Set Choosing to -2
          elseif (button == 2)
               Set Choosing to 0
          endif
     Endif

     If (Choosing == -2)
          MessageBox "Welche Musik möchtet ihr hören?", "Lied 1", "Lied 2", "Lied 3", "Lied 4", "Lied 5", "Zurück", "Abbrechen"
          set Choosing to 2
          return
     elseif (Choosing == 2)
          set button to GetButtonPressed
          if (button == -1)
               return
          elseif (button  == 5)
               Set Choosing to -1
          elseif (button == 6)
               Set Choosing to 0
          else
          	StreamMusic random
          	set Choosing to 3
			set timer to 2
			return
          endif
      elseif (Choosing == 3)
		if timer > 0
			set timer to timer - getsecondspassed
			return
		endif
          if (button == 0)
               StreamMusic "Data\Music\Eydis\Lied_1.mp3"
          elseif (button  == 1)
               StreamMusic "Data\Music\Eydis\Lied_2.mp3"
          elseif (button == 2)
               StreamMusic "Data\Music\Eydis\Lied_3.mp3"
          elseif (button == 3)
               StreamMusic "Data\Music\Eydis\Lied_4.mp3"
          elseif (button == 4)
               StreamMusic "Data\Music\Eydis\Lied_5.mp3"
          endif
          set Choosing to 0
     Endif
End

Grüße,

Gildur
 
  • Like
Reaktionen: Eydis
Guten Tag,

@Gildur :

Das ist richtig, die Reihenfolge ist irrelevant.
Allerding hätte ich gerne zu jedem Buchstaben noch eine spezifische MessageBox, ala "Ihr habt den Buchstaben A gefunden !" oder dergleichen.

Gruss rojep
 
Hallo ihr,

ich brauche momentan einen Script, der auf einen Schalter, also einen Activator gelegt wird. Der Script soll bewirken, dass man den Schalter erst aktivieren kann, wenn man 200 Stärke hat.

LG,

peecee
 
Dazu musst du nur bei einem normalen Schlater-Script in die erste Zeile unter das "Begin onactivate" folgendes schreiben:
Code:
if player.getav strength >=200
und dann eben am Schluss vor das "end" noch ein "endif"
 
  • Like
Reaktionen: peecee
@rojep: Ohne OBSE führt kein Weg darum, für jeden einzelnen Buchstaben einen eigenen Script zu erstellen. Das könnte dann so aussehen:

---ohne OBSE---
Code:
scn Scriptname

short queststage

Begin OnTrigger
if queststage == 0
    Messagebox "Ihr habt Buchstabe A gefunden"
    set queststage to getstage [QuestID] + 10
    setStage [QuestID] queststage
endif
End
Den Text musst du entsprechend anpassen.


---mit OBSE----
Mit OBSE ersparrst du es dir, für jeden einzelnen Buchstaben einen eigenen Script zu erstellen. Der folgende Script greift auf den Namen des Activators/Triggers/Items zu und schreibt ihn per String in die Messagebox.
Code:
scn Scriptname

short queststage
string_var msg

Begin OnTrigger
if queststage == 0
    let msg := "Ihr habt Buchstabe " + getName + " gefunden."
    Messagebox $msg
    set queststage to getstage [QuestID] + 10
    setStage [QuestID] queststage
endif
End
Wenn ein anderer Name in der Messagebox stehen soll, musst du einfach den Namen des Objektes ändern.

Grüße,

Gildur
 
  • Like
Reaktionen: Finkreghan
Ich melde mich nocheinmal zurück -

Leider kann ich kein Script auf das Boot selbst legen - Das lässt das CS leider nicht zu. Folglich müsste die Bootbewegung also irgendwie auch vom Activator (Dem Stuhl) geleitet werden..
 
Ok, das Boot als Activator ist erstellt, die Kritik des CS's war, dass da ein "missmatched" if - Block war. Ich habe noch ein Endif eingefügt, damit war die Fehlermeldung verschwunden.

Viel schwerwiegender ist der Fehler beim Stuhlscript - "Unkown Variable or Function "state"". Ist das vielleicht ein OBSE Befehl?