From 0898b33c67ef5d124349e2817d1f42ab7ed98461 Mon Sep 17 00:00:00 2001 From: Adrian Cirstea <54354938+ShadowsAdi@users.noreply.github.com> Date: Sun, 6 Mar 2022 16:35:53 +0200 Subject: [PATCH] `RankRestrictions`: Implemented new ranking systems (#261) * Implemented new ranking systems - CMSStats MySQL - CSstatsX SQL - CSStats MySQL - CSX Module * Added csx's forward to native filter * Fix indentation * Update cstrike/addons/amxmodx/configs/plugins/ChatAdditions/CA_Addon_RankRestrictions.cfg Co-authored-by: Sergey Shorokhov --- .../CA_Addon_RankRestrictions.cfg | 13 +++- .../scripting/CA_Addon_RankRestrictions.sma | 71 ++++++++++++++++--- 2 files changed, 74 insertions(+), 10 deletions(-) diff --git a/cstrike/addons/amxmodx/configs/plugins/ChatAdditions/CA_Addon_RankRestrictions.cfg b/cstrike/addons/amxmodx/configs/plugins/ChatAdditions/CA_Addon_RankRestrictions.cfg index 33d722a2..a4ab04db 100644 --- a/cstrike/addons/amxmodx/configs/plugins/ChatAdditions/CA_Addon_RankRestrictions.cfg +++ b/cstrike/addons/amxmodx/configs/plugins/ChatAdditions/CA_Addon_RankRestrictions.cfg @@ -23,10 +23,13 @@ ca_rankrestrictions_min_kills "10" // 1 - Army Ranks Ultimate // 2 - OciXCrom's Rank System // 3 - CMSStats Ranks +// 4 - CMSStats MySQL +// 5 - CSstatsX SQL +// 6 - CSX Module // - // Default: "1" // Minimum: "0.000000" -// Maximum: "3.000000" +// Maximum: "6.000000" ca_rankrestrictions_type_level "1" // Min Level to access voice & text chat @@ -41,3 +44,11 @@ ca_rankrestrictions_min_level "2" ca_rankrestrictions_immunity_flag "a" +// Kill System Types +// 0 - CSStats MySQL +// 1 - CSX Module +// - +// Default: "0" +// Minimum: "0.000000" +// Maximum: "1.000000" +ca_rankrestrictions_type_kills "0" diff --git a/cstrike/addons/amxmodx/scripting/CA_Addon_RankRestrictions.sma b/cstrike/addons/amxmodx/scripting/CA_Addon_RankRestrictions.sma index 6c25a13c..bf0dec78 100644 --- a/cstrike/addons/amxmodx/scripting/CA_Addon_RankRestrictions.sma +++ b/cstrike/addons/amxmodx/scripting/CA_Addon_RankRestrictions.sma @@ -9,6 +9,9 @@ native ar_get_user_level(const player, rankName[] = "", len = 0) native crxranks_get_user_level(const player) native cmsranks_get_user_level(id, szLevel[] = "", len = 0) native csstats_get_user_stats(const player, const stats[22]) +native Float:cmsstats_get_user_skill(index, skillname[] = "", namelen = 0, &skill_level = 0); +native get_user_skill(player,&Float:skill) +native get_user_stats(index,stats[STATSX_MAX_STATS],bodyhits[MAX_BODYHITS]); // @@ -16,7 +19,8 @@ static ca_rankrestrictions_type, ca_rankrestrictions_min_kills, ca_rankrestrictions_type_level, ca_rankrestrictions_min_level, - ca_rankrestrictions_immunity_flag[16] + ca_rankrestrictions_immunity_flag[16], + ca_rankrestrictions_type_kills public stock const PluginName[] = "CA Addon: Rank restrictions" public stock const PluginVersion[] = CA_VERSION @@ -53,6 +57,12 @@ public native_filter(const name[], index, trap) { if(strcmp(name, "cmsranks_get_user_level")) return PLUGIN_HANDLED; + if(strcmp(name, "cmsstats_get_user_skill")) + return PLUGIN_HANDLED; + + if(strcmp(name, "get_user_stats")) + return PLUGIN_HANDLED; + return PLUGIN_CONTINUE } @@ -78,9 +88,12 @@ static Register_CVars() { 0 - Advanced Experience System\n\ 1 - Army Ranks Ultimate\n\ 2 - OciXCrom's Rank System\n\ - 3 - CMSStats Ranks", + 3 - CMSStats Ranks\n\ + 4 - CMSStats MySQL\n\ + 5 - CSstatsX SQL\n\ + 6 - CSX Module", .has_min = true, .min_val = 0.0, - .has_max = true, .max_val = 3.0 + .has_max = true, .max_val = 6.0 ), ca_rankrestrictions_type_level ) @@ -95,6 +108,15 @@ static Register_CVars() { ), ca_rankrestrictions_immunity_flag, charsmax(ca_rankrestrictions_immunity_flag) ) + + bind_pcvar_num(create_cvar("ca_rankrestrictions_type_kills", "1", + .description = "Kill System Types\n\ + 0 - CSStats MySQL\n\ + 1 - CSX Module", + .has_min = true, .min_val = 0.0, + .has_max = true, .max_val = 1.0 + ), ca_rankrestrictions_type_kills + ) } public CA_Client_Say(player) { @@ -155,16 +177,47 @@ static GetUserLevel(const player) { case 1: return ar_get_user_level(player) case 2: return crxranks_get_user_level(player) case 3: return cmsranks_get_user_level(player) + case 4: + { + new iSkill + cmsstats_get_user_skill(player, .skill_level = iSkill) + return iSkill + } + case 5: + { + new Float:iSkill + get_user_skill(player, iSkill) + return floatround(iSkill) + } + case 6: + { + new iStats[STATSX_MAX_STATS], iHits[MAX_BODYHITS] + get_user_stats(player, iStats, iHits) + return iStats[STATSX_RANK] + } } return 0 } static GetUserFragsFromStats(const player) { - enum { stats_Frags/* , stats_Deaths, stats_Rounds = 16 */ } - - new stats[22] - csstats_get_user_stats(player, stats) - - return stats[stats_Frags] + enum { stats_Frags/* , stats_Deaths, stats_Rounds = 16 */ } + + switch(ca_rankrestrictions_type_kills) + { + case 0: + { + new stats[22] + csstats_get_user_stats(player, stats) + return stats[stats_Frags] + } + case 1: + { + new iStats[STATSX_MAX_STATS], iHits[MAX_BODYHITS] + get_user_stats(player, iStats, iHits) + return iStats[STATSX_KILLS] + } + } + + return 0 }