[[http://www.siedler-games.de|{{:sg-link.jpg|}}]]
===== Support Script =====
Man stelle sich einen Händler (oder jemand anderen) vor, der gegen eine kleine Spende dem Spieler ein paar zusätliche Rohstoffe in unregelmäßigen Abständen schenkt.
Ihr braucht dafür die Tribut-Comfortfunktion von Chromix.
==== Anwendung ====
local supportTable = {
Cost = {Gold = 250}, -- Die "Spende"
TributeText = Umlaute("Für 250 Taler besorgt euch der Händler zusätzliche Rohstoffe."), -- Der Text der im Tributmenü stehen soll
FinishedMessage = "Der Händler hat die Taler verbraucht", -- Die Nachricht, die erscheint, wenn der Händler seine Arbeit einstellt
MinRnd = 3, -- Minimale Anzahl an Unterstützung pro Tribut
MaxRnd = 5, -- Maximale Anzahl an Unterstützung pro Tribut
MinTick = 60, -- Minimale Wartezeit auf Unterstützung
MaxTick = 120, -- Maximale Wartezeit auf Unterstützung
Resources = {
{"Wood", 200, 500}, -- Resource, minimale Menge, maximale Menge
{"Clay", 200, 500},
{"Stone", 200, 400},
{"Iron", 200, 300},
{"Sulfur", 100, 200},
}
}
InitSupport(supportTable)
==== Benötigter Code ====
InitSupport = function( _Support )
if _Support ~= nil then gvSupport = _Support end
gvSupport.IsActive = true
local tribute = {
playerId = gvMission.PlayerID,
text = gvSupport.TributeText,
cost = gvSupport.Cost,
Callback = function()
Counter.SetLimit("Support_Tick", GetRandom(gvSupport.MinTick, gvSupport.MaxTick))
Counter.SetLimit("Support_RndTick", GetRandom(gvSupport.MinRnd, gvSupport.MaxRnd))
StartSimpleJob("SupportGiveRessources")
end,
}
AddTribute(tribute)
end
StopSupport = function()
gvSupport.IsActive = false
end
SupportGiveRessources = function()
if Counter.Tick("Support_Tick") then
local n = GetRandom(table.getn(gvSupport.Resources))
local resource = gvSupport.Resources[n][1]
local amount = math.floor(GetRandom(gvSupport.Resources[n][2], gvSupport.Resources[n][3]) / 10) * 10
Logic.AddToPlayersGlobalResource(gvMission.PlayerID, ResourceType[resource], amount)
Sound.PlayGUISound(GetRandom(732, 736), 0);
local messages = {
Gold = "@color:255,255,0 Taler",
Wood = "@color:128,64,0 Holz",
Clay = "@color:255,128,0 Lehm",
Stone = "@color:128,128,128 Steine",
Iron = "@color:192,192,192 Eisen",
Sulfur = "@color:255,255,128 Schwefel",
}
Message("Ihr habt " .. amount .. " " .. messages[resource] .. " @color:255,255,255 bekommen!")
if Counter.Tick("Support_RndTick") then
Message(gvSupport.FinishedMessage)
if gvSupport.IsActive then InitSupport() end
return true
else
Counter.SetLimit("Support_Tick", GetRandom(gvSupport.MinTick, gvSupport.MaxTick))
end
end
end
==== Zusätzliche Code für bessere Zufallszahlen ====
Der Code ist optional. Wenn er ins Script kopiert wird, werden nicht immer die gleichen Zufallszahlen erstellt
Siehe: [[tutorials:zufallszahlen_zufallsereignisse#getrandom_verbessern|GetRandom()]]