Yes it should.jduartedj wrote:rock5 shouldn't this thread be moved to addons?
Moved.
Yes it should.jduartedj wrote:rock5 shouldn't this thread be moved to addons?
Code: Select all
--change HP-settings to your needs
if (20 > partymember[i].HP/partymember[i].MaxHP*100 and partymember[i].HP/partymember[i].MaxHP*100 > 20) then
player:target(partymember[i])
if ( distance(player.X, player.Z, partymember[i].X, partymember[i].Z) > 100) then
player:moveTo(CWaypoint(partymember[i].X, partymember[i].Z), true)
yrest(300)
player:cast("PRIEST_SOUL_SOURCE") --change skills to your needs
yrest(300)
j19861986 wrote:When the lifepoints gets lower than 20, Assist healer move to target player and do Soul Source
then is this script correct??? (look below)
--change HP-settings to your needs
if (20 > partymember.HP/partymember.MaxHP*100 and partymember.HP/partymember.MaxHP*100 > 20) then
player:target(partymember)
if ( distance(player.X, player.Z, partymember.X, partymember.Z) > 100) then
player:moveTo(CWaypoint(partymember.X, partymember.Z), true)
yrest(300)
player:cast("PRIEST_SOUL_SOURCE") --change skills to your needs
yrest(300)
Code: Select all
if 20 > partymember[i].HP/partymember[i].MaxHP*100 then
looking at this it seems ok, but hey, theres no partyleader so it gives an error ;d or maybe im not getting it well... should go to sleep about4h agoJackBlonder wrote:Short solution without buff communicationThe buff communication is a nice idea though.Code: Select all
lootBodies() yrest(100) partyleader:update() if ( distance(player.X, player.Z, partyleader.X, partyleader.Z) > 200) then player:moveTo(CWaypoint(partyleader.X, partyleader.Z), true) end RoMScript("FollowUnit('party1');");
try to add this at top of the wp-filelooking at this it seems ok, but hey, theres no partyleader so it gives an error ;d or maybe im not getting it well... should go to sleep about4h ago
Code: Select all
local partyleaderIndex
local partyleader
local partyleaderName
local partyleaderObj
partyleaderIndex = RoMScript("GetPartyLeaderIndex()")
if partyleaderIndex~=nil then
printf("Found partyleaderIndex: %d \n",partyleaderIndex)
partyleaderName = RoMScript("UnitName('party"..partyleaderIndex.."')")
printf("Partyleader: %s \n",partyleaderName)
partyleaderObj = player:findNearestNameOrId(partyleaderName)
partyleader = CPawn(partyleaderObj.Address)
end
Of course you can, they are pawns like any other.sdude13 wrote:I'm trying to change this script to merge with some rbassist functions.
I think I read it is not possible on some posts, but don't find a conrete answer for:
1. Is it possible to target a player not in your group/raid.
2. Can we get the HP of a targeted player (not in our group/raid)
As I'm at work i don't have ROM here.rock5 wrote:Of course you can, they are pawns like any other.sdude13 wrote:I'm trying to change this script to merge with some rbassist functions.
I think I read it is not possible on some posts, but don't find a conrete answer for:
1. Is it possible to target a player not in your group/raid.
2. Can we get the HP of a targeted player (not in our group/raid)
Code: Select all
local playertoassist= player:findNearestNameOrId("XXX")
local targetplayer = CPawn(playertoassist.Address)
for the HP check:
targetplayer:update()
if (80 >targetplayer.HP/targetplayer.MaxHP*100 and targetplayer.HP/targetplayer.MaxHP*100 > 50) then
player:target(targetplayer)
... some more code
end
RoMScript("FollowUnit(targetplayert);");
Maybe the player is out of range. You would need to check that it's not nil before continuing with the other commands or you will get an error.sdude13 wrote:the player:findNearestNameOrId("XXX") returns NIL...
You could just use player:moveInRange() whenever you get out of range. So you would need to continuously check if you are out of range.sdude13 wrote:I don't know how I can get the char follow the other not being in the group
rock5 wrote:Maybe the player is out of range. You would need to check that it's not nil before continuing with the other commands or you will get an error.sdude13 wrote:the player:findNearestNameOrId("XXX") returns NIL...You could just use player:moveInRange() whenever you get out of range. So you would need to continuously check if you are out of range.sdude13 wrote:I don't know how I can get the char follow the other not being in the group
Code: Select all
repeat playertoassist = player:findNearestNameOrId("PlayerB") until playertoassist ~= nil
targetplayer = CPawn(playertoassist.Address)
print (targetplayer)
You need to specify a range, ie how close you want to get to the target;sdude13 wrote:trying
player:moveInRange(targetplayer)
scripts/rom/classes/player.lua:1932: attempt to compare nil with number
Code: Select all
player:moveInRange(targetplayer,100)
Code: Select all
player:moveInRange(targetplayer, 100, true)
Code: Select all
<?xml version="1.0" encoding="utf-8"?><waypoints>
<onLoad>
local maxBattleDistToLeader = 50 --Change to your needs
local maxDistToLeader = 250 --Change to your needs (for example if you want use lootBodies)
local partymember={}
local partymemberName={}
local partymemberObj={}
local partyleaderIndex
local partyleader
local partyleaderName
local partyleaderObj
local noofpartymembers
local i
repeat buff_regen=RoMScript("TEXT('Sys500469_name')"); yrest(500) until buff_regen --Get local name of regen buff
--********************************************************
--get all partymembers
--********************************************************
if RoMScript("UnitExists('party1')") then
partyleaderIndex = RoMScript("GetPartyLeaderIndex()")
if partyleaderIndex~=nil then
printf("Found partyleaderIndex: %d \n",partyleaderIndex)
partyleaderName = RoMScript("UnitName('party"..partyleaderIndex.."')")
printf("Partyleader: %s \n",partyleaderName)
partyleaderObj = player:findNearestNameOrId(partyleaderName)
partyleader = CPawn(partyleaderObj.Address)
end
table.insert(partymemberName, RoMScript("UnitName('player')"))
i = 1
while not(i >= 7 ) do
if RoMScript("UnitIsPlayer('party"..i.."');") then
table.insert(partymemberName,i+1, RoMScript("UnitName('party"..i.."')"))
end
i = i + 1
end
--show table
for i,v in ipairs(partymemberName) do print(i,v) end
noofpartymembers = #partymemberName
--print(noofpartymembers)
for i,v in ipairs(partymemberName) do
table.insert(partymemberObj,i,player:findNearestNameOrId(partymemberName[i]))
table.insert(partymember,i,CPawn(partymemberObj[i].Address))
end
--****DEBUGGING
--for i,v in ipairs(partymemberObj) do print(i,v) end
--for i,v in ipairs(partymember) do print(i,v) end
--*************
end
--********************************************************************
--Look at partymember health and return partymember with lowest health
--********************************************************************
function get_LeastHpPlayer(party)
local minHpPlayer=player
local i=1
for i,v in ipairs(party) do
party[i]:update()
if (minHpPlayer.HP/minHpPlayer.MaxHP*100 > party[i].HP/party[i].MaxHP*100) then
minHpPlayer=party[i]
end
end
return minHpPlayer
end
--********************************************************
--Main loop
--********************************************************
while(true) do
player:update()
partyleader:update()
if (player.Battling and distance(player.X, player.Z, partyleader.X, partyleader.Z) > maxBattleDistToLeader) then
player:moveInRange(partyleader, maxBattleDistToLeader, true)
elseif (not player.Battling and distance(player.X, player.Z, partyleader.X, partyleader.Z) > maxDistToLeader) then
player:moveInRange(partyleader, maxBattleDistToLeader, true)
else
local healTarget
healTarget = get_LeastHpPlayer(partymember)
if (90 > healTarget.HP/healTarget.MaxHP*100 and
healTarget.HP/healTarget.MaxHP*100 > 70 and
not healTarget:hasBuff(buff_regen) ) then
player:target(healTarget)
player:cast("PRIEST_REGENERATE")
elseif (70 > healTarget.HP/healTarget.MaxHP*100 and
healTarget.HP/healTarget.MaxHP*100 > 50) then
player:target(healTarget)
player:cast("PRIEST_URGENT_HEAL")
elseif (50 > healTarget.HP/healTarget.MaxHP*100) then
player:target(healTarget)
player:cast("PRIEST_HEAL")
end
end
yrest(1000)
end
</onLoad>
</waypoints>
Code: Select all
if (player.Battling and distance(player.X, player.Z, partyleader.X, partyleader.Z) > maxBattleDistToLeader) then
printf("in battle\n") --added for debugging
player:moveInRange(partyleader, maxBattleDistToLeader, true)
Users browsing this forum: Google [Bot] and 0 guests