iDB (short for item database)
- Windows app + companion web interface
- Drop, transfer, or pickup items
- Virtual databases to separate out items
- Item images (as of September 2019!)
- Reseller support (as of October 2019!)
- Auto‐refresh characters before they expire
- Automated socketing (not Larzuk, but inserting gem/rune/jewel into bases) / cubing feature
- Integration with WorldIsMine's AutoShop, Laz's ShopDrop and my SimpleShop
- Integration with WooCommerce for order delivery
- Integration with NeutronPlus & PermIt
- Windows PC with Windows 10 or Windows Server 2016+, Windows Server is highly recommended due to connection limitations for IIS
- 4 core processor (preferably 8+ core AMD), more cores is best way to improve performance for running many clientless bots
- Good network card
- 16 GB or more of memory
CodesCodes are like products in a web shop (eg. Fortitude - Archon Plate - Ethereal - Bugged - 30% All Res, 1.5 HP/Lvl, 3552 Defense). They allow you to categorize your items and search for them easily. A Code consists of an ID (0 to 999,999), a description, a type (eg. Archon Plate) and a match/pickit (eg. Quality = Runeword & Name = Fortitude & Eth & Ebugged & AllResistances = 30 & LifePerLevel = 1.5 & Defense = 3552).
How to Write a Match/PickitLink
SpecialThere are 4 types of special codes. These allow you to create packs containing other codes! They can be multiple levels deep as well (A contains 1 B and 2 C's, and C contains 3 D's and 1 E). Special codes have a match format of [id]:[count],[id]:[count],.. (eg. 1:2,5:4,8:1).
|Special||A plain pack|
|SpecialStrict||A pack that fails immediately if only partially available, the app will do its best to make sure this pack is delivered in its entirety|
|SpecialAny||Quantity on each ingredient is ignored, this pack resolves to the first code that is in stock (on the given realm/database)|
|SpecialAnyEven||Quantity on each ingredient is ignored, this pack resolves to the code that has the highest stock (on the given realm/database)|
ExportingDrag your db.sqlite file onto dump-Codes.bat and it will export to a Codes-*.sql file.
- This can be done even while iDB is running.
- If you're about to do an import, it is always a good idea to back up your current set of codes.
ImportingAdvanced users only!
Drag your *.sql file onto import-Codes.bat and it will import to db.sqlite.
After running iDB you will see a screen like this for a few minutes. If you have millions of items it can take up to an hour to reprocess all.
- You should only do this if iDB is closed.
- Since this operation does a full replacement, it must be full set of Codes, not just a partial set.
- Be very careful not to change IDs of Codes that you are using with ShopDrop/AutoShop.
- Be very careful not to mess up the formatting of your .sql file.
- Item level is appended to the title
Unidentified uniques and sets will show the correct identified name (if possible):
Replenish over time stats (replenish quantity, etc) have the exact details:
- Per level stats (life per level, etc) have the exact details:
Ethereal bugged items will have (Ebugged) appended to their title:
Upped items will have (Upped) appended to their title:
HotkeysWhile the image is showing, you can do CTRL+S to save the image to hard-drive.
While the image is showing, you can do CTRL+C to copy the image to clipboard.
While the image is showing, you can do CTRL+U to upload image to Imgur and copy link to clipboard.
Player ConsiderationsBe wary of items that potentially give +4 or more skills to non-owner classes, like Widowmaker which can spawn with up to +5 to Guided Arrow. In-game and in other kolbot-based droppers you might see that this Widowmaker has only +3 to Guided Arrow:
DatabasesDatabases are a virtual separation of items that allow the following configurations:
- Priority for operations that span multiple databases (order preference, etc)
- Whether or not web shop order delivery should be able to access
- Whether or not ShopDrop order delivery should be able to access
- Whether or not the characters should be auto-refreshed
- Different limit IDs for using different keys & proxies via rDB
- Special reseller access via iDB-Web
ProcessorsDatabases are a virtual separation of items that allow the following configurations:
|Jobs||Changes jobs from inactive to active (while obeying queue limits such as LimitPerRealm and also not activating a job for an account that is already active)|
|API: TCP||Turns on a listener for PlainSocket network connections such as iDB-Web, PermIt, NeutronPlus, Kolbot, etc|
|API: HTTP||Turns on a listener for WebSocket network connections such as iDB-Web, PermIt, NeutronPlus, Kolbot, etc|
|API: Allow New Drops||If unchecked, drop requests will be responded with "Drops are temporarily disabled (service will restart soon)." (does not affect ShopDrop requests)|
|AutoRefresh||Toggles the processor that checks for expiring characters and queues jobs to refresh them|
|Delivery||Toggles the processor that communicates with the web shop for order delivery|
|ShopDrop||Toggles the processor that communicates to the ShopDrop app (only controls iDB -> ShopDrop, to control ShopDrop -> iDB communication use the API: TCP processor)|
Converting to non-ladderWhen a ladder reset is coming close you should follow these steps.
Uncheck all processors.
Abort all jobs.
Start a manual backup.
A new set of files timestamped with the current date/time will be created. Wait a few minutes for the *-shm and *-wal files to disappear.
In iDB's Items window, click on Convert to NL.
RecoveryLet's say you accidentally delete all your items and you're wondering how to restore them.
Uncheck all processors.
Abort all jobs.
- Close iDB.
Open IIS and stop the website pool.
- Rename C:\Apps\iDB\db.sqlite to C:\Apps\iDB\db.sqlite.bak because it is a bad database now (or delete it).
- Rename latest backup file (like C:\Apps\iDB\db-2020-03-19-14.40.sqlite) to C:\Apps\iDB\db.sqlite.
- Open IIS and start website pool.
- Start iDB.
- Settings are stored in C:\Apps\iDB\iDB.xml.
- Databases, codes, items, etc are stored in C:\Apps\iDB\db.sqlite.
- Every 2 days your db.sqlite and your web logins are backed up to my server.
ShouldEnterGamefor refreshers (default is false)
- UPD Improved updating of character expirations
- ADD Added button on Items window to delete expired characters (also respects realm/database filters)
- ADD Added automatic job prioritization for Ladder
- UPD Changed behavior to warn instead of deleting when encountering mismatched character core/ladder/expansion
- ADD Added Move to Different Database button for currently filtered items
- FIX Fixed a bug regarding reactivation of ShopDrop or AutoShop after a period of inactivity
- UPD If wait-for-pickup is on, droppers will wait before dropping carry-only-1 items (annis, torches, gheeds, cube, etc) if there is already one on the ground
- FIX Fixed bug with JSP shop processor not reporting failures for out of stock products
- UPD Improved logging for JSP shop
- FIX Minor fixes for builder
- UPD Updater improvements
- FIX Minor fixes
- ADD Added support for mappings in SimpleShop
- ADD Added new Deletion.log for account and character deletions
- FIX Fixed expiration update bug (when sent from PermIt, etc)
- UPD Updated expiration updates to delete missing characters (when sent from PermIt, etc)
AutoRetryOrderOnGameFullBugged(default is true)
- UPD Updated web drop messages
DisableWestto default to false
Added new option
DisableWest(default is true) which disables drops from iDB-Web, Refreshers and Loggers for the West realm
- UPD Adjusted abort job options to focus on refresher jobs
- FIX Potential bug fix for errors on job ending
- ADD Added builder request # to title
- ADD Added ability to trash items (drop in public game)
- ADD Added character details to summary for pickup jobs
- ADD Added ability for loggers to attempt to join public games
- ADD Added manual pickup game/password to module title
- ADD Added WaitForPickupIfUnitPriceGreaterThan for SimpleShop
- ADD Added Delete Items Matching Current Filters button on items tab
- FIX Fixed decimal support for SimpleShop
- ADD Added support for multiple SimpleShops
- FIX Fixed decimal support for JSP Shop
- ADD Added item image borders
- UPD Performance improvement for searching items
- ADD Added IP address to API logs
- UPD Improved responsiveness of Items and Codes windows
- UPD Builder now reports what ingredients were missing if it fails
- UPD Pack editor sorts by ID
- UPD Double-clicking in pack editor will add the code now
- FIX Fixed using presets in Transfer mode
- UPD Allow comments in SimpleShop definitions
- FIX Fixed sorting by Name in Items window
- ADD Added pickup/transfer presets
LimitPerOrderand rDBIDDeliveryOverrideare removed for certain modules
- ADD Added SimpleShop
- UPD Updated to infinite retries for sending order results
- ADD Added handling for multiple server disconnects from lobby
- FIX Quick fix for SpecialAny missing from db
- UPD Massive log performance improvement
JSPShop*-ConnectionTimeoutfor auto-disabling JSP shop updates if the app is having trouble connecting (for example, ShopDrop/AutoShop is not running but the iDB processor is left on)
- UPD Stock updates are delayed and batched together to help with Log performance
- UPD Re-indexed accounts & characters case-insensitively
- UPD Upserting accounts & characters uses SQLite's ON CONFLICT feature for performance
- ADD Added Get # of Items Matching Current Filters button on Items window
- UPD Performance improvements during Log operations and more
- UPD Removed prioritized db queue
- ADD Added logging for Log operations to help track any slowness
- ADD Added visualization of db vacuuming
- UPD Prevented stacking of clean-and-reset operations
- UPD Deleting a database works even when there are items attached now
- UPD Improved jsp file import
- FIX Fixed bug where backup got stuck
- UPD Improved tracked item hash conversion to NL
- ADD Added message that manual backup completed
- FIX Fixed to limit Log operations
- ADD Added limit to number of backgrounded Log db operations
- ADD Added special code recursion detection
- FIX Fixed counts for SpecialAny and SpecialAnyEven codes
- UPD Improved game re-use by loggers
- FIX Fixed bug with SpecialAnyEven codes
- ADD Added date to tracked item hashes
- ADD Added tracked price and date to Items window
- UPD Items column state is persisted now
- ADD Added support for Hash in pickits
- ADD Added support for SpecialAnyEven codes
- ADD Added prioritization system for db queue (Log operations are low priority)
- ADD Added SystemOffline and DropFinished packets for ShopDrop
- UPD Improved performance when jobs are ending
- UPD Parallelized incoming API requests to improve responsiveness
- FIX Fixed display order of jobs on main window
- UPD Updated overhead messages to every 3 seconds
- FIX Fixed picker switching to create after joining fails
- ADD Added rDB ID override for manual pickup or transfer jobs
- FIX Automatic detection and fixing of orders stuck in processing state
LimitPerGameJspShopfor JSP shop droppers
- FIX Fixed broken job queue behavior
- ADD Added database to the confirmed drops in JSP shop logs
- ADD Added failed drops to JSP shop logs
- UPD Made overhead pause message persistent
- ADD Added overhead message for pause / resume
ShopDrop-WaitForPickupMessageand AutoShop-WaitForPickupMessagethat is spammed every 5 seconds
- FIX Fixed queue performance degradation with large number of jobs
- FIX Fixed bug where multi-tier strict special codes were not processing and aborting correctly
- ADD Added pause and resume commands for picker
- UPD Minor logging improvements
- UPD Module terminates if lobby thread crashes
- FIX Fixed bug where droppers didn't abort if builder never made it into a game
- ADD Added account and character creation to builder
- UPD Allow replacement builders to bypass queue restrictions
- FIX Fixed droppers getting stuck waiting for a builder that aborted
- FIX Added retries to cube transmuting
- FIX Fixed a scenario where items were staying locked after an order
- UPD Added checks to prevent recursive packs from being created
- FIX Improved error handling if item fails to parse
- FIX Fixed item graphics with spaces
- FIX Fixed SystemOffline message for AutoShop
- UPD Deleting items is more careful with cache clearing
- ADD Added AutoShop support
- FIX Fixed db import
- FIX Fixed pickits with CrescentMoon name filter
- FIX Fixed event handler memory leak and disposing of more SQLiteCommands
- FIX Fixed pickits with *MaxDamage stat
- FIX Fixed hotkey interference on some windows
- FIX Fixed issue when importing ShopDrop data with different name or thumb
- ADD Added pack editor for Special codes
- ADD Added support for SpecialAny codes
- ADD Added builder support for Special type
- FIX Orders for hashes obey order-delivery-access flag
- FIX Fixed db persistence of failed items on orders
- UPD Synchronized job termination
- FIX Logger now only tries to re-use game if game creation was successful
- FIX Fixed caching of special codes even after deletion
- FIX Fixed another graphic bug
- FIX Fixed background backup/vacuum
- UPD Backup/vacuuming happens in background now
- UPD Updated SQLite to 18.104.22.168
- FIX Added delay after trading to allow for replacement items to be received
- UPD Updated ShopDrop window title
- FIX Fixed droppers get stuck in infinite loop when code not found
- UPD Builder updates
- ADD Tcp support for gold, imbue, socket
- FIX Fixed ebugged property
- FIX Minor builder fixes
- ADD Started logging gold/imbue/socket quest
- FIX Fixed thumb for ShopDrops with graphic in pickit
- ADD Added sync tool for tracked item hashes
- ADD Added batching for tracked item hash publishing
- ADD Added batch button for ShopDrop
- FIX Fixed ordering of ShopDrop messages
- UPD Removed Clear All Codes button
- FIX Fixed failed codes friendly string for unsupported SKUs
- UPD Logger should use same game if possible
- ADD Droppers will terminate other droppers if game does not exist
- ADD Added item images
- ADD Initial