Added API.md and fixed error in README.md
This commit is contained in:
parent
a2e53b161d
commit
ceb168de55
2 changed files with 164 additions and 2 deletions
162
API.md
Normal file
162
API.md
Normal file
|
|
@ -0,0 +1,162 @@
|
||||||
|
# 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:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
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 `.tr` file 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:
|
||||||
|
```lua
|
||||||
|
{
|
||||||
|
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:**
|
||||||
|
```lua
|
||||||
|
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 `number` representing the player's balance, or `0` if 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 `number` representing the player's credit debt, or `0`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### `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:** `true` if the account exists, `false` otherwise.
|
||||||
|
|
||||||
|
---
|
||||||
|
### 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:** `true` on success.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
```lua
|
||||||
|
-- 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:** `true` on 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:** `true` on success.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
```lua
|
||||||
|
-- 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:** `true` on 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:** `true` on 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:** `true` on success.
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Bank Accounts (Redo & Extended)
|
# Bank Accounts (Redo & Extended)
|
||||||
|
|
||||||
A complete overhaul and extension of the original `bank_accounts` mod by Tmanyo and Trent Lasich. This project has been restructured from the ground up to ensure stability, security, and a significantly expanded feature set.
|
A complete overhaul and extension of the original `bank_accounts` mod by Tmanyo (Trent Lasich). This project has been restructured from the ground up to ensure stability, security, and a significantly expanded feature set.
|
||||||
|
|
||||||
## About This Version
|
## About This Version
|
||||||
|
|
||||||
|
|
@ -142,5 +142,5 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
```
|
```
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
* Original Mod: Tmanyo (Code) & Trent Lasich (Textures, Models)
|
* Original Mod: Tmanyo (Trent Lasich)
|
||||||
* Complete Redo, Extension & Bugfixing: **Rage87**
|
* Complete Redo, Extension & Bugfixing: **Rage87**
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue