5.6 KiB
Bank Accounts - API Documentation
This document describes the public API for the bank_accounts mod, allowing other mods to safely interact with player account data.
Introduction
The entire API is accessible through the global table bank_accounts. It is highly recommended to check for its existence before using it to ensure the mod is enabled:
if not bank_accounts then
-- bank_accounts mod is not enabled or not loaded yet
return
end
All functions that modify a player's balance or credit will automatically create a corresponding entry in the player's transaction history (account statement).
Data Types
- player_name: A string representing the player's name (e.g.,
"Rage87"). - amount: A number. The API supports floating-point numbers for digital transactions. Note that the ATM and Teller Computer nodes enforce integer-only values for physical cash withdrawals and deposits.
- trans_type: A short, non-translatable string used as a key to identify the transaction method (e.g.,
"API Purchase","Quest Reward"). This string should be added to a.trfile for localization. - purpose: A short, user-facing string that describes the transaction. This will be displayed directly in the account statement.
- other_party: A string representing the name of the other player or entity involved in the transaction.
API Functions
Data Retrieval
bank_accounts.get_account_data(player_name)
Returns a table containing all key data for a single player. This is the most efficient way to get multiple pieces of information at once.
player_name(string): The name of the player.- Returns: A table with the following structure:
{ balance = 1234.56, -- (number) The player's current balance. credit = 500.00, -- (number) The player's current credit debt. pin = "1234", -- (string) The player's PIN. history = { ... } -- (table) A list of transaction tables for the player. }
Example:
local data = bank_accounts.get_account_data("Rage87")
if data then
print("Balance for Rage87: " .. data.balance)
end
bank_accounts.get_balance(player_name)
Returns only the balance of a player.
player_name(string): The name of the player.- Returns: A
numberrepresenting the player's balance, or0if the player has no account.
bank_accounts.get_credit(player_name)
Returns only the credit debt of a player.
player_name(string): The name of the player.- Returns: A
numberrepresenting the player's credit debt, or0.
bank_accounts.player_has_account(player_name)
Checks if a player has an account in the database.
player_name(string): The name of the player.- Returns:
trueif the account exists,falseotherwise.
Data Modification
All modification functions will create an entry in the transaction history.
bank_accounts.add_balance(player_name, amount, trans_type, purpose, other_party)
Adds a value to a player's balance. Use a negative amount to subtract.
player_name(string): The name of the player whose balance will be changed.amount(number): The amount to add (can be negative).trans_type(string): The internal type for this transaction (e.g.,"Quest Reward").purpose(string): (optional) A user-facing description (e.g.,"For completing the 'Dragon Slayer' quest.").other_party(string): (optional) The name of the entity giving the money (e.g.,"King's Treasury").- Returns:
trueon success.
Example:
-- Give player 'Rage87' a quest reward of 150.75 MG.
bank_accounts.add_balance("Rage87", 150.75, "Quest Reward", "Dragon Slaying", "King Arthur")
bank_accounts.set_balance(player_name, amount, trans_type, purpose, other_party)
Sets a player's balance to an absolute value. The transaction log will record the difference between the old and new balance.
player_name(string): The name of the player.amount(number): The new absolute balance.trans_type,purpose,other_party: Same as above.- Returns:
trueon success.
bank_accounts.add_credit(player_name, amount, trans_type, purpose, other_party)
Adds a value to a player's credit debt. Use a negative amount to pay off debt.
- Parameters: Same as
add_balance. - Returns:
trueon success.
Example:
-- A shop mod charges an item to the player's credit card.
bank_accounts.add_credit("Rage87", 99.95, "Credit Purchase", "Diamond Pickaxe", "Tool Shop")
bank_accounts.set_credit(player_name, amount, trans_type, purpose, other_party)
Sets a player's credit debt to an absolute value.
- Parameters: Same as
set_balance. - Returns:
trueon success.
bank_accounts.set_pin(player_name, pin)
Sets a player's PIN. This should rarely be used by external mods.
player_name(string): The name of the player.pin(string): The new 4-digit PIN.- Returns:
trueon success.
Background Scripting Functions
These functions are intended for scripts that need to process all accounts at once, like the interest.lua script. Use with caution.
bank_accounts.get_all_data()
Reads and returns the entire accounts database.
- Returns: The complete data
table.
bank_accounts.save_all(data)
Saves the entire provided data table, overwriting the existing file. Includes a lock to wait for the interest calculation to finish.
data(table): The complete and modified data table to be saved.- Returns:
trueon success.