From ccbec36a7598c2e58f1a0b74b82d4107d41f778b Mon Sep 17 00:00:00 2001 From: Samual Date: Mon, 2 Apr 2012 01:18:43 -0400 Subject: [PATCH] Implement new mutator hook to handle the "help me" ping for mutators that need to adjust it --- qcsrc/server/cl_impulse.qc | 13 ++++++++----- qcsrc/server/mutators/base.qh | 11 ++++++++++- qcsrc/server/mutators/gamemode_ctf.qc | 17 +++++++++++++++++ qcsrc/server/mutators/gamemode_ctf.qh | 1 + 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/qcsrc/server/cl_impulse.qc b/qcsrc/server/cl_impulse.qc index 524e796af..41fb6cdb9 100644 --- a/qcsrc/server/cl_impulse.qc +++ b/qcsrc/server/cl_impulse.qc @@ -159,11 +159,14 @@ void ImpulseCommands (void) case 33: if(self.deadflag == DEAD_NO && teamplay) { - wp = WaypointSprite_Attach("helpme", TRUE, RADARICON_HELPME, '1 0.5 0'); - if(!wp) - WaypointSprite_HelpMePing(self.waypointsprite_attachedforcarrier); - else - WaypointSprite_Ping(wp); + if not(MUTATOR_CALLHOOK(HelpMePing)) + { + wp = WaypointSprite_Attach("helpme", TRUE, RADARICON_HELPME, '1 0.5 0'); + if(!wp) + WaypointSprite_HelpMePing(self.waypointsprite_attachedforcarrier); + else + WaypointSprite_Ping(wp); + } sprint(self, "HELP ME attached\n"); } break; diff --git a/qcsrc/server/mutators/base.qh b/qcsrc/server/mutators/base.qh index f2d740c39..374945d0c 100644 --- a/qcsrc/server/mutators/base.qh +++ b/qcsrc/server/mutators/base.qh @@ -209,4 +209,13 @@ MUTATOR_HOOKABLE(SetModname); MUTATOR_HOOKABLE(PortalTeleport); // called whenever a player goes through a portal gun teleport // allows you to strip a player of an item if they go through the teleporter to help prevent cheating - entity self; \ No newline at end of file + // INPUT + entity self; + +MUTATOR_HOOKABLE(HelpMePing); + // called whenever a player uses impulse 33 (help me) in cl_impulse.qc + // normally help me ping uses self.waypointsprite_attachedforcarrier, + // but if your mutator uses something different then you can handle it + // in a special manner using this hook + // INPUT + entity self; // the player who pressed impulse 33 \ No newline at end of file diff --git a/qcsrc/server/mutators/gamemode_ctf.qc b/qcsrc/server/mutators/gamemode_ctf.qc index b2346e993..6f07f843d 100644 --- a/qcsrc/server/mutators/gamemode_ctf.qc +++ b/qcsrc/server/mutators/gamemode_ctf.qc @@ -1036,6 +1036,22 @@ MUTATOR_HOOKFUNCTION(ctf_PlayerUseKey) return 0; } +MUTATOR_HOOKFUNCTION(ctf_HelpMePing) +{ + if(self.wps_flagcarrier) + { + WaypointSprite_HelpMePing(self.wps_flagcarrier); + } + else + { + WaypointSprite_Spawn("helpme", waypointsprite_deployed_lifetime, waypointsprite_limitedrange, self, FLAG_WAYPOINT_OFFSET, world, self.team, self, wps_helpme, FALSE, RADARICON_HELPME, '1 0.5 0'); + WaypointSprite_Ping(self.wps_helpme); + } + + return 1; +} + + // ========== // Spawnfuncs // ========== @@ -1191,6 +1207,7 @@ MUTATOR_DEFINITION(gamemode_ctf) MUTATOR_HOOK(PlayerPreThink, ctf_PlayerPreThink, CBC_ORDER_ANY); MUTATOR_HOOK(PlayerDamage_Calculate, ctf_PlayerDamage, CBC_ORDER_ANY); MUTATOR_HOOK(PlayerUseKey, ctf_PlayerUseKey, CBC_ORDER_ANY); + MUTATOR_HOOK(HelpMePing, ctf_HelpMePing, CBC_ORDER_ANY); MUTATOR_ONADD { diff --git a/qcsrc/server/mutators/gamemode_ctf.qh b/qcsrc/server/mutators/gamemode_ctf.qh index 5a7e9d88b..7befba4ca 100644 --- a/qcsrc/server/mutators/gamemode_ctf.qh +++ b/qcsrc/server/mutators/gamemode_ctf.qh @@ -44,6 +44,7 @@ entity ctf_worldflaglist; // waypoint sprites .entity bot_basewaypoint; // flag waypointsprite +.entity wps_helpme; .entity wps_flagbase; .entity wps_flagcarrier; .entity wps_flagdropped; -- 2.39.2