Settlers United Wiki
Settler IV Lua API DE
Search
K
Links
Comment on page

Platzieren von Gebäuden

Im folgenden schauen wir wie man möglichst effektiv Gebäude setzten kann ohne jedes Gebäude selbst per Hand einzutippen. Wir reduzieren den Prozess auf ein Minimum indem nur noch die entsprechenden Koordinaten in ein Array einzutragen sind und per Funktion gesetzt werden. Zuerst legen wir ein Array an:
Buildings Array
buildings={
{}, --WOODCUTTERHUT1
{}, --FORESTERHUT2
{}, --SAWMILL 3
{}, --STONECUTTERHUT4
{}, --WATERWORKHUT5
{}, --FISHERHUT6
{}, --HUNTERHUT7
{}, --SLAUGHTERHOUSE8
{}, --MILL9
{}, --BAKERY10
{}, --GRAINFARM11
{}, --ANIMALRANCH12
{}, --DONKEYRANCH13
{}, --STONEMINE14
{}, --IRONMINE15
{}, --GOLDMINE16
{}, --COALMINE17
{}, --SULFURMINE18
{}, --SMELTGOLD19
{}, --SMELTIRON20
{}, --TOOLSMITH21
{}, --WEAPONSMITH22
{}, --VEHICLEHALL23
{}, --BARRACKS24
{}, --CHARCOALMAKER25
{}, --TRAININGCENTER26
{}, --HEALERHUT27
{}, --AMMOMAKERHUT28
{}, --GUNPOWDERMAKERHUT29
{}, --LANDSCAPEMAKERHUT30
{}, --SHIPYARD31
{}, --PORT32
{}, --MARKETPLACE33
{}, --STORAGEAREA34
{}, --VINYARD,35
{}, --AGAVEFARMERHUT36
{}, --TEQUILAMAKERHUT37
{}, --BEEKEEPERHUT38
{}, --MEADMAKERHUT39
{}, --RESIDENCESMALL40
{}, --RESIDENCEMEDIUM41
{}, --RESIDENCEBIG42
{}, --SMALLTEMPLE43
{}, --BIGTEMPLE44
{}, --LOOKOUTTOWER45
{{350,300},{380,293},{410,307},{350,270}, --GUARDTOWERSMALL46
{350,240}}, -- "
{}, --GUARDTOWERBIG47
{}, --CASTLE48
{}, --MUSHROOMFARM49
{}, --DARKTEMPLE50
{}, --FORTRESS51
{}, --PORTA52
{}, --PORTB53
{}, --PORTC54
{}, --PORTD55
{}, --PORTE56
{}, --PORTF57
{}, --SHIPYARDA58
{}, --SHIPYARDB59
{}, --SHIPYARDC60
{}, --SHIPYARDD61
{}, --SHIPYARDE62
{}, --SHIPYARDF63
{}, --EYECATCHER0164
{{350,290}}, --EYECATCHER0265
{{350,285}}, --EYECATCHER0367
{{350,280}}, --EYECATCHER0468
{{355,300}}, --EYECATCHER0569
{}, --EYECATCHER0670
{}, --EYECATCHER0771
{}, --EYECATCHER0872
{}, --EYECATCHER0973
{}, --EYECATCHER1074
{}, --EYECATCHER1175
{}, --EYECATCHER1276
{}, --SHIPYARDG77
{}, --SHIPYARDH78
{}, --PORTG79
{}, --PORTH80
{}, --MANACOPTERHALL81
{}, --SUNFLOWEROILMAKERHUT82
{} --SUNFLOWERFARMERHUT83
}
In dem Array werden beispielshalber einige kleine Türme gesetzt und ein paar Zierobjekte. Möchte man also ein Gebäude an einer Stelle hinzufügen trägt man sie an die richtige Stelle mit Koordinaten in das Arrays ein.
Damit aus dem Array auch die entsprechenden Gebäude gebaut werden brauchen wir noch eine Funktion. Diese sieht so aus:
function placebuildings(partei)
--placement of new foundation buildings
_type=46
while _type<49 do
_number=1
while buildings[_type][_number]~=nil do
Buildings.AddBuildingEx((buildings[_type][_number][1]),(buildings[_type][_number][2]),partei,_type)
_number=_number+1
end
_type=_type+1
end
--placement of new non-foundation buildings
_type=1
while _type<83 do
_number=1
while buildings[_type][_number]~=nil do
Buildings.AddBuildingEx((buildings[_type][_number][1]),(buildings[_type][_number][2]),partei,_type)
_number=_number+1
end
if _type==45 then
_type=49
else
_type=_type+1
end
end
end
Die Funktion läuft über das Array und setzt zuerst die Grundgebäude und danach die restlichen Gebäude in Reihenfolge ihrer Nummer. Die Funktion wird mit dem Parameter der entsprechenden Partei wie folgt aufgerufen:
placebuildings(1)
Ausnahmen unter den Gebäuden ist Nummer 32 PORT Nummer 36 SHIPYARD, Nummer 30 LANDSCAPEMAKERHUT und Nummer 26 TRAININGSCENTER. Diese können nicht gesetzt werden da sie im aktuellen Spiel nicht mehr existieren. Abschließend sei gesagt, dass das Spiel abstürzt falls Gebäude in Wasser und außerhalb der Grenzen gesetzt werden. Will man ein Gebäude bauen welches nicht dem passenden Volk entspricht kommt es ebenfalls zum Fatal Error. Auch konnten wir beobachten, das ein Platzieren der Gebäude bei bestimmten Siedlertypen (u.a. Esel) zu abstürzen führen kann. Ihr müsst also das platzieren von Gebäuden immer ausreichend testen, da es unter umständen zu FEs kommen kann!