$distance(y,x) and /face y x
So your macro runs you in circles. I added a max dist from point check, and fixed that problem and it's much better now:
Code: Select all
Sub main
/declare Xloc local
/declare Yloc local
/varset Yloc @Param0
/varset Xloc @Param1
/declare MaxDistFromLoc global
/varset MaxDistFromLoc 150
/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 @Yloc, @Xloc
/if "@yloc"=="u" /Press u
/call AutoRun 1
/varset distance1 $distance(@Yloc,@Xloc)
/delay 1s
/varset distance2 $distance(@Yloc,@Xloc)
/varset distanceSum $calc(@distance1-@distance2)
/delay 1s
/varset distance1 $distance(@Yloc,@Xloc)
/delay 1s
/varset distance2 $distance(@Yloc,@Xloc)
/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(@Yloc,@Xloc)>@MaxDistFromLoc /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


