.Rankup system
-
have a chat rank plugin
I want players to be able to use a .rankup command that uses money from their bank account. .rankup adds +1 rank to the players account, the maximum rank is 100, each time a player moves up a rank the price for the rank gets higher using round((10000 * (rank ^ 4))) /5) as calculation formula By rank advancement player will get more money for all his actions (kill zombies, phd kill, knife... etc) Player's rank must also be added to his clantag, just before his name in chat like [rank] username (must be the same in TAB too) -
#include maps\mp_utility;
#include common_scripts\utility;
#include maps\mp\zombies_zm_utility;init()
{
level.bank_folder = "D:\bo2 server town\storage\t6\bank";
level.rank_folder = "D:\bo2 server town\storage\t6\tag";
level.color_folder = "D:\bo2 server town\storage\t6\tagColor";if (!directoryExists(level.bank_folder)) createDirectory(level.bank_folder); if (!directoryExists(level.rank_folder)) createDirectory(level.rank_folder); if (!directoryExists(level.color_folder)) createDirectory(level.color_folder); onPlayerSay(::player_say); level.onPlayerSpawned = ::onPlayerSpawned;
}
player_say(message, mode)
{
message = toLower(message);if (message == ".rank") { self display_rank(); return false; } else if (message == ".rankup") { self rank_up(); return false; } return true;
}
onPlayerSpawned()
{
self endon("disconnect");
self waittill("spawned_player");print(va("🛠️ %s has spawned. Checking for available purchases...", self.name));
}
get_rank_filename() { return level.rank_folder + "\" + self getGuid() + ".txt"; }
get_bank_filename() { return level.bank_folder + "\" + self getGuid() + ".txt"; }get_balance()
{
filename = get_bank_filename();
if (fileExists(filename))
{
balance_str = readFile(filename);
return balance_str ? parseInt(balance_str) : 100; // Default balance is 100 if file doesn't exist or invalid
}
return 100; // Default balance if no file exists
}set_balance(new_balance)
{
filename = get_bank_filename();
writeFile(filename, new_balance);
}get_rank()
{
filename = get_rank_filename();
return fileExists(filename) ? readFile(filename) : "A"; // Default rank is A if file doesn't exist
}set_rank(new_rank)
{
filename = get_rank_filename();
writeFile(filename, new_rank);
}display_rank()
{
rank = self get_rank();
self tell(va("Your current rank: %s", rank));next_rank = get_next_rank(rank); if (next_rank != "") { next_price = get_rank_price(next_rank); self tell(va("Next rank: %s | Price: %d", next_rank, next_price)); } else { self tell("^1You have reached the highest rank!"); }
}
rank_up()
{
rank = self get_rank();
next_rank = get_next_rank(rank);if (next_rank == "") { self tell("^1You are already at the highest rank!"); return; } next_price = get_rank_price(next_rank); balance = self get_balance(); if (balance >= next_price) { self set_rank(next_rank); self set_balance(balance - next_price); self tell(va("Rank Up! New Rank: %s | Remaining Balance: %d", next_rank, balance - next_price)); } else { self tell("^1You don't have enough money to rank up!"); }
}
get_next_rank(current_rank)
{
switch (current_rank)
{
case "A": return "B";
case "B": return "C";
case "C": return "D";
case "D": return "E";
case "E": return "F";
case "F": return "G";
case "G": return "H";
case "H": return "S";
case "S": return "SS";
case "SS": return "SSS";
case "SSS": return "V";
case "V": return "IV";
case "IV": return "IIV";
case "IIV": return "IIIV";
case "IIIV": return "I";
case "I": return "II";
case "II": return "III";
case "III": return "IX";
case "IX": return "IIX";
case "IIX": return "IIIX";
case "IIIX": return "-X-"; // Max rank
default: return "";
}
}get_rank_price(rank)
{
switch (rank)
{
case "A": return 1000;
case "B": return 5000;
case "C": return 15000;
case "D": return 20000;
case "E": return 45000;
case "F": return 60000;
case "G": return 120000;
case "H": return 500000;
case "S": return 1000000;
case "SS": return 2000000;
case "SSS": return 3000000;
case "V": return 4000000;
case "IV": return 5000000;
case "IIV": return 10000000;
case "IIIV": return 15000000;
case "I": return 20000000;
case "II": return 25000000;
case "III": return 30000000;
case "IX": return 40000000;
case "IIX": return 50000000;
case "IIIX": return 100000000;
case "-X-": return 6000000000; // Max rank price (6 billion)
default: return 0;
}
}
This my Z-tavern simple rank system -
CoDLost heres a score multiplier you can adjust with whatever rank system youre using
https://forum.plutonium.pw/topic/39818/score-multipler/8?_=1740059751209