/macro makeini words 5
You will then go arounmd the bazaar and start purchasing all the words you can find for under 5pp and then sell them back to a merchant to find out how much you can make on that particular item. You will need to edit the location of the ini you would like to make in the /varset line in the beggining of the script. Please let me know what you all think.
P.S. This also requires my path.ini file for movement. You can get that here
http://www.wsu.edu/~ellyson/path.ini
Code: Select all
|Driftinsupra second usefull macro makeinir.mac
|Makes ini files for use in bazaar.mac
#include routines2.mac
#turbo
sub main
/declare file global
/declare isle global
/declare counter local
/declare l1 local
/declare traderid local
/declare price local
/declare curmoney local
/declare newmoney local
/declare profit local
/declare item local
/declare theitem global
/declare Token global
/declare check local
/declare donecheck local
/varset file C:\macroquest2\release\macros\newini.ini
/varset counter 1
/varset check 0
/varset donecheck 0
:mainloop
/echo searching for @Param0
/bzsrch race any class any price 0 @Param1 "@Param0"
| is request done?
:loop
/delay 1
/if "$bazaar()"=="FALSE" /goto :loop
/if n $bazaar(count)==0 {
/echo @Param0 not found, exiting
/return
}
} else {
/echo found $bazaar(count) items
}
/varset theitem "$bazaar(0,name)"
/varset Token $instr("(","@theitem")
/varset item "$left(@Token,"@theitem")"
/echo "$bazaar(0,name)"
:checkloop
/if "@item"=="$ini(@file,names,val@counter)" /varset donecheck 1
/varadd counter 1
/echo @donecheck
/varset counter $int(@counter)
/echo "$ini(@file,names,val@counter)"
/if "$ini(@file,names,val@counter)"!="NOTFOUND" /goto :checkloop
/if n @donecheck==1 {
/varset donecheck 0
/varadd check 1
/varset counter 1
/varset check $int(@check)
/varset theitem "$bazaar(@check,name)"
/if "$left(6,"@item")=="$bazaar /endmacro
/varset Token $instr("(","@theitem")
/varset item "$left(@Token,"@theitem")"
/goto :checkloop
}
/varset price $bazaar(@check,price)
/varset traderid $bazaar(@check,trader)
/echo @theitem
/varset Token $instr("(","@theitem")
/varset item "$left(@Token,"@theitem")"
/echo is @item
/echo targeting @traderid
/target id @traderid
/face
/call traderisle $target(x) $target(y)
/call movetoisle @isle
/face
/call movetotarg 10
/click right target
/delay 20
/call buyitem "@item"
/call moveback @isle
/call walkpath merch 10
/varset curmoney $char(cash)
/target "Merchant Tekram"
/face
/click right target
/delay 20
/selectitem "@item" self
/sendkey down shift
/click left merchant sell
/sendkey up shift
/delay 20
/click left merchant done
/varset newmoney $char(cash)
/call walkpath merchb 10
/varsub newmoney @curmoney
/ini "@file" "names" "val$int(@counter)" "@item"
/ini "@file" "prices" "val$int(@counter)" "$int(@newmoney)"
/varset counter 0
/varset check 0
/varset donecheck 0
/goto :mainloop
/return
Sub movetoisle(isle)
/if n @isle==61 /call walkpath 61 10
/if n @isle==62 /call walkpath 62 10
/if n @isle==81 /call walkpath 81 10
/if n @isle==82 /call walkpath 82 10
/if n @isle==91 /call walkpath 82 10
/if n @isle==92 /call walkpath 92 10
/if n @isle==51 /call walkpath 51 10
/if n @isle==52 /call walkpath 52 10
/if n @isle==21 /call walkpath 21 10
/if n @isle==22 /call walkpath 22 10
/if n @isle==31 /call walkpath 31 10
/if n @isle==32 /call walkpath 32 10
/return
Sub traderisle(xloc,yloc)
/if n @xloc>95 /if n @xloc<129 /if n @yloc>-770 /if n @yloc<-589 /varset isle 61
/if n @xloc<95 /if n @xloc>62 /if n @yloc>-770 /if n @yloc<-589 /varset isle 62
/if n @xloc>-104 /if n @xloc<-72 /if n @yloc>-772 /if n @yloc<-590 /varset isle 81
/if n @xloc<-104 /if n @xloc>-145 /if n @yloc>-772 /if n @yloc<-590 /varset isle 82
/if n @xloc>-203 /if n @xloc<-171 /if n @yloc>-713 /if n @yloc<-527 /varset isle 91
/if n @xloc<-203 /if n @xloc>-250 /if n @yloc>-713 /if n @yloc<-527 /varset isle 92
/if n @xloc>-118 /if n @xloc<107 /if n @yloc<-541 /if n @yloc>-571 /varset isle 51
/if n @xloc>-118 /if n @xloc<107 /if n @yloc>-541 /if n @yloc<-514 /varset isle 52
/if n @xloc>95 /if n @xloc<129 /if n @yloc>-495 /if n @yloc<-296 /varset isle 21
/if n @xloc<95 /if n @xloc>62 /if n @yloc>-495 /if n @yloc<-296 /varset isle 22
/if n @xloc>-104 /if n @xloc<-72 /if n @yloc>-495 /if n @yloc<-296 /varset isle 31
/if n @xloc<-104 /if n @xloc>-145 /if n @yloc>-495 /if n @yloc<-296 /varset isle 32
/return
Sub moveback(isle)
/if n @isle==61 /call walkpath 61b 10
/if n @isle==62 /call walkpath 62b 10
/if n @isle==81 /call walkpath 81b 10
/if n @isle==82 /call walkpath 82b 10
/if n @isle==91 /call walkpath 82b 10
/if n @isle==92 /call walkpath 92b 10
/if n @isle==51 /call walkpath 51b 10
/if n @isle==52 /call walkpath 52b 10
/if n @isle==21 /call walkpath 21b 10
/if n @isle==22 /call walkpath 22b 10
/if n @isle==31 /call walkpath 31b 10
/if n @isle==32 /call walkpath 32b 10
/return
sub buyitem(item)
/sendkey down Ctrl
/selectitem "@item" merchant
/click left merchant buy
/delay 20
/sendkey up Ctrl
/click left merchant done
/return
Sub walkpath
|Initialization
|Note -- Edit the following line to represent the full path where you want your
Paths.ini file
| to be stored. Like: "c:\macroquest\macros\data\Paths.ini"
/declare gINIFile local
/declare gPathNumber local
/declare gStartPoint local
/declare gEndPoint local
/declare gStep local
/declare gThreshold local
/declare tEchoTimer timer
/declare l0 local
/declare l1 local
/declare l2 local
/declare l3 local
/declare pointface local
/declare MyXLOC local
/declare MyYLOC local
/declare ObstCount local
/varset gINIFile "C:\macroquest2\release\macros\path.ini"
/varset gPathNumber @Param0
/varset gThreshold @Param1
/varset gStartPoint @Param2
/varset gEndPoint @Param3
/varset pointface 0
/if @gThreshold=="" {
/echo No Threshold specified -- using 3.
/varset gThreshold 2
}
/if n @gStartPoint==0 {
/varset gStartPoint 1
/varset gEndPoint $int($ini("@gINIFile","@gPathNumber","numpoints"))
}
/if n @gStartPoint==-1 {
/varset gEndPoint 1
/varset gStartPoint $int($ini("@gINIFile","@gPathNumber","numpoints"))
}
/varset l0 @gStartPoint
/if @gStartPoint<@gEndPoint {
/varset gStep 1
} else /if @gStartPoint>@gEndPoint {
/varset gStep -1
}
/varset l1 $int($ini("@gINIFile","@gPathNumber","$int(@l0) Y"))
/varset l2 $int($ini("@gINIFile","@gPathNumber","$int(@l0) X"))
/face loc @l1, @l2
/call AutoRun 1
:MainLoop
/varset l1 $int($ini("@gINIFile","@gPathNumber","$int(@l0) Y"))
/varset l2 $int($ini("@gINIFile","@gPathNumber","$int(@l0) X"))
/varset tEchoTimer 5
/if @l0==@gStartPoint /echo $distance(@l1,@l2)
/varset MyXLOC $char(x)
/varset MyYLOC $char(y)
/varset ObstCount 0
:MainLoop2
/doevents
/if @tEchoTimer==0 {
/varset tEchoTimer 1s
/echo $distance(@l1,@l2)
}
|The 'fast' paramater of the /face function prevents the command
|from smoothing out the turn, and instead immediately turns your
|character to face the specified direction. It is commented out here
|in favor of the smoothed /face, because it looks more natural and
|realistic. However, you will see problems with high-resolution paths
|(ie, paths in which the distances in between snapshots is very low) where
|your character will run in circles around points. There are two things
|you can do about this. The first is to increase the DistanceThreshold
|number that you pass when you start the script. The second is to uncomment
|the "/face fast nopredict" line, and comment the "/face nopredict" line.
|This will look a little less natural, but if you're using a high-
|resolution path in the first place, it really shouldn't matter.
|Another time where you might want to use /face fast is in dungeons or
|other tight areas where precision is important.
/face fast nopredict loc @l1, @l2
|/if n pointface<=1 /face loc @l1, @l2
/varadd pointface 1
/varadd ObstCount 1
/if n @ObstCount>=10 {
/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
}
/face loc @l1, @l2
/call autorun 1
/sendkey up Right
/sendkey up Left
}
/varset MyXLOC $char(x)
/varset MyYLOC $char(y)
/varset ObstCount 0
}
/if n $distance(@l1,@l2)>@gThreshold /goto :MainLoop2
/echo Point @l0 Reached.
/varset pointface 0
/varset l0 $int($calc(@l0+@gStep))
/if @l3==1 /goto :MainLoopExit
/if @l0==@gEndPoint /varset l3 1
/goto :MainLoop
:MainLoopExit
/call AutoRun 0
/echo Destination reached. Exiting.
/return
Sub AutoRun
/if @Param0==1 /sendkey down up
/if @Param0==0 /sendkey up up
/return


