awards/readme.md

139 lines
3.6 KiB
Markdown
Raw Normal View History

2015-06-10 19:39:22 +02:00
# Awards
2013-02-22 18:53:42 +01:00
2015-06-04 14:13:58 +02:00
by Andrew "Rubenwardy" Ward, LGPL 2.1 or later.
2013-02-22 18:53:42 +01:00
This mod adds achievements to Minetest.
Majority of awards are back ported from Calinou's
old fork in Carbone, under same license.
2013-02-22 18:53:42 +01:00
2015-06-10 19:39:22 +02:00
# Basic API
2013-02-22 18:53:42 +01:00
2015-06-10 19:39:22 +02:00
* awards.register_achievement(name, def)
2013-02-22 18:53:42 +01:00
* name
* desciption
* sound [optional]
2015-06-10 19:39:22 +02:00
* image [optional] - texture name, eg: award_one.png
* background [optional] - texture name, eg: award_one.png
2013-02-23 13:02:02 +01:00
* trigger [optional] [table]
2016-06-01 19:41:24 +02:00
* type - "dig", "place", "craft", "death", "chat" or "join"
2013-02-23 13:02:02 +01:00
* (for dig/place type) node - the nodes name
2016-06-01 19:41:24 +02:00
* (for craft type) item - the items name
2013-02-23 16:13:21 +01:00
* (for all types) target - how many to dig / place
2015-06-10 19:39:22 +02:00
* See Triggers
2014-05-02 21:09:54 +02:00
* secret [optional] - if true, then player needs to unlock to find out what it is.
2015-06-10 20:15:16 +02:00
* on_unlock [optional] - func(name, def)
* name is player name
* return true to cancel register_on_unlock callbacks and HUD
2015-06-10 19:39:22 +02:00
* awards.register_trigger(name, func(awardname, def))
* Note: awards.on[name] is automatically created for triggers
* awards.run_trigger_callbacks(player, data, trigger, table_func(entry))
* Goes through and checks all triggers registered to a trigger type,
unlocking the award if conditions are met.
* data is the player's award data, ie: awards.players[player_name]
* trigger is the name of the trigger type. Ie: awards.on[trigger]
* table_func is called if the trigger is a table - simply return an
award name to unlock it
* See triggers.lua for examples
* awards.increment_item_counter(data, field, itemname)
* add to an item's statistic count
* for example, (data, "place", "default:stone") will add 1 to the number of
times default:stone has been placed.
* data is the player's award data, ie: awards.players[player_name]
* returns true on success, false on failure (eg: cannot get modname and item from itemname)
2015-06-10 20:15:16 +02:00
* awards.register_on_unlock(func(name, def))
* name is the player name
* def is the award def.
* return true to cancel HUD
2015-06-11 18:35:32 +02:00
* awards.unlock(name, award)
2015-06-10 20:15:16 +02:00
* gives an award to a player
* name is the player name
2015-06-10 19:39:22 +02:00
# Included in the Mod
2015-06-10 20:15:16 +02:00
The API, above, allows you to register awards
and triggers (things that look for events and unlock awards, they need
to be registered in order to get details from award_def.trigger).
However, all awards and triggers are separate from the API.
They can be found in init.lua and triggers.lua
2015-06-10 19:39:22 +02:00
## Triggers
2015-06-10 20:15:16 +02:00
Callbacks (register a function to be run)
### dig
trigger = {
type = "dig",
node = "default:dirt",
target = 50
}
### place
trigger = {
type = "place",
node = "default:dirt",
target = 50
}
### death
trigger = {
type = "death",
target = 5
}
### chat
trigger = {
type = "chat",
target = 100
}
### join
trigger = {
type = "join",
target = 100
}
## Callbacks relating to triggers
2015-06-10 19:39:22 +02:00
* awards.register_on_dig(func(player, data))
2015-06-10 20:15:16 +02:00
* data is player data (see below)
* return award name or null
2015-06-10 19:39:22 +02:00
* awards.register_on_place(func(player, data))
2015-06-10 20:15:16 +02:00
* data is player data (see below)
* return award name or null
2015-06-10 19:39:22 +02:00
* awards.register_on_death(func(player, data))
2015-06-10 20:15:16 +02:00
* data is player data (see below)
* return award name or null
2015-06-10 19:39:22 +02:00
* awards.register_on_chat(func(player, data))
2015-06-10 20:15:16 +02:00
* data is player data (see below)
* return award name or null
* awards.register_on_join(func(player, data)
* data is player data (see below)
* return award name or null
2013-02-22 18:53:42 +01:00
2015-06-10 19:39:22 +02:00
# Player Data
2013-02-22 18:53:42 +01:00
A list of data referenced/hashed by the player's name.
2013-02-23 13:02:02 +01:00
* player name
* name [string]
* count [table] - dig counter
* modname [table]
* itemname [int]
* place [table] - place counter
* modname [table]
2014-05-02 21:09:54 +02:00
* itemname [int]
2016-06-01 19:41:24 +02:00
* craft [table] - craft counter
* modname [table]
* itemname [int]
2014-05-02 21:09:54 +02:00
* deaths
* chats
* joins