Rune Central
http://forums.runecentral.com/

Setting up a runequake Server
http://forums.runecentral.com/viewtopic.php?f=2&t=1528
Page 1 of 2

Author:  desh [ Mon May 11, 2009 7:33 pm ]
Post subject:  Setting up a runequake Server

I had a couple questions about setting up a runequake server.

1)I want to be able to have a large number of maps available on the server so that if players want to vote to a particular map they can do this. However, I also want it so that when the server changes level after the timelimit has been hit, it will only select a map from a subset of all the maps available on the server. How can I do this? I would also like to apply this same thing to the default id maps, for example, when the server goes to change the level, it will only find a random level from dm1, dm2, dm3, dm4, dm5, dm6, and not select a level from any of the episodic maps. But, also have the episodic maps available to change level to upon player request and vote.

2)I want to be able to lock out certain game modes, but keep others available to vote. For example, I want the clients to be only able to vote between match, practice, and normal, but not be able to vote the game mode to rocket arena or head-hunters or anything else. Is there a way to do this?

Thank you for any guidance with regards to these questions.

Author:  Slot Zero [ Tue May 12, 2009 1:27 am ]
Post subject:  Re: Setting up a runequake Server

desh wrote:
1)I want to be able to have a large number of maps available on the server so that if players want to vote to a particular map they can do this. However, I also want it so that when the server changes level after the timelimit has been hit, it will only select a map from a subset of all the maps available on the server. How can I do this? I would also like to apply this same thing to the default id maps, for example, when the server goes to change the level, it will only find a random level from dm1, dm2, dm3, dm4, dm5, dm6, and not select a level from any of the episodic maps. But, also have the episodic maps available to change level to upon player request and vote.


This can be done with the standard maps, but you have to modify settings.qc file and replace "TRUE" with "FALSE" to all of the maps in the function user_allowed_maps you don't want the game to select. You must also place the level selection to random, because of the way the linear code selection works. At current, there is no way to allow custom maps and not have them be selected in the rotation. This is something I can easily address though and walk you through if you're interested.

desh wrote:
2)I want to be able to lock out certain game modes, but keep others available to vote. For example, I want the clients to be only able to vote between match, practice, and normal, but not be able to vote the game mode to rocket arena or head-hunters or anything else. Is there a way to do this?


Unfortunately this too is going to require you to modify the source and recompile. You'll need to open up the file vote.qc and in the function vote go through all of the various vote options and change the value of "cancel" to 1. Here is an example block of code specific to one vote option, in this case it's practice mode:

Code:
   else if (self.impulse == IMP_VOTE_PRACTICE)
   {
      cancel      = options & MODE_LOCKED;
      e.frag_rate   = 0.51;   // XXX move to settings.
      e.think1   = change_mode_to_practice;
      e.noise1   = "change";
      e.noise2   = " mode to practice";

      if (cancel)
         self_sprint (self, "mode is locked\n");
      else if (gamemode == MODE_PRACTICE)
      {
         self_sprint (self, "already in practice mode\n");
         cancel = 1;
      }
   }


If you wanted to turn off practice mode all the time, replace

Code:
      cancel      = options & MODE_LOCKED;

with
Code:
      cancel      = 1;


You can apply the same principle to any of the vote options.

Now I'm assuming that you're already familiar with how to compile the source code, but if you're not and need help please let me know.

Author:  desh [ Tue May 12, 2009 10:52 am ]
Post subject:  Re: Setting up a runequake Server

To clarify, in the user_allowed_map function in the settings.qc file, after changing a map (for example e1m8) from "return TRUE" to "return FALSE" this map will not be selected during the random map selection process, but the map (e1m8) would still be able to be voted on and warped to by the clients?

To do this for custom maps, could I simply add code to the user_allowed_map function for all custom maps that I want to "return FALSE"? For example, after the dm6 line add the following:

Code:
else if (m == "cleaver" ) { return FALSE ; } //


would this eliminate the custom map, cleaver.bsp, from being selected during the random map selection process?

Author:  desh [ Tue May 12, 2009 11:02 am ]
Post subject:  Re: Setting up a runequake Server

Slot Zero wrote:
desh wrote:
2)I want to be able to lock out certain game modes, but keep others available to vote. For example, I want the clients to be only able to vote between match, practice, and normal, but not be able to vote the game mode to rocket arena or head-hunters or anything else. Is there a way to do this?


Unfortunately this too is going to require you to modify the source and recompile. You'll need to open up the file vote.qc and in the function vote go through all of the various vote options and change the value of "cancel" to 1. Here is an example block of code specific to one vote option, in this case it's practice mode:

Code:
   else if (self.impulse == IMP_VOTE_PRACTICE)
   {
      cancel      = options & MODE_LOCKED;
      e.frag_rate   = 0.51;   // XXX move to settings.
      e.think1   = change_mode_to_practice;
      e.noise1   = "change";
      e.noise2   = " mode to practice";

      if (cancel)
         self_sprint (self, "mode is locked\n");
      else if (gamemode == MODE_PRACTICE)
      {
         self_sprint (self, "already in practice mode\n");
         cancel = 1;
      }
   }


If you wanted to turn off practice mode all the time, replace

Code:
      cancel      = options & MODE_LOCKED;

with
Code:
      cancel      = 1;


You can apply the same principle to any of the vote options.


But, there are other ways of disabling some of the other vote options, for example, vote-rune and vote-hook can be disabled through other means?

Quote:
Now I'm assuming that you're already familiar with how to compile the source code, but if you're not and need help please let me know.


Yeah, i can compile the code.

Author:  Slot Zero [ Tue May 12, 2009 2:47 pm ]
Post subject:  Re: Setting up a runequake Server

desh wrote:
But, there are other ways of disabling some of the other vote options, for example, vote-rune and vote-hook can be disabled through other means?


I know that vote-hook is one and vote-team is another, but not vote-rune. Although you might be able to prevent the availability of runes making it zero so regardless of what state vote-rune is in, no runes will ever appear. Some options are prevented from being triggered, like vote-quad for example if there aren't any quads of the level.

desh wrote:
To clarify, in the user_allowed_map function in the settings.qc file, after changing a map (for example e1m8) from "return TRUE" to "return FALSE" this map will not be selected during the random map selection process, but the map (e1m8) would still be able to be voted on and warped to by the clients?

To do this for custom maps, could I simply add code to the user_allowed_map function for all custom maps that I want to "return FALSE"? For example, after the dm6 line add the following:

Code:
else if (m == "cleaver" ) { return FALSE ; } //


would this eliminate the custom map, cleaver.bsp, from being selected during the random map selection process?


Nope. If you want to eliminate all custom maps from the level selection code edit the file map.qc in the functon select_map by changing

Code:
   if (!noexit & NOEXIT_NO_CUSTOM_LEVELS)

with
Code:
   if (0)


This will still give you the freedom of disabling the custom level voting if you wish (using noexit cvar), but will never select a custom map in the rotation.

Author:  desh [ Tue May 12, 2009 5:17 pm ]
Post subject:  Re: Setting up a runequake Server

Slot Zero wrote:
Nope. If you want to eliminate all custom maps from the level selection code edit the file map.qc in the functon select_map by changing


No, what I want to do is eliminate some of the custom maps from the random level selection code, but also keep the availability of having those maps eliminated from the level selection code to be selected by way of vote by the clients currently on the server.

Author:  Slot Zero [ Tue May 12, 2009 8:11 pm ]
Post subject:  Re: Setting up a runequake Server

desh wrote:
No, what I want to do is eliminate some of the custom maps from the random level selection code, but also keep the availability of having those maps eliminated from the level selection code to be selected by way of vote by the clients currently on the server.


The simplest way to do this is to edit the map-auto.qc script. Since this is a generated script though you would have to manually edit this each time you add/remove more maps so that new level impulses can be generated. You must also make sure that you when you generate the map-auto.qc file, you list the maps you don't want in the rotation last. Next, you need to modify the map-auto.qc script. Search for the function sized_custom_count, here is an example of what it might look like:

Code:
float (float levsize)
sized_custom_count =
{
   if (levsize == 1) return 9;
   if (levsize == 2) return 5;
   if (levsize == 3) return 4;
   return FALSE;
};


In the example above, it shows that I have 9 small levels in the custom rotation. If you generated the map-auto.qc as I suggested by putting the levels you want in the rotation first, all you need to do now is subtract the amount of levels you don't want played from the value per level size. NOTE: You can see what these levels are in the function sized_custom. Here is what my sized_custom function looks like for this example:

Code:
string (float levsize, float n)
sized_custom =
{
   if (levsize == 1) {
      if (n == 1) return "waltz";
      if (n == 2) return "haunted";
      if (n == 3) return "kjdm11";
      if (n == 4) return "bless";
      if (n == 5) return "pkeg2";
      if (n == 6) return "strafin4";
      if (n == 7) return "qcon1";
      if (n == 8) return "ztndm3";
      if (n == 9) return "ztndm5";
   }
   if (levsize == 2) {
      if (n == 1) return "atlantis";
      if (n == 2) return "nindm2";
      if (n == 3) return "park";
      if (n == 4) return "alkdm04";
      if (n == 5) return "ritual";
   }
   if (levsize == 3) {
      if (n == 1) return "kikdm3";
      if (n == 2) return "rtz";
      if (n == 3) return "jadm1";
      if (n == 4) return "deadzone";
   }
   return string_null;
};


So, if I changed 9 to 5 in the sized_custom_count function, only the first 5 small levels will be played: waltz, haunted, kjdm11, bless, pkeg2.

Hope this makes sense.

Author:  desh [ Tue May 12, 2009 9:40 pm ]
Post subject:  Re: Setting up a runequake Server

Yes, that makes perfect sense. I had been looking at the map-auto.qc file a lot, so I was wondering if there was something there I could do. I was hesitant, however, because it is automatically generated.

When and how is this file automatically generated? I guess what I'm getting at, is if map-auto.qc is automatically generated, where would I add custom maps?

Author:  Slot Zero [ Tue May 12, 2009 9:46 pm ]
Post subject:  Re: Setting up a runequake Server

It's a perl script called map, found in the 'src' folder. If you don't have perl on your system, there is also an online script that can be found here:

http://www.runequake.com/maps/script/

Enter in your levels, remember to include the ones you don't want in the rotation at the end for each size, and then click the generate button.

Author:  desh [ Tue May 12, 2009 9:48 pm ]
Post subject:  Re: Setting up a runequake Server

ok, got it.

sized_map_count is for the original id maps and sized_custom count is for the custom maps, right?

Author:  Slot Zero [ Tue May 12, 2009 10:12 pm ]
Post subject:  Re: Setting up a runequake Server

Yes, however, I should point out that the level selection code for standard maps differs greatly from the custom maps. It might be more effective to edit the user_allowed_map in settings.qc for standard. Also, anytime you make changes related to the custom maps and you need to recompile, you should completely exit out the server and start up. This will ensure all custom maps are read back into the hunk. Alternatively you can type update-hunkinit from the server, but if you added new maps then you'll need to type update-bindings as well. It's probably easier to just restart the server, but I've never made mention to these commands before so I figured I'd air them our here.

Author:  desh [ Wed May 13, 2009 6:43 pm ]
Post subject:  Re: Setting up a runequake Server

Ok, I ran into another problem. For some reason when starting up the server, the startlevel commands aren't registering. I'm using the following startlevel.cfg:

Code:
alias w1 "wait"
alias w5 "w1;w1;w1;w1;w1"
alias w10 "w5;w5"
alias w15 "w10;w5"
megaon;w5;
suiton;w5;
quadon;w5;
pentoff;w5;
ringon;w5;
classicmegaon;w5;
randomspawnon;w5;
runesoff;w5;
hookoff;w5;
altsoff;w5;
shieldsoff;w5;
armordropoff;w5;
rotateoff;w5;
powerupdropoff;w5;
faststarton;w5;
weaponsstayon;w5;
backpackson;w5;
echo startlevel.cfg is empty
//eof


All of the commands, eg, runesoff, hookoff, altsoff, etc. aren't registering:

Unknown command "runesoff"
Unknown command "altsoff"
Unknown command "shieldsoff"

This was working on one computer, but when i copied the progs.dat over to another computer I got this error. How can I resolve this?

Edit: Also, when going to the server prompt, the "commands" command doesn't work either.

Author:  Slot Zero [ Wed May 13, 2009 6:51 pm ]
Post subject:  Re: Setting up a runequake Server

Maybe the progs.dat is in the wrong folder? Or you didn't specify the -game directory? Do you see the message "execing startlevel.cfg"?

Author:  desh [ Wed May 13, 2009 7:27 pm ]
Post subject:  Re: Setting up a runequake Server

yes, it execs the startlevel.cfg (that's why it says unknown command for all the commands). The server is still runequake server because if i connect to it, it starts up with the runequake display screen, and all the client side commands work.

Author:  Slot Zero [ Wed May 13, 2009 7:42 pm ]
Post subject:  Re: Setting up a runequake Server

Add +developer 1 to the command line and start the server again, then paste the entire console out here. Also, what's differen't about the new system (OS, proquake version?)

Author:  desh [ Wed May 13, 2009 8:06 pm ]
Post subject:  Re: Setting up a runequake Server

This is my command line:

Code:
wqpro -game runequake -heapsize 128000 -mep 64 -dedicated 16 +developer 1 +map dm6


I still get the same issue.

Author:  Slot Zero [ Wed May 13, 2009 8:25 pm ]
Post subject:  Re: Setting up a runequake Server

Check your config.cfg on the new machine and remove any saved1, saved2, saved3, and saved4 values and make them zero. You probably ran the mod in listen mode and then exited the server and those values got saved to config.cfg when you exited. If you don't use config.cfg for anything or rarely modify it, change the attributes to read only.

Author:  desh [ Wed May 13, 2009 10:31 pm ]
Post subject:  Re: Setting up a runequake Server

Yep, that did the trick. Thanks a lot.

Is there a way to set it up so the client can see all the available custom maps? After setting the following in maps-auto.qc:

Code:
float (float levsize)
sized_custom_count =
{
   if (levsize == 1) return 1;
   if (levsize == 2) return 1;
   if (levsize == 3) return 1;
   //if (levsize == 1) return 41;
   //if (levsize == 2) return 78;
   //if (levsize == 3) return 40;
   return FALSE;
};


only the first map from each group (small, medium, and large) can be selected through the random map selection process. However, when typing the "custom" command, it only shows the first map of each group as well. Now the aliasing commands of all the maps is still intact (e.g. using the command "cleaver" or "ztndm3" will still initiate a vote to change the map to cleaver.bsp or ztndm3.bsp, respectively), but all the available maps on the server are not listed when the "custom" command is issued.

Author:  Slot Zero [ Wed May 13, 2009 10:50 pm ]
Post subject:  Re: Setting up a runequake Server

The custom command uses the function sized_custom_count, which you modified. A quick solution would be to duplicate the original function, you can call it sized_custom_count_real for example...

Code:
// this is your modified function
float (float levsize)
sized_custom_count =
{
   if (levsize == 1) return 1;
   if (levsize == 2) return 1;
   if (levsize == 3) return 1;
   return FALSE;
};

// this is a copy of the new original function, but with a new name
float (float levsize)
sized_custom_count_real =
{
   if (levsize == 1) return 41;
   if (levsize == 2) return 78;
   if (levsize == 3) return 40;
   return FALSE;
};


Next, in rjs.qc search for sized_custom_count and change it to sized_custom_count_real, which is located in the function custom_sprint.

Author:  desh [ Thu May 14, 2009 12:20 pm ]
Post subject:  Re: Setting up a runequake Server

I think I also need to add

Code:
float (float levsize) sized_custom_count_real;


to the func.qc file as well.

Page 1 of 2 All times are UTC - 5 hours [ DST ]
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/