Construction Set Skriptthread zum Construction Set

Ah, ein Pro nimmt sich meiner an. :) Vielen Dank. Muss ich dann nur noch einen Schalter mit dem Skript erstellen und ihn mit dem zu aktivierenden Objekt verbinden?
Nein, der Schalter braucht nur das Skript. Wenn man ihn drückt, wird das Objekt angezeigt und die Variable geändert, sodass er beim nächsten Druck das Objekt verschwinden lässt und wieder von vorne beginng. Muss man nicht verbinden ;)

@AH:
Müsste das nicht Player.IsInInterior heißen?
 
  • Like
Reaktionen: Meister von Cyrodiil
Ich bin zwar etwas eingerostet, aber ich denke das kriege ich noch hin:
-Wie kann ich mit einem Schalter eine normale Tür öffnen? Soll heißen sowohl per Hand als auch mit Schalter.

Code:
scn Scriptname

Begin OnActivate
TuerREF.activate player 1
End

-Wie kann ich bei einer Lichtquelle (Kerze o.ä.) durch aktivieren das Licht an bzw. ausschalten?

Code:
scn Scriptname

Begin OnActivate
If KerzeREF.HasFlames
KerzeREF.RemoveFlames
else
KerzeREF.AddFlames
Endif
end

Gildur
 
  • Like
Reaktionen: Meister von Cyrodiil
Und seit langem mal wieder eine Frage:

Sagen wir ich habe eine neue Truhe im CS erstellt und platziert. Nun habe ich eine Quest bei der man sich,nach einer bestimmten Entscheidung, einer Gruppe anschliesst. Nun soll nach dem Betritt jede Woche 300 Septime in die neue Truhe respawnt werden. Wie genau mach ich das?

Danke und Gruß

Dante 2000
 
@AH:
1. Du hast im "ScriptEffectStart"-Block ein "endif" zuviel.
2. Poste mal die ganze Fehlermeldung. Mit dem "Invalid Parameter" kann man nur bedingt etwas anfangen...

@Dante: Du könntest dir zum Beispiel das Skript auf der Truhe des Erzmagiers ansehen. Die funktioniert ja nach einem ähnlichen Prinzip...
 
  • Like
Reaktionen: Dante2000
@AH:
1. Du hast im "ScriptEffectStart"-Block ein "endif" zuviel.
2. Poste mal die ganze Fehlermeldung. Mit dem "Invalid Parameter" kann man nur bedingt etwas anfangen...

@Dante: Du könntest dir zum Beispiel das Skript auf der Truhe des Erzmagiers ansehen. Die funktioniert ja nach einem ähnlichen Prinzip...

Hatte die Truhe aber nicht einen Programmierfehler? Trotzdem werde ich mir das Script mal anschauen ;)
 
---------------------------
Script Error
---------------------------
Script 'AaaPotatoRain', line 7:
Invalid info 'AaaPotatoQuestSc' for parameter Quest.

Compiled script not saved!
---------------------------
OK
---------------------------


Das ist die Meldung
 
Ich weis das es normal so ist, nur ist meins verbuggt. Naja ich hab es zwar abgeänder und vereinfacht aber hier mal zum nachdenken:
Code:
scn aaaTorchholdnospecial01
short button
short buttonadd
short buttontbT
short do
Begin OnActivate

if (do == 0) 
  	messageBox "Möchtet Ihr anzünden oder mitnehmen?" "Nein" "Anzünden" "Mitnehmen"
elseif (do == 1)
	messageBox "Möchtet Ihr eine Fackel anbringen oder Eure brennende Fackel anbringen?" "Nein" "Fackel anbringen" "Brennende Fackel anbringen" 
elseif (do == -1)
	messageBox "Möchtet Ihr die brennende Fackel nehmen?" "Nein" "Nehmen"
endif
End





Begin Gamemode

if (do == 0)
	set button to GetButtonPressed
	if (button == 1)
			short fire
			if player.IsTorchOut == 0
				Message "Ihr müsst eine angezündete Fackel tragen!"
     			elseif player.IsTorchOut == 1
     	 			if (fire == 0)
	 				SewerTorchLight01.enable
 	 				SewerTorch01.Addflames
      				set fire to 1
					set do to -1
	 	 		endif
			endif

	elseif (button == 2)
		short take
		if (take == 0)
  			SewerTorch01.disable
			Player.additem Torch02 1
			SewerTorchLight01.disable
			set take to 1 
			set do to 1
		endif
	endif

elseif (do == 1)
set buttonadd to GetButtonPressed
	if (buttonadd == 1)
		short flame
 	     if (flame  == 0)
			Player.removeitem Torch02 1
			SewerTorch01.enable
      		set fire to 1
			set do to 0
	 	endif
	endif
	if (buttonadd == 2)
		if player.IsTorchOut == 0
		Message "Ihr müsst eine angezündete Fackel tragen!"
		elseif player.IsTorchOut == 0
			short fires
 	    		 if (fires == 0)
				Player.UnequipItem Torch02 1
				Player.removeitem Torch02 1
				SewerTorch01.enable
				SewerTorch01.Addflames
      			set fires to 1
				set do to -1
	 		endif
		endif
	endif

elseif (do == -1)
	set buttontbT to GetButtonPressed
	if (buttontbT == 1)
		short taken
		if player.IsTorchOut ==1
			Message "Ihr tragt bereits eine brennende Fackel!"
     	elseif player.IsTorchOut == 0
			if (taken == 0)
				Player.EquipItem Torch02 1	
				Player.Additem Torch02 1
				SewerTorchLight01.disable
				SewerTorch01.disable
 	 			SewerTorch01.Removeflames
				set taken to 1
				set do to 1
				endif
			endif
		endif
endif
End


Es soll dem Spieler ermöglichen je nachdem ob eine Fackel schon in der halterung steckt oder nicht und ob sie an oder aus ist zu handeln

- wenn keine steckt und er gerade eine brennende hält = kann er seine anbringen
- wenn eine schon drin ist aber nicht angezündet = anzünden
- anzünden und wieder in die hand nehmen
- etc...^^
 
Schon so spät...

Du benutzt in deinem Script viel zu viele Variablen, da blickt keiner mehr durch. Versuche das mal:
Code:
scn aaaTorchholdnospecial01

short button
short do

Begin OnActivate

if (do == 0) 
  	messageBox "Möchtet Ihr anzünden oder mitnehmen?" "Nein" "Anzünden" "Mitnehmen"
elseif (do == 1)
	messageBox "Möchtet Ihr eine Fackel anbringen oder Eure brennende Fackel anbringen?" "Nein" "Fackel anbringen" "Brennende Fackel anbringen" 
elseif (do == -1)
	messageBox "Möchtet Ihr die brennende Fackel nehmen?" "Nein" "Nehmen"
endif
End





Begin Gamemode

set button to getbuttonpressed

if (do == 0)
	if (button == 1)
		if player.IsTorchOut == 0
			Message "Ihr müsst eine angezündete Fackel tragen!"
     		elseif player.IsTorchOut == 1
	 		SewerTorchLight01.enable
 	 		SewerTorch01.Addflames
			set do to -1
	 	 endif

	elseif (button == 2)
  		SewerTorch01.disable
		Player.additem Torch02 1
		SewerTorchLight01.disable
		set do to 1
	endif

elseif (do == 1)
	if (button == 1)
		Player.removeitem Torch02 1
		SewerTorch01.enable
		set do to 0

	elseif (button == 2)
		if player.IsTorchOut == 0
		Message "Ihr müsst eine angezündete Fackel tragen!"
		elseif player.IsTorchOut == 1
			Player.UnequipItem Torch02 1
			Player.removeitem Torch02 1
			SewerTorch01.enable
			SewerTorch01.Addflames
      		set fires to 1
			set do to -1
	 	endif
	endif

elseif (do == -1)
	if (button == 1)
		if player.IsTorchOut ==1
			Message "Ihr tragt bereits eine brennende Fackel!"
     		elseif player.IsTorchOut == 0
			Player.EquipItem Torch02 1	
			Player.Additem Torch02 1
			SewerTorchLight01.disable
			SewerTorch01.disable
 	 		SewerTorch01.Removeflames
			set taken to 1
			set do to 1
		endif
	endif
endif
End
Für die Variablen "fire" und "taken" sah ich keine Verwendung, da das Vorhandensein bzw. Nicht-Vorhandensein einer Fackel, ob an oder aus, schon die Variable "do" speichert.

Normalerweise sollte das klappen.

Gildur
 
  • Like
Reaktionen: }{ellFíre
habe schon wieder mehrere Fragen:

1) Ich habe 3 NPCs in einem Raum. Ich spreche mit den Anführer der 3. Dieser soll mich nach einem bestimmen Gesprächsverlauf angreifen. (Ist es richtig wenn ich ins ResultScript "start combat player" eingebe? Es reagiert keiner...)

2) Nach einem anderen Gesprächsverlauf sollen mich alle 3 NPCs auf einmal angreifen. Wie mache ich das?

3) Was für einen Marker muss ich setzten,damit ich, sobald ich über diesen Marker gehe, eine Questnachricht bekomme?

Viele Fragen...

Danke
 
habe schon wieder mehrere Fragen:

1) Ich habe 3 NPCs in einem Raum. Ich spreche mit den Anführer der 3. Dieser soll mich nach einem bestimmen Gesprächsverlauf angreifen. (Ist es richtig wenn ich ins ResultScript "start combat player" eingebe? Es reagiert keiner...)

2) Nach einem anderen Gesprächsverlauf sollen mich alle 3 NPCs auf einmal angreifen. Wie mache ich das?

3) Was für einen Marker muss ich setzten,damit ich, sobald ich über diesen Marker gehe, eine Questnachricht bekomme?

Viele Fragen...

Danke
1.
RefId.startcombat player
Du musst die RefID des Anführers noch davorschreiben.

2.
RefID.startcombat player
RefID2.startcombat player
RefID3.startcombat player
Die RefIDs von allen dreien einfügen.

3. Du brauchst eine Triggerbox, die du mit
Begin OnTriggerActor player
startest (also im Skript) und dann schreibst du einfach
setstage XYQuest X
 
  • Like
Reaktionen: Dante2000
habe schon wieder mehrere Fragen:

1) Ich habe 3 NPCs in einem Raum. Ich spreche mit den Anführer der 3. Dieser soll mich nach einem bestimmen Gesprächsverlauf angreifen. (Ist es richtig wenn ich ins ResultScript "start combat player" eingebe? Es reagiert keiner...)

Es müsste folgendes funktionieren,
Code:
NPCRef.startcombat player
NPCRef.SetAV Aggression 100

SetAV ist die Abkürzung für SetActorValue und für NPCRef trägst die Referenz des NPC ein, der dich angreifen soll, da dies 3 Npcs sind musst du es für jeden machen.

Das wäre dann etwa so:

Code:
NPCRef.startcombat player
NPCRef.SetAV Aggression 100
NPCRef2.startcombat player
NPCRef2.SetAV Aggression 100
NPCRef3.startcombat player
NPCRef3.SetAV Aggression 100

2) Nach einem anderen Gesprächsverlauf sollen mich alle 3 NPCs auf einmal angreifen. Wie mache ich das?

Dafür fügst du obriges in das ResultScript des letzten Dialoges, den du am besten per Goodbye beendest. ;)
Als Erklärung wieso ich noch SetAV eingetragen habe, ich habe es eingetragen damit du nicht mitten im Kampf aufgeben kannst und die Angreifer dir wieder friedlich gesinnt sind. :)

Den Rest hat kk schon geschildert.

MfG Master of Worlds
 
  • Like
Reaktionen: Dante2000