mirror of https://gitlab.com/rubenwardy/awards.git
Fix use of uninitialized data.
Since groups were notified before the `__total` count was initialized (and groups can't initialize `__total`), when run_callbacks tried to access `__total` it got `nil`. This is fixed by moving the notification of groups to *after* the counter is incremented and `__total` is initialized.
This commit is contained in:
parent
d542042a50
commit
5b318d2b28
|
@ -141,17 +141,6 @@ function awards.register_trigger(tname, tdef)
|
|||
function tdef.notify(player, key, n)
|
||||
n = n or 1
|
||||
|
||||
if tdef.key_is_item and key:sub(1, 6) ~= "group:" then
|
||||
local itemdef = minetest.registered_items[key]
|
||||
if itemdef then
|
||||
for groupname,rating in pairs(itemdef.groups or {}) do
|
||||
if rating ~= 0 and tdef.watched_groups[groupname] then
|
||||
tdef.notify(player, "group:" .. groupname, n)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
assert(player and player.is_player and player:is_player() and key)
|
||||
local name = player:get_player_name()
|
||||
local data = awards.player(name)
|
||||
|
@ -164,6 +153,17 @@ function awards.register_trigger(tname, tdef)
|
|||
data[tname].__total = (data[tname].__total or 0) + n
|
||||
end
|
||||
|
||||
if tdef.key_is_item and key:sub(1, 6) ~= "group:" then
|
||||
local itemdef = minetest.registered_items[key]
|
||||
if itemdef then
|
||||
for groupname,rating in pairs(itemdef.groups or {}) do
|
||||
if rating ~= 0 and tdef.watched_groups[groupname] then
|
||||
tdef.notify(player, "group:" .. groupname, n)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
tdef:run_callbacks(player, data, function(entry)
|
||||
local current
|
||||
if entry.key == key then
|
||||
|
|
Loading…
Reference in New Issue