/* Sublime AMXX Editor v2.2 */
#include <amxmodx>
//#include <amxmisc>
//#include <cstrike>
#include <engine>
// #include <fakemeta>
#include <hamsandwich>
// #include <fun>
// #include <xs>
// #include <sqlx>
#define PLUGIN "CSDM Level Mod"
#define VERSION "1.0.0"
#define AUTHOR "Filip."
#define MAX_PLAYERS 33
enum penum {
pXP,
pLevel,
pPoints
}
new PlayerData[MAX_PLAYERS][penum]
new Levels[] = {
0, // Nu sterge
500, // 1
1000, // 2
1500, // 3
2000, // 4
2500, // 5
3000, // 6
3500, // 7
4000, // 8
4500, // 9
5000 // 10
}
//new gString[256]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_dictionary("csdm_levelmod.txt")
RegisterHam(Ham_Killed, "player", "OnSpawn", 1)
RegisterHam(Ham_Killed, "player", "OnDeath")
register_clcmd("say /stats", "ShowPlayerStats")
register_impulse(201, "ShowPlayerMenu")
}
public plugin_natives() {
register_native("csdm_set_user_xp", "csdm_set_user_xp", 1)
register_native("csdm_set_user_level", "csdm_set_user_level", 1)
register_native("csdm_set_user_points", "csdm_set_user_points", 1)
register_native("csdm_get_user_xp", "csdm_get_user_xp", 1)
register_native("csdm_get_user_level", "csdm_get_user_level", 1)
register_native("csdm_get_user_points", "csdm_get_user_xp", 1)
}
public ShowPlayerStats(playerid) {
ColorChat(playerid, "%L", playerid, "CSDM_STATS", PlayerData[playerid][pLevel], PlayerData[playerid][pXP], PlayerData[playerid][pPoints])
}
public client_putinserver(playerid) {
if(PlayerData[playerid][pLevel] == 0) PlayerData[playerid][pLevel] = 1
}
public OnSpawn(playerid) {
}
public OnDeath(victim, killer) {
// if(killer == victim) return
csdm_set_user_xp(victim, csdm_get_user_xp(victim) + 5)
}
public csdm_set_user_xp(playerid, xp) {
PlayerData[playerid][pXP] = xp
CheckLevel(playerid)
}
public csdm_set_user_level(playerid, level) return PlayerData[playerid][pLevel] = level
public csdm_set_user_points(playerid, points) return PlayerData[playerid][pPoints] = points
public csdm_get_user_xp(playerid) return PlayerData[playerid][pXP]
public csdm_get_user_level(playerid) return PlayerData[playerid][pLevel]
public csdm_get_user_points(playerid) return PlayerData[playerid][pPoints]
public CheckLevel(playerid) {
if(PlayerData[playerid][pXP] >= Levels[PlayerData[playerid][pLevel]]) {
PlayerData[playerid][pLevel] ++
ColorChat(playerid, "%L", playerid, "CSDM_LEVELUP", GetName(playerid), PlayerData[playerid][pLevel])
}
}
stock GetName(playerid) {
new name[32]
get_user_name(playerid, name, 31)
return name
}
stock ColorChat(const id, const input[], any:...) {
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4");
replace_all(msg, 190, "!y", "^1");
replace_all(msg, 190, "!t", "^3");
if(id) players[0] = id;
else get_players(players, count, "ch"); {
for(new i = 0; i < count; i++) {
if(is_user_connected(players)) {
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players);
write_byte(players);
write_string(msg);
message_end();
}
}
}
}