Construction Set Skriptthread zum Construction Set

Also ist in einem Behälter nur ein Ausrüstungsset?
UNd dann soll es zufällig sein, aus welchem Behälter die Sachen kommen die der verzauberte NPC anzieht?
 
Also ehrlich gesagt weiß ich immer noch nicht, was du willst. Gib dem NPC doch einfach die entsprechenden Gegenstände ins Inventar ("addItem").
Alternativ könntest du auch einfach LeveledLists erstellen und dort die Sachen einstellen und den NPCs diese LeveledLists ins Inventar geben.
 
Schmelz: genau.
Diarrhoe: Ich möchte ingame sachen verteilen. Gefallen mir Sachen aus einer Mod, dann packe ich sie einfach in eins der Töpfchen einer passenden Kategorie und kann sie per Zauber NPCs zugänglich machen. Das spart Zeit und ermöglicht es auch dem Ungeübten sein Spiel individuell zu gestalten. Kein CS "Gefummel" ist nötig, es reicht wenn man Mods installieren kann.

Situation:
Burg Raureif ist installiert und ich möchte die Wachen "umgestalten". Schöne Rüstungsmods installiert die meine Wachen tragen sollen.
Jeweils 1 Ausrüstung aus meinem Inventar in die Töpfchen getan und den Wachen den entsprechenden Zauber verpassen.
Will ich jetzt neue Teile für die Wachen verteilen, dann brauche ich sie nur wieder in die Töpfe tun und die Wachen verwenden automatisch auch diese.
 
Zuletzt bearbeitet:
PHP:
ScriptName SkriptName^^

short var1
ref var2

Begin ScriptEffectStart
set var2 to getself
set var1 to 1 + GetRandomPercent * 9 / 99
if var1 == 1
     cont1.RemoveAllItems var2
     ???
elseif var1 == 2
     ...
elseif var1 == 10
     cont1.RemoveAllItems var2
     ???
endif
end
mir fehlt gerade eine Idee, wie ich an die Objekt-Referencen komme (ohne OBSE) um diese Objekte auszurüsten!??
Sofern die Sachen besser sind als das, was das Ziel dabei hatt passierts auch so^^.
Ansonsten sollte das so funktionieren.
 
  • Like
Reaktionen: pchase
Achso ist das gemeint. Dann könnte ich noch ein paar Sachen zu dem Skript sagen. Und zwar wird bei (1+getRandomPercent*9/99) nur zu 1% die short 10 rauskommen, da diese nicht gerundet, sondern abgeschnitten werden. Besser wäre "set var1 to getRandomPercent" und dann eine Bereichsabfrage à la:
Code:
if var1 >= 90
elseif var1 >= 80
...
endif
Dadurch bleibt die Auswertung von "getRandomPercent" gleichmäßig.
Das Ausrüsten könnte gehen, indem du jedem Objekt ein Skript zuweist:
Code:
scn name

ref mySelf
ref NPC

Begin onAdd

set NPC to getContainer
set mySelf to getSelf
NPC.equipItem mySelf

end
Bin mir da aber nicht so sicher, da "getSelf" die Referenz des Objekts wiedergibt und "equipItem" eine Objekt-ID benötigt.
Ansonsten klappts nur mit OBSE.
 
  • Like
Reaktionen: pchase
Danke erst mal.
Könntest Du mir jetzt auch noch sagen, Wie ich meine insgesamt 20 Container aus 2 Kategorien benennen soll oder wo ich die Benennung im Skript eintragen muss?

Vorläufig bin ich zunächst von Kategorie "A" und "B" ausgegangen. Die Container selber tragen dann die Bezeichnungen A01, A02 ,A03..... und B01, B02, B03....usw.
Das Skript würde ich KatA nennen und für die 2. Kategorie natürlich KatB.
 
Ist es denn schwierig OBSE mit ins Boot zu nehmen?
Würde es helfen, wenn ich euch mal das Kleiderschrankskript von Eyja zeige?
 
Ich meine für den der die Mod nutzt.
Schließlich muss man dann immer mit dem obse-loader starten, und der hatt ja leider keinen Launcher^^
 
Hallo ich suche ein Script das wenn ich auf ein Activator draufklicke,dass ich ein Item bekomme,aber ich darf es nur einmal bekommen.
Also wenn ich das nächste mal draufklicke passiert nichts.
 
Das sollte so funktionieren:
Code:
scn name

short doonce

Begin onActivate

if doonce
 return
elseif isActionRef player
 set doonce to 1
 player.addItem <Item-ID> 1
endif

end
 
  • Like
Reaktionen: tommi
Eine Frage.
Kann man auf "initially disabled"-Gegenstände überhaupt feuern?

Ich wüsste sonst nicht, warum der Script hier keine sichtbaren Blitze auf die Initially Disabled-Gegenstände abgibt. :huh:
(Runde 14 ist der entsprechende Abschnitt)

PHP:
scn aaDRCyra0AltLeg08SternentorAktivierungSCRIPT

Short Runde

Begin onActivate player
	
If (Runde != 0)
	Return
Else
	Let Runde := 1
Endif
End

Begin GameMode

If (Runde == 0)
	Return
Elseif (Runde == 1)
	DRCyra0AltLeg08SteinR01.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL01.PlayGroup Forward 0
	Let Runde := 2
Elseif (Runde == 2)
	If (DRCyra0AltLeg08SteinR01.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR01.IsAnimPlaying == 0)
		Let Runde := 3
	Endif
Elseif (Runde == 3)
	DRCyra0AltLeg08SteinR01.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL01.PlayGroup Forward 0
	DRCyra0AltLeg08SteinR02.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL02.PlayGroup Forward 0
	Let Runde := 4
Elseif (Runde == 4)
	If (DRCyra0AltLeg08SteinR01.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR01.IsAnimPlaying == 0)
		If (DRCyra0AltLeg08SteinR02.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR02.IsAnimPlaying == 0)
			Let Runde := 5
		Endif
	Endif
Elseif (Runde == 5)
	DRCyra0AltLeg08SteinR01.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL01.PlayGroup Forward 0
	DRCyra0AltLeg08SteinR02.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL02.PlayGroup Forward 0
	DRCyra0AltLeg08SteinR03.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL03.PlayGroup Forward 0
	Let Runde := 6
Elseif (Runde == 6)
	If (DRCyra0AltLeg08SteinR01.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR01.IsAnimPlaying == 0)
		If (DRCyra0AltLeg08SteinR02.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR02.IsAnimPlaying == 0)
			If (DRCyra0AltLeg08SteinR03.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR03.IsAnimPlaying == 0)
				Let Runde := 7
			Endif
		Endif
	Endif
Elseif (Runde == 7)
	DRCyra0AltLeg08SteinR01.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL01.PlayGroup Forward 0
	DRCyra0AltLeg08SteinR02.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL02.PlayGroup Forward 0
	DRCyra0AltLeg08SteinR03.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL03.PlayGroup Forward 0
	DRCyra0AltLeg08SteinR04.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL04.PlayGroup Forward 0
	Let Runde := 8
Elseif (Runde == 8)
	If (DRCyra0AltLeg08SteinR01.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR01.IsAnimPlaying == 0)
		If (DRCyra0AltLeg08SteinR02.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR02.IsAnimPlaying == 0)
			If (DRCyra0AltLeg08SteinR03.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR03.IsAnimPlaying == 0)
				If (DRCyra0AltLeg08SteinR04.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR04.IsAnimPlaying == 0)
					Let Runde := 9
				Endif
			Endif
		Endif
	Endif
Elseif (Runde == 9)
	DRCyra0AltLeg08SteinR01.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL01.PlayGroup Forward 0
	DRCyra0AltLeg08SteinR02.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL02.PlayGroup Forward 0
	DRCyra0AltLeg08SteinR03.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL03.PlayGroup Forward 0
	DRCyra0AltLeg08SteinR04.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL04.PlayGroup Forward 0
	DRCyra0AltLeg08SteinR05.PlayGroup Forward 0
	DRCyra0AltLeg08SteinL05.PlayGroup Forward 0
	Let Runde := 10
Elseif (Runde == 10)
	If (DRCyra0AltLeg08SteinR01.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR01.IsAnimPlaying == 0)
		If (DRCyra0AltLeg08SteinR02.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR02.IsAnimPlaying == 0)
			If (DRCyra0AltLeg08SteinR03.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR03.IsAnimPlaying == 0)
				If (DRCyra0AltLeg08SteinR04.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR04.IsAnimPlaying == 0)
					If (DRCyra0AltLeg08SteinR05.IsAnimPlaying == 0) && (DRCyra0AltLeg08SteinR05.IsAnimPlaying == 0)
						Let Runde := 11
					Endif
				Endif
			Endif
		Endif
	Endif	
Elseif (Runde == 11)
	DRCyra0AltLeg08SteinR01.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinMitte
	DRCyra0AltLeg08SteinL01.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinMitte
	DRCyra0AltLeg08SteinR02.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinMitte
	DRCyra0AltLeg08SteinL02.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinMitte
	DRCyra0AltLeg08SteinR03.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinMitte
	DRCyra0AltLeg08SteinL03.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinMitte
	DRCyra0AltLeg08SteinR04.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinMitte
	DRCyra0AltLeg08SteinL04.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinMitte
	DRCyra0AltLeg08SteinR05.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinMitte
	DRCyra0AltLeg08SteinL05.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinMitte
	Let Runde := 12
Elseif (Runde == 12)
	DRCyra0AltLeg08SteinMitte.PlayGroup Forward 0
	Let Runde := 13
Elseif (Runde == 13)
	If (DRCyra0AltLeg08SteinMitte.IsAnimPlaying == 0)
		Let Runde := 14
	Endif
Elseif (Runde == 14)
	DRCyra0AltLeg08SteinMitte.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinZiel01
	DRCyra0AltLeg08SteinMitte.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinZiel02
	DRCyra0AltLeg08SteinMitte.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinZiel03
	DRCyra0AltLeg08SteinMitte.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinZiel04
	Let Runde := 15
Elseif (Runde == 15)
	DRCyra0AltLeg08SteinMitte.PlayGroup Forward 0
	Let Runde := 16
Elseif (Runde == 16)
	If (DRCyra0AltLeg08SteinMitte.IsAnimPlaying == 0)
		Let Runde := 17
	Endif
Elseif (Runde == 17)
	DRCyra0AltLeg08SteinZiel01.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinZielFINAL
	DRCyra0AltLeg08SteinZiel02.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinZielFINAL
	DRCyra0AltLeg08SteinZiel03.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinZielFINAL
	DRCyra0AltLeg08SteinZiel04.Cast aaDRCyra0AltLeg08Aktivierblitz DRCyra0AltLeg08SteinZielFINAL
	DRCyra0AltLeg08TornebelREF.Enable
	DRCyra0AltLeg08PortalnexusREF.Enable
	Let Runde := 18
Endif
End
;<CSEBlock>
;<CSEStatutoryWarning> This script may contain preprocessor directives parsed by the CSE Script Editor. Refrain from modifying it in the vanilla editor. </CSEStatutoryWarning>
;<CSECaretPos> 5204 </CSECaretPos>
;</CSEBlock>
 
Du kannst ja mal ein paar Debug Texte einfügen. Eventuell nach jedem "Let Runde := x" ein "PrintC "Runde ist %.0f", Runde" und in der Konsole dann schauen bei welcher Runde es stehen bleibt. Falls alle durchlaufen muss es ja am initially disabled liegen ;D
 
Es bleibt nicht stehen!
Das Tor wird ja aktiviert.
Nur wird eben der Blitz in Runde 14 nicht abgeballert.

Oder eher "wurde"
Denn ich habe herausgefunden, dass es an einem simplen Staticobjekt (der Halterung des zauberden Kristalls lag), welcher mit seiner Kollision den Blitz bereits im Keim abgefangen hat.
 
Ich bräuchte einen Skript, der beim Durchschreiten einer Triggerbox...

1. einen Sound abspielt
2. einen Blureffekt und einen Geschwindigkeitsbonus beim Spieler auslöst
3. Kreatur X den Spieler angreifen lässt

LG :)

peecee

@dpum:
Habe den Post editiert, ist noch was neues hinzugekomen :oops:
 
Zuletzt bearbeitet: