Advertisement
isuelt

NameChange.lua

Apr 5th, 2022
775
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.94 KB | None | 0 0
  1. PLUGIN.Title = "Name Change"
  2. PLUGIN.Version = V(0, 1, 5)
  3. PLUGIN.Description = "Instantly rename any player and keep it that way."
  4. PLUGIN.Author = "Wulf / Luke Spragg"
  5. PLUGIN.Url = "http://oxidemod.org/plugins/1184/"
  6. PLUGIN.ResourceId = 1184
  7.  
  8. local debug = false
  9.  
  10. --[[ Do NOT edit the config here, instead edit NameChange.json in oxide/config ! ]]
  11.  
  12. local messages, settings
  13. function PLUGIN:LoadDefaultConfig()
  14.     self.Config.Messages = self.Config.Messages or {}
  15.     messages = self.Config.Messages
  16.     messages.ChatHelp = messages.ChatHelp or "Use '/rename player name' to rename a player"
  17.     messages.ConsoleHelp = messages.ConsoleHelp or "Use 'rename player name' to rename a player"
  18.     messages.InvalidTarget = messages.InvalidTarget or "Invalid player! Please try again"
  19.     messages.NoPermission = messages.NoPermission or "You do not have permission to use this command!"
  20.     messages.PlayerRenamed = messages.PlayerRenamed or "{player} renamed to {name}!"
  21.     messages.PlayerReset = messages.PlayerReset or "{player}'s name reset to {name}!"
  22.     messages.YouRenamed = messages.YouRenamed or "You were renamed to {name} by {player}!"
  23.     messages.YouReset = messages.YouReset or "Your name has been reset to {name}!"
  24.  
  25.     self.Config.Settings = self.Config.Settings or {}
  26.     settings = self.Config.Settings
  27.     settings.Command = settings.Command or "rename"
  28.     settings.NotifyPlayer = settings.NotifyPlayer or "true"
  29.  
  30.     self:SaveConfig()
  31. end
  32.  
  33. local names
  34. local displayName = global.BasePlayer._type:GetField("_displayName", rust.PrivateBindingFlag())
  35.  
  36. function PLUGIN:Init()
  37.     self:LoadDefaultConfig()
  38.  
  39.     names = datafile.GetDataTable("NameChange") or {}
  40.  
  41.     command.AddChatCommand(settings.Command, self.Plugin, "ChatCommand")
  42.     command.AddConsoleCommand("global." .. settings.Command, self.Plugin, "ConsoleCommand")
  43.  
  44.     permission.RegisterPermission("rename.players", self.Plugin)
  45. end
  46.  
  47. local function Print(self, message) print("[" .. self.Title .. "] " .. message) end
  48.  
  49. local function ParseString(message, values)
  50.     for key, value in pairs(values) do
  51.         value = tostring(value):gsub("[%-?*+%[%]%(%)%%]", "%%%%%0")
  52.         message = message:gsub("{" .. key .. "}", value)
  53.     end
  54.     return message
  55. end
  56.  
  57. local function HasPermission(steamId, perm)
  58.     if permission.UserHasPermission(steamId, perm) then return true end
  59.     return false
  60. end
  61.  
  62. local function FindPlayer(self, player, target)
  63.     local target = global.BasePlayer.Find(target)
  64.     if not target then
  65.         if player then
  66.             rust.SendChatMessage(player, messages.InvalidTarget)
  67.         else
  68.             Print(self, messages.InvalidTarget)
  69.         end
  70.         return
  71.     end
  72.     return target
  73. end
  74.  
  75. function PLUGIN:OnUserApprove(connection)
  76.     local steamId = rust.UserIDFromConnection(connection)
  77.  
  78.     if debug then Print(self, connection.username .. " (" .. steamId .. ")") end
  79.  
  80.     for key, _ in pairs(names) do
  81.         if steamId == key then
  82.             connection.username = names[steamId].Rename
  83.         end
  84.     end
  85.  
  86.     if debug then Print(self, connection.username .. " (" .. steamId .. ")") end
  87. end
  88.  
  89. function PLUGIN:Rename(player, target, arg)
  90.     if player and not HasPermission(rust.UserIDFromPlayer(player), "rename.players") then
  91.         if player then
  92.             rust.SendChatMessage(player, messages.NoPermission)
  93.         else
  94.             Print(self, messages.NoPermission)
  95.         end
  96.         return
  97.     end
  98.  
  99.     local target = FindPlayer(self, player, target)
  100.     if target then
  101.         local source
  102.         if not player then source = "Admin" else source = player.displayName end
  103.  
  104.         local oldName = target.displayName
  105.         local steamId = rust.UserIDFromPlayer(target)
  106.  
  107.         if debug then Print(self, oldName .. " (" .. steamId .. ")") end
  108.  
  109.         if names[steamId] and arg == "reset" then
  110.             displayName:SetValue(target, names[steamId].Original)
  111.             names[steamId] = nil
  112.             datafile.SaveDataTable("NameChange")
  113.  
  114.             local message = ParseString(messages.PlayerReset, { player = oldName, name = target.displayName })
  115.             if player then
  116.                 rust.SendChatMessage(player, message)
  117.             else
  118.                 Print(self, message)
  119.             end
  120.         else
  121.             names[steamId] = names[steamId] or {}
  122.             names[steamId].Original = target.displayName
  123.             names[steamId].Rename = arg
  124.             datafile.SaveDataTable("NameChange")
  125.             displayName:SetValue(target, arg)
  126.  
  127.             if settings.NotifyPlayer == "true" then
  128.                 local message = ParseString(messages.YouRenamed, { player = source, name = arg })
  129.                 if player then
  130.                     rust.SendChatMessage(target, message)
  131.                 end
  132.             end
  133.  
  134.             local message = ParseString(messages.PlayerRenamed, { player = oldName, name = arg })
  135.             if player and player ~= target then
  136.                 rust.SendChatMessage(player, message)
  137.             else
  138.                 Print(self, message)
  139.             end
  140.         end
  141.  
  142.         if debug then Print(self, name .. " (" .. steamId .. ")") end
  143.     end
  144. end
  145.  
  146. function PLUGIN:ChatCommand(player, cmd, args)
  147.     if args.Length ~= 2 then
  148.         rust.SendChatMessage(player, messages.ChatHelp)
  149.         return
  150.     end
  151.  
  152.     self:Rename(player, args[0], args[1])
  153. end
  154.  
  155. function PLUGIN:ConsoleCommand(args)
  156.     local player
  157.     if args.connection then player = args.connection.player end
  158.  
  159.     if not args:HasArgs(2) then
  160.         if not player then
  161.             Print(self, messages.ConsoleHelp)
  162.         else
  163.             args:ReplyWith(messages.ConsoleHelp)
  164.         end
  165.         return
  166.     end
  167.  
  168.     self:Rename(player, args:GetString(0), args:GetString(1))
  169. end
  170.  
  171. function PLUGIN:SendHelpText(player)
  172.     if HasPermission(rust.UserIDFromPlayer(player), "rename.players") then
  173.         rust.SendChatMessage(player, messages.ChatHelp)
  174.     end
  175. end
  176.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement