Code: Select all
function Focusgates() -- gate ID: 112064
counter = 1
repeat
if counter == 1 then
gate1 = player:findNearestNameOrId(102727)
if gate1 then
player:target(gate1.Address)
RoMScript("FocusUnit("..counter..",'target')")
print("Focused 1st target")
end
yrest(1000);
elseif counter == 2 then
gate2 = player:findNearestNameOrId(102727, gate1.Address)
if gate2 then
player:target(gate2.Address)
RoMScript("FocusUnit("..counter..",'target')")
print("Focused 2nd target")
end
yrest(1000);
elseif counter == 3 then
gate3 = player:findNearestNameOrId(102727, {gate1.Address, gate2.Address})
if gate3 then
player:target(gate3.Address)
RoMScript("FocusUnit("..counter..",'target')")
print("Focused 3rd target")
end
yrest(1000);
end
counter = counter + 1
until counter == 4
end
Code: Select all
function CPlayer:findNearestNameOrId(_objtable, _ignoretable, evalFunc)
if type(_objtable) == "number" or type(_objtable) == "string" then
_objtable = {_objtable}
end
if (_ignoretable ~= nil or _ignoretable ~= 0) then
_ignoretable = {_ignoretable}
else
_ignoretable = {0}
end
local closestObject = nil;
local obj = nil;
local objectList = CObjectList();
local ignoreObj = false
objectList:update();
if( type(evalFunc) ~= "function" ) then
evalFunc = function (unused) return true; end;
end
self:updateXYZ()
for i = 0,objectList:size() do
obj = objectList:getObject(i);
if( obj ~= nil ) then
for __, _objnameorid in pairs(_objtable) do
ignoreObj = false
for _v,_ignorenameorid in pairs(_ignoretable) do
if obj.Address == _ignorenameorid then
ignoreObj = true
break
end
end
if (ignoreObj ~= true and obj.Address ~= player.Address and (obj.Id == tonumber(_objnameorid) or string.find(obj.Name, _objnameorid, 1, true) )) then
if( evalFunc(obj.Address,obj) == true ) then
if( closestObject == nil ) then
closestObject = obj;
else
if( distance(self.X, self.Z, self.Y, obj.X, obj.Z, obj.Y) <
distance(self.X, self.Z, self.Y, closestObject.X, closestObject.Z, closestObject.Y) ) then
-- this node is closer
closestObject = obj;
end
end
end
end
end
end
end
return closestObject;
end