Page 3 of 6
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Sun Dec 18, 2011 12:35 am
by woah
Ok.. very last kink in this:
It sometimes uses a pot during stealth and the mobs attack.
Is there a code along the lines of: if not player:hasBuff("Stealth") then dont use potions
That i can put somewhere to stop this from happening?
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Sun Dec 18, 2011 1:08 am
by klassik1
Okay. besides what woahh just said. This waypoint is complete! I have zero problems. runs flawlessly.
Id like to thank rock5 and Lisa for all of your help with this waypoint. and my buddy woahh as well
For this waypoint, you need:
Swimhack Userfunction
partycheck userfunction
Code: Select all
<?xml version="1.0" encoding="utf-8"?><waypoints>
<!-- # 1 --><waypoint x="-8499" z="45505" y="758">
repeat
yrest(1000)
until checkparty() == true
yrest(1000) </waypoint>
<!-- # 2 --><waypoint x="-8463" z="45460" y="758" tag="try again"> </waypoint>
<!-- # 3 --><waypoint x="-8459" z="45555" y="758"> yrest(7000)
if not waitForLoadingScreen(10) then
__WPL:setWaypointIndex(__WPL:findWaypointTag("try again"))
end </waypoint>
<!-- # 4 --><waypoint x="343" z="-1456" y="1269"> player:cast("ROGUE_HIDE") fly() </waypoint>
<!-- # 5 --><waypoint x="332" z="-999" y="1286"> </waypoint>
<!-- # 6 --><waypoint x="19" z="-996" y="1255"> flyoff()
repeat
yrest(1000)
until checkparty() == true
yrest(10000)
player:cast("ROGUE_INFORMER")
player:cast("ROGUE_FERVENT_ATTACK")
player:cast("ROGUE_ASSASSINS_RAGE")
player:cast("ROGUE_ENERGY_THIEF")
player:cast("ROGUE_PREMEDITATION") </waypoint>
<!-- # 7 --><waypoint x="-234" z="-995" y="1254"> </waypoint>
<!-- # 8 --><waypoint x="19" z="-1013" y="1256"> fly() player:cast("ROGUE_HIDE") </waypoint>
<!-- # 9 --><waypoint x="332" z="-999" y="1286"> </waypoint>
<!-- # 10 --><waypoint x="316" z="-1396" y="1269" tag="again2"> flyoff()
repeat
yrest(1000)
until checkparty() == true
yrest(1000)
player:cast("ROGUE_HIDE") </waypoint>
<!-- # 11 --><waypoint x="440" z="-1455" y="1269">
if not waitForLoadingScreen(10) then
__WPL:setWaypointIndex(__WPL:findWaypointTag("again2"))
end </waypoint>
<!-- # 12 --><waypoint x="-8472" z="45468" y="758"> yrest(2000)
repeat
yrest(1000)
until checkparty() == true
yrest(3000)
SlashCommand("ILG destroy");
yrest(2000)
SlashCommand("ILG inv");
yrest(2000)
if not player:hasBuff("Combat Master") then
player:cast("ROGUE_COMBAT_MASTER")
end
if not player:hasBuff("Poisonous") then
player:cast("ROGUE_POISON")
end
if not player:hasBuff("Yawakas Blessing") then
player:cast("ROGUE_YAWAKAS_BLESSING")
end
if not player:hasBuff("Unbridled Enthusiasm") then
inventory:useItem("UNBRIDLED_ENTHUSIASM")
end
if not player:hasBuff("Unimaginable Salad") then
inventory:useItem("HOUSEKEEPER_SPECIAL_UNIMAGINABLE_SALAD")
end </waypoint>
</waypoints>
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Sun Dec 18, 2011 1:16 am
by lisa
player.lua line 813 add this
Code: Select all
if player.Class1 == 3 and player:hasBuff(500675) then return false end
So it looks like this
Code: Select all
-- Check if you need to use any potions, and use them.
function CPlayer:checkPotions()
-- only one potion type could be used, so we return after using one type
if player.Class1 == 3 and player:hasBuff(500675) then return false end
if settings.profile.options.USE_PHIRIUS_POTION == true then
I have some other things I am updating so I won't commit it just yet but yeah you are right it should be in there.
Should probably have the buff id in the skill aswell, not sure why it isn't in the database.
Does hide work properly? or do you just cast it with player:cast()
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Sun Dec 18, 2011 1:38 am
by woah
Nice, ill try that. And yeah, hide works. Were using player:cast("ROGUE_HIDE").
Thanks for your help rock and lisa

We have it up and running, 120 mems/hour
Oh and on a side note to everyone else: This script is specifically made for our two chars, so if you want to use this your'e going to have do some customizing for it to work. But feel free to use it

Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Sun Dec 18, 2011 1:45 am
by lisa
Little off topic but was already brought up here.
ROGUE_HIDE doesn't work if being cast by bot itself, even with buff id in the skills database. I did however find the issue and fixed it so you can now add hide to normal skill usage if you want.
Since it only works when not in combat it means it will cast Hide when you are out of combat. Which still isn't ideal, I would suguest having it set in profile as autouse false and just cast it with player:cast() as mentioned.
I haven't commited the fix as yet, getting a few more things I wanted to update together before hand.
If you are interested issue was that the buff has no duration and the bot is set to check for buff duration. So fix was to also check for duration to == -1 which means the buff has no duration.
looks like this
Code: Select all
if buffitem and ((buffitem.TimeLeft > self.rebuffcut + prior/1000) or buffitem.TimeLeft == -1 ) then
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Sun Dec 18, 2011 5:15 am
by woah
Just found an interesting problem.
After about 2 hours klassik1 starts porting, which throws off the ready checks O.o
Cause the ready check requires him to be within '25' of me. But even though hes in the exact same spot as me, the game shows him as far away. I know jumping fixes this... maybe add in some code that makes you jump when you reach the ready-check position? Hrmmm
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Sun Dec 18, 2011 5:37 am
by lisa
Code: Select all
keyboardPress(settings.hotkeys.JUMP.key);
Just add that in there somewhere
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Fri Dec 23, 2011 3:10 pm
by woah
Hey, so the jumping works. But for some reason it only jumps on waypoint 11. Can you see any reason why that would be?
Code: Select all
<?xml version="1.0" encoding="utf-8"?><waypoints>
<!-- # 1 --><waypoint x="-8461" z="45500" y="758" tag="try again"> </waypoint>
<!-- # 2 --><waypoint x="-8459" z="45555" y="758"> yrest(3000)
if not waitForLoadingScreen(10) then
__WPL:setWaypointIndex(__WPL:findWaypointTag("try again"))
end </waypoint>
<!-- # 3 --><waypoint x="343" z="-1456" y="1269"> yrest(4000) player:cast("ROGUE_HIDE") fly() </waypoint>
<!-- # 4 --><waypoint x="332" z="-999" y="1286"> </waypoint>
<!-- # 5 --><waypoint x="19" z="-996" y="1255"> flyoff()
keyboardPress(settings.hotkeys.JUMP.key);
repeat
yrest(1000)
until checkparty() == true
yrest(10000)
player:cast("ROGUE_INFORMER")
player:cast("ROGUE_FERVENT_ATTACK")
player:cast("ROGUE_ASSASSINS_RAGE")
player:cast("ROGUE_ENERGY_THIEF")
player:cast("ROGUE_PREMEDITATION") </waypoint>
<!-- # 6 --><waypoint x="-234" z="-995" y="1254"> yrest(3000) </waypoint>
<!-- # 7 --><waypoint x="19" z="-1013" y="1256"> fly() player:cast("ROGUE_HIDE") </waypoint>
<!-- # 8 --><waypoint x="332" z="-999" y="1286"> </waypoint>
<!-- # 9 --><waypoint x="316" z="-1396" y="1269" tag="again2"> flyoff()
keyboardPress(settings.hotkeys.JUMP.key);
repeat
yrest(1000)
until checkparty() == true
yrest(1000)
player:cast("ROGUE_HIDE") </waypoint>
<!-- # 10 --><waypoint x="440" z="-1455" y="1269">
if not waitForLoadingScreen(10) then
__WPL:setWaypointIndex(__WPL:findWaypointTag("again2"))
end </waypoint>
<!-- # 11 --><waypoint x="-8472" z="45468" y="758"> keyboardPress(settings.hotkeys.JUMP.key); yrest(8000)
if not player:hasBuff("Combat Master") then
player:cast("ROGUE_COMBAT_MASTER")
end
if not player:hasBuff("Poisonous") then
player:cast("ROGUE_POISON")
end
if not player:hasBuff("Yawakas Blessing") then
player:cast("ROGUE_YAWAKAS_BLESSING")
end
if not player:hasBuff("Unbridled Enthusiasm") then
inventory:useItem("UNBRIDLED_ENTHUSIASM")
end
if not player:hasBuff("Unimaginable Salad") then
inventory:useItem("HOUSEKEEPER_SPECIAL_UNIMAGINABLE_SALAD")
end
</waypoint>
</waypoints>
EDIT: Nevermind, i just realized why. It was trying to jump before it had a chance to disable the swimhack, since they were right after eachother.
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Fri Dec 23, 2011 6:16 pm
by klassik1
hello,
how do you figure out the ID's for skills / items?
I can not get Unbridled Enthusiasm, Evasion, or Housekeeper's Special Unimaginable Salad to call in the waypoints.
Code: Select all
if not player:hasBuff("Unbridled Enthusiasm") then
inventory:useItem("UNBRIDLED_ENTHUSIASM")
end
if not player:hasBuff("Unimaginable Salad") then
inventory:useItem("HOUSEKEEPER_SPECIAL_UNIMAGINABLE_SALAD")
end
if not player:hasBuff("Evasion") then
player:cast("ROGUE_EVASION")
end
none of these work.
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Fri Dec 23, 2011 10:08 pm
by lisa
I use this as a userfunction
Code: Select all
function printinventory()
local bags = {}
inventory:update()
for slot = 61, 240 do
item = inventory.BagSlot[slot]
if item.Available and item.Name ~= "<EMPTY>" then
table.insert(bags, {Name = item.Name, Id = item.Id})
end;
end;
table.print(bags)
end
and use the WP commandline and just type printinventory()
Then Micromacro window gets prints of every item in my bags.
Another option is to just go to runesdatabase.com and do a search for the item, usually the web address for the item has the ID.
For buff ID I use an ingame script
Code: Select all
/script for i=1,20 do local name, icon, count, ID = UnitBuff( "player", i ); SendSystemChat(name.." "..ID); end
--=== Note ===--
when you use the
inventory:useItem()
the name needs to be the in game name.
Code: Select all
inventory:useItem("Bone Arrow Quiver")
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Wed Dec 28, 2011 10:45 pm
by woah
Ok so this probably isn't the best place to ask this, but sometimes when I zone out of gc I end up in the floor outside. And this will happen even if im manually controlling my character. Is there any reason for this? Or is this just one of rom's bugs that we cant fix lol.
But its important, because when this happens I'm unable to enter the instance unless I manually get myself out of the floor, which = unstick 10 times -> logout
EDIT: I need to stop posting before I try everything. I fixed it, nevermind.
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Thu Dec 29, 2011 3:47 am
by rock5
woah wrote:EDIT: I need to stop posting before I try everything. I fixed it, nevermind.
How did you fix it? Others might want to know.
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Sat Dec 31, 2011 4:47 am
by woah
The problem was the coordinates of the waypoint that zones you in/out. It needs to be very precise.. I changed "x" by about 5, and it fixed all the zoning problems.
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Mon Jan 02, 2012 2:33 am
by woah
Now that we have the basic script, we're trying to optimize everything to make it completely flawless. Part of this is trying to stop guessing at how long things will take with yrests, and using more dependable methods. Soo....
Previously we used a yrest on char #1 while char #2 used ilg to destroy/reinvite. Also, if both characters enter the instance at the same time sometimes they get put in different instances, and obviously if char #1 enters before joining the party they will also. So it seems like the better way to do this is to have char #1 repeat yrest(1000) until.... (gets invited by player 2) ... then yrest(3000) to make sure char #2 enters first. Is there a code that can check for recieving a party invite? or have char #2 whisper #1 immediately after inviting, and on recieving that whisper, #1 stops resting?
Ok 2nd thing:
We want to use Energy Thief every fight (2m cooldown). Trying to use yrests to make our path take exactly 2 minutes is impossible. Is there a way to check if that skill is cooled down before using it, and rest until it is? This would speed up the whole loop alot.

Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Mon Jan 02, 2012 3:31 am
by lisa
For the first part all of it can be handled by this function
If you understand how the function works of course.
It returns true or false depending on if party members are within the distance set by the argument.
Also note that if the other party member is in another zone then it will always return false.
If you have an autoaccept addon set up, which you should then it is easy to check if you are in party or not.
Code: Select all
repeat
yrest(1000)
until checkparty(300) == true
bigger distance the better for this part.
Now to check if the other party member has entered an instance
Code: Select all
repeat
yrest(1000)
until checkparty(300) == false
Since it is in another zone (the instance) then it will return false no matter the distance in the arg.
As for the skill details, you can use an in game function
Code: Select all
local cooldown, remaining = GetSkillCooldown(tab,number);
yrest(remaining*1000)
remaining is the time left until it is available to use again.
I also suspect you can get the info from rombot.
with skill.Cooldown
So something like.
Code: Select all
for i,v in pairs(settings.profile.skills) do
if v.Name == "Energy Thief" then
local skill = CSkill( v );
yrest(skill.Cooldown*1000)
end
end
Untested but yeah something like that.
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Mon Jan 02, 2012 5:06 am
by woah
Hmm I'm not sure how well that would work for the waiting for the party invite, because it seems like those conditions could be satisfied even before the party leader breaks the party, which would mess things up. I guess I could put a rest before it... But then if the party leader enters the instance too soon, the conditions for the ready check will never be fulfilled.
Is there no function that can detect the actual invitation?
And the part about energy thief looks good, thanks (:
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Mon Jan 02, 2012 5:52 am
by lisa
do the waitforloadingscreen()
and then for the code for after you leave instance do.
leader
Code: Select all
waitforloadingscreen()
repeat
yrest(500)
until checkparty(50) == true-- all party out of instance
yrest(3000) -- 3 second wait to allow other party members to finish zoning.
-- do code to disband group
-- code to invite group
repeat
yrest(500)
until checkparty(50) == true -- party has accepted invite.
-- continue with WP to go into instance.
follower
Code: Select all
waitforloadingscreen()
repeat
yrest(500)
until checkparty(50) == false -- we have been kicked from party
repeat
yrest(500)
until checkparty(50) == true -- now we are back in party
-- continue with WP
--when you get to the spot before going in entrance.
repeat
yrest(500)
until checkparty(500) == false -- party leader has entered instance
-- continue into instance
Starting to get the idea??
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Mon Jan 02, 2012 2:18 pm
by woah
Ahhh that looks like it'll work. I'm going to make these changes and see if it fixes some things, thanks

Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Mon Jan 02, 2012 4:19 pm
by woah
Ok so I tested out both of those things. The invitation ready checks work perfectly
But, the wait for cooldown part doesn't work. I don't really understand that code so I just copy and pasted it in. Here's the code for that waypoint, did I do something wrong?
Code: Select all
<!-- # 5 --><waypoint x="19" z="-996" y="1255"> flyoff() yrest(500)
keyboardPress(settings.hotkeys.JUMP.key);
repeat
yrest(1000)
until checkparty() == true
yrest(2000)
if not player:hasBuff("Combat Master") then
player:cast("ROGUE_COMBAT_MASTER")
end
if not player:hasBuff("Poisonous") then
player:cast("ROGUE_POISON")
end
if not player:hasBuff("Yawakas Blessing") then
player:cast("ROGUE_YAWAKAS_BLESSING")
end
if not player:hasBuff("Unbridled Enthusiasm") then
inventory:useItem(207200);
end
if not player:hasBuff("Unimaginable Salad") then
inventory:useItem(207215);
end
for i,v in pairs(settings.profile.skills) do
if v.Name == "Evasion" then
local skill = CSkill( v );
yrest(skill.Cooldown*1000)
end
end
yrest(500)
player:cast("ROGUE_EVASION")
player:cast("ROGUE_ENERGY_THIEF")
</waypoint>
Re: Wanting to write a waypoint for GC easy 1st boss farm
Posted: Mon Jan 02, 2012 8:07 pm
by lisa
Ahh ok I have it now, it was my mistake I thought that part used the in game name for skills but it uses the rombot name for skills.
try this
Code: Select all
for i,v in pairs(settings.profile.skills) do
if v.Name == "ROGUE_EVASION" then
local skill = CSkill( v );
yrest(skill.Cooldown*1000)
end
end