Construction Set Skriptthread zum Construction Set

Hi,
@ Alexi: Genau so ist es: Wiki
Im Script würde das dann ungefair so aussehen:
Code:
Begin OnActivate
If IsActionRef player == 1
... ... ...
End
@ Dark: Also am besten setzt du den folgenden Script auf das Bett, setzt eine Reference auf die Tür, zB. DkDoor:
Code:
Begin OnActivate

short DkDr
short ThisOne

If IsActionRef player
set DkDr to GetPCSleepHours
set ThisOne to 1
Endif
End

Begin GameMode
If player.GetSleeping 4 && GetPCSleepHours - DkDr >= 5 && ThisOne == 1
DkDoor.enable
set ThisOne to 0
endif

end

So müsste es klappen. ;D
Doch falls der Fall auftreten soll, dass die Tür nicht enabled wird, dann muss noch ein Script für die Tür her. Denn ich habe 1, 2 mal die Erfahrung gemacht, dass man Objekte in einem anderen Script als ihrem eigenen nicht enablen kann. Doch wie gesagt, nur manchmal.

MfG Gildur


Das Skript klappt irgentwie nicht. was muss denn über If IsActionRef player hin. Wenn ich dort Gamemode drüber setze passiert einfach nichts. Wenn ich Activate mache, passiert garnichts wenn ich dass Bett anklicke.:huh: auch wenn ich unter endif activate einfüge.
 
toll mein Post hat genau das selbe ausgesagt.. nur ich dachte, das man das verbindet, da wärste selbst draufgekommen:roll:


Code:
scn 00WKScript

short raised

Begin OnActivate
	if isActionRef Player == 1 && raised == 0
		Messagebox "Der Käfig hat keinen Schalter und scheint nicht öffbar zu sein"
	endif
end

Begin OnMagicEffectHit FIDG
	if isActionRef Player == 1 && raised == 0
		Messagebox "Der Käfig erzittert, öffnet sich aber nicht"
			playgroup forward 0
	elseif isActionRef Player == 0 && raised == 0
		playgroup forward 1
			set raised to 1
	endif
end

hat den keienr ne ahnung, warum der Player das Trozdem hochfahren kann?

@ vor den ersten block muss:

Begin OnActivate
 
So, nun hab ich auch mal wieder ne Frage.

Ich habe einen Schlüssel erstellt und dann habe ich gemacht das hinter dem Player eine Wand enabled sobald man ihn nimmt, so dass man nicht mehr heraus kann.

Nun wollte ich aber noch wissen, wie ich es machen kann das dieses Giftgas losströmt wenn man den schlüssel aufnimmt. Ist dafür übrhaupt ein script erforderlich?

MFG ALEXI

Edit: besser noch wäre es, wenn der Player nach 30 sekunden einfach stirbt, damit man keine heiltränke benutzen kann *FG*

Ich hab mich mal Zitiert, weil ich meine Frage falsch Formuliert habe -.-

Also, ich will ein script es soll folgendes bewirken.

1. Ich nehme einen Schlüssel und hinter mir soll eine Wand enablen und eine Messagebox erscheinen, in der etwas steht wie (ihr seid verloren) oder so.

2. Dann soll ein 30 Sekündiger Timer ablaufen und weil das alles noch realistisch aussehen soll willte ich das gleichzeitig eine Gasströmmaschine angeht.

3. wenn die 30 Sekunden abgelaufen sind soll der Player sterben, es sei denn er findet einen Geheimen schalter, mit der die Wand wieder disabled und ich einfach wieder raus kann 8).

Weiß einer wie das geht?

MFG ALEXI


Und @ Fönix CH

Guck mal Hier da wirste sicherlich was finden ;)

MFG
 
  • Like
Reaktionen: Bob der Baumeister
Ich hab mich mal Zitiert, weil ich meine Frage falsch Formuliert habe -.-

Also, ich will ein script es soll folgendes bewirken.

1. Ich nehme einen Schlüssel und hinter mir soll eine Wand enablen und eine Messagebox erscheinen, in der etwas steht wie (ihr seid verloren) oder so.

2. Dann soll ein 30 Sekündiger Timer ablaufen und weil das alles noch realistisch aussehen soll willte ich das gleichzeitig eine Gasströmmaschine angeht.

3. wenn die 30 Sekunden abgelaufen sind soll der Player sterben, es sei denn er findet einen Geheimen schalter, mit der die Wand wieder disabled und ich einfach wieder raus kann 8).

Weiß einer wie das geht?

MFG ALEXI

MFG

@1:
Code:
scn WieDuWillst ^^
Begin OnAdd
Unlock *TürID*
messagebox "Ihr seid verloren!"
end
An den anderen tüftle ich noch ...
 
Zuletzt bearbeitet:
hm...
leg ma das auf den Schlüssel:

Code:
scn blablabla

float timer

Begin OnAdd
Messagebox "Ihr seit verloren Muhahah"
[Ref der Wand].Enable
Set timer to 30
Set timer to GetSeconspassed
if (timer > 0)&&(GetDisabled [Ref der Wand])
disable.timer
Messagebox "ihr seit davongekommen"
elseif timer >= 0
[Ref der Gasverströmer].Enable
kill

noch net fertig hmm
 
Zuletzt bearbeitet:
Ich hbas mal so gemacht

Code:
SCN AaGasscript

Short Doonce
Float Timer

Begin OnActivate
If (Isactionref Player==1)&&(Doonce == 0)
AaGasstroemermer.enable
AaGastriggzone.enable ;Der Trigger der Enabled um den Gasströmer laufen zu lassen.
AaGaswall.enable
Messagebox "Die Wand hinter mir fährt hinunter und ich komme nicht mehr weg. Eine seltsame Stimme schallt mir durch den Kopf und sagt.'In dreißig sekunden wird das Gas euch töten!'.
Set Doonce to 1
Activate
end

Begin Gamemode
Set Timer to getsecondspassed

If (Getdisabled AaGaswall)&&(Timer == 30)
Message "Ihr konntet euch noch retten!"
elseif Timer == 30
Player.Kill
endif
end
@ Irgendeiner der gut scripten kann: is das richtig lol.

MFG ALEXI

Edit: Es geht net, ich habs so probiert

Code:
SCN AaGasscript

Short Doonce
Float Timer

Begin OnActivate
If (Doonce == 0)
AaGasstroemer.enable
AaGastriggzone.enable
AaGaswall.enable
Messagebox"Die Wand hinter mir fährt hinunter und ich komme nicht mehr weg. Eine seltsame Stimme schallt mir durch den Kopf und sagt.'In dreißig sekunden wird das Gas euch töten!'."
Set Doonce to 1
endif
Activate
end

Begin Gamemode
Set Timer to getsecondspassed

If (Getdisabled AaGaswall)&&(Timer == 30)
Message "Ihr konntet euch noch retten!"
elseif Timer == 30
Player.Kill
endif
end
Hat denn jemand ne idee?
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Bob der Baumeister
Hier ist ja viel passiert xD
@ Dark: Hier, vielleicht klappts so:
Code:
scn [...]

short DkDr
short ThisOne

Begin OnActivate
If IsActionRef player == 1
set DkDr to GetPCSleepHours
set ThisOne to 1
Endif
End

Begin GameMode
If player.GetSleeping 4 && GetPCSleepHours - DkDr >= 5 && ThisOne == 1
DkDoor.enable
set ThisOne to 0
endif

end

@ Alexi: Sieht schon gut aus, dann würde ich es aber noch so ändern:
Code:
SCN AaGasscript

Short Doonce
Float Timer

Begin OnActivate
If Isactionref Player==1 && Doonce == 0
AaGasstroemermer.enable
AaGastriggzone.activate ;Sollte der Trigger nicht aktiviert werden, anstatt enabled?
AaGaswall.enable
Messagebox "Die Wand hinter mir fährt hinunter und ich komme nicht mehr weg. Eine seltsame Stimme schallt mir durch den Kopf und sagt.'In dreißig sekunden wird das Gas euch töten!'.
Set Doonce to 1
set timer to 30
Activate
end

Begin Gamemode
If timer > 0
Set Timer to timer - getsecondspassed
Endif

If AaGaswall.Getdisabled == 1 && Timer < 1 && timer > 0
Message "Ihr konntet euch noch retten!"
elseif Timer < 1 && timer > 0
Player.Kill
endif
end

Obwohl das vielleicht zu etwas schwierigkeiten kommen kann. hmmm....
Denn dieses Stück:
Script schrieb:
If AaGaswall.Getdisabled == 1 && Timer < 1 && timer > 0
Message "Ihr konntet euch noch retten!"
set timer to -1
elseif Timer < 1 && timer > 0
Player.Kill
endif
Da nämlich die erste If Anweisung etwas vorraussetzt, was auch die zweite erfüllt, könnte das vielleicht nicht funktionieren. Aber probieren kann man's ja immer.^^
Außerdem: Wenn ein Script funktionieren soll, dann darfst du keine Klammern setzen. Das ist zwar beim CS-Wiki so (was weiß ich warum^^), aber im Script funktioniert das dann nicht mehr.

MfG Gildur

Edit: habe gerade editiert xD
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Alexi
@ Alexi: Freut mich zu hören :D

@ XaserIII: Sorry, dass ich erst so spät antworte :D Wenn ich es nicht besser wüsste, würde ich sagen, dass du alles richtig gemacht hat. Der einzige Grund, warum es auch beim casten des Spielers klappt, wäre der, dass der "playgroup forward
"-Befehl nicht der richtige ist. Was bewirkt der eigentlcih? Ich habe schon bei Wiki nachgeguckt, doch das sagt mir irgendwie nichts :ugly:

Edit: Ich habe mich jetzt noch ein mal eingehender damit beschäftigt, und vielleicht sollte es so klappen:
Code:
scn 00WKScript

short raised

Begin OnActivate
	if isActionRef Player == 1 && raised == 0
		Messagebox "Der Käfig hat keinen Schalter und scheint nicht öffbar zu sein"
	endif
end

Begin OnMagicEffectHit FIDG
	if isActionRef Player == 1 && raised == 0
		Messagebox "Der Käfig erzittert, öffnet sich aber nicht"
	elseif isActionRef Player == 0 && raised == 0
		playgroup forward 1
			set raised to 1
	endif
end
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Alexi und Xaser
ja von mir auch nen thx, bei mir gehts jetzt auch. hm, hätt net gedacht, das man nru das verändern muss
 
Tja, hättest es dir auch mal durchlesen müssen :p
Ne, ich mach nur Spaß ;)
Dazu ist der Scriptthread ja da. Ach ja: "PlayGroup Foward 0" und "PlayGroup Foward 1" spielen beide die Öffnung ab, nur nach einer anderen Reigenfolge. Also "PlayGroup Foward 0" startet die Animation, wenn die Animation, die gerade auf dem Objekt läuft, beendet ist. Doch "PlayGroup Foward 1" stoppt die laufende Animation sofort und beginnt mit der neuen. Also ich weiß nicht, welches von beidem besser ist, aber ich denke, 1 müsste schon passen. ;)
 
Zuletzt bearbeitet:
Mit was muss ich den moveto-Befehl verknüpfen? Mit ner Cell oder einem Marker? Hätte da vllt einer n Beispiel mit Kommentar?

Und wie bestimm ich,ob der Player n Vampir is? EDIT: Mit GetVampir == 1?

EDIT2: Wie kann ich zufällig eine Variabel definieren? *noobsei*

EDIT3: Wie kann ich ein Objekt ausrüsten? Mit Equip gehts ned -.-
 
Zuletzt bearbeitet:
Hi,
also am besten macht sich immer ein MoveToMarker-Befehl, anstatt MoveTo. Das hatte ich schon ein mal irgendwo erklärt, ist jetzt aber auch egal^^. Also wenn du zB. den player zu irgendeiner bestimmten Position im Spiel bringen willst, dann musst du einen Marker (am besten Heading) erstellen, den dann in die Welt setzen, wo die Person hinteleportiert werden soll, und dann noch in einem Script "MoveToMarker [MarkerREF]" reinschreiben. Das war's. Ich weiß jetzt nocht genau, was du mit einer Cell meinst... :huh:
Zu deiner zweiten Frage. Das geht so:
GetIsRace Vampire
2.: Da musst du eigentlich einen Script erstellen...
Code:
scn PhVariableDefenieren

short ZufallsVar

Begin OnLoad
set ZufallsVar to 1 + 0.06 * getRandomPercent
End
Dieser Script sagt, dass eine zahl zwischen 1 bis 6 erstellst wird. sozusagen sagt die 1, mit welcher Zahl er beginnt, und die Zalh nach dem Komma, wann sie enden soll. Wenn so zu sagen die Zahl nach dem Plus 0.20 heißen würde, würde eine Zahl zwischen 1 und 20 regeneriert.
3.: Das müsste ungefair so lauten:
player.EquipItem [ObjectID]

MfG Gildur

Edit: XaserIII hat das mit dem MoveTo-Befehlen schöner erklärt.^^
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Phoenix-Ch
also mit Moveto kenn ich mich aus^^

wenn du:
Code:
player.movetomarker [MarkerRef]
dann teleporteirt der dich zu dem Marker

wen du aber
Code:
player.moveto [CellID], [X, Y, Z]
machst, wirste zu einem Ort in einer Celle Teleporteirt

ich guck ma, ob CS Wiki ne Antwort auf deine anderen Fragen hat
E: ah Gildur hat shcon gepostet^^
 
  • Like
Reaktionen: Phoenix-Ch
Eine Frage, XaserIII:
heißt MoveTo nicht, dass der Player in abhängigkeit von einem Obejekt teleportiert wird? Sprich, dass ein solcher Befehl:
MoveTo player 512, 0, 0
einen Gegenstand genau 512 Editor-Punkte vor den player beschwört?
Sollte ein Befehl in eine Cell nicht so lauten?:
PositionCell x, y, z, [Rotation], [CellID]

Oder?
 
ah also das objeckt erstellen war meiner meinung nach:

Code:
player.PlaceAtMe, Formid, Menge, X, Y,