Fix group total, fix item increment count argument, add player checks, resize award icon, fix log output

This commit is contained in:
Beha 2020-04-05 16:00:33 +00:00 committed by rubenwardy
parent d542042a50
commit ce58720493
3 changed files with 11 additions and 6 deletions

@ -43,6 +43,11 @@ end
-- name - the name of the player -- name - the name of the player
-- award - the name of the award to give -- award - the name of the award to give
function awards.unlock(name, award) function awards.unlock(name, award)
-- Ensure the player is online.
if not minetest.get_player_by_name(name) then
return
end
-- Access Player Data -- Access Player Data
local data = awards.player(name) local data = awards.player(name)
local awdef = awards.registered_awards[award] local awdef = awards.registered_awards[award]
@ -60,7 +65,7 @@ function awards.unlock(name, award)
end end
-- Unlock Award -- Unlock Award
minetest.log("action", name.." has unlocked award "..name) minetest.log("action", name.." has unlocked award "..award)
data.unlocked[award] = award data.unlocked[award] = award
awards.save() awards.save()
@ -91,7 +96,7 @@ function awards.unlock(name, award)
local title = awdef.title or award local title = awdef.title or award
local desc = awdef.description or "" local desc = awdef.description or ""
local background = awdef.background or "awards_bg_default.png" local background = awdef.background or "awards_bg_default.png"
local icon = awdef.icon or "awards_unknown.png" local icon = (awdef.icon or "awards_unknown.png") .. "^[resize:32x32"
local sound = awdef.sound local sound = awdef.sound
if sound == nil then if sound == nil then
-- Explicit check for nil because sound could be `false` to disable it -- Explicit check for nil because sound could be `false` to disable it

@ -160,8 +160,9 @@ function awards.register_trigger(tname, tdef)
data[tname] = data[tname] or {} data[tname] = data[tname] or {}
local currentVal = (data[tname][key] or 0) + n local currentVal = (data[tname][key] or 0) + n
data[tname][key] = currentVal data[tname][key] = currentVal
data[tname].__total = (data[tname].__total or 0)
if key:sub(1, 6) ~= "group:" then if key:sub(1, 6) ~= "group:" then
data[tname].__total = (data[tname].__total or 0) + n data[tname].__total = data[tname].__total + n
end end
tdef:run_callbacks(player, data, function(entry) tdef:run_callbacks(player, data, function(entry)
@ -173,7 +174,6 @@ function awards.register_trigger(tname, tdef)
else else
return return
end end
if current >= entry.target then if current >= entry.target then
return entry.award return entry.award
end end
@ -201,7 +201,7 @@ end
function awards.increment_item_counter(data, field, itemname, count) function awards.increment_item_counter(data, field, itemname, count)
itemname = minetest.registered_aliases[itemname] or itemname itemname = minetest.registered_aliases[itemname] or itemname
data[field][itemname] = (data[field][itemname] or 0) + 1 data[field][itemname] = (data[field][itemname] or 0) + (count or 1)
end end
function awards.get_item_count(data, field, itemname) function awards.get_item_count(data, field, itemname)

@ -141,5 +141,5 @@ minetest.register_on_item_eat(function(_, _, itemstack, player, _)
local itemname = itemstack:get_name() local itemname = itemstack:get_name()
itemname = minetest.registered_aliases[itemname] or itemname itemname = minetest.registered_aliases[itemname] or itemname
awards.notify_eat(player, itemname, itemstack:get_count()) awards.notify_eat(player, itemname)
end) end)