Logic.AddWeatherElement

» Siedler Map Source Forum » Siedler DEdK Script Forum » Logic.AddWeatherElement

Seiten: 1

Play4FuN
#1
27.03.2014 20:59
Beiträge: 704

Logic.AddWeatherElement

Hallo Community,

ich hatte gehofft mit ebd. Logicbefehl ein alternatives System für das Wetter zu verwenden. Aus der Demo.exe:

Param1: Weather State of period, 1 = normal, 2 = rain, 3 = snow
Param2: Duration of period in seconds
Param3: Is periodic, 1 for (normal)periodic weather element else 0 for weather machine effects
Param4: Gfx Set of this weather element
Param5: Gfx Set forerun (gfx transition start some time before logic state change), time in seconds
Param6: duration of Gfx Set transition


Hm, ein bisschen rumprobiert. Manche Dinge sind nicht sehr schwer herauszufinden. Aber was genau bewirkt der fünfte Parameter? Wie kann ich das am sinnvollsten einbauen, anstatt

AddPeriodicSummer(600)

usw. zu verwenden? Kann mir jemand darüber mehr sagen? Im Wiki finde ich dazu leider nichts allzu hilfreiches. Das Tutorial zu GFX-Sets hilft nur sehr bedingt weiter...

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

bobby
#2
27.03.2014 21:36
Beiträge: 393

Der 5. Parameter ist die Vorlauf Zeit des Gfx-Sets.
D.h so viele Sekunden bevor das Wetter sich ändern sollte beginnt es sich schon langsam zu ändern.

Was genau bei den Gfx-Sets verstehst du denn nicht?
Eigentlich enthält dieses Tutorial so ziemlich alles was wichtig ist.

____________________
Tools und Verbesserungen für Siedler: settlers.pro

Neues:
Cutscene Editor
LuaDebugger v0.5.2

Play4FuN
#3
27.03.2014 21:48
Beiträge: 704

Genau dieses Tutorial meinte ich, mir geht es im Moment um den Aufruf bzw. Aufbau der Wetterperioden, wenn ich sie mittels Logic.AddWeatherElement aufrufe.

function InitWeather()
Logic.AddWeatherElement(1,30,Sommerwetter,5,0.8)
Logic.AddWeatherElement(2,30,Regenwetter,5,0.8)
Logic.AddWeatherElement(3,30,Schneewetter,5,0.8)
end


Das ohne den Aufruf

AddPeriodicSummer(30)

haut nicht hin, anfangs, also etwa während der ertsen 30sec ist das GFX-Set fehlerhaft, also dunkler als sonst. Ist der Aufruf falsch?
Ich habe für die drei Funktionen (Sommerwetter, Regenwetter und Schneewetter) erstmal das Bsp. aus dem wiki genommen (Evelance).

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

bobby
#4
27.03.2014 22:43
Beiträge: 393

Deinem Aufruf fehlt ganz einfach ein Parameter:

Logic.AddWeatherElement(1, 30, 1, Sommerwetter, 5, 0.8)


Parameter 3 besagt ob das Wetter Element sich wiederholen soll oder nur einmalig vorkommt.

Zitat von Play4FuN:
Ich habe für die drei Funktionen (Sommerwetter, Regenwetter und Schneewetter) erstmal das Bsp. aus dem wiki genommen (Evelance).

Ich kann gerade nicht nachvollziehen was Sommerwetter, Regenwetter und Schneewetter sind.
Sind es Variablen mit dem Inhalt 1 - 3 oder Funktionen.
Letzteres wäre wohl ein weiterer Fehler.

____________________
Tools und Verbesserungen für Siedler: settlers.pro

Neues:
Cutscene Editor
LuaDebugger v0.5.2

Play4FuN
#5
28.03.2014 11:19
Beiträge: 704

Aha. So klappt es zwar erstmal wieder "normal":

Logic.AddWeatherElement(1,20,1,1,5,6)
Logic.AddWeatherElement(2,20,1,2,5,6)
Logic.AddWeatherElement(3,20,1,3,5,6)

...aber ich wollte ja gerne - wie es glaube ich irgendwo auch im wiki steht - bswp. den Schnee für einige Zeit aussetzen lassen, es soll aber trotzdem noch Schnee daliegen bzw. das Eis gefroren sein.

Eine Idee dafür wäre über einen Trigge abzufragen, wann Winter wird und dann manuell folgendes aufzurufen:

Display.GfxSetSetSnowEffectStatus(3,0.4,0.9,0)


Danach könnte es auf gleichem Wege wieder aktiviert werden.

Geht das nicht auch eleganter? Ich dachte da an folgendes: Es wird eine neue Wetterperiode aufgerufen, die allerdings genau das schon von anfang an enthält, also z.B.
1. Aufruf Winter (normal)
2. Aufruf Winter aber ohne Schneeflocken
3. Aufruf Winter (normal)

Versteht ihr?

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

mcb
#6
28.03.2014 14:14
Beiträge: 1472

Vielleicht hilft dir das weiter:


function SetupErweitertEvelanceGFXSet()
	Display.SetRenderUseGfxSets(1)
 
    -- normal
    Display.GfxSetSetSkyBox(1, 0.0, 1.0, "YSkyBox07")
    Display.GfxSetSetRainEffectStatus(1, 0.0, 1.0, 0)
    Display.GfxSetSetSnowStatus(1, 0, 1.0, 0)
    Display.GfxSetSetSnowEffectStatus(1, 0.0, 0.8, 0)
    Display.GfxSetSetFogParams(1, 0.0, 1.0, 1, 38,48,58, 4000,10500)
    Display.GfxSetSetLightParams(1,  0.0, 1.0, 40, -15, -50,  136,144,144, 128,104,72)
 
    -- Regen
    Display.GfxSetSetSkyBox(2, 0.0, 1.0, "YSkyBox04")
    Display.GfxSetSetRainEffectStatus(2, 0.0, 1.0, 1)
    Display.GfxSetSetSnowStatus(2, 0, 1.0, 0)
    Display.GfxSetSetSnowEffectStatus(2, 0.0, 0.8, 0)
    Display.GfxSetSetFogParams(2, 0.0, 1.0, 1, 38,58,68, 4000,8000)
    Display.GfxSetSetLightParams(2,  0.0, 1.0, 40, -15, -50,  136,144,144, 128,104,72)
 
    -- Schnee
    Display.GfxSetSetSkyBox(3, 0.0, 1.0, "YSkyBox01")
    Display.GfxSetSetRainEffectStatus(3, 0.0, 1.0, 0)
    Display.GfxSetSetSnowStatus(3, 0, 1.0, 1)
    Display.GfxSetSetSnowEffectStatus(3, 0.0, 0.8, 1)
    Display.GfxSetSetFogParams(3, 0.0, 1.0, 1, 108,128,138, 2000,9500)
    Display.GfxSetSetLightParams(3,  0.0, 1.0, 40, -15, -50,  116,144,164, 255,234,202)
	
	
    -- schnee - schneefall (tauen)  (mit id 3 verwenden)
    Display.GfxSetSetSkyBox(4, 0.0, 1.0, "YSkyBox01")
    Display.GfxSetSetRainEffectStatus(4, 0.0, 1.0, 0)
    Display.GfxSetSetSnowStatus(4, 0, 1.0, 1)
    Display.GfxSetSetSnowEffectStatus(4, 0.0, 0.8, 0)
    Display.GfxSetSetFogParams(4, 0.0, 1.0, 1, 38,48,58, 4000,10500)
    Display.GfxSetSetLightParams(4,  0.0, 1.0, 40, -15, -50,  136,144,144, 128,104,72)
	AddPeriodicTauwetter = function(dauer)
		Logic.AddWeatherElement(3, dauer, 1, 4, 5, 15)
	end
 
	
    -- regen + schneefall  (mit id 2 verwenden)
    Display.GfxSetSetSkyBox(5, 0.0, 1.0, "YSkyBox04")
    Display.GfxSetSetRainEffectStatus(5, 0.0, 1.0, 1)
    Display.GfxSetSetSnowStatus(5, 0, 1.0, 0)
    Display.GfxSetSetSnowEffectStatus(5, 0.0, 0.8, 1)
    Display.GfxSetSetFogParams(5, 0.0, 1.0, 1, 38,58,68, 4000,8000)
    Display.GfxSetSetLightParams(5,  0.0, 1.0, 40, -15, -50,  136,144,144, 128,104,72)
	AddPeriodicSchneeregen = function(dauer)
		Logic.AddWeatherElement(2, dauer, 1, 5, 5, 15)
	end
	
	
    -- schnee + regen (mit id 3 verwenden)
    Display.GfxSetSetSkyBox(6, 0.0, 1.0, "YSkyBox01")
    Display.GfxSetSetRainEffectStatus(6, 0.0, 1.0, 1)
    Display.GfxSetSetSnowStatus(6, 0, 1.0, 1)
    Display.GfxSetSetSnowEffectStatus(6, 0.0, 0.8, 1)
    Display.GfxSetSetFogParams(6, 0.0, 1.0, 1, 108,128,138, 2000,9500)
    Display.GfxSetSetLightParams(6,  0.0, 1.0, 40, -15, -50,  116,144,164, 255,234,202)
	AddPeriodicWinterregen = function(dauer)
		Logic.AddWeatherElement(3, dauer, 1, 6, 5, 15)
	end
	
	
    -- schnee - textur  (mit id 1 verwenden)
    Display.GfxSetSetSkyBox(7, 0.0, 1.0, "YSkyBox01")
    Display.GfxSetSetRainEffectStatus(7, 0.0, 1.0, 0)
    Display.GfxSetSetSnowStatus(7, 0, 1.0, 0)
    Display.GfxSetSetSnowEffectStatus(7, 0.0, 0.8, 1)
    Display.GfxSetSetFogParams(7, 0.0, 1.0, 1, 108,128,138, 2000,9500)
    Display.GfxSetSetLightParams(7,  0.0, 1.0, 40, -15, -50,  116,144,164, 255,234,202)
	AddPeriodicSommerschnee = function(dauer)
		Logic.AddWeatherElement(1, dauer, 1, 7, 5, 15)
	end
	
	
	--schnee - schneefall    (mit id 3)
	Display.GfxSetSetSkyBox(8, 0.0, 1.0, "YSkyBox01")
    Display.GfxSetSetRainEffectStatus(8, 0.0, 1.0, 0)
    Display.GfxSetSetSnowStatus(8, 0, 1.0, 1)
    Display.GfxSetSetSnowEffectStatus(8, 0.0, 0.8, 0)
    Display.GfxSetSetFogParams(8, 0.0, 1.0, 1, 108,128,138, 2000,9500)
    Display.GfxSetSetLightParams(8,  0.0, 1.0, 40, -15, -50,  116,144,164, 255,234,202)
	AddPeriodicSchnee = function(dauer)
		Logic.AddWeatherElement(3, dauer, 1, 8, 5, 15)
	end
end



Das ganze basiert auf dem Unterschied zwischen Wetter-id (für das laufen auf dem Eis, verringerte Sichtweite, Wetteranzeige...) und GFX-Set-id (Aussehen).
Wetter-ids gibt es 3, GFX-Set-ids vermutlich unbegrenzt.
Wenn dazu noch Fragen sind, immer her damit

Play4FuN
#7
28.03.2014 14:46
Beiträge: 704

@mcb:

Darüber habe ich auch schon gelesen - nur wie rufe ich das jetzt auf?

Ich gehe davon aus, dass das der 4. Parameter in der "AddWeatherElement" ist?

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

Play4FuN
#8
28.03.2014 14:50
Beiträge: 704

Edit: ne .... ich denke ich kapiers so langsam. Ich experimentiere erstmal etwas damit rum

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

Play4FuN
#9
28.03.2014 14:58
Beiträge: 704

Noch ein Nachtrag.

Danke mcb, das hilft mir auf jeden Fall schon Mal weiter. Kann man die GFX-Sets auch von anderen "Wetterverhältnissen" finden? Ich meine damit nicht nur Evelance sondern auch Normal, Highland usw.

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

bobby
#10
28.03.2014 15:16
Beiträge: 393

Hier in dieser Lua Datei werden alle BB-Wetter GFX Sets initialisiert.

____________________
Tools und Verbesserungen für Siedler: settlers.pro

Neues:
Cutscene Editor
LuaDebugger v0.5.2

Dieser Beitrag wurde von bobby am 24.03.2016 um 14:17 editiert.

Play4FuN
#11
28.03.2014 15:21
Beiträge: 704

Danke auch Dir

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

Seiten: 1

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum