Construction Set Skriptthread zum Construction Set

Wie lange hält er denn an? Probiers sonst mal so:
Code:
scn name

short next

Begin onActivate
 if next == 0
  set next to 1
 endif
end

Begin GameMode
 if next == 0
  return
 else
  triggerHitShader <Strength>
 endif
end

Wenn der irgendwann stoppen soll, musst du "next" nur auf 0 setzen...
 
  • Like
Reaktionen: death-lord
Wie lange hält er denn an? Probiers sonst mal so:
Code:
scn name

short next

Begin onActivate
 if next == 0
  set next to 1
 endif
end

Begin GameMode
 if next == 0
  return
 else
  triggerHitShader <Strength>
 endif
end
Wenn der irgendwann stoppen soll, musst du "next" nur auf 0 setzen...
THX das problem ist gelöst. Jetzt habe ich das alles in ein magic effect gepackt, da ich merkte das es so besser geht. Jedesmal wenn der effect startet bzw. ich Skomma trinke soll "sucht "(Global)erhöht werden. Das tut es aber nicht... Wenn ich nach einiger zeit kein skomma getrunken habe falle ich ihn ohnmacht genauso wie wenn ich zu viel getrunken hab.
Code:
scn suchtscript

short doonce
short trinken
float timer

begin scripteffectstart
if doonce == 1 
player.removespell skooma
set doonce to 0
endif
if sucht == 0
set sucht to 1
return
endif
if sucht == 2
set sucht to 3
return
endif
if sucht == 3

if timer < 300 && doonce == 0
    set timer to timer
elseif doonce == 0
    messagebox "Nehmt schnellst möglich Skooma zu euch!"
    set doonce to 1
    player.addspell skooma
elseif timer == 500 && doonce == 1
    set timer to 0
    set doonce to 0
    SetPCSleepHours 12
Messagebox "Ihr habt zu lange kein Skooma getrunken und seid in Ohnmacht gefallen."
set sucht to 4 
return
endif
if sucht == 4
 
if timer < 200 && doonce == 0
    set timer to timer
elseif doonce == 0
    messagebox "Nehmt schnellst möglich Skooma zu euch!"
    set doonce to 1
    player.addspell skooma
elseif timer == 300 && doonce == 1
    set timer to 0
    set doonce to 0
    SetPCSleepHours 12
Messagebox "Ihr habt zu lange kein Skooma getrunken und seid in Ohnmacht gefallen."
set sucht to 5
return
endif
if sucht == 5

if timer < 300 && doonce == 0
    set timer to timer
elseif doonce == 0
    set doonce to 1
elseif timer == 500 && doonce == 1
    set timer to 0
    set doonce to 0
    SetPCSleepHours 12
Messagebox "Ihr habt zu viel Skooma getrunken und seid in Ohnmacht gefallen."
return
endif
endif 
endif
endif
end

begin scripteffectupdate
if sucht == 2
 triggerHitShader 5
elseif sucht == 3
 triggerHitShader 35
elseif sucht == 4 
 triggerHitShader 75
endif
if triggerHitShader == 0 && sucht == 2
 triggerHitShader 5
endif
if triggerHitShader == 20 && sucht == 3
 triggerHitShader 35
endif
if triggerHitShader == 60 && sucht == 4
 triggerHitShader 75
endif

end
Hoffe ihr findet den fehler
 
Schau dir mal Suit Survival an. In der mod ist das wunderbar gelöst. Warum immer das Rad neu erfinden.
http://www.tesnexus.com/downloads/file.php?id=2436

Man beachte mal das alter der Mod. Doch diese ist in meinen Augen die beste Lösung von allen anderen die es so gibt.
Danke, aber ich "erfinde" den effekt ja nicht wirklich neu. Ich möchte ihn halt an meine vorstellungen anpassen und NICHTS kopieren. Da ich sonst mit uhrheberrechten in konflikt komme. Sonst gäbe es noch die möglichkeit das man die mod auch mitladen muss, das wären aber zu viele mods die man dann mitladen müsste.
 
jkann mir niemand helfen?
Mein Prob:
THX das problem ist gelöst. Jetzt habe ich das alles in ein magic effect gepackt, da ich merkte das es so besser geht. Jedesmal wenn der effect startet bzw. ich Skomma trinke soll "sucht "(Global)erhöht werden. Das tut es aber nicht... Wenn ich nach einiger zeit kein skomma getrunken habe falle ich ihn ohnmacht genauso wie wenn ich zu viel getrunken hab.
Code:
scn suchtscript

short doonce
short trinken
float timer

begin scripteffectstart
if doonce == 1 
player.removespell skooma
set doonce to 0
endif
if sucht == 0
set sucht to 1
return
endif
if sucht == 2
set sucht to 3
return
endif
if sucht == 3

if timer < 300 && doonce == 0
    set timer to timer
elseif doonce == 0
    messagebox "Nehmt schnellst möglich Skooma zu euch!"
    set doonce to 1
    player.addspell skooma
elseif timer == 500 && doonce == 1
    set timer to 0
    set doonce to 0
    SetPCSleepHours 12
Messagebox "Ihr habt zu lange kein Skooma getrunken und seid in Ohnmacht  gefallen."
set sucht to 4 
return
endif
if sucht == 4
 
if timer < 200 && doonce == 0
    set timer to timer
elseif doonce == 0
    messagebox "Nehmt schnellst möglich Skooma zu euch!"
    set doonce to 1
    player.addspell skooma
elseif timer == 300 && doonce == 1
    set timer to 0
    set doonce to 0
    SetPCSleepHours 12
Messagebox "Ihr habt zu lange kein Skooma getrunken und seid in Ohnmacht  gefallen."
set sucht to 5
return
endif
if sucht == 5

if timer < 300 && doonce == 0
    set timer to timer
elseif doonce == 0
    set doonce to 1
elseif timer == 500 && doonce == 1
    set timer to 0
    set doonce to 0
    SetPCSleepHours 12
Messagebox "Ihr habt zu viel Skooma getrunken und seid in Ohnmacht  gefallen."
return
endif
endif 
endif
endif
end

begin scripteffectupdate
if sucht == 2
 triggerHitShader 5
elseif sucht == 3
 triggerHitShader 35
elseif sucht == 4 
 triggerHitShader 75
endif
if triggerHitShader == 0 && sucht == 2
 triggerHitShader 5
endif
if triggerHitShader == 20 && sucht == 3
 triggerHitShader 35
endif
if triggerHitShader == 60 && sucht == 4
 triggerHitShader 75
endif

end
Hoffe ihr findet den fehler
 
So folgende Fehler hab ich gefunden:

1.Deine Global "sucht" wird nur auf 1 gesetzt und nicht auf 2 damit meine ich dass nirgendwo in deinem Script steht "set sucht to 2" was zur Folge hat das dein Block If sucht==2 nicht läuft... .
Falls du willst dass Sucht wie ein Zähler weiter nach oben gesetzt wird musst du : "Set sucht to sucht +1" statt "set sucht to 1" schreiben, wenn "sucht" in diesem Falle jetzt 1 wär dann würde sucht jetzt auf 2 gesetzt werden wenn es nur heißen würde "set sucht to 1" dann wird sich an dem Wert nichts ändern (sucht wird dann immer nur auf 1 gesetzt dein "If sucht==2" würde dann niemals eintreten...

2. Hast du nur geschrieben set timer to timer
dass würde in Zahlen ausgedrückt einfach nur heißen set 0 to 0 ( timer würde seinen Wert behalten und immer 0 bleiben..)wenn du aber willst dass dein timer auch wircklich ein timer ist musst du folgendes machen:

a)Wenn du willst dass er wie ein Countdown läuft: Set timer to timer - Getsecondspassed ; dass bewirkt dass der timer immer wenn eine Sekunde vorbei ist -1 zurück gezählt wird.

b)Wenn du willst dass er wie ein Zähler läuft : set timer to timer + Getsecondspassed


Hoffe dass ich dir helfen konnte....
 
Zuletzt bearbeitet:
  • Like
Reaktionen: death-lord
Gibt es einen Script-Befehl, der der Search & Replace - Funktion vom CS gleich kommt? Kann auch ruhig OBSE-Abhängig sein.

Bevor ihr fragt, warum ich nicht einfach die Funktion im CS verwende: Ich möchte, dass die ganze Anzahl des im Spiel platzierten Gegenstandes, auch die von Mods eingefügten, durch einen anderen ersetzt werden.
 
Wie müsste mein Script dann aussehen, wenn ich z.B. das Objekt "WolfRug" (unter Statics) durch das Objekt "DUNStool" (unter Furniture) ersetzen will (auch, wenn das jetzt keinen Sinn ergibt)?

Ich werde nämlich aus der englischen Beschreibung von GetFirstRef/NextRef nicht schlau :?
 
habe mal meine Translator drübergeschickt. Der meinte dies
Zurück die erste Verweisung in der gegenwärtigen Zelle; Gebrauch mit GetNextRef, um alle Verweisungen der Zelle zu scannen.. Ein Typ kann fakultativ geliefert werden, um nur Verweisungen zurückzugeben, die diesen Typ vergleichen. Zusätzlich können Sie 69 für Schauspieler und 70 für Warenbestand-Artikel gehen. Eine fakultative Zellentiefe kann geliefert werden, um die Zahl von angrenzenden Zellen anzugeben, um in Äußeren zu scannen; eine Zellentiefe von 1 Ansehen die gegenwärtige Zelle des Spielers plus 8 angrenzende Zellen, eine Tiefe von 2 Ansehen die Zelle des Spielers plus 25 angrenzende Zellen. Standardmäßig werden untätige Verweisungen auf Artikel, die vorher von einem Schauspieler aufgenommen wurden, ignoriert; der Übergang 1 für den dritten Parameter wird jene Verweisungen zwingen, eingeschlossen zu werden.
d.h. der sucht nach einerr bestimmten ref ind er zelle. Hoffe ich konnte helfen ;)
 
  • Like
Reaktionen: bjoernret
Ein bestimmtes oder alle in ganz Tamriel. Letzteres halte ich nicht für möglich, weil auch "getFirstRef"/"getNextRef" nicht über Worldspacegrenzen hinausgehen dürfte, sondern nur Zellenintern - und in Exteriors Worldspaceintern - angewendet werden kann...
 
  • Like
Reaktionen: bjoernret
Danke erstmal, aber soweit bin ich mit meinem Englisch auch gekommen ;)

Nur verstehe ich nicht, wie ich den Scriptbefehl in das Script einfügen soll, so dass ein Gegenstand eines Typs durch einen anderen Gegenstand ersetzt wird. :?

(Mit der englischen Beschreibung meinte ich den Code-Bereich)