Announcement

Collapse
No announcement yet.

Remake Quake 2009 Multiplayer Demo RELEASE

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

  • #46
    Yes, it was a FitzSDL issue. The server / mod works fine.
    Scout's Journey
    Rune of Earth Magic

    Comment


    • #47
      I noticed that when players leave the server, there is no "ghost-removal" which means that the mod still takes the votes of players who left long ago into account (until the map changes that is) making it impossible to vote for a new map if you are the only player left on the server..
      Thanks, we'll fix that. Keep reporting bugs, it helps us a lot!
      Scout's Journey
      Rune of Earth Magic

      Comment


      • #48
        My limited QuakeC knowledge is that this is the more or less the required fix in client.qc in ClientDisconnect:

        Someone like Rook or Bam or Zop would be better source:

        Code:
        	bprint (" left the game with ");
        	bprint (ftos(self.frags));
        	bprint (" frags\n");	
        	sound (self, CHAN_BODY, "player/tornoff2.wav", 1, ATTN_NONE);
        	set_suicide_frame ();
        	setmodel (self, string_null);
        	setsize (self, '0 0 0', '0 0 0');
        
        	self.effects	= 0;
        	self.classname	= "disconnected";
        
        	self.health		= 0;
        	self.solid 		= SOLID_NOT;
        In Bam's vote-qc stuff, after the last above he clears the client vote params.

        The code above really just makes it so there isn't some white ghost player that is solid.
        Quakeone.com - Being exactly one-half good and one-half evil has advantages. When a portal opens to the antimatter universe, my opposite is just me with a goatee.

        So while you guys all have to fight your anti-matter counterparts, me and my evil twin will be drinking a beer laughing at you guys ...

        Comment


        • #49
          A patch is going to be released for the RMQ multiplayer demo, we're working on it.
          Scout's Journey
          Rune of Earth Magic

          Comment


          • #50
            also, the eyes appear at half staff when you have ring ... or at least that's what i'm getting

            Comment


            • #51
              RMQ .def and .fgd files for mapping:

              def

              4shared.com - online file sharing and storage - download remakequake.def

              fgd

              4shared.com - online file sharing and storage - download remakequake.fgd

              These are snapshots, of course, as the project is unfinished.
              Scout's Journey
              Rune of Earth Magic

              Comment


              • #52
                When I attempt to play the map E3M1RQ it just goes out of fullscreen mode and shows up an error saying
                Originally posted by Quake Error
                ED_Alloc: no free edicts
                . Can someone help me? Thanks!

                Comment


                • #53
                  What's your engine? It looks like a limits problem.
                  Scout's Journey
                  Rune of Earth Magic

                  Comment


                  • #54
                    Wow, cool stuff. I had a look at the dm maps first. I liked them, the rooms seem higher and cleaner, the maps feel less cramped for some reason. Changes are small but seem to make sense.

                    I also played e3m1rq. Love that map, it's got a great style with all the rocks, rain, acid. Creates a dense, Q2-like atmosphere. 18:05, 3/8, 107/0. (Don't ask me about the last one, it's not a typo. It's what the intermission screen told me.)
                    dfsp*spirit
                    my FPS maps

                    Comment


                    • #55
                      RMQ doesn't display the total monster count. Darkplaces will just show "Kills: 107" while other engines will say "Kills: 107/0".

                      The dm maps are a little larger - then again, players also generally move faster today than they did in 1996. In RemakeQuake, you have several additional movement options.

                      Glad you enjoy it.
                      Scout's Journey
                      Rune of Earth Magic

                      Comment


                      • #56
                        Originally posted by Baker View Post
                        My limited QuakeC knowledge is that this is the more or less the required fix in client.qc in ClientDisconnect:

                        Someone like Rook or Bam or Zop would be better source:

                        Code:
                        	bprint (" left the game with ");
                        	bprint (ftos(self.frags));
                        	bprint (" frags\n");	
                        	sound (self, CHAN_BODY, "player/tornoff2.wav", 1, ATTN_NONE);
                        	set_suicide_frame ();
                        	setmodel (self, string_null);
                        	setsize (self, '0 0 0', '0 0 0');
                        
                        	self.effects	= 0;
                        	self.classname	= "disconnected";
                        
                        	self.health		= 0;
                        	self.solid 		= SOLID_NOT;
                        In Bam's vote-qc stuff, after the last above he clears the client vote params.

                        The code above really just makes it so there isn't some white ghost player that is solid.
                        This is my entire code when someone disconnects, in CAx

                        Code:
                        /*
                        ===========
                        ClientDisconnect
                        
                        called when a player disconnects from a server
                        ============
                        */
                        void() ClientDisconnect =
                        {
                        	local string pl,s;
                        	local entity e,tmp;
                        	
                        	if (!(self.style & CA_CONNECTED)) return;
                        
                        	if (!(self.style & CA_KICK_TARGET))
                        	{
                        		s = ftos (self.frags);
                        		pl = strings_szplural(self.frags);
                        
                        		if (self.frags > 0)
                        			bprint6 (self.netname, " left the game with ", s, " frag", pl,"\n");
                        		else
                        			bprint2 (self.netname," disconnected.\n");
                        		
                        		sound (self, CHAN_BODY, "player/tornoff2.wav", 1, ATTN_NONE);
                        	}
                        
                        	// PRACTICE OBJECT
                        	e = find (world, classname, "practice_object");
                        	
                        	if (e != world && e.movetarget == self)
                        	{
                        		remove (e);
                        		bprint ("Practice object \bremoved\n");
                        	}
                        	
                        	if (self.next_team)
                        	{
                        		RemoveFromTeam();
                        	}
                        	
                        	if (self.style & CA_BALL_CARRIER) 
                        		DropQball(0);
                        		
                        	if (ca_gametype & CA_ELIMINATION_MODE)//R00k: Hmm, might cause a problem to respawn everyone who this guy killed?
                        	{
                        		e = find (world, classname, "player");
                        	
                        		while (e)
                        		{
                        			if ((self == e.enemy) && (e.player_flag == STATE_DEAD) && (e != self))
                        			{		
                        				tmp = self;
                        				self = e;
                        				observer_end ();	
                        				self = tmp;
                        			} 
                        			e = find (e, classname, "player");
                        		}
                        	}
                        
                        	setname (self, "");
                        	self.effects		= 0;
                        	self.team2    		= TEAM_SPECTATOR;
                        	self.frags          	= 0;
                        	//self.cnt               	= 0;
                        	self.hack_timeout       = 0;
                        	self.finaldest_x      	= -30;
                        	self.state              = 0;	
                        	self.myip		= string_null;
                        	self.takedamage 	= DAMAGE_NO;
                        	self.airborn_pos 	= 0;
                        	self.afk_time		= 0;
                        	self.cc_queue 		= 0;//R00k
                        	self.cc_queue_vote	= 0;//R00k
                        	
                        	admin_disconnect_notify (self);
                        	observer_disconnect_notify (self);
                        	
                        	self.style = self.style - (self.style & (CA_KICK_TARGET | CA_CONNECTED | CA_AFK_CLIENT | CA_MUTED));
                        		
                        	self.nextthink		= -1;
                        	self.think		= SUB_Null;		
                        
                        	set_suicide_frame ();	
                        	setmodel(self, string_null);
                        	setsize (self, '0 0 0', '0 0 0');
                        	self.classname = string_null;
                        	self.health = 0;
                        	motd_top5 = string_null;
                        	motd_top6 = string_null;
                        };
                        This following code sends an impulse to each client, which is a stuffcmd, that will be sent to the server in return, once every 5 seconds. if after 15 seconds and no reply (impulse 39) the server declares that client LAGGED. After 30 seconds of no reply, it disconnects them. also, when an impulse is received i reset the finaldest_x flag (this is just a reUsed variable from default progs instead of assigning a NEW variable.)

                        in StartFrame, i have this...
                        Code:
                        		if (time >= ca_lagcheck)
                        		{
                        			player = nextent(world);
                        			while (player != world)
                        			{
                        				if (player.classname == "player")
                        				{
                        					if ((player.style & CA_CONNECTED))
                        					{
                        						if (time > ((player.finaldest_x) + 5))
                        						{
                        							msg_entity = player;
                        							WriteByte(MSG_ONE, SVC_STUFFCMD);
                        							WriteString(MSG_ONE, "impulse 39\n");
                        						}
                        
                        						if ((time >= (player.finaldest_x + 15))&&(time < (player.finaldest_x + 16)))
                        						{
                        							player.plag = TRUE;
                        							player.hack_timeout = player.hack_timeout + 15;//client lagged, refresh botscan
                        							
                        							if (!((player.style & CA_OBSERVER) && (boss.state != CA_MATCH_WAITING)))
                        							{
                        								bprint2 (player.netname," is \blagged\b.\n");							
                        								bprint("\[lag protection activated\]\n");
                        							}
                        						}
                        
                        						if (time > ((player.finaldest_x) + 25))
                        						{
                        							player.style = (player.style | CA_KICK_TARGET);//sanity check
                        							ca_kick_mode = KICK_NONE;
                        							kick_player(player);
                        						}
                        					}
                        					else
                        					{
                        						if (!(player.style & CA_NEW_CLIENT))//R00k v1.52 clean
                        						{
                        							local entity tmp;
                        							tmp = self;
                        							self = player;
                        							ClientDisconnect();
                        							self = tmp;
                        						}
                        					}
                        				}
                        				player = nextent(player);
                        			}
                        			ca_lagcheck = (time + 5);
                        		}
                        Code:
                        void (entity p) kick_player =
                        {
                        	local string temp;
                        	local entity oself;
                        
                        	if (p.style & CA_ADMIN)			
                        	{
                        		p.style	= p.style - (p.style & CA_KICK_TARGET);
                        		ca_kick_mode = 0;
                        		return;//crashproof!
                        	}
                        	if (!(p.style & CA_CONNECTED))
                        	{
                        		p.style	= p.style - (p.style & CA_KICK_TARGET);
                        		ca_kick_mode = 0;
                        		return;
                        	}
                        	if (p.style & CA_NEW_CLIENT)
                        	{
                        		p.style	= p.style - (p.style & CA_KICK_TARGET);
                        		ca_kick_mode = 0;
                        		return;
                        	}
                        	if (!(p.style & CA_KICK_TARGET))
                        	{
                        		ca_kick_mode = 0;
                        	 	return;
                        	}
                        
                        	if(debug) bprint("kick_player called\n");
                        
                        	p.takedamage = DAMAGE_NO;
                        
                        	if (ca_kick_mode == KICK_KICK)
                        	{
                        		announce2 (p.netname, " was kicked!");
                        		stuffcmd (p,"echo You have been kicked from this server by an admin.\n");
                        		temp = ftos(p.colormap);
                        		localcmd3 ("kick # ", temp, "\n");
                        	}
                        	else
                        	{
                        		if (ca_kick_mode == KICK_BAN)
                        		{				
                        			bprint2 (p.netname, " was banned!\n");			
                        			banent = p;
                        			utils_make_scheduled_event(ban_kick_client,0.05);
                        		}
                        		else
                        		{
                        			if (ca_kick_mode == KICK_NONE)
                        			{
                        				bprint2 (p.netname, " lost connection to the server.\n");
                        				temp = ftos(p.colormap);
                        				localcmd3 ("kick # ", temp, "\n");
                        			}
                        		}
                        	}
                        
                        	oself = self;
                        	self = p;
                        	ClientDisconnect();
                        	self = oself;
                        	ca_kick_mode = 0;
                        };
                        then where i check for impulses,

                        Code:
                        	if (self.impulse == 39)//reply to lag detection
                        	{
                        		self.lagcheck    = self.finaldest_x;
                        		self.finaldest_x = time;
                        		if (self.finaldest_x - self.lagcheck <= 5 )
                        		{
                        			self.lagcount = self.lagcount + 1;
                        		}
                        		if (self.lagcount > 2)
                        		{
                        			self.lagcount  = 0.00;
                        			self.plag      = 0.00;
                        		}
                        	}
                        	else

                        Hope this helps.
                        Last edited by R00k; 03-16-2010, 10:15 PM.
                        www.quakeone.com/qrack | www.quakeone.com/cax| http://en.twitch.tv/sputnikutah

                        Comment


                        • #57
                          After a few more of these, can we label CAx as open source??

                          Comment


                          • #58
                            Nevermind.

                            Comment


                            • #59
                              I actually REALLY like the remake.
                              Even though it doesn't sound like regular Quake,
                              I find the Place of 2 Deaths remake very peaceful.
                              The Clustrophobopolis is pretty good - I like that giant spinning cog replacement, though I don't like those glowing orange pillars.
                              Rubic is quite nice - needs a visible starry night skybox though.

                              You should also get rid of the pentagrams from the levels.

                              Nailguns need ricochet sounds. Chainsaw sound needs fixes. Remove all the Q3 sounds; they really ruin the atmosphere.

                              The health vials in MP should have a different pickup sound than SP's.

                              Less candles.

                              The remake scrags sound weird and their 'shadow tele' effect doesn't fix with Quake.

                              Monster VOs should be redone - the current ones sound a bit unprofessional (except for the Enforcer)

                              Maybe some ejecting shells for the shotgun (double barred shotguns don't eject)
                              Last edited by Ranger; 06-15-2010, 11:13 PM.

                              Comment


                              • #60
                                Multiplayer patch released.

                                Format : pak1.pak

                                Usage should be clear to anyone who plays Quake.

                                http://www.quaketastic.com/upload/fi..._MP_patch1.zip

                                Blog post:

                                Point Release The Realm of Blog Magic

                                10 MB download. We fixed practically all issues that were reported.

                                There is a new move. You can now Dash like in Warsow, in addition to the walljump that existed before. Bind a key to "boost".

                                Bots do it, too - on higher skill levels. They'll pretty much wipe the floor with even decent players. And they'll also let you know that you suck, as usual.
                                Scout's Journey
                                Rune of Earth Magic

                                Comment

                                Working...
                                X