AH bot for a specific item
I am buying up moat carp for my second lu rod, and if I could camp the AH overnight that'd be swell... is there a way to do this? Just have the bot select AH counter, go to moat carp... bid 10,000g until it says you can't do it anymore, and then start over?
you could script this for your setup using autoit without much trouble usning the mousemove and send comands with info from the wininfo tool. would be much more effort to do one for multi resolutions etc including how each person had last sorted the AH listings.
I've read forums on buying things from NPCs (namely the Guild NPCs) and the problem with this is the bots simply arent fast enough. If you've ever tried to camp a guild when it opens, but moving as fast as i possibly can i almost always get beat. Most of these bots wont move as fast as i can, so if i cant beat those really fast campers, a bot wont be able to either.
If you are only looking to do specific items from a npc or AH then it is easy to do individually with autoit but would be a royal pain for general bot from what I know of it. Problem is your resolution changes where things are on the screen and the way you sort them changes where they are in AH menu and new items(never before sold) also changes the position in AH. That being said the menu's always pop up in the same spot on your individual screen.
So basically what you need to do after DLing the autoit stuff is enter the game using a windower. Goto the NPC and find a spot where the /targetnpc command targets them first. Use this spot when running the bot. Then click on the npc to open the buy/sell menu. Notice whether it starts out pointing at buy or sell. once you select buy then look to see if the item you want is listed on the visible page or not. If it is then use the autoit wininfo tool to get the pixel position of the mouse when the mouse is over the item you want to buy. If the item is not visible you will have to count how many spots down the list it is, get the info for the first item in the list, then use down arrow commands in order to move to the item you want to buy. After that it is just a few more automated key strokes to get it to buy a stack of the item. Dpepending on how many of the item are sold each game day will tell you how many stacks to attempt. To get this to work you would need to check how many miliseconds there are between the same time each game day - the time it takes for the bot to buy the items or do pixel search's to "read" the ffxi time and have it start the buying string when the time hits the open hour(+1 second to be safe in my exp). you could use the timerinit and timerdif fnct's to get the number of miliseconds your buying string ran before finishing making it easier to just subtract that from the total miliseconds in a game day. Once you have that time figured out you would just use a sleep command with that number of miliseconds in the field and the bot would buy at the same time each game day. All you would have to do is position your charcter and wait for the shop to open and then start the macro. This same basic approach would work for AH as well but for AH you would need to enter an ammount to pay and you would not need to worry about the timer so much, just make sure it is longer then it takes the AH to process a bid so that the macro doesn't get lost in the menus and burn all your gil.
Something of the rough form (with alt1 macro of /targetnpc )
AutoItSetOption("SendKeyDelay", 200)
AutoItSetOption("SendKeyDownDelay", 200)
while 1
send("!1")
send("{ENTER}")
send("{ENTER}")
mousemove( x, y, 0)
send("{ENTER}")
send("{LEFT}")
send("{ENTER}")
send("{UP"})
send("{ENTER}")
send("{ESC}")
send("{ESC}")
send("{ESC}")
sleep(however many miliseconds you need)
wend
lines 1-2 initialize key timins
line 3 starts loop
line 4 targets the npc udsing the alt1 macro
line 5 -6 clicks on the npc and clicks buy(assuming buy is where the pointer starts)
line 7 moves the mouse to the x,y pixel position of the item to buy
lines 8-12 buy up to one stack of the item(repeat these if the merchant sells more then 12 per day)
lines 13-15 exit out of the npc's store windows
line 16 waits till the store opens the next day
line 17 ends the loop(as is it will continue looping indefinitely
one thing to test is when the shop is out of the item before you finish buying do the arrow commands I included cause you to buy other items? If so than you would need to account for that in the code. I suspect at least some of the items you want to npc camp would be competition ones so you are likely to only get some of their goods.
Lastly I make no garuntees or support for this as it was merely a example of the top of my head and I may have misremembered some of the default positions of pointers and such, this is not meant to be a working script but as an example of roughly how you could do one to buy out a npc. Thuroughly test any script you make, especially purchase ones, so you do not burn gill or drop items. Hope it helps you all.
So basically what you need to do after DLing the autoit stuff is enter the game using a windower. Goto the NPC and find a spot where the /targetnpc command targets them first. Use this spot when running the bot. Then click on the npc to open the buy/sell menu. Notice whether it starts out pointing at buy or sell. once you select buy then look to see if the item you want is listed on the visible page or not. If it is then use the autoit wininfo tool to get the pixel position of the mouse when the mouse is over the item you want to buy. If the item is not visible you will have to count how many spots down the list it is, get the info for the first item in the list, then use down arrow commands in order to move to the item you want to buy. After that it is just a few more automated key strokes to get it to buy a stack of the item. Dpepending on how many of the item are sold each game day will tell you how many stacks to attempt. To get this to work you would need to check how many miliseconds there are between the same time each game day - the time it takes for the bot to buy the items or do pixel search's to "read" the ffxi time and have it start the buying string when the time hits the open hour(+1 second to be safe in my exp). you could use the timerinit and timerdif fnct's to get the number of miliseconds your buying string ran before finishing making it easier to just subtract that from the total miliseconds in a game day. Once you have that time figured out you would just use a sleep command with that number of miliseconds in the field and the bot would buy at the same time each game day. All you would have to do is position your charcter and wait for the shop to open and then start the macro. This same basic approach would work for AH as well but for AH you would need to enter an ammount to pay and you would not need to worry about the timer so much, just make sure it is longer then it takes the AH to process a bid so that the macro doesn't get lost in the menus and burn all your gil.
Something of the rough form (with alt1 macro of /targetnpc )
AutoItSetOption("SendKeyDelay", 200)
AutoItSetOption("SendKeyDownDelay", 200)
while 1
send("!1")
send("{ENTER}")
send("{ENTER}")
mousemove( x, y, 0)
send("{ENTER}")
send("{LEFT}")
send("{ENTER}")
send("{UP"})
send("{ENTER}")
send("{ESC}")
send("{ESC}")
send("{ESC}")
sleep(however many miliseconds you need)
wend
lines 1-2 initialize key timins
line 3 starts loop
line 4 targets the npc udsing the alt1 macro
line 5 -6 clicks on the npc and clicks buy(assuming buy is where the pointer starts)
line 7 moves the mouse to the x,y pixel position of the item to buy
lines 8-12 buy up to one stack of the item(repeat these if the merchant sells more then 12 per day)
lines 13-15 exit out of the npc's store windows
line 16 waits till the store opens the next day
line 17 ends the loop(as is it will continue looping indefinitely
one thing to test is when the shop is out of the item before you finish buying do the arrow commands I included cause you to buy other items? If so than you would need to account for that in the code. I suspect at least some of the items you want to npc camp would be competition ones so you are likely to only get some of their goods.
Lastly I make no garuntees or support for this as it was merely a example of the top of my head and I may have misremembered some of the default positions of pointers and such, this is not meant to be a working script but as an example of roughly how you could do one to buy out a npc. Thuroughly test any script you make, especially purchase ones, so you do not burn gill or drop items. Hope it helps you all.
PS you can get these to run as fast as ffxi will support for 'manual' interface. Just need to find what the shortest sendkeydelay and sendkeydowndelay's you can use are while it still working.
Also if you used something like this for AH it is much more practical to just keep it trying to bid on the item regardless of whether the item is in stock or whether you are getting the bids at your price. This way you set a price and everytime someone lists for that or below you buy them up. The one thing you would have to worry about is not letting it switch to a different item while it's running, like say if the AH runs out of what you are bidding on.
And on a side note I would feel sorry for ppl buying moats on some servers. One of my mules is selling out ,after capping each day, with moats going for the mid 20k's each stack.
Also if you used something like this for AH it is much more practical to just keep it trying to bid on the item regardless of whether the item is in stock or whether you are getting the bids at your price. This way you set a price and everytime someone lists for that or below you buy them up. The one thing you would have to worry about is not letting it switch to a different item while it's running, like say if the AH runs out of what you are bidding on.
And on a side note I would feel sorry for ppl buying moats on some servers. One of my mules is selling out ,after capping each day, with moats going for the mid 20k's each stack.
Wow! You know this would really help me except for the fact I have no knowledge of scripting... Where can I learn? I don't know what the functions are/what they do etc... Point me to a good tutorial please. If I can learn the basics I should be able to make a script that will buy out all Bronze Ingots at giuld. Also, can you make it start at a certain in game time such as 8:00 when guild opens? Then stop trying to buy a certain item at about 9:00? Then loop and start up again next game day? Be nice while I'm at work/school. Thanks.
for info on the scripting the basics are in the help file included when you install autoit and you can find some tidbits on autoit specific forums online but I have not had much success finding info other then the help file. Just manually figure out how to best make it work. As for figuring it out I suggest just follow what I posted up above(with explanations) and look up each of those functions in the help file which will give you details as to how that function works and what can be done with it.
For simplisities sake I just tossed the stuff above assuming that you would start the script when the shop opened and have it running at store open from then on until you turned the script off. However if you wanted to timer it so you did not have to wait till the store opened you could do so by adding a sleep( ) command between lines 2 and 3 and putting the number of miliseconds till the store opens in the parenthesies of the sleep command. For example if the store opens in 12 minutes you would set the line2.5 sleep command to sleep(600000) and then log into ffxi through the windower get into position and when it is 10 minutes(Real time) till open you would start the script and run it all day. The 600000miliseconds=600seconds=10minutes is in real time. Get the amount of time till the store opens from this link or other ffxi timers
https://www.pyogenes.com/ffxi/timer/v2.html
and use it to also let you know when to start the script by having it up while ffxi is windowed.
For simplisities sake I just tossed the stuff above assuming that you would start the script when the shop opened and have it running at store open from then on until you turned the script off. However if you wanted to timer it so you did not have to wait till the store opened you could do so by adding a sleep( ) command between lines 2 and 3 and putting the number of miliseconds till the store opens in the parenthesies of the sleep command. For example if the store opens in 12 minutes you would set the line2.5 sleep command to sleep(600000) and then log into ffxi through the windower get into position and when it is 10 minutes(Real time) till open you would start the script and run it all day. The 600000miliseconds=600seconds=10minutes is in real time. Get the amount of time till the store opens from this link or other ffxi timers
https://www.pyogenes.com/ffxi/timer/v2.html
and use it to also let you know when to start the script by having it up while ffxi is windowed.