1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-02-03 13:12:11 +02:00
ComfyFactorio/utils/datastore/message_on_join_data.lua
2024-06-04 23:27:12 +02:00

83 lines
2.4 KiB
Lua

-- created by Gerkiz for ComfyFactorio
local Token = require 'utils.token'
local Server = require 'utils.server'
local Event = require 'utils.event'
local Commands = require 'utils.commands'
local message_dataset = 'regulars'
local set_data = Server.set_data
local try_get_data = Server.try_get_data
local Public = {}
local fetch =
Token.register(
function (data)
local key = data.key
local value = data.value
local player = game.players[key]
if not player or not player.valid then
return
end
if type(value) == 'table' then
game.print('>> ' .. player.name .. ' << ' .. value.msg, value.color) -- we want the player name to be printed.
end
end
)
--- Tries to get data from the webpanel and applies the value to the player.
-- @param data_set player token
function Public.fetch(key)
local secs = Server.get_current_time()
if not secs then
local player = game.players[key]
if not player or not player.valid then
return
end
return
else
try_get_data(message_dataset, key, fetch)
end
end
Commands.new('save-message', 'Sets your custom join message. "{name}" will be replaced with your username.')
:require_backend()
:add_parameter('message', false, 'string')
:callback(
function (player, message)
if message == '' or message == 'Name' then
player.print('You did not specify a message.')
return false
end
if string.len(message) > 64 then
player.print('Message is too long. 64 characters maximum.')
return false
end
set_data(message_dataset, player.name, { msg = message, color = player.color })
player.print('You message has been saved.')
end
)
Commands.new('remove-message', 'Removes your custom join message.')
:require_backend()
:callback(
function (player)
set_data(message_dataset, player.name, nil)
player.print('Your message has been removed.')
end
)
Event.add(
defines.events.on_player_joined_game,
function (event)
local player = game.get_player(event.player_index)
if not player or not player.valid then
return
end
Public.fetch(player.name)
end
)
return Public