Merge pull request #180 from bbassie/feature/tag-color

Add command /tag-color
This commit is contained in:
Cooldude2606
2020-11-06 21:48:25 +00:00
committed by GitHub
5 changed files with 56 additions and 5 deletions

View File

@@ -0,0 +1,15 @@
--- This will make commands only work when a valid color from the presets has been selected
-- @config Commands-Color-Parse
local Commands = require 'expcore.commands' --- @dep expcore.commands
local Colours = require 'utils.color_presets' --- @dep utils.color_presets
Commands.add_parse('color',function(input, _, reject)
if not input then return end
local color = Colours[input]
if not color then
return reject{'expcore-commands.reject-color'}
else
return input
end
end)

View File

@@ -153,6 +153,7 @@ Roles.new_role('Supporter','Sup')
:set_flag('is_spectator')
:set_parent('Veteran')
:allow{
'command/tag-color',
'command/jail',
'command/unjail',
'command/join-message'

View File

@@ -28,6 +28,9 @@ UsesServerUps-value-tooltip=Change by using /server-ups
Tag=Player Tag
Tag-tooltip=The tag shown after your name
Tag-value-tooltip=Change by using /tag
TagColor=Player Tag color
TagColor-tooltip=The color of the tag shown after your name
TagColor-value-tooltip=Change by using /tag-color
Bonus=Player Bonus
Bonus-tooltip=The bonus given to your character
Bonus-value-tooltip=Change by using /bonus

View File

@@ -16,6 +16,7 @@ reject-player-online=Player is offline.
reject-player-alive=Player is dead.
reject-force=Invalid Force Name.
reject-surface=Invalid Surface Name.
reject-color=Invalid Color Name.
invalid-inputs=Invalid Input, /__1__ __2__
invalid-param=Invalid Param "__1__"; __2__
command-help=__1__ - __2__

View File

@@ -7,22 +7,43 @@ local Commands = require 'expcore.commands' --- @dep expcore.commands
local Roles = require 'expcore.roles' --- @dep expcore.roles
require 'config.expcore.command_general_parse'
require 'config.expcore.command_role_parse'
require 'config.expcore.command_color_parse'
--- Stores the tag for a player
local PlayerData = require 'expcore.player_data' --- @dep expcore.player_data
local PlayerTags = PlayerData.Settings:combine('Tag')
local PlayerTagColors = PlayerData.Settings:combine('TagColor')
PlayerTags:set_metadata{
permission = 'command/tag'
}
PlayerTagColors:set_metadata{
permission = 'command/tag-color'
}
local set_tag = function (player, tag, color)
if tag == nil or tag == '' then
player.tag = ''
elseif color then
player.tag = '- [color='.. color ..']'..tag..'[/color]'
else
player.tag = '- '..tag
end
end
--- When your tag is updated then apply the changes
PlayerTags:on_update(function(player_name, player_tag)
local player = game.players[player_name]
if player_tag == nil or player_tag == '' then
player.tag = ''
else
player.tag = '- '..player_tag
end
local player_tag_color = PlayerTagColors:get(player)
set_tag(player, player_tag, player_tag_color)
end)
--- When your tag color is updated then apply the changes
PlayerTagColors:on_update(function(player_name, player_tag_color)
local player = game.players[player_name]
local player_tag = PlayerTags:get(player)
set_tag(player, player_tag, player_tag_color)
end)
--- Sets your player tag.
@@ -35,6 +56,16 @@ Commands.new_command('tag', 'Sets your player tag.')
PlayerTags:set(player, tag)
end)
--- Sets your player tag color.
-- @command tag
-- @tparam string color name.
Commands.new_command('tag-color', 'Sets your player tag color.')
:add_param('color', false, 'color')
:enable_auto_concat()
:register(function(player, color)
PlayerTagColors:set(player, color)
end)
--- Clears your tag. Or another player if you are admin.
-- @command tag-clear
-- @tparam[opt=self] LuaPlayer player the player to remove the tag from, nil will apply to self