Wanting to write a waypoint for GC easy 1st boss farm

Runes of Magic/Radiant Arcana (http://www.runesofmagic.com)
Message
Author
woah
Posts: 44
Joined: Sat Dec 17, 2011 5:27 pm

Re: Wanting to write a waypoint for GC easy 1st boss farm

#41 Post by woah » Sun Dec 18, 2011 12:35 am

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?

klassik1
Posts: 57
Joined: Wed Oct 19, 2011 12:38 pm

Re: Wanting to write a waypoint for GC easy 1st boss farm

#42 Post by klassik1 » Sun Dec 18, 2011 1:08 am

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 :D

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>

Last edited by klassik1 on Sun Dec 18, 2011 3:59 am, edited 1 time in total.

User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: Wanting to write a waypoint for GC easy 1st boss farm

#43 Post by lisa » Sun Dec 18, 2011 1:16 am

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()
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

woah
Posts: 44
Joined: Sat Dec 17, 2011 5:27 pm

Re: Wanting to write a waypoint for GC easy 1st boss farm

#44 Post by woah » Sun Dec 18, 2011 1:38 am

Nice, ill try that. And yeah, hide works. Were using player:cast("ROGUE_HIDE").
Thanks for your help rock and lisa :D
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 :D

User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: Wanting to write a waypoint for GC easy 1st boss farm

#45 Post by lisa » Sun Dec 18, 2011 1:45 am

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
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

woah
Posts: 44
Joined: Sat Dec 17, 2011 5:27 pm

Re: Wanting to write a waypoint for GC easy 1st boss farm

#46 Post by woah » Sun Dec 18, 2011 5:15 am

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

User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: Wanting to write a waypoint for GC easy 1st boss farm

#47 Post by lisa » Sun Dec 18, 2011 5:37 am

Code: Select all

keyboardPress(settings.hotkeys.JUMP.key);
Just add that in there somewhere
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

woah
Posts: 44
Joined: Sat Dec 17, 2011 5:27 pm

Re: Wanting to write a waypoint for GC easy 1st boss farm

#48 Post by woah » Fri Dec 23, 2011 3:10 pm

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.

klassik1
Posts: 57
Joined: Wed Oct 19, 2011 12:38 pm

Re: Wanting to write a waypoint for GC easy 1st boss farm

#49 Post by klassik1 » Fri Dec 23, 2011 6:16 pm

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.

User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: Wanting to write a waypoint for GC easy 1st boss farm

#50 Post by lisa » Fri Dec 23, 2011 10:08 pm

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")
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

woah
Posts: 44
Joined: Sat Dec 17, 2011 5:27 pm

Re: Wanting to write a waypoint for GC easy 1st boss farm

#51 Post by woah » Wed Dec 28, 2011 10:45 pm

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.

User avatar
rock5
Posts: 12173
Joined: Tue Jan 05, 2010 3:30 am
Location: Australia

Re: Wanting to write a waypoint for GC easy 1st boss farm

#52 Post by rock5 » Thu Dec 29, 2011 3:47 am

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.
  • Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
  • I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
  • How to: copy and paste in micromacro
    ________________________
    Quote:
    • “They say hard work never hurt anybody, but I figure, why take the chance.”
          • Ronald Reagan

woah
Posts: 44
Joined: Sat Dec 17, 2011 5:27 pm

Re: Wanting to write a waypoint for GC easy 1st boss farm

#53 Post by woah » Sat Dec 31, 2011 4:47 am

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.

woah
Posts: 44
Joined: Sat Dec 17, 2011 5:27 pm

Re: Wanting to write a waypoint for GC easy 1st boss farm

#54 Post by woah » Mon Jan 02, 2012 2:33 am

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.

:D

User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: Wanting to write a waypoint for GC easy 1st boss farm

#55 Post by lisa » Mon Jan 02, 2012 3:31 am

For the first part all of it can be handled by this function

Code: Select all

checkparty(_dist)
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.
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

woah
Posts: 44
Joined: Sat Dec 17, 2011 5:27 pm

Re: Wanting to write a waypoint for GC easy 1st boss farm

#56 Post by woah » Mon Jan 02, 2012 5:06 am

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 (:

User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: Wanting to write a waypoint for GC easy 1st boss farm

#57 Post by lisa » Mon Jan 02, 2012 5:52 am

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??
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

woah
Posts: 44
Joined: Sat Dec 17, 2011 5:27 pm

Re: Wanting to write a waypoint for GC easy 1st boss farm

#58 Post by woah » Mon Jan 02, 2012 2:18 pm

Ahhh that looks like it'll work. I'm going to make these changes and see if it fixes some things, thanks :D

woah
Posts: 44
Joined: Sat Dec 17, 2011 5:27 pm

Re: Wanting to write a waypoint for GC easy 1st boss farm

#59 Post by woah » Mon Jan 02, 2012 4:19 pm

Ok so I tested out both of those things. The invitation ready checks work perfectly :D

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>

User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: Wanting to write a waypoint for GC easy 1st boss farm

#60 Post by lisa » Mon Jan 02, 2012 8:07 pm

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
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual

Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests