Announcement

Collapse
No announcement yet.

r0t.co.uk servers

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

  • slackhead
    replied
    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.

    Leave a comment:


  • slackhead
    replied
    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:


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

    Leave a comment:


  • slackhead
    replied
    Thanks Polarite

    Leave a comment:


  • Polarite
    replied
    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.

    Leave a comment:


  • slackhead
    replied
    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:


  • Polarite
    replied
    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:


  • slackhead
    replied
    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:


  • slackhead
    replied
    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:


  • Polarite
    replied
    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.

    Leave a comment:


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

    Leave a comment:


  • PrimalLove
    replied
    @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?

    Leave a comment:


  • slackhead
    replied
    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:


  • PrimalLove
    replied
    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:


  • slackhead
    replied
    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:

Working...
X