Rune Central http://forums.runecentral.com/ |
|
Runequake Server Configuration Suggestions http://forums.runecentral.com/viewtopic.php?f=1&t=1748 |
Page 2 of 2 |
Author: | Mezmorki [ Fri Sep 25, 2015 11:54 am ] |
Post subject: | Re: Runequake Server Configuration Suggestions |
Will WinQuake work on a 64-bit OS? I guess my server machine is only 32-bit, so it should run on that. I'll try it out and see if its works as an alternative to proquake. |
Author: | Mezmorki [ Fri Sep 25, 2015 2:27 pm ] |
Post subject: | Re: Runequake Server Configuration Suggestions |
I promised three QC issues with my mod ... so here's the last Issue #3 - QuadDrop Feature Glitched The Reinc mod has a feature for power up drops (like runequake). However, the implementation doesn't work. When you pick up a dropped powerup (quad for example) your damage doesn't go up to 4x levels and you get stuck with the quad effect. Ugh. Below I think is the relevant code from gen_misc.qc: Code: void(entity e) DropPowerup = { local entity ring, quad; if((gamestatus & G_BERSERKMODE) || (e.state & S_BERSERK)) //That would be some dropped quads too much =) return; if(e.quadtime > time) { quad = spawn(); quad.origin = e.origin - '0 0 24'; quad.netname = "Quad Damage"; quad.classname = "item_artifact_super_damage"; quad.health = (e.quadtime - time) + 1; quad.velocity_z = 300; quad.velocity_x = -100 + (random() * 200); quad.velocity_y = -100 + (random() * 200); quad.flags = FL_ITEM; quad.solid = SOLID_TRIGGER; quad.movetype = MOVETYPE_TOSS; quad.noise = "items/damage.wav"; quad.items = IT_QUAD; setsize (quad, '-16 -16 -24', '16 16 32'); setmodel (quad, "progs/quaddama.mdl"); quad.touch = powerup_touch; quad.state = S_DROPPED; quad.classname = "tossedquad"; quad.nextthink = time + quad.health * 2; // remove after a certain time quad.think = SUB_Remove; } if(e.ringtime > time) { ring = spawn(); ring.origin = e.origin - '0 0 24'; ring.netname = "Ring of Shadows"; ring.classname = "item_artifact_invisibility"; ring.health = (e.ringtime - time) + 1; ring.velocity_z = 300; ring.velocity_x = -100 + (random() * 200); ring.velocity_y = -100 + (random() * 200); ring.flags = FL_ITEM; ring.solid = SOLID_TRIGGER; ring.movetype = MOVETYPE_TOSS; ring.noise = "items/inv1.wav"; ring.items = IT_INVISIBILITY; setsize (ring, '-16 -16 -24', '16 16 32'); setmodel (ring, "progs/invisibl.mdl"); ring.touch = powerup_touch; ring.state = S_DROPPED; ring.classname = "tossedring"; ring.nextthink = time + ring.health * 2; // remove after a certain time ring.think = SUB_Remove; } }; It might also dovetail with this code in items.qc: Code: void() item_artifact_super_damage = { // < GeN saved1 = cvar("saved1"); if(saved1 & SK_NOQUAD) { remove(self); return; } self.health = 30; // GeN > self.touch = powerup_touch; precache_model ("progs/quaddama.mdl"); precache_sound ("items/damage.wav"); precache_sound ("items/damage2.wav"); precache_sound ("items/damage3.wav"); self.noise = "items/damage.wav"; setmodel (self, "progs/quaddama.mdl"); self.netname = "Quad Damage"; self.items = IT_QUAD; setsize (self, '-16 -16 -24', '16 16 32'); StartItem (); }; Power_Up Touch Section Code: /*
=============================================================================== POWERUPS =============================================================================== */ void() powerup_touch; void() powerup_touch = { local entity stemp; local float best; if (other.classname != "player") return; if (other.health <= 0) return; // < GeN if(!temp1 & T_NOMESSAGES) { // GeN > sprint (other, "You got the "); // < GeN if((self.netname == "Quad Damage") && (deathmatch & D_OCTADAMAGE)) sprint (other, "Octa Damage"); else // GeN > sprint (other, self.netname); sprint (other,"\n"); // < GeN } if (!self.state & S_DROPPED) //was not dropped by a player // GeN > { self.mdl = self.model; if ((self.classname == "item_artifact_invulnerability") || (self.classname == "item_artifact_invisibility")) self.nextthink = time + 60*5; else self.nextthink = time + 60; self.think = SUB_regen; } sound (other, CHAN_VOICE, self.noise, 1, ATTN_NORM); stuffcmd (other, "bf\n"); self.solid = SOLID_NOT; other.items = other.items | self.items; self.model = string_null; // do the apropriate action if (self.classname == "item_artifact_envirosuit") { other.rad_time = 1; other.radsuit_finished = time + 30; } if (self.classname == "item_artifact_invulnerability") { other.invincible_time = 1; // < GeN other.invincible_finished = time + self.health; // GeN > } if (self.classname == "item_artifact_invisibility") { other.invisible_time = 1; // < GeN other.invisible_finished = time + self.health; // GeN > } if (self.classname == "item_artifact_super_damage") { other.super_time = 1; // < GeN other.super_damage_finished = time + self.health; // GeN > } activator = other; SUB_UseTargets(); // fire all targets / killtargets // < GeN if(self.state & S_DROPPED) remove(self); // GeN > }; /*QUAKED item_artifact_invulnerability (0 .5 .8) (-16 -16 -24) (16 16 32) Player is invulnerable for 30 seconds */ void() item_artifact_invulnerability = { // < GeN saved1 = cvar("saved1"); if(saved1 & SK_NOPENT) { remove(self); return; } self.health = 30; // GeN > self.touch = powerup_touch; precache_model ("progs/invulner.mdl"); precache_sound ("items/protect.wav"); // < GeN // precache_sound ("items/protect2.wav"); // precache_sound ("items/protect3.wav"); // GeN > self.noise = "items/protect.wav"; setmodel (self, "progs/invulner.mdl"); self.netname = "Pentagram of Protection"; self.items = IT_INVULNERABILITY; setsize (self, '-16 -16 -24', '16 16 32'); StartItem (); }; /*QUAKED item_artifact_envirosuit (0 .5 .8) (-16 -16 -24) (16 16 32) Player takes no damage from water or slime for 30 seconds */ void() item_artifact_envirosuit = { self.touch = powerup_touch; precache_model ("progs/suit.mdl"); precache_sound ("items/suit.wav"); precache_sound ("items/suit2.wav"); self.noise = "items/suit.wav"; setmodel (self, "progs/suit.mdl"); self.netname = "Biosuit"; self.items = IT_SUIT; setsize (self, '-16 -16 -24', '16 16 32'); StartItem (); }; /*QUAKED item_artifact_invisibility (0 .5 .8) (-16 -16 -24) (16 16 32) Player is invisible for 30 seconds */ void() item_artifact_invisibility = { // < GeN saved1 = cvar("saved1"); if(saved1 & SK_NORING) { remove(self); return; } self.health = 30; // GeN > self.touch = powerup_touch; precache_model ("progs/invisibl.mdl"); //drop powerups precache_sound ("items/inv1.wav"); precache_sound ("items/inv2.wav"); precache_sound ("items/inv3.wav"); self.noise = "items/inv1.wav"; setmodel (self, "progs/invisibl.mdl"); self.netname = "Ring of Shadows"; self.items = IT_INVISIBILITY; setsize (self, '-16 -16 -24', '16 16 32'); StartItem (); }; /*QUAKED item_artifact_super_damage (0 .5 .8) (-16 -16 -24) (16 16 32) The next attack from the player will do 4x damage */ void() item_artifact_super_damage = { // < GeN saved1 = cvar("saved1"); if(saved1 & SK_NOQUAD) { remove(self); return; } self.health = 30; // GeN > self.touch = powerup_touch; precache_model ("progs/quaddama.mdl"); precache_sound ("items/damage.wav"); precache_sound ("items/damage2.wav"); precache_sound ("items/damage3.wav"); self.noise = "items/damage.wav"; setmodel (self, "progs/quaddama.mdl"); self.netname = "Quad Damage"; self.items = IT_QUAD; setsize (self, '-16 -16 -24', '16 16 32'); StartItem (); }; /* |
Author: | Mezmorki [ Fri Sep 25, 2015 3:42 pm ] |
Post subject: | Re: Runequake Server Configuration Suggestions |
Back to tweaking the RuneQuake defaults: Code: // alt weapons on if (options & NO_ALT_WEAPONS) setalts (); What would I change in this (random example) to turn alt weapons OFF? "setalts (1);" ? Related to this ... is it possible to have a command exec a fixed cfg file? For example, if I switch to ARENA mode, rather than setting all the defaults in the QC, it simply reads an "arena.cfg" file that where you could have full control over specifying options. Any possibility for such a thing? |
Author: | Slot Zero [ Fri Sep 25, 2015 7:39 pm ] |
Post subject: | Re: Runequake Server Configuration Suggestions |
Mezmorki wrote: Will WinQuake work on a 64-bit OS? Yes. Mezmorki wrote: Back to tweaking the RuneQuake defaults: Code: // alt weapons on if (options & NO_ALT_WEAPONS) setalts (); What would I change in this (random example) to turn alt weapons OFF? "setalts (1);" ? if (!options & NO_ALT_WEAPONS) // <-- Add the ! (NOT) in front. Mezmorki wrote: Issue #3 - QuadDrop Feature Glitched The Reinc mod has a feature for power up drops (like runequake). However, the implementation doesn't work. I think I need to see powerup_touch() as well. |
Author: | Mezmorki [ Fri Sep 25, 2015 8:41 pm ] |
Post subject: | Re: Runequake Server Configuration Suggestions |
Slot Zero wrote: I think I need to see powerup_touch() as well. Whuf. I added that section to my prior post as a third code block. The code is ... uhh ... a mess I think! |
Author: | Mezmorki [ Sat Sep 26, 2015 9:52 pm ] |
Post subject: | Re: Runequake Server Configuration Suggestions |
RuneQuake Configuration Questions: I got RuneQuake to compile with my settings and and custom map set (using this to build the maps-auto.qc file: http://www.runequake.com/maps/script/). I'm trying to retool the default mode (or any mode) and quickly be able to reapply change via a config file (e.g. RunesFFA.cfg). Many of the options I want to control in this file are the toggles (e.g. runeson/runesoff, shieldson/shieldsoff, and so forth). In digging around the source, these are all in defs.qc: Code: // options float options; float NO_QUAD = 1; float NO_PENT = 2; float NO_RING = 4; float NO_SUIT = 8; float NO_ARMOR = 16; float ARMOR_ROTATE = 32; float NO_RUNES = 64; float NO_ALT_WEAPONS = 128; float NO_SPAWN_SHIELDS = 256; float NO_HOOK_DAMAGE = 512; float NO_MEGA = 1024; float FASTSTART = 2048; float NO_BACKPACKS = 4096; float CLASSIC_MEGA = 8192; float MODE_LOCKED = 16384; float WEAPONS_STAY = 32768; float NO_DROP_POWERUP = 65536; float NO_DROP_ON_DEATH = 131072; float NO_DROP_ARMOR = 262144; float NO_DISCHARGE = 524288; float RANDOM_SPAWN = 1048576; float SHOOT_BUTTONS = 2097152; float NO_POWERUP_HATS = 4194304; //float [FREE] = 8388608; However, "options" does not appear to be a functional cvar like deathmatch, teamplay, scratch1, etc. Trying to add up these bit values and change it in the server console doesn't work. Alternatively I tried adding the direct toggles (e.g. shieldsoff and runesoff) in the my config file, but that doesn't seem to be working reliably at all (I still have spawn shields and runes showing up). When I exec the config, it reports these things being toggled off, but in-game the aren't. So - what is the proper way that I can control the above options through a config file? Or can I only do it through the defaults? Below is my config file for reference: Code: //-------------------------------------------------------------------------
//RuneQuake 1.4 Server Config File - FFA "Normal" Mode //------------------------------------------------------------------------- hostname "13 Acres of Hell! Custom DM Maps" fraglimit 30 timelimit 15 pausable 0 sv_aim 1 sys_ticrate 0.05 net_messagetimeout 30 samelevel 0 //------------------------------------------------------------------------- // OPTION TOGGLES - Use "on" or "off" //------------------------------------------------------------------------- options weaponsstayoff //WEAPONS_STAY = 32768; powerupdropon //NO_DROP_POWERUP = 65536; quadon //NO_QUAD = 1; penton //NO_PENT = 2; ringon //NO_RING = 4; suiton //NO_SUIT = 8; runesoff //NO_RUNES = 64; armoron //NO_ARMOR = 16; rotateoff //ARMOR_ROTATE = 32; altsoff //NO_ALT_WEAPONS = 128; shieldsoff //NO_SPAWN_SHIELDS = 256; hookdamageoff //NO_HOOK_DAMAGE = 512; megaon //NO_MEGA = 1024; classicmegaon //CLASSIC_MEGA = 8192; faststarton //FASTSTART = 2048; //Toggle between 20 and 60 second match start? backpackson //NO_BACKPACKS = 4096; modeunlock //MODE_LOCKED = 16384; //????? //NO_DROP_ON_DEATH = 131072; armordropoff //NO_DROP_ARMOR = 262144; lgdischargeon //NO_DISCHARGE = 524288; randomspawnoff //RANDOM_SPAWN = 1048576; shootbuttonsoff //SHOOT_BUTTONS = 2097152; poweruphatsoff //NO_POWERUP_HATS = 4194304; hookoff //hookon OR hooklithium //------------------------------------------------------------------------- deathmatch 17 // 1 items respawn DM_RESPAWN // 2 long quad respawn DM_LONG_QUAD_RESPAWN // 4 quad replacement DM_QUAD_REPLACEMENT // 8 pentagram replacement DM_PENT_REPLACEMENT // 16 exit attempt doesn't kill you DM_EXIT_NON_FATAL // 32 random powerup respawn DM_RANDOM_POWERUP_RESPAWN // 64 damage-based frag scoring DM_DAMAGE_MATCH //------------------------------------------------------------------------- teamplay 0 // 1 health protect TEAM_HEALTH_PROT // 2 frag penalty TEAM_FRAG_PENALTY // 4 armor protect TEAM_ARMOR_PROT // 8 enforce two teams TEAM_2_TEAMS // 16 enforce three teams TEAM_3_TEAMS // 24 enforce four teams TEAM_4_TEAMS // 32 match mode TEAM_MODE_MATCH // 128 team change top dog TEAM_CHANGE_TOPDOG // 256 no team voting TEAM_NO_VOTE // 512 team self health protect TEAM_SELF_HEALTH_PROT // 1024 team self armor protect TEAM_SELF_ARMOR_PROT //------------------------------------------------------------------------- noexit 2053 // 1* no exiting NOEXIT_NO_EXITING // 2 allow start level exit NOEXIT_ALLOW_EXITING_START // 4* randomize NOEXIT_RANDOMIZE // 8 select level by number of players NOEXIT_CHOOSE_BY_NPLAYERS // 16 use Marlinspike levels NOEXIT_MARLINSPIKE_LEVELS // 32 don't loop back to dm1 after dm6 NOEXIT_DM_NO_LOOP // 64 * max players before forwarding NOEXIT_FORWARD_MULT // 1024 don't use custom levels NOEXIT_NO_CUSTOM_LEVELS // 2048* don't use standard maps NOEXIT_CUSTOM_LEVELS_ONLY // 4096 allow voting non-rotatable maps NOEXIT_VOTE_ALL_MAPS //------------------------------------------------------------------------- temp1 4 // 1-63 number of runes T1_NRUNES_MASK // 64 rune selection by impulse T1_RUNE_CHEAT // 256 can pick up own rune T1_CAN_GET_OWN_RUNE // 1024 random rune models T1_RANDOM_RUNE_MODELS // 2048 fast rune spawn T1_FAST_RUNE_SPAWN // 4096 * max players T1_MAX_PLAYERS_MULT //------------------------------------------------------------------------- scratch1 16 // 1 equalize all lightstyles S1_EQUALIZE_LIGHTSTYLE // 2 turn off all ambient sounds S1_AMBIENT_SOUND_OFF // 4 don't spawn any static lights S1_LIGHT_MAKESTATIC_OFF // 8 bprint prints to server console S1_BPRINT_TO_CONSOLE // 16* keep existing level items S1_ORIGINAL_LEVELS // 32 limit max traps per rune S1_MAX_TRAPS_FOR_LEVEL // 64 basic/lite runes S1_BASIC_RUNES // 128 custom exits S1_CUSTOM_EXITS // 1024 no default mode S1_NO_DEFAULT // 2048 default mode arena S1_ARENA_DEFAULT // 4096 default mode practice S1_PRACTICE_DEFAULT // 8192 default mode match S1_MATCH_DEFAULT // 16384 default head hunters S1_HEADS_DEFAULT |
Author: | Mezmorki [ Sat Sep 26, 2015 10:31 pm ] |
Post subject: | Re: Runequake Server Configuration Suggestions |
Some bizarre is going on. I edited the defaults for normal mode in the team.qc file. when the server launches, everything is fine and the options are as the defaults are changed. However, if I vote to change the level or changelevel in the server console, the settings for "normal" revert back to the default settings and NOT what is specified in the team.qc file. What's going on? Any thoughts? EDIT: This might be part of the problem. I'm using WinQuake, and I just noticed that whenever the "options" are processed, either via console, the defaults (when a new map loads?) there is a delay between them and the console spits out the following error line:"cvar set: variable cl_crossy not found" EDIT2: Here's a detailed proceedure of what's going wrong. 1) Launch dedicated 2) type "help-options" 3) I can see that the desired options are set to on or off per the defaults in team.qc 4) change the map through the server or voting 5) the options revert to the "original" defaults permanently. A few times I've seen the cl_crossy error where it appears to have processed something and the settings change, but that never happens if players are or ever were in the server. I'm assuming this behavior isn't intended. EDIT3: If I change the mode to practice or arena (anything other than normal) and try to go back to normal mode, it says "already in normal mode." Maybe related? EDIT4: This appears to be an issue with WINQUAKE. I switched to ProQuake 3.5 as a server and the behavior works correctly with the settings carrying over when the map changes. Only problem is that ProQuake, for whatever reason, won't accept external client connections when I'm using it as a dedicated server. Everything else works fine, Qrack, WinQuake, etc. So as i said some time ago - I feel like I get thwarted at every single turn on this endeavor. Grrr..... |
Author: | Slot Zero [ Sat Sep 26, 2015 11:23 pm ] |
Post subject: | Re: Runequake Server Configuration Suggestions |
Mezmorki wrote: I edited the defaults for normal mode in the team.qc file. when the server launches, everything is fine and the options are as the defaults are changed. However, if I vote to change the level or changelevel in the server console, the settings for "normal" revert back to the default settings and NOT what is specified in the team.qc file. What's going on? Any thoughts? If you're going to modify the default settings in team.qc, then you do not need a config file telling the server what options you want to turn on and off. It sounds like you have conflicting default options vs config options. If you modify the options in team.qc, then you don't even need a config these options. Simply set the default mode to whatever set of options you want. (Normal is on by default) Each time you switch to a new mode, team.qc will set the new options for you. Mezmorki wrote: This might be part of the problem. I'm using WinQuake, and I just noticed that whenever the "options" are processed, either via console, the defaults (when a new map loads?) there is a delay between them and the console spits out the following error line:"cvar set: variable cl_crossy not found" The options to set but it takes 10 seconds or so when the server loads a new map. Such that the first person to spawn has shields, could switch to an alt weapon, etc. Out of curiosity, why are you using winquake versus proquake or manquake? If WinQuake works and proquake or manquake doesn't, than that is the more bizarre issue. To answer the question, the version of winquake you're using doesn't seem to have the cvars cl_crossx and cl_crossy available. Maybe it's an older version? I test mine on version 1.09. |
Author: | Mezmorki [ Sat Sep 26, 2015 11:58 pm ] |
Post subject: | Re: Runequake Server Configuration Suggestions |
I'm using the wq100.zip package that is floating around, which contains quake v 1.09? Unless I'm missing other files that need to go along with it? In game console says version 1.09. I have no idea why ProQuake doesn't work for me as a dedicated server. Totally bizarre and frustrating. |
Author: | Zop [ Sun Sep 27, 2015 7:27 pm ] |
Post subject: | Re: Runequake Server Configuration Suggestions |
The bug with that code is that the dropped powerup has a different classname than what the powerup_touch() function is expecting. Ii would recommend not using powerup_touch() at all for dropped powerups, since the function does things like respawn it, rather than just remove it. |
Author: | Mezmorki [ Wed Sep 30, 2015 10:54 am ] |
Post subject: | Re: Runequake Server Configuration Suggestions |
BTW - I've figured out why proquake didn't work. It needs to have winquake installed/unzipped into the quake folder first. doh! |
Author: | Mezmorki [ Mon Oct 05, 2015 8:45 am ] |
Post subject: | Re: Runequake Server Configuration Suggestions |
To myself (and Slot Zero): Here are some ideas for tweaking runequake that I am wanting to look into. Slot Zero is maybe looking into some of these already, we shall see! (1) Game mode .cfg files instead of the hardcoded defaults. When the server switches modes, it reads the associated config file for that mode and adjust the various default settings for that mode accordingly. (2) "Classic Deathmatch 3" (weapons stay) options. Rune Quake has the ammo-charging weapon thing when DM3 is enabled. I'd love an option for classic deathmatch 3 mode, where you cannot pick up ammo from weapon spawns if you already have the weapon. (3) Random level switching. This might be glitch/bug, but custom levels do no cycle in the list order specified in maps-auto.qc, but are always randomly chosen from the list regardless of whether random level flag is on or off. (4) Capture the Flag mode. Some bits and pieces of CTF code are in the QC I think, but implementing a full capture the flag mode would be awesome. One server to rule them all! (5) The Reinc server mod has a few nice features that could be cool to replicate: "Fair backpacks option" - this mode puts a players best weapon in their backpack, so fast switching to the shotgun if you are about to die cheese is reduced. "More gibs option" - yes, more gibs! (6) Possibly more default game options? I.E., a dedicated Head Hunters mode, CTF mode, Classic FFA mode. That's it for now! |
Page 2 of 2 | All times are UTC - 5 hours [ DST ] |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |