Add register_trigger_counted for homogenous events

This commit is contained in:
rubenwardy
2018-04-04 16:03:34 +01:00
parent dd2a5d2d1f
commit 8b024accdd
4 changed files with 85 additions and 116 deletions

26
api.lua
View File

@ -54,6 +54,32 @@ function awards.register_trigger(name, tfunc)
end
end
-- Registers a trigger which replies on counting
function awards.register_trigger_counted(tname, tfunc)
awards.register_trigger(tname, tfunc)
local key = tname .. "s"
awards["notify_" .. tname] = function(player)
assert(player and player.is_player and player:is_player())
local name = player:get_player_name()
awards.assertPlayer(name)
local data = awards.players[name]
-- Increment counter
data[key] = data[key] + 1
local currentVal = data[key]
awards.run_trigger_callbacks(player, data, tname, function(entry)
if entry.target and entry.award and currentVal and
currentVal >= entry.target then
return entry.award
end
end)
end
end
function awards.run_trigger_callbacks(player, data, trigger, table_func)
for i = 1, #awards.on[trigger] do
local res = nil