(27-12-2025, 01:47)-.RuFF Adlı Kullanıcıdan Alıntı:new const szCheckTag[] = "PROF";(27-12-2025, 01:32)rexluca Adlı Kullanıcıdan Alıntı: Yok yetkılerın yanında örnek suan YONETIM VARYA onun onunde kullanıcı steamsa steam YONETICI non steamsa sadece YONETICI eger yetkısı yoksa swde STEAM USER non steamsa USER yazsınDene;Kod:/* Sublime AMXX Editor v3.2 - Cleaned & Optimized */
#include <amxmodx>
#include <reapi>
#include <regex>
#include <nvault>
#pragma semicolon 1
#define MAX_RUTBE 22
new const sChatSay[] = "^x01{DEAD}^x03[^x04{LEVEL}^x03] ^x04{TAG} ^x03{NAME}^x01: {FLAG}{MESSAGE}";
new const ChatTag[] = "^1[ ^3- ^4ASKERI RUTBE SISTEMI ^3- ^1]";
new const sLevelSystem[][][] = {
{"Er", 0}, {"Onbasi", 10}, {"Uz.Onb.", 50}, {"Uz.Cvs.", 100}, {"Asb. Cvs", 200},
{"Asb. Kd. Cvs", 300}, {"Asb. Ucvs", 400}, {"Asb. Kd. Ucvs", 500}, {"Asb. Bcvs", 700},
{"Asb. Kd. Bcvs", 900}, {"Astegmen", 1000}, {"Tegmen", 2000}, {"Ustegmen", 4000},
{"Yuzbasi", 8000}, {"Binbasi", 18000}, {"Yarbay", 33000}, {"Albay", 53000},
{"Tuggeneral", 83000}, {"Tumgeneral", 123000}, {"Korgeneral", 173000},
{"Orgeneral", 223000}, {"Genelkurmay Baskani", 303000}, {"Maresal", 403000}
};
new const szAdminTags[][][] = {
{"a","K"}, {"t","CAPTAN"}, {"l","YONETIM"}, {"o","E-ADMIN"}, {"s","ADMIN"}, {"r","SLOT"}
};
enum _: Variables {
Exp,
Level,
bool:Spamming
}
new Vars[MAX_PLAYERS+1][Variables], iCvars[5], iSayText, iTeamInfo, iVault;
new szUserAdminTag[MAX_PLAYERS+1][64], bool:is_user_steam[MAX_PLAYERS+1];
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_GetMaxLevel","@ALS_GMLV");
}
@ALS_GUEX() return Vars[get_param(1)][Exp];
@ALS_GULV() return Vars[get_param(1)][Level];
@ALS_GMLV() return (sizeof(sLevelSystem)-1);
@ALS_SUEX() {
new nPlayerID = get_param(1), nAmount = get_param(2);
new iMaxLevel = (sizeof(sLevelSystem)-1);
Vars[nPlayerID][Exp] = clamp(nAmount, 0, sLevelSystem[iMaxLevel][1][0]);
for(new i=iMaxLevel; i >= 0; i--) {
if(Vars[nPlayerID][Exp] >= sLevelSystem[i][1][0]) {
Vars[nPlayerID][Level] = i;
break;
}
}
return PLUGIN_CONTINUE;
}
@ALS_SULV() {
new nPlayerID = get_param(1), nAmount = get_param(2);
new iMaxLevel = (sizeof(sLevelSystem)-1);
Vars[nPlayerID][Level] = clamp(nAmount, 0, iMaxLevel);
Vars[nPlayerID][Exp] = sLevelSystem[Vars[nPlayerID][Level]][1][0];
return PLUGIN_CONTINUE;
}
public plugin_cfg() iVault = nvault_open("ALS_V4");
public plugin_end() nvault_close(iVault);
public plugin_init() {
register_plugin("Advanced Level System", "1.4", "PawNod'");
register_concmd("amx_give_level","@GiveLevel",ADMIN_IMMUNITY,"<isim> <miktar>");
register_clcmd("say","@Hook_Say");
register_clcmd("say /rutbe","@Sonraki_Rutbe");
register_clcmd("say /rutbeler","@ToplamRutbe");
RegisterHookChain(RG_CBasePlayer_Killed, "@IsKilled", .post = true);
iSayText = get_user_msgid("SayText");
iTeamInfo = get_user_msgid("TeamInfo");
Cvars();
}
@Sonraki_Rutbe(const iPlayer) {
new iMaxLevel = (sizeof(sLevelSystem)-1);
if(Vars[iPlayer][Level] < iMaxLevel) {
client_print_color(iPlayer, iPlayer, "Siradaki rutbeniz ^4(%s) ^1Almaniz gereken kill: ^3(%i)", sLevelSystem[Vars[iPlayer][Level]+1][0][0], sLevelSystem[Vars[iPlayer][Level]+1][1][0]-Vars[iPlayer][Exp]);
} else {
client_print_color(iPlayer, iPlayer, "Maksimum rutbeye ulastiniz ^4(%s)^1!", sLevelSystem[Vars[iPlayer][Level]][0][0]);
}
}
@ToplamRutbe(const iPlayer) {
new szMotd[2048], iPos;
iPos = format(szMotd, charsmax(szMotd),"<body bgcolor=#000000 style='color:#FFFFFF; font-family:sans-serif;'><center><table width=90%% border=0 style='text-align:center; border:1px solid #444;'>");
iPos += format(szMotd[iPos], charsmax(szMotd)-iPos,"<tr bgcolor=#222222 style='font-weight:bold;'><td>#</td><td>Rutbe Ismi</td><td>Toplam Kill</td></tr>");
for(new i = 0; i < sizeof sLevelSystem; i++) {
iPos += format(szMotd[iPos], charsmax(szMotd)-iPos,"<tr bgcolor=%s><td>%d</td><td>%s</td><td>%d</td></tr>", (i % 2 == 0) ? "#111111" : "#181818", i+1, sLevelSystem[i][0][0], sLevelSystem[i][1][0]);
}
iPos += format(szMotd[iPos], charsmax(szMotd)-iPos,"</table></center></body>");
show_motd(iPlayer, szMotd, "Rutbe Listesi");
}
Cvars() {
bind_pcvar_num(create_cvar("ALS_Give_Exp","1"), iCvars[0]);
bind_pcvar_num(create_cvar("ALS_Give_Min_Exp","20"), iCvars[1]);
bind_pcvar_num(create_cvar("ALS_Give_Max_Exp","70"), iCvars[2]);
bind_pcvar_num(create_cvar("ALS_Chat","1"), iCvars[3]);
bind_pcvar_num(create_cvar("ALS_Chat_Messages","1"), iCvars[4]);
}
@GiveLevel(const iPlayer, const iLevelFlags, const iCid) {
if(!(get_user_flags(iPlayer) & ADMIN_IMMUNITY)) return PLUGIN_HANDLED;
new iStringName[32], iStringAmount[10];
read_argv(1, iStringName, 31); read_argv(2, iStringAmount, 9);
new iAmmount = str_to_num(iStringAmount), iMaxLevel = (sizeof(sLevelSystem)-1);
if(iStringName[0] == '@') {
new iPlayers[32], iPlayerNum, iTemp;
get_players(iPlayers, iPlayerNum, "ch");
for(new i = 0; i < iPlayerNum; i++) {
iTemp = iPlayers[i];
Vars[iTemp][Level] = min(iMaxLevel, Vars[iTemp][Level] + iAmmount);
Vars[iTemp][Exp] = sLevelSystem[Vars[iTemp][Level]][1][0];
new sAuth[32]; get_user_authid(iTemp, sAuth, 31);
sSetIntData("%s>Exp", Vars[iTemp][Exp], sAuth);
sSetIntData("%s>Level", Vars[iTemp][Level], sAuth);
}
client_print_color(0, 0, "%s Admin ^4%n ^1herkese ^4%i Level ^1verdi!", ChatTag, iPlayer, iAmmount);
return PLUGIN_HANDLED;
}
new iTarget = find_player("bl", iStringName);
if(iTarget) {
Vars[iTarget][Level] = min(iMaxLevel, Vars[iTarget][Level] + iAmmount);
Vars[iTarget][Exp] = sLevelSystem[Vars[iTarget][Level]][1][0];
new sAuth[32]; get_user_authid(iTarget, sAuth, 31);
sSetIntData("%s>Exp", Vars[iTarget][Exp], sAuth);
sSetIntData("%s>Level", Vars[iTarget][Level], sAuth);
client_print_color(0, 0, "%s Admin ^4%n, ^3%n ^1kisisine ^4%i Level ^1verdi!", ChatTag, iPlayer, iTarget, iAmmount);
}
return PLUGIN_HANDLED;
}
@Hook_Say(const iPlayer) {
if(iCvars[4] == 0) return PLUGIN_CONTINUE;
new iMessage[191]; read_args(iMessage, 190); remove_quotes(iMessage);
if(!iMessage[0] || iMessage[0] == '@' || iMessage[0] == '/' || iMessage[0] == '!') return PLUGIN_CONTINUE;
new ret, szError[128], Regex:iSayCheck = regex_compile("[0-9]{5,}", ret, szError, 127);
if(regex_match_c(iMessage, iSayCheck, ret)) {
client_print_color(iPlayer, iPlayer, "^4[HATA] ^1Mesajinizda cok fazla rakam var!");
regex_free(iSayCheck); return PLUGIN_HANDLED;
}
regex_free(iSayCheck);
new sNewData[191], szTagData[128], iColor[10];
get_user_team(iPlayer, iColor, 9);
copy(sNewData, 190, sChatSay);
// TAG EDİT BÖLÜMÜ
if(is_user_steam[iPlayer]) {
formatex(szTagData, 127, "^x04[Steam] ^x03[%s]", szUserAdminTag[iPlayer]);
} else {
formatex(szTagData, 127, "^x03[%s]", szUserAdminTag[iPlayer]);
}
replace_all(sNewData, 190, "{TAG}", szTagData);
replace_all(sNewData, 190, "{DEAD}", is_user_alive(iPlayer) ? "" : "(OLU) ");
replace_all(sNewData, 190, "{LEVEL}", sLevelSystem[Vars[iPlayer][Level]][0][0]);
replace_all(sNewData, 190, "{NAME}", fmt("^x03%n", iPlayer));
replace_all(sNewData, 190, "{FLAG}", (get_user_flags(iPlayer) & ADMIN_RESERVATION) ? "^x04" : "^x01");
replace_all(sNewData, 190, "{MESSAGE}", iMessage);
@sendMessage(iColor, is_user_alive(iPlayer), sNewData);
return PLUGIN_HANDLED;
}
@IsKilled(const iVictim, const iAttacker) {
if(!is_user_connected(iAttacker) || iVictim == iAttacker) return;
new iExpGained = (iCvars[0] == 0) ? random_num(iCvars[1], iCvars[2]) : iCvars[0];
new iMaxLevel = (sizeof(sLevelSystem)-1);
if(Vars[iAttacker][Level] < iMaxLevel) {
Vars[iAttacker][Exp] += iExpGained;
new sAuth[32]; get_user_authid(iAttacker, sAuth, 31);
sSetIntData("%s>Exp", Vars[iAttacker][Exp], sAuth);
if(Vars[iAttacker][Exp] >= sLevelSystem[Vars[iAttacker][Level] + 1][1][0]) {
Vars[iAttacker][Level]++;
client_print_color(iAttacker, iAttacker, "%s ^1Basarili bir sekilde ^4Rutbe Atladiniz^1!", ChatTag);
sSetIntData("%s>Level", Vars[iAttacker][Level], sAuth);
}
}
}
public client_putinserver(iPlayer) {
new sAuth[32]; get_user_authid(iPlayer, sAuth, 31);
Vars[iPlayer][Exp] = sGetIntData("%s>Exp", sAuth);
Vars[iPlayer][Level] = sGetIntData("%s>Level", sAuth);
// Steam Kontrolü
is_user_steam[iPlayer] = (containi(sAuth, "STEAM_0:") != -1);
new bool:has_tag = false;
for(new i = 0; i < sizeof(szAdminTags); i++) {
if(get_user_flags(iPlayer) & read_flags(szAdminTags[i][0][0])) {
copy(szUserAdminTag[iPlayer], 63, szAdminTags[i][1][0]);
// Baştaki boşluğu temizle (CAPTAN -> CAPTAN)
if(szUserAdminTag[iPlayer][0] == ' ') {
copy(szUserAdminTag[iPlayer], 63, szUserAdminTag[iPlayer][1]);
}
has_tag = true;
break;
}
}
if(!has_tag) {
copy(szUserAdminTag[iPlayer], 63, "USER");
}
}
@sendMessage(const color[], const alive, const message[]) {
for(new player = 1; player <= MaxClients; player++) {
if(!is_user_connected(player)) continue;
if((alive && is_user_alive(player)) || (!alive && !is_user_alive(player)) || (get_user_flags(player) & ADMIN_BAN)) {
new teamName[10]; get_user_team(player, teamName, 9);
@changeTeamInfo(player, color);
@writeMessage(player, message);
@changeTeamInfo(player, teamName);
}
}
}
@changeTeamInfo(const player, const team[]) {
message_begin(MSG_ONE, iTeamInfo, _, player);
write_byte(player); write_string(team); message_end();
}
@writeMessage(const player, const message[]) {
message_begin(MSG_ONE, iSayText, _, player);
write_byte(player); write_string(message); message_end();
}
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[12]; vformat(sFixedData, 127, sKey, 3);
num_to_str(iData, sNTS, 11); nvault_set(iVault, sFixedData, sNTS);
}
new const szRegenerateTag[] = "^x04PROF^x01@^x03"; BURAYI NEDEN SILDINIZ TAG ALINCA ODA RENKLI OLUYORDU NORMALDE SUANDA OLMUYOR PROF TAGI ALINCA
)

