Construction Set Skriptthread zum Construction Set

Auf die Nachricht:
Code:
scn name

short doonce

Begin onEquip player

if doonce
 return
endif
set doonce to 1
player.setFactionRank <Faction-ID> <Rank>
return

end


Begin onActivate

activate
if doonce
 return
endif
if isActionRef player
 set doonce to 1
 setFactionRank <Faction-ID> <Rank>
endif

end
 
  • Like
Reaktionen: ichich
Script anfrage

Hallo
Also ich brächte ein script das mich beim Anwenden eines bestimmten zaubers
die augenfrabe des anwenders ändern lässt und nach ablauf des zaubers wieder zur standart zurücksetzt der zauber sollte eine cooldown von min 5 haben wäre nett wenn mir jemand die befehle dafür geben könnte

MFG
Devilheart
 
SetEyes wäre zum Augenfarbe ändern (Funktioniert aber nur bei NPC) und für den Cooldown stellst du entweder einen Timer ein oder bei der Duration des Spells 5 Sekunden und im Script dann ein MagicEffectFinish wo die Augen wieder zurückgesetzt werden.

Um die ursprüngliche Augenfarbe wieder zu erhalten speicherst du einfach mit GetEyes (OBSE Funktion). Diese speicherst du in einer Reference ("Ref OldEyes" beispielsweise). Wenn du die des Spielers ändern willst... könnte es vllt funktionieren wenn du SetEyes anwendest und danach Update3D auf den Spieler. Dafür brauchst du denn mindestens OBSE 0019 (Glaub ich)
 
Danke

Hm irgendwie funktioniert das nicht so wie ich will hat vllt noch jemand ne idee wäre echt schön .
 
Zuletzt bearbeitet:
Das müsste mit OBSE gehen. Ich schreib' mal das Skript, wie ich das meine, und editiere es dann hier rein. ;)

Code:
SCN Waffezerstörenzauber

Ref Target

Ref Helmet
Ref Upper
Ref Arms
Ref Lower
Ref Boots

Long AR1
Long AR2
Long AR4
Long AR3
Long AR5


Begin ScripptEffectStart

     let target := getself

     let Helmet := target.getequippedobject 1
     let Upper := target.getequippedobject 2
     let Arms := target.getequippedobject 4
     let Lower := target.getequippedobject 3
     let Boots := target.getequippedobject 5

     let Ar1 := Helmet.GetArmorAR
     let Ar2 := Upper.GetArmorAR
     let Ar4 := Arms.GetArmorAR
     let Ar3 := Lower.GetArmorAR
     let Ar5 := Boots.GetArmorAR

     Helmet.setarmorAR 0
     Upper.setarmorAR 0
     Arms.setarmorAR 0
     Lower.setarmorAR 0
     Boots.setarmorAR 0

end


Begin ScriptEffectFinish

     Helmet.setarmorAR AR1
     Upper.setarmorAR AR2
     Arms.setarmorAR AR4
     Lower.setarmorAR AR3
     Boots.setarmorAR AR5

     ResetAllVariables

end
Müsste so eigentlich klappen.
 
Zuletzt bearbeitet:
Versteh ich das richtig, dass damit einfach die Rüstwerte aller Objekte auf 0 gesetzt werden und später wieder hochgesetzt?
Ich will es ja auch verstehen :)

Übrigens ... Schildeffekte und ein ausgerüsteter Schild werden nicht berücksichtigt, oder?
 
Wie kann ich einen Activator so einstellen, dass man eine Messagebox bekommt, in der man eines von drei Dingen "herholt", so wie bei den Häusern mit den Zetteln, und den Activator disablen/Die Messagebox nicht mehr anzeigen?

Danke im Voraus:)
 
Dann tu' das auf den Activator:

Code:
SCN ...

Short Act

Begin OnActivate

 if(act)
    return
else
        set act to 1
 endif

end


Begin GameMode

if(act == 0 || act == 3)
     return
elseif(act == 1)
        MessageBox "Welchen Gegenstand möchtest Du?" "Bla1", "Bla2", "Bla3"
        set button to getbuttonpressed
    if(button == -1)
         set act to 0
         return
    elseif(button == 0)
         player.additem <item1>
         set act to 2
    elseif(button == 1)
         player.additem <item2>
         set act to 2
    elseif(button == 2)
         player.additem <item3>
         set act to 2
   endif

         elseif(act == 2)
               set act to 3
               set button to -1

               setdestroyed 1
             return
     endif

end
 
  • Like
Reaktionen: Drachenfeuer
Sorry fürn Doppelpost, aber sonst merkts ja keiner.

Ich bräuchte eine kleine Veränderung an dem unten genannten Script.
Und zwar soll der Teleport von RaShirar (Tamriel WorldSpace) erst auftreten, wenn man die Mod mindestens 2 Ingametage aktiv hat. Denn sonst hat man ja fast keine Chance zu den anderen Locations zu kommen und müsste fast immer mit ihm beginnen.

Code:
scn aaDRCyra00HQ01TeleportSCRIPT

;Dieser Script teleportiert einen NSC zum Spieler, sobald der sich im Tamriel-Worldspace befindet.
;Wenn er Cyrodiilmeister ist, kommt Adiemus
;Wenn er nicht Cyrodiilmeister ist, kommt Ra'Shirar
;Im Anschluss an das Gespräch verschwindet der Dialogpartner mit einem Zauber

Short DoOnce

Begin GameMode
	
If (GetStage aaDRCyra001 == 0)		;Der Spieler darf nirgendwo anders her eine Info gekriegt haben.
	If (Player.GetInWorldSpace Tamriel == 1)	;Spieler muss im Tamriel-Worldspace sein;Spieler ist NICHT der Meister Cyrodiils
				
		If (DoOnce == 0)
			DRCyra0RaShirarRef.MoveTo player
			Let DoOnce := 1
		Elseif (DoOnce == 1)
			DRCyra0RaShirarRef.StartConversation player 
			Let DoOnce := 2
		Elseif (DoOnce == 2)
			DRCyra0RaShirarRef.Cast aaDRCyra00HQ01RaShirarZauber DRCyra0RaShirarRef
			Let DoOnce := 3
		Else
			Return
		Endif
			
	Elseif (Player.GetInWorldSpace ICArboretumDistrict) || (Player.GetInWorldSpace ICTempleDistrict) || (Player.GetInWorldSpace ICMarketDistrict)
		If (Player.GetInFaction MQEndFaction == 1) && (Player.GetFactionRank MQEndFaction == 0)
					
			If (DoOnce == 0)
				DRCyra0AdiemusRef.MoveTo player
				Let DoOnce := 1
			Elseif (DoOnce == 1)
				DRCyra0AdiemusRef.StartConversation player 
				Let DoOnce := 2
			Elseif (DoOnce == 2)
				DRCyra0AdiemusRef.Cast aaDRCyra00HQ01AdiemusZauber DRCyra0AdiemusRef
				Let DoOnce := 3
			Else
				Return
			Endif
	Endif
			
	Elseif (Player.GetInCell CheydinhalSanctuary == 1)
		If (player.GetInFaction DarkBrotherhood == 1) && (Player.GetFactionRank DarkBrotherhood == 7)
			;
		Else	;Spieler ist NICHT Zuhörer
			Return
		Endif
	Endif
Endif
End
 
Wie wär's mit einem Timer, den du einfach auf 2 Tage stellst?

Ich selber brauche einen Skript, der etwas Disabled, sobald man Item X genommen hat.
 
Mit Timern tu ich mich immer schwer. :oops:
Da läuft es nie, wie es soll "-.-

Zu deinem Problem.
Leg das auf deinen Gegenstand X

Code:
scn ...

Short DoOnce

Begin onAdd player

If (DoOnce == 0)
 REF.Disable
 Set DoOnce to 1
Else
 Return
Endif
End
 
  • Like
Reaktionen: peecee
Bau' das noch in Dein Skript ein:

Code:
long day
short Act

 if(act == 0)
    let day := gamedayspassed + 2
    let act := 1
elseif(act == 1)
 if(gamedayspassed >= day)
     ; Do Stuff
else
       return
 endif
Musst Du eben anpassen. ;)
 
  • Like
Reaktionen: TheDarkRuler