Settlers United Wiki
Settlers UnitedImprint
Settler IV Lua API DE
Settler IV Lua API DE
  • Tutorials
    • Einführung
    • SU Library
    • Erste Schritte
      • Einrichtung & HelloWorld
      • Einstieg: new_game
      • Events: register_functions
      • Siegbedingungen anpassen
    • Erweiterte Tipps
      • Die Vars.Save Variablen
      • Moderner Lua Compiler
      • S4Editor Export Path Changer
      • Anticheat
      • Löschen aller Gebäude
      • Platzieren von Gebäuden
    • Code Schnipsel
      • Soldatenanzahl ermitteln
      • Random innerhalb Bereich
      • Verbesserte Zufallszahlen
      • Neue Minute angebrochen
      • Round & Modulo
      • All Points in a circle (hexagon)
      • foreach_ext
      • Textnachricht nur für einen Spieler
      • Mehr als 8 Waren spawnen
    • Community Bibliotheken
      • MinuteEvents-Library
      • VarsSave-Extender
      • Ground-Library
    • Vollständige Mapscripts
      • Siedler IV WM 2021 "The Woods"
      • Turnier Map Script 2vs2 2022
  • Library Functions
    • Global Functions
      • new_game
      • reg_func
      • register_functions
      • request_event
      • unrequest_event
    • AI
      • AI.AttackNow
      • AI.DarkTribeUseDarkGardeners
      • AI.DarkTribeUseShamans
      • AI.NewSquad
      • AI.SetPlayerVar
    • Buildings
      • Buildings.AddBuilding
      • Buildings.Amount
      • Buildings.CrushBuilding
      • Buildings.Delete
      • Buildings.ExistsBuildingInArea
      • Buildings.GetFirstBuilding
      • Buildings.GetInhabitantAmount
      • Buildings.GetTarget
      • Buildings.IsSelected
    • DarkTribe
      • DarkTribe.AddManakopter
      • DarkTribe.FlyTo
    • Debug
      • Debug.AccessViolation
      • Debug.ActivateAI
      • Debug.DeactivateAI
      • Debug.FatalError
      • Debug.Freeze
      • Debug.MakeDark
      • Debug.MakeGreen
    • Effects
      • Effects.AddEffect
    • Game
      • Game.ArePlayerAreasConnected
      • Game.DefaultGameEndCheck
      • Game.DefaultPlayerLostCheck
      • Game.DefaultPlayersLostCheck
      • Game.DisableLastNPlayersInStatistic
      • Game.EnableLandExploredCheck
      • Game.EnemyPlayersLost
      • Game.FindAnyUnit
      • Game.GetAmountOfTreesInArea
      • Game.GetDifficulty
      • Game.GetNumberOfSquaresWithDarkLand
      • Game.GetOffenceFightingStrength
      • Game.HasPlayerLost
      • Game.IsAlmostAllLandExplored
      • Game.IsAreaDarkLand
      • Game.IsAreaGreen
      • Game.IsAreaOwned
      • Game.LocalPlayer
      • Game.NumberOfPlayers
      • Game.PlayerLost
      • Game.PlayerRace
      • Game.Random
      • Game.Random100
      • Game.ResetFogging
      • Game.SetAlliesDontRevealFog
      • Game.SetFightingStrength
      • Game.ShowClock
      • Game.ShowText
      • Game.Time
    • Goods
      • Goods.AddPileEx
      • Goods.Amount
      • Goods.Delete
      • Goods.GetAmountInArea
    • Magic
      • Magic.CastSpell
      • Magic.CurrentManaAmount
      • Magic.DecreaseMana
      • Magic.IncreaseMana
    • Map
      • Map.AddDecoObject
      • Map.DeleteDecoObject
      • Map.Height
      • Map.PointIsOnScreen
      • Map.SetScreenPos
      • Map.Width
    • Settlers
      • Settlers.AddSettlers
      • Settlers.AddSettlersToFerry
      • Settlers.Amount
      • Settlers.AmountInArea
      • Settlers.AmountInSector
      • Settlers.IsSelected
      • Settlers.KillSelectableSettlers
      • Settlers.ProductionAmount
      • Settlers.SetHealthInArea
    • Statistic
      • Statistic.BuildingsCaptured
      • Statistic.GoodsProduced
      • Statistic.LandOwnedByPlayer
      • Statistic.ManaCollected
      • Statistic.MushroomFarmsDestroyed
      • Statistic.ServantsFreed
      • Statistic.SpellsCast
      • Statistic.UnitsDestroyed
    • Tutorial
      • Tutorial.ClearMarker
      • Tutorial.DeleteWorldCursor
      • Tutorial.DisableControls
      • Tutorial.DisableExcept
      • Tutorial.EnableAllControls
      • Tutorial.EnableControls
      • Tutorial.Exit
      • Tutorial.GetCurrentZoomFactor
      • Tutorial.PressButton
      • Tutorial.RWM
      • Tutorial.SelectNextBuilding
      • Tutorial.SetMarker
      • Tutorial.SetWorldCursor
      • Tutorial.SetZoom
      • Tutorial.ShowText
      • Tutorial.Won
    • Vehicles
      • Vehicles.AddVehicle
      • Vehicles.AddWheelerToFerry
      • Vehicles.Amount
      • Vehicles.AmountInArea
      • Vehicles.AmountInSector
      • Vehicles.GetFerryCargoInArea
      • Vehicles.GetHealth
      • Vehicles.IsSelected
      • Vehicles.KillVehicles
    • dbg
      • dbg.aioff
      • dbg.aion
      • dbg.db
      • dbg.pi
      • dbg.sg
      • dbg.stm
      • dbg.tp
  • SU Library Functions
    • SU.VersionOK
    • SU.Buildings
      • SU.Buildings.AddBuilding
      • SU.Buildings.AddBuildingEx
      • SU.Buildings.AddConstructionSite
      • SU.Buildings.AddConstructionSiteEx
      • SU.Buildings.GarrisonWarriors
      • SU.Buildings.GetConstructionState
      • SU.Buildings.GetHaltedState
      • SU.Buildings.GetPriorityState
      • SU.Buildings.RecruitVehicle
      • SU.Buildings.RecruitWarriors
      • SU.Buildings.SetHaltedState
      • SU.Buildings.SetPriorityState
      • SU.Buildings.SetProduction
      • SU.Buildings.SetProductionPercentMode
      • SU.Buildings.SetProductionPercentage
      • SU.Buildings.SetTradingRoute
      • SU.Buildings.SetWorkarea
      • SU.Buildings.StartPlacement
      • SU.Buildings.StoreGood
      • SU.Buildings.ToggleHalt
      • SU.Buildings.TogglePriority
      • SU.Buildings.TradeGood
      • SU.Buildings.UnGarrisonWarriors
    • SU.Entity
      • SU.Entity.GetBaseType
      • SU.Entity.GetClass
      • SU.Entity.GetEntityType
      • SU.Entity.GetHealth
      • SU.Entity.GetMaxHealth
      • SU.Entity.GetNextEntityID
      • SU.Entity.GetOwner
      • SU.Entity.GetPosition
      • SU.Entity.GetPreviousEntityID
      • SU.Entity.GetRoleClass
      • SU.Entity.GetTribe
      • SU.Entity.GetType
      • SU.Entity.GetUniqueID
      • SU.Entity.PileGetAmount
    • SU.Game
      • SU.Game.AddBeds
      • SU.Game.ClearSelection
      • SU.Game.GetLanguage
      • SU.Game.GetMapName
      • SU.Game.GetMapNameRelativePath
      • SU.Game.GetMaxSelection
      • SU.Game.IsCurrentlyOnScreen
      • SU.Game.Ping
      • SU.Game.PingPlayer
      • SU.Game.PingTeam
      • SU.Game.PingTeamOfPlayer
      • SU.Game.SetBeds
      • SU.Game.SetMaxSelection
      • SU.Game.ShowTextMessage
      • SU.Game.stm
    • SU.Goods
      • SU.Goods.AddPileEx
    • SU.Map
      • SU.Map.GetEcoSector
      • SU.Map.GetFogOfWar
      • SU.Map.GetHeight
      • SU.Map.GetObject
      • SU.Map.GetOwner
      • SU.Map.GetResource
      • SU.Map.GetType
      • SU.Map.IsDarkLand
      • SU.Map.IsDarkLandBorder
      • SU.Map.IsFoundingStone
      • SU.Map.IsOccupied
      • SU.Map.SetResource
    • SU.Settlers
      • SU.Settlers.AddSettlersIfNeeded
      • SU.Settlers.AddSettlersWithBeds
  • API Enums
    • AI
    • Buildings
    • Control
    • Dialog
    • Effects
    • Events
    • Game
    • Goods
    • Magic
    • Menu
    • Settlers
    • Sounds
    • Vehicles
  • SU API Enums
    • SU.Animals
    • SU.BaseTypes
    • SU.Classes
    • SU.EntityTypes
    • SU.Grounds
    • SU.GUIElements
    • SU.Languages
    • SU.Objects
    • SU.Resources
    • SU.RoleClasses
    • SU.Trees
    • SU.Tribes
Powered by GitBook
On this page
Edit on GitHub
  1. SU Library Functions
  2. SU.Settlers

SU.Settlers.AddSettlersIfNeeded

SU Library: erst ab Version 0.3.0 verfügbar!

SU.Settlers.AddSettlersIfNeeded(x, y, playerID, settlerType, amount[, radius=20[, checkLandOwnedRadius=1[, withBeds=0]]])

Erzeugt Siedler an den angegebenen Koordinaten, wenn im Radius nicht genügend vorhanden sind. Zusätzlich können gleich entsprechende Betten hinzugefügt werden, damit diese neuen Siedler nicht zu Streikenden führen können.

Der hauptsächliche Nutzen dieser Funktion ist es, (KI-)Spielern "unendlich" Träger geben zu können, ohne dass tausende herumstehen, sich gegenseitig blockieren und dadurch zu Leistungseinfällen zu führen.

Z.B. kann diese Funktion jede Minute aufgerufen werden und im angegebenen Bereich auf 50 Träger "auffüllen". Wählt man einen Ort, wo sich normalerweise keine Träger aufhalten, kann die KI dadurch unendlich lange Soldaten produzieren.

Notiz

  • der Spieler darf noch nicht verloren haben

  • wie die anderen Funktionen auch, sollte gerade diese Funktion nicht zu häufig aufgerufen werden (nicht alle paar Ticks), sondern lieber seltener (z.B. jede Minute), das reicht in den allermeisten Fällen aus

  • der Radius muss mit Bedacht gewählt werden. Ist er zu klein, sodass amount viele gar keinen Platz darin hätten, werden unendlich lange Siedler hinzugefügt und das Spiel wird früher oder später daran abstürzen!

  • wird die Funktion dauerhaft ausgeführt, sollte withBeds nicht aktiviert sein, da dies endlos Betten hinzufügt. Besser wäre es, die Bettenanzahl einmalig zu einem hohen Wert zu setzen ⇒ SU.Game.SetBeds bzw. SU.Game.AddBeds

Parameter

  • x, y: Koordinaten

  • playerID [1-8]: Spieler-ID, Index 0 ist ungültig!

  • settlerType: Settlers

  • amount: Anzahl der hinzuzufügenden Siedler (inkl. Betten)

  • radius (optional): Radius, in dem nach vorhandenen Siedlern gesucht wird. Um nicht endlos Siedler hinzuzufügen, muss der Radius der Siedlermenge entsprechend groß genug gesetzt werden!

  • checkLandOwnedRadius (optional): Radius, in dem das Land dem Spieler gehören muss, um Siedler hinzuzufügen

  • withBeds (optional): 1: Betten werden hinzugefügt, 0: ohne Betten

Rückgabewert

  • Anzahl an hinzugefügten Siedlern

  • -1: Fehler: das Land gehört dem Spieler nicht mehr oder er ist nicht mehr am Leben ⇒ folglich sollte diese Funktion nicht mehr aufgerufen werden

Beispiel

local numAdded = SU.Settlers.AddSettlersIfNeeded(x, y, 3, Settlers.CARRIER, 50)	-- ensure radius is big enough!
-- to check for new minute
lastMinute = -1

function spawnCarriersPlayer1()
    currentMinute = Game.Time()
    if lastMinute ~= currentMinute then
        lastMinute = currentMinute
        local numAdded = SU.Settlers.AddSettlersIfNeeded(592, 510, 1, Settlers.CARRIER, 50)
        if numAdded == -1 then
            -- player dead or doesn't own this spot anymore -> stop spawning
            unrequest_event(ticking, Events.FIVE_TICKS)
        end
    end
end


function new_game()
    SU.Game.AddBeds(1, 2000)    -- add beds just once, not with every function call!
    request_event(spawnCarriersPlayer1, Events.FIVE_TICKS)
end

function register_functions()
    reg_func(spawnCarriersPlayer1)
end
PreviousSU.SettlersNextSU.Settlers.AddSettlersWithBeds

Last updated 19 days ago