Construction Set Skriptthread zum Construction Set

Code:
scn sprintscript

short erstesw
float timer

Begin Gamemode

if OnKeyDown 17 ; W
set erstesw to 1
set timer to 2
endif

if onkeydown 17 && erstesw == 1 && timer >= 0
player.modav speed 120
set erstesw to 2
Set timer to -1
endif

if (Player.GetAv Endurance <= 0 (wie formuliert man das?) || player.isrunning == 0 && erstesw == 2) 
player.modav speed -120
set erstesw to 0
endif

If timer >= 0 && erstesw == 1
Set timer to timer - GetSecondsPassed

End

Das habe ich mal ausprobiert. Hat nicht geklappt.
Doppel-W hatte keine Wirkung.
Vielleicht ist OnKeyDown nicht der richtige Befehl?
 
du könntest ja nutzen:
IsKeyPressed2 mit dem dazugehörigen DX Scan Code und dann einen Delay einbauen.
als bsp so:

Code:
If IsKeyPressed 17
Set Delay to Delay + 1
If ((Delay == 1 || Delay == 2) && IsKeyPressed2 17)
; Ausdauerr runter oder was du willst
endif
endif
 
Also mein Script sieht jetzt so aus:
Questscript:
scn sprintenscript

short aufhalten
short doonce
short delay

Begin Gamemode

if iskeypressed 17
set delay to delay + 1
endif

if ((delay == 1 || delay == 2) && iskeypressed2 17)

if doonce == 0
player.modav speed 120
set doonce to 1
endif

player.modav2 fatigue -5
set aufhalten to 1
endif

if ((Player.GetAv Endurance <= 0 && aufhalten == 1) || (player.isrunning == 0 && aufhalten == 1))
player.modav speed -120
set aufhalten to 0
set doonce to 0
set delay to 0
endif

End

Ich teste den jetzt mal. Nun müsste doch eigentlich alles abgesichert sein, oder? Wenn er das Doppel-W erstmal nimmt, ist's eigentlich geschafft.

Edit: Argh, es hat sich wieder nichts getan.
 
Zuletzt bearbeitet:
hallöchen^^

ich wollte mal fragen ob mir jemand mit meinem script helfen kann^^

Code:
scn cmReanimation

begin onactivate Player

cmReanimationStone.enable
cmReanimationStone.cast cmReanimationSpell cmDeathmarker
cmTSMonster01.enable
cmTSMonster02.enable
cmTSMonster03.enable
cmTSMonster04.enable
cmTSMonster05.enable
cmReanimationStone.disable

end

und zwar hätte ich dort gerne eine Zeitverzögerung drin, habe aber leider grade keine idee wie ich das machen soll:

Code:
scn cmReanimation

begin onactivate Player

cmReanimationStone.enable
// warte x sekunden
cmReanimationStone.cast cmReanimationSpell cmDeathmarker
cmTSMonster01.enable
cmTSMonster02.enable
cmTSMonster03.enable
cmTSMonster04.enable
cmTSMonster05.enable
//warte x sekunden
cmReanimationStone.disable

end

achja und dann habe ich noch ein anderes Problem. Und zwar soll dieser Spell ja auf 'cmdeathmarker' gecastet werden. nur irgendwie funktioniert das nicht. 'cmdeathmarker ist ein xmarker den ich in einem raum platziert habe, aber der Spell wird irgendwo ins nirvana gecastet. weiß jemand woran das liegt bzw wie ich das problem lösen kann?

danke schon mal im voraus.

takbir
 
Code:
scn cmReanimation

float timer
short step

begin onactivate Player
set timer to 30
set step to 1
cmReanimationStone.enable
End

Begin GameMode
If timer >= 0
set timer to timer - getsecondspassed
Endif

If timer <= 10 && step == 1
[COLOR="DarkOliveGreen"]set step to 2
cmReanimationStone.cast cmReanimationSpell cmDeathmarker
cmTSMonster01.enable
cmTSMonster02.enable
cmTSMonster03.enable
cmTSMonster04.enable
cmTSMonster05.enable[/COLOR]
Elseif timer <= 0 && step == 2
[COLOR="Red"]set step to 0
cmReanimationStone.disable[/COLOR]
Endif
End
Der timer wird zu Beginn auf 30 Sekunden gesetzt Nach 20 Sekunden wird der grüne Teil ausgeführt, und 10 Sekunden danach der rote Teil.

Warum der Zauber irgendwohin gezaubert wird, weiß ich leider nicht.

@ Rakios: Probier mal das:

Code:
scn sprintenscript

short aufhalten
short doonce
float delay

Begin Gamemode
If delay >= 0
set delay to delay - getsecondspassed
Elseif delay <= 0
set doonce to 0
Endif

if (delay <= 0) && (iskeypressed2 17 == 1) && (doonce == 0)
set delay to 2
set doonce to 1
Else
If (doonce == 1) && (iskeypressed2 17 == 0) && (delay > 0)
set doonce to 2
Elseif (doonce == 2) && (iskeypressed2 17 == 1) && (delay > 0)
set doonce to 3
Endif
endif

if doonce == 3
player.modav speed 120
set doonce to 0
player.modav2 fatigue -5
set aufhalten to 1
endif

if (Player.GetAv Endurance <= 0 && aufhalten == 1) || (player.isrunning == 0 && aufhalten == 1)
player.modav speed -120
set aufhalten to 0
set doonce to 0
set delay to 0
endif

End
 
Zuletzt bearbeitet:
  • Like
Reaktionen: takbir
Betreffend des Zaubers: Wenn ein Zauber per Cast-Command von oder auf einem "Nicht-Activator" oder "Npc" gezaubert wird, passiert das.

Betreffen des Sprintens: Nimm doch einfach eine unbelegte Taste, z.B Großschreibrechts.
 
Betreffen des Sprintens: Nimm doch einfach eine unbelegte Taste, z.B Großschreibrechts.
Da kann ich ja gleich "OBSE - Sprinten" nutzen.
Ich wollte ja, dass der Spieler zwei mal auf "Rennen" drücken muss, damit er schnell rennt, was aber Audauer kostet.
Genau das gibt es in Star Wars BattleFront II, und das fand dich genial und wollte es hier auch haben.

Aber Oblivion scheint Doppeldrückungen nicht mitzukriegen.
 
Ich würde einen Activator nehmen, den winzig klein machen (nicht disablen) und den als Target benutzen. Das fällt nicht auf, funktioniert aber.
 
  • Like
Reaktionen: takbir
Und direkt auf oder sogar etwas unter den Boden setzen.

Bei einem NPC würde der Zauber nämlich auf den Oberkörper gehen (wenn er normal im Raum steht) und das sähe wohl etwas merkwürdig aus^^
 
Ich hätte da zwei Fragen zu einem Script. Dem hier um genau zu sein :-D

PHP:
Scriptname Toröffner

short opened
short path
ref myself

Begin OnActivate
set myself to getself
if opened == 0

	Trigger01.playgroup forward, 1
	Gate01.playgroup forward, 1
	set opened to 1
	enablelinkedpathpoints
endif

end

Begin OnActivate
set myself to getself
if opened == 1

	Trigger01.playgroup backward, 1
	Gate.playgroup backward, 1
	set opened to 0
	disablelinkedpathpoints
endif

end

Meine erste Frage wäre, wie ich es schaffe, dass sich das Ding auch wieder schliessen lässt :?

Und wie kann ich es machen, dass es nur von einem NPC und KEINEM Anderen benutzt werden kann?

Danke schonmal im Vorraus ;)

Basch III
 
Also eigentlich sollte sich das beim zweiten Aktivieren wieder schließen.

Und das mit dem bestimmten NPC geht, wenn du die ID abfragst.
Dazu baust du in den if-Block noch diesen Befehl/Abfrage mit ein:
IsActionREF
 
Könnte es sein, dass es nicht funktioniert, weil ich das Kvatchtor genommen habe?

@Knochenkeule, danke für die Info :)

Und werden dann nur die Pathpoints getrennt, die durch das Tor gehen, oder alle?
Hab's noch nicht ausprobiert...

Wie kriege ich es hin, dass ein NPC einen Schalter nur einmal aktiviert und nicht eine volle Stunde lang?
 
Zuletzt bearbeitet:
Wenn du für die Pathgrids noch nichts eingestellt hast, werden vermutlich noch gar keine gelöscht.

Man kann, wenn man den Pathgrid-Modus im CS aktiviert hat, mit r (meine ich) so rosa Verbindungen mit dann jeweils einer kleinen Box umd die Punkte setzen und noch einiges einstellen.
Da kann ich idr aber nicht mehr zu sagen, weil ich das bisher noch nicht benötigt und deswegen auch nicht gemacht habe.
Vielleicht hilft dir das hier:
http://cs.elderscrolls.com/constwiki/index.php/Category:Path_Grids
 
Ich hab mit ein paar MessageBoxen Probleme und zwar verwende ich Variablen mit "%0f". Eigentlich sollten ja keine Dezimalstellen zu sehen sein. Sind sie aber doch.
Jemand ne Idee woran das liegt?


EDIT: Hat sich erledigt. "%.0f" ist richtig.:oops:
 
Zuletzt bearbeitet:
Ich möchte einen Zauber erstellen, den jeder NPC und der Player benutzen kann. Der Zauber soll bewirken, dass 2 Kopien vom Anwender entstehen.
Das Problem ist nicht die Kopien zu erstellen, sondern den Zauber für jeden beliebigen Anwender verfügbar zu machen.

Ich brauche also einen Script, wo dem Anwender eine Referenz zugewiesen wird, damit ich CreateFullActorCopy verwenden kann.

Begin ScriptEffectStart
ActorRef.CreateFullActorCopy
End


Ein Link würde mir auch schon helfen, kann zur Not auch auf englisch sein.
 
Du musst im Script eine Referenz deklarieren, und anschließend definieren.

Deklaration:
Code:
ref myself
Definition:
Code:
set myself to getself
das geht wie mit variablen. Die Deklaration steht standardmäßig nach dem Scriptnamen, die Definition sollte in irgendeinem Block stehen, am besten am Anfang.
 
Gut, das funktioniert schonmal. Nun möchte ich den Kopien auch eine Referenz zuweisen. Damit sie nach Ablauf des Zaubers auch wieder verschwinden können. Wie geht das?
 
Dazu deklarierst du noch eine weitere referenz, zB.:
Code:
ref copy1
und dann weißt du die wie folgt zu:
Code:
set copy1 to myself.CreateFullActorCopy