Andor Trainig Range

Runes of Magic/Radiant Arcana (http://www.runesofmagic.com)
Message
Author
User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: Andor Trainig Range

#21 Post by lisa » Thu Nov 08, 2012 7:20 am

Ballerlocke wrote:can you make a file with a complete script for download
me?

nope, I don't have the time for it.

That function is pretty much just the missing piece of the puzzle, someone else should be able to make up a WP without to much hassle that will do the entire event.
Just look at the minigame WP's like AT or survival as an example, you could even just use the WP posted by someone earlier and get it to call the function after it wakes up instead of the code it currently does.

So many ways to do it, have fun.

--=== Added ===--
A little extra info for anyone looking at coding this event.

You get buffs for the extra skills.

I also suspect that the pawnAttackable_offset is where you will find a bit value for if it has already been hit by the skill.

using this will get printouts of that 4byte in memory.

Code: Select all

function tort()
	local proc = getProc()
	local function bitvalues()
		filename = getExecutionPath() .. "/logs/tortlog.txt";
		file, err = io.open(filename, "a+");
		if( not file ) then
			error(err, 0);
		end
		
		local objectList = CObjectList();
		objectList:update();
		local objSize = objectList:size()
		for i = 0,objSize do 
			obj = objectList:getObject(i)
			if obj.Id == 106881 then
				local flags = memoryReadRepeat("int", proc, obj.Address + 0x388) or 0;
				local bitnum=0x80000000
				local bitstring=""
				if bitAnd(flags,0x80000000) then
					file:write("Bits,1,")
				else
					file:write("Bits,0,")
				end
		
				repeat
					bitnum = bitnum / 2
					if bitAnd(flags,bitnum) then
						bitstring = bitstring .. "1,"
					else
						bitstring = bitstring .. "0,"
					end
				until bitnum == 1
				file:write(bitstring.."\n")
			end
		end
		file:close()
	end
	
	local function one(ID)
		if ID == 106881 then bitvalues() end
		local objectList = CObjectList();
		objectList:update();
		local objSize = objectList:size()
		for i = 0,objSize do 
			obj = objectList:getObject(i)
			if obj.Id == ID or ID == 106885 then
				print(obj.Name)
				player:target(obj)
				RoMScript("UseExtraAction(1)")
				yrest(10)
				player:target(obj)
				RoMScript("UseExtraAction(1)")
				if ID == 106883 then
					yrest(10)
					player:target(obj)
					RoMScript("UseExtraAction(1)")	
				end
				yrest(20)
			end
		end
	end
	one(106882)
	one(106882)	
	one(106881)
	one(106883)
	one(106884)	
end

then just open up the txt file in logs/tortlog.txt and see if there are any differences in the prints.
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

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

Re: Andor Trainig Range

#22 Post by lisa » Thu Nov 08, 2012 10:33 pm

Ok this function easily scores 4000+ and you don't actually get any exciting items, loot seems same as scoring 1800ish.
I would strongly sugguest stopping the script before 2000, any score over 2500 is basically labelling yourself as a botter.

Who ever is going to code this up you can do a score check, it is actually a buff that keeps track of the score, even though you don't see an icon on screen.

Code: Select all

        Name:   Points
        Id:     622402
        Level:  4122
        TimeLeft:       619.54425048828
        Count:  1
there is also a buff for keeping track of how many "mobs" are allowed past the line. Level is how many can go past before it stops, so if it says Level 4 that means 4 mobs can go past line before event stops.

Code: Select all

        Name:   Allowed targets that crossed the line
        Id:     622576
        Level:  4
        TimeLeft:       562.76159667969
        Count:  1
Another buff is the aoe that blows up everything, level is how many "charges" you have for the skill.

Code: Select all

        Name:   Remaining shots of Blasting Fireball
        Id:     622646
        Level:  7
        TimeLeft:       565.95989990234
        Count:  1

Code: Select all

function tort(score)
	local proc = getProc()
	
	local function checkclicked(address)
		local tmp = memoryReadRepeat("int", getProc(), address + addresses.pawnAttackable_offset) or 0;
		if bitAnd(tmp,0x8) then
			return true
		else
			return false
		end
	end

	local function one(ID)
		local objectList = CObjectList();
		objectList:update();
		local objSize = objectList:size()
		for i = 0,objSize do 
			obj = objectList:getObject(i)

			if (obj.Id == ID or ID == 106885) and checkclicked(obj.Address) then
				print(obj.Name)
				player:target(obj)
				RoMScript("UseExtraAction(1)")
				yrest(10)
				player:target(obj)
				RoMScript("UseExtraAction(1)")
				if ID == 106883 then
					yrest(10)
					player:target(obj)
					RoMScript("UseExtraAction(1)")	
				end
				yrest(20)
			end
		end
	end
	if score then
		one(106882)
		one(106882)
		one(106884)		
		one(106881)
		one(106883)
	else
		one(106882)
		one(106882)
		one(106881)
		one(106883)
		one(106884)	
	end
end
If you have argument 1 as true it will do
newts --> rabbits --> tortiouse --> armored

If no argument then it will do
newts --> tortiouse --> rabbits --> armored

In the first 5 rounds you can easily use the arg as true and it gets a very nice score without to many crossing the line, occasionally it doesn't click one of them.

That is all the time I have to spend on it, have fun.

For those wishing to use it before anyone actually builds a WP.

1. Save the code to a userfunction file
2. Enter the instance
3. start bot with "rom/bot path:commandline"
4. start the event
5. When it says Go!!!! wait 1 second
6. type "tort()" in the commandline on MM

repeat steps 5 and 6 until ur happy with score or the event ends.

So yes this is me saying cya to this topic, good luck =)
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

User avatar
nightclaw
Posts: 123
Joined: Sun Sep 02, 2012 4:39 am

Re: Andor Trainig Range

#23 Post by nightclaw » Fri Nov 09, 2012 3:49 pm

lisa wrote:Ok this function just scored 1900 and got to round 13, I just call it when it says go.

Code: Select all

function tort()
	
	local function one(ID)
		local objectList = CObjectList();
		objectList:update();
		local objSize = objectList:size()
		for i = 0,objSize do 
			obj = objectList:getObject(i)
			if obj.Id == ID or ID == 106885 then
				print(obj.Name)
				player:target(obj)
				RoMScript("UseExtraAction(1)")
				yrest(10)
				player:target(obj)
				RoMScript("UseExtraAction(1)")
				if ID == 106883 then
					yrest(10)
					player:target(obj)
					RoMScript("UseExtraAction(1)")	
				end
				yrest(20)
			end
		end
	end
	one(106882)
	one(106882)	
	one(106881)
	one(106883)
	one(106884)	
end

It does do some "casts" to turtles that have already dissappeared but it is fast enough to just keep up. There is probably an indicator that the "mob" has already been cast on and is in the process of dissappearing.

So what do i need or put it at to make it work like you did ?

User avatar
nightclaw
Posts: 123
Joined: Sun Sep 02, 2012 4:39 am

Re: Andor Trainig Range

#24 Post by nightclaw » Fri Nov 09, 2012 3:57 pm

thax

User avatar
nightclaw
Posts: 123
Joined: Sun Sep 02, 2012 4:39 am

Re: Andor Trainig Range

#25 Post by nightclaw » Fri Nov 09, 2012 4:13 pm

i did
1. Save the code to a userfunction file
2. Enter the instance
3. start bot with "rom/bot path:commandline"
4. start the event
5. When it says Go!!!! wait 1 second
6. type "tort()" in the commandline on MM

repeat steps 5 and 6 until ur happy with score or the event ends.
but when i did rom/bot path:commandline its askes 4 a way point what do i put in ??

i tryed with out 1 but it did not work

dejfit
Posts: 23
Joined: Wed Oct 05, 2011 6:25 am

Re: Andor Trainig Range

#26 Post by dejfit » Fri Nov 09, 2012 5:25 pm

Did you use this file "StartCommandLine.bat"?

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

Re: Andor Trainig Range

#27 Post by lisa » Fri Nov 09, 2012 5:48 pm

dejfit wrote:Did you use this file "StartCommandLine.bat"?
I forgot about the .bat file,
you can replace steps 1,2,3 with just executing the StartCommandLine.bat =)
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

dejfit
Posts: 23
Joined: Wed Oct 05, 2011 6:25 am

Re: Andor Trainig Range

#28 Post by dejfit » Fri Nov 09, 2012 6:18 pm

Someone knows what to do to get 2 or 3 packages as a reward?

dr-nuker
Posts: 145
Joined: Sun Oct 09, 2011 7:33 am

Re: Andor Trainig Range

#29 Post by dr-nuker » Fri Nov 09, 2012 6:32 pm

dejfit wrote:Someone knows what to do to get 2 or 3 packages as a reward?
I always just get some of the Certificates. For me it feels like a higher score gives more certivicates, Its the same with the rubies. If I score low its only a handcrafted rubypack. On very good runs i get 5 of teardrop rubies...

Too bad my guild just managed to build stonewalls. Now every guild will get them with a twinkle of an eye...

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

Re: Andor Trainig Range

#30 Post by lisa » Fri Nov 09, 2012 6:34 pm

I let it run to 3000-3100 for 5 or 6 chars yesterday and it appeared to get 2 packages each time but when I was scoring in the 4000+ I was only getting 1
*shrug*
I just figured it was random.
Too bad my guild just managed to build stonewalls. Now every guild will get them with a twinkle of an eye...
The walls cost 145000 (roughly) rubies, so even if everyone manages to get 500 each character it will still take a while to get the walls just by doing the event.
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

dejfit
Posts: 23
Joined: Wed Oct 05, 2011 6:25 am

Re: Andor Trainig Range

#31 Post by dejfit » Fri Nov 09, 2012 7:20 pm

Lisa is there any chance to start Your script when animals start to move?
Someting like:

Code: Select all

repeat
yrest(1000);
until "Go!" shows in the middle of a the screen
and then 
tort()

User avatar
nightclaw
Posts: 123
Joined: Sun Sep 02, 2012 4:39 am

Re: Andor Trainig Range

#32 Post by nightclaw » Fri Nov 09, 2012 7:54 pm

ok i type in rom/bot StartCommandLine.bat
and choice my char and i get this next??
Image

what did i do wrong??

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

Re: Andor Trainig Range

#33 Post by lisa » Fri Nov 09, 2012 8:51 pm

looks like the waypoint is missing, which is wierd.
your waypoints folder should have the files in this pic that have a green tick.
wp1.jpg
I would suguest maybe doing a right click on that folder and do SVN revert.
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

User avatar
nightclaw
Posts: 123
Joined: Sun Sep 02, 2012 4:39 am

Re: Andor Trainig Range

#34 Post by nightclaw » Fri Nov 09, 2012 8:54 pm

that would be it i dont have that file i geting it now super thax

User avatar
nightclaw
Posts: 123
Joined: Sun Sep 02, 2012 4:39 am

Re: Andor Trainig Range

#35 Post by nightclaw » Fri Nov 09, 2012 9:24 pm

okay so i got it running and working runs great but crashes here and there. how do we fix?
we did the arena and it crashed. we did the time and it didnt crash. it seems that we get rubies from the arena. does this only work for the time? what way could we get it to work with the arena if this is just for time?

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

Re: Andor Trainig Range

#36 Post by lisa » Fri Nov 09, 2012 10:18 pm

I've used it in both arena and times and works fine, not sure why it would crash for you.
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

User avatar
nightclaw
Posts: 123
Joined: Sun Sep 02, 2012 4:39 am

Re: Andor Trainig Range

#37 Post by nightclaw » Fri Nov 09, 2012 10:23 pm

okay

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

Re: Andor Trainig Range

#38 Post by lisa » Fri Nov 09, 2012 11:38 pm

dejfit wrote:Lisa is there any chance to start Your script when animals start to move?
Someting like:

Code: Select all

repeat
yrest(1000);
until "Go!" shows in the middle of a the screen
and then 
tort()
Sorry I missed this post earlier, of course it can be done but you will need to work out what "type" of message the Go!! actually is. Use the chat monitoring system that already exists in rombot and there you go =)

Tricky bit is working out what type of message it is though.
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

dr-nuker
Posts: 145
Joined: Sun Oct 09, 2011 7:33 am

Re: Andor Trainig Range

#39 Post by dr-nuker » Sat Nov 10, 2012 5:23 am

Is there a way to check the size of the table?

To me as non-programmer this whole script looks kinda cryptic.
All i can do is: open a loop, find all targets, end the loop and shoot them.
But your code is way superior.

So i would like to do as follows, since i never worked with the chat monitoring system:
Loop the function that finds all objects on the field until it has at least 45 targets in.
Pick one of them and watch it`s position. If it moves you can fire.
Then go back to finding all objects and fireing until there are no targets anymore.
Then start over again.

I guess this code would kinda slow everything down but since reaching points higher than 4000 is suspicious anyways I would not mind to fail at that point ;)

Br,
nuker

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

Re: Andor Trainig Range

#40 Post by lisa » Sat Nov 10, 2012 5:36 am

This is what I was using, I have of course improved it since then but this is what I am going to share, see if you can improve it ;)

Code: Select all

			function tort()
				local proc = getProc()
				
				local function checkclicked(address)
					local tmp = memoryReadRepeat("int", proc, address + addresses.pawnAttackable_offset) or 0;
					if bitAnd(tmp,0x8) then
						return true
					else
						return false
					end
				end

				local function one(ID)
					print("targeting: "..ID)
					local objectList = CObjectList();
					objectList:update();
					local objSize = objectList:size()
					for i = 0,objSize do 
						obj = objectList:getObject(i)

						if (obj.Id == ID or ID == 106885) and checkclicked(obj.Address) then
							player:target(obj)
							RoMScript("UseExtraAction(1)")
							yrest(10)
							player:target(obj)
							RoMScript("UseExtraAction(1)")
							if ID == 106883 then
								yrest(10)
								player:target(obj)
								RoMScript("UseExtraAction(1)")	
							end
							yrest(100)
						end
					end
				end
				if player:findNearestNameOrId(106881) then
					local countt = 12
					print("resting a little before attacking, countdown starts now.")
					repeat
						print(countt)
						yrest(1000)
						countt = countt -1
					until countt == 0
					for i = 1,6 do
						one(106882)
						one(106882)
						one(106881)
						one(106883)
						one(106884)	
					end
				end
			end
			
			repeat
				yrest(100)
			until  player:findNearestNameOrId(106881)
			print("OK event has started")
			repeat
				tort()
				player:update()
				buffed = player:getBuff(622402)
				yrest(100)
			until buffed.Level >= 2800 or not player:hasBuff(622402)
			print("Event finished, end score was "..buffed.Level)
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