Exakter Aufruf von AI.Army_SetWaypointCallback()
» Siedler Map Source Forum » Mapping » Exakter Aufruf von AI.Army_SetWaypointCallback()
Seiten: 1
Emzet
|
#1 19.06.2008 15:19 Beiträge: 80 |
Exakter Aufruf von AI.Army_SetWaypointCallback()
Hallo!
Ich werkel derzeit an meiner zweiten Map herum und habe derzeit Probleme mit der Funktion
AI.Army_SetWaypointCallback( _playerId, _armyId, _funcName ).
Der genaue Aufruf in meiner Map lautet:
AI.Army_SetWaypointCallback(4,4,warten())
Nur das Spiel stürzte immer wieder ab, und ich habe den Verdacht, dass die Funktion nicht richtig aufgerufen wird, weil die eingegebenen Parameter vielleicht falsch sind.
Wäre für eine Lösung des Problems dankbar
nevermind
Siedler Map Source Admin (Web) |
#2 19.06.2008 19:26 Beiträge: 483 |
Hier ein wenig Beispielcode, der nicht unbedingt funktionieren muss...
Wenn die Armee nicht nur Wegpunkte ablaufen, sondern hin und her patrouillieren soll, ist die Funktion glaube ich nicht so gut geeignet. Da sollte man sich selbst etwas überlegen und die Armee mit Redeploy() durch die Gegend schicken. Das (fortgeschrittenen) Tutorial über Armeen im Wiki hilft.
Ob der Parameter _waypoint wirklich bei 1 anfängt, oder doch bei 0, müsstest du im Zweifelsfall mit Message() testen.
function CreateArmyOne() ArmyOne = { id = 1, player = 2, position = GetPosition("armyOneStart"), rodeLength = 3000, strength = 6, zielErreicht = false, } SetupArmy(ArmyOne) for wp = 1, 5 do AI.Army_AddWaypoint(ArmyOne.player, ArmyOne.id, GetEntityId("armyOneWP" .. wp)) end AI.Army_SetWaypointCallback(ArmyOne.player, ArmyOne.id, "ArmyOneWaypointCallback") StartSimpleJob("ControlArmyOne") end function ControlArmyOne() if Counter.Tick2("ControlArmyOne", 10) then if IsDead(ArmyOne) then return true end -- Wenn letzer Wegpunkt erreicht wurde, langsam vorrücken if ArmyOne.zielErreicht then Advance(ArmyOne) end end end function ArmyOneWaypointCallback(_waypoint) -- Bei den ersten Wegpunkten jeweils 30 Sekunden warten if _waypoint < 3 then if Counter.Tick2("ArmyOneWarten", 30) then return 1 end return 0 -- Beim vierten Wegpunkt 5 Minuten lang angreifen elseif _waypoint == 4 then if not Counter.Tick2("ArmyOneAngreifen", 300) then FrontalAttack(ArmyOne) return 0 end return 1 -- Beim letzten Wegpunkt Wegpunkte löschen else ArmyOne.zielErreicht = true AI.Army_ClearWaypoints(ArmyOne.player, ArmyOne.id) return 0 end end
____________________
LUA_ERRSYNTAX: [string "?"]:1: `=' expected near `<eof>'
Dieser Beitrag wurde von nevermind am 19.06.2008 um 19:35 editiert.
Emzet
|
#3 20.06.2008 11:45 Beiträge: 80 |
Vielen Dank
Vielen Dank für den Code und den Tipp.
Ich werde wahrscheinlich wirklich eine Patrolfunktion erstellen müssen.
Auf jedenfall werde ich den Code testen.
Seiten: 1