From 9fafdd1b51432d0831802b52fbf082369b513558 Mon Sep 17 00:00:00 2001 From: Mircea Kitsune Date: Tue, 25 Oct 2011 01:04:06 +0300 Subject: [PATCH] Allow grabbing to be used for sandbox objects, even when sv_cheats is disabled. The changes to the grabbing code will need to be reviewed a bit, but should work fine. --- qcsrc/server/mutators/sandbox.qc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/qcsrc/server/mutators/sandbox.qc b/qcsrc/server/mutators/sandbox.qc index 73701a922..91fd4dd79 100644 --- a/qcsrc/server/mutators/sandbox.qc +++ b/qcsrc/server/mutators/sandbox.qc @@ -102,9 +102,26 @@ MUTATOR_HOOKFUNCTION(sandbox_PlayerCommand) return FALSE; } +MUTATOR_HOOKFUNCTION(sandbox_PlayerPreThink) +{ + // if the player is close enough to their own object and facing it, they can grab it + + if(autocvar_sv_cheats) + return FALSE; // cheats already allow dragging all objects + + WarpZone_TraceLine(self.origin + self.view_ofs, self.origin + self.view_ofs + v_forward * autocvar_g_sandbox_editor_distance_edit, MOVE_NORMAL, self); + if(trace_ent.classname == "object") + if(Drag(trace_ent)) // executes the dragging + if(autocvar_g_sandbox_info) + print(strcat(self.netname, " grabbed an object at origin ", vtos(trace_ent.origin), "\n")); + + return FALSE; +} + MUTATOR_DEFINITION(sandbox) { MUTATOR_HOOK(SV_ParseClientCommand, sandbox_PlayerCommand, CBC_ORDER_ANY); + MUTATOR_HOOK(PlayerPreThink, sandbox_PlayerPreThink, CBC_ORDER_ANY); return 0; } -- 2.39.2