Jump to content

Feather Headresses and AHK


Th e Doctor

Recommended Posts

Currently I'm working on making feather headdresses with AHK for crafting exp. I seem to be stuck at around 300 k exp/hr and grimy's sheets say that it maxes at 400ish. The script I'm currently using to make them is below...

 

[hide]

\::click

]::mousemove 0,37,0,R

[::click

p::mousemove 0,-37,0,R

o::click

i::mousemove 37,0,0,R

u::click

y::mousemove -37,0,0,R

t::click

r::mousemove -37,-37,0,r

e::click

w::mousemove 37,37,0,r

q::click

a::mousemove 37,-37,0,r

s::click

d::mousemove -37,37,0,r

f::click

g::mousemove -37,74,0,r

h::click

j::mousemove 37,-74,0,r

k::click

l::mousemove 0,74,0,r

'::click

/::mousemove 0,-74,0,r

.::click

,::mousemove -37,-74,0,r

m::click

n::mousemove 37,74,0,r

b::click

v::mousemove 0,111,0,r

c::click

x::mousemove 0,-111,0,r

z::click

 

^q::mousemove -200,-200,0,r

^w::click

^e::mousemove 163,163,0,r

^r::rbutton

^t::mousemove 0,74,0,r

^y::click

^u::mousemove -126,-190,0,r

^i::rbutton

^o::mousemove 0,74,0,r

^p::click

^[::mousemove 50,-480,0,r

^]::click

^\::mousemove 113,559,0,r

 

[/hide]

 

I basically drag my finger across the keys back and forth and then reverse the same dragging motion but this only ends up making 16 per inventory or 800 exp in about 6 seconds.

 

Any help or suggestions on how to make a better script (or if someone feels like making one for me) would be appreciated. In the mean time I'm just going to wait for my feathers to buy and work on RC.


witchynosaur.png

Armadyl Drops : 4 Hilts; 3 Chestplates; 2 Chainskirts; 1 Helmet; 1 Buckler; 2 Shard 1; 2 Shard 2; 1 Shard 3

Nex : 1 Zaryte Bow

Kalphite King : 1 Drygore Rapier ; 1 Drygore Longsword : 1 Drygore Offhand Rapier : 1 Drygore Offhand Longsword

Link to comment
Share on other sites

Can't really help you out much without actually making headdresses myself, but the prettiest way to do it is to store your x coords in an array and your y coords in another, and move the mouse to each when your iterator is even. You can tell if an integer is even by taking the modulo of 2, i.e. i%2 is 1 if i is odd and 0 if it is even.

Link to comment
Share on other sites

[hide=ahk script]

		
Action := 0
	 Jump := 0		 RCtrl::
	 Gosub , Clean
	 return		
Esc::
	 Action := 0
	 Jump := 0
	 return		 Clean:
	 If (Action = 0) {
		 Click Left
		 Action++
	 }
	 Else If (Action = 1) {
		 Mousemove , 0 , 36 , 0 , R
		 Action++
	 }
	 Else If (Action = 2) {
		 Click Left
		 Action++
	 }
	 Else If (Action = 3) {
		 Mousemove , 0 , 36 , 0 , R
		 Action++
	 }
	 Else If (Action = 4) {
		 Click Left
		 Action++
	 }
	 Else If (Action = 5) {
		 Mousemove , 0 , 36 , 0 , R
		 Action++
	 }
	 Else If (Action = 6) {
		 Click Left
		 Action++
	 }
	 Else If (Action = 7) {
		 Mousemove , 0 , 36 , 0 , R
		 Action++
	 }
	 Else If (Action = 8) {
		 Click Left
		 Action++
	 }
	 Else If (Action = 9) {
		 Mousemove , 0 , 36 , 0 , R
		 Action++
	 }
	 Else If (Action = 10) {
		 Click Left
		 Action++
	 }
	 Else If (Action = 11) {
		 Mousemove , 0 , 36 , 0 , R
		 Action++
	 }
	 Else If (Action = 12) {
		 Click Left
		 Action++
	 }
	 Else If (Action >= 13) {
		 Gosub , Jump1
		 Action:= 0
	 }
	 return		
Jump1:
	 If (Jump <= 2) {
		 Mousemove , 40 , -216 , 0 , R
		 Jump++
	 }
	 Else If (Jump >= 3) {
		 Mousemove , 40 , -216 , 0 , R
		 Action := 0
		 Jump := 0
	 }
	 return

To use this you just put your mouse over the first inventory slot and rapidly press the right control/hold it down. Pressing esc will reload the script.[/hide]

The original intent of this script was to clean herbs, which is now obsolete. What it does is it moves and clicks each of your inventory spaces and then jumps to the next row. It's actually really good and easily tweakable if you understand AHK even a little bit. I'd use this as a skeleton for things that are click intensive in your inventory.

 

Take a look over this for an idea of what you can do just pressing one button and assigning it to do different things. Or you could do as Mere suggested and store it in an array, but personally I think this way is easier to script as it makes sense to me. Just something to look into if you're really wanting to do this, and be aware to keep it 1:1 as I'm sure you already know. :P

Edited by mlskid

Mlskid.png
Summoning help:
[hide=Wio, lol]logioh.png[/hide]

Link to comment
Share on other sites

^ That script is nice and all but it breaks the golden rule:

1 input to 1 output.

 

If you can just hold the button down and it keeps moving and clicking it is basically an outright macro; you shouldn't even move and click in 1 key press really, as that is 2 outputs.

Plv6Dz6.jpg

Operation Gold Sparkles :: Chompy Kills ::  Full Profound :: Champions :: Barbarian Notes :: Champions Tackle Box :: MA Rewards

Dragonkin Journals :: Ports Stories :: Elder Chronicles :: Boss Slayer :: Penance King :: Kal'gerion Titles :: Gold Statue

Link to comment
Share on other sites

^ It became a macro the second he made a hotkey react with an input - Doesn't make it illegal. Though, I'm sure (optimist here) that he's lifting the key each time. :P. But then again - put logs in your inventory, put logs on your actionbar and hold the key. One action, multiple reactions (drops the full inventory of logs in one press). As is, his script technically does one action per reaction.

 

Now, even though your script abides by the one action per reaction, it still runs risk of being falsely detected as a bot. Why? Because you're using precise move and click values.

 

I know it sounds bad to say make it undetectable, but running it for a few hours/days as is, you're being very risky, no matter how legal it is. Randomize your movements.

 

As Meredith pointed out, you can simplify your script by storing the data in an array. Though, I'd structure it differently:

action:=-1
perform:=[{action:"press",button:"rbutton"},{action:"move",x:425,y:475},{action:"press",button:"lbutton"},{action:"move",x:350,y:200}] ;~ Create an array of actions

esc::
   action++
   if(perform[mod(action,perform.maxindex())+1].action=="press")
       sendinput,% "{" perform[mod(action,perform.maxindex())+1].button "}"
   else if(perform[mod(action,perform.maxindex())+1].action=="move")
       mousemove,% perform[mod(action,perform.maxindex())+1].x,% perform[mod(action,perform.maxindex())+1].y
return

The above script, according to RnuneScape's rules, is entirely legal. You'll notice that the above loops actions fine by using modulo - though in a different way then Meredith suggested. However, it also is not random, so use it only as an example.

 

You can add actions or button presses by simply adding to perform:

...{action:"press",button:"1"},{action:"press",button:"enter"},{action:"press",button:"z"}...
or
...{action:"move",x:500,y:475}...

 

Ofc since I wrote that off the top of my head, the press is only single buttons. So saying, press:"12345", wouldn't work. Although, if you look at the sendinput line, I suppose you could technically do:

...{action:"press",button:"enter}hello world{!}{enter"},{action:"press",button:"backspace 5"}...

...But that's another story and thread all together.

09144a99bb.png

Link to comment
Share on other sites

^ It became a macro the second he made a hotkey react with an input - Doesn't make it illegal. Though, I'm sure (optimist here) that he's lifting the key each time. :P. But then again - put logs in your inventory, put logs on your actionbar and hold the key. One action, multiple reactions (drops the full inventory of logs in one press). As is, his script technically does one action per reaction.

 

Now, even though your script abides by the one action per reaction, it still runs risk of being falsely detected as a bot. Why? Because you're using precise move and click values.

 

I know it sounds bad to say make it undetectable, but running it for a few hours/days as is, you're being very risky, no matter how legal it is. Randomize your movements.

 

As Meredith pointed out, you can simplify your script by storing the data in an array. Though, I'd structure it differently:

action:=-1
perform:=[{action:"press",button:"rbutton"},{action:"move",x:425,y:475},{action:"press",button:"lbutton"},{action:"move",x:350,y:200}] ;~ Create an array of actions

esc::
action++
if(perform[mod(action,perform.maxindex())+1].action=="press")
sendinput,% "{" perform[mod(action,perform.maxindex())+1].button "}"
else if(perform[mod(action,perform.maxindex())+1].action=="move")
mousemove,% perform[mod(action,perform.maxindex())+1].x,% perform[mod(action,perform.maxindex())+1].y
return

The above script, according to RnuneScape's rules, is entirely legal. You'll notice that the above loops actions fine by using modulo - though in a different way then Meredith suggested. However, it also is not random, so use it only as an example.

 

You can add actions or button presses by simply adding to perform:

...{action:"press",button:"1"},{action:"press",button:"enter"},{action:"press",button:"z"}...
or
...{action:"move",x:500,y:475}...

 

Ofc since I wrote that off the top of my head, the press is only single buttons. So saying, press:"12345", wouldn't work. Although, if you look at the sendinput line, I suppose you could technically do:

...{action:"press",button:"enter}hello world{!}{enter"},{action:"press",button:"backspace 5"}...

...But that's another story and thread all together.

 

That first script you posted I can get to work for the first headdress but attempting to add any more to it results in an error.

 

I really don't understand much about AHK outside of the basic mousemoves and clicks.


witchynosaur.png

Armadyl Drops : 4 Hilts; 3 Chestplates; 2 Chainskirts; 1 Helmet; 1 Buckler; 2 Shard 1; 2 Shard 2; 1 Shard 3

Nex : 1 Zaryte Bow

Kalphite King : 1 Drygore Rapier ; 1 Drygore Longsword : 1 Drygore Offhand Rapier : 1 Drygore Offhand Longsword

Link to comment
Share on other sites

action:=-1
perform:=[{action:"sendinput",buttons:"{enter}hello world{!}{enter}"},{action:"mousemove",x:500,y:500,speed:10},{action:"sendinput",buttons:"{rbutton}"},{action:"mousemove",x:0,y:100,relative:true}]

esc::
   action++
   if(perform[mod(action,perform.maxindex())+1].action=="sendinput"&&perform[mod(action,perform.maxindex())+1].buttons!="")
       sendinput,% perform[mod(action,perform.maxindex())+1].buttons
   else if(perform[mod(action,perform.maxindex())+1].action=="mousemove"&&(perform[mod(action,perform.maxindex())+1].x/perform[mod(action,perform.maxindex())+1].x||perform[mod(action,perform.maxindex())+1].x==0)&&(perform[mod(action,perform.maxindex())+1].y/perform[mod(action,perform.maxindex())+1].y||perform[mod(action,perform.maxindex())+1].y==0))
       mousemove,% perform[mod(action,perform.maxindex())+1].x,% perform[mod(action,perform.maxindex())+1].y,% perform[mod(action,perform.maxindex())+1].speed,% perform[mod(action,perform.maxindex())+1].relative?"r":""
return

Don't worry about anything below the second line.

 

speed and relative in may be omitted, as you can see from the example above.

 

 

 

A quick explanation for those curious:

Since AHK has no isNaN() or typeof, and if var is number can not be used in/as expression, using the following is a make-shift way of telling if a variable is a number:

msgbox,% variable/variable||variable==0

You can see I used that to ensure the x and y massed to mousemove were numbers here:

perform[mod(action,perform.maxindex())+1].y/perform[mod(action,perform.maxindex())+1].y||perform[mod(action,perform.maxindex())+1].y==0

 

If perform.y is a string, then perform.y/perform.y will be null. If perform.y is 0, it'll still fail the perform.y/perform.y (0 is false), and therefore we have the perform.y==0.

09144a99bb.png

Link to comment
Share on other sites

action:=-1

perform:=[{action:"mousemove",x:615,y:525},{action:"press",button:"lbutton"},{action:"mousemove",x:615,y:562},{action:"press",button:"lbutton"},{action:"mousemove",x:615,y:525},{action:"press",button:"lbutton"},{action:"mousemove",x:615,y:599},{action:"press",button:"lbutton"},]

 

esc::

action++

if(perform[mod(action,perform.maxindex())+1].action=="sendinput"&&perform[mod(action,perform.maxindex())+1].buttons!="")

sendinput,% perform[mod(action,perform.maxindex())+1].buttons

else if(perform[mod(action,perform.maxindex())+1].action=="mousemove"&&(perform[mod(action,perform.maxindex())+1].x/perform[mod(action,perform.maxindex())+1].x||perform[mod(action,perform.maxindex())+1].x==0)&&(perform[mod(action,perform.maxindex())+1].y/perform[mod(action,perform.maxindex())+1].y||perform[mod(action,perform.maxindex())+1].y==0))

mousemove,% perform[mod(action,perform.maxindex())+1].x,% perform[mod(action,perform.maxindex())+1].y,% perform[mod(action,perform.maxindex())+1].speed,% perform[mod(action,perform.maxindex())+1].relative?"r":""

return


witchynosaur.png

Armadyl Drops : 4 Hilts; 3 Chestplates; 2 Chainskirts; 1 Helmet; 1 Buckler; 2 Shard 1; 2 Shard 2; 1 Shard 3

Nex : 1 Zaryte Bow

Kalphite King : 1 Drygore Rapier ; 1 Drygore Longsword : 1 Drygore Offhand Rapier : 1 Drygore Offhand Longsword

Link to comment
Share on other sites

What I posted before wasn't actually a script I made, rather someone else's. I just posted it as something of an idea if you knew much about AHK (sorry for not making that clearer). Stev is much more advanced in programming than me and I'm really nubish at creating working ahk scripts but nonetheless I this script shouldn't be too hard to for me to tinker with and find a decent solution.

Also, Yes, I realize I posted a 'macro' but as Stev pointed out its nothing really more than what has already been created by Jagex inside the game... Not much of an edge honestly... And in all honesty if you really wanted to do this as easily as possible you could just use the actionbar... set the feathers to one key, then the next has the coif. hit the key for the feather, then doubleclick (with the option checked to have all clicks default to the same thing) with your chat minimized and you could probably do it just as fast as any sort of script... :rolleyes:

Mlskid.png
Summoning help:
[hide=Wio, lol]logioh.png[/hide]

Link to comment
Share on other sites

What I posted before wasn't actually a script I made, rather someone else's. I just posted it as something of an idea if you knew much about AHK (sorry for not making that clearer). Stev is much more advanced in programming than me and I'm really nubish at creating working ahk scripts but nonetheless I this script shouldn't be too hard to for me to tinker with and find a decent solution.

Also, Yes, I realize I posted a 'macro' but as Stev pointed out its nothing really more than what has already been created by Jagex inside the game... Not much of an edge honestly... And in all honesty if you really wanted to do this as easily as possible you could just use the actionbar... set the feathers to one key, then the next has the coif. hit the key for the feather, then doubleclick (with the option checked to have all clicks default to the same thing) with your chat minimized and you could probably do it just as fast as any sort of script... :rolleyes:

 

Is there a way to set up the action bar so that it doesnt just drop the feathers and coifs that I'm unaware of?


witchynosaur.png

Armadyl Drops : 4 Hilts; 3 Chestplates; 2 Chainskirts; 1 Helmet; 1 Buckler; 2 Shard 1; 2 Shard 2; 1 Shard 3

Nex : 1 Zaryte Bow

Kalphite King : 1 Drygore Rapier ; 1 Drygore Longsword : 1 Drygore Offhand Rapier : 1 Drygore Offhand Longsword

Link to comment
Share on other sites

Do you just click use feathers on coif? Do you get a window that appears to ask Make X? Etc. Do you have to do them 1 by 1?

 

There is no make x option (yet) so it's as fast as you can click them 1 by 1. I've been working off of what you gave me and came up with this so far...

 

action:=-1

perform:=[{action:"mousemove",x:615,y:525},{action:"mousemove",x:615,y:562},{action:"mousemove",x:615,y:525},{action:"mousemove",x:615,y:599},{action:"mousemove",x:615,y:525},{action:"mousemove",x:615,y:636},{action:"mousemove",x:615,y:525},{action:"mousemove",x:615,y:673},{action:"mousemove",x:615,y:525},{action:"mousemove",x:615,y:710},{action:"mousemove",x:615,y:525},{action:"mousemove",x:615,y:747},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:525},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:562},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:599},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:636},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:673},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:710},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:747},{action:"mousemove",x:615,y:525},{action:"mousemove",x:705,y:525},{action:"mousemove",x:615,y:525},{action:"mousemove",x:705,y:562},{action:"mousemove",x:615,y:525},{action:"mousemove",x:705,y:599},{action:"mousemove",x:615,y:525},{action:"mousemove",x:705,y:636},{action:"mousemove",x:615,y:525},{action:"mousemove",x:705,y:673},{action:"mousemove",x:615,y:525},{action:"mousemove",x:705,y:710},{action:"mousemove",x:615,y:525},{action:"mousemove",x:705,y:747},{action:"mousemove",x:615,y:525},{action:"mousemove",x:745,y:525},{action:"mousemove",x:615,y:525},{action:"mousemove",x:745,y:562},{action:"mousemove",x:615,y:525},{action:"mousemove",x:745,y:599},{action:"mousemove",x:615,y:525},{action:"mousemove",x:745,y:636},{action:"mousemove",x:615,y:525},{action:"mousemove",x:745,y:673},{action:"mousemove",x:615,y:525},{action:"mousemove",x:745,y:710},{action:"mousemove",x:615,y:525},{action:"mousemove",x:745,y:747}]

 

]::

action++

if(perform[mod(action,perform.maxindex())+1].action=="sendinput"&&perform[mod(action,perform.maxindex())+1].buttons!="")

sendinput,% perform[mod(action,perform.maxindex())+1].buttons

else if(perform[mod(action,perform.maxindex())+1].action=="mousemove"&&(perform[mod(action,perform.maxindex())+1].x/perform[mod(action,perform.maxindex())+1].x||perform[mod(action,perform.maxindex())+1].x==0)&&(perform[mod(action,perform.maxindex())+1].y/perform[mod(action,perform.maxindex())+1].y||perform[mod(action,perform.maxindex())+1].y==0))

mousemove,% perform[mod(action,perform.maxindex())+1].x,% perform[mod(action,perform.maxindex())+1].y,% perform[mod(action,perform.maxindex())+1].speed,% perform[mod(action,perform.maxindex())+1].relative?"r":""

return

 

\::click

 

That's all the coordinates for the coifs alternating between them and the feathers. Problem is that I run into the "expression too long" error after doing more than 15 coordinates worth of lines. Is there a way to allow for larger expressions or can I just map the 2nd half of my inventories coordinates to a different key?


witchynosaur.png

Armadyl Drops : 4 Hilts; 3 Chestplates; 2 Chainskirts; 1 Helmet; 1 Buckler; 2 Shard 1; 2 Shard 2; 1 Shard 3

Nex : 1 Zaryte Bow

Kalphite King : 1 Drygore Rapier ; 1 Drygore Longsword : 1 Drygore Offhand Rapier : 1 Drygore Offhand Longsword

Link to comment
Share on other sites

Split it into 2 arrays

 

I'm assuming I would just need to do this?

 

action:=-2

perform:=[{all my coordinates}]

 

p::

action++

if(perform[mod(action,perform.maxindex())+1].action=="sendinput"&&perform[mod(action,perform.maxindex())+1].buttons!="")

sendinput,% perform[mod(action,perform.maxindex())+1].buttons

else if(perform[mod(action,perform.maxindex())+1].action=="mousemove"&&(perform[mod(action,perform.maxindex())+1].x/perform[mod(action,perform.maxindex())+1].x||perform[mod(action,perform.maxindex())+1].x==0)&&(perform[mod(action,perform.maxindex())+1].y/perform[mod(action,perform.maxindex())+1].y||perform[mod(action,perform.maxindex())+1].y==0))

mousemove,% perform[mod(action,perform.maxindex())+1].x,% perform[mod(action,perform.maxindex())+1].y,% perform[mod(action,perform.maxindex())+1].speed,% perform[mod(action,perform.maxindex())+1].relative?"r":""

return

 

 

 

EDIT

 

I'm not trying to be difficult, I just really don't understand this stuff very well.


witchynosaur.png

Armadyl Drops : 4 Hilts; 3 Chestplates; 2 Chainskirts; 1 Helmet; 1 Buckler; 2 Shard 1; 2 Shard 2; 1 Shard 3

Nex : 1 Zaryte Bow

Kalphite King : 1 Drygore Rapier ; 1 Drygore Longsword : 1 Drygore Offhand Rapier : 1 Drygore Offhand Longsword

Link to comment
Share on other sites

[hide]

action:=-1

perform:=[{action:"mousemove",x:615,y:525},{action:"mousemove",x:615,y:562},{action:"mousemove",x:615,y:525},{action:"mousemove",x:615,y:599},{action:"mousemove",x:615,y:525},{action:"mousemove",x:615,y:636},{action:"mousemove",x:615,y:525},{action:"mousemove",x:615,y:673},{action:"mousemove",x:615,y:525},{action:"mousemove",x:615,y:710},{action:"mousemove",x:615,y:525},{action:"mousemove",x:615,y:747},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:525},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:562},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:599},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:636},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:673},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:710},{action:"mousemove",x:615,y:525},{action:"mousemove",x:660,y:747},{action:"mousemove",x:615,y:525},{action:"mousemove",x:705,y:525},{action:"mousemove",x:615,y:525},{action:"mousemove",x:705,y:562},{action:"mousemove",x:615,y:525},{action:"mousemove",x:705,y:599},{action:"mousemove",x:615,y:525},{action:"mousemove",x:705,y:636},{action:"mousemove",x:615,y:525},{action:"mousemove",x:705,y:673}]

 

]::

action++

if(perform[mod(action,perform.maxindex())+1].action=="sendinput"&&perform[mod(action,perform.maxindex())+1].buttons!="")

sendinput,% perform[mod(action,perform.maxindex())+1].buttons

else if(perform[mod(action,perform.maxindex())+1].action=="mousemove"&&(perform[mod(action,perform.maxindex())+1].x/perform[mod(action,perform.maxindex())+1].x||perform[mod(action,perform.maxindex())+1].x==0)&&(perform[mod(action,perform.maxindex())+1].y/perform[mod(action,perform.maxindex())+1].y||perform[mod(action,perform.maxindex())+1].y==0))

mousemove,% perform[mod(action,perform.maxindex())+1].x,% perform[mod(action,perform.maxindex())+1].y,% perform[mod(action,perform.maxindex())+1].speed,% perform[mod(action,perform.maxindex())+1].relative?"r":""

return

 

\::click

 

 

 

^q::mousemove 450,400,0

^w::click

^1::mousemove 616,563,0

^2::rbutton

^3::mousemove 0,74,0,r

^4::click

^5::mousemove 502,466,0

^6::rbutton

^7::mousemove 0,74,0,r

^8::click

^9::mousemove 540,70,0

^0::click

^-::mousemove 615,525,0

=::reload[/hide]

 

This is what I'm currently using. Banking is near instant so it's pretty much constant headdress making anyways. I'd still appreciate any help/feedback/improvements that you guys could make but I'll be content with what I've got for now.


witchynosaur.png

Armadyl Drops : 4 Hilts; 3 Chestplates; 2 Chainskirts; 1 Helmet; 1 Buckler; 2 Shard 1; 2 Shard 2; 1 Shard 3

Nex : 1 Zaryte Bow

Kalphite King : 1 Drygore Rapier ; 1 Drygore Longsword : 1 Drygore Offhand Rapier : 1 Drygore Offhand Longsword

Link to comment
Share on other sites

I love it when people take a script with absolute coordinates and comment on it as 'legal'.

 

You are basically implying that a human can disregard the starting mouse position and move it to any point of the screen in the same amount of time and using the same amount of effort.

 

P.S. I am aware that in the end it translates to relative movements and in essence is just enhanced mousekeys (since they have a really crappy/counterintuitive configuration). And yes, I know that MKs are legal.

savormix.gif
R.I.P. oO000oO0oO00, RS2 range pure transformed to a maxed PvM char in EoC, ten years of time completely wasted.
Good to be gone :)

Link to comment
Share on other sites

http://pastebin.com/embed_iframe.php?i=551iBXP0

 

Only works in resizable because I CBA to make it work in fixed. Functions included are edited from my RS_Functions.ahk library: _rs_get_inventory(), _rs_mouse_click(), _rs_mouse_move_inventory(), _rs_find_applet(), _rs_nrand(), _rs_rand().

 

This will handle everything except banking, is 1:1, and is random. Feathers should be in your first inventory space. The rest of your inventory filled with cowls. Script will automatically find your inventory and items 1-28.

 

If you mess up, Ctrl-ESC will reset action to the beginning.

 

Edit: Apparently Ctrl-ESC can not be set in AHK (on Windows 7 anyways). So you might want to change that hotkey to something else.

09144a99bb.png

Link to comment
Share on other sites

[hide=useless stuff]

What I posted before wasn't actually a script I made, rather someone else's. I just posted it as something of an idea if you knew much about AHK (sorry for not making that clearer). Stev is much more advanced in programming than me and I'm really nubish at creating working ahk scripts but nonetheless I this script shouldn't be too hard to for me to tinker with and find a decent solution.

Also, Yes, I realize I posted a 'macro' but as Stev pointed out its nothing really more than what has already been created by Jagex inside the game... Not much of an edge honestly... And in all honesty if you really wanted to do this as easily as possible you could just use the actionbar... set the feathers to one key, then the next has the coif. hit the key for the feather, then doubleclick (with the option checked to have all clicks default to the same thing) with your chat minimized and you could probably do it just as fast as any sort of script... :rolleyes:

[/hide]

Is there a way to set up the action bar so that it doesnt just drop the feathers and coifs that I'm unaware of?

Ah, wasn't actually on and testing it out. Nevermind then on that idea. I'll try to make a script sometime this upcoming week that tells a little more in detail what I know about how to script and randomizing coordinates. Hopefully it's not too awful and bulky. I'll try to make it as readable for non-programmers like me as possible, but yet give some pointers about how to make really simple scripts that are very effective.

 

@Stev, why did you just use the ctrlEsc to reset the variable? Why not use reload so that the script is brand new again? Does it really make a difference? I'm just curious because I like writing scripts but I'm not the best at it.

Mlskid.png
Summoning help:
[hide=Wio, lol]logioh.png[/hide]

Link to comment
Share on other sites

http://pastebin.com/....php?i=551iBXP0

 

Only works in resizable because I CBA to make it work in fixed. Functions included are edited from my RS_Functions.ahk library: _rs_get_inventory(), _rs_mouse_click(), _rs_mouse_move_inventory(), _rs_find_applet(), _rs_nrand(), _rs_rand().

 

This will handle everything except banking, is 1:1, and is random. Feathers should be in your first inventory space. The rest of your inventory filled with cowls. Script will automatically find your inventory and items 1-28.

 

If you mess up, Ctrl-ESC will reset action to the beginning.

 

Edit: Apparently Ctrl-ESC can not be set in AHK (on Windows 7 anyways). So you might want to change that hotkey to something else.

 

Thank you so so so much. You've literally just given me hours of my life back. Also ctrl-esc is working for me but my banking script has a reload in it anyway so it's all good. You can have all my internets for the forseeable future.

  • Like 2


witchynosaur.png

Armadyl Drops : 4 Hilts; 3 Chestplates; 2 Chainskirts; 1 Helmet; 1 Buckler; 2 Shard 1; 2 Shard 2; 1 Shard 3

Nex : 1 Zaryte Bow

Kalphite King : 1 Drygore Rapier ; 1 Drygore Longsword : 1 Drygore Offhand Rapier : 1 Drygore Offhand Longsword

Link to comment
Share on other sites

Well it is legal, so yeah. Could it be mistaken by botwatch? Sure. Is it against the spirit of the game? Sure. Is it legal? 100%

 

As a matter of fact, the need for such scripts (and lol @ incorporating rng) shows just how terrible RS UI design is. They could have done the action bar right, so that you could select which of many options you want to use in an action bar slot. They could have done that you are able to bank the inventory and repeat last withdraw (closing bank UI automatically) via one click (even if you would need to open the bank interface to use that button).

 

But no. And now we have scripts to compensate for all of this. And when scripts become legal, people start pushing the boundaries. That's just the way it is. It is natural.

 

P.S. I am aware that this post is not *directly* related to the topic, but it fits the general theme.

savormix.gif
R.I.P. oO000oO0oO00, RS2 range pure transformed to a maxed PvM char in EoC, ten years of time completely wasted.
Good to be gone :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.