#include #include #include #include #include #include #include #include #include #include #define PLUGIN "Call of Duty: MW Mod" #define VERSION "1.0-3" #define AUTHOR "QTM_Peyote" #define MAX_WIELKOSC_NAZWY 3200 #define MAX_WIELKOSC_OPISU 2560 #define MAX_ILOSC_PERKOW 1200 #define MAX_ILOSC_KLAS 1000 #define STANDARDOWA_SZYBKOSC 250.0 #define ZADANIE_POKAZ_INFORMACJE 672 #define ZADANIE_POKAZ_GODZINE 672 #define ZADANIE_USTAW_SZYBKOSC 832 #define ZADANIE_REGENERACJA 666 new const maxAmmo[31] = {0, 52, 0, 90, 1, 31, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 31, 90, 120, 90, 2, 35, 90, 90,0, 100}; new MsgScreenfade; new vault; new SyncHudObj, SyncHudObj2; new cvar_doswiadczenie_za_zabojstwo, cvar_doswiadczenie_za_obrazenia, cvar_doswiadczenie_za_wygrana, cvar_typ_zapisu, cvar_limit_poziomu, cvar_proporcja_poziomu, cvar_blokada_broni; new perk_zmieniony, klasa_zmieniona; new nazwy_perkow[MAX_ILOSC_PERKOW+1][MAX_WIELKOSC_NAZWY+1], opisy_perkow[MAX_ILOSC_PERKOW+1][MAX_WIELKOSC_OPISU+1], max_wartosci_perkow[MAX_ILOSC_PERKOW+1], min_wartosci_perkow[MAX_ILOSC_PERKOW+1], pluginy_perkow[MAX_ILOSC_PERKOW+1], ilosc_perkow; new nazwa_gracza[33][64], klasa_gracza[33], nowa_klasa_gracza[33], poziom_gracza[33], doswiadczenie_gracza[33], perk_gracza[2][33], wartosc_perku_gracza[2][33], hud[33][3]; new Float:maksymalne_zdrowie_gracza[33], Float:szybkosc_gracza[33], Float:redukcja_obrazen_gracza[33]; enum statystyki { zdrowie = 0, inteligencja, wytrzymalosc, kondycja, grawitacja, regeneracja, niewidzialnosc, przeladowanie } new const limit_statystyk[statystyki] = { 50, // zdrowie 55, // inteligencja 20, // wytrzymalosc 50, // kondycja 25, // grawitacja 25, // regeneracja 40, // niewidzialnosc 30 // przeladowanie } new punkty_gracza[33], statystyki_gracza[33][statystyki]; new bool:gracz_ma_tarcze[33], bool:gracz_ma_noktowizor[33]; new bonusowe_bronie_gracza[33], bonusowe_statystyki_gracza[33][statystyki]; new bronie_klasy[MAX_ILOSC_KLAS+1], statystyki_klas[MAX_ILOSC_KLAS+1][statystyki], nazwy_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_NAZWY+1], opisy_klas[MAX_ILOSC_KLAS+1][MAX_WIELKOSC_OPISU+1], pluginy_klas[MAX_ILOSC_KLAS+1], ilosc_klas; new bronie_druzyny[] = {0, 1< speed*1.8) set_pev(id, pev_flTimeStepSound, 300); return FMRES_IGNORED; } public Odrodzenie(id) { if(!task_exists(id+ZADANIE_POKAZ_INFORMACJE)) set_task(0.1, "PokazInformacje", id+ZADANIE_POKAZ_INFORMACJE, _, _, "b"); /*if(!task_exists(id+ZADANIE_POKAZ_GODZINE)) set_task(0.1, "PokazGodzine", id+ZADANIE_POKAZ_GODZINE, _, _, "b");*/ if(nowa_klasa_gracza[id]) UstawNowaKlase(id); if(!klasa_gracza[id]) { WybierzKlase(id); return PLUGIN_CONTINUE; } DajBronie(id); ZastosujAtrybuty(id); if(punkty_gracza[id] > 0) PrzydzielPunkty(id); return PLUGIN_CONTINUE; } public PrzeladowanieBroniPost(ent) { if(get_pdata_int(ent, m_fInReload, 4)) { new id = get_pdata_cbase(ent, m_pPlayer, 4) new Float:speed; new Float:delay; speed = 1.0-float(PobierzPrzeladowanie(id, 1, 1, 1))/40; delay = reloadtime[get_pdata_int(ent, m_iId, 4)]; delay *= speed; set_pdata_float(id, m_flNextAttack, delay, 5); set_pdata_float(ent, m_flTimeWeaponIdle, delay + 0.5, 4); } } public UstawNowaKlase(id) { new ret; new forward_handle = CreateOneForward(pluginy_klas[klasa_gracza[id]], "cod_class_disabled", FP_CELL, FP_CELL); ExecuteForward(forward_handle, ret, id, klasa_gracza[id]); DestroyForward(forward_handle); forward_handle = CreateOneForward(pluginy_klas[nowa_klasa_gracza[id]], "cod_class_enabled", FP_CELL, FP_CELL); ExecuteForward(forward_handle, ret, id, nowa_klasa_gracza[id]); DestroyForward(forward_handle); if(ret == 4) { klasa_gracza[id] = 0; return PLUGIN_CONTINUE; } ExecuteForward(klasa_zmieniona, ret, id, klasa_gracza[id]); if(ret == 4) { klasa_gracza[id] = 0; return PLUGIN_CONTINUE; } klasa_gracza[id] = nowa_klasa_gracza[id]; nowa_klasa_gracza[id] = 0; UstawPerk(id, perk_gracza[0][id], wartosc_perku_gracza[0][id], 0, 0); UstawPerk(id, perk_gracza[1][id], wartosc_perku_gracza[1][id], 0, 1); WczytajDane(id, klasa_gracza[id], 0); return PLUGIN_CONTINUE; } public DajBronie(id) { for(new i=1; i < 32; i++) { if((1< 0) cs_set_user_bpammo(id, weapons[i], maxAmmo[weapons[i]]); } public ZastosujAtrybuty(id) { redukcja_obrazen_gracza[id] = 0.7*(1.0-floatpower(1.1, -0.112311341*PobierzWytrzymalosc(id, 1, 1, 1))); maksymalne_zdrowie_gracza[id] = 100.0+PobierzZdrowie(id, 1, 1, 1); szybkosc_gracza[id] = STANDARDOWA_SZYBKOSC+PobierzKondycje(id, 1, 1, 1)*1.3; set_pev(id, pev_health, maksymalne_zdrowie_gracza[id]); set_pev(id, pev_gravity, (1.0-floatmin(float(PobierzGrawitacje(id, 1, 1, 1))/50.0, 0.5))); set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255-floatround(float(PobierzNiewidzialnosc(id, 1, 1, 1))*2.5, floatround_ceil)); } public Regeneracja(id) { id -= ZADANIE_REGENERACJA; if(!is_user_connected(id)) return PLUGIN_CONTINUE; if(is_user_alive(id)) { new Float:cur_health = float(get_user_health(id)); new Float:max_health = float(PobierzZdrowie(id, 1, 1, 1)+100); new Float:new_health; new_health = floatmin(float(floatround(float(PobierzRegeneracje(id, 1, 1, 1))/1.25+cur_health, floatround_ceil)), max_health) set_pev(id, pev_health, new_health) if(float(get_user_health(id)) < max_health && !task_exists(id)) set_task(5.0, "Regeneracja", id+ZADANIE_REGENERACJA) } return PLUGIN_CONTINUE; } public PoczatekRundy() { freezetime = false; round_start = get_gametime(); round_time = get_pcvar_float(mp_roundtime) * 60.0; for(new id=0;id<=32;id++) { if(!is_user_alive(id)) continue; Display_Fade(id, 1<<9, 1<<9, 1<<12, 0, 255, 70, 100); set_task(0.1, "UstawSzybkosc", id+ZADANIE_USTAW_SZYBKOSC); switch(get_user_team(id)) { case 1: client_cmd(id, "spk QTM_CodMod/start2"); case 2: client_cmd(id, "spk QTM_CodMod/start"); } } } public KoniecRundy() { round_start = -1.0; } public RestartRundy() { round_start = -1.0; } Float:get_roundtime_left() { return (round_start == -1.0) ? 0.0 : ((round_start + round_time) - get_gametime()); } public NowaRunda() { freezetime = true; } public Obrazenia(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_alive(idattacker)) return HAM_IGNORED; if(get_user_team(this) == get_user_team(idattacker)) return HAM_IGNORED; if(get_user_health(this) <= 1) return HAM_IGNORED; SetHamParamFloat(4, damage*(1.0-redukcja_obrazen_gracza[this])); return HAM_IGNORED; } public ObrazeniaPost(this, idinflictor, attacker, Float:damage, damagebits) { if(!is_user_connected(attacker) || !klasa_gracza[attacker]) return HAM_IGNORED; if(get_user_team(this) != get_user_team(attacker)) { new doswiadczenie_za_obrazenia = get_pcvar_num(cvar_doswiadczenie_za_obrazenia); while(damage>20) { damage -= 20; doswiadczenie_gracza[attacker] += doswiadczenie_za_obrazenia; } } if(!task_exists(this+ZADANIE_REGENERACJA)) set_task(5.0, "Regeneracja", this+ZADANIE_REGENERACJA); SprawdzPoziom(attacker); return HAM_IGNORED; } public SmiercGraczaPost(id, attacker, shouldgib) { if(!is_user_connected(attacker)) return HAM_IGNORED; if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker]) { new doswiadczenie_za_zabojstwo = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo); new nowe_doswiadczenie = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo); if(poziom_gracza[id] > poziom_gracza[attacker]) nowe_doswiadczenie += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_zabojstwo/10); if(!perk_gracza[0][attacker]) UstawPerk(attacker, -1, -1, 1, 0); else if(!perk_gracza[1][attacker]) UstawPerk(attacker, -1, -1, 1, 1); doswiadczenie_gracza[attacker] += nowe_doswiadczenie; } SprawdzPoziom(attacker); return HAM_IGNORED; } public MessageHealth(msg_id, msg_dest, msg_entity) { static health; health = get_msg_arg_int(1); if (health < 256) return; if (!(health % 256)) set_pev(msg_entity, pev_health, pev(msg_entity, pev_health)-1); set_msg_arg_int(1, get_msg_argtype(1), 255); } public client_authorized(id) { UsunUmiejetnosci(id); get_user_name(id, nazwa_gracza[id], 63); UsunZadania(id); } public client_disconnect(id) { ZapiszDane(id); UsunUmiejetnosci(id); UsunZadania(id); } public UsunUmiejetnosci(id) { nowa_klasa_gracza[id] = 0; UstawNowaKlase(id); klasa_gracza[id] = 0; poziom_gracza[id] = 0; doswiadczenie_gracza[id] = 0; punkty_gracza[id] = 0; statystyki_gracza[id][zdrowie] = 0; statystyki_gracza[id][inteligencja] = 0; statystyki_gracza[id][wytrzymalosc] = 0; statystyki_gracza[id][kondycja] = 0; statystyki_gracza[id][grawitacja] = 0; statystyki_gracza[id][regeneracja] = 0; statystyki_gracza[id][niewidzialnosc] = 0; statystyki_gracza[id][przeladowanie] = 0; bonusowe_statystyki_gracza[id][zdrowie] = 0; bonusowe_statystyki_gracza[id][inteligencja] = 0; bonusowe_statystyki_gracza[id][wytrzymalosc] = 0; bonusowe_statystyki_gracza[id][kondycja] = 0; bonusowe_statystyki_gracza[id][grawitacja] = 0; bonusowe_statystyki_gracza[id][regeneracja] = 0; bonusowe_statystyki_gracza[id][niewidzialnosc] = 0; bonusowe_statystyki_gracza[id][przeladowanie] = 0; hud[id][0] = 0; hud[id][1] = 255; hud[id][2] = 0; maksymalne_zdrowie_gracza[id] = 0.0; szybkosc_gracza[id] = 0.0; UstawPerk(id, 0, 0, 0, 0); UstawPerk(id, 0, 0, 0, 1); } public UsunZadania(id) { remove_task(id+ZADANIE_POKAZ_INFORMACJE); remove_task(id+ZADANIE_POKAZ_GODZINE); remove_task(id+ZADANIE_USTAW_SZYBKOSC); } public WygranaTerro() WygranaRunda("TERRORIST"); public WygranaCT() WygranaRunda("CT"); public WygranaRunda(const Team[]) { new Players[32], playerCount, id; get_players(Players, playerCount, "aeh", Team); new doswiadczenie_za_wygrana = get_pcvar_num(cvar_doswiadczenie_za_wygrana); if(get_playersnum() < 3) return; for (new i=0; i -1) num_to_str(wartosc, losowa_wartosc, 14); else format(losowa_wartosc, charsmax(losowa_wartosc), "%i-%i", min_wartosci_perkow[perk], max_wartosci_perkow[perk]); format(opis_perku, charsmax(opis_perku), opisy_perkow[perk]); replace_all(opis_perku, charsmax(opis_perku), "LW", losowa_wartosc); //client_print(id, print_chat, "Perk: %s.", nazwy_perkow[perk]); //client_print(id, print_chat, "Opis: %s.", opis_perku); //ColorChat(id, GREEN, "^x01Perk: %s .", nazwy_perkow[perk]); //ColorChat(id, GREEN, "^x01Opis: %s .", opis_perku); //set_hudmessage(255, 0, 0, 0.52, 0.29, 0, 6.0, 10.0, 10, 0, 0, 3) set_hudmessage(255, 255, 0, 0.52, 0.29, 0, 15.0, 15.0, 0.1, 0.1, 3); show_hudmessage(id, "Perk: %s^nOpis: %s", nazwy_perkow[perk], opis_perku); //set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 0.3, 0.0, 0.0, 2); } public OpisPerkow(id) { new menu = menu_create("Wybierz Perk:", "OpisPerkow_Handle"); for(new i=1; i <= ilosc_perkow; i++) menu_additem(menu, nazwy_perkow[i]); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona"); menu_display(id, menu); client_cmd(id, "spk QTM_CodMod/select"); } public OpisPerkow_Handle(id, menu, item) { if(item++ == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } OpisPerku(id, item, -1); OpisPerkow(id); return PLUGIN_CONTINUE; } public OpisKlasy(id) { new menu = menu_create("Klasy:", "OpisKlasy_Frakcje"); for(new i=1; i <= ilosc_klas; i++) { if(!equal(frakcja_klas[i],"") && !is_in_previous(frakcja_klas[i],i)){ menu_additem(menu,frakcja_klas[i],frakcja_klas[i]) } } menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona"); menu_display(id, menu); client_cmd(id, "spk QTM_CodMod/select"); } public OpisKlasy_Frakcje(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } new data[65], iName[64] new acces, callback menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback) new menu2 = menu_create("Wybierz klase:", "OpisKlasy_Handle"); new temp[5]; for(new i=1; i <= ilosc_klas; i++) { if(equali(data,frakcja_klas[i])) { num_to_str(i, temp, charsmax(temp)); menu_additem(menu2, nazwy_klas[i], temp); } } menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz"); menu_setprop(menu2, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu2, MPROP_NEXTNAME, "Nastepna strona"); menu_display(id, menu2); client_cmd(id, "spk QTM_CodMod/select"); menu_destroy(menu); return PLUGIN_CONTINUE; } public OpisKlasy_Handle(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } new data[65], iName[64] new acces, callback menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback) item = str_to_num(data); new opis[416+MAX_WIELKOSC_OPISU]; format(opis, charsmax(opis), "yKlasa: w%s^nyInteligencja: w%i^nyZdrowie: w%i^nyWytrzymalosc: w%i^nyKondycja: w%i^nyBronie:w%s^nyDodatkowy opis: w%s", nazwy_klas[item], statystyki_klas[item][inteligencja], statystyki_klas[item][zdrowie], statystyki_klas[item][wytrzymalosc], statystyki_klas[item][kondycja], OpisKlasy_Bronie(item), opisy_klas[item]); return PLUGIN_CONTINUE; } public OpisKlasy_Bronie(item) { new bronie[320]; for(new i=1, n=1; i <= 32; i++) { if((1< 1) add(bronie, charsmax(bronie), ","); add(bronie, charsmax(bronie), weaponname); n++; } } return bronie; } public bool:is_in_previous(frakcja[],from){ for(new i = from - 1;i>=1;i--){ if(equali(frakcja_klas[i],frakcja)){ return true; } } return false; } public WybierzKlase(id) { new menu = menu_create("Wybierz klase:", "WybierzKlase_Frakcje"); for(new i=1; i <= ilosc_klas; i++) { if(!equal(frakcja_klas[i],"") && !is_in_previous(frakcja_klas[i],i)){ menu_additem(menu,frakcja_klas[i],frakcja_klas[i]) } } menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona"); menu_display(id, menu); } public WybierzKlase_Frakcje(id, menu, item) { if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_CONTINUE; } new data[65], iName[64] new acces, callback menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback) new menu2 = menu_create("Wybierz klase:", "WybierzKlase_Handle"); new klasa[50],szTmp[5]; for(new i=1; i <= ilosc_klas; i++) { if(equali(data,frakcja_klas[i])){ WczytajDane(id, i); format(klasa, charsmax(klasa), "%s yPoziom: %i", nazwy_klas[i], poziom_gracza[id]); num_to_str(i,szTmp,charsmax(szTmp)); menu_additem(menu2, klasa,szTmp); } } WczytajDane(id, klasa_gracza[id]); menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz"); menu_setprop(menu2, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu2, MPROP_NEXTNAME, "Nastepna strona"); menu_display(id, menu2); client_cmd(id, "spk QTM_CodMod/select"); menu_destroy(menu); return PLUGIN_CONTINUE; } public WybierzKlase_Handle(id, menu, item) { client_cmd(id, "spk QTM_CodMod/select"); if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } new data[65], iName[64] new acces, callback menu_item_getinfo(menu, item, acces, data,64, iName, 63, callback) item = str_to_num(data); if(item == klasa_gracza[id] && !nowa_klasa_gracza[id]) return PLUGIN_CONTINUE; nowa_klasa_gracza[id] = item; if(klasa_gracza[id]) client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie."); else { UstawNowaKlase(id); DajBronie(id); ZastosujAtrybuty(id); } return PLUGIN_CONTINUE; } public PrzydzielPunkty(id) { new statystyka[80]; new tytul[25]; formatex(tytul, charsmax(tytul), "Przydziel Punkty(%i):", punkty_gracza[id]); new menu = menu_create(tytul, "PrzydzielPunkty_Handler"); formatex(statystyka, charsmax(statystyka), "Zdrowie: r%i y(Zwieksza zdrowie)", PobierzZdrowie(id, 1, 1, 1)); menu_additem(menu, statystyka); formatex(statystyka, charsmax(statystyka), "Inteligencja: r%i y(Zwieksza sile perkow i umiejetnosci klasy)", PobierzInteligencje(id, 1, 1, 1)); menu_additem(menu, statystyka); formatex(statystyka, charsmax(statystyka), "Wytrzymalosc: r%i y(Zmniejsza obrazenia)", PobierzWytrzymalosc(id, 1, 1, 1)); menu_additem(menu, statystyka); formatex(statystyka, charsmax(statystyka), "Kondycja: r%i y(Zwieksza tempo chodu)", PobierzKondycje(id, 1, 1, 1)); menu_additem(menu, statystyka); formatex(statystyka, charsmax(statystyka), "Grawitacja: r%i y(Zmniejsza grawitacje)", PobierzGrawitacje(id, 1, 1, 1)); menu_additem(menu, statystyka); formatex(statystyka, charsmax(statystyka), "Regeneracja: r%i y(Zwieksza ilosc regenerowanego zdrowia)", PobierzRegeneracje(id, 1, 1, 1)); menu_additem(menu, statystyka); formatex(statystyka, charsmax(statystyka), "Niewidzialnosc: r%i y(Zmniejsza widzialnosc)", PobierzNiewidzialnosc(id, 1, 1, 1)); menu_additem(menu, statystyka); formatex(statystyka, charsmax(statystyka), "Przeladowanie: r%i y(Zmniejsza szybkosz przeladowania)", PobierzPrzeladowanie(id, 1, 1, 1)); menu_additem(menu, statystyka); menu_setprop(menu, MPROP_PERPAGE, 0); /*menu_setprop(menu, MPROP_EXIT, 0); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");*/ menu_display(id, menu); } public PrzydzielPunkty_Handler(id, menu, item) { client_cmd(id, "spk QTM_CodMod/select"); if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } if(punkty_gracza[id] < 1) return PLUGIN_CONTINUE; new nazwy_statystyk[statystyki][] = { "zdrowia", "inteligencji", "wytrzymalosci", "kondycji", "grawitacji", "regeneracji", "niewidzialnosci", "przeladowania" } switch(item) { case 0..7: { if(statystyki_gracza[id][statystyki:item] < limit_statystyk[statystyki:item]) { statystyki_gracza[id][statystyki:item]++; punkty_gracza[id]--; } else ColorChat(id, BLUE, "POMOCNIK: ^x04 Maxymalny poziom %s osiagniety", nazwy_statystyk[statystyki:item]); } default: { menu_destroy(menu); return PLUGIN_CONTINUE; } } if(punkty_gracza[id] > 0) PrzydzielPunkty(id); return PLUGIN_CONTINUE; } public KomendaResetujPunkty(id) { ColorChat(id, BLUE, "POMOCNIK: ^x04 Umiejetnosci zostana zresetowane."); client_cmd(id, "spk QTM_CodMod/select"); ResetujPunkty(id); } public ResetujPunkty(id) { punkty_gracza[id] = (poziom_gracza[id]-1)*3; statystyki_gracza[id][zdrowie] = 0; statystyki_gracza[id][inteligencja] = 0; statystyki_gracza[id][wytrzymalosc] = 0; statystyki_gracza[id][kondycja] = 0; statystyki_gracza[id][grawitacja] = 0; statystyki_gracza[id][regeneracja] = 0; statystyki_gracza[id][niewidzialnosc] = 0; statystyki_gracza[id][przeladowanie] = 0; bonusowe_statystyki_gracza[id][zdrowie] = 0; bonusowe_statystyki_gracza[id][inteligencja] = 0; bonusowe_statystyki_gracza[id][wytrzymalosc] = 0; bonusowe_statystyki_gracza[id][kondycja] = 0; bonusowe_statystyki_gracza[id][grawitacja] = 0; bonusowe_statystyki_gracza[id][regeneracja] = 0; bonusowe_statystyki_gracza[id][niewidzialnosc] = 0; bonusowe_statystyki_gracza[id][przeladowanie] = 0; if(punkty_gracza[id]) PrzydzielPunkty(id); } public WybierzKolorHud(id) { new menuwybierz = menu_create("Wybierz kolor HUD", "WybierzKolorHud_Handler") menu_additem(menuwybierz, "yZielony") menu_additem(menuwybierz, "yBialy") menu_additem(menuwybierz, "yZolty") menu_display(id, menuwybierz) } public WybierzKolorHud_Handler(id, menuwybierz, item) { if(item == MENU_EXIT) { menu_destroy(menuwybierz); return PLUGIN_CONTINUE; } switch(item) { case 0: { hud[id][0] = 0; hud[id][1] = 255; hud[id][2] = 0; } case 1: { hud[id][0] = 255; hud[id][1] = 255; hud[id][2] = 255; } case 2: { hud[id][0] = 255; hud[id][1] = 255; hud[id][2] = 0; } } menu_destroy(menuwybierz); return PLUGIN_CONTINUE; } public UstawKolorHud(id) { set_hudmessage(hud[id][0], hud[id][1], hud[id][2], -1.0, 0.92, 0, 0.0, 0.3, 0.0, 0.0); } public CurWeapon(id) { if(!is_user_connected(id)) return; new team = get_user_team(id); if(team > 2) return; new bron = read_data(2); new bronie = (bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id] | bronie_druzyny[team] | bronie_dozwolone); if(!(1< 0 ? str_to_num(danegracza[1]) : 1; return temp_poziom_gracza; } doswiadczenie_gracza[id] = str_to_num(danegracza[0]); poziom_gracza[id] = str_to_num(danegracza[1])>0?str_to_num(danegracza[1]):1; statystyki_gracza[id][zdrowie] = 0; statystyki_gracza[id][inteligencja] = 0; statystyki_gracza[id][wytrzymalosc] = 0; statystyki_gracza[id][kondycja] = 0; statystyki_gracza[id][grawitacja] = 0; statystyki_gracza[id][regeneracja] = 0; statystyki_gracza[id][niewidzialnosc] = 0; statystyki_gracza[id][przeladowanie] = 0; statystyki_gracza[id][zdrowie] = str_to_num(danegracza[2]); statystyki_gracza[id][inteligencja] = str_to_num(danegracza[3]); statystyki_gracza[id][wytrzymalosc] = str_to_num(danegracza[4]); statystyki_gracza[id][kondycja] = str_to_num(danegracza[5]); statystyki_gracza[id][grawitacja] = str_to_num(danegracza[6]); statystyki_gracza[id][regeneracja] = str_to_num(danegracza[7]); statystyki_gracza[id][niewidzialnosc] = str_to_num(danegracza[8]); statystyki_gracza[id][przeladowanie] = str_to_num(danegracza[9]); punkty_gracza[id] = (poziom_gracza[id]-1)*3-statystyki_gracza[id][zdrowie]-statystyki_gracza[id][inteligencja]-statystyki_gracza[id][wytrzymalosc]-statystyki_gracza[id][kondycja]-statystyki_gracza[id][grawitacja]-statystyki_gracza[id][regeneracja]-statystyki_gracza[id][niewidzialnosc]-statystyki_gracza[id][przeladowanie]; return PLUGIN_CONTINUE; } public WyrzucPerk(id) DropPerka(id, 0) public WyrzucPerk2(id) DropPerka(id, 1) public DropPerka(id, lp) { if(perk_gracza[lp][id]) { ColorChat(id, BLUE, "POMOCNIK: ^x04 Wyrzuciles %s.", nazwy_perkow[perk_gracza[lp][id]]); UstawPerk(id, 0, 0, 0, lp); } else ColorChat(id, BLUE, "POMOCNIK: ^x04 Nie masz zadnego perku."); } public SprawdzPoziom(id) { if(!is_user_connected(id)) return; new limit_poziomu = get_pcvar_num(cvar_limit_poziomu); new bool:zdobyl_poziom = false, bool:stracil_poziom = false; while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu) { poziom_gracza[id]++; punkty_gracza[id] = (poziom_gracza[id]-1)*3-statystyki_gracza[id][zdrowie]-statystyki_gracza[id][inteligencja]-statystyki_gracza[id][wytrzymalosc]-statystyki_gracza[id][kondycja]-statystyki_gracza[id][grawitacja]-statystyki_gracza[id][regeneracja]-statystyki_gracza[id][niewidzialnosc]-statystyki_gracza[id][przeladowanie]; zdobyl_poziom = true; } while(doswiadczenie_gracza[id] < PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1)) { poziom_gracza[id]--; stracil_poziom = true; } if(poziom_gracza[id] > limit_poziomu) { poziom_gracza[id] = limit_poziomu; ResetujPunkty(id); } if(stracil_poziom) { ResetujPunkty(id); set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0); ShowSyncHudMsg(id, SyncHudObj2,"Spadles do %i poziomu!", poziom_gracza[id]); } else if(zdobyl_poziom) { punkty_gracza[id] = (poziom_gracza[id]-1)*3-statystyki_gracza[id][zdrowie]-statystyki_gracza[id][inteligencja]-statystyki_gracza[id][wytrzymalosc]-statystyki_gracza[id][kondycja]-statystyki_gracza[id][grawitacja]-statystyki_gracza[id][regeneracja]-statystyki_gracza[id][niewidzialnosc]-statystyki_gracza[id][przeladowanie]; set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0); ShowSyncHudMsg(id, SyncHudObj2,"Awansowales do %i poziomu!", poziom_gracza[id]); client_cmd(id, "spk QTM_CodMod/levelup"); } ZapiszDane(id); } /*public PokazGodzine(id) { id -= ZADANIE_POKAZ_GODZINE; if(!is_user_connected(id)) { remove_task(id+ZADANIE_POKAZ_GODZINE); return PLUGIN_CONTINUE; } if(!is_user_alive(id)) { new target = pev(id, pev_iuser2); if(!target) return PLUGIN_CONTINUE; new Time[9]; set_hudmessage(255, 255, 255, 0.57, 0.80, 0, 0.0, 0.3, 0.0, 0.0); ShowSyncHudMsg(id, SyncHudObj, "[Godzina : %s]", Time); return PLUGIN_CONTINUE; } //set_hudmessage(255, 0, 0, -1.0, 0.88, 0, 6.0, 12.0) //show_hudmessage(id, "") new Time[9]; get_time("%H:%M:%S",Time,8) //new hp = get_user_health(id); //set_hudmessage(255, 0, 0, 0.57, 0.80, 0, 6.0, 12.0) //show_hudmessage(id, "") set_hudmessage(255, 255, 255, 0.57, 0.80, 0, 0.0, 0.3, 0.0, 0.0); ShowSyncHudMsg(id, SyncHudObj, "[Godzina : %s]", Time); //set_hudmessage(0, 255, 0, 0.57, 0.80, 0, 0.0, 0.3, 0.0, 0.0); //ShowSyncHudMsg(id, SyncHudObj, "[Godzina : %s]", Time); return PLUGIN_CONTINUE; }*/ public PokazInformacje(id) { id -= ZADANIE_POKAZ_INFORMACJE; if(!is_user_connected(id)) { remove_task(id+ZADANIE_POKAZ_INFORMACJE); return PLUGIN_CONTINUE; } if(!is_user_alive(id)) { new target = pev(id, pev_iuser2); if(!target) return PLUGIN_CONTINUE; new Float:proc_doswiadczenie_gracza = 0.0; proc_doswiadczenie_gracza = (float((doswiadczenie_gracza[target] - PobierzDoswiadczeniePoziomu(poziom_gracza[target]-1))) / float((PobierzDoswiadczeniePoziomu(poziom_gracza[target]) - PobierzDoswiadczeniePoziomu(poziom_gracza[target]-1)))) * 100.0; set_hudmessage(255, 255, 255, 0.55, 0.40, 0, 0.0, 0.3, 0.0, 0.0, 2); ShowSyncHudMsg(id, SyncHudObj, "Klasa : %s^nDoswiadczenie : %0.1f%%^nPoziom : %i^nPrzedmioty : %s i %s^nZycie : %d^n", nazwy_klas[klasa_gracza[target]], proc_doswiadczenie_gracza, poziom_gracza[target], nazwy_perkow[perk_gracza[0][target]], nazwy_perkow[perk_gracza[1][target]], get_user_health(target));// return PLUGIN_CONTINUE; } //set_hudmessage(255, 0, 0, -1.0, 0.88, 0, 6.0, 12.0) //show_hudmessage(id, "") //new Time[9]; //get_time("%H:%M:%S",Time,8) //set_hudmessage(255, 0, 0, 0.57, 0.80, 0, 6.0, 12.0) //show_hudmessage(id, "") //set_hudmessage(0, 255, 0, 0.57, 0.80, 0, 0.0, 0.3, 0.0, 0.0); //ShowSyncHudMsg(id, SyncHudObj, "[Godzina : %s]", Time); //set_hudmessage(0, 255, 0, 0.50, 0.90, 0, 0.0, 0.3, 0.0, 0.0); new Float:proc_doswiadczenie_gracza = 0.0; proc_doswiadczenie_gracza = (float((doswiadczenie_gracza[id] - PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1))) / float((PobierzDoswiadczeniePoziomu(poziom_gracza[id]) - PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1)))) * 100.0; new round_seconds_left = floatround(get_roundtime_left(), floatround_floor) new round_time_left[8]; formatex(round_time_left, sizeof(round_time_left), "%s%d:%s%d", round_seconds_left / 60 > 10 ? "" : "0", round_seconds_left / 60, round_seconds_left % 60 > 10 ? "" : "0", round_seconds_left % 60); UstawKolorHud(id) ShowSyncHudMsg(id, SyncHudObj, "[Klasa : %s] | [Doswiadczenie : %0.1f%%] | [Poziom : %i]^n[Przedmioty : %s i %s]^n[Zycie : %d] | [Do konca rundy : %s] | [Monety : %d]", nazwy_klas[klasa_gracza[id]], proc_doswiadczenie_gracza, poziom_gracza[id], nazwy_perkow[perk_gracza[0][id]], nazwy_perkow[perk_gracza[1][id]], get_user_health(id), round_time_left, cod_get_user_coins(id)); return PLUGIN_CONTINUE; } public Pomoc(id) show_menu(id, 1023, "y/resetw - resetuje statystyki^ny/statystykiw - wyswietla statystyki^ny/klasaw - uruchamia menu wyboru klas^ny/wyrzucw - wyrzuca perk^ny/perkw - pokazuje opis twojego perku^ny/klasyw - pokazuje opisy klas^ny+usew - Uzycie umiejetnosci klasy^nyradio3w (standardowo C) lub yuseperkw - Uzycie perku", -1, "Pomoc"); public UstawSzybkosc(id) { id -= id>32? ZADANIE_USTAW_SZYBKOSC: 0; if(klasa_gracza[id] && !freezetime) set_pev(id, pev_maxspeed, szybkosc_gracza[id]); } public DotykBroni(weapon, id) { if(get_pcvar_num(cvar_blokada_broni) < 1) return HAM_IGNORED; if(!is_user_connected(id)) return HAM_IGNORED; new model[23]; pev(weapon, pev_model, model, 22); if (pev(weapon, pev_owner) == id || containi(model, "w_backpack") != -1) return HAM_IGNORED; return HAM_SUPERCEDE; } public DotykTarczy(weapon,id) { if(get_pcvar_num(cvar_blokada_broni) != 1) return HAM_IGNORED; if(!is_user_connected(id)) return HAM_IGNORED; if(gracz_ma_tarcze[id]) return HAM_IGNORED; return HAM_SUPERCEDE; } public UstawPerk(id, perk, wartosc, pokaz_info, lp) { if(!ilosc_perkow) return PLUGIN_CONTINUE; static obroty[33]; if(obroty[id]++ >= 5) { obroty[id] = 0; UstawPerk(id, 0, 0, 0, lp); return PLUGIN_CONTINUE; } perk = (perk == -1)? random_num(1, ilosc_perkow): perk; if(perk == perk_gracza[!lp][id] && perk) { UstawPerk(id, perk, wartosc, pokaz_info, lp); return PLUGIN_CONTINUE; } wartosc = (wartosc == -1 || min_wartosci_perkow[perk] > wartosc || wartosc > max_wartosci_perkow[perk])? random_num(min_wartosci_perkow[perk], max_wartosci_perkow[perk]): wartosc; new ret; new forward_handle = CreateOneForward(pluginy_perkow[perk_gracza[lp][id]], "cod_perk_disabled", FP_CELL, FP_CELL); ExecuteForward(forward_handle, ret, id, perk); DestroyForward(forward_handle); perk_gracza[lp][id] = 0; forward_handle = CreateOneForward(pluginy_perkow[perk], "cod_perk_enabled", FP_CELL, FP_CELL, FP_CELL); ExecuteForward(forward_handle, ret, id, wartosc, perk); DestroyForward(forward_handle); if(ret == 4) { UstawPerk(id, -1, -1, 1, lp); return PLUGIN_CONTINUE; } ExecuteForward( perk_zmieniony, ret, id, perk, wartosc, lp); if(ret == 4) { UstawPerk(id, -1, -1, 1, lp); return PLUGIN_CONTINUE; } obroty[id] = 0; if(pokaz_info && perk) ColorChat(id, BLUE, "POMOCNIK: ^x04 Zdobyles %s.", nazwy_perkow[perk]); perk_gracza[lp][id] = perk; wartosc_perku_gracza[lp][id] = wartosc; return PLUGIN_CONTINUE; } public UstawDoswiadczenie(id, wartosc) { doswiadczenie_gracza[id] = wartosc; SprawdzPoziom(id); } public UstawKlase(id, klasa, zmien) { nowa_klasa_gracza[id] = klasa; if(zmien) { UstawNowaKlase(id); DajBronie(id); ZastosujAtrybuty(id); } } public UstawTarcze(id, wartosc) { if(wartosc != 0) { gracz_ma_tarcze[id] = true; fm_give_item(id, "weapon_shield"); } else { gracz_ma_tarcze[id] = false; } } public UstawNoktowizor(id, wartosc) { if((gracz_ma_noktowizor[id] = (wartosc > 0))) cs_set_user_nvg(id, 1); } public DajBron(id, bron) { bonusowe_bronie_gracza[id] |= (1< MAX_ILOSC_PERKOW) return -1; pluginy_perkow[ilosc_perkow] = plugin; get_string(1, nazwy_perkow[ilosc_perkow], MAX_WIELKOSC_NAZWY); get_string(2, opisy_perkow[ilosc_perkow], MAX_WIELKOSC_OPISU); min_wartosci_perkow[ilosc_perkow] = get_param(3); max_wartosci_perkow[ilosc_perkow] = get_param(4); return ilosc_perkow; } public ZarejestrujKlase(plugin, params) { if(params != 8) return PLUGIN_CONTINUE; if(++ilosc_klas > MAX_ILOSC_KLAS) return -1; pluginy_klas[ilosc_klas] = plugin; get_string(1, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY); get_string(2, opisy_klas[ilosc_klas], MAX_WIELKOSC_OPISU); bronie_klasy[ilosc_klas] = get_param(3); statystyki_klas[ilosc_klas][zdrowie] = get_param(4); statystyki_klas[ilosc_klas][kondycja] = get_param(5); statystyki_klas[ilosc_klas][inteligencja] = get_param(6); statystyki_klas[ilosc_klas][wytrzymalosc] = get_param(7); get_string(8, frakcja_klas[ilosc_klas], MAX_WIELKOSC_FRAKCJA); return ilosc_klas; } stock ham_strip_weapon(id, weapon[]) { if(!equal(weapon, "weapon_", 7) ) return 0 new wId = get_weaponid(weapon) if(!wId) return 0 new wEnt while( (wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname", weapon) ) && pev(wEnt, pev_owner) != id) {} if(!wEnt) return 0 if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt) if(!ExecuteHamB(Ham_RemovePlayerItem, id, wEnt)) return 0 ExecuteHamB(Ham_Item_Kill ,wEnt) set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<