Benutzer-Werkzeuge

Webseiten-Werkzeuge


utilscripts:support

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: GetRandom()

utilscripts/support.txt · Zuletzt geändert: 2021/09/18 19:15 (Externe Bearbeitung)