Code: Select all
function CPlayer:findNearestNameOrId(_objnameorid, ignore)
ignore = ignore or 0;
local closestObject = nil;
local obj = nil;
local objectList = CObjectList();
objectList:update();
for i = 0,objectList:size() do
obj = objectList:getObject(i);
if( obj ~= nil ) then
if( (obj.Type == PT_NODE or obj.Type == PT_MONSTER) and obj.Address ~= ignore and (obj.Id == _objnameorid or string.find(obj.Name, _objnameorid) )) then --**************
local dist = distance(self.X, self.Z, obj.X, obj.Z);
if( closestObject == nil ) then
if( distance(self.X, self.Z, obj.X, obj.Z ) < settings.profile.options.HARVEST_DISTANCE ) then
closestObject = obj;
end
else
if( distance(self.X, self.Z, obj.X, obj.Z) <
distance(self.X, self.Z, closestObject.X, closestObject.Z) ) then
-- this node is closer
closestObject = obj;
end
end
end
end
end
return closestObject;
end
function CPlayer:target_Object(_objname, _waittime, _harvestall, _donotignore)
_waittime = _waittime or 0
_harvestall = (_harvestall == true)
_donotignore = (_donotignore == true)
if( not _objname ) then
cprintf(cli.yellow, language[181]); -- Please give an Object name
return
end
yrest(200); -- Make sure we come to a stop before attempting to harvest.
local lastHarvestedNodeAddr = nil;
local objFound = false;
while(true) do
obj = self:findNearestNameOrId(_objname, lastHarvestedNodeAddr)
if obj then -- object found, target
cprintf(cli.yellow, language[95], obj.Name);
objFound = true
memoryWriteInt(getProc(), self.Address + addresses.pawnTargetPtr_offset, obj.Address);
yrest(100)
if obj.Type == PT_MONSTER then --**************************
local tmpTargetHP = memoryReadIntPtr(getProc(), self.Address + addresses.pawnTargetPtr_offset, addresses.pawnHP_offset);
--printf(""..tmpTargetHP.."")
if tmpTargetHP~=0 then
printf("Found target,break loot and fight") self:fight()
end
end --*************************
RoMScript("UseSkill(1,1)"); yrest(50); RoMScript("UseSkill(1,1)"); -- 'click' again to be sure
yrest(_waittime);
end
if obj and _harvestall == true then -- harvest again
if _donotignore ~= true then
lastHarvestedNodeAddr = obj.Address -- Default ignore this address in next search
end
else -- No more harvesting
if objFound == false then
printf(language[79]); -- No harvestables found
end
return objFound
end
end
endprofiles file:
Code: Select all
<onLeaveCombat>
player:target_Object(""..target_Name.."",2000,true);--you need del the "local" in player.lua
player:target_Object("Sick Ent",2000,true);
player:target_Object("monsterName2",2000,true);
player:target_Object("monsterName3",2000,true);
</onLeaveCombat>