Construction Set Skriptthread zum Construction Set

hallo, ich bräuchte ein script, das ein video abspielt wenn man stirbt, aber nur solange man sich in der bestimmten quest befindet. Wenn man die Quest geschafft soll das video dann auch nicht mehr abgespielt werden...

Ich wäre dankbar für ein Skript, obwohl ich da eher pessimistisch bin, dass man das irgendwie hinkriegt.
 
So schwierig wird das nicht sein.

Code:
scn omgdasisteinscript

short okaymann
short onceplz

begin gamemode

if (getstage QUESTID >= 10 && getstage QUESTID < 100 && onceplz == 0)
set okaymann to 1
set onceplz to 1
endif

if (okaymann == 1 && player.getdead)
playbink "NAMEDESVIDEOS.bik" allowescapeflag
set okaymann to 2
endif

end

Allowescapeflag wäre hier optional, das ermöglicht den Abbruch des Videos durch ESC-Druck.
Das Video muss sich in Data\Video\ befinden und im .bik Format sein.

Hm, wäre es sinnvoller, "okaymann" auf 1 zu setzen, wenn player.getav health <= 0? Aber ich denke, das müsste mit getdead auch gehen, oder?
 
Zuletzt bearbeitet:
  • Like
Reaktionen: robinH
16000? *Lach* Au weia. Was ist denn da durcheinander gekommen? Es wundert mich auch das Du keine Antwort bekamst. Das Script dazu ist recht einfach:

scn Glueckspfennig ;name des Scriptes

begin gamemode ; --------------------------------------Lasse bei jeder Frame das Script durchlaufen

if player.getitemcount (Editor ID der Münze) >= 1 ; ---Wenn Spielers Münzenmenge 1 oder größer ist
player.modav luck 5 ;------------------------------------setze den Wert Glück 5 nach oben
endif
end

begin ondrop ;--------------------------------------------Frage ab, wenn Spieler Münze fallen lässt
player.modav luck -5 ;-----------------------------------setze Glück 5 nach unten.
end
ich denke das fett Geschriebene ist der Fehler.. darum bin ich auch auf 16000 gekommen :D weil das dann ja per Frame durchläuft.. und der Wert dann ziehmlich steigt oder? weil beim letzten mal wars so^^

Zur Liebe zur Performance und zum Vorbeugen von Fehlern:
Code:
scn Scriptname
 
Begin OnAdd player
player.modav luck 10
End
 
Begin OnRemove player
player.modav luck -10
End

Willst du wirklich Glück 16000, ersetzt du modav durch setav (in beiden Fällen) und die 10 und -10 in jeweils 16000 und -16000.

Gildur
den Code werde ich mal testen (sitz am falschen rechner, ty:)
das war eh ein Test Charakter^^ (und schon lange her, hab den Save eh nich mehr)
 
  • Like
Reaktionen: Nyarlat Ho Tep
ist es mköglich, dass inventar einer (toten) Creature oder einer Truhe in eine andere zu übertragen beim tod der Creature/beim Aktivieren?

Code:
scn x
Begin OnActivate / Begin OnDeath

...

end
was da oben steht, ist ja logisch. aber weiter? ich wüsste nicht mit welchem befehl ich Arbeiten muss. (Es sind Leveled-Items dabei)
 
Verräter

Hallo, in meinem Mod soll ein Verräter vorkommen.
Der Auslöser soll ein Buch sein. Ist dies auch mit einem Script zu lösen?
Avatar liest ein (neues) Buch, nach dem schliessen des Buches wechselt der “normale” Begleiter zu einem Gegner und wird den Avatar angreifen.
Vielen Dank für Eure Hilfe. :)
Meclaton
 
ich würde sagen:
Code:
short doonce

Begin OnActivate  ;falls das Buch auf dem Boden oder so rumliegt,sonst Begin OnEquip
if doonce == 0
<ref des Companions>.startcombat Player 
activate
endif
end
so müsste es gehen.

edit: es heisst übrigens die Mod, nicht der Mod.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Meclaton
Habe ein Script was zu langsam läuft, wie kann ich das schneller machen?

So bleibt das Licht noch eine Weile auch ausserhalb des Wassers an und umgekert schaltet es sich nicht so schnell an, wie gewünscht.

Wollte das sobald der Player unter Wasser ist, das das Licht angeht und sobald er oberhalb ist halt sofort ausgeht. Leider gibt es eine Verzögerung die ziemlich stört.

Code
scn 00WaterLightQuest

short loaded
short underwater

Begin Gamemode

;;game load
if getgameloaded
set loaded to 0
endif

;;reset

if loaded == 0
WaterlichtBlueReff.disable
set loaded to 1
endif

;;test Unterwasser

if player.isunderwater
set underwater to 1
else
set underwater to 0
endif

;;-------------------------------------------Lichtssteuerung

if underwater ==1
WaterlichtBlueReff.enable
else
WaterlichtBlueReff.disable
set underwater to 0
endif

End
----------------------------------------------

Als Priorität habe ich schon 1 angegeben. Bringt aber nichts. 0 oder 50 hat das selbe Ergebnis
 
Zuletzt bearbeitet:
1 als Priorität ist sehr niedrig;)
100 ist die höchste (bzw eine höhere macht keinen Unterschied zu 100).

Ansonsten kannst du das ganze mit fQuestDelayTime ändern.
Normal läuft das Script alle 5 Sekunden, deswegen deine Verzögerung.
 
  • Like
Reaktionen: robinH
Ich brauche ein Script das bewirkt, dass wenn ich z.B. 15 mal auf eine Zielscheibe (mit dem Bogen) geschossen habe, dass sich dann die Fertigkeit "Schütze" um einen Punkt verbessert. Genauso mit einer Puppe. Wenn ich 15 mal draufgedroschen habe, verbessert sich die Fertigkeit "Schwertkampf". Ist das möglich?
 
Für den Bogen benötigst du eine Triggerbox, auf die du (so oder so ähnlich) folgendes Script legst:
Code:
scn name

short init

Begin onTriggerMob
 if init < 15
  set init to ( init + 1 )
 else
  return
 endif
end

Begin GameMode
 if init >= 15
  player.setAV marksman to ( player.getAV marksman + 1 )
  set init to 0
 endif
end

Begin onReset
 set init to 0
end

Du musst dabei beachten, dass die Triggerbox wirklich nur ganz leicht über die Oberfläche der Schießscheibe ragt, weil der Spieler nicht da reinlaufen sollte, da der Trigger sonst auch ausgeführt wird... Man kann zwar "onTriggerMob" einschränken, indem man eine Objekt-ID angibt, aber dann müsstest du jeden möglichen Pfeil dort angeben, denn m.E.n. gibt es keinen CS-Oberbegriff für "Pfeile". Übrigens können auch Zauber den Trigger auslösen...


Für den Schwertkampf weiß ich keine Lösung, aber du könntest versuchen, einen NPC zu erstellen und diesem die Mesh der Puppe zuweisen. Dann müsstest du alle Dialoge des NPCs entfernen (eventuell, indem du ihm eine eigene Rasse erstellst). Auf den NPC kommt dann dieses Skript:
Code:
scn name

short init

Begin onHit player
 if init < 15
  set init to ( init + 1 )
 else
  return
 endif
end

Begin GameMode
 if init >= 15
  player.setAV blade to ( player.getAV balde + 1 )
  set init to 0
 endif
end

Begin onReset
 set init to 0
end

Weiß hierbei wirklich nicht, ob es klappt...
 
Zuletzt bearbeitet:
Im ersten Script könnte man noch die Abfrage
Code:
if (GetActionRef != player)
einbauen. Dann besteht das Problem mit dem Spieler als möglichem Auslöser nicht.
 
Die Deklaration - der Übersicht halber - nach vorne direkt hinter den Skriptnamen, da wo auch andere Variablen gewöhnlich deklariert sind...
Den Skript-Befehl zum Ändern der Variable schreibst du an die gewünschte Stelle...