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

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

Impressum