Re: [hlcoders] Sharing cvars between the client and server
Using FCVAR_REPLICATED works very well for me. I'm defining the convars in my own header files, but that shouldnt have anything to do with it. Just like that: ConVar heat_burstsize( heat_burstsize, 5, FCVAR_REPLICATED, HEAT_DEV: global burst size, influencing all weapons with burst mode ); You can check the values of the client and the server instance by doing this, e.g. in the PrimaryAttack function (if this file is shared of course): #ifdef CLIENT_DLL DevMsg(burst size: (%d)(CLIENT)\n, heat_burstsize.GetInt()); #else DevMsg(burst size: (%d)(SERVER)\n, heat_burstsize.GetInt()); #endif Drakanor Markus Martin wrote: Hello, I tried setting the flag before my original email. You are probably referring to FCVAR_REPLICATED. Did not work though. Try declaring the same cvar on client and server, and see what happens. The console prints something similiar to sv_foo not allowed in server.dll. All the cvar flags are quite nicely documented in the SDK docs on VERC. However, I did figure out a solution. What I was trying to do was declare a pointer to particular cvars using the cvar interface's FindCvar function: cvar-FindCvar( sv_foo ); The trouble was that I was declaring my pointers globally where the cvars normal declaration goes. So, I simply moved these variables into the class declaration where I intended to use them. Works just fine. I am a little worried about what might happen if for some reason the cvar were not to be found. My pointer might get a null value and you should know where that might lead.. So I may make a little wrapper class to search for the cvar I want, but make certain I am getting a safe value back in case something goes wrong. Hope that helps someone who might be doing something similiar! Greetings, -Markus On Tue, 25 Jan 2005 11:28:49 +1000, Luke Graham [EMAIL PROTECTED] wrote: I dont understand the last 3/4's of your post but theres a flag you can pass when you create a CVAR to make it shared between client and server. Sorry, dont remember its name right now. Just make the CVAR once in a file thats compiled into both, and give it that flag. On Sun, 23 Jan 2005 03:27:49 -0700, Markus Martin [EMAIL PROTECTED] wrote: Hi, I am trying to share the same console variables between the client and server in a file that is compiled into both dlls. What I do in my shared file is create a pointer to the cvars like so: ConVar *melee_dmg = cvar-FindVar( melee_dmg ); And this works fine for both client and server. Now, the actual cvar is defined in the normal way in a seperate file, but it is only compiled into the server. Compiling a cvar into both dlls causes one to override the other, and thus the cvar(s) do not work. This seems like perfectly sound code as all goes well until actually loading the dlls hot off the compiler. For some reason when I load my mod, the Half-Life2 dlls are loaded instead. I am thinking the engine decides something is wrong with my dlls, but I find this rather irritating, as I would prefer a crash that I could perhaps debug.. All this happens without any error output whatsoever. I assume that on the client, FindVar() can find the cvars. Perhaps this is not the case. It is not really essential that the client knows the value of the cvar, except maybe for flow control later on down the road.. However, I am trying to avoid #ifdef hell as much as possible as this is a shared file. Greetings, -Markus ___ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders ___ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders ___ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders ___ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders
Re: [hlcoders] Sharing cvars between the client and server
I dont understand the last 3/4's of your post but theres a flag you can pass when you create a CVAR to make it shared between client and server. Sorry, dont remember its name right now. Just make the CVAR once in a file thats compiled into both, and give it that flag. On Sun, 23 Jan 2005 03:27:49 -0700, Markus Martin [EMAIL PROTECTED] wrote: Hi, I am trying to share the same console variables between the client and server in a file that is compiled into both dlls. What I do in my shared file is create a pointer to the cvars like so: ConVar *melee_dmg = cvar-FindVar( melee_dmg ); And this works fine for both client and server. Now, the actual cvar is defined in the normal way in a seperate file, but it is only compiled into the server. Compiling a cvar into both dlls causes one to override the other, and thus the cvar(s) do not work. This seems like perfectly sound code as all goes well until actually loading the dlls hot off the compiler. For some reason when I load my mod, the Half-Life2 dlls are loaded instead. I am thinking the engine decides something is wrong with my dlls, but I find this rather irritating, as I would prefer a crash that I could perhaps debug.. All this happens without any error output whatsoever. I assume that on the client, FindVar() can find the cvars. Perhaps this is not the case. It is not really essential that the client knows the value of the cvar, except maybe for flow control later on down the road.. However, I am trying to avoid #ifdef hell as much as possible as this is a shared file. Greetings, -Markus ___ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders ___ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders
Re: [hlcoders] Sharing cvars between the client and server
Hello, I tried setting the flag before my original email. You are probably referring to FCVAR_REPLICATED. Did not work though. Try declaring the same cvar on client and server, and see what happens. The console prints something similiar to sv_foo not allowed in server.dll. All the cvar flags are quite nicely documented in the SDK docs on VERC. However, I did figure out a solution. What I was trying to do was declare a pointer to particular cvars using the cvar interface's FindCvar function: cvar-FindCvar( sv_foo ); The trouble was that I was declaring my pointers globally where the cvars normal declaration goes. So, I simply moved these variables into the class declaration where I intended to use them. Works just fine. I am a little worried about what might happen if for some reason the cvar were not to be found. My pointer might get a null value and you should know where that might lead.. So I may make a little wrapper class to search for the cvar I want, but make certain I am getting a safe value back in case something goes wrong. Hope that helps someone who might be doing something similiar! Greetings, -Markus On Tue, 25 Jan 2005 11:28:49 +1000, Luke Graham [EMAIL PROTECTED] wrote: I dont understand the last 3/4's of your post but theres a flag you can pass when you create a CVAR to make it shared between client and server. Sorry, dont remember its name right now. Just make the CVAR once in a file thats compiled into both, and give it that flag. On Sun, 23 Jan 2005 03:27:49 -0700, Markus Martin [EMAIL PROTECTED] wrote: Hi, I am trying to share the same console variables between the client and server in a file that is compiled into both dlls. What I do in my shared file is create a pointer to the cvars like so: ConVar *melee_dmg = cvar-FindVar( melee_dmg ); And this works fine for both client and server. Now, the actual cvar is defined in the normal way in a seperate file, but it is only compiled into the server. Compiling a cvar into both dlls causes one to override the other, and thus the cvar(s) do not work. This seems like perfectly sound code as all goes well until actually loading the dlls hot off the compiler. For some reason when I load my mod, the Half-Life2 dlls are loaded instead. I am thinking the engine decides something is wrong with my dlls, but I find this rather irritating, as I would prefer a crash that I could perhaps debug.. All this happens without any error output whatsoever. I assume that on the client, FindVar() can find the cvars. Perhaps this is not the case. It is not really essential that the client knows the value of the cvar, except maybe for flow control later on down the road.. However, I am trying to avoid #ifdef hell as much as possible as this is a shared file. Greetings, -Markus ___ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders ___ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders ___ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders
[hlcoders] Sharing cvars between the client and server
Hi, I am trying to share the same console variables between the client and server in a file that is compiled into both dlls. What I do in my shared file is create a pointer to the cvars like so: ConVar *melee_dmg = cvar-FindVar( melee_dmg ); And this works fine for both client and server. Now, the actual cvar is defined in the normal way in a seperate file, but it is only compiled into the server. Compiling a cvar into both dlls causes one to override the other, and thus the cvar(s) do not work. This seems like perfectly sound code as all goes well until actually loading the dlls hot off the compiler. For some reason when I load my mod, the Half-Life2 dlls are loaded instead. I am thinking the engine decides something is wrong with my dlls, but I find this rather irritating, as I would prefer a crash that I could perhaps debug.. All this happens without any error output whatsoever. I assume that on the client, FindVar() can find the cvars. Perhaps this is not the case. It is not really essential that the client knows the value of the cvar, except maybe for flow control later on down the road.. However, I am trying to avoid #ifdef hell as much as possible as this is a shared file. Greetings, -Markus ___ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders