Do 18. Feb 2021, 08:39 von peter
Nachdem ich den 3. LUA Mechnismus entschlüsselt habe, will ich es hier vorstellen:
Manchmal will man dem Spieler nicht eine Einheit triggern, sondern nur die Möglichkeit eröffnen, erobertes Equipment zu kaufen.
-- Beispiel:
-- Wenn Spieler Hex {9,8} erobert, 20 Stärkepunkte der Einheit 203mmM1931 als "captured" zuweisen
-- Spieler erhält keine Einheit, sondern Stärkepunkte unter "captured" zum Kauf oder Update
-- für eigene Einheiten "prototypes" statt "captured" verwenden!
-- nötig im Editor unter Trigger:
-- Count: 0
-- Condition kann leer bleiben
-- Actions: CaptureFlagAction
-- Function: OnCaptureDepot
Depot = {{9,8}} -- auch mehrere Depots möglich
string = "General, wir haben ein Lager mit Artillerie erobert."
-- In diese Tabelle werden alle eroberten Depots eingetragen, damit man den Bonus nur bei der 1. Eroberung erhällt
captured_depots = {}
function OnCaptureDepot(action)
if (action.new_owner == 0 and IsItemInTable(Depot, action.flag)) then -- nur ausführen, wenn Spieler (player0) Depot erobert
if IsItemInTable(captured_depots, action.flag) then return end -- Abfrage ob Depot bereits erobert ist
AddEquipment(0, "203mmM1931", 20, captured) -- Spieler0 erhält 20 Stärkepunkte von 203mmM1931 als captured
-- AddEquipment kann man hier auch mehrfach aufrufen
TutorialMessage(string) -- Nachricht an Spieler
table.insert(captured_depots, action.flag) -- Merken, dass das Depot erobert wurde
else
return
end
end
-- die 3 hierfür nötigen Hilfsfunktionen
function FindItemInTable(table, item)
for index,i in ipairs(table) do
if i == item then
return index
end
end
return -1
end
function IsItemInTable(table, item)
return FindItemInTable(table, item) ~= -1
end
function AddEquipment(player_id, unit_type, quantity, category) -- eigentliche Funktion um Equipment hinzuzufügen
local player = world:GetPlayer(player_id)
local equipment = player.equipment
local type = GetUnitType(unit_type)
local eq = equipment[type]
if (eq == nil) then
eq = NewEquipment()
eq.category = category
equipment[type] = eq
end
eq.quantity = eq.quantity + quantity
player.equipment = equipment
end
- Dateianhänge
-
captured.zip
- (1.14 KiB) 117-mal heruntergeladen
Zuletzt geändert von
peter am Di 23. Feb 2021, 08:04, insgesamt 1-mal geändert.