Script vereinfachung

» Siedler Map Source Forum » Siedler DEdK Script Forum » Script vereinfachung

Seiten: 1

andre111
#1
31.01.2010 10:49
Beiträge: 220

Magier-Code(Script vereinfachung)

Hallo,

Achtung: Der funktionierende Code ist weiter unten!

ich habe diesen Magier-Script entworfen:
Beispielaufruf:

CreateMAG(1,Entities.PU_Scout,"posMAG",2)


function CreateMAG(_player,_entity,_pos,_gegner)

if nachtTagAk == 1 then
else
InitTagNacht()
nachtTagAk = 1
end
numerM = numerM or 0
numerM = numerM + 1
RoCreateEntity(_player,_entity,GetPosition(_pos),"MAG"..numerM,0)
if not MagAction then
MAGTable = {
{ geg = 0, done = 0, count = false, effeckt = false },
{ geg = 0, done = 0, count = false, effeckt = false },
{ geg = 0, done = 0, count = false, effeckt = false },
{ geg = 0, done = 0, count = false, effeckt = false },
{ geg = 0, done = 0, count = false, effeckt = false },
{ geg = 0, done = 0, count = false, effeckt = false },
{ geg = 0, done = 0, count = false, effeckt = false },
{ geg = 0, done = 0, count = false, effeckt = false },
{ geg = 0, done = 0, count = false, effeckt = false },
{ geg = 0, done = 0, count = false, effeckt = false },
}
ControlMag = StartSimpleJob("MAGControl")
ControlMagLive = StartSimpleJob("MAGControlLive")
MagAction = true
end
for i = numerM, numerM do
MAGTable[i].geg = _gegner
end
end

function MAGControlLive()

for i = 1, 10 do
	if IsExisting("MAG"..i) then
		if MAGTable[i].done == 0 then
			if GetHealth("MAG"..i) <= 20 then
				SetHealth("MAG"..i, 100)
				MAGTable[i].done = 1
			end
		else
		if not MAGTable[i].count then
		if i == 1 then
		StartCountdown( 60, MAGLive1)
		elseif i == 2 then
		StartCountdown( 60, MAGLive2)
		elseif i == 3 then
		StartCountdown( 60, MAGLive3)
		elseif i == 4 then
		StartCountdown( 60, MAGLive4)
		elseif i == 5 then
		StartCountdown( 60, MAGLive5)
		elseif i == 6 then
		StartCountdown( 60, MAGLive6)
		elseif i == 7 then
		StartCountdown( 60, MAGLive7)
		elseif i == 8 then
		StartCountdown( 60, MAGLive8)
		elseif i == 9 then
		StartCountdown( 60, MAGLive9)
		elseif i == 10 then
		StartCountdown( 60, MAGLive10)
		end
		MAGTable[i].count = true
		end
		end
	end
end

end

function MAGLive1()

MAGTable[1].count = false
MAGTable[1].done = 0

end

function MAGLive2()

MAGTable[2].count = false
MAGTable[2].done = 0

end

function MAGLive3()

MAGTable[3].count = false
MAGTable[3].done = 0

end

function MAGLive4()

MAGTable[4].count = false
MAGTable[4].done = 0

end

function MAGLive5()

MAGTable[5].count = false
MAGTable[5].done = 0

end

function MAGLive6()

MAGTable[6].count = false
MAGTable[6].done = 0

end

function MAGLive7()

MAGTable[7].count = false
MAGTable[7].done = 0

end

function MAGLive8()

MAGTable[8].count = false
MAGTable[8].done = 0

end

function MAGLive9()

MAGTable[9].count = false
MAGTable[9].done = 0

end

function MAGLive10()

MAGTable[10].count = false
MAGTable[10].done = 0

end

function MAGControl()

for i = 1, 10 do
	if IsExisting("MAG"..i) then
	if not MAGTable[i].effeckt then
	if IstNacht() then
		posa = GetPosition("MAG"..i)
		ress = {Logic.GetPlayerEntitiesInArea(MAGTable[i].geg, 0, posa.X, posa.Y, 1800, 1)}
		for x = 2, ress[1]+1 do
		if Logic.IsWorker(ress[x]) == 0 and Logic.IsBuilding(ress[x]) == 0 then
			SetHealth( ress[x], math.ceil(GetHealth(ress[x]) / 2))
			posb = GetPosition(ress[x])
			Logic.CreateEffect( GGL_Effects.FXMaryDemoralize, posb.X, posb.Y, 1 )
			if i == 1 then
			StartCountdown( 4, MAGNeu1)
			elseif i == 2 then
			StartCountdown( 4, MAGNeu2)
			elseif i == 3 then
			StartCountdown( 4, MAGNeu3)
			elseif i == 4 then
			StartCountdown( 4, MAGNeu4)
			elseif i == 5 then
			StartCountdown( 4, MAGNeu5)
			elseif i == 6 then
			StartCountdown( 4, MAGNeu6)
			elseif i == 7 then
			StartCountdown( 4, MAGNeu7)
			elseif i == 8 then
			StartCountdown( 4, MAGNeu8)
			elseif i == 9 then
			StartCountdown( 4, MAGNeu9)
			elseif i == 10 then
			StartCountdown( 4, MAGNeu10)
			end
			MAGTable[i].effeckt = true
		end
		end
	end
	end
	end
end

end

function MAGNeu1()
MAGTable[1].effeckt = false
end

function MAGNeu2()
MAGTable[2].effeckt = false
end

function MAGNeu3()
MAGTable[3].effeckt = false
end

function MAGNeu4()
MAGTable[4].effeckt = false
end

function MAGNeu5()
MAGTable[5].effeckt = false
end

function MAGNeu6()
MAGTable[6].effeckt = false
end

function MAGNeu7()
MAGTable[7].effeckt = false
end

function MAGNeu8()
MAGTable[8].effeckt = false
end

function MAGNeu9()
MAGTable[9].effeckt = false
end

function MAGNeu10()
MAGTable[10].effeckt = false
end



leider kann man damit höchstens 10 Magier erstellen.
Wie bekoome ich es hin, das die Zahl der Magier egal ist?

1.PS: Der 11., 12., 13., ... Magier wird zwar erstellt, hat aber keine der Fähigeiten.

2.PS: Alle benötigten Comfortfunctionen sind dabei(hier wegen der Länge weggelassen)

FG
andre111

Dieser Beitrag wurde von andre111 am 31.01.2010 um 12:35 editiert.

andre111
#2
31.01.2010 11:30
Beiträge: 220

Man könnte es lösen wenn man der Callback function des Countdowns Parameter übergibt.

Geht das?

FG
andre111

andre111
#3
31.01.2010 12:07
Beiträge: 220

Ich habs jetzt selbst gelöst

andre111

Wladimir
#4
31.01.2010 12:15
Beiträge: 489

Zitat von andre111:
Ich habs jetzt selbst gelöst

andre111



Wie denn? :interessiertguck:

Außerdem könntest du bitte die Comfortfunktionen beim Namen nennen, damit man weiß, wonach man suchen muss.

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

andre111
#5
31.01.2010 12:22
Beiträge: 220

Das ist meine Lösung(mit Comfortfunctionen)(einfach rein in den Script):

function CreateMAG(_player,_entity,_pos,_gegner)

if nachtTagAk == 1 then
else
InitTagNacht()
nachtTagAk = 1
end
numerM = numerM or 0
numerM = numerM + 1
RoCreateEntity(_player,_entity,GetPosition(_pos),"MAG"..numerM,0)
if not MagAction then
MAGTable = {}
ControlMagZ = StartSimpleJob("MAGCount")
ControlMag = StartSimpleJob("MAGControl")
ControlMagLive = StartSimpleJob("MAGControlLive")
MagAction = true
end
table.insert(MAGTable,{ geg = 0, done = 0, count = false, effeckt = false, zahl = 0, zahlB = 0 })
for i = numerM, numerM do
MAGTable[i].geg = _gegner
end
end

function MAGControlLive()

for i = 1, table.getn(MAGTable) do
	if IsExisting("MAG"..i) then
		if MAGTable[i].done == 0 then
			if GetHealth("MAG"..i) <= 20 then
				SetHealth("MAG"..i, 100)
				MAGTable[i].done = 1
			end
		else
		if not MAGTable[i].count then
		MAGTable[i].count = true
		end
		end
	end
end

end

function MAGCount()
for i = 1, table.getn(MAGTable) do
	if IsExisting("MAG"..i) then
		if MAGTable[i].count then
			if MAGTable[i].zahl < 60 then
				MAGTable[i].zahl = MAGTable[i].zahl + 1
			else
				MAGTable[i].count = false
				MAGTable[i].zahl = 0
				MAGTable[i].done = 0
			end
		end
	end
end
for i = 1, table.getn(MAGTable) do
	if IsExisting("MAG"..i) then
		if MAGTable[i].effeckt then
			if MAGTable[i].zahlB < 4 then
				MAGTable[i].zahlB = MAGTable[i].zahlB + 1
			else
				MAGTable[i].effeckt = false
				MAGTable[i].zahlB = 0
			end
		end
	end
end
end

function MAGControl()

for i = 1, table.getn(MAGTable) do
	if IsExisting("MAG"..i) then
	if not MAGTable[i].effeckt then
	if IstNacht() then
		posa = GetPosition("MAG"..i)
		ress = {Logic.GetPlayerEntitiesInArea(MAGTable[i].geg, 0, posa.X, posa.Y, 1800, 1)}
		for x = 2, ress[1]+1 do
		if Logic.IsWorker(ress[x]) == 0 and Logic.IsBuilding(ress[x]) == 0 then
			SetHealth( ress[x], math.ceil(GetHealth(ress[x]) / 2))
			posb = GetPosition(ress[x])
			Logic.CreateEffect( GGL_Effects.FXMaryDemoralize, posb.X, posb.Y, 1 )
			MAGTable[i].effeckt = true
		end
		end
	end
	end
	end
end

end

---------------------------------comfort functionen------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------

function RoCreateEntity(_player,_entity,_pos,_name,_rotation)
 	SetEntityName(Logic.CreateEntity(_entity,_pos.X,_pos.Y,_rotation,_player),_name)
end

function GetHealth( _entity )
  local entityID = GetEntityId( _entity );

    if not Tools.IsEntityAlive( entityID ) then
    return 0;
    end

  local MaxHealth = Logic.GetEntityMaxHealth( entityID );
  local Health = Logic.GetEntityHealth( entityID );

  return ( Health / MaxHealth ) * 100;
end

function InitTagNacht()
  rolay={nSimpleJob=0,nSimpleHiResJob=0}
  StartSimpleJob("RolayStarter")
  TNParameter = {}
  Tag(1)
end

--------übergang Tag auf Nacht-------------

function TagNacht()
  TNParameter.LightA = TNParameter.LightA - 1
  TNParameter.LightC = TNParameter.LightC + 1.25 
  TNParameter.LightD = TNParameter.LightD - 0.775
  TNParameter.LightE = TNParameter.LightE - 0.975  
  TNParameter.LightF = TNParameter.LightF - 0.975
  TNParameter.LightG = TNParameter.LightG - 3.2  
  TNParameter.LightH = TNParameter.LightH - 2.6  
  TNParameter.LightI = TNParameter.LightI - 1.8
  TNParameter.FogC = TNParameter.FogC + 0.4
  TNParameter.FogD = TNParameter.FogD + 0.15  
  TNParameter.FogE = TNParameter.FogE - 0.1 
  TNParameter.FogF = TNParameter.FogF - 50
  Display.SetRenderUseGfxSets(1)
  Display.GfxSetSetFogParams(1, 0.0, 1.0, 1,
  math.floor ( TNParameter.FogC + 0.5 ), math.floor ( TNParameter.FogD + 0.5 ),
  math.floor ( TNParameter.FogE + 0.5 ), math.floor ( TNParameter.FogF + 0.5 ), 10500)
  Display.GfxSetSetLightParams(1, 0.0, 1.0, math.floor ( TNParameter.LightA + 0.5 ), -15,
  math.floor ( TNParameter.LightC + 0.5 ), math.floor ( TNParameter.LightD + 0.5 ), math.floor ( TNParameter.LightE + 0.5 ),
  math.floor ( TNParameter.LightF + 0.5 ), math.floor ( TNParameter.LightG + 0.5 ), math.floor ( TNParameter.LightH + 0.5 ),
  math.floor ( TNParameter.LightI + 0.5 ))
  if TNParameter.LightA == 0 then
  Nacht()
  return true
  elseif TNParameter.LightA == -30 then
  
  end
end

----übergang von Nacht auf Tag----------

function NachtTag()
  TNParameter.LightA = TNParameter.LightA - 1.5
  TNParameter.LightC = TNParameter.LightC - 1.25 
  TNParameter.LightD = TNParameter.LightD + 0.775
  TNParameter.LightE = TNParameter.LightE + 0.975  
  TNParameter.LightF = TNParameter.LightF + 0.975
  TNParameter.LightG = TNParameter.LightG + 3.2  
  TNParameter.LightH = TNParameter.LightH + 2.6  
  TNParameter.LightI = TNParameter.LightI + 1.8
  TNParameter.FogC = TNParameter.FogC - 0.4
  TNParameter.FogD = TNParameter.FogD - 0.15  
  TNParameter.FogE = TNParameter.FogE + 0.1
  TNParameter.FogF = TNParameter.FogF + 50
  Display.SetRenderUseGfxSets(1)
  Display.GfxSetSetFogParams(1, 10.0, 10.0, 1,
  math.floor ( TNParameter.FogC + 0.5 ), math.floor ( TNParameter.FogD + 0.5 ),
  math.floor ( TNParameter.FogE + 0.5 ), math.floor ( TNParameter.FogF + 0.5 ), 10500)
  Display.GfxSetSetLightParams(1, 0.0, 1.0, 30, math.floor ( TNParameter.LightA + 0.5 ),
  math.floor ( TNParameter.LightC + 0.5 ), math.floor ( TNParameter.LightD + 0.5 ), math.floor ( TNParameter.LightE + 0.5 ),
  math.floor ( TNParameter.LightF + 0.5 ), math.floor ( TNParameter.LightG + 0.5 ), math.floor ( TNParameter.LightH + 0.5 ),
  math.floor ( TNParameter.LightI + 0.5 ))
  nachtzahlaktiv = false
  if TNParameter.LightA == -15 then
  Tag()
  return true
  end
end

----Lichtparameter an Nacht anpassen---

function Nacht()
  TNParameter.LightA = 45
  TNParameter.LightC = 0
  TNParameter.LightD = 105
  TNParameter.LightE = 105
  TNParameter.LightF = 105
  TNParameter.LightG = 0
  TNParameter.LightH = 0
  TNParameter.LightI = 0
  TNParameter.FogA = 10.0
  TNParameter.FogB = 10.0
  TNParameter.FogC = 54
  TNParameter.FogD = 54
  TNParameter.FogE = 54
  TNParameter.FogF = 2000
  local lo = zahlnachte + 1
  if lo == 8 then
  lo = 1
  zahlnachte = 1
  end
  if lo == 1 then
  Message("Die Nacht bricht herein")
  elseif lo == 2 then
  Message("Es ist nacht")
  elseif lo == 3 then
  Message("Die Nacht verschlingt das Land")  
  elseif lo == 4 then
  Message("Der Vollmond leuchtet hell")  
  elseif lo == 5 then
  Message("Finsternis bedeckt das Land")  
  elseif lo == 6 then
  Message("Die Sonne ist im Meer ertrunken") 
  elseif lo == 7 then
  Message("Die Kreaturen der Finsternis gehen auf Jagt")  
  end
  TagA = 0
  NachtA = 1
  if not nachtzahlaktiv then
  TagUndNacht.Nacht()
  nachtzahlaktiv = true
  end
end

----Lichtparameter an tag anpassen---

function Tag(_Start)
  TNParameter.LightA = 40    
  TNParameter.LightC = -50
  TNParameter.LightD = 136
  TNParameter.LightE = 144
  TNParameter.LightF = 144
  TNParameter.LightG = 128
  TNParameter.LightH = 104
  TNParameter.LightI = 72
  TNParameter.FogA = 0.0
  TNParameter.FogB = 1.0
  TNParameter.FogC = 38
  TNParameter.FogD = 48
  TNParameter.FogE = 58
  TNParameter.FogF = 4000
  _Start = _Start or 0
  if _Start == 0 then
  TagUndNacht.Tag()
  TagA = 1
  NachtA = 0
  local lo = zahltage + 1
  if lo == 8 then
  lo = 1
  zahltage = 1
  end
    if lo == 1 then
   Message("Es ist Tag")
   elseif lo == 2 then
   Message("Der Tag bricht an")
   elseif lo == 3 then
   Message("Der ertse Hahnenschrei hallt \195\188bers Land")  
   elseif lo == 4 then
   Message("Die Sonne steigt aus den Schenkeln des Meeres")  
    elseif lo == 5 then
   Message("Das Licht vertreibt die Finsternis")  
   elseif lo == 6 then
   Message("Die Sonne scheint wieder") 
   elseif lo == 7 then
   Message("Die Stadt erwacht zu neuem Leben")  
   end
  else
  TagA = 1
  NachtA = 0
  zahltage = 0
  zahlnachte = 0
  TagUndNacht.Start()
  end
end

---Rolays-----

TagUndNacht = {
  Start = function()
  local ze = 120
  table.insert(rolay,{
  soll=ze, 
  ist=0,
  zaehler=1,
    actionEnd = function()
    StartSimpleJob("TagNacht")  
    end
  })
  end,
  Nacht = function()
  local ze = 120
  table.insert(rolay,{
  soll=ze, 
  ist=0,
  zaehler=1,
    actionEnd = function()
    StartSimpleJob("NachtTag")
    end
  })
  end,
  Tag = function()
  local ze = 120
  table.insert(rolay,{
  soll=ze,     
  ist=0,
  zaehler=1,
    actionEnd = function()
    StartSimpleJob("TagNacht")
    end
  })
  end, 
} 
------------------------------------------comfort abfragen-------------------------------------------------
-----------------------------------------Abfrage ob tag ist--------------------------------------------------
function IstTag()
if TagA == 1 then
return true
else
return false
end
end

---------------------------------------Abrage ob Nacht ist----------------------------------------------------
function IstNacht()
if NachtA == 1 then
return true
else
return false
end
end

-----------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------Rolay Comfort Funktionnen----------------------------------------------------------------------------------------------------

function RolayStarter()
	if not rolay then
		rolay={	nSimpleJob=0,nSimpleHiResJob=0}
	end
	for i = 1, table.getn(rolay) do
		if not rolay[i].aktiv then
			rolay[i].aktiv = true
			if rolay[i].simpleHiResJob then
				rolay.nSimpleHiResJob=rolay.nSimpleHiResJob + 1
				if rolay.nSimpleHiResJob == 1 then
					StartSimpleHiResJob("RolayHiRes")
				end
			else
				rolay.nSimpleJob=rolay.nSimpleJob+1
				if rolay.nSimpleJob == 1 then
					StartSimpleJob("Rolay")
				end
			end
		end
	end
end
function Rolay()
	for i = table.getn(rolay),1,-1 do
		if not rolay[i].simpleHiResJob then
			if rolay[i].zaehler < 0 then
				if rolay[i].sonderAction then
					if rolay[i].ist <= rolay[i].sonderSoll and not rolay[i].sonderErledigt then
						rolay[i].sonderErledigt=true
						rolay[i].sonderAction(rolay[i].ist, rolay[i].variablen)
					end
				end
				if rolay[i].ist <= rolay[i].soll then
					rolay[i].erreicht=true
				end
			else
				if rolay[i].sonderAction then
					if rolay[i].ist >= rolay[i].sonderSoll and not rolay[i].sonderErledigt then
						rolay[i].sonderErledigt=true
						rolay[i].sonderAction(rolay[i].ist, rolay[i].variablen)
					end
				end
				if rolay[i].ist >= rolay[i].soll then
					rolay[i].erreicht=true
				end
			end
			if rolay[i].erreicht then
				if type(rolay[i].actionEnd) == "function" then
					rolay[i].actionEnd()
				end
				rolay.nSimpleJob=rolay.nSimpleJob-1
				if rolay.nSimpleJob == 0 then
					table.remove(rolay,i)
					return true
				else
					rolay[i].toRemove=true
				end
			end
			if not rolay[i].toRemove then
				rolay[i].ist = rolay[i].ist + rolay[i].zaehler
				if type(rolay[i].action) == "function" then
					rolay[i].action(rolay[i].ist, rolay[i].variablen)
				end
			end
		end
	end
	for i = table.getn(rolay),1,-1 do
		if rolay[i].toRemove then
			table.remove(rolay,i)
		end
	end
end
function RolayHiRes()
	for i = table.getn(rolay),1,-1 do
		if rolay[i].simpleHiResJob then
			if rolay[i].zaehler <0 then
				if rolay[i].sonderAction then
					if rolay[i].ist <= rolay[i].sonderSoll and not rolay[i].sonderErledigt then
						rolay[i].sonderErledigt=true
						rolay[i].sonderAction(rolay[i].ist, rolay[i].variablen)
					end
				end
				if rolay[i].ist <= rolay[i].soll then
					rolay[i].erreicht=true
				end
			else
				if rolay[i].sonderAction then
					if rolay[i].ist >= rolay[i].sonderSoll and not rolay[i].sonderErledigt then
						rolay[i].sonderErledigt=true
						rolay[i].sonderAction(rolay[i].ist, rolay[i].variablen)
					end
				end
				if rolay[i].ist >= rolay[i].soll then
					rolay[i].erreicht=true
				end
			end
			if rolay[i].erreicht then
				if type(rolay[i].actionEnd) == "function" then
					rolay[i].actionEnd(rolay[i].ist, rolay[i].variablen)
				end
				rolay.nSimpleHiResJob=rolay.nSimpleHiResJob-1
				if rolay.nSimpleHiResJob == 0 then
					table.remove(rolay,i)
					return true
				else
					rolay[i].toRemove=true
				end
			end
			if not rolay[i].toRemove then
				rolay[i].ist = rolay[i].ist + rolay[i]. zaehler
				if type(rolay[i].action) == "function" then
					rolay[i].action(rolay[i].ist, rolay[i].variablen)
				end
			end
		end
	end
	for i = table.getn(rolay),1,-1 do
		if rolay[i].toRemove then
			table.remove(rolay,i)
		end
	end
end



zur Anwendung:
_player = Der Player dem der Magier gehört
_entity = Die entity(Gebäude machen wenig sinn)
_pos = die Anfangs Position des Magiers
_gegner = Wen der Magier "verzaubert"
Bsp. Aufruf:

CreateMAG(1,Entities.PU_Scout,"posMAG",2)



zu den Magiern
-fällt ihr Leben unter 20% dann wird es auf 100% gesetzt(vorausgesetzt es sind 60 Sekunden seit der letzten Heilung vergangen)
-bei Nacht ziehen sie einem Gegner(ID bei _gegner angegeben) in ihrer umgebung die Hälfte seiner Lebenspunkte ab(alle 4 sekunden)

Bitte mich fragen, wenn man es in einer Map benutzt, die man voröffentlichen will.(Privat darf es jeder nutzen)

@Wladimir:
Wenn du wissen willst wie ich es gelöst habe, dann schau dir mal MAGCount() genauer an.

FG
andre111

Dieser Beitrag wurde von andre111 am 31.01.2010 um 12:30 editiert.

andre111
#6
31.01.2010 12:34
Beiträge: 220

Vorschläge und Verbesserungs-Wünsche

Vorschläge und Verbesserungswünsche kann man hier eintragen

FG
andre111

fritz_98
#7
31.01.2010 12:47
Beiträge: 472

Deine Magier-Funktion ist ganz OK.

Was mich mehr interessiert: Wo hast du die Tag/Nacht-Funktion her?
Arbeite nämlich just in diesem Moment ebenfalls an sowas. Allerdings kann man dann den Zyklus an sein GFX-Set anpassen.

LG
Fritz

andre111
#8
31.01.2010 12:51
Beiträge: 220

Zitat von fritz_98:

Was mich mehr interessiert: Wo hast du die Tag/Nacht-Funktion her?
Arbeite nämlich just in diesem Moment ebenfalls an sowas.



@fritz_98:
Gescriptet!
zu deiner function Tag-Nacht:
Wie, ans GFX_Set anpassen? :interesiert sei:

FG
andre111

fritz_98
#9
31.01.2010 13:12
Beiträge: 472

Es gibt doch 5 einstellbare GFX-Sets: Evelance, Normal, Steppe, Moor und Hochland.

Wenn ich jetzt deine Tag/Nacht-Funktion nehme und Landschaftsset "Steppe" einstelle (SetupSteppeWeatherGfxSet()) wird es ziemlich abrupt dunkler. Ich möchte das einstellbar machen.

Leider fehlen mir sämtliche Informationen über die Sets. Hab daraufhin gleich Noigi angeschrieben, mal sehen, ob er da weiterhelfen kann...

Noch dazu würde es bei deinem Code zu dem Fehler kommen, dass sich der Tag/Nacht-Wechsel nicht mit verschiedenen Wetterperioden verträgt. Auch das habe ich berücksichtigt.

Fritz

aCid
#10
31.01.2010 14:19
Beiträge: 275

Tag-Nacht-abrupt: http://www.net-news-global.de/...ps_tricks:sonstige:tagundnacht
Tag-Nacht-fliessend: http://www.siedler-portal.de/s...1342-tag-und-nachtwechsel.html

Da kann man sich doch die Arbeit sparen fritz. Oder berücksichtigen die beiden das Wetter nicht???

Vielleicht findest da auch Ansätze zu den Wettersets.

____________________
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
#11
31.01.2010 14:46
Beiträge: 472

Mensch, aCid!
Da war ich doch schon lange, immer werden Wetter und GFX-Sets nicht beachtet. Beim Peermanent-Wiki wechselt das immer zwischen dem "Normal"-GFX-Set und im Siedler-Portal ist des 2. Set reine Improvisation. Ausserdem wird das mit StartCountdown(1,...) gemacht. Argh!

aCid
#12
31.01.2010 14:54
Beiträge: 275

man muss doch mal nachfragen.
und schadet ja nicht, wenn man die lösungen nochmal ins Gedächtnis ruft. Vielleicht findet da jemand ne Lösung, die für ihn schon ausreicht.

Was willst du statt StartCountdown nutzen? Nen SimpleJob? Nen Counter.Tick?
Ne gewisse Abfrage brauchst du ja zur Zeitmessung??? :-/

____________________
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
#13
31.01.2010 14:56
Beiträge: 472

function HalloIchBinEinJobDer15MinutenAbzaehlt()
  if Counter.Tick2("undIchBinDerPassendeCounterDazu",15*60) then
    Geschafft()
    return true
  end
end


Alles vollkommen ohne StartCountdown().

LG
Fritz

aCid
#14
31.01.2010 15:03
Beiträge: 275

Warum nicht Counter.Tick? Gibt es da gravierende Unterschiede zu Counter.Tick2?

____________________
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
#15
31.01.2010 15:04
Beiträge: 472

Benutze immer Counter.Tick2.
Counter.Tick muss man glaube ich noch ausserhalb des Jobs festlegen. (Bin mir nicht sicher)

Fakt ist: Counter.Tick2 hat mir bisher treue Dienste geleistet.

aCid
#16
31.01.2010 15:08
Beiträge: 275

Ahh okay. Bei mir ist es vice versa.
Counter.Tick braucht auch nichts Extra.

____________________
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
#17
31.01.2010 18:43
Beiträge: 472

Hab jetzt endlich einen Weg gefunden, die Landschaftssets herauszufinden. Danke, Noigi: Dein "Hackertipp" war eine Erleuchtung!

Jetzt kanns weitergehen.. hehe.

Fritz

andre111
#18
31.01.2010 18:50
Beiträge: 220

Zitat von fritz_98:
Hab jetzt endlich einen Weg gefunden, die Landschaftssets herauszufinden. Danke, Noigi: Dein "Hackertipp" war eine Erleuchtung!

Jetzt kanns weitergehen.. hehe.

Fritz



Wie ist denn der Weg?

FG
andre111

fritz_98
#19
01.02.2010 14:49
Beiträge: 472

Ein kleiner Hack der Funktionen Display.GfxSetSetFogParams() und Display.GfxSetSetLightParams().

Display.GfxSetSetFogParams_Orig = Display.GfxSetSetFogParams
function Display.GfxSetSetFogParams(a,b,c,d,e,f,g,h,i)
Display.GfxSetSetFogParams_Orig(a,b,c,d,e,f,g,h,i)
local s = ""..a.." "..b.." "..c.." "..d.." "..e.." "..f.." "..g.." "..h.." "..i..""
assert(false,s)
end

Display.GfxSetSetLightParams_Orig = Display.GfxSetSetLightParams
function Display.GfxSetSetLightParams(a,  b, c, d, e, f, g,h,i, j,k,l)
Display.GfxSetSetLightParams_Orig(a,  b, c, d, e, f, g,h,i, j,k,l)
local s = ""..a.." "..b.." "..c.." "..d.." "..e.." "..f.." "..g.." "..h.." "..i.." "..j.." "..k.." "..l..""
assert(false,s)
end


Wenn du dann dein gewünschtes Landschaftsset einstellst, bekommst du die Settings mit einer Fehlermeldung, die du dann schön in der Zwischenablage hast und in dein Skript einfügen kannst.

Fritz

Seiten: 1

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

Impressum