• Sharing variables across server and client
    2 replies, posted
I originally posted this on the dark rp forum, but this one looks a bit more active and I figure this isn't a problem specific to dark rp, but more related to how the lua's work I'm fairly new to lua and I'm not sure where to go from here. I have an sv_updateAnnouncement file with a timer in it. It's set up such that it will update a string when it is triggered. However, I want that string to display on a hud element on the users screen. I thought that by defining the string to be used in an sh_init file, it would be shared between the cl_hud file and the sv_updateAnnouncement file, but at the moment, the text is not being drawn. Here is some of the code I have in them [B]sh_init:[/B] teams= { team1 = "team1", team2 = "team2", team3 = "team3", team4 = "team4" } event= {} event[1] = "event1" event[2] = "event2" event[3] = "event3" event[4] = "event4" event[5] = "event5'" event[6] = "event6" totalEvent = 6 teamEvent= {} teamEvent[teams.team1] = "" teamEvent[teams.team2] = "" teamEvent[teams.team3] = "" teamEvent[teams.team4] = "" [B]sv_updateAnnouncement:[/B] math.randomseed(os.time()) local eventTime = 30 timer.Create( "Event", eventTime, 0, function() if (true) then for k,v in pairs(player.GetAll()) do DarkRP.notify(v,0,4,"New Event") local newEvent1 = math.random(1,totalEvent) local newEvent2 = math.random(1,totalEvent) while (newEvent1== newEvent2) do newEvent2= math.random(1,totalEvent) end teamEvent[teams.team1] = event[newEvent1] teamEvent[teams.team2] = event[newEvent2] teamEvent[teams.team3] = event[newEvent1] teamEvent[teams.team4] = event[newEvent2] end end end) [B]cl_hud:[/B] ... local function HudClass() draw.RoundedBox(6, HUD.PosX+5, HUD.PosY+HUD.Height-24-5, HUD.Width-10, 24, Color(0, 0, 0, 200)) local currentJob = LocalPlayer():getDarkRPVar("job") local teamMessage = "" if currentJob == "team1" then teamMessage = teamEvent[teams.team1] elseif currentJob == "team2" then teamMessage = teamEvent[teams.team2] elseif currentJob == "team3" then teamMessage = teamEvent[teams.team3] elseif currentJob == "team4" then teamMessage = teamEvent[teams.team4] else teamMessage = "DEBUG: current class = " .. currentJob end draw.DrawText(teamMessage, "TCBFont", HUD.PosX+HUD.Width/2+1, HUD.PosY+HUD.Height-24-5+3+1, Color(0, 0, 0, 255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) draw.DrawText(teamMessage, "TCBFont", HUD.PosX+HUD.Width/2, HUD.PosY+HUD.Height-24-5+3, Color(255, 255, 255, 255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) end ... So I define all of my tables in the sh file, I update them in the sv timer, and then I display them in the cl hud, but at the moment, the cl hud is displaying an empty string. What am I doing wrong here? Not really sure how globals work in lua, but all 3 files are in the same folder EDIT: currently, the hud shape is being drawn correctly, and the debug message appears as it should, but the actual text i need is not shared across the files
You could try to use something like [url]https://wiki.garrysmod.com/page/Entity/SetNWString[/url]
[QUOTE=LuaTenshi;50845904]You could try to use something like [url]https://wiki.garrysmod.com/page/Entity/SetNWString[/url][/QUOTE] Ooh that actually might work out much better, that way im doing the conditional in the timer instead of on the ui rendering, and all I have to do in the rendering is pull the nw string for the player in question, I'll try that out EDIT: that worked beautifully, thank you
Sorry, you need to Log In to post a reply to this thread.