Fix achievements invpage selection fail
This commit is contained in:
parent
d9409b871d
commit
e0c45e98d7
@ -14,6 +14,8 @@ achievements = {}
|
|||||||
achievements.registered_achievements = {}
|
achievements.registered_achievements = {}
|
||||||
achievements.registered_achievements_list = {}
|
achievements.registered_achievements_list = {}
|
||||||
|
|
||||||
|
local selected_row = {} -- current selected row, per-player
|
||||||
|
|
||||||
local legacy_achievements_file = minetest.get_worldpath() .. "/achievements.dat"
|
local legacy_achievements_file = minetest.get_worldpath() .. "/achievements.dat"
|
||||||
|
|
||||||
local legacy_achievements_states = {}
|
local legacy_achievements_states = {}
|
||||||
@ -367,11 +369,17 @@ local function on_joinplayer(player)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function on_leaveplayer(player)
|
||||||
|
local name = player:get_player_name()
|
||||||
|
selected_row[name] = nil
|
||||||
|
end
|
||||||
|
|
||||||
-- Add callback functions
|
-- Add callback functions
|
||||||
|
|
||||||
minetest.register_on_mods_loaded(on_load)
|
minetest.register_on_mods_loaded(on_load)
|
||||||
|
|
||||||
minetest.register_on_joinplayer(on_joinplayer)
|
minetest.register_on_joinplayer(on_joinplayer)
|
||||||
|
minetest.register_on_leaveplayer(on_leaveplayer)
|
||||||
|
|
||||||
minetest.register_on_dignode(on_dig)
|
minetest.register_on_dignode(on_dig)
|
||||||
minetest.register_on_placenode(on_place)
|
minetest.register_on_placenode(on_place)
|
||||||
@ -395,13 +403,16 @@ rp_formspec.register_invtab("rp_achievements:achievements", {
|
|||||||
tooltip = S("Achievements"),
|
tooltip = S("Achievements"),
|
||||||
})
|
})
|
||||||
|
|
||||||
function achievements.get_formspec(name, row)
|
function achievements.get_formspec(name)
|
||||||
row = row or 1
|
local row = 1
|
||||||
|
|
||||||
local player = minetest.get_player_by_name(name)
|
local player = minetest.get_player_by_name(name)
|
||||||
if not player then
|
if not player then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
if selected_row[name] then
|
||||||
|
row = selected_row[name]
|
||||||
|
end
|
||||||
local states = get_achievement_states(player)
|
local states = get_achievement_states(player)
|
||||||
|
|
||||||
local achievement_list = ""
|
local achievement_list = ""
|
||||||
@ -562,6 +573,9 @@ local function receive_fields(player, form_name, fields)
|
|||||||
|
|
||||||
if selection.type == "CHG" or selection.type == "DCL" then
|
if selection.type == "CHG" or selection.type == "DCL" then
|
||||||
selected = selection.row
|
selected = selection.row
|
||||||
|
selected_row[name] = selected
|
||||||
|
elseif selection.type == "INV" then
|
||||||
|
selected_row[name] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user