• Rank Chat Tags for DarkRP
    34 replies, posted
Anyone know how to convert this code meant for sandbox gameplay to work with Darkrp. Im wanting it to add a prefix title to all admins. I need help making the hook and function compatible [LUA]if SERVER then hook.Add( "PlayerSay", "Tags", function(ply, text, team) local rank if ply:IsSuperAdmin() then rank = "Superadmin" elseif ply:IsAdmin() then rank = "Admin" else rank = "User" end umsg.Start("_Tagsay") umsg.String(text) umsg.String(rank) umsg.Entity(ply) umsg.End() return false end) end if CLIENT then usermessage.Hook("_Tagsay", function (um) local text = um:ReadString() local rank = um:ReadString() or "User" local ply = um:ReadEntity() if !rank or !text or !ply then return end ChatAdd(rank,text, ply) end) function ChatAdd(rank, text, ply) chat.AddText("",Color(255,125,0),"[",Color(125,0,0),rank,Color(255,125,0),"] ",Color(0,125,25),ply:Nick()..": ",Color(255,255,255),text) end end[/LUA] -- Thank you "science"
We don't need the sandbox code, we can make our own! It is very easy, could you please post your cl_init.lua?
[QUOTE=KyleWollasto;32228625]We don't need the sandbox code, we can make our own! It is very easy, could you please post your cl_init.lua?[/QUOTE] [LUA]GM.Version = "2.4.2" GM.Name = "DarkRP "..GM.Version GM.Author = "By Rickster, Updated: Pcwizdan, Sibre, philxyz, [GNC] Matt, Chrome Bolt, FPtje Falco, Eusion" require("datastream") DeriveGamemode("sandbox") util.PrecacheSound("earthquake.mp3") CUR = "$" HelpLabels = { } HelpCategories = { } -- Make sure the client sees the RP name where they expect to see the name local pmeta = FindMetaTable("Player") pmeta.SteamName = pmeta.Name function pmeta:Name() if not self or not self.IsValid or not ValidEntity(self) then return "" end self.DarkRPVars = self.DarkRPVars or {} if GetConVarNumber("allowrpnames") == 0 then return self:SteamName() end return self.DarkRPVars.rpname or self:SteamName() end pmeta.GetName = pmeta.Name pmeta.Nick = pmeta.Name -- End local ENT = FindMetaTable("Entity") ENT.OldIsVehicle = ENT.IsVehicle function ENT:IsVehicle() if type(self) ~= "Entity" then return false end local class = string.lower(self:GetClass()) return ENT:OldIsVehicle() or string.find(class, "vehicle") -- Ent:IsVehicle() doesn't work correctly clientside: /* ] lua_run_cl print(LocalPlayer():GetEyeTrace().Entity) > Entity [128][prop_vehicle_jeep_old] ] lua_run_cl print(LocalPlayer():GetEyeTrace().Entity:IsVehicle()) > false */ end function GM:DrawDeathNotice(x, y) if GetConVarNumber("deathnotice") ~= 1 then return end self.BaseClass:DrawDeathNotice(x, y) end local function DisplayNotify(msg) local txt = msg:ReadString() GAMEMODE:AddNotify(txt, msg:ReadShort(), msg:ReadLong()) surface.PlaySound("buttons/lightswitch2.wav") -- Log to client console print(txt) end usermessage.Hook("_Notify", DisplayNotify) local function LoadModules(msg) local num = msg:ReadShort() for n = 1, num do include(GAMEMODE.FolderName.."/gamemode/modules/" .. msg:ReadString()) end end usermessage.Hook("LoadModules", LoadModules) LocalPlayer().DarkRPVars = LocalPlayer().DarkRPVars or {} for k,v in pairs(player.GetAll()) do v.DarkRPVars = v.DarkRPVars or {} end include("help.lua") include("language_sh.lua") include("MakeThings.lua") include("cl_vgui.lua") include("entity.lua") include("cl_helpvgui.lua") include("showteamtabs.lua") include("DRPDermaSkin.lua") include("sh_animations.lua") include("cl_hud.lua") include("Workarounds.lua") include("FPP/sh_settings.lua") include("FPP/client/FPP_Menu.lua") include("FPP/client/FPP_HUD.lua") include("FPP/client/FPP_Buddies.lua") include("FPP/sh_CPPI.lua") surface.CreateFont("akbar", 20, 500, true, false, "AckBarWriting") -- Copy from FESP(made by FPtje Falco) -- This is no stealing since I made FESP myself. local vector = FindMetaTable("Vector") function vector:RPIsInSight(v, ply) ply = ply or LocalPlayer() local trace = {} trace.start = ply:EyePos() trace.endpos = self trace.filter = v trace.mask = -1 local TheTrace = util.TraceLine(trace) if TheTrace.Hit then return false, TheTrace.HitPos else return true, TheTrace.HitPos end end function GM:HUDShouldDraw(name) if name == "CHudHealth" or name == "CHudBattery" or name == "CHudSuitPower" or (HelpToggled and name == "CHudChat") then return false else return true end end function GM:HUDDrawTargetID() return false end function FindPlayer(info) local pls = player.GetAll() -- Find by Index Number (status in console) for k, v in pairs(pls) do if tonumber(info) == v:UserID() then return v end end -- Find by RP Name for k, v in pairs(pls) do if string.find(string.lower(v.DarkRPVars.rpname or ""), string.lower(tostring(info))) ~= nil then return v end end -- Find by Partial Nick for k, v in pairs(pls) do if string.find(string.lower(v:Name()), string.lower(tostring(info))) ~= nil then return v end end return nil end local GUIToggled = false local HelpToggled = false local HelpVGUI local function ToggleHelp() if not HelpVGUI then HelpVGUI = vgui.Create("HelpVGUI") end HelpToggled = not HelpToggled HelpVGUI.HelpX = HelpVGUI.StartHelpX HelpVGUI:SetVisible(HelpToggled) gui.EnableScreenClicker(HelpToggled) end usermessage.Hook("ToggleHelp", ToggleHelp) local function ToggleClicker() GUIToggled = not GUIToggled gui.EnableScreenClicker(GUIToggled) end usermessage.Hook("ToggleClicker", ToggleClicker) include("sh_commands.lua") include("shared.lua") include("addentities.lua") local function DoSpecialEffects(Type) local thetype = string.lower(Type:ReadString()) local toggle = tobool(Type:ReadString()) if toggle then if thetype == "motionblur" then hook.Add("RenderScreenspaceEffects", thetype, function() DrawMotionBlur(0.05, 1.00, 0.035) end) elseif thetype == "dof" then DOF_SPACING = 8 DOF_OFFSET = 9 DOF_Start() elseif thetype == "colormod" then hook.Add("RenderScreenspaceEffects", thetype, function() local settings = {} settings[ "$pp_colour_addr" ] = 0 settings[ "$pp_colour_addg" ] = 0 settings[ "$pp_colour_addb" ] = 0 settings[ "$pp_colour_brightness" ] = -1 settings[ "$pp_colour_contrast" ] = 0 settings[ "$pp_colour_colour" ] =0 settings[ "$pp_colour_mulr" ] = 0 settings[ "$pp_colour_mulg" ] = 0 settings[ "$pp_colour_mulb" ] = 0 DrawColorModify(settings) end) elseif thetype == "drugged" then hook.Add("RenderScreenspaceEffects", thetype, function() DrawSharpen(-1, 2) DrawMaterialOverlay("models/props_lab/Tank_Glass001", 0) DrawMotionBlur(0.13, 1, 0.00) end) elseif thetype == "deathpov" then hook.Add("CalcView", "rp_deathPOV", function(ply, origin, angles, fov) local Ragdoll = ply:GetRagdollEntity() if not ValidEntity(Ragdoll) then return end local head = Ragdoll:LookupAttachment("eyes") head = Ragdoll:GetAttachment(head) if not head or not head.Pos then return end local view = {} view.origin = head.Pos view.angles = head.Ang view.fov = fov return view end) end elseif toggle == false then if thetype == "dof" then DOF_Kill() return elseif thetype == "deathpov" then if hook.GetTable().CalcView and hook.GetTable().CalcView.rp_deathPOV then hook.Remove("CalcView", "rp_deathPOV") end return end hook.Remove("RenderScreenspaceEffects", thetype) end end usermessage.Hook("DarkRPEffects", DoSpecialEffects) local Messagemode = false local playercolors = {} local HearMode = "talk" local isSpeaking = false local function RPStopMessageMode() Messagemode = false hook.Remove("Think", "RPGetRecipients") hook.Remove("HUDPaint", "RPinstructionsOnSayColors") playercolors = {} end local function CL_IsInRoom(listener) -- IsInRoom function to see if the player is in the same room. local tracedata = {} tracedata.start = LocalPlayer():GetShootPos() tracedata.endpos = listener:GetShootPos() local trace = util.TraceLine( tracedata ) return not trace.HitWorld end local PlayerColorsOn = CreateClientConVar("rp_showchatcolors", 1, true, false) local function RPSelectwhohearit() if PlayerColorsOn:GetInt() == 0 then return end Messagemode = true hook.Add("HUDPaint", "RPinstructionsOnSayColors", function() local w, l = ScrW()/80, ScrH() /1.75 local h = l - (#playercolors * 20) - 20 local AllTalk = GetConVarNumber("alltalk") == 1 if #playercolors <= 0 and ((HearMode ~= "talk through OOC" and HearMode ~= "advert" and not AllTalk) or (AllTalk and HearMode ~= "talk" and HearMode ~= "me") or HearMode == "speak" ) then draw.WordBox(2, w, h, string.format(LANGUAGE.hear_noone, HearMode), "ScoreboardText", Color(0,0,0,120), Color(255,0,0,255)) elseif HearMode == "talk through OOC" or HearMode == "advert" then draw.WordBox(2, w, h, LANGUAGE.hear_everyone, "ScoreboardText", Color(0,0,0,120), Color(0,255,0,255)) elseif not AllTalk or (AllTalk and HearMo
Okay, replace the AddToChat function with this: [lua]local function AddToChat(msg) local col1 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local name = msg:ReadString() local ply = msg:ReadEntity() local col2 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local rank = ply:IsSuperAdmin and "[Superadmin] " or ply:IsAdmin() and "[Admin] " or "" local text = msg:ReadString() if text and text ~= "" then chat.AddText(col1, name, col2, rank .. ": "..text) if ValidEntity(ply) then hook.Call("OnPlayerChat", nil, ply, text, false, ply:Alive()) end else chat.AddText(col1, name) hook.Call("ChatText", nil, "0", name, name, "none") end chat.PlaySound() end [/lua]
I tried that and got this: Warning: Unhandled usermessage 'DarkRP_Chat' Heres the Cl_init. I don't see how I could have messed anything up. [LUA]GM.Version = "2.4.2" GM.Name = "DarkRP "..GM.Version GM.Author = "By Rickster, Updated: Pcwizdan, Sibre, philxyz, [GNC] Matt, Chrome Bolt, FPtje Falco, Eusion" require("datastream") DeriveGamemode("sandbox") util.PrecacheSound("earthquake.mp3") CUR = "$" HelpLabels = { } HelpCategories = { } -- Make sure the client sees the RP name where they expect to see the name local pmeta = FindMetaTable("Player") pmeta.SteamName = pmeta.Name function pmeta:Name() if not self or not self.IsValid or not ValidEntity(self) then return "" end self.DarkRPVars = self.DarkRPVars or {} if GetConVarNumber("allowrpnames") == 0 then return self:SteamName() end return self.DarkRPVars.rpname or self:SteamName() end pmeta.GetName = pmeta.Name pmeta.Nick = pmeta.Name -- End local ENT = FindMetaTable("Entity") ENT.OldIsVehicle = ENT.IsVehicle function ENT:IsVehicle() if type(self) ~= "Entity" then return false end local class = string.lower(self:GetClass()) return ENT:OldIsVehicle() or string.find(class, "vehicle") -- Ent:IsVehicle() doesn't work correctly clientside: /* ] lua_run_cl print(LocalPlayer():GetEyeTrace().Entity) > Entity [128][prop_vehicle_jeep_old] ] lua_run_cl print(LocalPlayer():GetEyeTrace().Entity:IsVehicle()) > false */ end function GM:DrawDeathNotice(x, y) if GetConVarNumber("deathnotice") ~= 1 then return end self.BaseClass:DrawDeathNotice(x, y) end local function DisplayNotify(msg) local txt = msg:ReadString() GAMEMODE:AddNotify(txt, msg:ReadShort(), msg:ReadLong()) surface.PlaySound("buttons/lightswitch2.wav") -- Log to client console print(txt) end usermessage.Hook("_Notify", DisplayNotify) local function LoadModules(msg) local num = msg:ReadShort() for n = 1, num do include(GAMEMODE.FolderName.."/gamemode/modules/" .. msg:ReadString()) end end usermessage.Hook("LoadModules", LoadModules) LocalPlayer().DarkRPVars = LocalPlayer().DarkRPVars or {} for k,v in pairs(player.GetAll()) do v.DarkRPVars = v.DarkRPVars or {} end include("help.lua") include("language_sh.lua") include("MakeThings.lua") include("cl_vgui.lua") include("entity.lua") include("cl_helpvgui.lua") include("showteamtabs.lua") include("DRPDermaSkin.lua") include("sh_animations.lua") include("cl_hud.lua") include("Workarounds.lua") include("FPP/sh_settings.lua") include("FPP/client/FPP_Menu.lua") include("FPP/client/FPP_HUD.lua") include("FPP/client/FPP_Buddies.lua") include("FPP/sh_CPPI.lua") surface.CreateFont("akbar", 20, 500, true, false, "AckBarWriting") -- Copy from FESP(made by FPtje Falco) -- This is no stealing since I made FESP myself. local vector = FindMetaTable("Vector") function vector:RPIsInSight(v, ply) ply = ply or LocalPlayer() local trace = {} trace.start = ply:EyePos() trace.endpos = self trace.filter = v trace.mask = -1 local TheTrace = util.TraceLine(trace) if TheTrace.Hit then return false, TheTrace.HitPos else return true, TheTrace.HitPos end end function GM:HUDShouldDraw(name) if name == "CHudHealth" or name == "CHudBattery" or name == "CHudSuitPower" or (HelpToggled and name == "CHudChat") then return false else return true end end function GM:HUDDrawTargetID() return false end function FindPlayer(info) local pls = player.GetAll() -- Find by Index Number (status in console) for k, v in pairs(pls) do if tonumber(info) == v:UserID() then return v end end -- Find by RP Name for k, v in pairs(pls) do if string.find(string.lower(v.DarkRPVars.rpname or ""), string.lower(tostring(info))) ~= nil then return v end end -- Find by Partial Nick for k, v in pairs(pls) do if string.find(string.lower(v:Name()), string.lower(tostring(info))) ~= nil then return v end end return nil end local GUIToggled = false local HelpToggled = false local HelpVGUI local function ToggleHelp() if not HelpVGUI then HelpVGUI = vgui.Create("HelpVGUI") end HelpToggled = not HelpToggled HelpVGUI.HelpX = HelpVGUI.StartHelpX HelpVGUI:SetVisible(HelpToggled) gui.EnableScreenClicker(HelpToggled) end usermessage.Hook("ToggleHelp", ToggleHelp) local function ToggleClicker() GUIToggled = not GUIToggled gui.EnableScreenClicker(GUIToggled) end usermessage.Hook("ToggleClicker", ToggleClicker) include("sh_commands.lua") include("shared.lua") include("addentities.lua") local function DoSpecialEffects(Type) local thetype = string.lower(Type:ReadString()) local toggle = tobool(Type:ReadString()) if toggle then if thetype == "motionblur" then hook.Add("RenderScreenspaceEffects", thetype, function() DrawMotionBlur(0.05, 1.00, 0.035) end) elseif thetype == "dof" then DOF_SPACING = 8 DOF_OFFSET = 9 DOF_Start() elseif thetype == "colormod" then hook.Add("RenderScreenspaceEffects", thetype, function() local settings = {} settings[ "$pp_colour_addr" ] = 0 settings[ "$pp_colour_addg" ] = 0 settings[ "$pp_colour_addb" ] = 0 settings[ "$pp_colour_brightness" ] = -1 settings[ "$pp_colour_contrast" ] = 0 settings[ "$pp_colour_colour" ] =0 settings[ "$pp_colour_mulr" ] = 0 settings[ "$pp_colour_mulg" ] = 0 settings[ "$pp_colour_mulb" ] = 0 DrawColorModify(settings) end) elseif thetype == "drugged" then hook.Add("RenderScreenspaceEffects", thetype, function() DrawSharpen(-1, 2) DrawMaterialOverlay("models/props_lab/Tank_Glass001", 0) DrawMotionBlur(0.13, 1, 0.00) end) elseif thetype == "deathpov" then hook.Add("CalcView", "rp_deathPOV", function(ply, origin, angles, fov) local Ragdoll = ply:GetRagdollEntity() if not ValidEntity(Ragdoll) then return end local head = Ragdoll:LookupAttachment("eyes") head = Ragdoll:GetAttachment(head) if not head or not head.Pos then return end local view = {} view.origin = head.Pos view.angles = head.Ang view.fov = fov return view end) end elseif toggle == false then if thetype == "dof" then DOF_Kill() return elseif thetype == "deathpov" then if hook.GetTable().CalcView and hook.GetTable().CalcView.rp_deathPOV then hook.Remove("CalcView", "rp_deathPOV") end return end hook.Remove("RenderScreenspaceEffects", thetype) end end usermessage.Hook("DarkRPEffects", DoSpecialEffects) local Messagemode = false local playercolors = {} local HearMode = "talk" local isSpeaking = false local function RPStopMessageMode() Messagemode = false hook.Remove("Think", "RPGetRecipients") hook.Remove("HUDPaint", "RPinstructionsOnSayColors") playercolors = {} end local function CL_IsInRoom(listener) -- IsInRoom function to see if the player is in the same room. local tracedata = {} tracedata.start = LocalPlayer():GetShootPos() tracedata.endpos = listener:GetShootPos() local trace = util.TraceLine( tracedata ) return not trace.HitWorld end local PlayerColorsOn = CreateClientConVar("rp_showchatcolors", 1, true, false) local function RPSelectwhohearit() if PlayerColorsOn:GetInt() == 0 then return end Messagemode = true hook.Add("HUDPaint", "RPinstructionsOnSayColors", function() local w, l = ScrW()/80, ScrH() /1.75 local h = l - (#playercolors * 20) - 20 local AllTalk = GetConVarNumber("alltalk") == 1 if #playercolors <= 0 and ((HearMode ~= "talk through OOC" and HearMode ~= "advert" and not AllTalk) or (AllTalk and HearMode ~= "talk" and HearMode ~= "me") or HearMode == "speak" ) then draw.WordBox(2, w, h, string.format(LANGUAGE.hear_noone, HearMode), "ScoreboardText", Color(0,0,0,120), Color(255,0,0,255)) elseif HearMode == "talk through OOC" or HearMode == "advert" then draw.WordBox(2, w, h, LANGUAGE.hear_everyone, "ScoreboardText", Color(0,0,0,120), Color(0,255,0,255)) elseif not AllTalk or (AllTalk and HearMode ~= "talk" and HearMode ~= "me") then draw.WordBox(2, w, h, string.format(LANGUAGE.hear_certain_persons, HearMode), "ScoreboardText", Color(0,0,0,120), Color(0,255,0,255)) end for k,v in pairs(playercolors) do if v.Nick then draw.WordBox(2, w, h + k*20, v:Nick(), "Scor
You forgot to hook the usermessage. Add this below the function (after end): [lua]usermessage.Hook( "DarkRP_Chat", AddChatText )[/lua]
Do you mean as to replace [lua]usermessage.Hook("DarkRP_Chat", AddToChat)[/lua] I tried that. Same result.
Ah, I forgot to add parantheses to the IsSuperAdmin call. Replace ply:IsSuperAdmin with ply:IsSuperAdmin() and it should work.
[QUOTE=KyleWollasto;32230386]Ah, I forgot to add parantheses to the IsSuperAdmin call. Replace ply:IsSuperAdmin with ply:IsSuperAdmin() and it should work.[/QUOTE] Now im getting: [lua\includes\modules\usermessage.lua:87] attempt to call field 'Function' (a nil value) [lua]local function AddToChat(msg) local col1 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local name = msg:ReadString() local ply = msg:ReadEntity() local col2 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local rank = ply:IsSuperAdmin() and "[Superadmin] " or ply:IsAdmin() and "[Admin] " or "" local text = msg:ReadString() if text and text ~= "" then chat.AddText(col1, name, col2, rank .. ": "..text) if ValidEntity(ply) then hook.Call("OnPlayerChat", nil, ply, text, false, ply:Alive()) end else chat.AddText(col1, name) hook.Call("ChatText", nil, "0", name, name, "none") end chat.PlaySound() end usermessage.Hook( "DarkRP_Chat", AddChatText )[/lua]
Rawr, I'm sorry I used the wrong function name. Try this: [lua]local function AddToChat(msg) local col1 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local name = msg:ReadString() local ply = msg:ReadEntity() local col2 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local rank = ply:IsSuperAdmin() and "[Superadmin] " or ply:IsAdmin() and "[Admin] " or "[User] " local text = msg:ReadString() if text and text ~= "" then chat.AddText(col1, name, col2, rank .. ": "..text) if ValidEntity(ply) then hook.Call("OnPlayerChat", nil, ply, text, false, ply:Alive()) end else chat.AddText(col1, name) hook.Call("ChatText", nil, "0", name, name, "none") end chat.PlaySound() end usermessage.Hook( "DarkRP_Chat", AddToChat )[/lua]
Ah, there we go! I plan on tinkering it later with Ply:IsUserGroup(). 1 last thing... How could I add different colors to different ranks and the "[ ]" brackets? Thanks!! :) Also, would deleting the [lua]or "[User] "[/lua] as I don't want regular users to have a tag.
[QUOTE=Kayoran;32230695]Ah, there we go! I plan on tinkering it later with Ply:IsUserGroup(). 1 last thing... How could I add different colors to different ranks and the "[ ]" brackets? Thanks!! :) Also, would deleting the [lua]or "[User] "[/lua] as I don't want regular users to have a tag.[/QUOTE]Yeah I figured you wouldn't want it so I left it blank but then I looked at the first post so I added it. You can just change it to a blank string if you want nothing to be displayed (""). Try this. [lua]local function AddToChat(msg) local col1 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local name = msg:ReadString() local ply = msg:ReadEntity() local col2 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) if ply:IsSuperAdmin() then local rank_str = "[Superadmin] " local rank_col = Color( 255, 0, 0 ) -- red for example elseif ply:IsAdmin() then local rank_str = [Admin] " local rank_col = Color( 0, 255, 0 ) -- green else local rank_str = "" local rank_col = col2 end local text = msg:ReadString() if text and text ~= "" then chat.AddText(col1, name, col2, rank_col, rank, col2, ": " .. text) if ValidEntity(ply) then hook.Call("OnPlayerChat", nil, ply, text, false, ply:Alive()) end else chat.AddText(col1, name) hook.Call("ChatText", nil, "0", name, name, "none") end chat.PlaySound() end usermessage.Hook( "DarkRP_Chat", AddToChat )[/lua]
Ok at first i was getting the unhandled usermessage error. I found you were missing a " in [lua]rank_str = "[admin] "[/lua] But now the error disappeared but so did the tag.. It acts as though nothing was changed.
In the chat.AddText call change "rank" to "rank_str".
Didn't seem to do anything.. same problem. Here's the function so-far [lua]local function AddToChat(msg) local col1 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local name = msg:ReadString() local ply = msg:ReadEntity() local col2 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) if ply:IsSuperAdmin() then local rank_str = "[Superadmin] " local rank_col = Color( 255, 0, 0 ) -- red for example elseif ply:IsAdmin() then local rank_str = "[Admin] " local rank_col = Color( 0, 255, 0 ) -- green else local rank_str = "" local rank_col = col2 end local text = msg:ReadString() if text and text ~= "" then chat.AddText(col1, name, col2, rank_col, rank_str, col2, ": " .. text) if ValidEntity(ply) then hook.Call("OnPlayerChat", nil, ply, text, false, ply:Alive()) end else chat.AddText(col1, name) hook.Call("ChatText", nil, "0", name, name, "none") end chat.PlaySound() end usermessage.Hook( "DarkRP_Chat", AddToChat )[/lua]
Hmm, how about this: [lua] local function AddToChat(msg) local col1 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local name = msg:ReadString() local ply = msg:ReadEntity() local col2 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) if ply:IsSuperAdmin() then local rank_str = "[Superadmin] " local rank_col = Color( 255, 0, 0 ) -- red for example elseif ply:IsAdmin() then local rank_str = "[Admin] " local rank_col = Color( 0, 255, 0 ) -- green else local rank_str = "" local rank_col = col2 end local text = msg:ReadString() if text and text ~= "" then chat.AddText(col1, name, rank_col, rank_str, col2, ": " .. text) if ValidEntity(ply) then hook.Call("OnPlayerChat", nil, ply, text, false, ply:Alive()) end else chat.AddText(col1, name) hook.Call("ChatText", nil, "0", name, name, "none") end chat.PlaySound() end usermessage.Hook( "DarkRP_Chat", AddToChat ) [/lua]
Same problem. Im seeing this in console: [darkrp\gamemode\cl_init.lua:454] attempt to call Ply:IsSuperAdmin a nil value
Not sure if you saw it, but is Ply capitalized in the function? Change it to lowercase and it should work.
I feel as though it has something to do with the way the variables are named... [lua]chat.AddText(col1, name, rank_col, rank_str, col2, ": " .. text)[/lua] Maybe the col1, col2 are missing due to something like this [lua]local rank_col = col2[/lua] * I accidentally capitalized Ply, because for some reason it didn't copy over to facepunch.
Change local rank_col = col2 to local rank_col = Color( 255, 255, 255 )? Okay, so I tested it and this works: [lua]local function AddToChat(msg) local col1 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local name = msg:ReadString() local ply = msg:ReadEntity() local col2 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local text = msg:ReadString() local rank_str, rank_col if ply:IsSuperAdmin() then rank_str = " [Superadmin]" rank_col = Color( 255, 0, 0 ) -- red for example elseif ply:IsAdmin() then rank_str = " [Admin] " rank_col = Color( 0, 255, 0 ) -- green else rank_str = "" rank_col = Color( 255, 255, 255 ) end if text and text ~= "" then chat.AddText(col1, name, rank_col, rank_str, col2, ": " .. text) if ValidEntity(ply) then hook.Call("OnPlayerChat", nil, ply, text, false, ply:Alive()) end else chat.AddText(col1, name) hook.Call("ChatText", nil, "0", name, name, "none") end chat.PlaySound() end usermessage.Hook( "DarkRP_Chat", AddToChat ) [/lua]
Nope. Oh well.. i'm goin to bed for tonight lol. Please post back if you happen to think of a fix :)
Sir, I'm not very good at lua but here's a noob and learner's attempt. [lua]if ply:UserName("KyleWollasto") then Rank = "Lua King" end[/lua] Thank you for Helping!! 1 Last thing (not very big though) If it is really hard don't bother. I don't want to seem too demanding. How could I change the color of the brackets? Not by user but it would be awesome if they looked like this [IMG]http://dl.dropbox.com/u/8718166/falws2.png[/IMG] :D
[QUOTE=Kayoran;32242519]Sir, I'm not very good at lua but here's a noob and learner's attempt. [lua]if ply:UserName("KyleWollasto") then Rank = "Lua King" end[/lua]Oh, I'm no Lua king, I just started learning :p. Perhaps Lua helper ;). Um, yeah you could do that, Thank you for Helping!! 1 Last thing (not very big though) If it is really hard don't bother. I don't want to seem too demanding. How could I change the color of the brackets? Not by user but it would be awesome if they looked like this [IMG]http://dl.dropbox.com/u/8718166/falws2.png[/IMG] :D[/QUOTE]No, not Lua King, I just started learning :p. Maybe Lua helper :). Here you go: [lua]local function AddToChat(msg) local col1 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local name = msg:ReadString() local ply = msg:ReadEntity() local col2 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local text = msg:ReadString() local rank_str, rank_col, bracket_col if ply:IsSuperAdmin() then rank_str = "Superadmin" rank_col = Color( 255, 0, 0 ) -- red for example bracket_col = Color( 153, 50, 204 ) -- purplish elseif ply:IsAdmin() then rank_str = "Admin" rank_col = Color( 0, 255, 0 ) -- green bracket_col = Color( 218, 165, 32 ) -- orangish else rank_str = "" rank_col = Color( 255, 255, 255 ) end if text and text ~= "" then chat.AddText(col1, name, bracket_col, bracket_col and " [" or "", rank_col, rank_str, bracket_col, bracket_col and "]" or "", col2, ": " .. text) if ValidEntity(ply) then hook.Call("OnPlayerChat", nil, ply, text, false, ply:Alive()) end else chat.AddText(col1, name) hook.Call("ChatText", nil, "0", name, name, "none") end chat.PlaySound() end usermessage.Hook( "DarkRP_Chat", AddToChat ) [/lua] Not that elegant, but it should work.
Thank you! Just wonderin... is this possible to fix or does it just go along with it? [darkrp\gamemode\cl_init.lua:456] attempt to call method 'IsSuperAdmin' (a nil value) Even though it works, I get this every minute in the console
[QUOTE=Kayoran;32244125]Thank you! Just wonderin... is this possible to fix or does it just go along with it? [darkrp\gamemode\cl_init.lua:456] attempt to call method 'IsSuperAdmin' (a nil value) Even though it works, I get this every minute in the console[/QUOTE]I don't even know. Just add if ply:IsValid() and ply:IsPlayer() before the admin checks I guess.
[QUOTE=KyleWollasto;32245986]I don't even know. Just add if ply:IsValid() and ply:IsPlayer() before the admin checks I guess.[/QUOTE] Like this? [lua]if ply:IsValid() and ply:IsPlayer() if ply:IsSuperAdmin() then rank_str = "Superadmin" rank_col = Color( 255, 0, 0 ) -- red for example bracket_col = Color( 153, 50, 204 ) -- purplish if ply:IsValid() and ply:IsPlayer() elseif ply:IsAdmin() then rank_str = "Admin" rank_col = Color( 0, 255, 0 ) -- green bracket_col = Color( 218, 165, 32 ) -- orangish else rank_str = "" rank_col = Color( 255, 255, 255 ) end[/lua]
[lua]if ply:IsValid() and ply:IsPlayer() and ply:IsSuperAdmin() then rank_str = "Superadmin" rank_col = Color( 255, 0, 0 ) -- red for example bracket_col = Color( 153, 50, 204 ) -- purplish elseif ply:IsValid() and ply:IsPlayer() and ply:IsAdmin() then rank_str = "Admin" rank_col = Color( 0, 255, 0 ) -- green bracket_col = Color( 218, 165, 32 ) -- orangish else rank_str = "" rank_col = Color( 255, 255, 255 ) end[/lua]
[QUOTE=KyleWollasto;32247430][lua]if ply:IsValid() and ply:IsPlayer() and ply:IsSuperAdmin() then rank_str = "Superadmin" rank_col = Color( 255, 0, 0 ) -- red for example bracket_col = Color( 153, 50, 204 ) -- purplish elseif ply:IsValid() and ply:IsPlayer() and ply:IsAdmin() then rank_str = "Admin" rank_col = Color( 0, 255, 0 ) -- green bracket_col = Color( 218, 165, 32 ) -- orangish else rank_str = "" rank_col = Color( 255, 255, 255 ) end[/lua][/QUOTE] That fixed it! :dance: Wow. It's nice to see people helping on facepunch instead of trolling. If I could give you a cookie, I would have by now lol.
Yeah dude facepunch is full of mean people unfortunately that's why I rarely post. You can add me on Steam and I can answer future questions about anything: kyleis1337.
[QUOTE=Kayoran;32247716]That fixed it! :dance: Wow. It's nice to see people helping on facepunch instead of trolling. If I could give you a cookie, I would have by now lol.[/QUOTE] Ok so I used this and for some reason it works in-game for a mili-second then kicks me saying this. [code] [ERROR] gamemodes/darkrp/gamemode/cl_init.lua:264: attempt to call global 'ValidEntity' (a nil value) 1. Function - gamemodes/darkrp/gamemode/cl_init.lua:264 2. unknown - lua/includes/modules/usermessage.lua:87 [/code] But I end up being able to see it in console except I am kicked. [IMG]http://puu.sh/3dKnK.jpg[/IMG] This is the code I am using [code] local function AddToChat(msg) local col1 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local name = msg:ReadString() local ply = msg:ReadEntity() local col2 = Color(msg:ReadShort(), msg:ReadShort(), msg:ReadShort()) local text = msg:ReadString() local rank_str, rank_col, bracket_col if ply:IsValid() and ply:IsPlayer() and ply:IsSuperAdmin() then rank_str = "Superadmin" rank_col = Color( 255, 0, 0 ) -- red for example bracket_col = Color( 153, 50, 204 ) -- purplish elseif ply:IsValid() and ply:IsPlayer() and ply:IsAdmin() then rank_str = "Admin" rank_col = Color( 0, 255, 0 ) -- green bracket_col = Color( 218, 165, 32 ) -- orangish else rank_str = "" rank_col = Color( 255, 255, 255 ) end if text and text ~= "" then chat.AddText(col1, name, bracket_col, bracket_col and " [" or "", rank_col, rank_str, bracket_col, bracket_col and "]" or "", col2, ": " .. text) if ValidEntity(ply) then hook.Call("OnPlayerChat", nil, ply, text, false, ply:Alive()) end else chat.AddText(col1, name) hook.Call("ChatText", nil, "0", name, name, "none") end chat.PlaySound() end usermessage.Hook( "DarkRP_Chat", AddToChat ) [/code] Please help!
Sorry, you need to Log In to post a reply to this thread.