#include #include #include #include #include #define MAXCLASSES 8 #define PREFIX "CsStrefa" #define ZMIANAMENU_KEYS MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_0 new const LEVELS[20] = { 100, 200, 500, 750, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2500, 2800, 3100, 3500, 4800, 5600, 6400, 7800, 8900 } new iExp[33],iLvl[33],iClass[33]; new cKill,g_vault; new gmsgStatusText; new doswiadczenie_za_bombe; new podkladajacy; new rozbrajajacy; new attacker; new const CLASSES[MAXCLASSES][] = { "Brak", "Komandos", "Snajper", "Wojownik", "Ogar", "Szturmowiec", "SWAT", "Rambo" } public plugin_init() { register_plugin("EXP", "1.0", "Flyen & Harsay & Kruszynka"); register_event("DeathMsg", "EventSmierci", "a"); gmsgStatusText = get_user_msgid("StatusText") g_vault = nvault_open("xp"); cKill = register_cvar("amx_exp_kill", "20"); doswiadczenie_za_bombe = register_cvar("amx_exp_bomb", "10") register_logevent("BombaPodlozona", 3, "2=Planted_The_Bomb"); register_event("SendAudio", "BombaRozbrojona", "a", "2&%!MRAD_BOMBDEF"); register_event("BarTime", "RozbrajaBombe", "be", "1=10", "1=5") register_clcmd("say /klasa", "cmdZmianaKlasy") register_clcmd("say_team /klasa", "cmdZmianaKlasy") register_menues(); } public register_menues() { register_menu("ZmianaMenu", ZMIANAMENU_KEYS, "handleZmianaKlasy"); } public EventSmierci() { if(iClass[attacker] == 0) return PLUGIN_CONTINUE new iKiller = read_data(1); new iVictim = read_data(2); new gNumExp = get_pcvar_num(cKill); new Kid[32],Vid[32]; get_user_name(iKiller, Kid, 31); get_user_name(iVictim, Vid, 31); if(get_user_team(iKiller) != get_user_team(iVictim)) { iExp[iKiller] += gNumExp; ColorChat(iKiller, GREEN, "[%s]^x01 Dostales^x04 %d^x01 expa za zabicie gracza^x04 %s", PREFIX, gNumExp, Vid); } SprawdzPoziom(iKiller); Zapisz(iKiller); return PLUGIN_CONTINUE; } public client_putinserver(id) { Wczytaj(id); set_task(2.0, "write_hud",id,_,_, "b") } public client_disconnect(id) { Zapisz(id); } public Zapisz(id) { new NameID[32]; get_user_name(id,NameID,31); new vaultkey[64],vaultdata[256]; format(vaultkey,63,"%s-Mod",NameID); format(vaultdata,255,"%i#%i#",iExp[id], iLvl[id]); nvault_set(g_vault,vaultkey,vaultdata); return PLUGIN_CONTINUE; } public Wczytaj(id) { new NameID[32]; get_user_name(id,NameID,31); new vaultkey[64],vaultdata[256]; format(vaultkey,63,"%s-Mod",NameID); format(vaultdata,255,"%i#%i#",iExp[id], iLvl[id]); nvault_get(g_vault,vaultkey,vaultdata,255); replace_all(vaultdata, 255, "#", " "); new PEXP[32], PLEV[32]; parse(vaultdata, PEXP, 31, PLEV, 31); iExp[id] = str_to_num(PEXP); iLvl[id] = str_to_num(PLEV); return PLUGIN_CONTINUE; } public SprawdzPoziom(id) { while(iExp[id] >= LEVELS[iLvl[id]]){ ColorChat(id, GREEN, "[%s]^x01 Gratulacje! Awansowales na kolejny poziom!", PREFIX) iLvl[id] += 1 } Zapisz(id); } public write_hud(id) { if(!is_user_connected(id)) return; new text[512] format(text,511,"Exp: %i Level: %i/20 Klasa: %s",iExp[id], iLvl[id], CLASSES[iClass[id]]) message_begin(MSG_ONE,get_user_msgid("StatusText"),{0,0,0}, id) write_byte(0) write_string(text) message_end() } public cmdZmianaKlasy(id) { static format_menu[954]; new len = formatex(format_menu, sizeof(format_menu) - 1, "\r[%s]\y Wybierz klase:^n", PREFIX); len += format(format_menu[len], sizeof(format_menu) - len - 1, "^n\r1.\w Komandos"); len += format(format_menu[len], sizeof(format_menu) - len - 1, "^n\r2.\w Snajper"); len += format(format_menu[len], sizeof(format_menu) - len - 1, "^n\r3.\w Wojownik"); len += format(format_menu[len], sizeof(format_menu) - len - 1, "^n\r4.\w Ogar"); len += format(format_menu[len], sizeof(format_menu) - len - 1, "^n\r5.\w Szturmowiec"); len += format(format_menu[len], sizeof(format_menu) - len - 1, "^n\r6.\w SWAT"); len += format(format_menu[len], sizeof(format_menu) - len - 1, "^n\r7.\w Rambo"); len += format(format_menu[len], sizeof(format_menu) - len - 1, "^n^n^n^n\r0.\y Wyjscie"); show_menu(id, ZMIANAMENU_KEYS, format_menu, -1, "ZmianaMenu"); return PLUGIN_HANDLED; } public handleZmianaKlasy(id) { switch(iClass[id]) { case 0: { give_item(id, "weapon_awp"); ColorChat(id, GREEN, "[%s]^x01 Dostajesz: m4a1, ak-47, deagla i 140hp na start", PREFIX) } case 1: { give_item(id, "weapon_awp"); } case 2: { give_item(id, "weapon_awp"); } case 3: { give_item(id, "weapon_awp"); } case 4: { give_item(id, "weapon_awp"); } case 5: { give_item(id, "weapon_awp"); } case 6: { give_item(id, "weapon_awp"); } } } public RozbrajaBombe(id){ rozbrajajacy = id; } public BombaPodlozona() { new Players[32], playerCount, id; get_players(Players, playerCount, "aeh", "TERRORIST"); if(get_playersnum() > 1) { iExp[podkladajacy] += get_pcvar_num(doswiadczenie_za_bombe); for (new i=0; i