summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRubenwardy <anjayward@gmail.com>2013-02-22 20:43:40 +0000
committerRubenwardy <anjayward@gmail.com>2013-02-22 20:43:40 +0000
commitd769dd224d3fa3004ba5f3667f062cf1ae2575f3 (patch)
tree6ce7684aaf09200424ba427bcea7eab3e8be8b0a
parent6a968c87c51a143f5d09da9991db25b6b0673af0 (diff)
restyled
-rw-r--r--api.lua94
-rw-r--r--init.lua109
-rw-r--r--readme.md14
3 files changed, 117 insertions, 100 deletions
diff --git a/api.lua b/api.lua
new file mode 100644
index 0000000..05b6306
--- /dev/null
+++ b/api.lua
@@ -0,0 +1,94 @@
+
+-- Table Save Load Functions
+local function save_playerD()
+ local file = io.open(minetest.get_worldpath().."/awards.txt", "w")
+ if file then
+ file:write(minetest.serialize(player_data))
+ file:close()
+ end
+end
+
+local function load_playerD()
+ local file = io.open(minetest.get_worldpath().."/awards.txt", "r")
+ if file then
+ local table = minetest.deserialize(file:read("*all"))
+ if type(table) == "table" then
+ return table
+ end
+ end
+ return {}
+end
+
+-- The global award namespace
+awards={}
+player_data=load_playerD()
+
+-- A table of award definitions
+awards.def={}
+
+-- Load files
+dofile(minetest.get_modpath("awards").."/triggers.lua")
+
+-- API Functions
+function awards.register_achievement(name,data_table)
+ awards['def'][name] = data_table
+end
+
+function awards.register_onDig(func)
+ table.insert(awards.onDig,func);
+end
+
+function awards.register_onPlace(func)
+ table.insert(awards.onPlace,func);
+end
+
+function awards.give_achievement(name,award)
+ local data=player_data[name]
+
+ if not data['unlocked'] then
+ data['unlocked']={}
+ end
+
+ if not data['unlocked'][award] or data['unlocked'][award]~=award then
+ -- set player_data table
+ data['unlocked'][award]=award
+
+ -- define local award data
+ local title = award
+ local desc = ""
+
+ -- check definition table
+ if awards['def'][award] and awards['def'][award]['title'] then
+ title=awards['def'][award]['title']
+ end
+
+ if awards['def'][award] and awards['def'][award]['description'] then
+ desc=awards['def'][award]['description']
+ end
+
+ -- send award header
+ minetest.chat_send_player(name, "Achievement Unlocked: "..title)
+
+ -- send award content
+ if desc~="" then
+ minetest.chat_send_player(name, desc)
+ end
+
+ -- save playertable
+ save_playerD()
+ end
+end
+
+-- List a player's achievements
+minetest.register_chatcommand("list_awards", {
+ params = "",
+ description = "list_awards: list your awards",
+ func = function(name, param)
+ minetest.chat_send_player(name, "Your awards:");
+
+ for _, str in pairs(player_data[name].unlocked) do
+ minetest.chat_send_player(name, str);
+ end
+ end,
+})
+
diff --git a/init.lua b/init.lua
index c07c500..eb3dc45 100644
--- a/init.lua
+++ b/init.lua
@@ -1,104 +1,12 @@
-- AWARDS
-- by Rubenwardy, CC-BY-SA
-------------------------------------------------------
--- this is the api definition file for the awards mod
+-- this is the init file for the award mod
-------------------------------------------------------
--- Table Save Load Functions
-local function save_playerD()
- local file = io.open(minetest.get_worldpath().."/awards.txt", "w")
- if file then
- file:write(minetest.serialize(player_data))
- file:close()
- end
-end
-
-local function load_playerD()
- local file = io.open(minetest.get_worldpath().."/awards.txt", "r")
- if file then
- local table = minetest.deserialize(file:read("*all"))
- if type(table) == "table" then
- return table
- end
- end
- return {}
-end
-
--- The global award namespace
-awards={}
-player_data=load_playerD()
-
--- A table of award definitions
-awards.def={}
-
--- Load files
-dofile(minetest.get_modpath("awards").."/triggers.lua")
-
--- API Functions
-function awards.register_achievement(name,data_table)
- awards['def'][name] = data_table
-end
-
-function awards.register_onDig(func)
- table.insert(awards.onDig,func);
-end
-
-function awards.register_onPlace(func)
- table.insert(awards.onPlace,func);
-end
-
-function awards.give_achievement(name,award)
- local data=player_data[name]
-
- if not data['unlocked'] then
- data['unlocked']={}
- end
-
- if not data['unlocked'][award] or data['unlocked'][award]~=award then
- -- set player_data table
- data['unlocked'][award]=award
+dofile(minetest.get_modpath("awards").."/api.lua")
- -- define local award data
- local title = award
- local desc = ""
-
- -- check definition table
- if awards['def'][award] and awards['def'][award]['title'] then
- title=awards['def'][award]['title']
- end
-
- if awards['def'][award] and awards['def'][award]['description'] then
- desc=awards['def'][award]['description']
- end
-
- -- send award header
- minetest.chat_send_player(name, "Achievement Unlocked: "..title)
-
- -- send award content
- if desc~="" then
- minetest.chat_send_player(name, desc)
- end
-
- -- save player_data table
- save_playerD()
- end
-end
-
--- List a player's achievements
-minetest.register_chatcommand("list_awards", {
- params = "",
- description = "list_awards: list your awards",
- func = function(name, param)
- minetest.chat_send_player(name, "Your awards:");
-
- for _, str in pairs(player_data[name].unlocked) do
- minetest.chat_send_player(name, str);
- end
- end,
-})
-
-
--- Example Achievements
+-- Found some Mese!
awards.register_achievement("award_mesefind",{
title = "First Mese Find",
description = "Found some Mese!",
@@ -114,12 +22,19 @@ awards.register_onDig(function(player,data)
end
end)
+
+-- First Wood Placed!
+awards.register_achievement("award_woodplace",{
+ title = "Foundations",
+ description = "First Wood Placed!",
+})
+
awards.register_onPlace(function(player,data)
if not data['place']['default'] or not data['place']['default']['mese'] then
return
end
- if data['place']['default']['mese'] > 0 then
- return "award_meseplace"
+ if data['place']['default']['wood'] > 0 then
+ return "award_woodplace"
end
end) \ No newline at end of file
diff --git a/readme.md b/readme.md
index 324a383..917f2aa 100644
--- a/readme.md
+++ b/readme.md
@@ -17,8 +17,13 @@ The API
* sound [optional]
* image [optional]
* func [optional] - see below
+* awards.give_achievement(name,award)
+ * -- gives an award to a player
* awards.register_onDig(func)
- * -- return true if the medal should be rewarded
+ * -- return award name or null
+ * -- there will be built in versions of this function
+* awards.register_onPlace(func)
+ * -- return award name or null
* -- there will be built in versions of this function
@@ -29,6 +34,9 @@ A list of data referenced/hashed by the player's name.
* name [string]
* getNodeCount('node_name') [function]
-* count [table]
+* count [table] - dig counter
+ * modname [table]
+ * itemname [int]
+* place [table] - place counter
* modname [table]
- *itemname [int] \ No newline at end of file
+ * itemname [int] \ No newline at end of file