/*PLUGIN.Name = "Client-side NWVars"
PLUGIN.Description = "Client-side managment of nwvars"
PLUGIN.Author = "KatNotDinner"*/
if SERVER then
AddCSLuaFile()
return
end
local meta1 = FindMetaTable( "Entity" )
local meta2 = FindMetaTable( "Player" )
local bools = {true, false}
/*function meta2:SetNWString( str, val, b )
if !self.NWvars then self.NWvars = {} end
if !self.NWvars.String[ str ] then self.NWvars.String[ str ] = {} end
self.NWvars[ str ] = val
if b then
net.Start( "StringCL" )
net.WriteEntity( self )
net.WriteString( str )
net.WriteString( val )
net.SendToServer()
end
end
function meta2:SetNWEntity( str, ent, b )
if !self.NWvars then self.NWvars = {} end
if !self.NWvars.Entity[ str ] then self.NWvars.Entity[ str ] = {} end
self.NWvars.Entity[ str ] = ent
if b then
net.Start( "EntityCL" )
net.WriteEntity( self )
net.WriteString( str )
net.WriteEntity( ent )
net.SendToServer()
end
end
function meta2:SetNWBool( str, bool, b )
if !self.NWvars then self.NWvars = {} end
if !self.NWvars.Bool[ str ] then self.NWvars.Bool[ str ] = {} end
self.NWvars.Bool[ str ] = bool
if b then
net.Start( "BoolCL" )
net.WriteEntity( self )
net.WriteString( str )
if bool then
net.WriteInt( 1 )
else
net.WriteInt( 2 )
end
net.SendToServer()
end
end
function meta2:SetNWFloat( str, fl, b )
if !self.NWvars then self.NWvars = {} end
if !self.NWvars.Float[ str ] then self.NWvars.Float[ str ] = {} end
self.NWvars.Float[ str ] = fl
if b then
net.Start( "FloatCL" )
net.WriteEntity( self )
net.WriteString( str )
net.WriteFloat( fl )
net.SendToServer()
end
end
function meta2:SetNWInt( str, int, b )
if !self.NWvars then self.NWvars = {} end
if !self.NWvars.Int[ str ] then self.NWvars.Int[ str ] = {} end
self.NWvars.Int[ str ] = int
if b then
net.Start( "IntCL" )
net.WriteEntity( self )
net.WriteString( str )
net.WriteInt( fl )
net.SendToServer()
end
end
function meta2:SetNWAngle( str, ang, b )
if !self.NWvars then self.NWvars = {} end
if !self.NWvars.Angle[ str ] then self.NWvars.Angle[ str ] = {} end
self.NWvars.Angle[ str ] = ang
if b then
net.Start( "AngleCL" )
net.WriteEntity( self )
net.WriteString( str )
net.WriteAngle( ang )
net.SendToServer()
end
end
function meta2:SetNWVector( str, ang, b )
if !self.NWvars then self.NWvars = {} end
if !self.NWvars.Vector[ str ] then self.NWvars.Vector[ str ] = {} end
self.NWvars.Vector[ str ] = ang
if b then
net.Start( "VectorCL" )
net.WriteEntity( self )
net.WriteString( str )
net.WriteVector( ang )
net.SendToServer()
end
end
function meta2:SetNetworkedVar( str, var, b )
if type(var) == "string" then
self:SetNWString( str, var, b )
return
elseif type(var) == "number" then
if tostring(var):find( "." ) then
self:SetNWFloat( str, var, b )
else
self:SetNWInt( str, var, b )
end
elseif type(var) == "bool" then
self:SetNWBool( str, var, b )
elseif var.p and var.y and var.r then
self:SetNWAngle( str, var, b )
elseif var.x and var.y and var.z then
self:SetNWVector( str, var, b )
elseif IsValid(var) then
self:SetNWEntity( str, var, b )
end
end*/
function meta1:SetNWString( str, val, b )
self.NWvars = self.NWvars or {}
self.NWvars.String = self.NWvars.String or {}
--self.NWvars.String[ str ] = self.NWvars.String[ str ] or {}
self.NWvars.String[ str ] = val
if b then
net.Start( "StringCL" )
net.WriteEntity( self )
net.WriteString( str )
net.WriteString( val )
net.SendToServer()
end
end
function meta1:SetNWEntity( str, ent, b )
self.NWvars = self.NWvars or {}
self.NWvars.Entity = self.NWvars.Entity or {}
--self.NWvars.Entity[ str ] = self.NWvars.Entity[ str ] or {}
self.NWvars.Entity[ str ] = ent
if b then
net.Start( "EntityCL" )
net.WriteEntity( self )
net.WriteString( str )
net.WriteEntity( ent )
net.SendToServer()
end
end
function meta1:SetNWBool( str, bool, b )
self.NWvars = self.NWvars or {}
self.NWvars.Bool = self.NWvars.Bool or {}
--self.NWvars.Bool[ str ] = self.NWvars.Bool[ str ] or {}
self.NWvars.Bool[ str ] = bool
if b then
net.Start( "BoolCL" )
net.WriteEntity( self )
net.WriteString( str )
net.WriteBit( bool )
net.SendToServer()
end
end
function meta1:SetNWFloat( str, fl, b )
self.NWvars = self.NWvars or {}
self.NWvars.Float = self.NWvars.Float or {}
--self.NWvars.Float[ str ] = self.NWvars.Float[ str ] or {}
self.NWvars.Float[ str ] = fl
if b then
net.Start( "FloatCL" )
net.WriteEntity( self )
net.WriteString( str )
net.WriteFloat( fl )
net.SendToServer()
end
end
function meta1:SetNWInt( str, int, b )
self.NWvars = self.NWvars or {}
self.NWvars.Int = self.NWvars.Int or {}
--self.NWvars.Int[ str ] = self.NWvars.Int[ str ] or {}
self.NWvars.Int[ str ] = int
if b then
net.Start( "IntCL" )
net.WriteEntity( self )
net.WriteString( str )
net.WriteInt( fl, 32 )
net.SendToServer()
end
end
function meta1:SetNWAngle( str, ang, b )
self.NWvars = self.NWvars or {}
self.NWvars.Angle = self.NWvars.Angle or {}
--self.NWvars.Angle[ str ] = self.NWvars.Angle[ str ] or {}
self.NWvars.Angle[ str ] = ang
if b then
net.Start( "AngleCL" )
net.WriteEntity( self )
net.WriteString( str )
net.WriteAngle( ang )
net.SendToServer()
end
end
function meta1:SetNWVector( str, ang, b )
self.NWvars = self.NWvars or {}
self.NWvars.Vector = self.NWvars.Vector or {}
--self.NWvars.Vector[ str ] = self.NWvars.Vector[ str ] or {}
self.NWvars.Vector[ str ] = vec
if b then
net.Start( "VectorCL" )
net.WriteEntity( self )
net.WriteString( str )
net.WriteVector( ang )
net.SendToServer()
end
end
function meta1:SetNetworkedVar( str, var, b )
if type(var) == "string" then
self:SetNWString( str, var, b )
return
elseif type(var) == "number" then
if tostring(var):find( "." ) then
self:SetNWFloat( str, var, b )
else
self:SetNWInt( str, var, b )
end
elseif type(var) == "bool" then
self:SetNWBool( str, var, b )
elseif var.p and var.y and var.r then
self:SetNWAngle( str, var, b )
elseif var.x and var.y and var.z then
self:SetNWVector( str, var, b )
elseif IsValid(var) then
self:SetNWEntity( str, var, b )
end
end
function meta1:GetNWBool( str )
if !self.NWvars then Error( "No NWVars for Entity "..self:EntIndex().."!" ) debug.Trace() return end
if !self.NWvars.Bool then return end
if !self.NWvars.Bool[ str ] then return end
return self.NWvars.Bool[ str ]
end
function meta1:GetNWString( str )
if !self.NWvars then Error( "No NWVars for Entity "..self:EntIndex().."!" ) debug.Trace() return end
if !self.NWvars.String then return end
if !self.NWvars.String[ str ] then return end
return self.NWvars.String[ str ]
end
function meta1:GetNWAngle( str )
if !self.NWvars then Error( "No NWVars for Entity "..self:EntIndex().."!" ) debug.Trace() return end
if !self.NWvars.Angle then return end
if !self.NWvars.Angle[ str ] then return end
return self.NWvars.Angle[ str ]
end
function meta1:GetNWVector( str )
if !self.NWvars then Error( "No NWVars for Entity "..self:EntIndex().."!" ) debug.Trace() return end
if !self.NWvars.Vector then return end
if !self.NWvars.Vector[ str ] then return end
return self.NWvars.Vector[ str ]
end
function meta1:GetNWFloat( str )
if !self.NWvars then Error( "No NWVars for Entity "..self:EntIndex().."!" ) debug.Trace() return end
if !self.NWvars.Float then return end
if !self.NWvars.Float[ str ] then return end
return self.NWvars.Float[ str ]
end
function meta1:GetNWInt( str )
if !self.NWvars then Error( "No NWVars for Entity "..self:EntIndex().."!" ) debug.Trace() return end
if !self.NWvars.Int then return end
if !self.NWvars.Int[ str ] then return end
return self.NWvars.Int[ str ]
end
function meta1:GetNWEntity( str )
if !self.NWvars then Error( "No NWVars for Entity "..self:EntIndex().."!" ) debug.Trace() return end
if !self.NWvars.Entity then return end
if !self.NWvars.Entity[ str ] then return end
return self.NWvars.Entity[ str ]
end
function meta1:GetNetworkedVar( str )
if self.NWvars.Vector[ str ] then
return self.NWvars.Vector[ str ]
elseif self.NWvars.Entity[ str ] then
return self.NWvars.Entity[ str ]
elseif self.NWvars.String[ str ] then
return self.NWvars.String[ str ]
elseif self.NWvars.Float[ str ] then
return self.NWvars.Float
elseif self.NWvars.Angle[ str ] then
return self.NWvars.Angle[ str ]
elseif self.NWvars.Bool[ str ] then
return self.NWvars.Bool[ str ]
end
end
/*
function meta2:GetNWBool( str )
if !self.NWvars.Bool[ str ] then return end
return self.NWvars.Bool[ str ]
end
function meta2:GetNWString( str )
if !self.NWvars.String[ str ] then return end
return self.NWvars.String[ str ]
end
function meta2:GetNWAngle( str )
if !self.NWvars.Angle[ str ] then return end
return self.NWvars.Angle[ str ]
end
function meta2:GetNWVector( str )
if !self.NWvars.Vector[ str ] then return end
return self.NWvars.Vector[ str ]
end
function meta2:GetNWFloat( str )
if !self.NWvars.Float[ str ] then return end
return self.NWvars.Float[ str ]
end
function meta2:GetNWInt( str )
if !self.NWvars.Int[ str ] then return end
return self.NWvars.Int[ str ]
end
function meta2:GetNWEntity( str )
if !self.NWvars.Entity[ str ] then return end
return self.NWvars.Entity[ str ]
end
function meta2:GetNetworkedVar( str )
if self.NWvars.Vector[ str ] then
return self.NWvars.Vector[ str ]
elseif self.NWvars.Entity[ str ] then
return self.NWvars.Entity[ str ]
elseif self.NWvars.String[ str ] then
return self.NWvars.String[ str ]
elseif self.NWvars.Float[ str ] then
return self.NWvars.Float
elseif self.NWvars.Angle[ str ] then
return self.NWvars.Angle[ str ]
elseif self.NWvars.Bool[ str ] then
return self.NWvars.Bool[ str ]
end
end*/
net.Receive( "Vector", function(m)
local ent = net.ReadEntity()
local str = net.ReadString()
ent.NWvars = ent.NWvars or {}
ent.NWvars.Vector = ent.NWvars.Vector or {}
ent.NWvars.Vector[ str ] = ent.NWvars.Vector[ str ] or {}
ent.NWvars.Vector[ str ] = net.ReadVector()
end)
net.Receive( "Angle", function(m)
local ent = net.ReadEntity()
local str = net.ReadString()
ent.NWvars = ent.NWvars or {}
ent.NWvars.Angle = ent.NWvars.Angle or {}
ent.NWvars.Angle[ str ] = ent.NWvars.Angle[ str ] or {}
ent.NWvars.Angle[ str ] = net.ReadAngle()
end)
net.Receive( "Float", function(m)
local ent = net.ReadEntity()
local str = net.ReadString()
ent.NWvars = ent.NWvars or {}
ent.NWvars.Float = ent.NWvars.Float or {}
ent.NWvars.Float[ str ] = ent.NWvars.Float[ str ] or {}
ent.NWvars.Float[ str ] = net.ReadFloat()
end)
net.Receive( "Int", function(m)
local ent = net.ReadEntity()
local str = net.ReadString()
local int = net.ReadInt( 32 )
ent.NWvars = ent.NWvars or {}
ent.NWvars.Int = ent.NWvars.Int or {}
ent.NWvars.Int[ str ] = ent.NWvars.Int[ str ] or {}
ent.NWvars.Int[ str ] = int
end)
net.Receive( "Bool", function(m)
local ent = net.ReadEntity()
local str = net.ReadString()
local var = net.ReadBit()
ent.NWvars = ent.NWvars or {}
ent.NWvars.Bool = ent.NWvars.Bool or {}
ent.NWvars.Bool[ str ] = ent.NWvars.Bool[ str ] or {}
ent.NWvars.Bool[ str ] = var
end)
net.Receive( "Entity", function(m)
local ent = net.ReadEntity()
local str = net.ReadString()
local ent2 = net.ReadEntity()
ent.NWvars = ent.NWvars or {}
ent.NWvars.Entity = ent.NWvars.Entity or {}
ent.NWvars.Entity[ str ] = ent.NWvars.String[ str ] or {}
ent.NWvars.Entity[ str ] = ent2
end)
net.Receive( "String", function(m)
local ent = net.ReadEntity()
local str = net.ReadString()
local str2 = net.ReadString()
ent.NWvars = ent.NWvars or {}
ent.NWvars.String = ent.NWvars.String or {}
ent.NWvars.String[ str ] = ent.NWvars.String[ str ] or {}
ent.NWvars.String[ str ] = str2
end)
net.Receive( "NWVars", function(um)
local num = net.ReadEntity()
local str = net.ReadTable()
num.NWvars = num.NWvars or {}
num.NWvars = str
end)
meta1.SetNWVar = meta1.SetNetworkedVar -- making sure that I override ALL of the nwvar functions
meta1.SetNetworkedInt = meta1.SetNWInt
meta1.SetNetworkedFloat = meta1.SetNWFloat
meta1.SetNetworkedEntity = meta1.SetNWEntity
meta1.SetNetworkedString = meta1.SetNWString
meta1.SetNetworkedBool = meta1.SetNWBool
meta1.SetNetworkedAngle = meta1.SetNWAngle
meta1.SetNetworkedVector = meta1.SetNWVector
/*
_R.Player.SetNWVar = meta2.SetNetworkedVar -- making sure that I override ALL of the nwvar functions
_R.Player.SetNetworkedInt = meta2.SetNWInt
_R.Player.SetNetworkedFloat = meta2.SetNWFloat
_R.Player.SetNetworkedEntity = meta2.SetNWEntity
_R.Player.SetNetworkedString = meta2.SetNWString
_R.Player.SetNetworkedBool = meta2.SetNWBool
_R.Player.SetNetworkedAngle = meta2.SetNWAngle
_R.Player.SetNetworkedVector = meta2.SetNWVector*/