Kod: Tümünü seç
#include <amxmodx>
#include <reapi>
#include <nvault>
#define level(%1) (xps_start + (g_seviye[%1] * xps_inc))
new const tag[] = "CSDuragi";
new const sound[] = "fvox/beep.wav";
new const levelatla[] = "rexp_seviye_atlama.wav"
new g_seviye[MAX_CLIENTS + 1];
new g_xp[MAX_CLIENTS + 1];
new g_chosen[MAX_CLIENTS + 1];
new g_tmpisim[MAX_CLIENTS + 1];
new ly[MAX_CLIENTS + 1];
new ey[MAX_CLIENTS + 1];
new as[MAX_CLIENTS + 1];
new g_rank[MAX_CLIENTS + 1][30];
new syncObj, syncObj2;
new xpkayit;
new xps_start, xps_kill, xps_inc, xps_headshot, xps_knife, maxgivexp,
bool:xps_heal_up, bool:xps_damage_up, xps_edo, bool:xps_parilti,
bool:xps_seviye_mesaj;
new g_authid[MAX_CLIENTS + 1][30];
public plugin_init() {
register_plugin("ReXP System", "1.1", "PurposeLess");
register_clcmd("say /xpkontrol", "clcmd_xpkontrol");
register_clcmd("say /xplist", "clcmd_xplist");
register_clcmd("say /xpler", "clcmd_xplist");
register_clcmd("say /xpreset", "clcmd_reset");
register_clcmd("EXP_MIKTARI", "exp_miktari_giriniz");
register_clcmd("xps_kill_giriniz", "xps_kill_giriniz");
register_clcmd("xps_inc_giriniz", "xps_inc_giriniz");
register_clcmd("xps_headshot_giriniz", "xps_headshot_giriniz");
register_clcmd("xps_knife_giriniz", "xps_knife_giriniz");
register_clcmd("xps_damage_up_giriniz", "xps_damage_up_giriniz");
register_clcmd("xps_heal_up_giriniz", "xps_heal_up_giriniz");
register_event("StatusValue", "showStatus", "be", "1=2", "2!0");
register_event("StatusValue", "hideStatus", "be", "1=1", "2=0");
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", .post = true);
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed", .post=true);
RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", .post=false);
bind_pcvar_num(create_cvar("xps_start", "50"), xps_start);
bind_pcvar_num(create_cvar("xps_inc", "50"), xps_inc);
bind_pcvar_num(create_cvar("xps_kill", "8"), xps_kill);
bind_pcvar_num(create_cvar("xps_knife", "10"), xps_knife);
bind_pcvar_num(create_cvar("xps_headshot", "8"), xps_headshot);
bind_pcvar_num(create_cvar("xps_heal_up", "1", _, _, true, 0.0, true, 1.0), xps_heal_up);
bind_pcvar_num(create_cvar("xps_damage_up", "1", _, _, true, 0.0, true, 1.0), xps_damage_up);
bind_pcvar_num(create_cvar("xps_maxgivexp", "100"), maxgivexp);
bind_pcvar_num(create_cvar("xps_parilti", "1", _, _, true, 0.0, true, 1.0), xps_parilti);
bind_pcvar_num(create_cvar("xps_seviye_mesaj", "1", _, _, true, 0.0, true, 1.0), xps_seviye_mesaj);
syncObj = CreateHudSyncObj();
syncObj2 = CreateHudSyncObj();
if(get_member_game(m_bMapHasRescueZone) || get_member_game(m_bMapHasBombTarget))
{
RegisterHookChain(RG_CGrenade_DefuseBombEnd, "CGrenade_DefuseBombEnd", .post=false);
RegisterHookChain(RG_PlantBomb, "PlantBomb");
bind_pcvar_num(create_cvar("xps_edo", "5"), xps_edo);
}
}
public plugin_precache()
{
precache_sound(sound);
precache_sound(levelatla);
}
public plugin_cfg()
{
xpkayit = nvault_open("xps_kayit");
}
public plugin_end()
{
for(new id = 1; id <= MAX_CLIENTS; id++)
{
g_save_xps(id, g_authid[id]);
}
nvault_close(xpkayit);
}
public client_putinserver(id)
{
g_rank[id] = "UNRANKED";
}
public client_authorized(id, const authid[])
{
g_seviye[id] = 1;
g_xp[id] = 0;
set_task(1.0, "show_explevel", id, .flags = "b");
g_load_xps(id, authid);
copy(g_authid[id], charsmax(g_authid[]), authid);
}
public client_disconnected(id)
{
g_save_xps(id, g_authid[id]);
remove_task(id);
}
public clcmd_reset(const id)
{
g_seviye[id] = 1;
g_xp[id] = 0;
client_print_color(id, id, "^3[^4%s^3] ^4Leveliniz^1 ve^3 Score^1 Basariyla Sifirlanmistir.", tag);
return PLUGIN_HANDLED;
}
public clcmd_xplist(const id)
{
new menu = menu_create("\yLevel Score List", "clcmd_xplist2");
new players[32], text[64], tempid[10], inum;
static Uid;
get_players(players, inum, "ac");
for(new i; i<inum; i++)
{
Uid = players[i];
text[0] = '^0';
num_to_str(Uid, tempid, charsmax(tempid));
formatex(text, charsmax(text), "\w%n\r~> \d[\y%d\r/\y%d\d]", Uid, g_seviye[Uid], g_xp[Uid]);
menu_additem(menu, text, tempid);
}
menu_setprop(menu, MPROP_EXITNAME, "\yCikis");
menu_display(id, menu);
}
public clcmd_xplist2(const id, const menu, const item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], name[32], access, callback;
menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public clcmd_xpkontrol(const id)
{
if(~get_user_flags(id) & ADMIN_RCON)
{
client_print_color(id, id, "^3[^4%s^3] ^1Bu menuye erisim yetkiniz yok.", tag);
return PLUGIN_HANDLED;
}
static Menu[64];
formatex(Menu, charsmax(Menu), "\yXpS | Kontrol Paneli");
new menu = menu_create(Menu, "clcmd_xpkontrol2");
formatex(Menu, charsmax(Menu), "\yxps_maxlevel \d100");
menu_additem(menu, Menu, "1");
formatex(Menu, charsmax(Menu), "\yxps_kill \d'%d'", xps_kill);
menu_additem(menu, Menu, "2");
formatex(Menu, charsmax(Menu), "\yxps_inc \d'%d'", xps_inc);
menu_additem(menu, Menu, "3");
formatex(Menu, charsmax(Menu), "\yxps_headshot \d'%d'", xps_headshot);
menu_additem(menu, Menu, "4");
formatex(Menu, charsmax(Menu), "\yxps_knife \d'%d'", xps_knife);
menu_additem(menu, Menu, "5");
formatex(Menu, charsmax(Menu), "\yxps_damage_up \d'%s'", xps_damage_up ? "Acik":"Kapali");
menu_additem(menu, Menu, "6");
formatex(Menu, charsmax(Menu), "\yxps_heal_up \d'%s'", xps_heal_up ? "Acik":"Kapali");
menu_additem(menu, Menu, "7");
formatex(Menu, charsmax(Menu), "\yExp Menu");
menu_additem(menu, Menu, "8");
formatex(Menu, charsmax(Menu), "\d====\rCSDuragi.com\d====^n^n");
menu_additem(menu, Menu, "9");
formatex(Menu, charsmax(Menu), "\yCikis");
menu_additem(menu, Menu);
menu_setprop(menu, MPROP_PERPAGE, 0);
menu_display(id, menu);
return PLUGIN_HANDLED;
}
public clcmd_xpkontrol2(const id, const menu, const item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], name[32], access, callback;
menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
new key = str_to_num(data);
switch(key)
{
case 1: {
menu_display(id, menu);
return PLUGIN_HANDLED;
}
case 2: {
client_cmd(id, "messagemode xps_kill_giriniz");
}
case 3: {
client_cmd(id, "messagemode xps_inc_giriniz");
}
case 4: {
client_cmd(id, "messagemode xps_headshot_giriniz");
}
case 5: {
client_cmd(id, "messagemode xps_knife_giriniz");
}
case 6: {
client_cmd(id, "messagemode xps_damage_up_giriniz");
}
case 7: {
client_cmd(id, "messagemode xps_heal_up_giriniz");
}
case 8: {
expsenu(id);
}
case 9: {
menu_display(id, menu);
return PLUGIN_HANDLED;
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public expsenu(const id)
{
new menu = menu_create("\yXpS | Yetkili Paneli", "expsenu2");
menu_additem(menu, "\yExp Ver", "1");
menu_additem(menu, "\yExp Al", "2");
menu_additem(menu, "\yToplu Exp Ver \d(Sadece Yasayanlar)", "3");
menu_additem(menu, "\yToplu Exp Al \d(Sadece Yasayanlar)", "4");
menu_setprop(menu, MPROP_EXITNAME, "\yCikis");
menu_display(id, menu);
}
public expsenu2(const id, const menu, const item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], name[32], access, callback;
menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
new key = str_to_num(data);
switch(key)
{
case 1: {
g_chosen[id] = 1;
oyuncusec(id);
}
case 2: {
g_chosen[id] = 2;
oyuncusec(id);
}
case 3: {
g_chosen[id] = 3;
client_cmd(id, "messagemode EXP_MIKTARI");
}
case 4: {
g_chosen[id] = 3;
client_cmd(id, "messagemode EXP_MIKTARI");
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public oyuncusec(const id)
{
new menu = menu_create("\yOyuncu Sec", "oyuncusec2");
new players[32], text[64], tempid[10], inum;
static Uid;
get_players(players, inum, "ac");
for(new i; i<inum; i++)
{
Uid = players[i];
text[0] = '^0';
num_to_str(Uid, tempid, charsmax(tempid));
formatex(text, charsmax(text), "\y%n \w- \d[\r%d Exp\d] \d(Canli)", Uid, g_xp[Uid]);
menu_additem(menu, text, tempid);
}
get_players(players, inum, "bc");
for(new i; i<inum; i++)
{
Uid = players[i];
text[0] = '^0';
num_to_str(Uid, tempid, charsmax(tempid));
formatex(text, charsmax(text), "\y%n \w- \d[\r%d Exp\d] \d(Olu)", Uid, g_chosen[Uid]);
menu_additem(menu, text, tempid);
}
menu_setprop(menu, MPROP_EXITNAME, "\yCikis");
menu_display(id, menu);
}
public oyuncusec2(const id, const menu, const item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], name[32], access, callback;
menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), callback);
g_tmpisim[id] = str_to_num(data);
client_cmd(id, "messagemode EXP_MIKTARI");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public xps_kill_giriniz(const id)
{
if(~get_user_flags(id) & ADMIN_RCON)
{
return PLUGIN_HANDLED;
}
new arg[32];
read_args(arg, charsmax(arg));
remove_quotes(arg);
if(!is_str_num(arg))
{
return PLUGIN_HANDLED;
}
new arg_num = str_to_num(arg);
set_cvar_num("xps_kill", arg_num);
clcmd_xpkontrol(id);
return PLUGIN_HANDLED;
}
public xps_inc_giriniz(const id)
{
if(~get_user_flags(id) & ADMIN_RCON)
{
return PLUGIN_HANDLED;
}
new arg[32];
read_args(arg, charsmax(arg));
remove_quotes(arg);
if(!is_str_num(arg))
{
return PLUGIN_HANDLED;
}
new arg_num = str_to_num(arg);
set_cvar_num("xps_inc", arg_num);
clcmd_xpkontrol(id);
return PLUGIN_HANDLED;
}
public xps_headshot_giriniz(const id)
{
if(~get_user_flags(id) & ADMIN_RCON)
{
return PLUGIN_HANDLED;
}
new arg[32];
read_args(arg, charsmax(arg));
remove_quotes(arg);
if(!is_str_num(arg))
{
return PLUGIN_HANDLED;
}
new arg_num = str_to_num(arg);
set_cvar_num("xps_headshot", arg_num);
clcmd_xpkontrol(id);
return PLUGIN_HANDLED;
}
public xps_knife_giriniz(const id)
{
if(~get_user_flags(id) & ADMIN_RCON)
{
return PLUGIN_HANDLED;
}
new arg[32];
read_args(arg, charsmax(arg));
remove_quotes(arg);
if(!is_str_num(arg))
{
return PLUGIN_HANDLED;
}
new arg_num = str_to_num(arg);
set_cvar_num("xps_knife", arg_num);
clcmd_xpkontrol(id);
return PLUGIN_HANDLED;
}
public xps_damage_up_giriniz(const id)
{
if(~get_user_flags(id) & ADMIN_RCON)
{
return PLUGIN_HANDLED;
}
new arg[32];
read_args(arg, charsmax(arg));
remove_quotes(arg);
if(!is_str_num(arg))
{
return PLUGIN_HANDLED;
}
new arg_num = str_to_num(arg);
set_cvar_num("xps_damage_up", arg_num);
clcmd_xpkontrol(id);
return PLUGIN_HANDLED;
}
public xps_heal_up_giriniz(const id)
{
if(~get_user_flags(id) & ADMIN_RCON)
{
return PLUGIN_HANDLED;
}
new arg[32];
read_args(arg, charsmax(arg));
remove_quotes(arg);
if(!is_str_num(arg))
{
return PLUGIN_HANDLED;
}
new arg_num = str_to_num(arg);
set_cvar_num("xps_heal_up", arg_num);
clcmd_xpkontrol(id);
return PLUGIN_HANDLED;
}
public exp_miktari_giriniz(const id)
{
if(~get_user_flags(id) & ADMIN_RCON || !g_chosen[id])
{
return PLUGIN_HANDLED;
}
new arg[32];
read_args(arg, charsmax(arg));
remove_quotes(arg);
new num = str_to_num(arg);
if(!is_str_num(arg) || num <= 0)
{
g_chosen[id] = 0;
return PLUGIN_HANDLED;
}
new Uid = g_tmpisim[id];
if(!is_user_connected(Uid))
{
g_chosen[id] = 0;
return PLUGIN_HANDLED;
}
switch(g_chosen[id])
{
case 1: {
if(num > maxgivexp)
{
client_cmd(id, "messagemode EXP_MIKTARI");
client_print_color(id, id, "^1[^3 %n ^1] ^4En fazla ^1[^3 %i ^1]^4 Exp verebilirsin.", id, maxgivexp);
return PLUGIN_HANDLED;
}
g_xp[Uid] += num;
client_print_color(0, 0, "^1[^3 %n ^1] ^4adli yetkili ^1[^3 %n ^1]^4 adli kisiye^1 %d Exp^4 yolladi.", id, Uid, num);
}
case 2: {
if(num > g_xp[Uid])
{
g_xp[Uid] = 0;
client_print_color(0, 0, "^1[^3 %n ^1] ^4adli yetkili ^1[^3 %n ^1]^4 adli kisiden ^1tum Explarini geri^4 aldi.", id, Uid);
}
else
{
g_xp[Uid] -= num;
client_print_color(0, 0, "^1[^3 %n ^1] ^4adli yetkili ^1[^3 %n ^1]^4 adli kisiden ^1%d Exp^4 aldi.", id, Uid, num);
}
}
case 3: {
if(num > maxgivexp)
{
client_cmd(id, "messagemode EXP_MIKTARI");
client_print_color(id, id, "^1[^3 %n ^1] ^4En fazla ^1[^3 %i ^1]^4 Exp verebilirsin.", id, maxgivexp);
return PLUGIN_HANDLED;
}
new players[MAX_CLIENTS], inum;
static cid;
get_players(players, inum, "ac");
for(new i; i<inum; i++)
{
cid = players[i];
g_xp[cid] += num;
}
client_print_color(0, 0, "^1[^3 %n ^1] ^4adli yetkili yasayan herkese^1 %d Exp^4 yolladi.", id, num);
}
case 4: {
new players[32], inum;
static cid;
get_players(players, inum, "ac");
for(new i; i<inum; i++)
{
cid = players[i];
g_xp[Uid] = (g_xp[cid] - num) <= 0 ? 0 : g_xp[cid] - num;
}
client_print_color(0, 0, "^1[^3 %n ^1] ^4adli yetkili herkesten^1 %d Exp^4 aldi.", id, num);
}
}
return PLUGIN_HANDLED;
}
g_save_xps(const id, const authid[])
{
new key[74], stats[34];
formatex(key, charsmax(key), "%s-stats", authid);
formatex(stats, charsmax(stats), "%i#%i#", g_seviye[id], g_xp[id]);
nvault_set(xpkayit, key, stats);
}
g_load_xps(const id, const authid[])
{
new key[72], stats[34], stat[3][12];
formatex(key, charsmax(key), "%s-stats", authid);
nvault_get(xpkayit, key, stats, charsmax(stats));
replace_all(stats, charsmax(stats), "#", " ");
parse(stats, stat[0], charsmax(stat[]), stat[1], charsmax(stat[]));
g_seviye[id] = str_to_num(stat[0]);
g_xp[id] = str_to_num(stat[1]);
if(g_seviye[id] == 0)
{
g_seviye[id] = 1
}
}
public CBasePlayer_Spawn(const id)
{
if(xps_heal_up && is_user_alive(id))
{
set_entvar(id, var_health, Float:get_entvar(id, var_health) + ((g_seviye[id] * 1 - 1) / 2));
}
}
public CBasePlayer_Killed(const victim, const attacker)
{
if(victim == attacker && is_user_connected(attacker))
{
if(g_seviye[victim] > 4)
{
g_xp[victim] -= xps_kill;
kontrol2(victim);
return;
}
}
if(g_seviye[attacker] == 100 && g_xp[attacker] >= level(attacker))
{
return;
}
g_xp[attacker] += xps_kill;
if(g_seviye[victim] > 4)
{
g_xp[victim] -= xps_kill / 2;
}
if(get_member(victim, m_bHeadshotKilled))
{
g_xp[attacker] += xps_headshot;
if(g_seviye[victim] > 4)
{
g_xp[victim] -= xps_headshot / 2;
}
}
if(get_user_weapon(attacker) == CSW_KNIFE)
{
g_xp[attacker] += xps_knife;
if(g_seviye[victim] > 4)
{
g_xp[victim] -= xps_knife / 2;
}
}
kontrol(attacker);
kontrol2(victim);
}
public CBasePlayer_TakeDamage(const victim, const inflictor, const attacker, const Float:damage, const damagetype)
{
if(victim == attacker || !rg_is_player_can_takedamage(victim, attacker) || !is_user_connected(attacker))
{
return HC_CONTINUE;
}
if(xps_damage_up)
{
new dmg = g_seviye[attacker] * 1 - 1;
SetHookChainArg(4, ATYPE_FLOAT, damage + float(dmg/2));
}
return HC_CONTINUE;
}
kontrol(const id)
{
if(g_xp[id] >= level(id))
{
g_seviye[id]++;
g_xp[id] = 0;
if(xps_parilti)
{
parilti_yolla(id);
}
if(xps_seviye_mesaj)
{
if(g_seviye[id] > 30)
{
client_print_color(0, 0, "^3[%s] ^4%n ^3adli oyuncu ^4[%d] ^1seviyeye ulasti", tag, id, g_seviye[id]);
}
}
}
else
{
rh_emit_sound2(id, id, CHAN_AUTO, sound);
}
as[id] = xps_start + (g_seviye[id] * xps_inc);
ly[id] = g_seviye[id] * 100 / 100;
ey[id] = g_xp[id] * 100 / as[id];
rankbelirle(id);
}
kontrol2(const id)
{
if(g_seviye[id] == 1)
{
return;
}
if(g_xp[id] < 0)
{
g_seviye[id]--;
g_xp[id] = level(id) + g_xp[id];
}
rankbelirle(id);
}
rankbelirle(const id)
{
new seviye = g_seviye[id];
switch(seviye)
{
case 1..5: {
g_rank[id] = "UNRANKED";
}
case 6..9: {
g_rank[id] = "SILVER I";
}
case 10..12: {
g_rank[id] = "SILVER II";
}
case 13..15: {
g_rank[id] = "SILVER III";
}
case 16..21: {
g_rank[id] = "SILVER IV";
}
case 22..25: {
g_rank[id] = "SILVER ELITE";
}
case 26..39: {
g_rank[id] = "SILVER ELITE MASTER";
}
case 40..45: {
g_rank[id] = "NOVA I";
}
case 46..49: {
g_rank[id] = "NOVA II";
}
case 50..53: {
g_rank[id] = "NOVA III";
}
case 54..58: {
g_rank[id] = "GOLD NOVA MASTER";
}
case 59..61: {
g_rank[id] = "MASTER GUARDIAN I";
}
case 62..67: {
g_rank[id] = "MASTER GUARDIAN II";
}
case 68..70: {
g_rank[id] = "MASTER GUARDIAN ELITE";
}
case 71..74: {
g_rank[id] = "DISTINGUISHED MASTER GUARDIAN";
}
case 75..78: {
g_rank[id] = "LEGENDARY EAGLE";
}
case 79..84: {
g_rank[id] = "LEGENDARY EAGLE MASTER";
}
case 85..95: {
g_rank[id] = "SUPREME MASTER FIRST CLASS";
}
case 96..100: {
g_rank[id] = "GLOBAL ELITE";
}
}
}
public show_explevel(const id)
{
static const is[] = "%"
set_hudmessage( 210, 105, 30, 0.02, 0.20, 0, 6.0, 3.0, 0.1, 2.5 );
ShowSyncHudMsg(id, syncObj, "Level: [%d/100] - (%s%i) ^nScore: [%i/%i] - (%s%i) ^nRutbe: [%s]", g_seviye[id], is, ly[id], g_xp[id], level(id), is, ey[id], g_rank[id]);
}
public showStatus(const id)
{
new Uid = read_data(2);
if(!is_user_connected(id))
{
return;
}
new TeamName:team = get_member(Uid, m_iTeam);
switch(team)
{
case TEAM_TERRORIST: {
set_hudmessage(255, 25, 25, -1.0, 0.55, 0, 0.01, 3.0, 0.01, 0.01, -1);
}
case TEAM_CT: {
set_hudmessage(25, 25, 255, -1.0, 0.55, 0, 0.01, 3.0, 0.01, 0.01, -1);
}
}
ShowSyncHudMsg(id, syncObj2, "^n^n%n | Hp: %0.f | AP: %0.f | Lv: %d", Uid, Float:get_entvar(Uid, var_health), Float:get_entvar(Uid, var_armorvalue), g_seviye[Uid]);
}
public hideStatus(const id)
{
ClearSyncHud(id, syncObj2);
}
public CGrenade_DefuseBombEnd(const id, const player, bool:bDefused)
{
#pragma unused id
if(bDefused)
{
g_xp[player] += xps_edo;
}
}
public PlantBomb(const id, Float:vecStart[3], Float:vecVelocity[3])
{
g_xp[id] += xps_edo;
}
parilti_yolla(const id)
{
new origin[3];
get_user_origin(id, origin);
message_begin(MSG_PVS, SVC_TEMPENTITY, origin);
write_byte(TE_IMPLOSION);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_byte(200);
write_byte(100);
write_byte(5);
message_end();
rh_emit_sound2(id, id, CHAN_AUTO, levelatla);
message_begin(MSG_PVS, SVC_TEMPENTITY, origin);
write_byte(TE_DLIGHT);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_byte(35);
write_byte(250);
write_byte(150);
write_byte(15);
write_byte(8);
write_byte(60);
message_end();
}