Construction Set Skriptthread zum Construction Set

Ich habe ein Script, welches bewirken soll, das wenn eine gewisse Stage erreicht wird, und dann das Objeckt aktiviert wird, die Stage erhöht wird, das aber nur einmal.. mein script sieht so aus:
Code:
scn 000MWMQ2Map

short Doonce

Begin OnActivate
If isActionRef player == 1 && Doonce == 0 && GetStage 000MWMQ2 20 == 1
			SetStage 000MWMQ2 30
			Set Doonce to 1
		Activate
	endif
		Activate
end

nur egal b die Stagee nun 20 30 oder garkeine ist, ich kann die schriftrolle nicht öffnen, und es tut sich nix, wo liegt der fehler?
hab zwar eigentlich keine ahnung vom scripten in oblivion, aber die 000MWMQ2 ist doch die variable, und 20 deren erforderlicher inhalt. muss das dann nicht so heißen?
Code:
If isActionRef.player == 1 && Doonce == 0 && 000MWMQ2 == 20
und zwischen isActionRef und player gehört doch noch ein punkt, oder?
 
hab zwar eigentlich keine ahnung vom scripten in oblivion, aber die 000MWMQ2 ist doch die variable, und 20 deren erforderlicher inhalt. muss das dann nicht so heißen?
Code:
If isActionRef.player == 1 && Doonce == 0 && 000MWMQ2 == 20
und zwischen isActionRef und player gehört doch noch ein punkt, oder?

ich glaube 000MWMQ2 ist eine quest ID. und isactionref player stimmt schon.
also ich würd nur eine kleinigkeit verändern:
Code:
scn 000MWMQ2Map

short Doonce

Begin OnActivate
If isActionRef player == 1 && Doonce == 0 && GetStage 000MWMQ2 [COLOR="Red"]== 20[/COLOR]
			SetStage 000MWMQ2 30
			Set Doonce to 1
		Activate
	endif
		Activate
end
brauch nen script, der bewirkt, das wenn ein gegenstand einen Npc berührt der nps tot umfällt. und einen script für einen zauber: wenn man ihn spricht sollen vor dem player gegenstände in der luft erscheinen und auf den boden fallen.
 
Zuletzt bearbeitet:
Hi,

Xaser,ich denke dein Problem liegt ganz einfach am Namen der Quest. Ich habe schön öfters erwähnt, keine nullen am Anfang zu benutzen. Das ist erstens völlig sinnlos, weil man mit den passenden Anfangsbuchstaben seine Referenzen auch schnell findet, zum anderen führt es zu Problemen. Also ich selber würde es dann so schreiben:
Code:
scn 000MWMQ2Map

short Doonce

Begin OnActivate
If ( isActionRef player == 1 ) && ( Doonce == 0 ) && ( GetStage "000MWMQ2" == 20 )
		SetStage 000MWMQ2 30
		Set Doonce to 1
	endif
Activate
end

@ Der Großmeister der Arena:
Also zu dem Script, dass ein NPC sterben soll, wenn ein Gegenstand ihn berührt, ist schwer. Ich denke, das geht eigentlich kaum. Also es gibt dafür keine direkte Abfrage, aber du könntest theoretisch den Befehl zum Abfragen der Distanz benutzen. Also vielleicht so was:
Code:
scn beliebigerSCRIPT

ref myself
short DoOnce

Begin GameMode
If DoOnce == 0
set myself to getself
Endif
If myself.getdistance [NPC'sRef] <= 50
[NPC'sRef].kill
Endif
End
Wenn jetzt der Gegenstand in einer Entfernung von 50 units zum NPC steht, wir er getötet (der NPC,nicht der Gegenstand^^). Bei einer Waffe oder ähnlichem wäre es aber irgendwie einfacher. Aber noch zu deiner zweiten Frage..

Am besten erstellst du einen Script für einen Zauber, der ungefähr so lautet:
Code:
scn ZauberSCRIPT

Begin ScriptEffectStart
player.PlaceAtMe [ObjectID] 1, 256, 0
;...
End

Begin ScriptEffectUpdate
End

Begin ScriptEffectFinish
End
Ich denke, das wird klappen. Jedoch solltest du keine gelevelten Objekte benutzen - das könnte zu Problemen führen.

MfG Gildur
 
Zuletzt bearbeitet:
"Begin OnHit" funktioniert lediglich bei Waffen. Und auch nur dann, wenn man sie benutzt, wie zum Beispiel mit einem Schwert schlagen, einen Bogen abschießen ooder eien Zauber benutzen. Darum auch das in meinem vorherigen Bitrag:
Gildur schrieb:
Bei einer Waffe oder ähnlichem wäre es aber irgendwie einfacher.
Wenn ein frei liegender Gegenstand einfach da ist, denkeich nicht, dass das mit diesem Block klappt. Und zur anderen Frage... So was wollte ich selber schon immer mal wissen. Wie man Referenzen auf noch nicht defenierte Objekte, NPC's legt. Wenn das jemand weiß: Bitte hier reinschreiben.
Denn leider weiß ich es nicht und kann dir somit nicht weiterhelfe. :(

MfG Gildur
 
@ Xaser ich bin mir nicht sicher aber ich glaube du musst das activate vor den Befehl zur Questerhöhung setzten also

if.........
activate
setstage......
 
ja also, das im If teil ein Activate fehlt habe ich schon gemerkt ud gefixt, aber es geht irgentwie immernoch nich.. ma sehn
 
Ok nu hab ich ne frage:
Ich brauche nen Script der dafür sorgt das es ein bestimmtes Wetter gibt wenn man sich in einer bestimmten Zone befinden. Der Script ist auch nicht das Problem sondern eher das der Script Gloabl sein muss damit er überall gilt.
ich hoffe ihr könnt mir das sagen auch wenn die Frage doof ist.

P.S die Zone ist die ganze Kaiserstadt deshalb nen Global.

mfg
 
Es gibt da einen Scriptbefehl "GetInWorldspace", der 1 zurückgibt, wenn sich der Spieler im angegebenen Worldspace befindet. Der Befehl, um das Wetter zu verändern, lautet "SetWeather".

Ein solches Script müsste also so aussehen (hoffe, das stimmt :-D ):
Code:
Begin GameMode
  If player.GetInWorldspace [Worldspace, z.B. "ICTalosPlaza"] == 1
    SetWeather [ID des gewünschten Wetters, z.B. "Clear"]
  Elseif player.GetInWorldspace [Worldspace]
    ...
  endif
end

Bei "..." musst du alle Zellen, in denen du das Wetter ändern willst, nach gleichem Schema anfügen.

Dieses Script kommt dann zum Script des NPCs "Player" (also der Spieler), dazu öffnest du dieses und ergänzt es einfach um den Block GameMode.
Ich glaube nicht, dass man das verallgemeinern kann, du wirst wahrscheinlich immer alle gewünschten Worldspaces auflisten müssen...

Wenn das Wetter nicht nur dann geändert werden soll, wenn eine bestimmte Bedingung erfüllt ist (z.B. während einer bestimmten QuestStage), sondern immer, dann wäre es einfacher, die Sache ohne Script zu lösen, man kann das Wetter für einzelne Worldspaces auch direkt einstellen.

Mfg
 
Zuletzt bearbeitet:
Am besten erstellst du einen Script für einen Zauber, der ungefähr so lautet:
Code:
scn ZauberSCRIPT

Begin ScriptEffectStart
player.PlaceAtMe [ObjectID] 1, 256, 0
;...
End

Begin ScriptEffectUpdate
End

Begin ScriptEffectFinish
End
Ich denke, das wird klappen. Jedoch solltest du keine gelevelten Objekte benutzen - das könnte zu Problemen führen.

MfG Gildur

gut es geht, aber der gegenstand sollte etwas höher runterfallen.
 
@ dGdA THX: Hmmm. ich würdees dann mit einem Moveto-Befehl versuchen... Obwohl... Ich glaube, der Wert 256 bedeutet, aus welcher Höhe er fällt. Versuche mal, den Wert auf beispielsweise 512 zu setzen. Wenn das nciht klappt, sag am besten Bescheid, dann werde ich nach einer anderen Lösung suchen ;)

@ AjAeXx: Wenn du willst, dass so etwas funzt, auch in der freien Natur, dann solltest du es so machen:
1. Du gehst auf World>Region
2. Du gehst auf "Tamriel"
3. Du suchst die region, in welche du entsprechendes Wetter haben willst.
4. Du gehst auf den Tab "Weather" und änderst das vorhandene in gewünschte Klima um

MfG Gildur
 
Hallo miteinander!

Mir wurde empfohlen mich an euch zu wenden.
Ich will als Untoter spielen, Aussehen und so ist alles fertig, aber mir fehlt da noch das gewisse Etwas, um das Feeling zu verbessern.
Wenn ich jetzt gegen irgend jemanden kämpfe und sterbe, fällt mein Charakter zu boden und der Ladebildschirm erscheint oder das Menu, ich möchte aber das mein Charakter nach 10 oder 20 Sekunden wieder aufsteht und normal weiter kämpfen kann....

Kann man das irgendwie skripten.. ich hoffe es ist nicht allzu kompliziert....

MfG Gideon
 
Hm...ich glaube dafür müsstest du den kompletten Killscript samt Todesanimation bearbeiten.
Du könntest aber mal auch versuchen dem Player einen Script zuzufügen
Code:
scn was auch immer

float timer

Begin OnDeath 
set timer to 10
if timer >= 0
set timer to timer - getsecondspassed
elseif
timer == 0
resurrect
end

Ich glaube aber das trotzdem der Lademenüs erscheinen wird und der Script dann nicht geht.

P.S Wie es aussieht wird das erscheinen des Lademenüs nicht durch einen Script ausgelöst jedenfalls hab ich keinen dafür gefunden.
 
  • Like
Reaktionen: Gideon
Hmm. also ich denke, es ist schwer, einzustellen, dass nicht das Menü kommt, nachdem man stirbt. Wenn es funktioniert, könnte man diesen sccript benutzen:
Code:
scn was auch immer

float timer

Begin OnDeath player
set timer to 10
End

Begin GameMode
if timer >= 0
set timer to timer - getsecondspassed
elseif timer <= 0
player.resurrect
end
Ich habe einfach mal den von AjAeXx korrigiert ;)
Also am besten erst mal ausprobieren, falls es nicht klappt, muss eine andere Lösung her.

MfG Gildur
 
  • Like
Reaktionen: Gideon
Also erstmal danke ich euch beiden für die schnelle Hilfe aber ich bin in dem Bereich nicht sonderlich bewandert.

Deswegen muss ich erstmal 'n paar doofe Fragen stellen.

Ich bin auf Gameplay, dann auf Edit Scripts gegangen, auf Neu und habe das ganze so wie hier eingegeben.

Meine erste Frage ist, bin ich da überhaupt richtig oder muss ich das woanders eingeben.....

Meine zweite Frage wäre, was muss ich bei Script Type auswählen, Magic Effect, Object oder Quest?... ich denke mal Quest fällt raus aber bei den anderen beiden bin ich nicht sicher

Und meine dritte Frage ist wohl eher ein Problem, wenn ich das ganze was ich eingegeben habe nun speichern will kommt immer die Meldung
Script 'BLABLA' line 12:
Mismatched if/else/endif block starting on line 12
Weiterspielen?

da habe ich die Auswahl zwischen Ja/Nein und Abbrechen.....
wenn ich auf ja gehe kommt nochmal die Meldung

Script 'BLABLA', line 12
Mismatched if/then/else block

Naja dann eben nochmal auf ja aber irgendwie scheint das da nicht richtig zu speichern oder?..... HILFE!

MfG Gideon
 
1. Ja da bist du richtig.

2. Die Frage ist Gut ich würd Object nehmen.

3. Jetzt darf ich Gildur korrigiren ^^.

Code:
scn was auch immer

float timer

Begin OnDeath player
set timer to 10
End

Begin GameMode
if timer >= 0
set timer to timer - getsecondspassed
elseif timer <= 0
player.resurrect
[COLOR="Red"]endif[/COLOR]
end

So müsste es gehen sonst Korrigiert mich Gildur gleich bestimmt^^ :p

mfg
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Gideon
Also ich hab jetzt folgendes gemacht.
Das Skript gespeichert, bei Script Type Magic Effect ausgewählt.
Dann bin ich bei Eigenschaften rein hab dort dieses Skript als dauerhaften Effekt (Eigenschaft) ausgewählt. Das Spiel gestartet und siehe da ich kann mich nicht bewegen, macht nix, ich hab die Konsole geöffnet meinen Charakter markiert und Kill eingegeben. Mein Char ist stehengeblieben und nicht tot umgefallen, also es ist nix passiert, es kam nur diese Musik wenn man stirbt und das Menu hat sich übrigens nicht geöffnet.

Ich glaube man darf das Skript nicht als Eigenschaft einsetzen oder? Ich habe keine Ahnung....


MfG Gideon
 
Ja, AjAeXx,

dein Script ist vollkommen korrekt, jedoch würde ich nicht einen Objekt-, sondern einen Quest-script benutzen. Also einfach eine neue Quest erstellen, dann den Script und du aktivierst, wie du es schon gesehen hast, von den 3 Auswahlmöglichkeiten "Quest". Nun musst du noch de Script auf die Quest legen. Also du gehst auf die Liste der Quests, dann wählst du deine aus. In der Mitte, relativ weit oben, kannst du einen Namen angeben und rechts daneben dann den Script. Dort suchst du ihn einfach aus (sry, lässt sich nur schwer erklären :() Ich hoffe, es war trotzdem eindeutig.

MfG Gildur
 
Wenn ich das Script unter Quest speichere kommt wieder eine Meldung.

Script 'BLABLA', line 5
invalid block type for quest script

Scheint irgendwas faul zu sein in Zeile 5