UPDATES
53
- FIX: xBuyout/xBid not working without xGetSearchItem being called first.
- FIX: memory reading issue discovered by RodeoRaider. this never happened to me but can happen often for other folks. this could be the fix for a lot of things
- UPDATE: increase multiclient limit from 16 to 32
52
- NEW: xSetLogin: add region parameter allowing you to set the region. note this is a global diablo registry setting.
- NEW: xSetInputDelay: this is like the old SetGlobalDelay where delay is added to all mouse/kb input sent to D3
- FIX: xSetEquipment: failing/crashing when run in parallel (multiclient)
- FIX: bug in Api.doc/Game.Auction.Sell/example
- UPDATE: xGetStashItem will now focus the d3 window when in use
- IMPROVE: reduce CPU usage
TODO (in order of priority):
- NEW: doc/tutorial.html. a noob tutorial for noobz
- NEW: add sample script to buy cheap legendaries
- NEW: support search for similar items (right click item in stash)
- NEW: add support for timeout(function, milliseconds)
- NEW: add more UI features: ability to add buttons to popup (allow for a bot launcher)
- NEW: allow HA to operate as admin while D3 process is regular user
DOWNLOAD
STABLE: HappyAuction.53.zip
- Diablo 3 version: 1.0.8.16603
- C++ source included
DESCRIPTION
HappyAuction is a C++ open source LUA scripted Diablo 3 auction house bot.
Major features supported:
- LUA functions exposing key AH operations
- Works with D3 window in background (see NOTES)
- Several sample bots included
- Multiple client support
- Language independent
Happy botting!
INSTRUCTIONS
1. Run bin/HappyAuction.exe
2. In Diablo 3 visit the auction house
3. Hit CTRL-F12 to start/stop the main script (SnipeBuyout bot by default).
The taskbar icon will change color while script is active.
4. Edit bin/Lua/Main.lua to call other sample scripts.
SAMPLE SCRIPT
Code:
local buyout = xGetBuyout()
-- check input
if buyout <= 0 then
xMessage('Set some filters and a low buyout')
else
while true do
-- update buyout with randomize
xSetBuyout(buyout, true)
-- search and buyout first item
if xSearch() then
-- do buyout
xBuyout(1)
end
end
end
README
Code:
DESCRIPTION
------------------------------------------------------------------------------
HappyAuction is a C++ open source LUA scripted Diablo 3 auction house bot.
Major features supported:
- LUA functions exposing key AH operations
- Works with D3 window in background (see NOTES)
- Several sample bots included
- Multiple client support
- Language independent
Happy botting! :D
INSTRUCTIONS
------------------------------------------------------------------------------
1. Run bin/HappyAuction.exe
2. In Diablo 3 visit the auction house
3. Hit CTRL-F12 to start/stop the main script (SnipeBuyout bot by default).
The taskbar icon will change color while script is active.
4. Edit bin/Lua/Main.lua to call other sample scripts.
INCLUDED BOTS
------------------------------------------------------------------------------
- SnipeBuyout: Traditional buyout bot that will buyout loop first item
- SnipeDps: Will buyout loop first item that meets desired DPS
- LogSearch: Logs all auction Search Results to a file
- LogHistory: Logs contents of Completed/Auction Log to a file
- LogSelling: Logs contents of Auctions/Selling to a file
- LogStash: Logs your stash contents to a file
NOTES
------------------------------------------------------------------------------
- The PAUSE key will pause/unpause a script. See HOTKEYS section to change.
- HappyAuction can run with D3 in the background (not minimized) IF you start
a script with D3 already in the background. The only exception is if you
use haStash* functions which always require D3 in foreground.
- Interacting with D3 while a script is running is not supported and can
cause unintended script operation.
- Performance depends on your FPS and network latency.
- Enable Video/vertical sync.
- Disable Video/Letterbox.
HOTKEYS
------------------------------------------------------------------------------
- Hotkeys and PauseKeys are configured using bin/Settings.cfg.
- This file is generated the first time you run HA
- The hotkey format is MOD.KEY or KEY. Examples:
HotKey1=C.F12 first instance hotkey set to CONTROL-F12
HotKey2=F11 second instance hotkey set to F11
HotKey3=CS.NUM0 third instance hotkey set to CONTROL-SHIFT-NUMPAD0
- Supported Modifiers: A:ALT, C:CONTROL, S:SHIFT, W:WINDOWSKEY
- Supported Keys: 0-9, A-Z, F1-F12, NUM0-NUM9, PAUSE
- HappyAuction must be restarted (right click taskbar icon) to update hotkeys
SCRIPTING
------------------------------------------------------------------------------
- If you are new to LUA visit: http://www.lua.org/manual/5.2/ . There really
isnt much to learn to operate this bot besides loops if statements and
some basic operators.
- The main entry script is Lua/Main.lua.
- Always check function return status! Yes they can fail sometimes like when
normal operation is interupted by some battle.net error. In which case use
xSetLogin to enable automatic relogin.
- Always test new scripts without xBuyout or xBid to avoid losing gold. I
use xMessage in their place to show a popup when a buy/bid would occur.
- Use xSetGlobalDelay() to slow everything down (fastest by default!)
- If functions are ever deprecated they will remain available for several
updates before being removed permanently.
- If using unicode text save your script file in UTF8 format (most text
editors should support this)
- See docs/Api.html for complete function reference
MULTIPLE CLIENTS (tutorial)
------------------------------------------------------------------------------
1. Edit settings.cfg and add a new hotkey for the 2nd D3 client (see HOTKEYS)
2. Have 2 D3 clients running with both at the auction house
3. Hit the configured hotkeys like you originally would a single one. They
will each run bin/Main.lua independently for each D3 instance.
4. The taskbar icon should contain a "2" indicating two sessions are running.
5. Use haGetInstance() or haGetAccount() to distinguish clients. The
following example will run Bot1 in [email protected]'s client and Bot2 in
[email protected]'s client:
if xGetAccount() == '[email protected]' then
-- run bot 1
elseif xGetAccount() == '[email protected]' then
-- run bot 2
end
SECURITY
------------------------------------------------------------------------------
- HappyAuction uses the following "human like" methods to reduce detection:
- Random delays between actions (simulated mouse clicks/keyboard keys)
- Random buyout adjustments
- Positioning of mouse clicks is randomized by a few pixels
- Sent input is minimized. It's mostly mouse movement for a search scan.
- HappyAuction uses the following measures to interact with Diablo 3:
- Win32 Messages: To send keyboard/mouse events
- Read Process Memory: To determine item values such as DPS and armor
- Write Process Memory: Yes it's safe because only text/data memory is
altered, not instruction memory. It's used only to set the filter
combobox values and clear item tooltip state.
- The following is recommended to reduce chance of ban:
- Include additional delays with xSleep() and xSetGlobalDelay()
- If you do not use delays don't run scripts too long
- Note that no matter which AH bot you use you WILL get banned IF you spam
the AH 24/7. No bot, including HappyAuction, is 100% safe even if they're
completely invisible to Diablo 3 client side. Use at your own risk.
BUG SUBMISSIONS
------------------------------------------------------------------------------
- If you find a bug PM me a small script AND/OR detailed steps+conditions that
reproduce the problem within a short time (under 10minutes).
- I cannot do anything with vague reports like 'hey chui HA crash wtfff?!!1'
- if you have xSetMouseLock(false) or VSYNC OFF don't bug me!
SOURCE LICENSE
------------------------------------------------------------------------------
HappyAuction is under the strict "do whatever the **** you want just dont
blame me" license. Break these rules and I'll sue your neckbeard off!
SOURCE DIRECTORIES
------------------------------------------------------------------------------
bin/ Build output and everything you'd find in the binary release.
build/ Project files. Open HappyAuction.sln with Visual Studio 2008 or
higher then build/run.
docs/ API reference and more
source/ The source code! HappyAuction is a combination of 1 executable
and 3 library packages. Ignore HappyMemory: It's temporary code to
help me with stuff where Cheat Engine falls short.
SOURCE NOTES
------------------------------------------------------------------------------
- The primary code is split among the following files/classes:
- HappyAuction/Script/Script:
LUA to C++ layer
- Diablo3/Game:
High level modules. These deal with a specific aspect of Diablo such
as the AuctionLog class which operates the AH Auction Log.
- Diablo3/Core:
Low level interface into the D3 process.
CREDITS
------------------------------------------------------------------------------
The OwnedCore.com community. Specifically the folks contributing to the
Diablo 3 memory editing forum.
TODO: will credit individuals next update :)