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.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.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. Tutorials
  2. Erste Schritte

Siegbedingungen anpassen

PreviousEvents: register_functionsNextErweiterte Tipps

Last updated 3 years ago

Ihr könnt für eure Karten selbst definierte Siegbedingungen schreiben. Das Spiel hat hierfür extra ein , welches ähnlich wie Events.FIVE_TICKS alle Fünf Ticks aufgerufen wird. Standartmäßig ist dieses Event jedoch von einer eigenen Funktion von Siedler belegt, welche ihr durch setzen dieses Events überschreibt.

Dies ist das normale Verhalten von Siedler im Bezug auf die Überprüfung ob wer gewonnen hat:

function new_game()
       request_event(VictoryConditionCheck, Events.VICTORY_CONDITION_CHECK)
end
 
function register_functions()
	reg_func(VictoryConditionCheck)
end

function VictoryConditionCheck()
	Game.DefaultPlayersLostCheck()
	Game.DefaultGameEndCheck()
end

Wenn ihr dort anstelle der VictoryConditionCheck nun einfach folgendes schreibt, dann führt dies dazu das selbst ein Spieler, der seinen letzten Turm abreißt, nicht verloren hat. Aber auch kein anderer Spieler somit gewinnen kann.

function VictoryConditionCheck()
    -- ja hier muss nichts stehen für das beschriebe Beispiel!
end

Ihr könnt somit aber auch die Sieg & Niederlagebedingungen umschreiben. Als Beispiel könnt ihr überprüfen, ob bereits ein anderen Spieler verloren hat, und wenn ja verliert automatisch sein Teammate mit (Beispiel bei einem 2vs2):

function VictoryConditionCheck()
	Game.DefaultPlayersLostCheck()
	
	if Game.HasPlayerLost(1) == 1 then
		Game.PlayerLost(2)
	elseif Game.HasPlayerLost(2) == 1 then
		Game.PlayerLost(1)
	elseif Game.HasPlayerLost(3) == 1 then
		Game.PlayerLost(4)
	elseif Game.HasPlayerLost(4) == 1 then
		Game.PlayerLost(3)
	end
	Game.DefaultGameEndCheck()
end

spezielles Event