r3737 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Mon Jun 30 02:39:42 EDT 2008
Author: div0
Date: 2008-06-30 02:39:41 -0400 (Mon, 30 Jun 2008)
New Revision: 3737
Modified:
trunk/data/qcsrc/server/cl_client.qc
trunk/data/qcsrc/server/cl_physics.qc
trunk/data/qcsrc/server/defs.qh
trunk/data/qcsrc/server/miscfunctions.qc
Log:
sv_maxidle system; add #defines for buttons
Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc 2008-06-29 14:58:05 UTC (rev 3736)
+++ trunk/data/qcsrc/server/cl_client.qc 2008-06-30 06:39:41 UTC (rev 3737)
@@ -648,7 +648,7 @@
self.bot_attack = TRUE;
self.statdraintime = time + 5;
- self.button0 = self.button1 = self.button2 = self.button3 = 0;
+ self.button0 = self.button2 = self.button3 = 0;
if(self.killcount == -666) {
self.killcount = 0;
@@ -700,7 +700,9 @@
*/
void SetNewParms (void)
{
-
+ // initialize parms for a new player
+ print("SetNewParms\n");
+ parm1 = -(86400 * 366);
}
/*
@@ -710,7 +712,23 @@
*/
void SetChangeParms (void)
{
+ // save parms for level change
+ print("SetChangeParms\n");
+ parm1 = self.parm_idlesince - time;
+}
+/*
+=============
+DecodeLevelParms
+=============
+*/
+void DecodeLevelParms (void)
+{
+ // load parms
+ print("DecodeLevelParms\n");
+ self.parm_idlesince = parm1;
+ if(self.parm_idlesince == -(86400 * 366))
+ self.parm_idlesince = time;
}
/*
@@ -917,6 +935,7 @@
=============
*/
string ColoredTeamName(float t);
+void DecodeLevelParms (void);
//void dom_player_join_team(entity pl);
void ClientConnect (void)
{
@@ -931,6 +950,8 @@
return;
}
+ DecodeLevelParms();
+
self.classname = "player_joining";
self.flags = self.flags | FL_CLIENT;
self.version_nagtime = time + 10 + random() * 10;
@@ -2032,6 +2053,7 @@
Called every frame for each client after the physics are run
=============
*/
+.float idlekick_lasttimeleft;
void PlayerPostThink (void)
{
// Savage: Check for nameless players
@@ -2040,6 +2062,32 @@
stuffcmd(self, "seta _cl_name Player\n");
}
+ if(sv_maxidle)
+ {
+ float timeleft;
+ timeleft = ceil(sv_maxidle - (time - self.parm_idlesince));
+ if(timeleft <= 0)
+ {
+ bprint("^3", self.netname, "^3 was kicked for idling.\n");
+ play2(self, "announcer/robotic/terminated.ogg");
+ dropclient(self);
+ return;
+ }
+ else if(timeleft <= 10)
+ {
+ if(timeleft != self.idlekick_lasttimeleft)
+ {
+ centerprint_atprio(self, CENTERPRIO_IDLEKICK, strcat("^3Stop idling!\n^3Disconnecting in ", ftos(timeleft), "..."));
+ play2(self, strcat("announcer/robotic/", ftos(timeleft), ".ogg"));
+ }
+ }
+ else
+ {
+ centerprint_expire(self, CENTERPRIO_IDLEKICK);
+ }
+ self.idlekick_lasttimeleft = timeleft;
+ }
+
if(self.classname == "player") {
CheckRules_Player();
UpdateChatBubble();
Modified: trunk/data/qcsrc/server/cl_physics.qc
===================================================================
--- trunk/data/qcsrc/server/cl_physics.qc 2008-06-29 14:58:05 UTC (rev 3736)
+++ trunk/data/qcsrc/server/cl_physics.qc 2008-06-30 06:39:41 UTC (rev 3737)
@@ -110,14 +110,25 @@
}
};
+.vector movement_old;
+.float buttons_old;
void Nixnex_GiveCurrentWeapon();
void SV_PlayerPhysics()
{
local vector wishvel, wishdir, v;
- local float wishspeed, f, maxspd_mod, spd, maxairspd, airaccel, swampspd_mod, shtest_score;
+ local float wishspeed, f, maxspd_mod, spd, maxairspd, airaccel, swampspd_mod, shtest_score, buttons;
string temps;
+ buttons = self.BUTTON_ATCK + 2 * self.BUTTON_JUMP + 4 * self.BUTTON_ATCK2 + 8 * self.BUTTON_ZOOM + 16 * self.BUTTON_CROUCH + 32 * self.BUTTON_HOOK + 64 * self.BUTTON_USE;
+ if(buttons != self.buttons_old)
+ self.parm_idlesince = time;
+ self.buttons_old = buttons;
+
+ if(self.movement != self.movement_old)
+ self.parm_idlesince = time;
+ self.movement_old = self.movement;
+
if(time > self.shtest_next)
{
if(self.shtest_next > 0)
Modified: trunk/data/qcsrc/server/defs.qh
===================================================================
--- trunk/data/qcsrc/server/defs.qh 2008-06-29 14:58:05 UTC (rev 3736)
+++ trunk/data/qcsrc/server/defs.qh 2008-06-30 06:39:41 UTC (rev 3737)
@@ -1,6 +1,16 @@
#define MAPINFO
float require_spawnfunc_prefix; // if this float exists, only functions with spawnfunc_ name prefix qualify as spawn functions
+#define BUTTON_ATCK button0
+#define BUTTON_JUMP button2
+#define BUTTON_ATCK2 button3
+#define BUTTON_ZOOM button4
+#define BUTTON_CROUCH button5
+#define BUTTON_HOOK button6
+#define BUTTON_INFO button7
+#define BUTTON_CHAT buttonchat
+#define BUTTON_USE buttonuse
+
// Globals
float g_domination, g_ctf, g_tdm, g_keyhunt, g_onslaught, g_assault, g_arena, g_lms, g_runematch;
@@ -432,3 +442,6 @@
void Damage (entity targ, entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force);
float lockteams;
+
+.float parm_idlesince;
+float sv_maxidle;
Modified: trunk/data/qcsrc/server/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/server/miscfunctions.qc 2008-06-29 14:58:05 UTC (rev 3736)
+++ trunk/data/qcsrc/server/miscfunctions.qc 2008-06-30 06:39:41 UTC (rev 3737)
@@ -652,6 +652,7 @@
#define CENTERPRIO_VOTE 4
#define CENTERPRIO_NORMAL 5
#define CENTERPRIO_MAPVOTE 9
+#define CENTERPRIO_IDLEKICK 50
#define CENTERPRIO_ADMIN 99
.float centerprint_priority;
.float centerprint_expires;
@@ -766,6 +767,7 @@
g_rocketarena = cvar("g_rocketarena");
g_vampire = cvar("g_vampire");
g_tourney = cvar("g_tourney");
+ sv_maxidle = cvar("sv_maxidle");
g_pickup_shells = cvar("g_pickup_shells");
g_pickup_shells_max = cvar("g_pickup_shells_max");
More information about the nexuiz-commits
mailing list