float CheatsAllowed(entity this, float i, int argc, float fr) // the cheat gets passed as argument for possible future ACL checking
{
- // dead people cannot cheat
if(IS_DEAD(this))
return 0;
if(gamestart_sv_cheats < 2 && !IS_PLAYER(this))
return 0;
- // sv_clones
if(i == CHIMPULSE_CLONE_MOVING.impulse || i == CHIMPULSE_CLONE_STANDING.impulse)
if(this.lip < sv_clones)
return 1;
if(this.maycheat)
return 1;
- // sv_cheats
if(gamestart_sv_cheats && autocvar_sv_cheats)
return 1;
}
spawnfunc(info_autoscreenshot)
{
+ // this one just has to exist
if(++num_autoscreenshot > autocvar_g_max_info_autoscreenshot)
{
objerror(this, "Too many info_autoscreenshot entitites. FAIL!");
}
if(this.target != "")
InitializeEntity(this, info_autoscreenshot_findtarget, INITPRIO_FINDTARGET);
- // this one just has to exist
}
float CheatImpulse(entity this, int imp)
Drag_Finish(this);
}
}
- else
+ else if(Drag_CanDrag(this) && PHYS_INPUT_BUTTON_DRAG(this))
{
- if(Drag_CanDrag(this))
- if(PHYS_INPUT_BUTTON_DRAG(this))
- {
- crosshair_trace_plusvisibletriggers(this);
- entity e = trace_ent;
- float pick = force_allow_pick;
- if (e && !pick)
- {
- // pick is true if the object can be picked up. While an object is being carried, the Drag() function
- // must execute for it either way, otherwise it would cause bugs if it went out of the player's trace.
- // This also makes sure that an object can only pe picked up if in range, but does not get dropped if
- // it goes out of range while slinging it around.
+ crosshair_trace_plusvisibletriggers(this);
+ entity e = trace_ent;
+ float pick = force_allow_pick;
+ if (e && !pick && vdist(this.origin - e.origin, <=, autocvar_g_grab_range))
+ {
+ // pick is true if the object can be picked up. While an object is being carried, the Drag() function
+ // must execute for it either way, otherwise it would cause bugs if it went out of the player's trace.
+ // This also makes sure that an object can only pe picked up if in range, but does not get dropped if
+ // it goes out of range while slinging it around.
- if(vdist(this.origin - e.origin, <=, autocvar_g_grab_range))
- {
- switch(e.grab)
- {
- case 0: // can't grab
- break;
- case 1: // owner can grab
- if(e.owner == this || e.realowner == this)
- pick = true;
- break;
- case 2: // owner and team mates can grab
- if(SAME_TEAM(e.owner, this) || SAME_TEAM(e.realowner, this) || e.team == this.team)
- pick = true;
- break;
- case 3: // anyone can grab
- pick = true;
- break;
- default:
- break;
- }
- }
- }
- // Find e and pick
- if(e && pick)
- if(Drag_IsDraggable(e, this))
- {
- if(ischeat)
- IS_CHEAT(this, 0, 0, CHRAME_DRAG);
- if(e.draggedby)
- Drag_Finish(e.draggedby);
- if(e.tag_entity)
- detach_sameorigin(e);
- Drag_Begin(this, e, trace_endpos);
- if(ischeat)
- DID_CHEAT();
- return true;
- }
+ switch(e.grab)
+ {
+ case 0: // can't grab
+ break;
+ case 1: // owner can grab
+ if(e.owner == this || e.realowner == this)
+ pick = true;
+ break;
+ case 2: // owner and team mates can grab
+ if(SAME_TEAM(e.owner, this) || SAME_TEAM(e.realowner, this) || e.team == this.team)
+ pick = true;
+ break;
+ case 3: // anyone can grab
+ pick = true;
+ break;
+ default:
+ break;
}
+ }
+ // Find e and pick
+ if(e && pick && Drag_IsDraggable(e, this))
+ {
+ if(ischeat)
+ IS_CHEAT(this, 0, 0, CHRAME_DRAG);
+ if(e.draggedby)
+ Drag_Finish(e.draggedby);
+ if(e.tag_entity)
+ detach_sameorigin(e);
+ Drag_Begin(this, e, trace_endpos);
+ if(ischeat)
+ DID_CHEAT();
+ return true;
+ }
}
break;
}
return false;
if(draggee.classname == "door") // FIXME find out why these must be excluded, or work around the problem (trying to drag these causes like 4 fps)
return false; // probably due to BSP collision
-// if(draggee.model == "")
-// return false;
+ //if(draggee.model == "")
+ // return false;
return ((draggee.draggable) ? draggee.draggable(draggee, dragger) : true);
}