From e6022e9fb39ace79dfc4b3671754daee21623719 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Sun, 12 Jun 2011 14:58:53 +0200 Subject: [PATCH] add a second use key system that responds to presses, not to holding it down --- defaultXonotic.cfg | 5 +++-- qcsrc/server/cl_client.qc | 16 ++++++++++++++++ qcsrc/server/cl_impulse.qc | 4 ++++ qcsrc/server/ctf.qc | 14 ++++++++++---- qcsrc/server/defs.qh | 2 ++ 5 files changed, 35 insertions(+), 6 deletions(-) diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index a0e4a44b0..2eb18eca2 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -52,6 +52,7 @@ alias asay_drop "say_team (%l) dropped %w ; impulse 17" // other aliases alias +hook +button6 alias -hook -button6 +alias use "impulse 21" alias ready "cmd ready" alias lockteams "sv_cmd lockteams" alias unlockteams "sv_cmd unlockteams" @@ -1025,7 +1026,7 @@ bind MWHEELDOWN weapprev bind r reload bind BACKSPACE dropweapon bind g dropweapon -bind f +use +bind f use // misc bind e +hook @@ -1362,7 +1363,7 @@ seta "userbind11_press" "say_team attacking (l:%l^7) (h:%h^7 a:%a^7 w:%w^7); g_w seta "userbind12_press" "say_team killed flagcarrier (l:%y^7); g_waypointsprite_team_p"; seta "userbind12_release" ""; seta "userbind12_description" "team: killed flag, icon" seta "userbind13_press" "say_team dropped flag (l:%d^7); g_waypointsprite_team_here_d"; seta "userbind13_release" ""; seta "userbind13_description" "team: dropped flag, icon" seta "userbind14_press" "say_team dropped gun %w^7 (l:%l^7); g_waypointsprite_team_here; wait; dropweapon"; seta "userbind14_release" ""; seta "userbind14_description" "team: drop gun, icon" -seta "userbind15_press" "say_team dropped flag/key %w^7 (l:%l^7); g_waypointsprite_team_here; wait; +use"; seta "userbind15_release" "-use"; seta "userbind15_description" "team: drop flag/key, icon" +seta "userbind15_press" "say_team dropped flag/key %w^7 (l:%l^7); g_waypointsprite_team_here; wait; use"; seta "userbind15_release" ""; seta "userbind15_description" "team: drop flag/key, icon" seta "userbind16_press" "say :-) / nice one"; seta "userbind16_release" ""; seta "userbind16_description" "chat: nice one" seta "userbind17_press" "say good game"; seta "userbind17_release" ""; seta "userbind17_description" "chat: good game" seta "userbind18_press" "say hi / good luck and have fun"; seta "userbind18_release" ""; seta "userbind18_description" "chat: hi / good luck" diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 5f265468c..058e40250 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -2576,6 +2576,17 @@ void SpectatorThink() self.flags |= FL_CLIENT | FL_NOTARGET; } +float ctf_usekey(); +void PlayerUseKey() +{ + if(self.classname != "player") + return; + + // a use key was pressed; call handlers + if(ctf_usekey()) + return; +} + .float touchexplode_time; /* @@ -2585,6 +2596,7 @@ PlayerPreThink Called every frame for each client before the physics are run ============= */ +.float usekeypressed; void() ctf_setstatus; void() nexball_setstatus; .float items_added; @@ -2662,6 +2674,10 @@ void PlayerPreThink (void) MUTATOR_CALLHOOK(PlayerPreThink); + if(self.BUTTON_USE && !self.usekeypressed) + PlayerUseKey(); + self.usekeypressed = self.BUTTON_USE; + if(self.classname == "player") { // if(self.netname == "Wazat") // bprint(self.classname, "\n"); diff --git a/qcsrc/server/cl_impulse.qc b/qcsrc/server/cl_impulse.qc index 7bde8b32f..39eab3c61 100644 --- a/qcsrc/server/cl_impulse.qc +++ b/qcsrc/server/cl_impulse.qc @@ -105,6 +105,10 @@ void ImpulseCommands (void) else self.impulse = imp; // retry in next frame } + else if(imp == 21) + { + PlayerUseKey (); + } else if(imp >= 200 && imp <= 229) { if(self.deadflag == DEAD_NO) diff --git a/qcsrc/server/ctf.qc b/qcsrc/server/ctf.qc index cf16cecff..f5cbae51b 100644 --- a/qcsrc/server/ctf.qc +++ b/qcsrc/server/ctf.qc @@ -405,12 +405,18 @@ void FlagThink() DropFlag(self, world, world); return; } - - if(autocvar_g_ctf_allow_drop) - if(e.BUTTON_USE) - DropFlag(self, e, world); }; +float ctf_usekey() +{ + if(self.flagcarried) + { + DropFlag(self.flagcarried, self, world); + return TRUE; + } + return FALSE; +} + void flag_cap_ring_spawn(vector org) { shockwave_spawn("models/ctf/shockwavetransring.md3", org - '0 0 15', -0.8, 0, 1); diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index e0a362ebe..3827fb433 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -665,3 +665,5 @@ float serverflags; .entity muzzle_flash; .float misc_bulletcounter; // replaces uzi & hlac bullet counter. + +void PlayerUseKey(); -- 2.39.2