mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-02-03 13:12:11 +02:00
83 lines
2.4 KiB
Lua
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
|