From 61a3f92982bd3d2389c43b045087520eb358d25b Mon Sep 17 00:00:00 2001 From: badgamernl Date: Wed, 4 Nov 2020 00:38:01 +0100 Subject: [PATCH] Add command /tag-color --- config/expcore/command_color_parse.lua | 16 ++++++++++ locale/en/data.cfg | 3 ++ locale/en/expcore.cfg | 1 + modules/data/tag.lua | 41 ++++++++++++++++++++++---- 4 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 config/expcore/command_color_parse.lua diff --git a/config/expcore/command_color_parse.lua b/config/expcore/command_color_parse.lua new file mode 100644 index 00000000..9b2ae5a6 --- /dev/null +++ b/config/expcore/command_color_parse.lua @@ -0,0 +1,16 @@ +--- 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, player, reject) + if not input then return end + local color = Colours[input] + if not color then + player.print("invalid") + return reject{'expcore-commands.reject-color'} + else + return input + end +end) \ No newline at end of file diff --git a/locale/en/data.cfg b/locale/en/data.cfg index 5c52ed15..fea0aabe 100644 --- a/locale/en/data.cfg +++ b/locale/en/data.cfg @@ -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 diff --git a/locale/en/expcore.cfg b/locale/en/expcore.cfg index 3c3280d6..bdc4907d 100644 --- a/locale/en/expcore.cfg +++ b/locale/en/expcore.cfg @@ -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__ diff --git a/modules/data/tag.lua b/modules/data/tag.lua index 27190b7b..5c332a00 100644 --- a/modules/data/tag.lua +++ b/modules/data/tag.lua @@ -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