Construction Set Skriptthread zum Construction Set

So, ich bin's mal wieder mit dem selben Problem...

Der Script funktioniert einfach nicht, jetzt erscheint auch nicht mal mehr der "Kreaturen-beherrschen" Spell... Und mein jämmerliches Verständnis vom CS hilft mir leider nicht mehr weiter...
Code:
scn <Spell>

short doonce
short wait
short done
ref target
ref me
ref <activator>
ref <Kreaturen-beherrschen Spell>
ref spell

Begin ScriptEffectStart
set target to GetSelf

if target.getdead == 1
     target.resurrect 1
endif

End

Begin ScriptEffectUpdate

if wait == 1
if doonce == 0
set me to GetSelf
set source to <Interior>
<activator>.MoveTo me 0, 0, 10
<activator>.cast <Kreaturen-beherrschen Spell> target
set spell to getFirstRef 34
while spell
 if spell.getProjectileType
  if spell.getProjectileLifetime < 0.5
   if spell.getMagicProjectileSpell == <Kreaturen-beherrschen Spell>
    spell.setPlayerProjectile
    set done to 1
   endif
  endif
 endif
 if done
  set spell to 0
  set done to 0
 else
  getNextRef
 endif
loop          
set doonce to 1
     endif
else
     set wait to 1
endif
End

Begin ScriptEffectFinish
target.kill
End

Was stimmt hier nicht?
 
Hallihallo! Ich bräuchte ein Skript, dass das macht:

Wenn ich einen NPC auf ein Thema anspreche, während ich auf einer bestimmten Queststage bin, bekomme ich 50 Gold. Aber nur wenn die Queststage hochgenug ist.

Wenn sie nicht hochgenug ist, soll das Thema trotzdem da sein, aber man soll nichts bekommen. Außerdem soll, nachdem man die 50 Gold erhalten hat, die nächste Queststage angefangen werden.

Danke im Voraus :)


PS: Seite 666 :lol:
 
@OblivionBEE:
Einfach im result script (Beim Dialog)
Code:
Player.AddItem Gold 50
und
Code:
SetStage QUESTID STAGE
unter Condition machst du dann GetStage == STAGE

Nun der Fall wenn man der Stage nicht hoch genug ist.
Im selben Topic nochmal einen anderen glaub es hieß Response Text einfügen
da machst du dann als condition getstage dann deine quest auswählen und anstatt == nimmst du < und wieder die Selbe stage wie oben als Value
 
  • Like
Reaktionen: SkyrimBee
@Lord-Alex:
Du hast einige Referenz-Variablen, die du nicht brauchst und auch nicht setzt. Du deklarierst sie zwar, aber wenn du sie dann benutzt, kann nichts passieren, weil du ja keine Sachen darin gespeichert hast. Das wäre zum Beispiel "ref <activator>" und "ref <Kreaturen-beherrschen Spell>". Die Variable "me" ist außerdem das selbe wie "target" und daher auch überflüssig. Und was soll "set source to <Interior>" im Update-Block sein? Die Variable "source" ist nicht deklariert und ein Global-Referenzen gibt es nicht.
 
Ja das soweit richtig. Ich möchte doch nur wissen wie ich das schreiben kann. Das ich das Schwert1 abgeben dann ein Tag warten muss und dann Schwert2 bekomme. Mit dem Skript tausche ich es ja gleich. Also Schwert1 aufwerten Schwert2 fertig.

MFG
Sammael
 
Hab jetzt auf die Schnelle nichts Explizites gefunden.
Aber du könntest doch einfach alle Lichtquellen entfernen.
Was anderes wäre das PlugIn "ScreenEffects", weiß nicht, ob du das kennst. Bin mir jetzt zwar nicht ganz sicher, ob es da so eine Funktion gab... Da könntest du nachgucken. "ScreenEffects" benötigt allerdings den OBGE. Das wäre also ein zusätzliche Abhängigkeit...
Ansonsten könntest du es wie bei Nehrim machen und ein schwarzes Video abspielen lassen.
 
  • Like
Reaktionen: TheDarkRuler
Danke für den Hinweis ...
Hab aber gleich noch ein Problem.
Und zwar wird hier ein Script zwar bis zum Flackern der Effekte durchgeführt, stockt danach jedoch. Soll heißen: Die Sichtbarmachung der Gegner läuft nicht.

Es sei denn:
Ich tippe ingame EnablePlayerControls ein. Dann kommen die plötzlich.
Kann mir jemand sagen, was an meinem Skript nicht richtig ist?

Der Skript liegt auf einem Trigger-Objekt.

PHP:
scn aaDRCyra0HQ09Schacht02BrueckenTrigSCRIPT

Short DoOnce

Begin onTriggerActor player
	
If (DoOnce != 0)
	Return
Else
	DisablePlayerControls
	DRCyra0HQ01BrueckenWolkeREF01.PlayGroup Forward 0
	DRCyra0HQ01BrueckenWolkeREF02.PlayGroup Forward 0
	DRCyra0HQ01BrueckenWolkeREF03.PlayGroup Forward 0
	DRCyra0HQ01BrueckenWolkeREF04.PlayGroup Forward 0
	Let DoOnce := 1
Endif
End

Begin GameMode
	
If (DoOnce == 0)
	Return
Else
	If (DoOnce == 1)
		If (DRCyra0HQ01BrueckenWolkeREF01.IsAnimPlaying == 1)
			Return
		Else
			Let DoOnce := 2
		Endif
	Elseif (DoOnce == 2)
		DRCyra0HQ09TryMarREF01.Enable
		DRCyra0HQ09TryMarREF02.Enable
		DRCyra0HQ09TryMarREF03.Enable
		DRCyra0HQ09TryMarREF04.Enable
		Let DoOnce := 3
	Elseif (DoOnce == 3)
		DRCyra0HQ09TryMarREF04.StartConversation Player
		Let DoOnce := 4
	Elseif (DoOnce == 4)
		If (aaDRCyra009.YamukethTalk == 1)
			EnablePlayerControls
			Let DoOnce := 5
		Endif
	Endif
Endif
End

Noch ne Notiz am Rande:
aaDRCyra009.YamukethTalk wird im Resultskript des Dialogs hochgesetzt.
Also nicht wundern. ;)
 
Ich würde sagen, es liegt am "onTrigger-Block". Du setzt dort "doonce" auf 1 und im Folgenden befindet sich der Spieler immer noch in der Triggerbox, wo das Skript dann abgebrochen wird.
 
  • Like
Reaktionen: TheDarkRuler
Let ist ne OBSE-Variante von Set To.
Hab mich irgendwie dran gewöhnt. :D

Das EnablePlayerControls geht jetzt und auch alle Gegner kommen zurück.
Wundervoll :good:
 
  • Like
Reaktionen: Schmelz
@Diarrhoe
source ist der Name des activators (sorry, vergessen es auszutauschen)
Und dieser Block funktioniert auch einwandfrei (sobald ich den Block dazu gebe, dass das Projectile mein's ist, schießt er nicht einaml mehr, was er vorher noch getan hat)
 
Ja... keine Änderung...
Gibt es sonst noch eine Möglichkeit "Kreaturen begerrschen" aus das Ziel zu bringen, ohne den Zauber manuell zu zaubern?
 
Nicht das ich wüsste, aber eigentlich sollte ja auch der "normale" Weg über die Fraktionszugehörigkeit, veränderte Aggression und eine entsprechende AI reichen...

Btw. kann es sein, dass du an dem Skript schon ne ziemlich lange Zeit rumkrebst?