Construction Set Skriptthread zum Construction Set

Hallo Leute

Ich bräuchte folgendes Script.

-Dieses Script wird auf ein Amulett gelegt.
-Wenn der Npc das Amulett bekommt, soll eine Animation für 360 sec ablaufen.
-Danach soll das Amulett automatisch aus dem Inventar entfernt werden.

Kann da jemand was für mich stricken? Ich tüftel schon lange, bekomme es aber nicht gebacken.

Hat den niemand Lust mir zu helfen? :cry:
 
versuchs nimm mal das als grundscript, ich kann ohne den editor nich richtig scripten ( befehle richtig schreiben usw)

Code:
scn amulettscript

short doonce
short timer

Begin OnAdd

if doonce == 0
set timer to 360
 player.PlayMagicShaderVisuals (IDdeseffektes)
endif
if timer == 360
 set timer to timer - get secondspassed
endif
if timer == 1
 player.StopMagicShaderVisuals (IDdeseffektes)
 set doonce to 1
 set timer to 0
 player.removeitem (iddesamulettes)
endif
end

irgendwie so sollte es funktionieren, du solltest idch vill mal nen bisschen genauer bezüglich des effektes ausdrücken, soll der effekt beim player abgespielt werden oder wie?
 
  • Like
Reaktionen: Eddy Kaschinski
Code:
scn amulettscript

short doonce
short timer

Begin OnAdd

if doonce == 0
set timer to 360
 player.PlayMagicShaderVisuals (IDdeseffektes)
endif
if timer > 0
 set timer to timer - getsecondspassed

elseif timer <= 0
 player.StopMagicShaderVisuals (IDdeseffektes)
 set doonce to 1
 player.removeitem (iddesamulettes)
endif
end

Versuch es lieber so ;)
 
  • Like
Reaktionen: Eddy Kaschinski
Also ich hatte mich vor ein paar Tagen wegen diesem Skript für eine brennende Waffe erkundigt... naja, also dieses Skript hier (was glaub ich das letzte war, welches in meiner Sache gepostet wurde):

scriptname Flammenwaffe

Begin OnEquip
Player.PlayMagicShaderVisuals effectAtronachFlame
end

Begin OnUnEquip
Player.StopMagicShaderVisuals effectAtronachFlame
end

das funktioniert an und für sich schon, aber es hat nicht den Effekt, den ich wollte, da nicht die Waffe, sondern der Spieler brennt... eigentlich wollte ich ja, dass nur die Waffe brennt. Das "Player" durch "Weapon" ersetzen bringt wohl nichts oder?

ich fühl mich langsam irgendwie langsam chronisch übergangen :roll:

\EDIT
hab ich vergessen zu erwähnen (->@Vampirlord), wenn ich "Player" durch die waffenID ersetze, lässt sich das skript nicht mehr speichern
\\edit
ähm... vllt bin ich schwer von begriff, aber wenn ich "player" durch die Reference Editor ID ersetze, dann lässt sich das skript nicht speichrn... - muss vor der ID vllt davor irgendwas stehen?



Ach, ne andere Sache noch:

Kann man per Skript irgendwie den Wasserspiegel einer Interior-Zelle hochsetzen? Also dass ich im Interior nen schalter drücke und dadurch der Wasserspiegel angehoben wird. Geht das?
 
Zuletzt bearbeitet:
Probier mal anstatt Player die ID der Waffe, vlt. hilft das was. Kenn mich mit Shader-Effekte leider nciht aus, sorry.
 
Hallo Leute

Ich bräuchte folgendes Script.

-Dieses Script wird auf ein Amulett gelegt.
-Wenn der Npc das Amulett bekommt, soll eine Animation für 360 sec ablaufen.
-Danach soll das Amulett automatisch aus dem Inventar entfernt werden.

Kann da jemand was für mich stricken? Ich tüftel schon lange, bekomme es aber nicht gebacken.

Code:
scn AmulettScript

short Stage
float Timer

Begin OnAdd [Ref-ID des NPC]
 set Stage to 1
 set Timer to 360
 [Ref-ID des NPC].PlayGroup [Animation]
End

Begin Gamemode
 if ( Stage )
  if ( Timer > 0 )
   set Timer to ( Timer - GetSecondsPassed )
  else
   RemoveMe
  endif
 endif
End
Wie genau das mit dem PlayGroup funktioniert kann ich dir aber nicht sagen.
Für genauere Informationen kannst du dir ja mal die Wiki-Seite dazu anschauen, oder du schaust bei Animations-PIs (z.B. Actors in Charge) nach wie das da gelöst wurde.

Also ich hatte mich vor ein paar Tagen wegen diesem Skript für eine brennende Waffe erkundigt... naja, also dieses Skript hier (was glaub ich das letzte war, welches in meiner Sache gepostet wurde):

scriptname Flammenwaffe

Begin OnEquip
Player.PlayMagicShaderVisuals effectAtronachFlame
end

Begin OnUnEquip
Player.StopMagicShaderVisuals effectAtronachFlame
end

das funktioniert an und für sich schon, aber es hat nicht den Effekt, den ich wollte, da nicht die Waffe, sondern der Spieler brennt... eigentlich wollte ich ja, dass nur die Waffe brennt. Das "Player" durch "Weapon" ersetzen bringt wohl nichts oder?

ich fühl mich langsam irgendwie langsam chronisch übergangen :roll:

\EDIT
hab ich vergessen zu erwähnen (->@Vampirlord), wenn ich "Player" durch die waffenID ersetze, lässt sich das skript nicht mehr speichern

Mir ist keine Möglichkeit bekannt das zu lösen. Dass du Player nicht durch die Weapon-ID ersetzten kannst liegt daran, dass Objekte im Inventar keine Referenzen sind. Da bei PlayMagicShaderEffect aber eine Referenz vorrausgesetzt wird gibt es keine Möglichkeit das auf die Waffe zu übertragen. :(
Das einzige was annähernd den von dir gewünschten Effekt erzielen könnte wäre der Waffe eine Feuerschaden-Verzauberung zu verpassen.

Ach, ne andere Sache noch:
Kann man per Skript irgendwie den Wasserspiegel einer Interior-Zelle hochsetzen? Also dass ich im Interior nen schalter drücke und dadurch der Wasserspiegel angehoben wird. Geht das?

Du könntest alles in der Zelle runtersetzten, das hätte den gleichen Effekt.
Direkt die Wasserhöhe kann man aber (noch) nicht mittels Scripts beeinflussen.
 
Wow - wie im richtigen Leben. Erst bekommt man nix, und dann gleich drei Lösungsvorschläge. ;)

Vielen Dank an euch alle. Werde morgen alle drei ausprobieren und berichten.

Thanx


Edit:

Also es geht nicht um einen Shader Effect. Der NPC soll eine Animation abspielen, wenn er das Amulett erhält, er soll Tanzen. Wenn er dann angeklickt wird spätestens nach 360 sec soll es aufhören und das Amulett aus seinem Inventar verschwinden.

Ich beschreibe einmal die Situation:

In einem Palast stehen Tänzerinnen zur Unterhaltung. Der Player beginnt das Gespräch. Der Player möchte das für ihn getanzt wird. Ouest/Topic/Result Script kommt der Befehl hinein: NPC.additem TanzAmulett

Nun greift das Script, welches auf dem Amulett liegt.

Der NPC fängt an zu tanzen - für max 360 sec.
Der NPC hört mit dem Tanzen auf wenn: Er angeklickt wird ODER wenn 360sec vorbei sind.
Nun verschwindet das Tanzamulett aus dem Inventar des NPCs.
Es kann wieder von vorn beginnen.

Jeder Tänzer bekommt ein ganz bestimmtes Tanzamulett und eine ganz bestimmte Animation zugewiesen.

Edit:
Ich habe gerade gelesen, das der Befehl SetAlert hinein muß! Sonst spielt der NPC die Animation nicht ab.
Danke nochmals für eure Hilfe.
(Warum könnt ihr so gut Scripten? Woher könnt ihr das? Beneidenswert.......)
 
Zuletzt bearbeitet:
Ich hab auch mal ne frage:

Ich hab mir ne eigene worldspace gemacht, und da nur so ne kleine Plattform rein.
Auf der Platform hab ich nen Trigger raufgestellt der beim berühren nen Goblin aktivieren soll, also mit enable sichtbar machen.
Dann noch ein Globaler script der den goblin disablen soll.
(Damit er erst auftaucht wenn ich in den trigger laufe.)
Da is schon das Problem:huh:
Wenn ich die worldspace betrete dann is der Goblin da.
Zum test hab ich dann im ersten script der den goblin hermachen soll noch dazugeschrieben das die Tür durch der ich gekommen bin weggemacht wird.
Der Script funktioniert weil die Tür is weg und ich bin gefangen mit nen Goblin.
Kann mir bitte einer mit dem globalen script helfen??
Jetzt schon mal danke!
Trisaster
 
@low Post

naja, jedenfalls danke und auch den anderen, die mir hier geholfen haben^^. Hab das vorhin nochmal mit dem Skript probiert, welches ich oben gepostet hatte. Ich dachte mir nämlich, dass der Shader, den ich ursprünglich sowieso auf die Waffe haben wollte doch wohl genauso ein Effekt ist, wie der FlameAttronach zum beispiel, nur dass er halt optisch nur auf der Waffe liegt, weshalb ich den gewünschten effekt eigentlich bekommen sollte, wenn ich den richtigen Effekt mir raussuche und in das skript einsetze... naja, der Haken an der Sache ist, dass grade der gewünschte Effekt (nämlich der von "Waffe auflösen") in der Liste der ganzen Shader Effekte im cs nicht angezeigt wird. Da gibts nur DisintegrateArmor, aber kein DisintegrateWeapon. Das kuriose ist, dass es den Effekt "WaffeAuflösen" in der Liste gibt, wenn ich ner Verzauberung ein Skript gebe und dann diesem Skript einen Shadereffekt zuweisen kann (also im Enchantment-Menü). Das blöde wiederum hier: der Shader von "Waffe auflösen" wurde bisher nicht angezeigt und wenn ich im Skript selber der Verzauberung/der Waffe einen bestimmten Effekt zuweisen will, wird das Skript ignoriert und stets nur der Effekt den ich dem Skrippt zuweise angezeigt, das aber, wie gesagt, nur beschränkt -.-

Ach und das mit dem Wasser... was heißt hier "noch" nicht ?^^ bzw. wie sähe ein Skript aus, welches alle Objekt in der Zelle um so und so viel nach oben versetzt?
 
Also ich habe folgendes Script ausprobiert.
Einstellungen: Quest/Topic/Result Script: SaphiriaRef.AddItem 00DanceAmulett

Dann das Script unten auf das Amulett gelegt. Ich habe den Timer von 360 auf 3 gestellt, damit ich nicht so lange warten muss ob es funktioniert.

Funktioniert nicht. Der NPC bekommt das Amulett und fängt erst nach 30sec an zu tanzen. Das Amulett wird auch nicht aus seinem Inventar entfernt. Wenn ich es ihm manuell wegnehme, hört er sofort auf zu tanzen.

Verbesserungsvorschläge?

PHP:
Scriptname SaphiriaDanceScript

short Stage 
float Timer 

Begin OnAdd SaphiriaRef 

set Stage to 1 
set Timer to 3
set SaphiriaDanceAnimation to 101 

End 

Begin Gamemode 
if ( Stage ) 
if ( Timer > 0 ) 
set Timer to ( Timer - GetSecondsPassed ) 
else 
RemoveItem 00DanceAmulett 1 
endif 
endif 
End
 
@low Post

naja, jedenfalls danke und auch den anderen, die mir hier geholfen haben^^. Hab das vorhin nochmal mit dem Skript probiert, welches ich oben gepostet hatte. Ich dachte mir nämlich, dass der Shader ... - - - etc ... etc - - - ... und stets nur der Effekt den ich dem Skrippt zuweise angezeigt, das aber, wie gesagt, nur beschränkt -.-

Ach und das mit dem Wasser... was heißt hier "noch" nicht ?^^ bzw. wie sähe ein Skript aus, welches alle Objekt in der Zelle um so und so viel nach oben versetzt?

Also irgendwie glaub ich, dass ich das jetzt anders mache, das wird mir langsam zu dumm mit dem Shader auf der Waffe. Wies aussieht isses einfacher, wenn ich besagten Zauber (also Waffe auflösen) ganz einfach mit einem sehr geringen Wert auf mich selbst caste. Da der Shader ja eh unabhängig von der Stärke des Effekts ist, geht das auch.

Dem entsprechend bräuchte ich allerdings ein Skript, welches im Prinzip die stinknormale Verzauberung beinhaltet, also zum Beispiel: "Waffe auflösen 1 Punkt an selbst". Der Sinn davon? Naja, eigentlich rein kosmetisch. Würde halt besser aussehen, wenn im Tooltip der Waffe ingame eine passende, epische Bezeichnung steht, anstatt diesem "Waffe auflösen 1 Punkt an selbst" ^^

Ach, was mir grad einfällt und was der eigentliche plausible Grund ist: Zauber, die auf mich selbst wirken, kann ich ja über ne Verzauberung auf ner Waffe nicht auf mich selbst anwenden, weshalb dieser Zauber in ein Skript müsste, welches ich dann ja der Waffe verpassen kann.


Hier hab ich mal den reinen zauber eben deshalb auf ein paar Handschuhe gelegt, was äußerlich genau den gewünschten Effekt hat, nämlich, dass die Waffe in der Hand brennt. Dieder Zauber soll dann in ein Skript, damit ich die Waffe selber damit versehen kann und nicht immer noch irgendein Kleidungs-Item brauche, damit ich den Effekt habe.
 
Zuletzt bearbeitet:
Mach das ganze doch als "Greater Power" oder eine Fähigkeit, die der Spieler bei Spielbeginn hinzugefügt bekommt.
 
Habe das nächste Script ausprobiert. Leider der gleiche Effect. Habe auch hier den Timer auf 10sec gesetzt, damit ich nicht so lange warten muss ob es funktioniert.

+NPC bekommt das Amulett
-Animation beginnt erst nach ca 30sec
-Timer funktioniert nicht
-Amulett wird nicht aus dem Inventar entfernt

Hier das 2te Script das ihr vorgeschlagen habt:
PHP:
Scriptname SaphiriaDanceScript

short doonce
short timer

Begin OnAdd SaphiriaRef

if doonce == 0
set timer to 10
set SaphiriaDanceAnimation to 101
pickidle SaphiriaDance1
endif
if timer > 0
set timer to timer - getsecondspassed

elseif timer <= 0
set doonce to 1
SaphiriaRef.removeitem 00DanceAmulett 1
endif
end
 
Und hier das dritte Script. Auch hier habe ich den Timer heruntergesetzt, damit ich nicht so lange warten muss ob es funktioniert.

+NPC bekommt das Amulett
+Animation startet

-Animation startet erst nach 30sec
-Amulett wird nicht entfernt
-Timer funktioniert nicht

PHP:
Scriptname SaphiriaDanceScript

short doonce
short timer

Begin OnAdd SaphiriaRef

if doonce == 0
set timer to 30
set SaphiriaDanceAnimation to 101
pickIdle SaphiriaDance1
endif
if timer == 30
set timer to timer - getsecondspassed
endif
if timer == 1
;player.StopMagicShaderVisuals (IDdeseffektes)
set doonce to 1
set timer to 0
SaphiriaRef.removeitem 00DanceAmulett 1
endif
end

Hat jemand Verbesserungsvorschläge oder eine Idee?

Jetzt schon einmal vielen Dank an die Scripter
 
Zuletzt bearbeitet:
Hallo alle zusammen :)

Ich möchte einen NPC erstellen. Wenn man in dessen Nähe kommt, soll ein Sound abgespielt werden.

Weiss vielleicht da jemand ein Script dafür?

Danke schonmal im Vorraus :)

MfG Basch III
 
Könnte bitte jemand diesen Script korrigieren/ergänzen. Danke.
Code:
scn 01AARavynBookScript

begin onadd player

          01IvRavyn.setav aggression 100
          01IvRavyn.startcombat player
          disable

end
 
Hm....Ich vermute, O1Ravyn ist eine Ref-Id oder?

Wenn ja, änder die Ref-Id auf AARavyn und korrigier das im Script und es sollte gehen.
 
Hallo alle zusammen :)

Ich möchte einen NPC erstellen. Wenn man in dessen Nähe kommt, soll ein Sound abgespielt werden.

Weiss vielleicht da jemand ein Script dafür?

Danke schonmal im Vorraus :)

MfG Basch III

versuch mal das hier:
Code:
scn npcscript

short doonce

Begin Gamemode
if ( player.getdistance [Ref des NPC] =< [Gewünschte distanz zum npc] ) && ( doonce == 0 )
 PlaySound [SoundID]
set doonce to 1
endif
end
wenn der sound immer abgespielt werden soll also nicht nur einmal das doonce weglassen
 
Hallo.

Ich bräuchte eine Korrektur für eine Script, die nicht richtig funktioniert.

Es geht darum, das wenn der player eine Keule aufnehmen will, eine Messagebox auftaucht und das Aufnehmen verhindert. Wenn der player die Keule wieder versucht aufzunhemen, soll eine andere Messagebox auftauchen. Und wenn der player die Keule ein drittes mal aufnehmen will, soll erst eine neue Messagebox auftauchen, ein NPC soll per placeatme gespawnt werden und dann soll eine 4. Messagebox auftauchen.

Script:

Code:
Scn 1Nichtnehmen
 
Begin OnActivate
 
If IsActionRef player == 1
    Messagebox "blablabla"
endif
 
If IsActionRef player == 1
    Messagebox "blablabla 2"
endif
 
If IsActionRef player == 1
    Messagebox "blablabla 3"
    player.placeatme [nummer] 1
    Messagebox "blablabla 4"
endif
 
 
End

Ich wette, ich hab da nur einen blöden Fehler gemacht.