Spray blocker help

Okay so i’m making this script to block people from spraying on certain people’s spray (aka admin). I am an experienced programmer with Java, VB, and some C++.
I have never done lua before.
I am embedding my code into a script called trace_dem_sprays.
My main question is how do i get this to work?

if SERVER then

AddCSLuaFile("trace_dem_sprays.lua")

function ResetSpray( ply )
    ply:SetNWVector( "SprayPos", Vector( 0, 0, 0 ) )
end
hook.Add( "PlayerInitialSpawn", "ResetSpray", ResetSpray )
  
function OnSpray( ply )
    local pos = ply:GetEyeTrace().HitPos
    ply:SetNWVector( "SprayPos", pos )
end
hook.Add( "PlayerSpray", "HandleSpray", OnSpray )

function ChatCommandSpray(ply, text)
    if ( text == "!spray" or text == "!spraytrace" or text == "!tracespray") then
       ply:ConCommand("spraytrace")
       return ""
    end
end
hook.Add("PlayerSay", "ChatCommandSpray", ChatCommandSpray)

end

if CLIENT then
adminspray = 0
function ShowSprayOwner()
local Trace = LocalPlayer():GetEyeTrace()
local LookAt = Trace.HitPos
local demcounter = 0

    for _, pl in pairs(player.GetAll()) do
        if demcounter > 0 then break end
        local SPos = pl:GetNWVector( "SprayPos" )         
        if SPos != Vector(0, 0, 0) and LookAt:Distance( SPos ) < 32 and Trace.HitWorld and LocalPlayer():GetPos():Distance( SPos ) < 400 then
            local Text = pl:Nick() .. "'s Spray"
             Text2 = pl:SteamID()
			surface.CreateFont( "treb_smal", { font = "treb_small",
				size    = 14,
                weight  = 40000,
                antialias = true,
                shadow = true})
            local w, h = surface.GetTextSize( Text )
            local w2, h2 = surface.GetTextSize( Text2 )
            w = w + 5
            h = h + 5
            w2 = w2 + 5
            h2 = h2 + 5
            demcounter = demcounter + 1         
			draw.WordBox( 6, (ScrW()/2)-(w/2), (ScrH()/2)-(h/2), Text, "treb_smal", Color( 0, 0, 0, 200 ), Color(255,255,255,255) )
            draw.WordBox( 6, (ScrW()/2)-(w2/2), (ScrH()/2)-(h2/2) + 28, Text2, "treb_smal", Color( 0, 0, 0, 200 ), Color(255,255,255,255) )

        end
     
    end
end
hook.Add( "HUDPaint", "ShowSprayOwner", ShowSprayOwner )

function PrintSprayOwner()
    local Trace = LocalPlayer():GetEyeTrace()
    local LookAt = Trace.HitPos
    for _, pl in pairs(player.GetAll()) do
        local SPos = pl:GetNWVector( "SprayPos" )
        if SPos != Vector(0, 0, 0) and LookAt:Distance( SPos ) < 32 and Trace.HitWorld and LocalPlayer():GetPos():Distance( SPos ) < 600 then
            local Text = pl:Nick() .. "'s"
           local Text2 = " (" .. pl:SteamID() .. ") "
            chat.AddText(Color(255,255,255,255),Text,Color(255,255,255,255),Text2,Color(255,255,255,255),"Spray.")
        end
    end
end
concommand.Add("spraytrace",PrintSprayOwner)

–below is my code. Everything above works

hook.Add(“PlayerSpray”, function(ply)

if (Text2 == “STEAM_0:0:9310913” or “STEAM_0:1:45363532”)then

adminspray = 1
else
adminspray = 0
end

– if the player is admin then he can spray no matter what
if ply:IsAdmin() then
return false
end

--Stops players sprays
if (adminspray == 1)then

ply:ChatPrint(“You aren’t allowed to use sprays!”)

return true
end

return true
end)
end

use [.lua.][./lua] tags without the periods of course.

Why not just do
[lua]
hook.Add(“PlayerSpray”, function(ply)
if IsValid(ply) and ply:IsAdmin() then
print(“you sprayed your spray!”)
return false
elseif IsValid(ply) and not ply:IsAdmin() then
print(“you cannot spray your spray!”)
return true
end
end)
[/lua]
the code was writen without me looking at the wiki to check for function errors, It may need some minor adjustments.

also



if (Text2 == "STEAM_0:0:9310913" or "STEAM_0:1:45363532")then


will never be true because



local Text2 = " (" .. pl:SteamID() .. ") "


it has ()'s in it

You could however do



if (ply:SteamID() == "STEAM_0:0:9310913" or "STEAM_0:1:45363532")then
--bla
end


Im trying to make it so other can’t spray on admins sprays, not stop them from spraying.
hence my attempt at getting text2 because the trace dem_sprays_scrip displays their steam ids.
so if text2 = “id”
–meaning their looking at a spray.
abletospray = false

something like that.

So you don’t want people to spray over each others sprays?

That will always be true because strings are considered as true in conditions. Which means ultimately your code is wrong.

[lua]
if (ply:SteamID() == “STEAM_0:0:9310913” or ply:SteamID() == “STEAM_0:1:45363532”)then
–bla
end
[/lua]

@pandaman09 your looking at the wrong text2.
and no i don’t want people to spray over admins sprays (“or steam ids i define in the code”)

Bump