[[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()]]