Added {points} variable to chat titles.

Also extended the display text's limitations.
This commit is contained in:
shavit 2018-03-17 23:26:05 +02:00
parent 61cf6e09ba
commit 3f3f9c3c0b
2 changed files with 38 additions and 19 deletions

View File

@ -1,5 +1,5 @@
// Available settings:
// "ranks" - inclusive rank range. (i.e. 1, 2, 10-19 or 0.0%-0.5%). Use a percent sign to use a percentile of total players.
// "ranks" - inclusive rank range. (i.e. 1, 2, 10-19 or 0.0%-0.5%). Use a percent sign to use a percentile of total players. Add "p" as a prefix to use points instead of ranks, don't specify a range for points if you only want a minimum to unlock the title.
// "name" - custom name appearance. Default: "{name}"
// "message" - a prefix to the message itself. Default: ""
// "display" - display text in the !chatranks menu. "<n>" for a new line. Filling this is required.
@ -31,41 +31,49 @@
"1"
{
"ranks" "1"
"name" "{rand}ONE TRUE GOD {team}{name}"
"message" "{rand}"
"display" "[ONE TRUE GOD]<n>A title awarded only to the very best players."
"ranks" "p10000"
"free" "0"
"name" "{rand}10k! {team}{name}"
"display" "10k Challenger<n>You are insane. You are a hero. You are a challenger.<n>A title awarded to the magnificent players who achieve 10,000 points."
}
"2"
{
"ranks" "1"
"name" "{rand}ONE TRUE GOD {team}{name}"
"message" "{rand}"
"display" "[ONE TRUE GOD]<n>A title awarded only to the very best players."
}
"3"
{
"ranks" "2"
"name" "{green}LEGENDARY {name}"
"display" "[LEGENDARY]<n>A title obtained by legendary players."
}
"3"
"4"
{
"ranks" "3"
"name" "{green}HERO {team}{name}"
"display" "[HERO]<n>You're a hero, and you deserve this title."
}
"4"
"5"
{
"ranks" "4-10"
"name" "{rand}scrub{rand}! {name}"
"display" "scrub!<n>You're a noob."
}
"5"
"6"
{
"ranks" "11-100%"
"name" ":( {name}"
"display" "sad face<n>You're terrible. Get good!"
}
"6"
"7"
{
"free" "1"
"name" "{rand}:) {name}"

View File

@ -34,20 +34,21 @@
enum ChatRanksCache
{
iCRRangeType, // 0 - flat, 1 - percent
iCRRangeType, // 0 - flat, 1 - percent, 2 - point range
Float:fCRFrom,
Float:fCRTo,
bool:bCRFree,
String:sCRName[MAXLENGTH_NAME],
String:sCRMessage[MAXLENGTH_MESSAGE],
String:sCRDisplay[128],
String:sCRDisplay[192],
CRCACHE_SIZE
}
enum
{
Rank_Flat,
Rank_Percentage
Rank_Percentage,
Rank_Points
}
#pragma newdecls required
@ -181,7 +182,17 @@ bool LoadChatConfig()
char[] sRanks = new char[32];
kv.GetString("ranks", sRanks, MAXLENGTH_NAME, "0");
aChatTitle[iCRRangeType] = (StrContains(sRanks, "%%") == -1)? Rank_Flat:Rank_Percentage;
if(sRanks[0] == 'p')
{
aChatTitle[iCRRangeType] = Rank_Points;
}
else
{
aChatTitle[iCRRangeType] = (StrContains(sRanks, "%%") == -1)? Rank_Flat:Rank_Percentage;
}
ReplaceString(sRanks, 32, "p", "");
ReplaceString(sRanks, 32, "%%", "");
if(StrContains(sRanks, "-") != -1)
@ -197,14 +208,14 @@ bool LoadChatConfig()
float fRank = StringToFloat(sRanks);
aChatTitle[fCRFrom] = fRank;
aChatTitle[fCRTo] = fRank;
aChatTitle[fCRTo] = (aChatTitle[iCRRangeType] != Rank_Points)? fRank:2147483648.0;
}
aChatTitle[bCRFree] = view_as<bool>(kv.GetNum("free", false));
kv.GetString("name", aChatTitle[sCRName], MAXLENGTH_NAME, "{name}");
kv.GetString("message", aChatTitle[sCRMessage], MAXLENGTH_MESSAGE, "");
kv.GetString("display", aChatTitle[sCRDisplay], 128, "");
kv.GetString("display", aChatTitle[sCRDisplay], 192, "");
if(strlen(aChatTitle[sCRDisplay]) > 0)
{
@ -577,11 +588,11 @@ bool HasRankAccess(int client, int rank)
return false;
}
int iRank = Shavit_GetRank(client);
float fRank = (aCache[iCRRangeType] != Rank_Points)? float(Shavit_GetRank(client)):Shavit_GetPoints(client);
if(aCache[iCRRangeType] == Rank_Flat)
if(aCache[iCRRangeType] == Rank_Flat || aCache[iCRRangeType] == Rank_Points)
{
if(aCache[fCRFrom] <= iRank <= aCache[fCRTo])
if(aCache[fCRFrom] <= fRank <= aCache[fCRTo])
{
return true;
}
@ -597,7 +608,7 @@ bool HasRankAccess(int client, int rank)
iRanked = 1;
}
float fPercentile = (float(iRank) / iRanked) * 100.0;
float fPercentile = (fRank / iRanked) * 100.0;
if(aCache[fCRFrom] <= fPercentile <= aCache[fCRTo])
{