2019-02-22 05:15:44 +01:00
|
|
|
# The official Minetest lurkcoin mod
|
|
|
|
|
2019-06-23 22:25:20 +02:00
|
|
|
Adds (cross-server) ATMs to Minetest. **Transactions may take up to 5 minutes to appear.**
|
2019-02-22 05:15:44 +01:00
|
|
|
|
2019-06-23 22:25:20 +02:00
|
|
|
This mod is currently in beta, and this README probably needs rewriting.
|
2019-02-22 05:15:44 +01:00
|
|
|
|
|
|
|
## How to use/install
|
|
|
|
|
|
|
|
After installing, you will need to add `lurkcoin` to `secure.http_mods` in
|
|
|
|
minetest.conf to allow cross-server transactions. The minetest.conf settings
|
|
|
|
`lurkcoin.username` and `lurkcoin.token` must be set to the username and token
|
|
|
|
you get from the lurkcoin website, and should not contain leading or trailing
|
|
|
|
spaces.
|
|
|
|
|
2019-06-10 11:26:29 +02:00
|
|
|
## What is a "lurkcoin"?
|
|
|
|
|
|
|
|
lurkcoin is a cross-server (possibly cross-game in the future) money transfer
|
|
|
|
system.
|
|
|
|
|
|
|
|
If you're interested in how it works, ask/nag me to finish this FAQ.
|
|
|
|
|
|
|
|
### But what if someone on one server cheats with creative?
|
|
|
|
|
|
|
|
There are limits, and exchange rates are updated in realtime (and change
|
|
|
|
depending on how much you are trying to transfer) to try and prevent creative
|
|
|
|
money and imbalanced economies. There are also logs of cross-server
|
|
|
|
transactions, if you suspect fraud, PM me on IRC if possible (Freenode or
|
|
|
|
xeroxIRC).
|
|
|
|
|
2019-02-22 05:15:44 +01:00
|
|
|
## API
|
|
|
|
|
|
|
|
The following lurkcoin-specific functions and variables exist:
|
|
|
|
|
2019-05-04 00:49:46 +02:00
|
|
|
- `lurkcoin.exchange_rate`: The raw exchange rate, *do not modify this!*
|
|
|
|
- `lurkcoin.get_exchange_rate(amount, to, callback)`: Get an exchange rate
|
|
|
|
from this server.
|
2019-02-22 05:15:44 +01:00
|
|
|
- `lurkcoin.pay(from, to, server, amount, callback)`: Makes `from` pay someone
|
|
|
|
`amount`cr, and calls `callback` on success/faliure. `callback` should have two
|
|
|
|
parameters, `success` and `msg`.
|
|
|
|
- `lurkcoin.server_name`: The account name used to log into lurkcoin.
|
|
|
|
|
2019-09-19 08:48:39 +02:00
|
|
|
*Callbacks may or may not be pcall()ed, this is liable to change and you should
|
|
|
|
not rely on errors bringing down the server or just being logged.*
|
|
|
|
|
2019-02-22 05:15:44 +01:00
|
|
|
### Bank API
|
|
|
|
|
|
|
|
This mod creates a "universal"™ bank API.
|
|
|
|
|
|
|
|
The below functions (except `getbal` and `pay`) return `true` on success and
|
|
|
|
`false` on failure.
|
|
|
|
|
|
|
|
- `lurkcoin.bank.getbal(name)`: Gets a balance
|
|
|
|
- `lurkcoin.bank.setbal(name, balance, reason)`: Sets a balance
|
|
|
|
- `lurkcoin.bank.user_exists(name)`: Checks if a user exists.
|
|
|
|
- `lurkcoin.bank.changebal(name, amount, reason)`: Changes a balance (use
|
|
|
|
either positive or negative numbers)
|
|
|
|
- `lurkcoin.bank.add(name, amount, reason)`: Adds `amount` to `name`'s balance.
|
|
|
|
Will return false if `amount` is below `0`.
|
|
|
|
- `lurkcoin.bank.subtract(name, amount, reason)`: Subtracts `amount` from
|
|
|
|
`name`'s balance. Will return false if `amount` is below `0`.
|
|
|
|
- `lurkcoin.bank.pay(from, to, amount)`: Makes user `from` pay a user
|
|
|
|
`amount`cr. This will return two values, `success` (true/false) and
|
|
|
|
`message` (a string).
|
|
|
|
|
|
|
|
#### Changing the currently used bank
|
|
|
|
|
|
|
|
By default, this mod will check for a few bank mods, and if it doesn't find any
|
|
|
|
will use the built-in (≈34 line) `minibank.lua`. `minibank` does not store any
|
|
|
|
transaction history and will disregard the `reason` parameter when updating
|
|
|
|
balances.
|
|
|
|
|
|
|
|
To change the currently used bank, use `lurkcoin.change_bank(bank)`, where
|
|
|
|
`bank` is a table containing at least `getbal`, `setbal` and `user_exists`.
|
|
|
|
`getbal` should not create users on balance checking, and if it returns `nil`
|
|
|
|
for non-existent users, `user_exists` is not required. Any other functions
|
|
|
|
implemented (except `pay`) must have the same return values as described in this
|
|
|
|
documentation, and are entirely optional (they will be automatically created if
|
|
|
|
they are not included). Any missing functions are "filled in" automatically.
|
|
|
|
|
|
|
|
*By default, payments are rounded down to the nearest 0.01cr.*
|