Announcement

Collapse
No announcement yet.

r0t.co.uk servers

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    @slackhead

    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.
    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?

    Comment


    • #17
      Yeah I was the only one on the server at the time. Feel free to join.

      -r0t.uk- cOOp - Mapvote - r0t.uk:26001
      -r0t.uk- DM - Mapvote - r0t.uk:26000

      Comment


      • #18
        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)

        Code:
        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 ();
        	}
        };
        After adding the maps run frikqcc25.exe
        Done.

        progs.dat will be created.
        Last edited by Polarite; 09-03-2014, 06:17 PM.
        My servers for the gamers:
        bigfoot.servequake.com / damage.servequake.com

        port 26000 EuroQuake
        port 26001 EuroQuake Coop


        newyork.quakeone.com
        Offline ATM
        fvf.servequake.com
        flanders.servegame.org / flanders.servequake.com
        Offline ATM
        newdm.servequake.com
        port 26010

        http://bigfoot.servequake.com (EuroQuake)
        sigpic

        Comment


        • #19
          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.

          -r0t.uk- cOOp - Mapvote - r0t.uk:26001
          -r0t.uk- DM - Mapvote - r0t.uk:26000

          Comment


          • #20
            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?

            -r0t.uk- cOOp - Mapvote - r0t.uk:26001
            -r0t.uk- DM - Mapvote - r0t.uk:26000

            Comment


            • #21
              Try to modified this from Baker: http://www.quake-1.com/files/sourcec...oq_votable.zip
              I used that source for my example.
              My servers for the gamers:
              bigfoot.servequake.com / damage.servequake.com

              port 26000 EuroQuake
              port 26001 EuroQuake Coop


              newyork.quakeone.com
              Offline ATM
              fvf.servequake.com
              flanders.servegame.org / flanders.servequake.com
              Offline ATM
              newdm.servequake.com
              port 26010

              http://bigfoot.servequake.com (EuroQuake)
              sigpic

              Comment


              • #22
                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.

                -r0t.uk- cOOp - Mapvote - r0t.uk:26001
                -r0t.uk- DM - Mapvote - r0t.uk:26000

                Comment


                • #23
                  Originally posted by slackhead View Post
                  Ok 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.
                  Both of your servers are added to the quakeone serverlist.
                  People using proquake and qrack see also your servers online now.

                  r0t_Deathmatch on the frontpage and r0t_Coop in the europe section.
                  My servers for the gamers:
                  bigfoot.servequake.com / damage.servequake.com

                  port 26000 EuroQuake
                  port 26001 EuroQuake Coop


                  newyork.quakeone.com
                  Offline ATM
                  fvf.servequake.com
                  flanders.servegame.org / flanders.servequake.com
                  Offline ATM
                  newdm.servequake.com
                  port 26010

                  http://bigfoot.servequake.com (EuroQuake)
                  sigpic

                  Comment


                  • #24
                    Thanks Polarite

                    -r0t.uk- cOOp - Mapvote - r0t.uk:26001
                    -r0t.uk- DM - Mapvote - r0t.uk:26000

                    Comment


                    • #25
                      Also added in my Qview server list for the ones using different engines! Nice ping, cya there for some frags!



                      Latest QView server list

                      Comment


                      • #26
                        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).

                        -r0t.uk- cOOp - Mapvote - r0t.uk:26001
                        -r0t.uk- DM - Mapvote - r0t.uk:26000

                        Comment


                        • #27
                          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.

                          -r0t.uk- cOOp - Mapvote - r0t.uk:26001
                          -r0t.uk- DM - Mapvote - r0t.uk:26000

                          Comment

                          Working...
                          X