From 5474a5152e728066668d1399703cb2fba4fd9124 Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 5 Apr 2018 17:42:16 +1000 Subject: [PATCH] Add a mutator hook for parsing votes --- qcsrc/server/command/vote.qc | 8 ++++++++ qcsrc/server/mutators/events.qh | 17 +++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/qcsrc/server/command/vote.qc b/qcsrc/server/command/vote.qc index 6d037473d..7a30d1ddc 100644 --- a/qcsrc/server/command/vote.qc +++ b/qcsrc/server/command/vote.qc @@ -660,6 +660,14 @@ int VoteCommand_parse(entity caller, string vote_command, string vote_list, floa if (!VoteCommand_checkargs(startpos, argc)) return 0; + switch (MUTATOR_CALLHOOK(VoteCommand_Parse, caller, first_command, vote_command, startpos, argc)) + { + case MUT_VOTEPARSE_CONTINUE: { break; } + case MUT_VOTEPARSE_SUCCESS: { return 1; } + case MUT_VOTEPARSE_INVALID: { return -1; } + case MUT_VOTEPARSE_UNACCEPTABLE: { return 0; } + } + switch (first_command) // now go through and parse the proper commands to adjust as needed. { case "kick": diff --git a/qcsrc/server/mutators/events.qh b/qcsrc/server/mutators/events.qh index b04ef4745..202131a22 100644 --- a/qcsrc/server/mutators/events.qh +++ b/qcsrc/server/mutators/events.qh @@ -1115,3 +1115,20 @@ MUTATOR_HOOKABLE(HavocBot_Aim, EV_HavocBot_Aim); /** player */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ MUTATOR_HOOKABLE(CalculateRespawnTime, EV_CalculateRespawnTime); + +/** called when parsing a vote command. */ +#define EV_VoteCommand_Parse(i, o) \ + /** caller */ i(entity, MUTATOR_ARGV_0_entity) \ + /** first command */ i(string, MUTATOR_ARGV_1_string) \ + /** vote command */ i(string, MUTATOR_ARGV_2_string) \ + /** start position of vote command */ i(float, MUTATOR_ARGV_3_float) \ + /** argument count */ i(float, MUTATOR_ARGV_4_float) \ + /**/ +MUTATOR_HOOKABLE(VoteCommand_Parse, EV_VoteCommand_Parse); + +enum { + MUT_VOTEPARSE_CONTINUE, // return this flag to make the function continue as normal + MUT_VOTEPARSE_SUCCESS, // return 1 (vote parsed) + MUT_VOTEPARSE_INVALID, // return -1 (vote parsed but counted as invalid, no action or vote) + MUT_VOTEPARSE_UNACCEPTABLE // return 0 (vote parameter counted as unacceptable, warns caller) +}; -- 2.39.2