Construction Set Skriptthread zum Construction Set

@künstler der dekadenz:

scn name

begin onequip
playsound <sound-ID>
end
--------------------
der pfad für den sound,also die ID,darf dabei aber nicht auf einer einzelnen datei liegen,sondern muss auf einen ORDNER gelegt werden.dann wird zufällig einer der sounds im ordner wiedergegeben.
 
  • Like
Reaktionen: KünstlerderDekadenz
Wie lautet der Skript wenn ich etwas beim ersten Betätigen eines Activator enablen will und beim erneuten Aktivieren wieder disable . Das ganze halt unendlich oft genau so wie ein Lichtschalter :D
 
Händler und Ammulett

Ich bräuchte hier zwei Scripts für meine Version 2.5 von meine Mod:

1 den Script damit Händler auch gestohlene Gegenstände kaufen.

2 einen Script, der dafür sorgt das wenn ich ein Amulett anlege ein NPC erscheint. <---- Hier denke ich stelle ich den Npc in einen nicht mit der Außenwelt verbundenen Interrior und lasse ihn dann Teleportieren. Also ein Teleport X to- Script. Das Problem ist das das immer wieder gehen muss





Bekommt n Thanks;)
 
Zuletzt bearbeitet:
2:

scn name
short moved

begin onequip
if moved==0
<npc-REF>.moveto <marker-REF> (bzw. <npc-REF>.moveto player)
set moved to 1
endif
end

begin onunequip
set moved to 0
end
 
  • Like
Reaktionen: Blobbivion
scn name
short moved

begin onequip
if moved==0
<npc-REF>.moveto <marker-REF> (bzw. <npc-REF>.moveto player)
set moved to 1

endif
end

Das kann so nicht wirken.
Der Moveto-Befehl wirkt auch wie ein Return. Das heißt, dass alles, was dahinter steht nicht mehr ausgeführt wird. Also wird moved nie auf 1 gesetzt.

Es müsste daher so sein ...

scn name
short moved

begin onequip
if moved==0
set moved to 1
<npc-REF>.moveto <marker-REF> (bzw. <npc-REF>.moveto player)

endif
end
 
  • Like
Reaktionen: Blobbivion
Hallo,

ich habe eine neue Version einer meiner Mod gebastelt und daher entstand dieses Skript (sieht momentan so aus:)
Code:
scn RMQ19SoldatenScript

Short State
Begin GameMode

if ( State == 0)&& ( getstage MQ19 >= 25) && (getstage MQ19 <= 48 )
MQ19RSoldat01.enable
MQ19RSoldat02.enable
MQ19RSoldat03.enable
MQ19RSoldat04.enable
MQ19RSoldat05.enable
MQ19RSoldat06.enable
MQ19RSoldat07.enable
MQ19RSoldat08.enable
MQ19RSoldat09.enable
MQ19RSoldat10.enable
MQ19RSoldat11.enable
MQ19RSoldat12.enable
MQ19RSoldat13.enable
MQ19RSoldat14.enable
MQ19RSoldat15.enable
MQ19RSoldat16.enable
MQ19RSoldat17.enable
MQ19RSoldat18.enable
MQ19RSoldat19.enable
MQ19RSoldat20.enable
MQ19RSoldat21.enable
MQ19RSoldat22.enable
MQ19RSoldat23.enable
MQ19RSoldat24.enable

MQ19Obj01.enable
MQ19Obj02.enable
MQ19Obj03.enable
MQ19Obj04.enable
MQ19Obj05.enable
MQ19Obj06.enable
MQ19Obj07.enable
MQ19Obj08.enable
MQ19Obj09.enable
MQ19Obj10.enable
MQ19Obj11.enable
MQ19Obj12.enable
MQ19Obj13.enable
MQ19Obj14.enable
MQ19Obj15.enable
MQ19Obj16.enable
MQ19Obj17.enable
MQ19Obj18.enable
MQ19Obj19.enable
MQ19Obj20.enable
MQ19Obj21.enable
MQ19Obj22.enable

MQ19RFeuer1.enable
MQ19RFeuer2.enable


endif
Set State to 1
endif

if ( State == 1)&&( getstage MQ20 >= 20)

MQ19RSoldat01.disable
MQ19RSoldat02.disable
MQ19RSoldat03.disable
MQ19RSoldat04.disable
MQ19RSoldat05.disable
MQ19RSoldat06.disable
MQ19RSoldat07.disable
MQ19RSoldat08.disable
MQ19RSoldat09.disable
MQ19RSoldat10.disable
MQ19RSoldat11.disable
MQ19RSoldat12.disable
MQ19RSoldat13.disable
MQ19RSoldat14.disable
MQ19RSoldat15.disable
MQ19RSoldat16.disable
MQ19RSoldat17.disable
MQ19RSoldat18.disable
MQ19RSoldat19.disable
MQ19RSoldat20.disable
MQ19RSoldat21.disable
MQ19RSoldat22.disable
MQ19RSoldat23.disable
MQ19RSoldat24.disable

MQ19Obj01.disable
MQ19Obj02.disable
MQ19Obj03.disable
MQ19Obj04.disable
MQ19Obj05.disable
MQ19Obj06.disable
MQ19Obj07.disable
MQ19Obj08.disable
MQ19Obj09.disable
MQ19Obj10.disable
MQ19Obj11.disable
MQ19Obj12.disable
MQ19Obj13.disable
MQ19Obj14.disable
MQ19Obj15.disable
MQ19Obj16.disable
MQ19Obj17.disable
MQ19Obj18.disable
MQ19Obj19.disable
MQ19Obj20.disable
MQ19Obj21.disable
MQ19Obj22.disable

MQ19RFeuer1.disable
MQ19RFeuer2.disable

stopquest 0RMQ19ModQuest
endif
Set State to 2
endif



END

Problem:
Es funktioniert nur manchmal oder - wie momentan - nie.
Wenn ich jetzt bspw. SetStage MQ19 25 mache, was ja eigentlich alle Referenzen da oben enablen soll, passiert nichts.
Auch das disablen via setstage MQ20 30 funktionierte nicht.
Seht ihr da einen Fehler?
Das ganze realisiert sich über eine Quest, die bei Start des Spiels gestartet wird.
Dieses Skript da oben ist das Questskript.

Gruß
roobsi
 
Kann mir wer einen Skript machen der folgendes macht.

Beim aktivieren einer Statue öffnet sich eine Message Box mit sagen wir jetzt mal 5 Anklick Möglichkeiten und einem Button wenn man doch nichts will.
Das kann ich noch.

Jetzt aber das Problem wie muss man diesen Script schreiben wenn man den Activator pro Tag nur 3 mal bedienen darf ?
 
@ Roobsi:

Du hast pro "if" zwei "endif". Das ist völlig unnötig. ;) Außerdem ist es logisch, dass nicht passiert.
Die Referenzen werden enabled, sobald die Quest über oder gleich 25 ist. Aber aber da im nächsten If abgefragt wird, ob die Quest über oder gleich 20 ist, werden die Referenzen wieder disabled. ;)
 
  • Like
Reaktionen: roobsi
Meinst du, dass die ganzen Items von der einen Truhe in der anderen sind? Das läuft nach einem ziemlich einfachen, aber wirkungsvollen System ab. :-D

Auf jeder Truhe liegt so ein Script:

Code:
SCN ...


begin OnActivate

<Truhe>.RemoveAllItems <DieseTruhe>
; und so weiter

end
Dadurch wird durch das Aktivieren einer Truhe aller anderen Truhen die Gegenstände entnommen. Das sieht dann so aus, als ob überall dasselbe drin ist. :-D
 
  • Like
Reaktionen: Anti_Held
Welche Truhe ist " Truhe " .

"DIese Truhe" ist ja klar .

Kommt auf jede Truhe dieser Script ?

kannst du meine erste Frage noch beantworten ?
 
Auf 1. Frage: Bei <Truhe> kommt die Truhe hin, bei der das ganze Zeug vorher eingetan wurde.

Auf 2. Frage: Steht oben über dem Script...

Auf 3. Frage: Das ist etwas komplizierter. Ich kanns dann morgen hier rein schreiben. Jetzt habe ich keine Lust mehr. :p Oder jemand anderes schreibt es Dir.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Anti_Held
@ Roobsi:

Du hast pro "if" zwei "endif". Das ist völlig unnötig. ;) Außerdem ist es logisch, dass nicht passiert.
Die Referenzen werden enabled, sobald die Quest über oder gleich 25 ist. Aber aber da im nächsten If abgefragt wird, ob die Quest über oder gleich 20 ist, werden die Referenzen wieder disabled. ;)

Hey,

die zwei endifs waren überbleibsel vom skriptumbau, deren entfernung hat nichts gebracht (also entfernung von jeweils einem).

Zum zweiten:
Einmal wird gefragt ob MQ19 >= 25 && MQ19 <=48 ist. dann wird enabled.
Dann frägt er, ob MQ20>=20 ist.
Ich sehe da keinen Fehler bzw. verstehe nicht was da logisch gesehen falsch ist?
Hilf mir. :-D

Gruß
roobsi
 
hey roobsi,

set State to 1 muss in die erste if-Abfrage.

@ Anti_Held: Wegen der nur 3 mal aktivierbaren Truhe pro Tag:
Code:
scn ScriptAufDerTruheSCRIPT

short myday
short used

Begin OnActivate Player
if myday != gameday
	set myday to gameday
	set used to 0
endif
if myday == gameday
	if used < 3
		set used to used +1
		activate player
	else
		Message "Ihr habt diese Truhe heute schon 3 mal benutzt."
	endif
endif
End

Wegen der sicheren Truhen wie in Nehrim: Ich habe mir eben angeguckt wie es die Entwickler gemacht haben, allerdings würde ich es anders machen:

Erstelle eine Quest oder nimm eine schon erstelle von dir, die für gleiche Zwecke entstanden ist (also eine Quest die keine Quest werden sollte, sondern solche nebensächlichen Dinge regeln soll). Dieser fügst du dann ein Script mit einer Referenz hinzu, sowie einer short variable, zum Beispiel könnte es dann so aussehen:

Code:
scn ScriptAufDerQuestSCRIPT

ref TruhenRef
short doonce

Anschließend legst du den folgenden Script auf eben die Truhe oder Truhen, die sicher sein soll(en):

EDIT: angepasst.
Code:
scn ScriptAufDerSicherenTruheSCRIPT

ref myself

Begin OnActivate player
set myself to getself
if [QuestID].doonce == 0
	set [QuestID].doonce to 1
	activate player
elseif [QuestID].doonce == 1
	"[QuestID].TruhenRef".RemoveAllItems myself
	activate player
endif
set [QuestID].TruhenRef to getself
End
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Anti_Held und roobsi
scn ScriptAufDerSicherenTruheSCRIPT

ref myself

Begin OnActivate player
set myself to getself
if 00Pace.doonce == 0
set 00Pace.doonce to 1
activate player
elseif 00Pace.doonce == 1
"00Pace.TruhenRef".RemoveAllItems myself
activate player
endif
set 00Pace.TruhenRef to getself
End

Irgendwas stimmt in Zeile 7 mit dem doonce nicht...sagt das Cs auf jeden fall.
 
scn ScriptAufDerSicherenTruheSCRIPT

ref myself

Begin OnActivate player
set myself to getself
if 00Pace.doonce == 0
set 00Pace.doonce to 1
activate player
elseif 00Pace.doonce == 1
"00Pace.TruhenRef".RemoveAllItems myself
activate player
endif
set 00Pace.TruhenRef to getself
End

Was sollen die "" in Zeile 7?
 
  • Like
Reaktionen: Anti_Held
Ich habe gehört dadurch wird verhindert das die mit 00 beginnende Referenz als eigener Skriptbefehl angesehen wird, was bei manchen Befehlen vorkommt, ob es stimmt weiß ich jedoch nicht.

@ Anti_Held

Code:
scn ScriptAufDerSicherenTruheSCRIPT

ref myself
[B]short doonce[/B]

Begin OnActivate player
set myself to getself
if 00Pace.doonce == 0
set 00Pace.doonce to 1
activate player
elseif 00Pace.doonce == 1
"00Pace.TruhenRef".RemoveAllItems myself
activate player
endif
set 00Pace.TruhenRef to getself
End

Es hat nur das short doonce gefehlt. ;)

MfG Master of Worlds
 
  • Like
Reaktionen: Anti_Held