[[http://www.siedler-games.de|{{:sg-link.jpg|}}]]
\\
[[http://www.siedler-portal.de/vb3/member.php?u=2109|Tenji]]
Manchmal will man ja eine befreundete Armee einem Helden folgen, und diesen Beschützen lassen! \\
Dazu kann man sich mit "CreateMilitaryGroup" Truppen erstellen und diese dann mit einem SimpleJob steuern. \\
Wenn man nun mehrere solche Armeen haben will, hat man mehrere Jobs, die gleichzeitig laufen und eigentlich das selbe tun. Außerdem ist es viel Schreibarbeit! \\
\\
Um das zu vereinfachen habe ich mir jetzt eine Comfort function dazu geschrieben, mit der das um vieles einfacher ist! \\
\\
===== Verwendung: =====
So einfach könnt ihr euch mit dieser Comfort function eine folgende/beschützende Armee erstellen:
CreateFollowingArmy( _entity, _player, _typ, _soldiers, _position, _trups)
* **_entity**: Die Entity, die von der Armee beschützt/begleitet wird.
* **_player**: Die PlayerID, die die Armee haben soll.
* **_typ**: Der EntityTyp, der Truppen in der Armee.
* **_soldiers**: Die Anzahl der Soldaten in jeder Truppe der Armee.
* **_position**: Die Position, an der die Armee bei ihrer Erstellung auftaucht.
* **_trups**: Die Anzahl der Truppen in der Armee.
\\
So könnte man einer Entity auch eigene Truppen folgen, oder sie von einer feindliche Armee verfolgen lassen! \\
\\
Um __alle__ Armeen zu deaktivieren kann man einfach das schreiben:
StopAllFollowingArmys()
=== Beispiel: ===
CreateFollowingArmy( "Erec", 4, Entities.PU_LeaderSword4, 8, "Pos1", 2)
Und schon habt ihr eine Armee von 2 Truppen mit je 8 Soldaten, des Typs Bastardschwertkämpfer, die an der Position einer SkriptEntity mit dem Namen "Pos1" auftaucht, und der Entity mit dem Namen "Erec" folgt! \\
\\
\\
===== Mit diesem Code ... =====
=== kann man sich beliebig viele dieser folgenden Armeen erstllen! ===
------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Comfort function to create a following Army by Tenji
------------------------------------------------------------------------------------------------------------------------------------------------------------
function CreateFollowingArmy( _entity, _player, _typ, _soldiers, _position, _trups)
gvFollowingArmys = gvFollowingArmys or { FollowingArmysJobID = StartSimpleJob("ControlAllFollowingArmys") };
local entityName = GetEntityName(_entity);
for i = 1, table.getn(gvFollowingArmys) do
if gvFollowingArmys[i].followEntity == entityName then
local jStart = table.getn(gvFollowingArmys[i]);
for j = 1, _trups do
local number = jStart +j;
local trup = { name = _entity.."Trup"..number};
CreateMilitaryGroup( _player, _typ, _soldiers, GetPosition(_position), trup.name, entityName);
table.insert( gvFollowingArmys[i], trup);
end
return true
end
end
local insertTable = { followEntity = entityName };
for i = 1, _trups do
local trup = { name = _entity.."Trup"..i };
CreateMilitaryGroup( _player, _typ, _soldiers, GetPosition(_position), trup.name, entityName);
table.insert( insertTable, trup);
end
table.insert( gvFollowingArmys, insertTable);
end
function StopAllFollowingArmys()
if (gvFollowingArmys ~= nil) then
EndJob( gvFollowingArmys.FollowingArmysJobID );
gvFollowingArmys = nil;
end
end
function ControlAllFollowingArmys()
for i = table.getn(gvFollowingArmys), 1, -1 do
local entity = gvFollowingArmys[i].followEntity;
for j = table.getn(gvFollowingArmys[i]), 1, -1 do
local trup = gvFollowingArmys[i][j].name;
if (not IsNear( trup, entity, 500)) and IsExisting( trup) then
if IsNear( trup, entity, 3000) then
Attack( trup, GetPosition( entity));
else
Move( trup, GetPosition( entity));
end
elseif not IsExisting( trup) then
table.remove( gvFollowingArmys[i], j);
end
end
if table.getn( gvFollowingArmys[i] ) == 0 then
table.remove( gvFollowingArmys, i);
end
end
end
Bei Problemen bitte [[http://www.siedler-portal.de/vb3/forumdisplay.php?f=95|hier]] im Forum melden! \\
\\
===== Siehe auch =====
* [[tutorials:Armeen_Erstellen]]\\
\\
[[:tutorials:index|Zur Tutorial-Übersicht]]