FritzensTagundNachtwechsel(_length,_gfxSet)
» Siedler Map Source Forum » Siedler DEdK Script Forum » FritzensTagundNachtwechsel(_length,_gfxSet)
Seiten: 1 2 Nächste Seite
fritz_98
|
#1 02.02.2010 14:27 Beiträge: 472 |
FritzensTagundNachtwechsel(_lengthDay,_lengthNight,_lengthChange,_gfxSet)
Hallo...
Puh! War ein hartes Stück Arbeit. Leider ist das Skript so groß geworden, dass es nicht in einen Beitrag passt.
In folgenden Beiträgen einzeln gepostet.
Das Skript hat ~26KB. Ist aber dank dem TinySkript sicher kein Problem.
Es gibt 4 Parameter:
Einstellung der Länge eines Tages/einer Nacht/des Übergangs:
Parameter:
_lenghtDay
_lengthNight
_lengthChange
Selbsterklärend. (In Sekunden angeben)
Ein Übergang sollte mindestens 6 Sekunden dauern, sonst kommt es zu seltsamen Fehlern (Landschaft vergilbt oder wird rabenschwarz).
Einstellung des Landschaftssets:
Dieser Parameter: _gfxSet
Hier kann man folgendes eintragen:
Normal Evelance Steppe Highland Moor
Mehr braucht es nicht.
Beim Übergang von Tag auf Nacht und andersrum werden die Jahreszeiten ebenfalls beachtet.
Kleines Anwendungsbeispiel:
FritzensTagundNachtwechsel(15*60,5*60,1*60,Steppe)
Jetzt dauert ein Tag 15 min., eine Nacht 5 min. und der Übergang 1 min. im Landschaftsset "Steppe".
Desweiteren kann man den Tag u. Nachtwechsel auch ganz einfach beenden. Hiermit:
FTNWT.allowed = false
Damit man den Job nicht aus Versehen mitten in der Nacht beendet, kann man noch abfragen, ob es nun Tag oder Nacht ist.
if FTNWT.nacht == true then Message("Es ist Nacht!") end if FTNWT.tag == true then Message("Es ist Tag!") end
Die Codeschnipsel folgen.
LG
Fritz
Dieser Beitrag wurde von fritz_98 am 11.09.2010 um 14:36 editiert.
fritz_98
|
#2 02.02.2010 14:29 Beiträge: 472 |
Teil 1:
Evelance = {} Normal = {} Highland = {} Moor = {} Steppe = {} function FritzensTagundNachtwechsel(_lengthDay,_lengthNight,_lengthChange,_gfxSet) FTNWT = {} FTNWT.lengthDay = _lengthDay FTNWT.lengthNight = _lengthNight FTNWT.lengthChange = _lengthChange *10 FTNWT.gfxSet = _gfxSet FTNWT.heller = 0 FTNWT.allowed = true FTNWT.nacht = false FTNWT.tag = false StartSimpleJob("F_TaguNacht_CountToNacht") end function F_TaguNacht_CountToNacht() if FTNWT.allowed == true then if Counter.Tick2("f_TaguNacht_countToNacht_counter",FTNWT.lengthDay) then FTNWT.heller = 0 StartSimpleHiResJob("F_TaguNacht_Sonnenuntergang") return true end else return true end end function F_TaguNacht_CountToTag() if FTNWT.allowed == true then if Counter.Tick2("f_TaguNacht_countToTag_counter",FTNWT.lengthNight) then FTNWT.heller = 0 StartSimpleHiResJob("F_TaguNacht_Sonnenaufgang") return true end else return true end end function F_SetNachtGfxSet() Display.SetRenderUseGfxSets(1) 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, 10.0, 10.0, 1, 54,54,54, 2000,10500) Display.GfxSetSetLightParams(1, 0.0, 1.0, 40, -15, -50, 105,105,105, 0,0,0) Display.GfxSetSetSkyBox(2, 0.0, 1.0, "YSkyBox07") 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, 10.0, 10.0, 1, 54,54,54, 2000,10500) Display.GfxSetSetLightParams(2, 0.0, 1.0, 40, -15, -50, 105,105,105, 0,0,0) Display.GfxSetSetSkyBox(3, 0.0, 1.0, "YSkyBox07") 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, 10.0, 10.0, 1, 54,54,54, 2000,10500) Display.GfxSetSetLightParams(3, 0.0, 1.0, 40, -15, -50, 105,105,105, 0,0,0) end
Dieser Beitrag wurde von fritz_98 am 11.09.2010 um 14:36 editiert.
fritz_98
|
#3 02.02.2010 14:30 Beiträge: 472 |
Teil 2:
function F_TaguNacht_Sonnenuntergang() FTNWT.heller = FTNWT.heller + 1 if FTNWT.gfxSet == Evelance then if Logic.GetWeatherState() == 1 or Logic.GetWeatherState() == 2 or Logic.GetWeatherState() == 3 then local e1 = 0 / (FTNWT.lengthChange) * FTNWT.heller local e2 = 10 / (FTNWT.lengthChange) * FTNWT.heller local e3 = 9 / (FTNWT.lengthChange) * FTNWT.heller local e4 = 16 / (FTNWT.lengthChange) * FTNWT.heller local e5 = 6 / (FTNWT.lengthChange) * FTNWT.heller local e6 = -4 / (FTNWT.lengthChange) * FTNWT.heller local e7 = -2000 / (FTNWT.lengthChange) * FTNWT.heller local e8 = -31 / (FTNWT.lengthChange) * FTNWT.heller local e9 = -39 / (FTNWT.lengthChange) * FTNWT.heller local e10 = -128 / (FTNWT.lengthChange) * FTNWT.heller local e11 = -104 / (FTNWT.lengthChange) * FTNWT.heller local e12 = -72 / (FTNWT.lengthChange) * FTNWT.heller local er1 = -14 / (FTNWT.lengthChange) * FTNWT.heller local er2 = 2500 / (FTNWT.lengthChange) * FTNWT.heller local es1 = -54 / (FTNWT.lengthChange) * FTNWT.heller local es2 = -74 / (FTNWT.lengthChange) * FTNWT.heller local es3 = -84 / (FTNWT.lengthChange) * FTNWT.heller local es4 = 1000 / (FTNWT.lengthChange) * FTNWT.heller local es5 = -11 / (FTNWT.lengthChange) * FTNWT.heller local es6 = -59 / (FTNWT.lengthChange) * FTNWT.heller local es7 = -255 / (FTNWT.lengthChange) * FTNWT.heller local es8 = -234 / (FTNWT.lengthChange) * FTNWT.heller local es9 = -202 / (FTNWT.lengthChange) * FTNWT.heller Display.GfxSetSetFogParams(1+e1, 0.0+e2, 1.0+e3, 1+e1, 38+e4,48+e5,58+e6, 4000+e7,10500+e1) Display.GfxSetSetLightParams(1+e1, 0.0+e1, 1.0+e1, 40+e1, -15+e1, -50+e1, 136+e8,144+e9,144+e9, 128+e10,104+e11,72+e12) Display.GfxSetSetFogParams(2+e1, 0.0+e2, 1.0+e3, 1+e1, 38+e4,58+e6,68+er1, 4000+e7,8000+er2) Display.GfxSetSetLightParams(2+e1, 0.0+e1, 1.0+e1, 40+e1, -15+e1, -50+e1, 136+e8,144+e9,144+e9, 128+e10,104+e11,72+e12) Display.GfxSetSetFogParams(3+e1, 0.0+e2, 1.0+e3, 1+e1, 108+es1,128+es2,138+es3, 2000+e7,9500+es4) Display.GfxSetSetLightParams(3+e1, 0.0+e1, 1.0+e1, 40+e1, -15+e1, -50+e1, 116+es5,144+e9,164+es6, 255+es7,234+es8,202+es9) if FTNWT.heller >= (FTNWT.lengthChange) then F_SetNachtGfxSet() StartSimpleJob("F_TaguNacht_CountToTag") FTNWT.nacht = true FTNWT.tag = false return true end end elseif FTNWT.gfxSet == Normal then if Logic.GetWeatherState() == 1 or Logic.GetWeatherState() == 2 or Logic.GetWeatherState() == 3 then local n1 = 0 / (FTNWT.lengthChange) * FTNWT.heller local n2 = 10 / (FTNWT.lengthChange) * FTNWT.heller local n3 = 9 / (FTNWT.lengthChange) * FTNWT.heller local n4 = -98 / (FTNWT.lengthChange) * FTNWT.heller local n5 = -118 / (FTNWT.lengthChange) * FTNWT.heller local n6 = -128 / (FTNWT.lengthChange) * FTNWT.heller local n7 = -3000 / (FTNWT.lengthChange) * FTNWT.heller local n8 = -17500 / (FTNWT.lengthChange) * FTNWT.heller local n9 = -15 / (FTNWT.lengthChange) * FTNWT.heller local n10 = -5 / (FTNWT.lengthChange) * FTNWT.heller local n11 = -205 / (FTNWT.lengthChange) * FTNWT.heller local n12 = -204 / (FTNWT.lengthChange) * FTNWT.heller local n13 = -180 / (FTNWT.lengthChange) * FTNWT.heller local nr1 = -48 / (FTNWT.lengthChange) * FTNWT.heller local nr2 = -78 / (FTNWT.lengthChange) * FTNWT.heller local nr3 = -88 / (FTNWT.lengthChange) * FTNWT.heller local nr4 = -1000 / (FTNWT.lengthChange) * FTNWT.heller local nr5 = 2500 / (FTNWT.lengthChange) * FTNWT.heller local ns1 = -500 / (FTNWT.lengthChange) * FTNWT.heller local ns2 = 25 / (FTNWT.lengthChange) * FTNWT.heller local ns3 = -11 / (FTNWT.lengthChange) * FTNWT.heller local ns4 = -39 / (FTNWT.lengthChange) * FTNWT.heller local ns5 = -59 / (FTNWT.lengthChange) * FTNWT.heller local ns6 = -255 / (FTNWT.lengthChange) * FTNWT.heller local ns7 = -234 / (FTNWT.lengthChange) * FTNWT.heller local ns8 = -202 / (FTNWT.lengthChange) * FTNWT.heller Display.GfxSetSetFogParams(1+n1, 0+n2, 1+n3, 1+n1, 152+n4, 172+n5, 182+n6, 5000+n7, 28000+n8) Display.GfxSetSetLightParams(1+n1, 0+n1, 1+n1, 40+n1, -15+n1, -50+n1, 120+n9, 110+n10, 110+n10, 205+n11, 204+n12, 180+n13) Display.GfxSetSetFogParams(2+n1, 0+n2, 1+n3, 1+n1, 102+nr1, 132+nr2, 142+nr3, 3000+nr4, 8000+nr5) Display.GfxSetSetLightParams(2+n1, 0+n1, 1+n1, 40+n1, -15+n1, -50+n1, 120+n9, 110+n10, 110+n10, 205+n11, 204+n12, 180+n13) Display.GfxSetSetFogParams(3+n1, 0+n2, 1+n3, 1+n1, 152+n4, 172+n5, 182+n6, 3000+nr4, 11000+ns1) Display.GfxSetSetLightParams(3+n1, 0+n1, 1+n1, 40+n1, -15+n1, -75+ns2, 116+ns3, 144+ns4, 164+ns5, 255+ns6, 234+ns7, 202+ns8) if FTNWT.heller >= (FTNWT.lengthChange) then F_SetNachtGfxSet() StartSimpleJob("F_TaguNacht_CountToTag") FTNWT.nacht = true FTNWT.tag = false return true end end elseif FTNWT.gfxSet == Steppe then if Logic.GetWeatherState() == 1 or Logic.GetWeatherState() == 2 or Logic.GetWeatherState() == 3 then local s1 = 0 / (FTNWT.lengthChange) * FTNWT.heller local s2 = 10 / (FTNWT.lengthChange) * FTNWT.heller local s3 = 9 / (FTNWT.lengthChange) * FTNWT.heller local s4 = -116 / (FTNWT.lengthChange) * FTNWT.heller local s5 = -118 / (FTNWT.lengthChange) * FTNWT.heller local s6 = -5000 / (FTNWT.lengthChange) * FTNWT.heller local s7 = -5500 / (FTNWT.lengthChange) * FTNWT.heller local s8 = -25 / (FTNWT.lengthChange) * FTNWT.heller local s9 = -62 / (FTNWT.lengthChange) * FTNWT.heller local s10 = -104 / (FTNWT.lengthChange) * FTNWT.heller local s11 = -255 / (FTNWT.lengthChange) * FTNWT.heller local s12 = -226 / (FTNWT.lengthChange) * FTNWT.heller local sr1 = -48 / (FTNWT.lengthChange) * FTNWT.heller local sr2 = -78 / (FTNWT.lengthChange) * FTNWT.heller local sr3 = -88 / (FTNWT.lengthChange) * FTNWT.heller local sr4 = -1500 / (FTNWT.lengthChange) * FTNWT.heller local sr5 = 1000 / (FTNWT.lengthChange) * FTNWT.heller local sr6 = -15 / (FTNWT.lengthChange) * FTNWT.heller local sr7 = -5 / (FTNWT.lengthChange) * FTNWT.heller local sr8 = -255 / (FTNWT.lengthChange) * FTNWT.heller local sr9 = -254 / (FTNWT.lengthChange) * FTNWT.heller local sr10 = -230 / (FTNWT.lengthChange) * FTNWT.heller local ss1 = -98 / (FTNWT.lengthChange) * FTNWT.heller local ss2 = -128 / (FTNWT.lengthChange) * FTNWT.heller local ss3 = -2000 / (FTNWT.lengthChange) * FTNWT.heller local ss4 = 5 / (FTNWT.lengthChange) * FTNWT.heller local ss5 = -250 / (FTNWT.lengthChange) * FTNWT.heller Display.GfxSetSetFogParams(1+s1, 0+s2, 1+s3, 1+s1, 170+s4, 172+s5, 172+s5, 7000+s6, 16000+s7) Display.GfxSetSetLightParams(1+s1, 0+s1, 1+s1, 40+s1, -15+s1, -25+s8, 167+s9, 167+s9, 209+s10, 255+s11, 226+s12, 226+s12) Display.GfxSetSetFogParams(2+s1, 0+s2, 1+s3, 1+s1, 102+sr1, 132+sr2, 142+sr3, 3500+sr4, 9500+sr5) Display.GfxSetSetLightParams(2+sr1, 0+sr1, 1+sr1, 40+sr1, -15+sr1, -25+s8, 120+sr6, 110+sr7, 110+sr7, 255+sr8, 254+sr9, 230+sr10) Display.GfxSetSetFogParams(3+s1, 0+s2, 1+s3, 1+s1, 152+ss1, 172+s5, 182+ss2, 4000+ss3, 12000+sr4) Display.GfxSetSetLightParams(3+s1, 0+s1, 1+s1, 40+s1, -15+s1, -25+s8, 100+ss4, 110+sr7, 110+sr7, 250+ss5, 250+ss5, 250+ss5) if FTNWT.heller >= (FTNWT.lengthChange) then F_SetNachtGfxSet() StartSimpleJob("F_TaguNacht_CountToTag") FTNWT.nacht = true FTNWT.tag = false return true end end elseif FTNWT.gfxSet == Highland then if Logic.GetWeatherState() == 1 or Logic.GetWeatherState() == 2 or Logic.GetWeatherState() == 3 then local h1 = 0 / (FTNWT.lengthChange) * FTNWT.heller local h2 = 10 / (FTNWT.lengthChange) * FTNWT.heller local h3 = 9 / (FTNWT.lengthChange) * FTNWT.heller local h4 = -98 / (FTNWT.lengthChange) * FTNWT.heller local h5 = -118 / (FTNWT.lengthChange) * FTNWT.heller local h6 = -128 / (FTNWT.lengthChange) * FTNWT.heller local h7 = -3000 / (FTNWT.lengthChange) * FTNWT.heller local h8 = -17500 / (FTNWT.lengthChange) * FTNWT.heller local h9 = -15 / (FTNWT.lengthChange) * FTNWT.heller local h10 = -5 / (FTNWT.lengthChange) * FTNWT.heller local h11 = -255 / (FTNWT.lengthChange) * FTNWT.heller local h12 = -254 / (FTNWT.lengthChange) * FTNWT.heller local h13 = -230 / (FTNWT.lengthChange) * FTNWT.heller local hr1 = -48 / (FTNWT.lengthChange) * FTNWT.heller local hr2 = -78 / (FTNWT.lengthChange) * FTNWT.heller local hr3 = -88 / (FTNWT.lengthChange) * FTNWT.heller local hr4 = -1000 / (FTNWT.lengthChange) * FTNWT.heller local hr5 = 2500 / (FTNWT.lengthChange) * FTNWT.heller local hs1 = -2000 / (FTNWT.lengthChange) * FTNWT.heller local hs2 = -1500 / (FTNWT.lengthChange) * FTNWT.heller local hs3 = 15 / (FTNWT.lengthChange) * FTNWT.heller local hs4 = -250 / (FTNWT.lengthChange) * FTNWT.heller local hs5 = 5 / (FTNWT.lengthChange) * FTNWT.heller Display.GfxSetSetFogParams(1+h1, 0+h2, 1+h3, 1+h1, 152+h4, 172+h5, 182+h6, 5000+h7, 28000+h8) Display.GfxSetSetLightParams(1+h1, 0+h1, 1+h1, 40+h1, -15+h1, -50+h1, 120+h9, 110+h10, 110+h10, 255+h11, 254+h12, 230+h13) Display.GfxSetSetFogParams(2+h1, 0+h2, 1+h3, 1+h1, 102+hr1, 132+hr2, 142+hr3, 3000+hr4, 8000+hr5) Display.GfxSetSetLightParams(2+h1, 0+h1, 1+h1, 40+h1, -15+h1, -50+h1, 120+h9, 110+h10, 110+h10, 255+h11, 254+h12, 230+h13) Display.GfxSetSetFogParams(3+h1, 0+h2, 1+h3, 1+h1, 152+h4, 172+h5, 182+h6, 4000+hs1, 12000+hs2) Display.GfxSetSetLightParams(3+h1, 0+h1, 1+h1, 40+h1, -15+h1, -75+hs3, 100+hs5, 110+h10, 110+h10, 250+hs4, 250+hs4, 250+hs4) if FTNWT.heller >= (FTNWT.lengthChange) then F_SetNachtGfxSet() StartSimpleJob("F_TaguNacht_CountToTag") FTNWT.nacht = true FTNWT.tag = false return true end end elseif FTNWT.gfxSet == Moor then if Logic.GetWeatherState() == 1 or Logic.GetWeatherState() == 2 or Logic.GetWeatherState() == 3 then local m1 = 0 / (FTNWT.lengthChange) * FTNWT.heller local m2 = 10 / (FTNWT.lengthChange) * FTNWT.heller local m3 = 9 / (FTNWT.lengthChange) * FTNWT.heller local m4 = -117 / (FTNWT.lengthChange) * FTNWT.heller local m5 = -110 / (FTNWT.lengthChange) * FTNWT.heller local m6 = -60 / (FTNWT.lengthChange) * FTNWT.heller local m7 = -2000 / (FTNWT.lengthChange) * FTNWT.heller local m8 = -2500 / (FTNWT.lengthChange) * FTNWT.heller local m9 = -14 / (FTNWT.lengthChange) * FTNWT.heller local m10 = 5 / (FTNWT.lengthChange) * FTNWT.heller local m11 = -185 / (FTNWT.lengthChange) * FTNWT.heller local m12 = -164 / (FTNWT.lengthChange) * FTNWT.heller local m13 = -142 / (FTNWT.lengthChange) * FTNWT.heller local mr1 = -77 / (FTNWT.lengthChange) * FTNWT.heller local mr2 = -70 / (FTNWT.lengthChange) * FTNWT.heller local mr3 = -30 / (FTNWT.lengthChange) * FTNWT.heller local mr4 = 2500 / (FTNWT.lengthChange) * FTNWT.heller local mr5 = -15 / (FTNWT.lengthChange) * FTNWT.heller local mr6 = -5 / (FTNWT.lengthChange) * FTNWT.heller local mr7 = -205 / (FTNWT.lengthChange) * FTNWT.heller local mr8 = -204 / (FTNWT.lengthChange) * FTNWT.heller local mr9 = -180 / (FTNWT.lengthChange) * FTNWT.heller local ms1 = -97 / (FTNWT.lengthChange) * FTNWT.heller local ms2 = -3000 / (FTNWT.lengthChange) * FTNWT.heller local ms3 = -3500 / (FTNWT.lengthChange) * FTNWT.heller local ms4 = 25 / (FTNWT.lengthChange) * FTNWT.heller local ms5 = -11 / (FTNWT.lengthChange) * FTNWT.heller local ms6 = -39 / (FTNWT.lengthChange) * FTNWT.heller local ms7 = -59 / (FTNWT.lengthChange) * FTNWT.heller local ms8 = -255 / (FTNWT.lengthChange) * FTNWT.heller local ms9 = -234 / (FTNWT.lengthChange) * FTNWT.heller local ms10 = -202 / (FTNWT.lengthChange) * FTNWT.heller Display.GfxSetSetFogParams(1+m1, 0+m2, 1+m3, 1+m1, 171+m4, 164+m5, 114+m6, 4000+m7, 13000+m8) Display.GfxSetSetLightParams(1+m1, 0+m1, 1+m1, 40+m1, -15+m1, -36+m9, 100+m10, 100+m10, 100+m10, 185+m11, 164+m12, 142+m13) Display.GfxSetSetFogParams(2+m1, 0+m2, 1+m3, 1+m1, 131+mr1, 124+mr2, 84+mr3, 2000+m1, 8000+mr4) Display.GfxSetSetLightParams(2+m1, 0+m1, 1+m1, 40+m1, -15+m1, -50+m1, 120+mr5, 110+mr6, 110+mr6, 205+mr7, 204+mr8, 180+mr9) Display.GfxSetSetFogParams(3+m1, 0+m2, 1+m3, 1+m1, 151+ms1, 164+m5, 114+m6, 5000+ms2, 14000+ms3) Display.GfxSetSetLightParams(3+m1, 0+m1, 1+m1, 40+m1, -15+m1, -75+ms4, 116+ms5, 144+ms6, 164+ms7, 255+ms8, 234+ms9, 202+ms10) if FTNWT.heller >= (FTNWT.lengthChange) then F_SetNachtGfxSet() StartSimpleJob("F_TaguNacht_CountToTag") FTNWT.nacht = true FTNWT.tag = false return true end end end end
Dieser Beitrag wurde von fritz_98 am 11.09.2010 um 14:37 editiert.
fritz_98
|
#4 02.02.2010 14:31 Beiträge: 472 |
Teil 3:
function F_TaguNacht_Sonnenaufgang() FTNWT.heller = FTNWT.heller + 1 if FTNWT.gfxSet == Evelance then if Logic.GetWeatherState() == 1 or Logic.GetWeatherState() == 2 or Logic.GetWeatherState() == 3 then local e1 = 0 / (FTNWT.lengthChange) * FTNWT.heller local e2 = -10 / (FTNWT.lengthChange) * FTNWT.heller local e3 = -9 / (FTNWT.lengthChange) * FTNWT.heller local e4 = -16 / (FTNWT.lengthChange) * FTNWT.heller local e5 = -6 / (FTNWT.lengthChange) * FTNWT.heller local e6 = 4 / (FTNWT.lengthChange) * FTNWT.heller local e7 = 2000 / (FTNWT.lengthChange) * FTNWT.heller local e8 = 31 / (FTNWT.lengthChange) * FTNWT.heller local e9 = 39 / (FTNWT.lengthChange) * FTNWT.heller local e10 = 128 / (FTNWT.lengthChange) * FTNWT.heller local e11 = 104 / (FTNWT.lengthChange) * FTNWT.heller local e12 = 72 / (FTNWT.lengthChange) * FTNWT.heller local er1 = 14 / (FTNWT.lengthChange) * FTNWT.heller local er2 = -2500 / (FTNWT.lengthChange) * FTNWT.heller local es1 = 54 / (FTNWT.lengthChange) * FTNWT.heller local es2 = 74 / (FTNWT.lengthChange) * FTNWT.heller local es3 = 84 / (FTNWT.lengthChange) * FTNWT.heller local es4 = -1000 / (FTNWT.lengthChange) * FTNWT.heller local es5 = 11 / (FTNWT.lengthChange) * FTNWT.heller local es6 = 59 / (FTNWT.lengthChange) * FTNWT.heller local es7 = 255 / (FTNWT.lengthChange) * FTNWT.heller local es8 = 234 / (FTNWT.lengthChange) * FTNWT.heller local es9 = 202 / (FTNWT.lengthChange) * FTNWT.heller Display.GfxSetSetFogParams(1+e1, 10.0+e2, 10.0+e3, 1+e1, 54+e4,54+e5,54+e6, 2000+e7,10500+e1) Display.GfxSetSetLightParams(1+e1, 0.0+e1, 1.0+e1, 40+e1, -15+e1, -50+e1, 105+e8,105+e9,105+e9, 0+e10,0+e11,0+e12) Display.GfxSetSetFogParams(2+e1, 10.0+e2, 10.0+e3, 1+e1, 54+e4,54+e6,54+er1, 2000+e7,10500+er2) Display.GfxSetSetLightParams(2+e1, 0.0+e1, 1.0+e1, 40+e1, -15+e1, -50+e1, 105+e8,105+e9,105+e9, 0+e10,0+e11,0+e12) Display.GfxSetSetFogParams(3+e1, 10.0+e2, 10.0+e3, 1+e1, 54+es1,54+es2,54+es3, 2000+e7,10500+es4) Display.GfxSetSetLightParams(3+e1, 0.0+e1, 1.0+e1, 40+e1, -15+e1, -50+e1, 105+es5,105+e9,105+es6, 0+es7,0+es8,0+es9) if FTNWT.heller >= (FTNWT.lengthChange) then SetupEvelanceWeatherGfxSet() StartSimpleJob("F_TaguNacht_CountToNacht") FTNWT.nacht = false FTNWT.tag = true return true end end elseif FTNWT.gfxSet == Normal then if Logic.GetWeatherState() == 1 or Logic.GetWeatherState() == 2 or Logic.GetWeatherState() == 3 then local n1 = 0 / (FTNWT.lengthChange) * FTNWT.heller local n2 = -10 / (FTNWT.lengthChange) * FTNWT.heller local n3 = -9 / (FTNWT.lengthChange) * FTNWT.heller local n4 = 98 / (FTNWT.lengthChange) * FTNWT.heller local n5 = 118 / (FTNWT.lengthChange) * FTNWT.heller local n6 = 128 / (FTNWT.lengthChange) * FTNWT.heller local n7 = 3000 / (FTNWT.lengthChange) * FTNWT.heller local n8 = 17500 / (FTNWT.lengthChange) * FTNWT.heller local n9 = 15 / (FTNWT.lengthChange) * FTNWT.heller local n10 = 5 / (FTNWT.lengthChange) * FTNWT.heller local n11 = 205 / (FTNWT.lengthChange) * FTNWT.heller local n12 = 204 / (FTNWT.lengthChange) * FTNWT.heller local n13 = 180 / (FTNWT.lengthChange) * FTNWT.heller local nr1 = 48 / (FTNWT.lengthChange) * FTNWT.heller local nr2 = 78 / (FTNWT.lengthChange) * FTNWT.heller local nr3 = 88 / (FTNWT.lengthChange) * FTNWT.heller local nr4 = 1000 / (FTNWT.lengthChange) * FTNWT.heller local nr5 = -2500 / (FTNWT.lengthChange) * FTNWT.heller local ns1 = 500 / (FTNWT.lengthChange) * FTNWT.heller local ns2 = -25 / (FTNWT.lengthChange) * FTNWT.heller local ns3 = 11 / (FTNWT.lengthChange) * FTNWT.heller local ns4 = 39 / (FTNWT.lengthChange) * FTNWT.heller local ns5 = 59 / (FTNWT.lengthChange) * FTNWT.heller local ns6 = 255 / (FTNWT.lengthChange) * FTNWT.heller local ns7 = 234 / (FTNWT.lengthChange) * FTNWT.heller local ns8 = 202 / (FTNWT.lengthChange) * FTNWT.heller Display.GfxSetSetFogParams(1+n1, 10+n2, 10+n3, 1+n1, 54+n4, 54+n5, 54+n6, 2000+n7, 10500+n8) Display.GfxSetSetLightParams(1+n1, 0+n1, 1+n1, 40+n1, -15+n1, -50+n1, 105+n9, 105+n10, 105+n10, 0+n11, 0+n12, 0+n13) Display.GfxSetSetFogParams(2+n1, 10+n2, 10+n3, 1+n1, 54+nr1, 54+nr2, 54+nr3, 2000+nr4, 10500+nr5) Display.GfxSetSetLightParams(2+n1, 0+n1, 1+n1, 40+n1, -15+n1, -50+n1, 105+n9, 105+n10, 105+n10, 0+n11, 0+n12, 0+n13) Display.GfxSetSetFogParams(3+n1, 10+n2, 10+n3, 1+n1, 54+n4, 54+n5, 54+n6, 2000+nr4, 10500+ns1) Display.GfxSetSetLightParams(3+n1, 0+n1, 1+n1, 40+n1, -15+n1, -50+ns2, 105+ns3,105+ns4, 105+ns5, 0+ns6, 0+ns7, 0+ns8) if FTNWT.heller >= (FTNWT.lengthChange) then SetupNormalWeatherGfxSet() StartSimpleJob("F_TaguNacht_CountToNacht") FTNWT.nacht = false FTNWT.tag = true return true end end elseif FTNWT.gfxSet == Steppe then if Logic.GetWeatherState() == 1 or Logic.GetWeatherState() == 2 or Logic.GetWeatherState() == 3 then local s1 = 0 / (FTNWT.lengthChange) * FTNWT.heller local s2 = -10 / (FTNWT.lengthChange) * FTNWT.heller local s3 = -9 / (FTNWT.lengthChange) * FTNWT.heller local s4 = 116 / (FTNWT.lengthChange) * FTNWT.heller local s5 = 118 / (FTNWT.lengthChange) * FTNWT.heller local s6 = 5000 / (FTNWT.lengthChange) * FTNWT.heller local s7 = 5500 / (FTNWT.lengthChange) * FTNWT.heller local s8 = 25 / (FTNWT.lengthChange) * FTNWT.heller local s9 = 62 / (FTNWT.lengthChange) * FTNWT.heller local s10 = 104 / (FTNWT.lengthChange) * FTNWT.heller local s11 = 255 / (FTNWT.lengthChange) * FTNWT.heller local s12 = 226 / (FTNWT.lengthChange) * FTNWT.heller local sr1 = 48 / (FTNWT.lengthChange) * FTNWT.heller local sr2 = 78 / (FTNWT.lengthChange) * FTNWT.heller local sr3 = 88 / (FTNWT.lengthChange) * FTNWT.heller local sr4 = 1500 / (FTNWT.lengthChange) * FTNWT.heller local sr5 = -1000 / (FTNWT.lengthChange) * FTNWT.heller local sr6 = 15 / (FTNWT.lengthChange) * FTNWT.heller local sr7 = 5 / (FTNWT.lengthChange) * FTNWT.heller local sr8 = 255 / (FTNWT.lengthChange) * FTNWT.heller local sr9 = 254 / (FTNWT.lengthChange) * FTNWT.heller local sr10 = 230 / (FTNWT.lengthChange) * FTNWT.heller local ss1 = 98 / (FTNWT.lengthChange) * FTNWT.heller local ss2 = 128 / (FTNWT.lengthChange) * FTNWT.heller local ss3 = 2000 / (FTNWT.lengthChange) * FTNWT.heller local ss4 = -5 / (FTNWT.lengthChange) * FTNWT.heller local ss5 = 250 / (FTNWT.lengthChange) * FTNWT.heller Display.GfxSetSetFogParams(1+s1, 10+s2, 10+s3, 1+s1, 54+s4, 54+s5, 54+s5, 2000+s6, 10500+s7) Display.GfxSetSetLightParams(1+s1, 0+s1, 1+s1, 40+s1, -15+s1, -50+s8, 105+s9, 105+s9, 105+s10, 0+s11, 0+s12, 0+s12) Display.GfxSetSetFogParams(2+s1, 10+s2, 10+s3, 1+s1, 54+sr1, 54+sr2, 54+sr3, 2000+sr4, 10500+sr5) Display.GfxSetSetLightParams(2+sr1, 0+sr1, 1+sr1, 40+sr1, -15+sr1, -50+s8, 105+sr6, 105+sr7, 105+sr7, 0+sr8, 0+sr9, 0+sr10) Display.GfxSetSetFogParams(3+s1, 10+s2, 10+s3, 1+s1, 54+ss1, 54+s5, 54+ss2, 2000+ss3, 10500+sr4) Display.GfxSetSetLightParams(3+s1, 0+s1, 1+s1, 40+s1, -15+s1, -50+s8, 105+ss4, 105+sr7, 105+sr7, 0+ss5, 0+ss5, 0+ss5) if FTNWT.heller >= (FTNWT.lengthChange) then SetupSteppeWeatherGfxSet() StartSimpleJob("F_TaguNacht_CountToNacht") FTNWT.nacht = false FTNWT.tag = true return true end end elseif FTNWT.gfxSet == Highland then if Logic.GetWeatherState() == 1 or Logic.GetWeatherState() == 2 or Logic.GetWeatherState() == 3 then local h1 = 0 / (FTNWT.lengthChange) * FTNWT.heller local h2 = -10 / (FTNWT.lengthChange) * FTNWT.heller local h3 = -9 / (FTNWT.lengthChange) * FTNWT.heller local h4 = 98 / (FTNWT.lengthChange) * FTNWT.heller local h5 = 118 / (FTNWT.lengthChange) * FTNWT.heller local h6 = 128 / (FTNWT.lengthChange) * FTNWT.heller local h7 = 3000 / (FTNWT.lengthChange) * FTNWT.heller local h8 = 17500 / (FTNWT.lengthChange) * FTNWT.heller local h9 = 15 / (FTNWT.lengthChange) * FTNWT.heller local h10 = 5 / (FTNWT.lengthChange) * FTNWT.heller local h11 = 255 / (FTNWT.lengthChange) * FTNWT.heller local h12 = 254 / (FTNWT.lengthChange) * FTNWT.heller local h13 = 230 / (FTNWT.lengthChange) * FTNWT.heller local hr1 = 48 / (FTNWT.lengthChange) * FTNWT.heller local hr2 = 78 / (FTNWT.lengthChange) * FTNWT.heller local hr3 = 88 / (FTNWT.lengthChange) * FTNWT.heller local hr4 = 1000 / (FTNWT.lengthChange) * FTNWT.heller local hr5 = -2500 / (FTNWT.lengthChange) * FTNWT.heller local hs1 = 2000 / (FTNWT.lengthChange) * FTNWT.heller local hs2 = 1500 / (FTNWT.lengthChange) * FTNWT.heller local hs3 = -15 / (FTNWT.lengthChange) * FTNWT.heller local hs4 = 250 / (FTNWT.lengthChange) * FTNWT.heller local hs5 = -5 / (FTNWT.lengthChange) * FTNWT.heller Display.GfxSetSetFogParams(1+h1, 10+h2, 10+h3, 1+h1, 54+h4, 54+h5, 54+h6, 2000+h7, 10500+h8) Display.GfxSetSetLightParams(1+h1, 10+h1, 10+h1, 40+h1, -15+h1, -50+h1, 105+h9, 105+h10, 105+h10, 0+h11, 0+h12, 0+h13) Display.GfxSetSetFogParams(2+h1, 10+h2, 10+h3, 1+h1, 54+hr1, 54+hr2, 54+hr3, 2000+hr4, 10500+hr5) Display.GfxSetSetLightParams(2+h1, 0+h1, 1+h1, 40+h1, -15+h1, -50+h1, 105+h9, 105+h10, 105+h10, 0+h11, 0+h12, 0+h13) Display.GfxSetSetFogParams(3+h1, 10+h2, 10+h3, 1+h1, 54+h4, 54+h5, 54+h6, 2000+hs1, 10500+hs2) Display.GfxSetSetLightParams(3+h1, 0+h1, 1+h1, 40+h1, -15+h1, -50+hs3, 105+hs5, 105+h10, 105+h10, 0+hs4, 0+hs4, 0+hs4) if FTNWT.heller >= (FTNWT.lengthChange) then SetupHighlandWeatherGfxSet() StartSimpleJob("F_TaguNacht_CountToNacht") FTNWT.nacht = false FTNWT.tag = true return true end end elseif FTNWT.gfxSet == Moor then if Logic.GetWeatherState() == 1 or Logic.GetWeatherState() == 2 or Logic.GetWeatherState() == 3 then local m1 = 0 / (FTNWT.lengthChange) * FTNWT.heller local m2 = -10 / (FTNWT.lengthChange) * FTNWT.heller local m3 = -9 / (FTNWT.lengthChange) * FTNWT.heller local m4 = 117 / (FTNWT.lengthChange) * FTNWT.heller local m5 = 110 / (FTNWT.lengthChange) * FTNWT.heller local m6 = 60 / (FTNWT.lengthChange) * FTNWT.heller local m7 = 2000 / (FTNWT.lengthChange) * FTNWT.heller local m8 = 2500 / (FTNWT.lengthChange) * FTNWT.heller local m9 = 14 / (FTNWT.lengthChange) * FTNWT.heller local m10 = -5 / (FTNWT.lengthChange) * FTNWT.heller local m11 = 185 / (FTNWT.lengthChange) * FTNWT.heller local m12 = 164 / (FTNWT.lengthChange) * FTNWT.heller local m13 = 142 / (FTNWT.lengthChange) * FTNWT.heller local mr1 = 77 / (FTNWT.lengthChange) * FTNWT.heller local mr2 = 70 / (FTNWT.lengthChange) * FTNWT.heller local mr3 = 30 / (FTNWT.lengthChange) * FTNWT.heller local mr4 = -2500 / (FTNWT.lengthChange) * FTNWT.heller local mr5 = 15 / (FTNWT.lengthChange) * FTNWT.heller local mr6 = 5 / (FTNWT.lengthChange) * FTNWT.heller local mr7 = 205 / (FTNWT.lengthChange) * FTNWT.heller local mr8 = 204 / (FTNWT.lengthChange) * FTNWT.heller local mr9 = 180 / (FTNWT.lengthChange) * FTNWT.heller local ms1 = 97 / (FTNWT.lengthChange) * FTNWT.heller local ms2 = 3000 / (FTNWT.lengthChange) * FTNWT.heller local ms3 = 3500 / (FTNWT.lengthChange) * FTNWT.heller local ms4 = -25 / (FTNWT.lengthChange) * FTNWT.heller local ms5 = 11 / (FTNWT.lengthChange) * FTNWT.heller local ms6 = 39 / (FTNWT.lengthChange) * FTNWT.heller local ms7 = 59 / (FTNWT.lengthChange) * FTNWT.heller local ms8 = 255 / (FTNWT.lengthChange) * FTNWT.heller local ms9 = 234 / (FTNWT.lengthChange) * FTNWT.heller local ms10 = 202 / (FTNWT.lengthChange) * FTNWT.heller Display.GfxSetSetFogParams(1+m1, 10+m2, 10+m3, 1+m1, 54+m4, 54+m5, 54+m6, 2000+m7, 10500+m8) Display.GfxSetSetLightParams(1+m1, 0+m1, 1+m1, 40+m1, -15+m1, -50+m9, 105+m10, 105+m10, 105+m10, 0+m11, 0+m12, 0+m13) Display.GfxSetSetFogParams(2+m1, 10+m2, 10+m3, 1+m1, 54+mr1, 54+mr2, 54+mr3, 2000+m1, 10500+mr4) Display.GfxSetSetLightParams(2+m1, 0+m1, 1+m1, 40+m1, -15+m1, -50+m1, 105+mr5, 105+mr6, 105+mr6, 0+mr7, 0+mr8, 0+mr9) Display.GfxSetSetFogParams(3+m1, 10+m2, 10+m3, 1+m1, 54+ms1, 54+m5, 54+m6, 2000+ms2, 10500+ms3) Display.GfxSetSetLightParams(3+m1, 0+m1, 1+m1, 40+m1, -15+m1, -50+ms4, 105+ms5, 105+ms6, 105+ms7, 0+ms8, 0+ms9, 0+ms10) if FTNWT.heller >= (FTNWT.lengthChange) then SetupMoorWeatherGfxSet() StartSimpleJob("F_TaguNacht_CountToNacht") FTNWT.nacht = false FTNWT.tag = true return true end end end end
Ob das nun auch in 2 Beiträge gepasst hätte, weiss ich nicht. Wollte sicher gehen.
Einfach alles hintereinander ins Skript und färtisch.
Dieser Beitrag wurde von fritz_98 am 11.09.2010 um 14:38 editiert.
Wladimir
|
#5 02.02.2010 15:25 Beiträge: 489 |
Kompliment!
Der Code sieht schonmal sehr gut (und groß aus.
Wenn wieder mehr Zeit ist, werde ich den mal ausprobieren.
Wladimir.
____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!
Gandalf
aCid
|
#6 02.02.2010 17:48 Beiträge: 275 |
viel fusselarbeit für die zahlen finden gelle?
teste das am we mal, dann kann ich dir mehr dazu sagen, vom empfinden her etc.
____________________
Das ist und bleibt ein Spiel! - Wir sind hier nicht vor Gericht.
----------------------------------------------------------------------
Mapperhilfen für S5:
http://www.siedler-maps.de/forum/Siedler-DEdK-Script-Forum-27/index.htm
http://www.siedler-maps.de/for...und-andere-Ressourcen-8688.htm
http://www.siedler-maps.de/for...unktionen-Skripte-etc-8706.htm
fritz_98
|
#7 02.02.2010 18:14 Beiträge: 472 |
Zitat von aCid:
viel fusselarbeit für die zahlen finden gelle?
Jop. 2 Nachmittage mit Taschenrechner vorm PC gehockt.
kingsia
|
#8 03.02.2010 22:09 Beiträge: 750 |
Hallo Fritz,
Vielen dank für dieser neue Funktion.
ABER ich finde es sehr platzverschwenderisch. 40 kB sind für diese Funktion sehr übertrieben. Du bist bestimmt nicht von der alte Schule die vielleicht 16 kB, 32 kB oder 48 kB als gesamt Speicher inklusive OS und Grafikspeicher zur Verfugung hat.
Statt
function F_TaguNacht_Sonnenuntergang() FritzensTagundNachtwechselTable.heller = FritzensTagundNachtwechselTable.heller + 1 if FritzensTagundNachtwechselTable.gfxSet == Evelance then if Logic.GetWeatherState() == 1 or Logic.GetWeatherState() == 2 or Logic.GetWeatherState() == 3 then local e1 = 0 / (FritzensTagundNachtwechselTable.length/15) * FritzensTagundNachtwechselTable.heller local e2 = 10 / (FritzensTagundNachtwechselTable.length/15) * FritzensTagundNachtwechselTable.heller
usw
Warum nicht
function F_TaguNacht_Sonnenuntergang() local Heller, Length, modifier, e1, e2 usw Heller = FritzensTagundNachtwechselTable.heller + 1 FritzensTagundNachtwechselTable.heller = Heller Length = FritzensTagundNachtwechselTable.length/15 modifier = Length*Heller if FritzensTagundNachtwechselTable.gfxSet == Evelance then if Logic.GetWeatherState() > 0 and Logic.GetWeatherState() <4 then e1 = 0 / modifier e2 = 10 / modifier
Nicht bose gemeint sondern nur als Gedankenanstoss.
Gruss
Kingsia
Anarki
|
#9 04.02.2010 07:53 Beiträge: 518 |
Die Funktion:
FritzensTagundNachtwechselTable.heller = FritzensTagundNachtwechselTable.heller + 1
Wurde beim neuen Codevorschlag gleich gänzlich verschluckt. Es wird also nicht hochgezählt, sondern die local heller immer gleichgesetzt.
Yo verkürzbar ist das ganze schon
Zur Wahrung der Übersicht würd ichs dann sogar so in der Art schreiben:
if (...) then local e1, e2, e3, e4, e5, e6, e7, .. e1 = 0/mod; e2 = 10/mod; e3 = 9/mod; e4 = 16/mod; e5 = 6/mod; ... (...)
dann wird jedes if...end ein 3 oder 4 Zeiler.
____________________
Siedler V Tool: Selbstextrahierende Maps erstellen
Bitte testen und kommentieren
fritz_98
|
#10 04.02.2010 16:48 Beiträge: 472 |
Hallo Kingsia,
warum nicht die Möglichkeiten nutzen, die wir heutzutage haben. Sicher kannst du das ganze verkürzen, denn was allles so böse und groß aussieht, is das hier:
(FritzensTagundNachtwechselTable.length/15) * FritzensTagundNachtwechselTable.heller
Wenn mann jetzt unter die "heller + 1" die Variable
local var = (FritzensTagundNachtwechselTable.length/15) * FritzensTagundNachtwechselTable.heller
definiert und alle
(FritzensTagundNachtwechselTable.length/15) * FritzensTagundNachtwechselTable.heller
Durch "var" ersetzt, die ganen Zahlen in eine Reihe (bspw. Anakis Beispiel), dann sieht das ganze schon gar nicht mehr so böse aus. Steht dir frei zu, dies zu tun.
Aber wie gesagt, Dank dem TinyScript halte ich es für unnötig, zu versuchen, sein Skript so klein wie möglich zu halten. Sicher, früher war das sicher nötig, aber heute... stopft man solche Riesencodes einfach ganz unten ins Skript, damit es keiner sieht.
LG
Fritz
kingsia
|
#11 04.02.2010 17:04 Beiträge: 750 |
Hallo Fritz,
Es geht nicht nur um die Grosse von der Skript sondern auch um die Übersichtlichkeit und Performance.
Warum
(FritzensTagundNachtwechselTable.length/15) * FritzensTagundNachtwechselTable.heller
in fast jeder Zeile neu kalkulieren wenn es nicht nötig ist ?
Das kostet unnötig Rechenleistung und könnte vielleicht dazu fuhren dass die Funktion nicht so optisch gut aussieht wie du es willst und programmiert hast.
Es könnte vielleicht auch dazu fuhren dass manche Leute diese wundervolle neue Funktion nicht einsetzt.
Gruss
Kingsia
Anarki
|
#12 04.02.2010 19:45 Beiträge: 518 |
yo da stimm ich fritzens zu.
Also optisch... egal
Länge... egal
Aber unnütze Rechenschritte (also den Teil immer neu berechnen) das muss vermieden werden.
Vor allem wenn das eben dann ein riesiges Script is das mehrere Jobs gleichzeitig ausführt, dann kann es da schon zum ruckeln kommen.
Yoah, also Übersichtlichkeit und Skriptlänge: Egal
Performance anhand vermeidung unnötiger Rechnungen: Wichtig
Aber optimieren kann man die meisten Skripts! Also das soll keine offensive Kritik sein hier!
Nur das mit den ganzen Einzelrechnungen ist eben zu offensichtlich
____________________
Siedler V Tool: Selbstextrahierende Maps erstellen
Bitte testen und kommentieren
totalwarANGEL
|
#13 04.02.2010 20:06 Beiträge: 2123 |
gottseidank ist mir das zu hoch und ich kann von meinem recht zu schweigen gebrauch machen
____________________
Die Welt ist arschlochförmig und wir leben in der Mitte.
fritz_98
|
#14 05.02.2010 19:41 Beiträge: 472 |
Mein Beispiel oben. Durch eine Variable ersetzt ist es nur noch 3/4 der Rechenarbeit.
Normalerweise sind Rechnungen allerdings nicht besonders Rechnerintensiv. Auch hier. 20 Rechnungen auf einmal sollte der normale PC hinbekommen.
(Vllt. kann mal jemand mit einem schwächeren System den obigen Code mal ausprobieren und sagen, wie's ist.
LG
Fritz
Noigi
|
#15 05.02.2010 19:59 Beiträge: 772 |
Ich kann bestätigen, dass numerische Rechenoperationen bei den Skriptanwendungen hier nie den Löwenanteil des Rechenaufwandes einer Map ausmachen werden. Wir verwalten ja keine Datenbanken mit 6-stelliger Anzahl von Einträgen.
Auch Jobs und HiResJobs kann man im Prinzip so viele laufen lassen, wie man lustig ist - das sind bloß Trigger-Callbacks. Wie so oft kommt es auf den Inhalt an.
Ein paar Beispiele für Funktionen, die erfahrungsgemäß wirklich reinhauen, wären Area-Checks, Entity-Erstellung und interne Armeenverwaltung.
Kalle
|
#16 04.09.2010 18:29 Beiträge: 1150 |
das Thema ist zwar schon älter....
aber ohne das jetzt in sehr langen Testphasen auszuprobieren zu müssen:
Kann ich irgendwie die Tagphase auf 8 Minuten, aber die Nacht nur auf 2 Minuten einstellen?
Bei einem ersten Test mit 60 Sekunden (darunter soll man ja nicht gehen), ist mir der Wechsel (Morgen- Abenddämmerung) viel, viel zu schnell. Kann man den auch noch etwas anpassen?
Gruß
Kalle
____________________
Lieber Siedeln statt (fern)sehen.....
Peter-FS
|
#17 04.09.2010 20:35 Beiträge: 1086 |
Früher sagte man auch, 10MB Festplatte, die bekommst du nie voll.
Um KB zu sparen, kannst du einfach die Variablennamen kürzen.
z.B.
FritzensTagundNachtwechselTable geändert in FTNT, dann hast du nur noch 26KB Quellcode.
Und Variable, wie Vorschlag von Fritz eingesetzt, ergibt nur noch 20KB
Bei meiner letzten Map hatte ich 287KB Quellcode (7049 Zeilen), ich denke da spielen 40KB bzw. 26KB keine große Rolle.
Wichtiger ist doch erst mal die Funktion selber, wenn es gut aussieht, ist das andere Nebensache und sie wird eingesetzt. Ich finde es gut, dass sich Leute die Zeit nehmen und Neues ausprobieren, danke dafür!!!!!
Gruss Peter
____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!
Dieser Beitrag wurde von Peter-FS am 04.09.2010 um 20:42 editiert.
fritz_98
|
#18 04.09.2010 20:57 Beiträge: 472 |
@Kalle:
Entweder du benutzt SpeedUpGame() in der FMA (Testmap) und spulst den Tag vor, oder du versucht per Ersetzen-Funktion, alle
FritzensTagundNachtwechselTable.length/15
durch bspw
FritzensTagundNachtwechselTable.length/45
zu ersetzen. Dann sollte der Übergang weitaus länger dauern.
@Peter:
Danke dir.
Kalle
|
#19 04.09.2010 21:55 Beiträge: 1150 |
... natürlich schließe ich mich Peter-FS an. Ganz klar...
Aber eine Frage blieb noch offen:
Zitat von Kalle:
...Kann ich irgendwie die Tagphase auf 8 Minuten, aber die Nacht nur auf 2 Minuten einstellen?
Fritz, hast Du eine Lösung dafür?
Gruß
____________________
Lieber Siedeln statt (fern)sehen.....
fritz_98
|
#20 04.09.2010 22:03 Beiträge: 472 |
Entscheidend sind die Funktionen
F_TaguNacht_CountToNacht() --und F_TaguNacht_CountToTag()
Du musst nur den Counter.Tick2 etwas bearbeiten. Statt:
if Counter.Tick2("f_TaguNacht_countToNacht_counter",FritzensTagundNachtwechselTable.length) then
einfach
if Counter.Tick2("f_TaguNacht_countToNacht_counter",8*60) then --8 Minuten
Jetzt noch bei CountToTag dasselbe mit 2 Minuten machen.
Aber Achtung! Obiges bringt nun den Übergang durcheinander, da sich jetzt die Übergangszeit nicht mehr an die Tageslänge anpasst, sondern sich auf den angegebenen Tageslänge-Parameter bezieht. Am besten wäre hier ein Mittelwert... etwa 5 Minuten.
Peter-FS
|
#21 04.09.2010 23:15 Beiträge: 1086 |
Hallo Kalle, Fritz98,
ich habe mit 20 Min. getestet
FritzensTagundNachtwechsel(20*60,Steppe)
Den Wert direkt eingeben 8/2, sollte meiner Meinung nach keine Probleme machen. Dann wird der Startparameter FritzensTagundNachtwechselTable.lenght zum Verändern der Wechselzeit verwendet, oder liege ich da falsch?
if FritzensTagundNachtwechselTable.heller >= (FritzensTagundNachtwechselTable.length/15) then Diese Zeile beendet doch den Wechsel?
Bei meinem Test(20min.) dauerte der Wechsel ca. 12-15 Sekunden, ist in Ordnung, finde ich.
??? verkürzt /45 nicht die Zeit???
Gruss Peter
____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!
fritz_98
|
#22 05.09.2010 10:48 Beiträge: 472 |
Zitat von Peter-FS:
??? verkürzt /45 nicht die Zeit???
Verzwickt das ganze...
Oben werden die verschiedenen Varaiablen e1, e2, e3, etc festgelegt. Diese ergeben sich aus den Startwerten des originalen Gfx-Sets, geteilt durch 1/15 des .lenght-Wertes mal den .heller-Wert. Diese e-Variablen werden unten nun zum bisherigen Gfx-Set "addiert" = Höhere/Niedrigere Werte, um sich den Tag - bzw Nachtset anzunähern.
Ersetzt man nun das 1/15 durch 1/45 wird der Wert deutlich kleiner, somit ist auch der addierte Wert kleiner -> längerer Übergang.
ABER: Es dauert weitaus nicht so lang, bis .heller größer als .length/45 ist.
:-?
Dieser Beitrag wurde von fritz_98 am 05.09.2010 um 10:55 editiert.
Peter-FS
|
#23 05.09.2010 12:00 Beiträge: 1086 |
Also,wenn ich das richtig verstanden habe, wäre es das einfachste 3 Startparameter zu übergeben.
1. Länge des Tages
2. Länge der Nacht
3. Länge Übergang
Den .Heller-Wert(jetzt 1) müsstest du dann berechnen, das in der Übergangsphase der Hell- oder Dunkelwert in der eingestellten Zeit erreicht wird.
Also: .Heller-Wert = Startwerte des originalen Gfx-Sets/Übergangszeit.
Dann wäre es für jeden individuell einstellbar.
Gruss Peter
____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!
Wergat
|
#24 05.09.2010 17:21 Beiträge: 215 |
Tag und Nacht...
(Ich hoffe es stört nicht in der Disskusion (über Tag/Nacht/übergang)
...ist genial aber könnte sich dass nicht auf Arbeiter auswirken;
function Arbeiter() if Morgen then Essen if Fertig then Arbeiten end end if Mittag then Essen if Fertig Arbeiten end end if Abend then Essen if Fertig then Schlafen end end end
...so in etwa damit hätte man 100% Tag/Nacht auswirkung
wenn wir dann schon beim Wetter sind könnte man mit einer Chance von 200:1 ein Gewitter-Effekt (Gibt es ihn?) erzeugen und dann ein Zufälliges Gebäude zerstören (langsam) außerdem könnte mit einer weiteren Warscheinlichkeit ein Gebäude angezündet werden. Ist sicher sehr schwer aber die Idee wollte ich mal in die Runde werfen.
Wergat
____________________
Vielen dank an alle, die etwas wissen und es mit anderen teilen.
LG Wergat
Kalle
|
#25 05.09.2010 17:44 Beiträge: 1150 |
nunja, daher mein Interesse an Fritz_98 seiner Version. Und daher auch der Wunsch, die Übergänge etwas besser zu gestalten, aber die Nacht kürzer als den Tag sein zu lassen.
Aber:
Zitat von Wergat:
function Arbeiter() if Morgen then Essen if Fertig then Arbeiten end end end
... dürfte daran scheitern, dass man nicht alle Arbeiter so beeinflussen kann, um Sie Essen oder Schlafen zu schicken.
Gruß
____________________
Lieber Siedeln statt (fern)sehen.....
Seiten: 1 2 Nächste Seite