mirror of
https://gitlab.com/rubenwardy/awards.git
synced 2024-11-26 09:13:55 +01:00
Add awards.increment_item_counter() and use it
This commit is contained in:
parent
f430b4eb68
commit
96746aaf1e
21
api.lua
21
api.lua
@ -77,6 +77,27 @@ function awards.run_trigger_callbacks(player, data, trigger, table_func)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function awards.increment_item_counter(data, field, itemname)
|
||||||
|
local name_split = string.split(itemname, ":")
|
||||||
|
if #name_split ~= 2 then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
local mod = name_split[1]
|
||||||
|
local item = name_split[2]
|
||||||
|
|
||||||
|
if data and field and mod and item then
|
||||||
|
awards.assertPlayer(data)
|
||||||
|
awards.tbv(data, field)
|
||||||
|
awards.tbv(data[field], mod)
|
||||||
|
awards.tbv(data[field][mod], item, 0)
|
||||||
|
|
||||||
|
data[field][mod][item] = data[field][mod][item] + 1
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function awards.register_on_unlock(func)
|
function awards.register_on_unlock(func)
|
||||||
table.insert(awards.on_unlock, func)
|
table.insert(awards.on_unlock, func)
|
||||||
end
|
end
|
||||||
|
@ -36,6 +36,12 @@ old fork in Carbone, under same license.
|
|||||||
* table_func is called if the trigger is a table - simply return an
|
* table_func is called if the trigger is a table - simply return an
|
||||||
award name to unlock it
|
award name to unlock it
|
||||||
* See triggers.lua for examples
|
* 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)
|
||||||
* awards.register_on_unlock(func(name, def))
|
* awards.register_on_unlock(func(name, def))
|
||||||
* name is the player name
|
* name is the player name
|
||||||
* def is the award def.
|
* def is the award def.
|
||||||
|
69
triggers.lua
69
triggers.lua
@ -78,26 +78,10 @@ minetest.register_on_dignode(function(pos, oldnode, digger)
|
|||||||
if not digger or not pos or not oldnode then
|
if not digger or not pos or not oldnode then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local nodedug = string.split(oldnode.name, ":")
|
|
||||||
if #nodedug ~= 2 then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
local mod = nodedug[1]
|
|
||||||
local item = nodedug[2]
|
|
||||||
local playern = digger:get_player_name()
|
|
||||||
|
|
||||||
if (not playern or not nodedug or not mod or not item) then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
awards.assertPlayer(playern)
|
|
||||||
awards.tbv(awards.players[playern].count, mod)
|
|
||||||
awards.tbv(awards.players[playern].count[mod], item, 0)
|
|
||||||
|
|
||||||
-- Increment counter
|
|
||||||
awards.players[playern].count[mod][item]=awards.players[playern].count[mod][item] + 1
|
|
||||||
|
|
||||||
-- Run callbacks and triggers
|
|
||||||
local data = awards.players[playern]
|
local data = awards.players[playern]
|
||||||
|
if not awards.increment_item_counter(data, "count", oldnode.name) then
|
||||||
|
return
|
||||||
|
end
|
||||||
awards.run_trigger_callbacks(digger, data, "dig", function(entry)
|
awards.run_trigger_callbacks(digger, data, "dig", function(entry)
|
||||||
if entry.node and entry.target then
|
if entry.node and entry.target then
|
||||||
local tnodedug = string.split(entry.node, ":")
|
local tnodedug = string.split(entry.node, ":")
|
||||||
@ -116,27 +100,11 @@ minetest.register_on_placenode(function(pos, node, digger)
|
|||||||
if not digger or not pos or not node or not digger:get_player_name() or digger:get_player_name()=="" then
|
if not digger or not pos or not node or not digger:get_player_name() or digger:get_player_name()=="" then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local nodedug = string.split(node.name, ":")
|
|
||||||
if #nodedug ~= 2 then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
local mod=nodedug[1]
|
|
||||||
local item=nodedug[2]
|
|
||||||
local playern = digger:get_player_name()
|
|
||||||
|
|
||||||
-- Run checks
|
|
||||||
if (not playern or not nodedug or not mod or not item) then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
awards.assertPlayer(playern)
|
|
||||||
awards.tbv(awards.players[playern].place, mod)
|
|
||||||
awards.tbv(awards.players[playern].place[mod], item, 0)
|
|
||||||
|
|
||||||
-- Increment counter
|
|
||||||
awards.players[playern].place[mod][item] = awards.players[playern].place[mod][item] + 1
|
|
||||||
|
|
||||||
-- Run callbacks and triggers
|
|
||||||
local data = awards.players[playern]
|
local data = awards.players[playern]
|
||||||
|
if not awards.increment_item_counter(data, "place", node.name) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
awards.run_trigger_callbacks(digger, data, "place", function(entry)
|
awards.run_trigger_callbacks(digger, data, "place", function(entry)
|
||||||
if entry.node and entry.target then
|
if entry.node and entry.target then
|
||||||
local tnodedug = string.split(entry.node, ":")
|
local tnodedug = string.split(entry.node, ":")
|
||||||
@ -155,27 +123,12 @@ minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv
|
|||||||
if not player or not itemstack then
|
if not player or not itemstack then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local itemcrafted = string.split(itemstack:get_name(), ":")
|
|
||||||
if #itemcrafted ~= 2 then
|
|
||||||
--minetest.log("error","Awards mod: "..itemstack:get_name().." is in wrong format!")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
local mod = itemcrafted[1]
|
|
||||||
local item = itemcrafted[2]
|
|
||||||
local playern = player:get_player_name()
|
|
||||||
|
|
||||||
if (not playern or not itemcrafted or not mod or not item) then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
awards.assertPlayer(playern)
|
|
||||||
awards.tbv(awards.players[playern].craft, mod)
|
|
||||||
awards.tbv(awards.players[playern].craft[mod], item, 0)
|
|
||||||
|
|
||||||
-- Increment counter
|
|
||||||
awards.players[playern].craft[mod][item] = awards.players[playern].craft[mod][item] + 1
|
|
||||||
|
|
||||||
-- Run callbacks and triggers
|
|
||||||
local data = awards.players[playern]
|
local data = awards.players[playern]
|
||||||
|
if not awards.increment_item_counter(data, "craft", itemstack:get_name()) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
awards.run_trigger_callbacks(player, data, "craft", function(entry)
|
awards.run_trigger_callbacks(player, data, "craft", function(entry)
|
||||||
if entry.item and entry.target then
|
if entry.item and entry.target then
|
||||||
local titemcrafted = string.split(entry.item, ":")
|
local titemcrafted = string.split(entry.item, ":")
|
||||||
|
Loading…
Reference in New Issue
Block a user