How to send a Server side variable to the client?

Example:

if SERVER then
self.Variable = 9000
else
draw.SimpleText(“The power level is over”…self.Variable…"!!!".Variable, “default”, 0, -15, Color(255,0,0,100), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP)
end

Obviously that wouldn’t work

The Variable HAS to be server side though.
So i’m wondering if there’s a way to send the server-side variable to the client.

Thanks in advance!

usermessages, look them up on the wiki.

Did not work…

show us the code

Actually The function is called, but the HUD don’t react to the chaining vars

Relevant code
[Lua]
if CLIENT then
function SWEP.ScreenUpdate( um, self )
self.CFireMode1 = um:ReadShort()
self.CFireMode2 = um:ReadFloat()
Msg("Screen Updated
")
end
usermessage.Hook( “swep.FireMode”, SWEP.ScreenUpdate, SWEP )
function SWEP.ScreenUpdateO( um, self )
self.LightsCanFire = um:ReadShort()
Msg("Leds Can Fire
")
end
usermessage.Hook( “swep.LightsCanFire”, SWEP.ScreenUpdateO, SWEP )

function SWEP:Think() 
    self.VElements["Charge"].draw_func = function( weapon )
		-- x = side | y = up/down | right = pos | left = neg | up = neg | down = pos | 
		draw.SimpleText("Primary: "..self.CFireMode1, "default", 0, -15, Color(255,0,0,100), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP)
		draw.SimpleText("Secondary: "..self.CFireMode2, "default", 0, -5, Color(255,0,0,100), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP)
	end
	if self.Lights <= CurTime() then
		self.VElements["Led3"].color = Color(0, 0, math.random(-1,1)*255, 255)
		self.VElements["Led4"].color = Color(0, 0, math.random(-1,1)*255, 255)
		self.VElements["Led5"].color = Color(0, 0, math.random(-1,1)*255, 255)
		self.Lights = CurTime() + .1
	end
	if self.LightsCanFire >= CurTime() then
		self.VElements["Led1"].color = Color(0, 0, 0, 255)
		self.VElements["Led2"].color = Color(255, 0, 0, 255)
	else
		self.VElements["Led1"].color = Color(0, 255, 0, 255)
		self.VElements["Led2"].color = Color(0, 0, 0, 255)
	end
end

end
--------Rest is Server-side---------------------------
function SWEP:Think()
if self.ScreenUpdate <= CurTime() then
umsg.Start( “swep.FireMode” )
umsg.Float( self.SecondaryFireMode )
umsg.Short( self.PrimaryFireMode )
umsg.End()
self.ScreenUpdate = CurTime() + 1
end
end

–The following just happenes in different parts of the code (all server-side)
umsg.Start( “swep.LightsCanFire” )
umsg.Short( CurTime() + 1 ) --The Delay is different depending on where this bit of code is
umsg.End()
[/lua]

A orange ‘Screen Updated’ Does show up in the console every second the game is not paused.
And ‘Leds Can Fire’ Does show when the function is being called.

okay… lol.

don’t update the damn firemode every think, especially with a usermessage. so something like this



-------
-- Serverside
-------


-- Make sure you pass only a string.
function SWEP:SetFireMode( strMode )
	umsg.Start( "swepfModeUpdate", self.Owner );
		umsg.String( strMode );
	umsg.End();
end

---------
-- clientside
---------

usermessage.Hook( "swepfModeUpdate", function(um)
	local fmode = um:ReadString();
	SWEP.fMode = fmode;
end);


set it once, it doesn’t need to be drawn every second.
and please, indent your code…

OK, I don’t think you understand. The fire-mode, and what the SWEP does depending on the firemode, is server-side. I would like the NUMBER of the fire-mode to be shown on the ‘self.VElements[“Charge”]’ thing

[editline]5th November 2011[/editline]

And the firemode was updated every second, and it was DRAWN at every tick

…Just so you know.

why would you update the firemode every second, even when it hasn’t changed. does that make sense to you? network it once when it’s changed, put that in a clientside var on the swep or something and then have it draw that var.

also what?.. it’s pretty obvious why it’s not drawing…

self.VElements[“Charge”].draw_func = function( weapon )



 function SWEP:Think() 
        self.VElements["Charge"].draw_func = function( weapon )
            -- x = side | y = up/down | right = pos | left = neg | up = neg | down = pos | 
            draw.SimpleText("Primary: "..self.CFireMode1, "default", 0, -15, Color(255,0,0,100), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP)
            draw.SimpleText("Secondary: "..self.CFireMode2, "default", 0, -5, Color(255,0,0,100), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP)
        end
        if self.Lights <= CurTime() then
            self.VElements["Led3"].color = Color(0, 0, math.random(-1,1)*255, 255)
            self.VElements["Led4"].color = Color(0, 0, math.random(-1,1)*255, 255)
            self.VElements["Led5"].color = Color(0, 0, math.random(-1,1)*255, 255)
            self.Lights = CurTime() + .1
        end
        if self.LightsCanFire >= CurTime() then
            self.VElements["Led1"].color = Color(0, 0, 0, 255)
            self.VElements["Led2"].color = Color(255, 0, 0, 255)
        else
            self.VElements["Led1"].color = Color(0, 255, 0, 255)
            self.VElements["Led2"].color = Color(0, 0, 0, 255)
        end
    end


not to be an ass but you’re the one who clearly doesn’t understand.

It is drawing.
[filename]

http://dl.dropbox.com/u/14940709/looks-drawn-to-me.jpg

The problem is it never updates.

[editline]5th November 2011[/editline]

(the var is set to 0 in the init function to prevent lua spam.

[editline]5th November 2011[/editline]

FIX’D! FINALLY FIGURED SOMETHING OUT!

[editline]5th November 2011[/editline]

Need no more help