mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-02-01 13:08:05 +02:00
Minor changes
Instead of player tables, the values are stored as numbers inside playersession. Added also if player is playing singleplayer then create the player.name is directly on player_join created in the playsession table.
This commit is contained in:
parent
fc7eccf070
commit
34fd511970
@ -87,7 +87,7 @@ end
|
||||
local function get_rank(player)
|
||||
local play_table = play_time.get_session_table()
|
||||
|
||||
local t = play_table[player.name][1]
|
||||
local t = play_table[player.name]
|
||||
|
||||
|
||||
local m = (player.online_time + t) / 3600
|
||||
@ -138,7 +138,7 @@ local function get_sorted_list(sort_by)
|
||||
player_list[i].name = player.name
|
||||
|
||||
|
||||
t = play_table[player.name][1]
|
||||
t = play_table[player.name]
|
||||
|
||||
player_list[i].total_played_time = get_formatted_playtime(t + player.online_time)
|
||||
player_list[i].total_played_ticks = t + player.online_time
|
||||
|
@ -9,7 +9,7 @@ local table = require 'utils.table'
|
||||
local Print = require('utils.print_override')
|
||||
local raw_print = Print.raw_print
|
||||
|
||||
local session_data_set = 'player_session'
|
||||
local session_data_set = 'sessions'
|
||||
local playsession = {}
|
||||
local done_fetching = nil
|
||||
local set_data = Server.set_data
|
||||
@ -36,7 +36,7 @@ printinfo =
|
||||
end
|
||||
|
||||
--- Sends back data to data.key with data.value
|
||||
local callback =
|
||||
local store =
|
||||
Token.register(
|
||||
function(data)
|
||||
local p_name = data.key
|
||||
@ -45,46 +45,44 @@ local callback =
|
||||
local change = player.online_time
|
||||
local value = data.value
|
||||
if value then
|
||||
set_data(session_data_set, name, {value[1] + change})
|
||||
set_data(session_data_set, name, value + change)
|
||||
else
|
||||
set_data(session_data_set, name, {change})
|
||||
set_data(session_data_set, name, change)
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
--- Writes the data called back from the server into the session table
|
||||
local sync_session_callback =
|
||||
|
||||
local retrieve =
|
||||
Token.register(
|
||||
function(data)
|
||||
for k, v in pairs(data.entries) do
|
||||
playsession[k] = v
|
||||
local p_name = data.key
|
||||
local player = game.get_player(p_name)
|
||||
local name = player.name
|
||||
local change = player.online_time
|
||||
local value = data.value
|
||||
if value then
|
||||
playsession[name] = value
|
||||
else
|
||||
playsession[name] = change
|
||||
end
|
||||
raw_print("[DATA-TRACKED] Done fetching all data.")
|
||||
done_fetching = true
|
||||
end
|
||||
)
|
||||
|
||||
local function tick()
|
||||
for _, p in pairs(game.connected_players) do
|
||||
local session = playsession[p.name]
|
||||
|
||||
if session then
|
||||
Public.update(p.name)
|
||||
else
|
||||
Public.set(p.name, {p.online_time})
|
||||
end
|
||||
Public.update(p.name)
|
||||
end
|
||||
end
|
||||
|
||||
--- Tries to get data from the webpanel and updates the dataset with values.
|
||||
function Public.update(key)
|
||||
try_get_data(session_data_set, key, callback)
|
||||
try_get_data(session_data_set, key, store)
|
||||
end
|
||||
|
||||
--- Stores data in the webpanel
|
||||
-- @param set(key, value)
|
||||
function Public.set(key, value)
|
||||
set_data(session_data_set, key, value)
|
||||
--- Tries to get data from the webpanel and updates the local table with values.
|
||||
function Public.fetch(key)
|
||||
try_get_data(session_data_set, key, retrieve)
|
||||
end
|
||||
|
||||
--- Checks if a player exists within the table
|
||||
@ -94,11 +92,6 @@ function Public.exists(player_name)
|
||||
return playsession[player_name] ~= nil
|
||||
end
|
||||
|
||||
--- Signals the server to retrieve the session data-set
|
||||
function Public.sync_session()
|
||||
Server.try_get_all_data(session_data_set, sync_session_callback)
|
||||
end
|
||||
|
||||
--- Prints a list of all players in the player_session table.
|
||||
function Public.print_sessions()
|
||||
local result = {}
|
||||
@ -117,12 +110,6 @@ function Public.get_session_table()
|
||||
return playsession
|
||||
end
|
||||
|
||||
Event.add(
|
||||
Server.events.on_server_started,
|
||||
function()
|
||||
Public.sync_session()
|
||||
end
|
||||
)
|
||||
Event.add(
|
||||
defines.events.on_player_joined_game,
|
||||
function(event)
|
||||
@ -130,11 +117,13 @@ Event.add(
|
||||
if not player then
|
||||
return
|
||||
end
|
||||
|
||||
local session = playsession[player.name]
|
||||
|
||||
if not session then
|
||||
playsession[player.name] = {player.online_time} return end
|
||||
if game.is_multiplayer() then
|
||||
if not playsession[player.name] then
|
||||
Public.fetch(player.name)
|
||||
end
|
||||
else
|
||||
playsession[player.name] = player.online_time
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
@ -145,17 +134,9 @@ Event.add(
|
||||
if not player then
|
||||
return
|
||||
end
|
||||
|
||||
local session = playsession[player.name]
|
||||
|
||||
if done_fetching then
|
||||
if session then
|
||||
Public.update(player.name)
|
||||
else
|
||||
Public.set(player.name, {player.online_time})
|
||||
end
|
||||
if game.is_multiplayer() then
|
||||
Public.update(player.name)
|
||||
end
|
||||
|
||||
end
|
||||
)
|
||||
|
||||
@ -168,4 +149,4 @@ Server.on_data_set_changed(
|
||||
end
|
||||
)
|
||||
|
||||
return Public
|
||||
return Public
|
Loading…
x
Reference in New Issue
Block a user