WhiteAutumn Posted October 12, 2019 Share Posted October 12, 2019 (edited) Hi! How does one call a function on the client from the server? Thanks in advance! Edited October 13, 2019 by WhiteAutumn Link to comment Share on other sites More sharing options...
Serpens Posted October 13, 2019 Share Posted October 13, 2019 (edited) offtopic: Are topics here first hidden or sth like this? I'm pretty sure I checked new topics here around ~13hours ago and your thread was not here, although it says it was posted 19 hours ago. I think your question is not clear. Who wants to call and where is the function to call (one way uses netvar and the other RPC) Edited October 13, 2019 by Serpens Link to comment Share on other sites More sharing options...
WhiteAutumn Posted October 13, 2019 Author Share Posted October 13, 2019 (edited) 1 hour ago, Serpens said: offtopic: Are topics here first hidden or sth like this? I'm pretty sure I checked new topics here around ~13hours ago and your thread was not here, although it says it was posted 19 hours ago. I think your question is not clear. Who wants to call and where is the function to call (one way uses netvar and the other RPC) You're right! For whatever reason since I created my account my posts need to be approved by mods before they become public :/ edit: Looks like a mod while reading this message for approval removed my restriction! That or you need 20 posts approved before you can post without that limitation. Let me elaborate. I have the a listener for whenever shelter changes however that event only gets fired on the server and I need to update a thing on the client. I had the impression RPCs only work from client -> server but perhaps that's wrong? Edited October 13, 2019 by WhiteAutumn Link to comment Share on other sites More sharing options...
Serpens Posted October 13, 2019 Share Posted October 13, 2019 (edited) 1 hour ago, WhiteAutumn said: Let me elaborate. I have the a listener for whenever shelter changes however that event only gets fired on the server and I need to update a thing on the client. I had the impression RPCs only work from client -> server but perhaps that's wrong? are you sure you need to update sth on the client? client is mostly for visuals. RPC is called from a client to make the server call a specific function. netvar is set from the server and all clients (and also the server) will get kind of event that this value was changed and the new value of it. AddPlayerPostInit(function(inst) inst.youruniquenetvarname = GLOBAL.net_bool(inst.GUID, "youruniquenetvarname", "youruniquenetvarEventName") -- true or false inst.youruniquenetvarname:set(false) -- set a default value if not GLOBAL.TheWorld.ismastersim then -- add listeners to this event only for clients inst:ListenForEvent("youruniquenetvarEventName", function(inst) local youruniquenetvar_newvalue = inst.youruniquenetvarname:value() -- your code to do stuff at client depending on the new value end) end end) and anywhere at server (you may check ismastersim if you are not sure if it is server or client) you can now do:inst.youruniquenetvarname:set(newvalue) to make the clients get your event and new value There are differnt kinds of netvars. above I use "net_bool" which can only have true or false as value. If you set it false, while it is already false, no event is fired (same for true). This can be used for an on/off switch. See scripts/netvars.lua to find more kinds of netvars. It is best to use the tiniest one of them, to save ressources. So first try to achieve your gaol with bool, or net_tinybyte with numbers from 0 to 7 Edited October 13, 2019 by Serpens Link to comment Share on other sites More sharing options...
WhiteAutumn Posted October 13, 2019 Author Share Posted October 13, 2019 (edited) Something visual is exactly what I need updated sadly, a widget. I have modified the bloodover widget to show red if the player is in daylight and not sheltered. This works fine when the user is the host however when they are a client the sheltered event only gets fired on the server which means while the user does not take damage while standing under a tree they still see the red overlay because the client has not had a chance to update it. I suppose I could have a periodic task on the client checking if it needs to update the overlay ever second but that seems dirty. Edited October 13, 2019 by WhiteAutumn Link to comment Share on other sites More sharing options...
Serpens Posted October 13, 2019 Share Posted October 13, 2019 (edited) 12 hours ago, WhiteAutumn said: Something visual is exactly what I need updated sadly, a widget. I have modified the bloodover widget to show red if the player is in daylight and not sheltered. This works fine when the user is the host however when they are a client the sheltered event only gets fired on the server which means while the user does not take damage while standing under a tree they still see the red overlay because the client has not had a chance to update it. I suppose I could have a periodic task on the client checking if it needs to update the overlay ever second but that seems dirty. yes, you can use the net_bool in this case to switch it on/off I'm not familiar with the widget, I only saw your thread about it, but since I have no clue about it, I did not response... but isnt there really no way to use existing functions, called on server, that already include this overlay? Eg. you could simply start the "overheat" mechanic, this will handle everything on its own. Edited October 13, 2019 by Serpens Link to comment Share on other sites More sharing options...
WhiteAutumn Posted October 13, 2019 Author Share Posted October 13, 2019 Your solution with an event for updating net vars worked, thank you! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now