Senior Member
|
10-14-2018
, 05:57
[CSGO] Chat TAGs by ranking
|
#1
|
hi guys..
what about a plugin which manages chat tags by ranking like the kztimer plugin has but for a ranking plugin like RankMe sodstats hlstatX gameme etc..
the code should be all there (in the kztimer plugin) .. someone just needs to put it together or would that be too complicated? only adjustment would be to get the ranks/points out of the rankMe mysql database instead!
so the idea is
- the plugin gets the playerranking and points from the mysql database from the ranking system (RankMe)
- a config file which sets up the skillgroups/chattags and either how much points or ranking is needed to get them
like top10(>2000points) [PRO]
rank 20-30 (1500-2000points) [SEMIPRO] and so on...
scripting/kztimerGlobal/misc.sp
Code:
public SetSkillGroups()
{
//Map Points
new mapcount;
if (g_pr_MapCount < 1)
mapcount = 1;
else
mapcount = g_pr_MapCount;
g_pr_PointUnit = 1;
new Float: MaxPoints = float(mapcount) * 1300.0 + 4000.0; //1300 = map max, 4000 = jumpstats max
new g_RankCount = 0;
decl String:sPath[PLATFORM_MAX_PATH], String:sBuffer[32];
BuildPath(Path_SM, sPath, sizeof(sPath), "configs/kztimer/skillgroups.cfg");
if (FileExists(sPath))
{
new Handle:hKeyValues = CreateKeyValues("KZTimer.SkillGroups");
if(FileToKeyValues(hKeyValues, sPath) && KvGotoFirstSubKey(hKeyValues))
{
do
{
if (g_RankCount <= 8)
{
KvGetString(hKeyValues, "name", g_szSkillGroups[g_RankCount], 32);
KvGetString(hKeyValues, "percentage", sBuffer,32);
if (g_RankCount != 0)
g_pr_rank_Percentage[g_RankCount] = RoundToCeil(MaxPoints * StringToFloat(sBuffer));
}
g_RankCount++;
}
while (KvGotoNextKey(hKeyValues));
}
if (hKeyValues != INVALID_HANDLE)
CloseHandle(hKeyValues);
}
else
SetFailState("<KZTIMER> addons/sourcemod/configs/kztimer/skillgroups.cfg not found.");
}
public SetPlayerRank(client)
{
if (!IsValidClient(client) || IsFakeClient(client) || g_pr_Calculating[client])
return;
if (g_bPointSystem)
{
if (g_pr_points[client] < g_pr_rank_Percentage[1])
{
g_Skillgroup[client] = 1;
Format(g_pr_rankname[client], 32, "%s",g_szSkillGroups[0]);
Format(g_pr_chat_coloredrank[client], 32, "[%c%s%c]",WHITE,g_szSkillGroups[0],WHITE);
}
else
if (g_pr_rank_Percentage[1] <= g_pr_points[client] && g_pr_points[client] < g_pr_rank_Percentage[2])
{
g_Skillgroup[client] = 2;
Format(g_pr_rankname[client], 32, "%s",g_szSkillGroups[1]);
Format(g_pr_chat_coloredrank[client], 32, "[%c%s%c]",WHITE,g_szSkillGroups[1],WHITE);
}
else
if (g_pr_rank_Percentage[2] <= g_pr_points[client] && g_pr_points[client] < g_pr_rank_Percentage[3])
{
g_Skillgroup[client] = 3;
Format(g_pr_rankname[client], 32, "%s",g_szSkillGroups[2]);
Format(g_pr_chat_coloredrank[client], 32, "[%c%s%c]",GRAY,g_szSkillGroups[2],WHITE);
}
else
if (g_pr_rank_Percentage[3] <= g_pr_points[client] && g_pr_points[client] < g_pr_rank_Percentage[4])
{
g_Skillgroup[client] = 4;
Format(g_pr_rankname[client], 32, "%s",g_szSkillGroups[3]);
Format(g_pr_chat_coloredrank[client], 32, "[%c%s%c]",LIGHTBLUE,g_szSkillGroups[3],WHITE);
}
else
if (g_pr_rank_Percentage[4] <= g_pr_points[client] && g_pr_points[client] < g_pr_rank_Percentage[5])
{
g_Skillgroup[client] = 5;
Format(g_pr_rankname[client], 32, "%s",g_szSkillGroups[4]);
Format(g_pr_chat_coloredrank[client], 32, "[%c%s%c]",BLUE,g_szSkillGroups[4],WHITE);
}
else
if (g_pr_rank_Percentage[5] <= g_pr_points[client] && g_pr_points[client] < g_pr_rank_Percentage[6])
{
g_Skillgroup[client] = 6;
Format(g_pr_rankname[client], 32, "%s",g_szSkillGroups[5]);
Format(g_pr_chat_coloredrank[client], 32, "[%c%s%c]",DARKBLUE,g_szSkillGroups[5],WHITE);
}
else
if (g_pr_rank_Percentage[6] <= g_pr_points[client] && g_pr_points[client] < g_pr_rank_Percentage[7])
{
g_Skillgroup[client] = 7;
Format(g_pr_rankname[client], 32, "%s",g_szSkillGroups[6]);
Format(g_pr_chat_coloredrank[client], 32, "[%c%s%c]",PINK,g_szSkillGroups[6],WHITE);
}
else
if (g_pr_rank_Percentage[7] <= g_pr_points[client] && g_pr_points[client] < g_pr_rank_Percentage[8])
{
g_Skillgroup[client] = 8;
Format(g_pr_rankname[client], 32, "%s",g_szSkillGroups[7]);
Format(g_pr_chat_coloredrank[client], 32, "[%c%s%c]",LIGHTRED,g_szSkillGroups[7],WHITE);
}
else
if (g_pr_points[client] >= g_pr_rank_Percentage[8])
{
g_Skillgroup[client] = 9;
Format(g_pr_rankname[client], 32, "%s",g_szSkillGroups[8]);
Format(g_pr_chat_coloredrank[client], 32, "[%c%s%c]",DARKRED,g_szSkillGroups[8],WHITE);
}
}
else
{
g_Skillgroup[client] = 0;
Format(g_pr_rankname[client], 32, "");
}
// DEV Tags -- 1NutWunder, Klyve & Sikari
if (StrEqual(g_szSteamID[client],"STEAM_1:1:73507922") || StrEqual(g_szSteamID[client],"STEAM_1:0:36685029") || StrEqual(g_szSteamID[client],"STEAM_1:1:21505111"))
{
Format(g_pr_chat_coloredrank[client], 32, "%s %cDEV%c",g_pr_chat_coloredrank[client],RED,WHITE);
if (g_bVipClantag && (GetUserFlagBits(client) & ADMFLAG_RESERVATION) && !(GetUserFlagBits(client) & ADMFLAG_ROOT) && !(GetUserFlagBits(client) & ADMFLAG_GENERIC))
{
Format(g_pr_rankname[client], 32, "VIP");
}
else if (g_bAdminClantag && (GetUserFlagBits(client) & ADMFLAG_ROOT || GetUserFlagBits(client) & ADMFLAG_GENERIC))
{
Format(g_pr_rankname[client], 32, "ADMIN");
}
return;
}
// GLOBAL Tags
if (StrEqual(g_szSteamID[client],"STEAM_1:1:43259299") ||
StrEqual(g_szSteamID[client],"STEAM_1:0:31861748") ||
StrEqual(g_szSteamID[client],"STEAM_1:0:31339383") ||
StrEqual(g_szSteamID[client],"STEAM_1:0:16599865") ||
StrEqual(g_szSteamID[client],"STEAM_1:0:8845346") ||
StrEqual(g_szSteamID[client],"STEAM_1:1:11374239"))
{
Format(g_pr_chat_coloredrank[client], 32, "%s %cGLOBAL%c",g_pr_chat_coloredrank[client],DARKRED,WHITE);
if (g_bVipClantag && (GetUserFlagBits(client) & ADMFLAG_RESERVATION) && !(GetUserFlagBits(client) & ADMFLAG_ROOT) && !(GetUserFlagBits(client) & ADMFLAG_GENERIC))
{
Format(g_pr_rankname[client], 32, "VIP");
}
else if (g_bAdminClantag && (GetUserFlagBits(client) & ADMFLAG_ROOT || GetUserFlagBits(client) & ADMFLAG_GENERIC))
{
Format(g_pr_rankname[client], 32, "ADMIN");
}
return;
}
// VIP tag
if (g_bVipClantag)
{
if ((GetUserFlagBits(client) & ADMFLAG_RESERVATION) && !(GetUserFlagBits(client) & ADMFLAG_ROOT) && !(GetUserFlagBits(client) & ADMFLAG_GENERIC))
{
Format(g_pr_chat_coloredrank[client], 32, "%s %cVIP%c",g_pr_chat_coloredrank[client],YELLOW,WHITE);
Format(g_pr_rankname[client], 32, "VIP");
}
}
//ADMIN tag
if (g_bAdminClantag)
{
if (GetUserFlagBits(client) & ADMFLAG_ROOT || GetUserFlagBits(client) & ADMFLAG_GENERIC)
{
Format(g_pr_chat_coloredrank[client], 32, "%s %cADMIN%c",g_pr_chat_coloredrank[client],LIMEGREEN,WHITE);
Format(g_pr_rankname[client], 32, "ADMIN");
}
}
// Mapper tag
for(new x = 0; x < 100; x++)
{
if ((StrContains(g_szMapmakers[x],"STEAM",true) != -1))
{
if (StrEqual(g_szMapmakers[x],g_szSteamID[client]))
{
Format(g_pr_chat_coloredrank[client], 32, "%s %cMAPPER%c",g_pr_chat_coloredrank[client],LIMEGREEN,WHITE);
Format(g_pr_rankname[client], 32, "MAPPER");
break;
}
}
}
}
scripting/kztimerGlobal/commands.sp
Code:
public Action:Client_Ranks(client, args)
{
if (IsValidClient(client))
PrintToChat(client, "[%cKZ%c] %c%s (0p) %c%s%c (%ip) %c%s%c (%ip) %c%s%c (%ip) %c%s%c (%ip) %c%s%c (%ip) %c%s%c (%ip) %c%s%c (%ip) %c%s%c (%ip)",
MOSSGREEN,WHITE, WHITE, g_szSkillGroups[0],WHITE,g_szSkillGroups[1],WHITE,g_pr_rank_Percentage[1], GRAY, g_szSkillGroups[2],GRAY,g_pr_rank_Percentage[2],LIGHTBLUE,
g_szSkillGroups[3],LIGHTBLUE,g_pr_rank_Percentage[3],BLUE, g_szSkillGroups[4],BLUE,g_pr_rank_Percentage[4],DARKBLUE,g_szSkillGroups[5],DARKBLUE,g_pr_rank_Percentage[5],
PINK,g_szSkillGroups[6],PINK,g_pr_rank_Percentage[6],LIGHTRED,g_szSkillGroups[7],LIGHTRED,g_pr_rank_Percentage[7],DARKRED,g_szSkillGroups[8],DARKRED,g_pr_rank_Percentage[8]);
return Plugin_Handled;
}
configs/kztimer/skillgroups.cfg
Code:
//Points for skill group 2-9: percentage * (MaxPointsFromMaps +MaxPointsFromJumpstats) [Requires map restart]
//MaxPointsFromMaps = MapCount * 1300p
//MaxPointsFromJumpstats = 7 * 500p (500p per JumpStats type)
"KZTimer.SkillGroups"
{
"1"
{
"name" "NEWB"
}
"2"
{
"name" "SCRUB"
"percentage" "0.00005"
}
"3"
{
"name" "TRAINEE"
"percentage" "0.003"
}
"4"
{
"name" "CASUAL"
"percentage" "0.01"
}
"5"
{
"name" "REGULAR"
"percentage" "0.017"
}
"6"
{
"name" "SKILLED"
"percentage" "0.05"
}
"7"
{
"name" "EXPERT"
"percentage" "0.12"
}
"8"
{
"name" "SEMIPRO"
"percentage" "0.16"
}
"9"
{
"name" "PRO"
"percentage" "0.25"
}
}
Last edited by napster_10; 10-14-2018 at 06:05.
|
|