Construction Set Skriptthread zum Construction Set

Habe gerade ein kleines Problem mit "Onactivate" bzw. mit "ForceWeather".

Ich habe eine Stadt gebaut, deren Worldspaces alle "Child"worldspaces von Tamriel sind und ich möchte in der gesamten Stadt immer ein bestimmtes Wetter haben, egal wie es draußen in Tamriel aussieht. (z.B. "OblivionStormTamriel")

Also dachte ich mir, ich lege ein Script auf das Stadttor, das genau dieses Wetter forciert und ein zweites Skript auf das Tor, durch das man die Stadt wieder verlässt, um zum normalen Wetter zurückzukehren. (fast-travel ist aus, also ist das der einzige Weg raus)
Nur leider funktioniert jetzt der Teleport der Türen nicht mehr ... :roll::eek: ... das Wetter wechselt allerdings ...
Dachte erst, es läge daran, dass ich keine REFs benutzt habe, funktioniert aber auch mir REFs nicht.

Hier die Skripts:

Skript A (Eingang):
-----------------------
scn WeatherON

ref WeatherDoor01REF

begin onActivate

ForceWeather OblivionStormTamriel 1
activate WeatherDoor01REF

end
-----------------------
Skript B (Ausgang):
-----------------------
scn WeatherOFF

ref WeatherDoor02REF

begin onActivate

ReleaseWeatherOverride
activate WeatherDoor01REF

end

EDIT:
Falls noch jemand eine bessere Lösung einfällt, bitte raus damit. ;)
 
Bessere Lösung, bessere Lösung!^^
Du gehst oben auf World>Climates. Dort erstellst du ein neues, das du zB.: MeinKlima nennst. Dann addest du rechts in der Liste das Wetter. (zB.: Clear). Dann tippst du noch die Zahl 100 daneben ein, wo momentan wahrscheinlich 0 steht. Dann klickst du "ok". Nun gehst du auf World>Worldspaces...
Dort wählst du dann dein Worldspace aus und das Klima.

MfG Gildur
 
Das könnte sich als ziemlich schwierig erweisen, da ich als Parent Worldspace Tamriel habe! :eek:

Denn Childworldspaces übernehmen eben nicht nur die Landschaft vom Parent sondern leider auch das Klima ... das war nämlich auch meine erste Idee, bis ich dann heute gemerkt habe, dass es nicht funzt. :-D
 
ok, dann versuche diesen Script:
Skript A (Eingang):
-----------------------
scn WeatherON

begin onActivate

ForceWeather OblivionStormTamriel
activate

end
-----------------------
Skript B (Ausgang):
-----------------------
scn WeatherOFF

begin onActivate

ReleaseWeatherOverride
activate

end
 
Das hatte ich auch schon :D

Er ändert dann aber, sobald ich die Tür anklicke, nur das Wetter; teleportieren tut er mich nicht. Deswegen hatte ich versucht, das mit REFs zu lösen, weil ich dachte, das "activate" müsste vielleicht genauer wissen, was es tun soll. ^^
Das Resultat ist aber das gleiche. (s.o.)

Außerdem habe ich festgestellt, dass sich sämtliche Weatherbefehle nicht mir dem Wechsel von Exterior zu Interior und zurück vertragen. Soll heißen, sobald ich in der Stadt ein Haus betrete, vergisst er den Befehl und sobald ich wieder herauskomme, habe ich wieder Standardwetter!!!

Das heißt ich muss es anders lösen. Als nächstes teste ich, ob es mit irgendeinem Marker+Skript in jedem Worldspace der Stadt funktioniert, der dann laufend checkt, ob auch das richtige Wetter herrscht.
Etwa so:

Code:
scn WeatherScript01

begin gamemode
	if getiscurrentweather OblivionStormTamriel == 0
		if getdistance player < 8000
		forceWeather OblivionStormTamriel 1
		endif
	endif
end
----------------
Nicht so elegant wie mein ursprünglicher Plan, sollte aber klappen. ;)
Außerdem habe ich mir überlegt, dass es ziemlich unrealistisch ist, dass das Wetter von jetzt auf gleich komplett wechselt, wenn man in die Stadt kommt. Deswegen setze ich noch einen Marker vor die Stadt, der das langsam herbeiführt und der außerdem noch an eine quest gekoppelt ist.

Code:
scn WeatherScript02

begin gamemode
	if ( GetStage TollerQuest >= 10 ) && ( GetStage TollerQuest <= 60 ) ; kann man das machen?!
		if getiscurrentweather OblivionStormTamriel == 0
			if getdistance player < 5000
			set Weather OblivionStormTamriel 1
				if getdistance player < 1000
				forceweather OblivionStormTamriel 1
				elseif ReleaseWeatherOverride
				endif
			endif
		endif
	endif
end
 
Hmmm, stimmt.So könnte man es machen...
Doch noch eine Frage:
Xaephrim schrieb:
Das könnte sich als ziemlich schwierig erweisen, da ich als Parent Worldspace Tamriel habe!

Denn Childworldspaces übernehmen eben nicht nur die Landschaft vom Parent sondern leider auch das Klima ... das war nämlich auch meine erste Idee, bis ich dann heute gemerkt habe, dass es nicht funzt.
Bist du dir da sicher?
Ich meine nämlich, dass das unabhängig ist.
Aber natürlich kann ich mich auch irren....^^

MfG Gildur

Ps.: Müsste das Script nicht so aussehen?:
Code:
scn WeatherScript02

short doonce

begin gamemode
if GetStage TollerQuest >= 10 && GetStage TollerQuest <= 60 ; das kann man so machen
if getiscurrentweather OblivionStormTamriel == 0

if getdistance player < 5000 && doonce == 0
set Weather OblivionStormTamriel 1
set doonce to 1
endif

if getdistance player < 1000 && doonce == 1
forceweather OblivionStormTamriel 1
set doonce to 2
else
ReleaseWeatherOverride
endif

endif
endif

end
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Xaephrim
Versuche es. Geh ins CS und nimm irgendeinen Worldspace mit Parent, dann wirst du sehen, dass die ganzen "Sharable Data und Map Data Optionen" im Worldspacemenü grau unterlegt d.h. nicht anwählbar sind.


Edit:
Kann sein, dass das Skript so aussehen muss. ;)
Ich bin nicht so der Skriptfreak muss ich gestehen ... deswegen poste ich das ja hier. :D
 
Zuletzt bearbeitet:
Permanent?
Das ist einfach:
ModAV health/magicka/Fatigue beliebige Zahl
Wenn es lediglich verlorenes wiederherstellen soll, brauchst du OBSE und das hier:
ModAV2 health/magicka/Fatigue beliebige Zahl
 
  • Like
Reaktionen: daniel41
ich suche einen Script der Bewirkt das ein: 1. Baum/Pflanze erst erscheint wenn der Spieler einen Quest beendet hat dasselbe für Gebäude, NPC's und Steine

2. das die Oben genannten Dinge nach der Erledigung der Quest verschwinden.

Gruss Lord R
 
Bitte fasse dch deutlicher.
Lord R schrieb:
[...]1. Baum/Pflanze erst erscheint wenn der Spieler einen Quest beendet[...]
2. das die Oben genannten Dinge nach der Erledigung der Quest verschwinden.

Was denn nun? Sollen die Gegenstände nach der Beendigung der Quest verschwinden oder erscheinen?
 
Hm ich glaub er meint dass nachdem Quest 1 beendet ist kommt ein neuer Quest wo der Baum und die Pflanze erscheinen. Nachdem Quest 2 beendet ist verschwinden die Sachen wieder: (oder? :D)

Code:
Scriptname MeinQuestScript

Begin	GameMode 


if GetStage QUEST1 < 50  ;die Stage wo der Quest beendet ist angeben
MeinTollerBaumID.disable
MeineTollePflanzeID.disable

if GetStage QUEST1 == 50 ;die Stage wo der Quest beendet ist angeben
MeinTollerBaumID.enable
MeineTollePflanzeID.enable
endif

if GetStage QUEST2 == 50  ;die Stage wo der Quest beendet ist angeben
MeinTollerBaumID.disable
MeineTollePflanzeID.disable
endif


End	GameMode

:)
 
  • Like
Reaktionen: Lord R
Okay, danke Acacyn :p
Aber eine kleine Korrektur: dein Script dürfte sich vielleicht auf Dauer als "performancelastig" erweisen.^^ Ok, eigentlich ist es wahrscheinlich kaum bemerkbar, aber eine schönere Lösung wäre diese hier:

Bei den Objekte, die vorher nicht da sein sollen, musst du bei "Persistent Reference" und "Initialy Disabled" ein Häkchen setzen. Anschließend dieser Quest-Script:
Code:
Scn AuftauchUndWiederVerschwindeSCRIPT

short doonce

Begin GameMode

If ( doonce == 0 ) && ( GetStage QuestID1 == ?? ) ;?? steht für die letzte Stage
BaumREF.enable
PflanzeREF.enable ;usw.^^
set doonce to 1
endif

If ( doonce == 1 ) && ( GetStage QuestID2 == ?? ) ;?? steht für die letzte Stage
BaumREF.disable
PflanzeREF.disable
Endif

End

MfG Gildur
 
Zuletzt bearbeitet:
Moin!

Gibt es eine Möglichkeit, Leichen per Skript zu entfernen? Also so dass die Leiche sofort verschwindet, sobald die Kreatur oder der NPC tot ist?

Sowas wie:

begin OnDeath
RemoveCorpse
end
;)

Wäre sehr nützlich, da ich gerade den Endkampf in meiner Mod bastle und man es da mit mehreren Gegnerwellen zu tun bekommt. Das geht auf Dauer nämlich doch auf die Performance wenn da zig Leichen rumliegen. Meine ich hätte das auch schonmal irgendwo gesehen, nur wo?!

Ich könnte ja "Disable" nehmen, aber damit blendet man sie ja nur aus und sie verschwinden nicht wirklich.
 
das ist aber, soweit ich weiß, die einzige Möglichkeit.
Es gibt nämlich keinen anderen Befehl. Welchen sollte es auch geben? Disable erfüllt ist es ja. Weiß nicht, was du meinst^^
Und um die Performance damit zu schonen, reicht das.

MfG Gildur
 
Ist es nicht so, dass Disable nur dazu führt, dass das Objekt ausgeblendet, aber trotzdem immer noch weiter berechnet wird? Sodass das dann nur einen optischen Effekt hätte und keinen performancetechnischen?!

Das war ja in Morrowind/Bloodmoon auch der Grund, warum diese Siedlung (Rabenfels?), die man da errichten musste immer so massiv geruckelt hat, selbst wenn noch kein einziges Haus stand. Die standen nämlich schon von Anfang an da ... nur eben Disabled. :-D
 
naja RemoveMe wäre da schon besser :)

Musst aber aufpassen, weil es wie ein return wirkt.Also genauso wie bei moveto.

=> im Block als letztes schreiben

:)
 
^^ tatsache, dachte immer es würde so funktionieren

sorry :oops:

Also dann würde ich vorschlagen das du sie in eine leere Zelle schickst wenn sie tot sind.
Code:
Begin OnDeath
   moveto dummycell
End

Dazu könntest du ja nen netten "fadeaway" Effekt machen.Mit nem timer
Also :
Code:
scn FadeOutSC

float alpha

Begin OnDeath
set alpha to 10
End

Begin Gamemode

if alpha > 0.1
set alpha to ((alpha - GetSecondsPassed) / 10)
SAA alpha
elseif alpha <= 0.1 && alpha > 0
set alpha to 0
moveto [leereZelle]
endif

End

Nur so ne Idee.