movetotarg and movetoloc - 2 Uselful Macros for Movement

A forum for you to dump all the macros you create, allowing users to use, modify, and comment on your work.

Moderator: MacroQuest Developers

User avatar
driftinsupra
Official loudmouth
Official loudmouth
Posts: 212
Joined: Tue Jan 28, 2003 9:25 pm

movetotarg and movetoloc - 2 Uselful Macros for Movement

Post by driftinsupra » Sun Nov 09, 2003 8:09 pm

I basically used some of hunter.mac in these and some basic knowledge. I use the macros all the time and they are pretty much my favorites. I dont know if anything like this has been posted before but I would recommend using these for any movement as you wont get stuck ever.

Code: Select all

Sub movetotarg(distance)
  /declare MyXLOC local 
  /declare MyYLOC local 
  /declare ObstCount local
 
  /varset MyXLOC $char(x) 
  /varset MyYLOC $char(y) 
  /varset ObstCount 0
  /face 
  :mobloop
  /if n $target(distance)>=@distance {
    /call autorun 1
    /face 
    /varadd ObstCount 1 
    /if n @ObstCount>=3 { 
      /if n @MyXLOC==$char(x) /if n @MyYLOC==$char(y) {
          /sendkey up up 
          /sendkey down down 
          /if n $rand(99)>50 { 
            /delay 1s 
            /sendkey up down 
            /sendkey down Right 
            /delay 5 
            /sendkey up Right 
            /sendkey down up 
            /delay 1s 
            /sendkey up up 
          } else { 
            /delay 1s 
            /sendkey up down 
            /sendkey down left 
            /delay 5 
            /sendkey up left 
            /sendkey down up 
            /delay 1s 
            /sendkey up up        
         } 
       
         /sendkey up down 
         /sendkey up Right 
         /sendkey up Left          
     }
     /varset MyXLOC $char(x) 
     /varset MyYLOC $char(y) 
     /varset ObstCount 0 
    }  
    
  /goto :mobloop
  }
  /call autorun 0
  /return 

Sub movetoloc(xloc,yloc)
  /declare MyXLOC local 
  /declare MyYLOC local 
  /declare ObstCount local

  /varset MyXLOC $char(x) 
  /varset MyYLOC $char(y) 
  /varset ObstCount 0
  :locloop
  /face loc @xloc
  /if "@yloc"=="u" /Press u 
  /call AutoRun 1
  /varadd ObstCount 1 
  /if n @ObstCount>=3 { 
    /if n @MyXLOC==$char(x) /if n @MyYLOC==$char(y) {
        /sendkey up up 
        /sendkey down down 
        /if n $rand(99)>50 { 
          /delay 1s 
          /sendkey up down 
          /sendkey down Right 
          /delay 5
          /sendkey up Right 
          /sendkey down up 
          /delay 1s 
          /sendkey up up 
        } else { 
          /delay 1s 
          /sendkey up down 
          /sendkey down left 
          /delay 5 
          /sendkey up left 
          /sendkey down up 
          /delay 1s 
          /sendkey up up        
        } 
       
       /sendkey up down 
       /sendkey up Right 
       /sendkey up Left          
     }
     /varset MyXLOC $char(x) 
     /varset MyYLOC $char(y) 
     /varset ObstCount 0 
    } 
   
  /if n $distance(@xloc)>10 /goto :locloop   
  
  }
  /call autorun 0 
  /return

Zerix
flagrant idiot
Posts: 18
Joined: Sun Nov 09, 2003 3:26 am
Location: Denver, CO
Contact:

Post by Zerix » Mon Nov 10, 2003 1:19 am

check out the FH forms, theres a stickly link there that has this exact same macro in it, cept it uses warp.

Lets you get a targets XYZ, and then lets you warp to it.

Also lets you speed hack with warp
What exists, exists; what is, is, and that from this irreducible, bedrock principle, all knowledge is built.

We are free to evade the effort of thinking - to reject reason - but we are not free to avoid the penalty of the abyss we refuse to see.

User avatar
driftinsupra
Official loudmouth
Official loudmouth
Posts: 212
Joined: Tue Jan 28, 2003 9:25 pm

Post by driftinsupra » Mon Nov 10, 2003 2:26 pm

What does that have to do with this? MQ users dont use warp. This is a safe way of moving to a mob and moving to a loc without running into stuff.

Scythen60

Post by Scythen60 » Mon Nov 10, 2003 5:31 pm

Zerix: most people don't want to be THAT noticeable that they are using MQ, clearly if you started warping to forges from merchants you'll get banned way faster than walking to it. You should also leave FH stuff at the FH boards because if the MQ dev's wanted you to have warps and similar functions then they would add it for you...Similar to the binary that you are releasing...if the MQ dev's wanted to release binary then they would...so IMO you should stop doing it for them.
(i'm not trying to flame, just stating what i've been hearing in IRC)

User avatar
auth
a ghoul
a ghoul
Posts: 84
Joined: Sun Apr 13, 2003 12:47 am

Post by auth » Mon Nov 10, 2003 6:30 pm

oops not trying to hide behind guest, was my post... didn't realize i wasn't logged in... mods can delete the previous guest post..

We have to remember that zerix has lost 2 accounts in the past year folks - besides, FH info shouldn't be posted here so openly, a lot of the MQ users don't want to be 'that' outgoing in cheating. good routines, sire. zerix, go back to fh now plz, obviously you're not very welcome here.
Auth - "If it isn't broke, let VI patch it"

Guest

Post by Guest » Thu Nov 13, 2003 9:40 pm

Who are these FH people? That has to be one of the most reckless uses of Everquest 'enhancement' that I've ever heard of.

User avatar
Rage
orc pawn
orc pawn
Posts: 17
Joined: Sat Oct 19, 2002 2:15 am
Location: San Diego, CA USA

Post by Rage » Fri Nov 14, 2003 5:02 am

forever-hacking.net

Kale Whiteblade
decaying skeleton
decaying skeleton
Posts: 8
Joined: Sun Nov 23, 2003 4:09 am

Post by Kale Whiteblade » Sun Nov 23, 2003 6:00 pm

is there pieces missing from this? or is this just a chunk to slap in other programs. I added in a main, and a sub autorun

sub autorun
/press j
/return


still get stuck though running into walls though.. am i doing this wrong? Sorry, still very noob to MQ.

Kale Whiteblade
decaying skeleton
decaying skeleton
Posts: 8
Joined: Sun Nov 23, 2003 4:09 am

Post by Kale Whiteblade » Sun Nov 23, 2003 6:09 pm

Second question, is there a command to make your player run to a loc? ie for the hunter script, after so many kills or whatever, can you tell him to run to loc XX YY?



Sorry for so many questions, trying to learn :)

User avatar
Kint
a hill giant
a hill giant
Posts: 208
Joined: Thu Mar 13, 2003 3:36 am

Post by Kint » Thu Nov 27, 2003 11:35 pm

here the code you gave me, reworked

Code: Select all

Sub main
/declare Xloc local
/declare Yloc local
/varset Xloc @Param0
/varset Yloc @Param1

/declare ObstCount local
/varset ObstCount 0
/declare distance1 local
/declare distance2 local
/declare distanceSum local
/varset distanceSum 0
/declare distanceSum1 local
/varset distanceSum1 0
/declare distanceAverage local

:locloop 
/face loc @Xloc, @Yloc
/if "@yloc"=="u" /Press u 
/call AutoRun 1 

/varset distance1 $distance(@Xloc,@Yloc)
/delay 1s
/varset distance2 $distance(@Xloc,@Yloc)
/varset distanceSum $calc(@distance1-@distance2)
/delay 1s

/varset distance1 $distance(@Xloc,@Yloc)
/delay 1s
/varset distance2 $distance(@Xloc,@Yloc)
/varset distanceSum1 $calc(@distance1-@distance2)


/if n $calc(@distanceSum-3)>@distanceSum1 {
 /if n $calc(@distanceSum+3)<@distanceSum1 {
       /varadd ObstCount 1
} 
} 

/if n @distanceSum==0 /if n @distanceSum1==0 /varadd ObstCount 1
/if n @ObstCount>=3 {
	/call Collision
	/varset ObstCount 0
}

/if n $distance(@Xloc,@Yloc)>10 /goto :locloop 

/call autorun 0 
/return 

Sub Collision
	/if n $rand(99)>50 { 
	/delay 1s 
	/sendkey up down 
	/sendkey down Right 
	/delay 5 
	/sendkey up Right 
	/sendkey down up 
	/delay 1s 
	/sendkey up up 
	} else { 
	/delay 1s 
	/sendkey up down 
	/sendkey down left 
	/delay 5 
	/sendkey up left 
	/sendkey down up 
	/delay 1s 
	/sendkey up up 
	}
/return

Sub AutoRun 
   /if @Param0==1 /sendkey down up 
   /if @Param0==0 /sendkey up up 
/return 
works by /macro gotoloc <Xloc> <Yloc>

User avatar
driftinsupra
Official loudmouth
Official loudmouth
Posts: 212
Joined: Tue Jan 28, 2003 9:25 pm

Post by driftinsupra » Fri Nov 28, 2003 12:29 pm

I also had the same problem running into walls....its pretty much only good if you know whats in front of you and arent just trying to get from one location in a zone to another blindly. I use when hunting in the karanas or commonlands when I dont want to get stuck on a tress. I always hated it when I had lich on my necro and I would get stuck on a tree....my script pretty much pauses and then lich kills me.

User avatar
driftinsupra
Official loudmouth
Official loudmouth
Posts: 212
Joined: Tue Jan 28, 2003 9:25 pm

Post by driftinsupra » Fri Nov 28, 2003 12:38 pm

Also this would be used as a sub routine. I use it in my programs much like this:

Code: Select all

Sub main
/call movetotarg(50)
/call movetoloc(10,10)
other main crap here

Sub movetotarg(distance)
move to targ crap here

Sub movetoloc(xloc,yloc)
move to loc crap here


If that doesnt clarify things then PM me and I can try to help you ut some more. Basically movetotarg will move you within the distance you specify in the brackets. movetoloc will move you the loc you specify in the brackets. movetoloc is much like the gotoloc that is in the routines file but it will just make it so if you get stuck on anything such as trees, smallbuilding,rocks or gravestones in my case you will back up turn either to the the left or right move a little then reface your target or loc and move that way.

Also I should give credit where credit is due. Much of these routines were snippets of already existing ones from the routine file and from hunter.mac. Off the head hunter.mac was from GrimJack right? Well if I was right then thanks GrimJack and if not then thanks whomever made hunter.mac. I worked on making these myself but well I am not that smart and when it come donw to it.....there is no point in reinventing the wheel.

IceMan

Post by IceMan » Sat Nov 29, 2003 9:29 am

all i do to move to a person is /target him, then type /macro follow. it will run right to him

IceMan

Post by IceMan » Sat Nov 29, 2003 9:29 am

all i do to move to a person is /target him, then type /macro follow. it will run right to him

LamahHerder
a hill giant
a hill giant
Posts: 299
Joined: Sat Jun 29, 2002 2:37 am

Post by LamahHerder » Wed Dec 24, 2003 11:13 pm

Had some problems with that gotoloc code,

This works better for me...
/call gotoloc xxx yyy

Code: Select all

Sub GoToLoc(xloc,yloc)
	:declare
	/declare CloseNuff local
	/declare CharX local
	/declare CharY local
	
	:set
	/varset CloseNuff 1
	
	:startGoToLoc
	/if n $distance(@xloc,@yloc)<=$calc(@CloseNuff+1) /goto :endGoToLoc
	/if $char(state)!=STAND /stand
	/if n $distance(@xloc,@yloc)>=@CloseNuff /sendkey down up
	/face loc @xloc,@yloc
	
	:moveGoToLoc
		/delay 0
		/if n $distance(@xloc,@yloc)<=@CloseNuff /goto :endGoToLoc
		/face fast loc @xloc,@yloc
		/if n "@CharX"=="$char(x)" /if n "@CharY"=="$char(y)" /goto :stuckGoToLoc
		/varset CharX "$char(x)"
		/varset CharY "$char(y)"
		/if n $distance(@xloc,@yloc)<=@CloseNuff /goto :endGoToLoc
		/if n $distance(@xloc,@yloc)>=@CloseNuff /goto :moveGoToLoc
	
	:stuckGoToLoc
   		/if n $rand(99)>50 /goto :stuckGoLeft
	
	:stuckGoRight
		/echo Goin Right
		/sendkey up up
		/if n $distance(@xloc,@yloc)>=@CloseNuff /sendkey down up
		/face heading $calc($char(heading)-120)
		/if $char(state)!=STAND /stand
		/delay 5
		/face loc @xloc,@yloc
		/goto :moveGoToLoc
	
	:stuckGoLeft
		/echo Goin Left
		/sendkey up up
		/if n $distance(@xloc,@yloc)>=@CloseNuff /sendkey down up
		/face heading $calc($char(heading)+120)
		/delay 5
		/face loc @xloc,@yloc
		/if $char(state)!=STAND /stand
		/goto :moveGoToLoc
	
	:endGoToLoc
		/sendkey up up
		/echo $distance(@xloc,@yloc) from @xloc @yloc
/return