Construction Set Skriptthread zum Construction Set

Ich habe jetzt den Script für die Wachen, die per Rauchsignal hinter einer Ruine spawnen und zur Festung gerannt kommen. Nach erledigter Arbeit sollen sie aber auch wieder zurück laufen und wieder disabeln, wenn man das Rauchsignal ausschaltet. wie mache ich, dass sie dann loslaufen und wieder verschwinden und man den Vorgang aber immer wieder wiederholen kann?

bis jetzt:

scn aaBwFireHelperAlarm

short aabwtorch
short activated
float timer

begin OnActivate

If (aabwtorch == 0)
activate
bwsmoke.enable
befireopen.enable
set aabwtorch to 1

if activated == 0
set activated to 1
set timer to 20

endif

Elseif (aabwtorch == 1)

activate

bwsmoke.disable
befireopen.disable
set aabwtorch to 0

Endif

End

Begin GameMode
if activated == 1
if timer > 0
set timer to (timer - getSecondsPassed)
else set activated to 2
BwHelperA.enable
BwHelperB.enable
endif

endif

end
 
@ DarkRuler:
Da gibt es zwei Möglichkeiten. Eine leichte mit OBSE und eine kompliziertere ohne. Ich schreibs mal für OBSE:
Code:
scn name

ref actor

Begin ScriptEffectStart

set actor to getFirstRef 69 1
while actor
 if getDistance actor <= x
  pushActorAway actor <Stärke des Effektes>
 endif
 set actor to getNextRef
loop

end
 
Zuletzt bearbeitet:
  • Like
Reaktionen: TheDarkRuler
Da gibt es zwei Möglichkeiten. Eine leichte mit OBSE und eine kompliziertere ohne. Ich schreibs mal für OBSE:
Code:
scn name

ref actor

Begin ScriptEffectStart

set actor to getFirstRef 69 1
while actor
 if getDistance actor <= x
  pushActorAway actor <Stärke des Effektes>
 endif
 set actor to getNextRef
loop

end

Danke.
Nur gerade eine Frage.
Wie viele CS-Einheiten sind etwa ein meter? :huh:
 
Ungefähr 70.

@Käsekuchen:
Dann wirds aber komplizierter. Zumindest, wenn du alle möglichen Kombinationen im Skript berücksichtigen willst.
Code:
scn aaBwFireHelperAlarm

short aabwtorch
short activated
float timer

Begin onActivate

if aabwtorch == 0
 activate
 bwsmoke.enable
 befireopen.enable
 set aabwtorch to 1
 if activated == 0
  set activated to 1
  set timer to 20
 endif
else
 activate
 bwsmoke.disable
 befireopen.disable
 set aabwtorch to 0
 if activated == 1
  set activated to 0
  set timer to 0
 elseif activated == 2
  set activated to 3 ;jetzt muss das Rückkehr-Package zum Spawnpunkt beginnen
  BwHelperA.evp
  BwHelperB.evp
 endif
endif

end


Begin GameMode

if activated == 1
 if timer > 0
  set timer to (timer - getSecondsPassed)
 else
  set activated to 2
  BwHelperA.enable
  BwHelperB.enable
 endif
elseif activated == 3
 if BwHelperA.getDisabled
  if BwHelperB.getDisabled
   set activated to 0
  endif
 endif
endif

end

Die NPCs brauchen noch ein Skript das ungefähr so aussieht:
Code:
scn name

Begin onPackageDone <ID des Rückkehr-Packages>

disable

end
 
Zuletzt bearbeitet:
Ich habe mal eine Frage: Gibt es einen Befehl, bei dem nur das derzeitige Reittier betroffen ist?

Sowas wie CurrentMount, oder so? Ich möchte nämlich die Eigenschaften eines Pferds per Script ändern, aber es soll egal sein, welches Pferd der player hat. Also es soll auch bei Reittieren aus Mods funktionieren. Der Player muss es nur gerade als Reittier haben. Ich hoffe ich konnte mich einigermaßen verständlich ausgedrückt. :ugly:
 
Wie mache ich das das Package erst passiert, wenn sie da waren, sonst spawnen sie hinter der Mauer, bleiben stehen und disabeln sofort wieder, ohne zum Ziel zu rennen.
 
Hi,
ich hoffe, ihr seid mir nicht böse, wenn ich hier als Script-Unwissender um eure Hilfe bitte... In einer Übersetzung gibt es ein Script, das ich im CS nicht abspeichern kann. Es kommen folgende Fehlermeldungen, die Zeilen markiere ich dann unten in rot:

1. Invalid If/Endif block structure on line 47.

Wenn ich diese Zeile probehalber lösche:
2. Script "000EsmeraldaAnvilRepair", line 48: Nested begin/end blocks are not allowed.
3. Invalid Begin/End block structures on line 87.

Code:
Scn 000EsmeraldaAnvilRepair

;This script runs the Repair window from static repair items
;script by JJMax

Begin OnActivate

short doonce 0
short charge
long startingRH
long gold
long maxRH
long totalRH
long finishRH
long spentRH
long usedRH
long cost
long removeRH
short Button
short Button2

;On activation of item by player, displays message, adds hammers, equips them
;and removes them once done.

	if(IsActionRef player == 1)
		if(Player.GetActorValue Mercantile > 0)
			set charge to 13
		endif
		if(Player.GetActorValue Mercantile > 25)
			set charge to 11
		endif
		if(Player.GetActorValue Mercantile > 50)
			set charge to 9
		endif
		if(Player.GetActorValue Mercantile > 75)
			set charge to 7
		endif
		if(Player.GetActorValue Mercantile >= 100)
			set charge to 5
		endif
		set startingRH to player.getitemcount repairhammer
		set gold to player.getitemcount 0000000F
		set maxRH to gold / charge
		set totalRH to startingRH + maxRH
		MessageBox "Euer Gold und Eure eigenen Reparaturhämmer erlauben Euch, das Maximum von %.0f Hämmern zu benutzen.", totalRH "Lasst die Arbeit beginnen!"	 
		set doonce to 1	
	[COLOR="Red"]end[/COLOR]
	
	Begin Gamemode
		
		if (doonce == 1)
	    		set button to getbuttonpressed
			if(button > -1)
				if(button == 0)
					player.additem repairhammer, maxRH	
					if(totalRH > 1)
						player.equipitem repairhammer
						set doonce to 2
					endif
					if(totalRH == 0)
						MessageBox "Ihr habt leider nicht genügend Septime."
						set doonce to 0
					endif
				endif
			endif
		endif
	
	End

	Begin gamemode
		if(doonce == 2)
			set finishRH to player.getitemcount repairhammer
			set usedRH to totalRH - finishRH
			set spentRH to usedRH - startingRH
			set cost to spentRH * charge
			if(spentRH > 0)
				MessageBox "Ihr habt %.0f unserer Spezialhämmer benutzt. Dies wird Euch %.0f Gold kosten. Zusätzliche Hämmer werden nun aus Eurem Inventar entfernt.", spentRH, cost
	 	     	player.removeitem 0000000F, cost
				player.removeitem repairhammer, maxRH
				set doonce to 0
			endif
			if(spentRH <= 0)
				MessageBox "Ihr habt keinen unserer Spezialhämmer genutzt und müsst daher auch keine Abgabe leisten. Zusätzliche Hämmer werden nun aus Eurem Inventar entfernt."
				player.removeitem repairhammer, maxRH
				set doonce to 0			
			endif
		endif
	[COLOR="Red"]endif[/COLOR]
End

Wäre toll, wenn mir da jemand weiterhelfen könnte :)