[nexuiz-commits] r6230 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Fri Mar 20 08:41:50 EDT 2009
Author: div0
Date: 2009-03-20 08:41:49 -0400 (Fri, 20 Mar 2009)
New Revision: 6230
Modified:
trunk/data/qcsrc/server/cl_client.qc
trunk/data/qcsrc/server/cl_player.qc
trunk/data/qcsrc/server/defs.qh
Log:
prevent bugs with dragging a player while he dies
Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc 2009-03-20 12:25:06 UTC (rev 6229)
+++ trunk/data/qcsrc/server/cl_client.qc 2009-03-20 12:41:49 UTC (rev 6230)
@@ -2385,11 +2385,9 @@
.float dragdistance; // distance of dragentity's draglocalvector from view_ofs
.vector draglocalvector; // local attachment vector of the dragentity
.float draglocalangle;
-
// on draggee:
.entity draggedby;
.float dragmovetype;
-
void Drag_Begin(entity dragger, entity draggee, vector touchpoint)
{
float tagscale;
@@ -2408,7 +2406,6 @@
dragger.draglocalvector_x = touchpoint * v_forward * tagscale;
dragger.draglocalvector_y = touchpoint * v_right * tagscale;
dragger.draglocalvector_z = touchpoint * v_up * tagscale;
- print(vtos(v_forward), "\n");
dragger.dragspeed = 64;
}
@@ -2456,6 +2453,13 @@
return FALSE;
if(draggee.model == "")
return FALSE;
+ if(draggee.classname == "spectator")
+ return FALSE;
+ if(draggee.classname == "observer")
+ return FALSE;
+ if(draggee.classname == "exteriorweaponentity")
+ return FALSE;
+
return TRUE;
}
@@ -2516,6 +2520,11 @@
te_lightning1(dragger, dragger.origin + dragger.view_ofs, curorigin);
}
+float Drag_CanDrag(entity dragger)
+{
+ return (dragger.deadflag == DEAD_NO) || (dragger.classname == "player");
+}
+
float Drag_IsDragging(entity dragger)
{
if(!dragger.dragentity)
@@ -2525,7 +2534,7 @@
dragger.dragentity = world;
return FALSE;
}
- if(!Drag_IsDraggable(dragger.dragentity))
+ if(!Drag_CanDrag(dragger) || !Drag_IsDraggable(dragger.dragentity))
{
Drag_Finish(dragger);
return FALSE;
@@ -2533,6 +2542,16 @@
return TRUE;
}
+void Drag_MoveDrag(entity from, entity to)
+{
+ if(from.draggedby)
+ {
+ to.draggedby = from.draggedby;
+ to.draggedby.dragentity = to;
+ from.draggedby = world;
+ }
+}
+
/*
=============
PlayerPostThink
@@ -2580,17 +2599,18 @@
}
if(sv_cheats)
- if(self.BUTTON_DRAG)
- if(!self.dragentity)
- if(self.cursor_trace_ent)
- if(Drag_IsDraggable(self.cursor_trace_ent))
- {
- if(self.cursor_trace_ent.draggedby)
- Drag_Finish(self.cursor_trace_ent.draggedby);
- if(self.cursor_trace_ent.tag_entity)
- detach_sameorigin(self.cursor_trace_ent);
- Drag_Begin(self, self.cursor_trace_ent, self.cursor_trace_endpos);
- }
+ if(Drag_CanDrag(self))
+ if(self.BUTTON_DRAG)
+ if(!self.dragentity)
+ if(self.cursor_trace_ent)
+ if(Drag_IsDraggable(self.cursor_trace_ent))
+ {
+ if(self.cursor_trace_ent.draggedby)
+ Drag_Finish(self.cursor_trace_ent.draggedby);
+ if(self.cursor_trace_ent.tag_entity)
+ detach_sameorigin(self.cursor_trace_ent);
+ Drag_Begin(self, self.cursor_trace_ent, self.cursor_trace_endpos);
+ }
if(Drag_IsDragging(self))
{
Modified: trunk/data/qcsrc/server/cl_player.qc
===================================================================
--- trunk/data/qcsrc/server/cl_player.qc 2009-03-20 12:25:06 UTC (rev 6229)
+++ trunk/data/qcsrc/server/cl_player.qc 2009-03-20 12:41:49 UTC (rev 6230)
@@ -62,6 +62,9 @@
setsize(self, oldself.mins, oldself.maxs);
self.oldorigin = oldself.origin;
self.reset = SUB_Remove;
+
+ Drag_MoveDrag(oldself, self);
+
self = oldself;
}
Modified: trunk/data/qcsrc/server/defs.qh
===================================================================
--- trunk/data/qcsrc/server/defs.qh 2009-03-20 12:25:06 UTC (rev 6229)
+++ trunk/data/qcsrc/server/defs.qh 2009-03-20 12:41:49 UTC (rev 6230)
@@ -552,3 +552,5 @@
.float wasplayer;
float servertime, serverprevtime, serverframetime;
+
+void Drag_MoveDrag(entity from, entity to);
More information about the nexuiz-commits
mailing list