Kod:
#pragma semicolon 1
#include <amxmodx>
#include <reapi>
#include <nvault>
#include <fakemeta>
new const ChatTag[] = "^1[^4LG^1]";
native csd_chat_rutbe(oyuncu, const rutbe[]);
new const sLevelSystem[][][] = {
{ "Yeni Oyuncu", 0 }, // 0
{ "Er", 50 }, // 1
{ "Onbasi", 100 }, // 2
{ "Cavus", 150 }, // 3
{ "Uzman Onbasi", 200 }, // 4
{ "Uzman Cavus", 300 }, // 5
{ "Astsubay", 450 }, // 6
{ "Astegmen", 600 }, // 7
{ "Tegmen", 800 }, // 8
{ "Ustegmen", 1000 }, // 9
{ "Yuzbasi", 1250 }, // 10
{ "Binbasi", 1500 }, // 11
{ "Yarbay", 1800 }, // 12
{ "Albay", 2100 }, // 13
{ "Tuggeneral", 2500 }, // 14
{ "Tumgeneral", 2900 }, // 15
{ "Korgeneral", 3500 }, // 16
{ "Orgeneral", 4000 }, // 17
{ "GenelKurmay Baskani", 4600 }, // 18
{ "Maresal", 5100 }, // 19
{ "İmparator", 6000 }, // 20
};
new const szSkins[][][] = {
{ "Default", "models/v_knife.mdl", 1, 0 }, // Skin adı, model dosyası, silah id, alabilecek rank.
{ "Classic - Amongus", "Legand_GaminG/v_Classic_Amongus", 5, 1 },
{ "Bayonet - Trojen", "Legand_GaminG/v_Bayonet_Trojen", 6, 3 },
{ "Butterfly - Lore", "Legand_GaminG/v_Butterfly_Lore", 7, 5 },
{ "Karambit - Asimov", "Legand_GaminG/v_Karambit_Asimov", 8, 7 },
{ "Stiletto - Polymer", "Legand_GaminG/v_Stiletto_Polymer", 9, 10 },
{ "Shadow - Combine", "Legand_GaminG/v_Shadow_Combine", 10, 15 },
{ "Hunstman - Acid", "Legand_GaminG/v_Hunstman_Acid", 8, 20 },
{ "AK47 Test", "v_ak47", 10, 0 },
{ "M4A1 Test", "v_m4a1", 30, 0 },
{ "AWP Test", "Legand_GaminG/v_awpnew", 50, 0 },
};
enum _: Variables {
Exp,
Level
}
new Vars[MAX_PLAYERS + 1][Variables], iCvars[3], iVault, iForward, iReturn, iSyncHud, ActiveSkin[MAX_PLAYERS + 1][31];
public plugin_init() {
register_plugin("RutbeSistemi", "1.0", "Pawnod, Lynch, Maravilha");
register_clcmd("say /rutbe", "RutbeInformation");
register_clcmd("say !rutbe", "RutbeInformation");
register_clcmd("say .rutbe", "RutbeInformation");
register_clcmd("say /skin", "ModelMenu");
register_clcmd("say !skin", "ModelMenu");
register_clcmd("say .skin", "ModelMenu");
register_clcmd("say /bicak", "ModelMenu");
register_clcmd("say !bicak", "ModelMenu");
register_clcmd("say .bicak", "ModelMenu");
RegisterHookChain(RG_CBasePlayer_Killed, "@IsKilled", .post = true);
iForward = CreateMultiForward("pUserLevelUp", ET_IGNORE, FP_CELL);
Cvars();
iSyncHud = CreateHudSyncObj();
register_event("CurWeapon", "CurWeapon", "be", "1=1");
}
public plugin_precache() {
for (new i = 1; i < sizeof(szSkins); i++) {
new ModelFile[96];
formatex(ModelFile, charsmax(ModelFile), "models/%s.mdl", szSkins[i][1]);
precache_model(ModelFile);
}
}
Cvars() {
bind_pcvar_num(create_cvar("ALS_Give_Exp", "1"), iCvars[0]); // Bu değeri 0 yaparsanız ALS_Give_Max_Exp ve ALS_Give_Min_Exp değerleri arasından rastgele exp verecektir.
bind_pcvar_num(create_cvar("ALS_Give_Min_Exp", "20"), iCvars[1]);
bind_pcvar_num(create_cvar("ALS_Give_Max_Exp", "70"), iCvars[2]);
}
@IsKilled(const iVictim, const iAttacker) {
if (!is_user_connected(iAttacker) || iVictim == iAttacker) return;
if (LevelChecker(iAttacker, false, (iCvars[0] == 0) ? random_num(iCvars[1], iCvars[2]) : iCvars[0])) {
(iCvars[0] == 0) ? (Vars[iAttacker][Exp] += random_num(iCvars[1], iCvars[2])) : (Vars[iAttacker][Exp] += iCvars[0]);
new sSteamID[64];
get_user_authid(iAttacker, sSteamID, 63);
sSetIntData("%s>Exp", Vars[iAttacker][Exp], sSteamID);
}
if (LevelChecker(iAttacker, true, 0))
@LevelUp(iAttacker);
}
@LevelUp(const iPlayer) {
Vars[iPlayer][Level]++;
ExecuteForward(iForward, iReturn, iPlayer);
client_print_color(iPlayer, iPlayer, "%s ^1Basarili bir sekilde ^4Level Atladiniz^1...!", ChatTag);
new sSteamID[64];
get_user_authid(iPlayer, sSteamID, 63);
sSetIntData("%s>Level", Vars[iPlayer][Level], sSteamID);
sSetIntData("%s>Exp", Vars[iPlayer][Exp], sSteamID);
}
public client_putinserver(iPlayer) {
new sSteamID[64];
get_user_authid(iPlayer, sSteamID, 63);
Vars[iPlayer][Exp] = sGetIntData("%s>Exp", sSteamID);
Vars[iPlayer][Level] = sGetIntData("%s>Level", sSteamID);
set_task(3.0, "ChatReklami", iPlayer);
set_task(5.0, "ShowHudMessage", iPlayer + 125721, .flags = "b");
if (!(get_user_flags(iPlayer) & ADMIN_RESERVATION)) {
new mesaj[128];
format(mesaj, sizeof(mesaj), "^4[%s] ", sLevelSystem[Vars[iPlayer][Level]][0][0]);
csd_chat_rutbe(iPlayer, mesaj);
}
}
public ShowHudMessage(Taskid) {
new id = Taskid - 125721;
if (is_user_connected(id)) {
set_hudmessage(0, 255, 0, 1.0, 0.50, 0, 0.0, 5.0);
if (Vars[id][Level] < (sizeof(sLevelSystem) - 1)) ShowSyncHudMsg(id, iSyncHud, "[Rutben: %s]^n[Frag: %i / %i]^n[Siradaki Rutbe: %s]^n[LvL: %d/%d]", sLevelSystem[Vars[id][Level]][0][0], Vars[id][Exp], sLevelSystem[Vars[id][Level] + 1][1][0], sLevelSystem[Vars[id][Level] + 1][0][0], Vars[id][Level], (sizeof(sLevelSystem) - 1));
else ShowSyncHudMsg(id, iSyncHud, "[Rutben: %s]^n[Frag: %i / Max]", sLevelSystem[Vars[id][Level]][0][0], Vars[id][Exp]);
}
}
public ChatReklami(id) {
if (is_user_connected(id)) {
client_print_color(id, id, "%s ^1Sunucumuza hosgeldiniz.^3Level Sistemine ^1giriş yapildi.!", ChatTag);
if (Vars[id][Level] < (sizeof(sLevelSystem) - 1)) {
client_print_color(id, id, "%s ^1Sonraki Rutbe icin ^3%i ^4kill ^1daha alman gerekiyor.!", ChatTag, sLevelSystem[Vars[id][Level] + 1][1][0] - Vars[id][Exp]);
}
}
}
public plugin_natives() {
register_native("ALS_GetUserExp", "@ALS_GUEX");
register_native("ALS_SetUserExp", "@ALS_SUEX");
register_native("ALS_GetUserLevel", "@ALS_GULV");
register_native("ALS_SetUserLevel", "@ALS_SULV");
register_native("ALS_GetLevelName", "@ALS_GETNAME");
register_native("ALS_GetMaxLevel", "@ALS_GMLV");
}
@ALS_GETNAME() {
new levelid = get_param(1);
new len = get_param(2);
set_string(2, fmt("%s", sLevelSystem[levelid][0][0]), len);
}
@ALS_GUEX() {
new nPlayerID = get_param(1);
return Vars[nPlayerID][Exp];
}
@ALS_SUEX() {
new nPlayerID = get_param(1), nAmount = get_param(2);
if (nAmount >= sLevelSystem[(sizeof(sLevelSystem) - 1)][1][0]) {
Vars[nPlayerID][Level] = (sizeof(sLevelSystem) - 1);
Vars[nPlayerID][Exp] = sLevelSystem[(sizeof(sLevelSystem) - 1)][1][0];
} else {
Vars[nPlayerID][Exp] = nAmount;
for (new i = 0; i < sizeof(sLevelSystem); i++) {
if (nAmount >= sLevelSystem[i][1][0]) {
Vars[nPlayerID][Exp] = i;
break;
}
}
}
return PLUGIN_CONTINUE;
}
@ALS_GULV() {
new nPlayerID = get_param(1);
return Vars[nPlayerID][Level];
}
@ALS_SULV() {
new nPlayerID = get_param(1), nAmount = get_param(2);
if (nAmount >= (sizeof(sLevelSystem) - 1)) {
Vars[nPlayerID][Level] = (sizeof(sLevelSystem) - 1);
Vars[nPlayerID][Exp] = sLevelSystem[(sizeof(sLevelSystem) - 1)][1][0];
} else {
Vars[nPlayerID][Exp] = sLevelSystem[nAmount][1][0];
Vars[nPlayerID][Level] = nAmount;
}
return PLUGIN_CONTINUE;
}
@ALS_GMLV() {
return (sizeof(sLevelSystem) - 1);
}
public plugin_cfg()
iVault = nvault_open("ALS_V1");
public plugin_end()
nvault_close(iVault);
bool:LevelChecker(const iPlayer, const bool:IsExp, const iExpAmout) {
new iMaxExp, iMaxLevel;
iMaxLevel = (sizeof(sLevelSystem) - 1);
iMaxExp = sLevelSystem[iMaxLevel][1][0];
if (IsExp) {
if (Vars[iPlayer][Exp] >= iMaxExp) {
Vars[iPlayer][Level] = iMaxLevel;
return false;
}
if (Vars[iPlayer][Exp] < sLevelSystem[Vars[iPlayer][Level] + 1][1][0])
return false;
if (Vars[iPlayer][Level] >= iMaxLevel) {
Vars[iPlayer][Level] = iMaxLevel;
return false;
}
} else {
if (Vars[iPlayer][Exp] + iExpAmout >= iMaxExp) {
Vars[iPlayer][Exp] = iMaxExp;
return false;
}
}
return true;
}
stock sGetIntData(const sKey[], any:...) {
new sFixedData[128];
vformat(sFixedData, 127, sKey, 2);
return nvault_get(iVault, sFixedData);
}
stock sSetIntData(const sKey[], const iData, any:...) {
new sFixedData[128], sNTS[48];
vformat(sFixedData, 127, sKey, 3);
num_to_str(iData, sNTS, 47);
nvault_set(iVault, sFixedData, sNTS);
}
public RutbeInformation(Player) {
new Arg[2126], Num;
Num += formatex(Arg[Num], 2126 - Num, "<meta charset=UTF-8><style>body{background:#000;font-family:Arial}th{border-left:1px solid #FF0000;border-top:1px solid #FF0000}table{background:#000;font-size:11px;color:#FFF;border-right:1px solid #FF0000;border-bottom:1px solid #FF0000;padding:3px}h2,h3{color:#FFF}#c{background:#FF9B00;color:#000}img{height:10px;background:#00E930;margin:0 3px}#r{height:10px;background:#B6423C}#clr{background:none;color:#FFF;font-size:20px;border:0} .powered{color:#FF0000}</style>");
Num += formatex(Arg[Num], 2126 - Num, "<body><table width=100%% border=0 align=center cellpadding=0 cellspacing=1>");
Num += formatex(Arg[Num], 2126 - Num, "<tr><th>#<th>Rütbe Adı<th>Gereken Kill</tr>");
for (new i = 1; i < sizeof(sLevelSystem); i++) {
Num += formatex(Arg[Num], 2126 - Num, "<tr><th>%i<th>%s<th>%d</tr>", i, sLevelSystem[i][0][0], sLevelSystem[i][1][0]);
}
Num += formatex(Arg[Num], 2126 - Num, "</table><br><center class='powered'>Powered by Maravilha</center>");
show_motd(Player, Arg, "Rütbe Bilgilendirmesi");
}
public ModelMenu(const id) {
new menu = menu_create(fmt("\dLG \w| \yRütbe Skinleri"), "ModelHandler");
for (new i = 1; i < sizeof(szSkins); i++) {
menu_additem(menu, fmt("\y%s \d(%s)", szSkins[i][0], sLevelSystem[szSkins[i][3][0]][0]), fmt("%d", i));
}
menu_display(id, menu);
}
public ModelHandler(const id, const menu, const item) {
if (item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6];
menu_item_getinfo(menu, item, _, data, charsmax(data));
new key = str_to_num(data);
if (Vars[id][Level] < szSkins[key][3][0] && !(get_user_flags(id) & ADMIN_RESERVATION)) {
client_print_color(id, id, "%s ^4Bu modeli almak için rütbeniz yeterli değil^1!", ChatTag);
return PLUGIN_HANDLED;
}
client_print_color(id, id, "%s ^4Skin aktif edildi!", ChatTag);
new WeaponID = szSkins[key][2][0];
ActiveSkin[id][WeaponID] = key;
CurWeapon(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public CurWeapon(iPlayer) {
if (!is_user_alive(iPlayer) || !is_user_connected(iPlayer))
return PLUGIN_HANDLED;
new WeaponID = get_user_weapon(iPlayer);
if (ActiveSkin[iPlayer][WeaponID] > 0) {
new ModelFile[96];
formatex(ModelFile, charsmax(ModelFile), "models/%s.mdl", szSkins[ActiveSkin[iPlayer][WeaponID]][1]);
set_pev(iPlayer, pev_viewmodel2, ModelFile);
}
return PLUGIN_HANDLED;
})

