Construction Set Skriptthread zum Construction Set

Moin,

Ich versuche grade ein Script zu schreiben, welches bewirkt das eine bereits im Inventar befindliche Schriftrolle (diese wird gefunden, nicht einfach hinzugefügt), nicht vor abschluss einer bestimmten Queststage geöffnet werden kann, danach jedoch immer wieder.

Mein bisheriges Script sieht so aus:

Code:
Scn MeinScript

begin onequip
if getstagedone MeineQuest 30 == 0 && menumode 1002 == 1
messagebox "Ihr könnt diese Schriftrolle noch nicht öffnen!" 
elseif getstagedone MeineQuest 30 == 1 && menumode 1002 == 1
activate

endif
endif
end

Ich hoffe jemand findet den Fehler und kann mir helfen. Danke schomal!
 
Der Syntax von "GetStageDone" lautet so:

Code:
if(getstagedone <quest> == <stage>)
Und nicht:

Code:
if(getstagedone <quest> <stage> == 1)

Außerdem brauchst Du die MenuMode-Abfrage gar nicht.
 
  • Like
Reaktionen: AkiRa
Hab nochmals ne kurze Frage Hab mir gerade einen Script gemacht mit dem man eig undendlich pfeile haben müsste denke ich zumindest... Kann mir wer sagen was ich Falsch gemacht habe?


Code:
scn Meinbogen
 
begin OnActivate player
 
if player.getItemCount Meinpfeil <10
   player.addItem Meinpfeil 2
endif
 
end
 
Hab ein ziemlich komisches Problem ...
das CS gibt mir keinen Fehler, aber speichert diesen Skript auch nicht.
Jemand eine Idee?

PHP:
scn aaDRCyra0NQ04ZauberbuchSCRIPT

Short DoOnce

Begin onActivate player
	
If (DoOnce)
	Return
Else
	If (player.GetActorValue Intelligence >= 70)
		Activate
		MessageBox "Als du das Buch aufschlägst scheinen die Zeichen des Buches ein Eigenleben zu entwickeln. Sie beginnen sich zu bewegen und in deinen Gedanken nehmen Erinnerungen an nie gekannte Sprüche Form an."
		Player.AddSpell aaDRCyra1NQ04IndarysBuchZauber01
		Player.AddSpell aaDRCyra1NQ04IndarysBuchZauber02
		Player.AddSpell aaDRCyra1NQ04IndarysBuchZauber03
		Let DoOnce := 1
	Elseif
		Activate
		MessageBox "Du kannst dir aus den Zeichen keinen Sinn machen. Du solltest vielleicht etwas für deine Bildung tun, um jene Zeichen verstehen zu können."
	Endif
Endif
End

Begin onEquip player
	
If (DoOnce)
	Return
Else
	If (player.GetActorValue Intelligence >= 70)
		MessageBox "Als du das Buch aufschlägst scheinen die Zeichen des Buches ein Eigenleben zu entwickeln. Sie beginnen sich zu bewegen und in deinen Gedanken nehmen Erinnerungen an nie gekannte Sprüche Form an."
		Player.AddSpell aaDRCyra1NQ04IndarysBuchZauber01
		Player.AddSpell aaDRCyra1NQ04IndarysBuchZauber02
		Player.AddSpell aaDRCyra1NQ04IndarysBuchZauber03
		Let DoOnce := 1
	Elseif
		Activate
		MessageBox "Du kannst dir aus den Zeichen keinen Sinn machen. Du solltest vielleicht etwas für deine Bildung tun, um jene Zeichen verstehen zu können."
	Endif
Endif
End
 
Der Syntax von "GetStageDone" lautet so:

Code:
if(getstagedone <quest> == <stage>)
Und nicht:

Code:
if(getstagedone <quest> <stage> == 1)

Falsch! Die Syntax ist, wie sie dort steht schon richtig.

Du könntest es mal so probieren:
Code:
scn name

Begin onEquip player

if getStage <Quest> < <Stage>
 player.unequipItem <Schriftrollen-ID>
endif

end


@Nagor:
Bögen werden beim Benutzen nicht aktiviert. Der "onActivate"-Block funktioniert also nicht. Du solltest eher sowas verwenden:
Code:
scn name

short equipped

Begin onEquip player

set equipped to 1

end


Begin onUnequip player

set equipped to 0

end


Begin GameMode

if equipped == 0
 return
endif
if player.getItemCount <Pfeil-ID> < 10
 player.addItem <Pfeil-ID> 2
endif

end


@DarkRuler:
Vielleicht liegts an dem "Activate" im "onEquip"-Block. Für das Ablegen hilft eventuell "player.unequipItem <Item-ID>".
Btw bringt der Parameter beim "Begin onActivate" nichts. Dafür gibt es "isActionRef <Ref>".
 
Zuletzt bearbeitet:
Das kommt davon, wenn man den Begin onActivate einfach übernimmt, ohne noch mal genau zu schauen. Ich schau morgen noch mal, obs daran liegt und editiers dann hier rein. :)
 
Hey,
Ich brauche ein Skript das ein bestimmtes Musikstück abspielt wenn man ein Objekt aktiviert. Wie macht man eigentlich aus nem Static n Aktivator?
 
und der Script sieht folgender Maßen aus.

Code:
ScriptName [Scriptname]
Short NurEinmal
Begin OnActivate
If NurEinmal == 0
Set NurEinmal to 1
StreamMusic "FILENAME" ;Bsp "data\music\Beispiel.MP3"
Else
Return
Endif
End
 
Ich habe ein Problem mit diesem Script. Es liegt auf einem Activator und damit soll sich der Spielmode ändern lassen.

ScriptName A101MortimerScript

Short Button
Short Doonce
Short Menu

Begin OnActivate


if isActionRef player == 1

if Menu == 0
MessageBox "Welcome to the world of the living. My name is Mortimer and I am your tourguide ... not. You are now playing in Hardcore Mode. If you like you can change the mode now." "Normal", "Easy", "Cancel"
set Menu to 1

Elseif Menu == 2

MessageBox "You are now playing in Normal Mode. If you like you can change the mode now." "Hardcore", "Easy", "Cancel"

Elseif Menu == 3

MessageBox "You are now playing in Easy Mode. If you like you can change the mode now." "Hardcore", "Normal", "Cancel"

Elseif Menu == 4

MessageBox "You are now playing in Hardcore Mode. If you like you can change the mode now." "Normal", "Easy", "Cancel"

EndIf
endif
End

begin gamemode


Set Button to ( GetButtonPressed + 1 )

If menu == 1
If ( Button == 1 )
Messagebox "You have selected the Normal Mode. NPC's will not be hostile. All the quests are working like they should. You are still part of the Undead faction and you have to feed once per day."
Player.setfactionrank A101Wiedergaengerfaction -1
Set Menu to 2


ElseIf ( Button == 2 )
Messagebox "You have selected the Easy Mode. NPC's won't be hostile. All quests are working like they should. You aren't part of the Undead faction and you don't have to feed."
Player.setfactionrank A101Wiedergaengerfaction -1
Player.setfactionrank Undeadfaction -1
Player.removeSpell A101SoulfoodSpell
Player.removeSpell A101WHunger
Player.removeSpell A101WHunger2
Player.removeSpell A101WHunger3
Player.removeSpell A101WHunger4
Player.removeSpell A101WHunger5
Set Menu to 3


ElseIf ( Button == 3 )
set Menu to 4
Return
EndIf

Elseif Menu == 2
If ( Button == 1 )
Messagebox "You have selected the Hardcore Mode. This means that NPC's will be more or less hostile (they won't attack you but the answers they give you are dependent on disposition (you will get all the normal answers, if your disposition towards the NPC's is over 80)). Undead won't attack you. You also have to feed once per day on a sleeping person."
Player.setfactionrank A101Wiedergaengerfaction 0
Set Menu to 4

ElseIf ( Button == 2 )
Messagebox "You have selected the Easy Mode. NPC's won't be hostile. All quests are working like they should. You aren't part of the Undead faction and you don't have to feed."
Player.setfactionrank A101Wiedergaengerfaction -1
Player.setfactionrank Undeadfaction -1
Player.removeSpell A101SoulfoodSpell
Player.removeSpell A101WHunger
Player.removeSpell A101WHunger2
Player.removeSpell A101WHunger3
Player.removeSpell A101WHunger4
Player.removeSpell A101WHunger5
Set menu to 3

ElseIf ( Button == 3 )
Return
endif

Elseif Menu == 3
If ( Button == 1 )
Messagebox "You have selected the Hardcore Mode. This means that NPC's will be more or less hostile (they won't attack you but the answers they give you are dependent on disposition (you will get all the normal answers, if your disposition towards the NPC's is over 80)). Undead won't attack you. You also have to feed once per day on a sleeping person."
Player.setfactionrank A101Wiedergaengerfaction 0
Set menu to 4

ElseIf ( Button == 2 )
Messagebox "You have selected the Normal Mode. NPC's will not be hostile. All the quests are working like they should. You are still part of the Undead faction and you have to feed once per day."
Player.setfactionrank A101Wiedergaengerfaction -1
Set Menu to 2


ElseIf ( Button == 3 )
Return
endif
endif
End

Ich bekomme die 1. Messagebox, dann kann ich auswählen. Wähle ich, bekomme ich die erste Auswahlbox von Menu 1, dann die 2. .

Ich weiß ehrlich gesagt nicht, was da falschläuft. Habe gestern schon den ganzen Tag daran rumgearbeitet, aber ich komme einfach auf keinen grünen Zweig.
 
Moin. Ich habe mal wieder einmal Script Probleme...

1.

scn 00FestungTrig3x

begin onTrigger player

doorLab.lock

if getstage Quest2 ==70

setStage Quest2 80

doorLab.lock
endif
end


Bei diesem hätte ich gern , dass die Tür auf " Unmöglich " gesetzt wird.

2.

scn 00Report


begin onTrigger player

player.Moveto fail

End


Bei diesem bleibt mein Spieler dann dauernd am Marker kleben und es ruckelt extrem. Kann das wer fixen ?
 
Moinsen...

Kann mir wer sagen wie der Befehl ist damit ein Gegner den Spieler angreift ? Außerdem würd ich gern noch den Befehl wissen um die Agression zu ändern.

MFG
 
Ich habe ein Skriptproblem:

Dieser Skript soll bewirken, dass ein neues Buch von mir absofort bei Phintias einmalig zu kaufen ist.

Code:
scn PCPQ01ST05

Short DoOnce
begin GameMode

If (DoOnce == 0)
 FirstEditionPhintiasChest.addItem PCPMysteriumAstral 1
 Set DoOnce to 1
 StopQuest PCPAstralisquest01
Endif
End
[I]by DarkRuler2500[/I]

Doch leider funktioniert das nicht ganz, ich kann Phintias immernoch nichts neues abkaufen. :huh: Ideen?

LG,

peecee