mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-08 00:39:30 +02:00
160 lines
5.8 KiB
Lua
160 lines
5.8 KiB
Lua
local event = require 'utils.event'
|
|
local session = require 'utils.session_data'
|
|
local font_color = {r = 150, g = 100, b = 255, a = 255}
|
|
local font = "default-game"
|
|
|
|
local brain = {
|
|
[1] = {"Our Discord server is at: https://getcomfy.eu/discord"},
|
|
[2] = {"Need an admin? Type @Mods in game chat to notify moderators,", "or put a message in the discord help channel."},
|
|
[3] = {"Scenario repository for download:", "https://github.com/M3wM3w/ComfyFactorio"},
|
|
}
|
|
|
|
local links = {
|
|
["admin"] = brain[2],
|
|
["administrator"] = brain[2],
|
|
["discord"] = brain[1],
|
|
["download"] = brain[3],
|
|
["github"] = brain[3],
|
|
["greifer"] = brain[2],
|
|
["grief"] = brain[2],
|
|
["griefer"] = brain[2],
|
|
["griefing"] = brain[2],
|
|
["mod"] = brain[2],
|
|
["moderator"] = brain[2],
|
|
["scenario"] = brain[3],
|
|
["stealing"] = brain[2],
|
|
["stole"] = brain[2],
|
|
["troll"] = brain[2],
|
|
["trolling"] = brain[2],
|
|
}
|
|
|
|
local function on_player_created(event)
|
|
local player = game.players[event.player_index]
|
|
player.print("[font=" .. font .. "]" .. "Join the comfy discord >> getcomfy.eu/discord" .. "[/font]", font_color)
|
|
end
|
|
|
|
commands.add_command(
|
|
'trust',
|
|
'Promotes a player to trusted!',
|
|
function(cmd)
|
|
local trusted = session.get_trusted_table()
|
|
local server = 'server'
|
|
local player = game.player
|
|
local p
|
|
|
|
if player then
|
|
if player ~= nil then
|
|
p = player.print
|
|
if not player.admin then
|
|
p("You're not admin!", {r = 1, g = 0.5, b = 0.1})
|
|
return
|
|
end
|
|
else
|
|
p = log
|
|
end
|
|
|
|
if cmd.parameter == nil then return end
|
|
local target_player = game.players[cmd.parameter]
|
|
if target_player then
|
|
if trusted[target_player.name] == true then game.print(target_player.name .. " is already trusted!") return end
|
|
trusted[target_player.name] = true
|
|
game.print(target_player.name .. " is now a trusted player.", {r=0.22, g=0.99, b=0.99})
|
|
for _, a in pairs(game.connected_players) do
|
|
if a.admin == true and a.name ~= player.name then
|
|
a.print("[ADMIN]: " .. player.name .. " trusted " .. target_player.name, {r = 1, g = 0.5, b = 0.1})
|
|
end
|
|
end
|
|
end
|
|
else
|
|
if cmd.parameter == nil then return end
|
|
local target_player = game.players[cmd.parameter]
|
|
if target_player then
|
|
if trusted[target_player.name] == true then game.print(target_player.name .. " is already trusted!") return end
|
|
trusted[target_player.name] = true
|
|
game.print(target_player.name .. " is now a trusted player.", {r=0.22, g=0.99, b=0.99})
|
|
end
|
|
end
|
|
end
|
|
)
|
|
|
|
commands.add_command(
|
|
'untrust',
|
|
'Demotes a player from trusted!',
|
|
function(cmd)
|
|
local trusted = session.get_trusted_table()
|
|
local server = 'server'
|
|
local player = game.player
|
|
local p
|
|
|
|
if player then
|
|
if player ~= nil then
|
|
p = player.print
|
|
if not player.admin then
|
|
p("You're not admin!", {r = 1, g = 0.5, b = 0.1})
|
|
return
|
|
end
|
|
else
|
|
p = log
|
|
end
|
|
|
|
if cmd.parameter == nil then return end
|
|
local target_player = game.players[cmd.parameter]
|
|
if target_player then
|
|
if trusted[target_player.name] == false then game.print(target_player.name .. " is already untrusted!") return end
|
|
trusted[target_player.name] = false
|
|
game.print(target_player.name .. " is now untrusted.", {r=0.22, g=0.99, b=0.99})
|
|
for _, a in pairs(game.connected_players) do
|
|
if a.admin == true and a.name ~= player.name then
|
|
a.print("[ADMIN]: " .. player.name .. " untrusted " .. target_player.name, {r = 1, g = 0.5, b = 0.1})
|
|
end
|
|
end
|
|
end
|
|
else
|
|
if cmd.parameter == nil then return end
|
|
local target_player = game.players[cmd.parameter]
|
|
if target_player then
|
|
if trusted[target_player.name] == false then game.print(target_player.name .. " is already untrusted!") return end
|
|
trusted[target_player.name] = false
|
|
game.print(target_player.name .. " is now untrusted.", {r=0.22, g=0.99, b=0.99})
|
|
end
|
|
end
|
|
end
|
|
)
|
|
|
|
local function process_bot_answers(event)
|
|
local player = game.players[event.player_index]
|
|
if player.admin == true then return end
|
|
local message = event.message
|
|
message = string.lower(message)
|
|
for word in string.gmatch(message, "%g+") do
|
|
if links[word] then
|
|
local player = game.players[event.player_index]
|
|
for _, bot_answer in pairs(links[word]) do
|
|
player.print("[font=" .. font .. "]" .. bot_answer .. "[/font]", font_color)
|
|
end
|
|
return
|
|
end
|
|
end
|
|
end
|
|
|
|
local function on_console_chat(event)
|
|
if not event.player_index then return end
|
|
process_bot_answers(event)
|
|
end
|
|
|
|
--share vision of silent-commands with other admins
|
|
local function on_console_command(event)
|
|
if event.command ~= "silent-command" then return end
|
|
if not event.player_index then return end
|
|
local player = game.players[event.player_index]
|
|
for _, p in pairs(game.connected_players) do
|
|
if p.admin == true and p.name ~= player.name then
|
|
p.print(player.name .. " did a silent-command: " .. event.parameters, {r=0.22, g=0.99, b=0.99})
|
|
end
|
|
end
|
|
end
|
|
|
|
event.add(defines.events.on_player_created, on_player_created)
|
|
event.add(defines.events.on_console_chat, on_console_chat)
|
|
event.add(defines.events.on_console_command, on_console_command)
|