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!
So einfach könnt ihr euch mit dieser Comfort function eine folgende/beschützende Armee erstellen:
CreateFollowingArmy( _entity, _player, _typ, _soldiers, _position, _trups)
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()
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!
------------------------------------------------------------------------------------------------------------------------------------------------------------ -- 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 hier im Forum melden!