Map_ID updates to new system so stats work.

master
Nathan Salapat 2022-05-20 22:01:30 -05:00
parent 5a66495b13
commit 89c7571db4
5 changed files with 37 additions and 11 deletions

View File

@ -61,6 +61,9 @@ minetest.register_node('furniture:news_stand', {
})
local news = [[
5/20/22
Claimed buttons can be updated to a new ID by editing the button. Stats will also be migrated over!
5/18/22
Vents have been added. Only traitors can use then when playing a level.

View File

@ -80,7 +80,7 @@ minetest.register_node('lobby:button_0', {
light_source = 5,
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string('infotext', 'Unconfigured/Claimed button')
meta:set_string('infotext', 'Unconfigured/Unclaimed button')
meta:set_string('name', '')
meta:set_string('player_count', '')
meta:set_string('xp', '')
@ -139,12 +139,7 @@ minetest.register_node('lobby:button_0', {
if lobby.take_xp(sender, 15) then
minetest.show_formspec(player_name, 'lobby:get_started', lobby.getting_started)
meta:set_string('owner', player_name)
local i = 1
local map_id = player_name..'_'..i
while lobby.savedata.IDs[map_id] do
i = i + 1
map_id = player_name..'_'..i
end
local map_id = lobby.create_id(player_name)
lobby.savedata.IDs[map_id] = true
meta:set_string('id', map_id)
local pos_string = random_pos()
@ -165,6 +160,26 @@ minetest.register_node('lobby:button_0', {
end
if owner == player_name or minetest.check_player_privs(sender, {server = true}) then
local map_id = meta:get_string('id')
if not string.find(map_id, owner) then --Using old player assigned IDs
local map_id_new = lobby.create_id(owner)
lobby.savedata.IDs[map_id_new] = true
meta:set_string('id', map_id_new)
if lobby.savedata.stats[map_id] then
local stats = lobby.savedata.stats[map_id] or {}
local stats_new = {}
stats_new.solo_play = stats.solo_play or 0
stats_new.multi_play = stats.multi_play or 0
stats_new.winner_traitor = stats.winner_traitor or 0
stats_new.winner_team = stats.winner_team or 0
stats_new.player_count = stats.player_count or 0
stats_new.max_players = stats.max_players or 0
lobby.savedata.stats[map_id_new] = stats_new
lobby.savedata.IDs[map_id] = nil
lobby.savedata.stats[map_id] = nil
lobby.savedata.data[map_id] = nil
end
map_id = map_id_new
end
if fields.solo then
meta:set_string('solo', fields.solo)
elseif fields ['save'] then
@ -221,7 +236,7 @@ minetest.register_node('lobby:button_0', {
end
elseif fields ['discard'] then
meta:set_string('owner', '')
meta:set_string('infotext', '')
meta:set_string('infotext', 'Unconfigured/Unclaimed Button')
meta:set_string('id', '')
meta:set_string('name', '')
meta:set_string('player_count', '')

View File

@ -301,3 +301,12 @@ function lobby.player_to_builder(player)
inv:set_list('main', old_inv)
end
function lobby.create_id(player_name)
local i = 1
local map_id = player_name..'_'..i
while lobby.savedata.IDs[map_id] do
i = i + 1
map_id = player_name..'_'..i
end
return map_id
end

View File

@ -503,7 +503,6 @@ tdc.actions = {
local modes = ' builder, ghost, player, solo, traitor'
if string.find(modes, params) then
local mode = string.sub(params, 2, -1)
print (mode)
local player = minetest.get_player_by_name(td_user)
local player_attributes = player:get_meta()
player_attributes:set_string('mode', mode)

View File

@ -65,8 +65,8 @@ if tubelib2.version < 1.7 then
error('Vents requires tubelib2 version 1.7 or newer!!!')
else
-- Configuration settings
vents.free_tube_placement_enabled = minetest.settings:get_bool('hyperloop_free_tube_placement_enabled', true)
vents.subnet_enabled = minetest.settings:get_bool('hyperloop_subnet_enabled', true)
vents.free_tube_placement_enabled = minetest.settings:get_bool('vents_free_tube_placement_enabled', true)
vents.subnet_enabled = minetest.settings:get_bool('vents_subnet_enabled', true)
dofile(minetest.get_modpath('vents') .. '/network.lua')
dofile(minetest.get_modpath('vents') .. '/data_base.lua')