mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-27 11:35:22 +09:00
* Update admin-chat.lua * Update admin-markers.lua * Update artillery.lua * Update bot-queue.lua * Update cheat-mode.lua * Update clear-inventory.lua * Update connect.lua * Update debug.lua * Update enemy.lua * Update find.lua * Update friendly-fire.lua * Update help.lua * Update home.lua * Update interface.lua * Update jail.lua * Update kill.lua * Update last-location.lua * Update me.lua * Update pollution.lua * Update protection.lua * Update rainbow.lua * Update ratio.lua * Update repair.lua * Update reports.lua * Update research.lua * Update roles.lua * Update roles.lua * Update search.lua * Update spawn.lua * Update spectate.lua * Update speed.lua * Update surface-clearing.lua * Update teleport.lua * Update train.lua * Update vlayer.lua * Update warnings.lua * Update waterfill.lua * Update gui.cfg * Update gui.cfg * Update gui.cfg * Update commands.cfg * Update commands.cfg * Update commands.cfg * Update connect.lua * Update cheat-mode.lua * Update commands.cfg * Update commands.cfg * Update commands.cfg * Update commands.cfg * Update commands.cfg * Update commands.cfg * Update admin-chat.lua * Update admin-markers.lua * Update vlayer.lua * Update artillery.lua * Update bot-queue.lua * Update cheat-mode.lua * Update clear-inventory.lua * Update connect.lua * Update debug.lua * Update enemy.lua * Update find.lua * Update friendly-fire.lua * Update help.lua * Update home.lua * Update interface.lua * Update jail.lua * Update kill.lua * Update last-location.lua * Update me.lua * Update pollution.lua * Update protection.lua * Update rainbow.lua * Update ratio.lua * Update repair.lua * Update reports.lua * Update research.lua * Update roles.lua * Update search.lua * Update spawn.lua * Update spectate.lua * Update speed.lua * Update surface-clearing.lua * Update teleport.lua * Update train.lua * Update warnings.lua * Update waterfill.lua * Update gui.cfg * Update gui.cfg * Update gui.cfg * Update gui.cfg * Update gui.cfg * Update commands.cfg * Update commands.cfg * Update addons.cfg * Update addons.cfg * Update data.cfg * Update data.cfg * Update gui.cfg * Update gui.cfg * Update data.cfg * Update data.cfg * Update gui.cfg * Update gui.cfg * Update gui.cfg * Update gui.cfg * Update gui.cfg * Update gui.cfg * Update commands.lua * Update admin-chat.lua * Update admin-markers.lua * Update artillery.lua * Update bot-queue.lua * Update cheat-mode.lua * Update clear-inventory.lua * Update connect.lua * Update debug.lua * Update enemy.lua * Update find.lua * Update help.lua * Update interface.lua * Update home.lua * Update jail.lua * Update kill.lua * Update last-location.lua * Update me.lua * Update pollution.lua * Update protection.lua * Update rainbow.lua * Update ratio.lua * Update repair.lua * Update reports.lua * Update research.lua * Update roles.lua * Update search.lua * Update spawn.lua * Update spectate.lua * Update speed.lua * Update surface-clearing.lua * Update teleport.lua * Update train.lua * Update vlayer.lua * Update warnings.lua * Update waterfill.lua * Update commands.cfg * Update commands.cfg * Update enemy.lua * Update friendly-fire.lua * Update roles.lua * Update spectate.lua * Update spectate.lua
63 lines
2.0 KiB
Lua
63 lines
2.0 KiB
Lua
--[[-- Commands Module - Rainbow
|
|
- Adds a command that prints your message in rainbow font
|
|
@commands Rainbow
|
|
]]
|
|
|
|
local Commands = require 'expcore.commands' --- @dep expcore.commands
|
|
local format_chat_colour = _C.format_chat_colour --- @dep expcore.common
|
|
|
|
local function step_component(c1, c2)
|
|
if c1 < 0 then
|
|
return 0, c2+c1
|
|
elseif c1 > 1 then
|
|
return 1, c2-c1+1
|
|
else
|
|
return c1, c2
|
|
end
|
|
end
|
|
|
|
local function step_color(color)
|
|
color.r, color.g = step_component(color.r, color.g)
|
|
color.g, color.b = step_component(color.g, color.b)
|
|
color.b, color.r = step_component(color.b, color.r)
|
|
color.r = step_component(color.r, 0)
|
|
return color
|
|
end
|
|
|
|
local function next_color(color, step)
|
|
step = step or 0.1
|
|
local new_color = {r=0, g=0, b=0}
|
|
if color.b == 0 and color.r ~= 0 then
|
|
new_color.r = color.r-step
|
|
new_color.g = color.g+step
|
|
elseif color.r == 0 and color.g ~= 0 then
|
|
new_color.g = color.g-step
|
|
new_color.b = color.b+step
|
|
elseif color.g == 0 and color.b ~= 0 then
|
|
new_color.b = color.b-step
|
|
new_color.r = color.r+step
|
|
end
|
|
return step_color(new_color)
|
|
end
|
|
|
|
--- Sends an rainbow message in the chat
|
|
-- @command rainbow
|
|
-- @tparam string message the message that will be printed in chat
|
|
Commands.new_command('rainbow', {'expcom-rainbow.description'}, 'Sends an rainbow message in the chat')
|
|
:add_param('message', false)
|
|
:enable_auto_concat()
|
|
:register(function(player, message)
|
|
local player_name = player and player.name or '<Server>'
|
|
local player_color = player and player.color or nil
|
|
local color_step = 3/message:len()
|
|
if color_step > 1 then color_step = 1 end
|
|
local current_color = {r=1, g=0, b=0}
|
|
local output = format_chat_colour(player_name..': ', player_color)
|
|
output = output..message:gsub('%S', function(letter)
|
|
local rtn = format_chat_colour(letter, current_color)
|
|
current_color = next_color(current_color, color_step)
|
|
return rtn
|
|
end)
|
|
game.print(output)
|
|
end)
|