From 6712e338e642e5807ae1290313f486dd96e4f27e Mon Sep 17 00:00:00 2001 From: Mircea Kitsune Date: Sat, 29 Oct 2011 22:57:00 +0300 Subject: [PATCH] Second part of my last commit, clipboard functional again. Objects are now pasted from the specified client cvar. For real men: You can also use the object_paste command to spawn an object from the console, by writing each property manually. I challenge your mental strength >:) --- qcsrc/menu/xonotic/dialog_sandboxtools.c | 2 +- qcsrc/server/mutators/sandbox.qc | 18 ++---------------- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/qcsrc/menu/xonotic/dialog_sandboxtools.c b/qcsrc/menu/xonotic/dialog_sandboxtools.c index f9f22942a..41a3cd209 100644 --- a/qcsrc/menu/xonotic/dialog_sandboxtools.c +++ b/qcsrc/menu/xonotic/dialog_sandboxtools.c @@ -25,7 +25,7 @@ void XonoticSandboxToolsDialog_fill(entity me) me.TD(me, 1, 0.5, makeXonoticCommandButton(_("Remove *"), '0 0 0', "sandbox object_remove", 0)); me.TDempty(me, 0.1); me.TD(me, 1, 0.5, makeXonoticCommandButton(_("Copy *"), '0 0 0', "sandbox object_duplicate copy cl_sandbox_clipboard", 0)); - me.TD(me, 1, 0.5, makeXonoticCommandButton(_("Paste"), '0 0 0', "sandbox object_duplicate paste", 0)); + me.TD(me, 1, 0.5, makeXonoticCommandButton(_("Paste"), '0 0 0', "sandbox object_duplicate paste \"$cl_sandbox_clipboard\"", 0)); me.TR(me); me.TD(me, 1, 0.25, e = makeXonoticTextLabel(0, _("Bone:"))); me.TD(me, 1, 1.5, box = makeXonoticInputBox(1, "menu_sandbox_attach_bone")); diff --git a/qcsrc/server/mutators/sandbox.qc b/qcsrc/server/mutators/sandbox.qc index e49fbd218..11fc333ce 100644 --- a/qcsrc/server/mutators/sandbox.qc +++ b/qcsrc/server/mutators/sandbox.qc @@ -1,6 +1,5 @@ const float MAX_STORAGE_ATTACHMENTS = 16; float object_count; -.string object_clipboard; .entity object_attach; .string material; @@ -463,7 +462,7 @@ MUTATOR_HOOKFUNCTION(sandbox_PlayerCommand) case "paste": // spawns a new object using the properties in the player's clipboard - if(!self.object_clipboard) // no object in clipboard + if(!argv(3)) // no object in clipboard { print_to(self, "^1SANDBOX - WARNING: ^7No object in clipboard. You must copy an object before you can paste it"); return TRUE; @@ -474,7 +473,7 @@ MUTATOR_HOOKFUNCTION(sandbox_PlayerCommand) return TRUE; } - e = sandbox_ObjectPort_Load(self.object_clipboard, FALSE); + e = sandbox_ObjectPort_Load(argv(3), FALSE); print_to(self, "^2SANDBOX - INFO: ^7Object pasted successfully"); if(autocvar_g_sandbox_info > 0) @@ -686,18 +685,6 @@ MUTATOR_HOOKFUNCTION(sandbox_PlayerPreThink) return FALSE; } -MUTATOR_HOOKFUNCTION(sandbox_ClientDisconnect) -{ - // unzone the player's clipboard if it's not empty - if(self.object_clipboard) - { - strunzone(self.object_clipboard); - self.object_clipboard = string_null; - } - - return FALSE; -} - float autosave_time; MUTATOR_HOOKFUNCTION(sandbox_StartFrame) { @@ -717,7 +704,6 @@ MUTATOR_DEFINITION(sandbox) MUTATOR_HOOK(SV_ParseClientCommand, sandbox_PlayerCommand, CBC_ORDER_ANY); MUTATOR_HOOK(SV_StartFrame, sandbox_StartFrame, CBC_ORDER_ANY); MUTATOR_HOOK(PlayerPreThink, sandbox_PlayerPreThink, CBC_ORDER_ANY); - MUTATOR_HOOK(ClientDisconnect, sandbox_ClientDisconnect, CBC_ORDER_ANY); MUTATOR_ONADD { -- 2.39.2