Added some new commands since I noticed some people typing in stuff:
vote, help, mapvote, commands
They all print out the mapvote instructions in the console.
Announcement
Collapse
No announcement yet.
r0t.co.uk servers
Collapse
X
-
Added mapvote to the coop server now (start - end). I'll add some more single player maps when I've checked out a few more (Quake Injector is really handy).
Leave a comment:
-
Also added in my Qview server list for the ones using different engines! Nice ping, cya there for some frags!
Leave a comment:
-
Both of your servers are added to the quakeone serverlist.Originally posted by slackhead View PostOk so I have set up two servers - one DM and one Coop. Info here:
Quake @ www.r0t.uk
(The URL will be changing to r0t.uk as soon as the domain register fix the nameserver issues I'm having with that.)
Quite a large collection of maps but DP doesn't seem (as far as I can tell) to have any way of making a map cycle etc.
Are there any mapvote mods that will work with DP? I haven't found anything yet.
People using proquake and qrack see also your servers online now.
r0t_Deathmatch on the frontpage and r0t_Coop in the europe section.
Leave a comment:
-
I notice that there is a client.qc.bak so I may be able to restore that and the edits in progs.qc and have a complete clean source.
Leave a comment:
-
Try to modified this from Baker: http://www.quake-1.com/files/sourcec...oq_votable.zip
I used that source for my example.
Leave a comment:
-
Question about your quakec code: it compiles without warnings, but the source that I downloaded from a link on inside3D: http://www.quaketastic.com/upload/fi...akec/id1qc.zip gives multiple warnings (19 in all).
Is there a better place to grab the qc source from?
Leave a comment:
-
Thanks that's great.
I'm wondering if it's possible to read in the maplist from a separate file? That way it'd be fairly easy to create a list using a bash script. Something I will look into.
Leave a comment:
-
To add maps with that its pretty easy but alot of work
Here is a example to add 2 maps aerowalk and q3dm6qw :
Modified: vote.qc
Look at all the orange stuff I added.
And don't forget to changes the number of maps on line 241. (its now at 40 in this example)
After adding the maps run frikqcc25.exeCode:void (string mapcmd, float imp) vote_alias_make = { local string s; stuffcmd (self, "alias "); stuffcmd (self, mapcmd); stuffcmd (self, " \"vote0; w5; w5; impulse "); s = ftos (imp); stuffcmd (self, s); stuffcmd (self, "; w5\"\n"); //s = ftos (VOTE_PRIMARY_IMPULSE); //stuffcmd (self, s); //stuffcmd (self, ";w5;impulse "); }; void () vote_aliases = { local string s; vote_alias_make ("e1m1", 1); vote_alias_make ("e1m2", 2); vote_alias_make ("e1m3", 3); vote_alias_make ("e1m4", 4); vote_alias_make ("e1m5", 5); vote_alias_make ("e1m6", 6); vote_alias_make ("e1m7", 7); vote_alias_make ("e1m8", 8); vote_alias_make ("e2m1", 9); vote_alias_make ("e2m2", 10); vote_alias_make ("e2m3", 11); vote_alias_make ("e2m4", 12); vote_alias_make ("e2m5", 13); vote_alias_make ("e2m6", 14); vote_alias_make ("e2m7", 15); vote_alias_make ("e3m1", 16); vote_alias_make ("e3m2", 17); vote_alias_make ("e3m3", 18); vote_alias_make ("e3m4", 19); vote_alias_make ("e3m5", 20); vote_alias_make ("e3m6", 21); vote_alias_make ("e3m7", 22); vote_alias_make ("e4m1", 23); vote_alias_make ("e4m2", 24); vote_alias_make ("e4m3", 25); vote_alias_make ("e4m4", 26); vote_alias_make ("e4m5", 27); vote_alias_make ("e4m6", 28); vote_alias_make ("e4m7", 29); vote_alias_make ("e4m8", 30); vote_alias_make ("dm1", 31); vote_alias_make ("dm2", 32); vote_alias_make ("dm3", 33); vote_alias_make ("dm4", 34); vote_alias_make ("dm5", 35); vote_alias_make ("dm6", 36); vote_alias_make ("start", 37); vote_alias_make ("end", 38); [COLOR="DarkOrange"]vote_alias_make ("aerowalk", 39); vote_alias_make ("q3dm6qw", 40);[/COLOR] s = ftos (VOTE_YES_IMPULSE); stuffcmd (self, "alias yes \"impulse "); stuffcmd (self, s); stuffcmd (self, "\"\n"); s = ftos (VOTE_NO_IMPULSE); stuffcmd (self, "alias no \"impulse "); stuffcmd (self, s); stuffcmd (self, "\"\n"); s = ftos (VOTE_PRIMARY_IMPULSE); stuffcmd (self, "alias vote0 \"impulse "); stuffcmd (self, s); stuffcmd (self, "\"\n"); stuffcmd (self, "alias w5 \"wait;wait;wait;wait;wait\"\n"); }; string (float n) number_to_map = { if (n == 1) return "e1m1"; else if (n == 2) return "e1m2"; else if (n == 3) return "e1m3"; else if (n == 4) return "e1m4"; else if (n == 5) return "e1m5"; else if (n == 6) return "e1m6"; else if (n == 7) return "e1m7"; else if (n == 8) return "e1m8"; else if (n == 9) return "e2m1"; else if (n == 10) return "e2m2"; else if (n == 11) return "e2m3"; else if (n == 12) return "e2m4"; else if (n == 13) return "e2m5"; else if (n == 14) return "e2m6"; else if (n == 15) return "e2m7"; else if (n == 16) return "e3m1"; else if (n == 17) return "e3m2"; else if (n == 18) return "e3m3"; else if (n == 19) return "e3m4"; else if (n == 20) return "e3m5"; else if (n == 21) return "e3m6"; else if (n == 22) return "e3m7"; else if (n == 23) return "e4m1"; else if (n == 24) return "e4m2"; else if (n == 25) return "e4m3"; else if (n == 26) return "e4m4"; else if (n == 27) return "e4m5"; else if (n == 28) return "e4m6"; else if (n == 29) return "e4m7"; else if (n == 30) return "e4m8"; else if (n == 31) return "dm1"; else if (n == 32) return "dm2"; else if (n == 33) return "dm3"; else if (n == 34) return "dm4"; else if (n == 35) return "dm5"; else if (n == 36) return "dm6"; else if (n == 37) return "start"; else if (n == 38) return "end"; [COLOR="DarkOrange"]else if (n == 39) return "aerowalk"; else if (n == 40) return "q3dm6qw";[/COLOR] return string_null; }; float (string s) map_to_number = { if (s == "e1m1") return 1; else if (s == "e1m2") return 2; else if (s == "e1m3") return 3; else if (s == "e1m4") return 4; else if (s == "e1m5") return 5; else if (s == "e1m6") return 6; else if (s == "e1m7") return 7; else if (s == "e1m8") return 8; else if (s == "e2m1") return 9; else if (s == "e2m2") return 10; else if (s == "e2m3") return 11; else if (s == "e2m4") return 12; else if (s == "e2m5") return 13; else if (s == "e2m6") return 14; else if (s == "e2m7") return 15; else if (s == "e3m1") return 16; else if (s == "e3m2") return 17; else if (s == "e3m3") return 18; else if (s == "e3m4") return 19; else if (s == "e3m5") return 20; else if (s == "e3m6") return 21; else if (s == "e3m7") return 22; else if (s == "e4m1") return 23; else if (s == "e4m2") return 24; else if (s == "e4m3") return 25; else if (s == "e4m4") return 26; else if (s == "e4m5") return 27; else if (s == "e4m6") return 28; else if (s == "e4m7") return 29; else if (s == "e4m8") return 30; else if (s == "dm1") return 31; else if (s == "dm2") return 32; else if (s == "dm3") return 33; else if (s == "dm4") return 34; else if (s == "dm5") return 35; else if (s == "dm6") return 36; else if (s == "start") return 37; else if (s == "end") return 38; [COLOR="DarkOrange"]else if (s == "aerowalk") return 39; else if (s == "q3dm6qw") return 40;[/COLOR] return FALSE; }; void () vote_map_change = { changelevel (request_mapname); }; //----------------------------------------------------------------------------------------- // Vote system - the skeleton/rules handling of voting void () vote_yes = { self.vflag = self.vflag | POQ_VOTE_YES; vote_print (2); }; void () vote_no = { self.vflag = self.vflag | POQ_VOTE_NO; vote_print (2); }; void (string vsound) vote_sound = { sound (self, CHAN_AUTO, vsound, 1, ATTN_NONE); }; void () vote_remove = { local entity e; e = find (world, classname, "player"); while (e != world) { if (e.vflag & POQ_VOTE_YES) e.vflag = e.vflag - (e.vflag & POQ_VOTE_YES); if (e.vflag & POQ_VOTE_NO) e.vflag = e.vflag - (e.vflag & POQ_VOTE_NO); e = find (e, classname, "player"); } e = find (world, classname, "vote_counter"); if (e) remove (e); }; void () vote_cancel = { vote_remove (); bprint ("\bVote canceled\n"); vote_sound ("doors/drclos4.wav"); }; void () vote_init_consider = { // Second impulse still hasn't come, wait for it if (self.impulse == VOTE_PRIMARY_IMPULSE) return; self.vflag = self.vflag - (self.vflag & POQ_VOTE_IDENTIFY); // // Found second impulse (add impulse handling below) // [COLOR="DarkOrange"]if (self.impulse >= 1 && self.impulse <= 40) // maps[/COLOR] { request_mapname = number_to_map (self.impulse); vote_init (request_mapname, vote_map_change); } self.impulse = 0; }; void (string s, void () func) vote_init = { local entity e; local string post; e = find (world, classname, "vote_counter"); if (e != world) { // If the command is the same as the // current vote, might as well yes it. if (s == e.message) vote_yes (); else sprint (self, "Vote in progress.\n"); return; } self.vflag = self.vflag | POQ_VOTE_YES; vote_spawn (s, func); }; float () vote_count = { local float yes, no, need, total, require; local entity e; e = find (world, classname, "player"); while (e) { if (e.vflag & POQ_VOTE_YES) yes = yes + 1; else if (e.vflag & POQ_VOTE_NO) no = no + 0.5; total = total + 1; e = find (e, classname, "player"); } require = total * 0.51; need = yes - no; need = ceil (require - need); return need; }; void (float print) vote_print = { local string s, desc; local entity e; local float need; e = find (world, classname, "vote_counter"); if (map_to_number (e.message) != 0) desc = "\bchange map to "; need = vote_count (); s = ftos (need); if (print == 1 && need > 0) // person who started vote, dont print if passable { vote_sound ("misc/talk.wav"); bprint (e.owner.netname); bprint (" \bvoted to\b "); bprint (desc); if (map_to_number (e.message) != 0) bprint (e.message); bprint (" �"); bprint (s); bprint ("‘\n"); bprint ("Type \byes\b or \bno\b in console\n"); } else if (print == 2) // other people's votes { bprint (self.netname); bprint (" \bvoted\n"); } // Enough votes, execute vote if (need <= 0) { e.use (); vote_remove (); vote_sound ("doors/drclos4.wav"); return; } // Vote status every so often if (print == 3) { vote_sound ("misc/talk.wav"); bprint ("\bVote to "); bprint (desc); if (map_to_number (e.message) != 0) bprint (e.message); bprint (" �"); bprint (ftos(need)); bprint ("‘\n"); bprint ("Type \byes\b or \bno\b in console\n"); } }; void () vote_think = { // Not enough votes? cancel the vote if (self.vcount >= VOTE_PRINT_COUNT) { vote_cancel (); return; } // Print vote status every 10 seconds if (self.vdelay < time) { self.vdelay = time + VOTE_PRINT_DELAY; self.vcount = self.vcount + 1; if (self.vcount < 5) vote_print (3); } self.nextthink = time + 0.25; }; void (string mode_name, void () func) vote_spawn = { local entity e; if (intermission_running) return; e = spawn (); e.owner = self; e.use = func; e.classname = "vote_counter"; e.message = mode_name; e.vdelay = time + VOTE_PRINT_DELAY; e.vcount = 0; e.think = vote_think; e.nextthink = time + 0.25; vote_print (1); }; void () vote_impulse = { local entity e; e = find (world, classname, "vote_counter"); if (!e) { sprint (self, "No vote in progress.\n"); return; } // Vote yes if (self.impulse == VOTE_YES_IMPULSE) { if (self.vflag & POQ_VOTE_NO) { sprint (self, "You \bremoved\b your no vote\n"); self.vflag = self.vflag - (self.vflag & POQ_VOTE_NO); } if (!self.vflag & POQ_VOTE_YES) vote_yes (); } // Vote no else if (self.impulse == VOTE_NO_IMPULSE && e.owner != self) // player who started vote cant remove his vote { if (self.vflag & POQ_VOTE_YES) { sprint (self, "You \bremoved\b your yes vote\n"); self.vflag = self.vflag - (self.vflag & POQ_VOTE_YES); } if (!self.vflag & POQ_VOTE_NO) vote_no (); } };
Done.
progs.dat will be created.Last edited by Polarite; 09-03-2014, 06:17 PM.
Leave a comment:
-
Yeah I was the only one on the server at the time. Feel free to join.
Leave a comment:
-
@slackhead
This is because you are the only one on the server yes? Or did you not run it dedicated 16? I believe that only happens if you are the only one of the server. Want me to join to test?Just tested and making a voter directory and using -game voter works. I had to enter the map twice to get it to change but that's maybe because it's a majority vote? Anyway I will carry on and see how it works with other players.
Leave a comment:
-
Thanks
I've grabbed the source which compiles fine on my linux box using wine. I need a bit of a primer on quakec, but I have a lot of years experience writing UnrealTournament mods so hopefully it'll fall into place.
*Edit:
Just tested and making a voter directory and using -game voter works. I had to enter the map twice to get it to change but that's maybe because it's a majority vote? Anyway I will carry on and see how it works with other players.
Leave a comment:
-
Runequake would probably be your best option but It would be rather easy to code into your own progs.dat a simple map system that could support several hundred maps that could be voted on. In fact the code would be extremely easy. Just in case you don't want all the fancy Runequake stuff but you can run the server with all of it turned off anyway. Eh.
EDIT: In fact, I found this little nugget just now on this forum!
Baker and Bam at it again! Here!
Something like this would be very easy to modify to your liking to support all of your custom maps.
Leave a comment:
-
Nice
I will look into RQuake, but I am concerned about DM more than Coop - I have ~ 300 maps but there doesn't seem to be any way for players to play them at the moment :/
Leave a comment:
Leave a comment: