#include #include #include #include #include #include #include #include #define PLUGIN "Call of Duty: MW Mod" #define VERSION "1.0-2" #define AUTHOR "QTM_Peyote" #define MAX_WIELKOSC_NAZWY 32 #define MAX_WIELKOSC_OPISU 256 #define MAX_ILOSC_PERKOW 120 #define MAX_ILOSC_KLAS 100 #define STANDARDOWA_SZYBKOSC 250.0 #define ZADANIE_POKAZ_INFORMACJE 672 #define ZADANIE_USTAW_SZYBKOSC 832 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 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[33], wartosc_perku_gracza[33]; new Float:maksymalne_zdrowie_gracza[33], Float:szybkosc_gracza[33], Float:redukcja_obrazen_gracza[33]; new punkty_gracza[33], zdrowie_gracza[33], inteligencja_gracza[33], wytrzymalosc_gracza[33], kondycja_gracza[33]; new bool:gracz_ma_tarcze[33], bool:gracz_ma_noktowizor[33]; new bonusowe_bronie_gracza[33], bonusowe_zdrowie_gracza[33], bonusowa_inteligencja_gracza[33], bonusowa_wytrzymalosc_gracza[33], bonusowa_kondycja_gracza[33]; new bronie_klasy[MAX_ILOSC_KLAS+1], zdrowie_klas[MAX_ILOSC_KLAS+1], kondycja_klas[MAX_ILOSC_KLAS+1], inteligencja_klas[MAX_ILOSC_KLAS+1], wytrzymalosc_klas[MAX_ILOSC_KLAS+1], 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, 0, 0}, bronie_dozwolone = 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(nowa_klasa_gracza[id]) UstawNowaKlase(id); if(!klasa_gracza[id]) { WybierzKlase(id); return PLUGIN_CONTINUE; } DajBronie(id); ZastosujAtrybuty(id); if(poziom_gracza[id] < min_lvl) { ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Wykrylem duze problemy z balansem lvli na serwerze"); ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 W ramach tego dostales ^x04%i^x01 na start",min_lvl); UstawDoswiadczenie(id,PobierzDoswiadczeniePoziomu(min_lvl)+1); poziom_gracza[id] = min_lvl; SprawdzPoziom(id); } if(punkty_gracza[id] > 0) PrzydzielPunkty(id); return PLUGIN_CONTINUE; } 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; WczytajDane(id, klasa_gracza[id]); UstawPerk(id, 0, 0, 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]); } public PoczatekRundy() { freezetime = false; 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 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; if(PobierzWytrzymalosc(this, 1, 1, 1) <= 0) return HAM_IGNORED; SetHamParamFloat(4, damage*(1.0-redukcja_obrazen_gracza[this])); return HAM_IGNORED; } public ObrazeniaPost(id, idinflictor, attacker, Float:damage, damagebits) { if(!is_user_connected(attacker) || !klasa_gracza[attacker]) return HAM_IGNORED; if(get_user_team(id) != 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; } } 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[attacker]) UstawPerk(attacker, -1, -1, 1); doswiadczenie_gracza[attacker] += nowe_doswiadczenie; } SprawdzPoziom(attacker); return HAM_IGNORED; } public client_authorized(id) { UsunUmiejetnosci(id); wczytane_dane[id] = 0; polaczony_raz[id] = 0; for(new i=1 ;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); ColorChat(id, GREEN, "^x01Perk: ^x04%s.", nazwy_perkow[perk]); ColorChat(id, GREEN, "^x04Opis: ^x01%s.", opis_perku); } 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("Wybierz klase:", "OpisKlasy_Handle"); for(new i=1; i <= ilosc_klas; i++) menu_additem(menu, nazwy_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_Handle(id, menu, item) { client_cmd(id, "spk QTM_CodMod/select"); if(item++ == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } 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++; } } 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^n%s", nazwy_klas[item], inteligencja_klas[item], zdrowie_klas[item], wytrzymalosc_klas[item], kondycja_klas[item], bronie, opisy_klas[item], opisy_klas[item][79]); show_menu(id, 1023, opis); return PLUGIN_CONTINUE; } public WybierzKlase(id) { if(polaczony_raz[id]) { client_print(id, print_center, "Poczekaj na klase, a nie spamujesz!"); return PLUGIN_CONTINUE; } if(!wczytane_dane[id]) { new szTemp[1024], data[1], Table[32]; new identyfikator[64], typ_zapisu = get_pcvar_num(cvar_typ_zapisu); get_cvar_string("cod_table", Table, 31); data[0] = id; switch(typ_zapisu) { case 1:{ copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]); replace_all(identyfikator, charsmax(identyfikator), "'", "'"); replace_all(identyfikator, charsmax(identyfikator), "`", "`"); } case 2: get_user_authid(id, identyfikator, charsmax(identyfikator)); case 3: get_user_ip(id, identyfikator, charsmax(identyfikator)); } formatex(szTemp, charsmax(szTemp), "SELECT * FROM `%s` WHERE `nick` = '%s'", Table, identyfikator) SQL_ThreadQuery(info, "KlasaHandle", szTemp, data, sizeof data) polaczony_raz[id] = 1; } else { lvl_klasy_gracza[id][klasa_gracza[id]] = poziom_gracza[id]; xp_klasy_gracza[id][klasa_gracza[id]] = doswiadczenie_gracza[id]; int_klasy_gracza[id][klasa_gracza[id]] = inteligencja_gracza[id]; zdr_klasy_gracza[id][klasa_gracza[id]] = zdrowie_gracza[id]; wyt_klasy_gracza[id][klasa_gracza[id]] = wytrzymalosc_gracza[id]; kon_klasy_gracza[id][klasa_gracza[id]] = kondycja_gracza[id]; new klasa[50], menu = menu_create("Wybierz klase:", "WybierzKlase_Handle"); for(new i=1; i <= ilosc_klas; i++) { format(klasa, 49, "%s yPoziom: %i", nazwy_klas[i], lvl_klasy_gracza[id][i]); menu_additem(menu, klasa); } 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"); } return PLUGIN_CONTINUE; } public KlasaHandle(failstate, Handle:query, error[], errnum, Data[], size){ if(failstate != TQUERY_SUCCESS){ log_amx("MySQL Select error: %s",error); return; } new id = Data[0] new szTemp[2028], klasa[50], menu = menu_create("Wybierz klase:", "WybierzKlase_Handle"); if(SQL_NumRows(query)) { new daneklasy[6][32]; for(new i=1; i <= ilosc_klas; i++) { formatex(szTemp, charsmax(szTemp), "%i", i); SQL_ReadResult(query, SQL_FieldNameToNum(query, szTemp), szTemp, charsmax(szTemp)) replace_all(szTemp, charsmax(szTemp), "#", " "); parse(szTemp, daneklasy[0], 31, daneklasy[1], 31, daneklasy[2], 31, daneklasy[3], 31, daneklasy[4], 31, daneklasy[5], 31); lvl_klasy_gracza[id][i] = str_to_num(daneklasy[0]) xp_klasy_gracza[id][i] = str_to_num(daneklasy[1]) int_klasy_gracza[id][i] = str_to_num(daneklasy[2]) zdr_klasy_gracza[id][i] = str_to_num(daneklasy[3]) wyt_klasy_gracza[id][i] = str_to_num(daneklasy[4]) kon_klasy_gracza[id][i] = str_to_num(daneklasy[5]) formatex(klasa, 49, "%s yPoziom: %i", nazwy_klas[i], lvl_klasy_gracza[id][i]); menu_additem(menu, klasa); } 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"); wczytane_dane[id] = 1; } else { new iLen = 0, Table[32]; new identyfikator[64], typ_zapisu = get_pcvar_num(cvar_typ_zapisu); get_cvar_string("cod_table", Table, 31); switch(typ_zapisu) { case 1:{ copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]); replace_all(identyfikator, charsmax(identyfikator), "'", "'"); replace_all(identyfikator, charsmax(identyfikator), "`", "`"); } case 2: get_user_authid(id, identyfikator, charsmax(identyfikator)); case 3: get_user_ip(id, identyfikator, charsmax(identyfikator)); } iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, "INSERT INTO `%s` (`nick`", Table); for(new i=1; i <= ilosc_klas; i++) iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, ", `%i`", i); iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ") VALUES ("); iLen += formatex(szTemp[iLen], charsmax(szTemp)-iLen, "'%s'", identyfikator); for(new i=1; i <= ilosc_klas; i++) iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ", '1#0#0#0#0#0'"); iLen += copy(szTemp[iLen], charsmax(szTemp)-iLen, ")"); SQL_ThreadQuery(info, "IgnoreHandle", szTemp) for(new i=1; i <= ilosc_klas; i++) { formatex(klasa, 49, "%s yPoziom: 1", nazwy_klas[i]); menu_additem(menu, klasa); } 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"); } polaczony_raz[id] = 0; } public WybierzKlase_Handle(id, menu, item) { client_cmd(id, "spk QTM_CodMod/select"); if(item++ == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } if(item == klasa_gracza[id] && !nowa_klasa_gracza[id]) return PLUGIN_CONTINUE; nowa_klasa_gracza[id] = item; if(klasa_gracza[id]) ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Klasa zostanie zmieniona w nastepnej rundzie."); else { UstawNowaKlase(id); DajBronie(id); ZastosujAtrybuty(id); } return PLUGIN_CONTINUE; } public PrzydzielPunkty(id) { new inteligencja[65]; new zdrowie[60]; new wytrzymalosc[60]; new kondycja[60]; new tytul[25]; new kondycjaa[60]; new wytrzymalosca[60]; new zdrowiea[60]; new inteligencjaa[60]; format(inteligencja, charsmax(inteligencja), "Inteligencja: r%i y(Zwieksza sile perkow i umiejetnosci klasy)", PobierzInteligencje(id, 1, 1, 1)); format(zdrowie, charsmax(zdrowie), "Zdrowie: r%i y(Zwieksza zdrowie)", PobierzZdrowie(id, 1, 1, 1)); format(wytrzymalosc, charsmax(wytrzymalosc), "Wytrzymalosc: r%i y(Zmniejsza obrazenia)", PobierzWytrzymalosc(id, 1, 1, 1)); format(kondycja, charsmax(kondycja), "Kondycja: r%i y(Zwieksza tempo chodu)", PobierzKondycje(id, 1, 1, 1)); format(tytul, charsmax(tytul), "Przydziel Punkty(%i):", punkty_gracza[id]); format(inteligencjaa, charsmax(inteligencjaa), "Dodaj 5 punktow w inteligencje"); format(zdrowiea, charsmax(zdrowiea), "Dodaj 5 punktow w zdrowie"); format(wytrzymalosca, charsmax(wytrzymalosca), "Dodaj 5 punktow w wytrzymalosc"); format(kondycjaa, charsmax(kondycjaa), "Dodaj 5 punktow w kondycje"); new menu = menu_create(tytul, "PrzydzielPunkty_Handler"); menu_additem(menu, inteligencja); menu_additem(menu, zdrowie); menu_additem(menu, wytrzymalosc); menu_additem(menu, kondycja); menu_additem(menu, inteligencjaa); menu_additem(menu, zdrowiea); menu_additem(menu, wytrzymalosca); menu_additem(menu, kondycjaa); menu_setprop(menu, MPROP_EXIT, 0); 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 limit_poziomu = get_pcvar_num(cvar_limit_poziomu); switch(item) { case 0: { if(inteligencja_gracza[id] < limit_poziomu/2) { inteligencja_gracza[id]++; punkty_gracza[id]--; } else ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maxymalny poziom ^x04inteligencji^x01 osiagniety"); } case 1: { if(zdrowie_gracza[id] < limit_poziomu/2) { zdrowie_gracza[id]++; punkty_gracza[id]--; } else ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maxymalny poziom ^x04zdrowia^x01 osiagniety"); } case 2: { if(wytrzymalosc_gracza[id] < limit_poziomu/2) { wytrzymalosc_gracza[id]++; punkty_gracza[id]--; } else ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maxymalny poziom ^x04wytrzymalosci^x01 osiagniety"); } case 3: { if(kondycja_gracza[id] < limit_poziomu/2) { kondycja_gracza[id]++; punkty_gracza[id]--; } else ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maxymalny poziom ^x04kondycji^x01 osiagniety"); } case 4: { if(inteligencja_gracza[id] < limit_poziomu/2) { if(punkty_gracza[id] < 5) { ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Masz za malo punktow do rozdania"); } else { if(inteligencja_gracza[id] + 5 <= limit_poziomu/2) { inteligencja_gracza[id] += 5; punkty_gracza[id] -= 5; } else { new punktydododania; punktydododania = limit_poziomu/2 - inteligencja_gracza[id]; inteligencja_gracza[id] += punktydododania; punkty_gracza[id] -= punktydododania; } } } else ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maksymalny poziom ^x04inteligencji^x01 osiagniety"); } case 5: { if(zdrowie_gracza[id] < limit_poziomu/2) { if(punkty_gracza[id] < 5) { ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Masz za malo punktow do rozdania"); } else { if(zdrowie_gracza[id] + 5 <= limit_poziomu/2) { zdrowie_gracza[id] += 5; punkty_gracza[id] -= 5; } else { new punktydododania; punktydododania = limit_poziomu/2 - zdrowie_gracza[id]; zdrowie_gracza[id] += punktydododania; punkty_gracza[id] -= punktydododania; } } } else ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maksymalny poziom ^x04zdrowia^x01 osiagniety"); } case 6: { if(wytrzymalosc_gracza[id] < limit_poziomu/2) { if(punkty_gracza[id] < 5) { ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Masz za malo punktow do rozdania"); } else { if(wytrzymalosc_gracza[id] + 5 <= limit_poziomu/2) { wytrzymalosc_gracza[id] += 5; punkty_gracza[id] -= 5; } else { new punktydododania; punktydododania = limit_poziomu/2 - wytrzymalosc_gracza[id]; wytrzymalosc_gracza[id] += punktydododania; punkty_gracza[id] -= punktydododania; } } } else ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maksymalny poziom ^x04wytrzymalosci^x01 osiagniety"); } case 7: { if(kondycja_gracza[id] < limit_poziomu/2) { if(punkty_gracza[id] < 5) { ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Masz za malo punktow do rozdania"); } else { if(kondycja_gracza[id] + 5 <= limit_poziomu/2) { kondycja_gracza[id] += 5; punkty_gracza[id] -= 5; } else { new punktydododania; punktydododania = limit_poziomu/2 - kondycja_gracza[id]; kondycja_gracza[id] += punktydododania; punkty_gracza[id] -= punktydododania; } } } else ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Maksymalny poziom ^x04kondycji^x01 osiagniety"); } } if(punkty_gracza[id] > 0) PrzydzielPunkty(id); return PLUGIN_CONTINUE; } public KomendaResetujPunkty(id) { ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Umiejetnosci zostana zresetowane."); client_cmd(id, "spk QTM_CodMod/select"); ResetujPunkty(id); } public ResetujPunkty(id) { punkty_gracza[id] = poziom_gracza[id]*2-2; inteligencja_gracza[id] = 0; zdrowie_gracza[id] = 0; kondycja_gracza[id] = 0; wytrzymalosc_gracza[id] = 0; if(punkty_gracza[id]) PrzydzielPunkty(id); } 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<= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu) { poziom_gracza[id]++; punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]; 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); ZapiszDane(id); } if(stracil_poziom) { ResetujPunkty(id); set_hudmessage(255, 255, 0, 0.31, 0.32, 0, 6.0, 5.0); ShowSyncHudMsg(id, SyncHudObj2,"Spadles do %i poziomu!", poziom_gracza[id]); ZapiszDane(id); } else if(zdobyl_poziom) { set_hudmessage(255, 255, 0, 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 PokazInformacje(id) { id -= ZADANIE_POKAZ_INFORMACJE; if(!is_user_connected(id)) { remove_task(id+ZADANIE_POKAZ_INFORMACJE); return PLUGIN_CONTINUE; } new name[32]; if(!is_user_alive(id)) { new target = pev(id, pev_iuser2); if(!target) return PLUGIN_CONTINUE; get_user_name(target, name, 31); new hp = get_user_health(target); new ileMa = doswiadczenie_gracza[target],ilePotrzeba = PobierzDoswiadczeniePoziomu(poziom_gracza[target]),ilePotrzebaBylo = PobierzDoswiadczeniePoziomu(poziom_gracza[target]-1) new Float:fProcent = 0.0; fProcent = (float((ileMa - ilePotrzebaBylo)) / float((ilePotrzeba - ilePotrzebaBylo))) * 100.0; static stats[8], body[8] get_user_stats(target, stats, body) set_hudmessage(255, 255, 0, 0.02, 0.14, 0, 1.0, 1.0, 0.1, 0.1); ShowSyncHudMsg(id, SyncHudObj, " INFO:^n|Gracz: %s^n|Klasa : %s^n|Exp : %i | %0.1f%%^n|Poziom : %i^n|Perk : %s^n|KillStreak : x%d^n|HP : %d^n^n^n STATY:^n|Inteligencja : %i^n|Zycie : %i^n|Wytrzymalosc : %i^n|Kondycja : %i^n|Fragi : %d^n^n||VIP : %s||" , name, nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], fProcent, poziom_gracza[target], nazwy_perkow[perk_gracza[target]], licznik_zabiccod[target], hp, inteligencja_gracza[target], zdrowie_gracza[target], wytrzymalosc_gracza[target], kondycja_gracza[target], stats[0], get_user_flags(target) & ADMIN_LEVEL_H ? "Tak" : "Nie"); return PLUGIN_CONTINUE; } new Time[9] new ileMa = doswiadczenie_gracza[id],ilePotrzeba = PobierzDoswiadczeniePoziomu(poziom_gracza[id]),ilePotrzebaBylo = poziom_gracza[id]-1 >= 0 ?PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1) : 0 new Float:fProcent = 0.0; fProcent = (float((ileMa - ilePotrzebaBylo)) / float((ilePotrzeba - ilePotrzebaBylo))) * 100.0; new hp = get_user_health(id); static stats[8], body[8] get_user_stats(id, stats, body) get_time("%H:%M:%S",Time,8) set_hudmessage(255, 255, 0, -1.0, 0.01, 0, 1.0, 1.0, 0.1, 0.1); ShowSyncHudMsg(id, SyncHudObj, "[Klasa : %s]|[Exp: %i | %0.1f%%]|[LvL : %i]^n[CoD 301]|[Nocny Exp]|[Eventy]|[Cs-Maniek.pl]^n[Perk : [%s]|[HP : %d]^n[KillStreak : x%d]|[Fragi : %d]|[Godzina : %s]" , nazwy_klas[klasa_gracza[id]], doswiadczenie_gracza[id], fProcent, poziom_gracza[id], nazwy_perkow[perk_gracza[id]], hp, licznik_zabiccod[id], stats[0], Time); 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^ny[c]w - Uzycie umiejetnosci klasy", -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) { if(!ilosc_perkow) return PLUGIN_CONTINUE; static obroty[33]; if(obroty[id]++ >= 5) { UstawPerk(id, 0, 0, 0); obroty[id] = 0; return PLUGIN_CONTINUE; } perk = (perk == -1)? random_num(1, ilosc_perkow): perk; 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[id]], "cod_perk_disabled", FP_CELL, FP_CELL); ExecuteForward(forward_handle, ret, id, perk); DestroyForward(forward_handle); perk_gracza[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); return PLUGIN_CONTINUE; } ExecuteForward(perk_zmieniony, ret, id, perk, wartosc); if(ret == 4) { UstawPerk(id, -1, -1, 1); return PLUGIN_CONTINUE; } perk_gracza[id] = perk; wartosc_perku_gracza[id] = wartosc; obroty[id] = 0; if(pokaz_info && perk_gracza[id]) ColorChat(id, GREEN, "[Cs-Maniek.pl] ^x01 Zdobyles ^x04%s.", nazwy_perkow[perk_gracza[id]]); 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((gracz_ma_tarcze[id] = (wartosc > 0))) fm_give_item(id, "weapon_shield"); } 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 != 7) 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); zdrowie_klas[ilosc_klas] = get_param(4); kondycja_klas[ilosc_klas] = get_param(5); inteligencja_klas[ilosc_klas] = get_param(6); wytrzymalosc_klas[ilosc_klas] = get_param(7); return ilosc_klas; } public SmiercGraczaKillCod(id) { new zabojcacod = read_data(1) new ofiaracod = read_data(2) licznik_zabiccod[zabojcacod]++; if(!is_user_alive(id)) { licznik_zabiccod[ofiaracod] = 0; } } public statystyki_klasy(id) { if(!is_user_alive(id) || !is_user_connected(id)) { ColorChat(id, GREEN, "[Cs-Maniek.pl]^x01 Statystyki mozesz podgladac tylko gdy zyjesz!") return PLUGIN_CONTINUE; } else { new name[64]; get_user_name(id, name, 63); new hp_klasy = PobierzZdrowie(id, 1, 1, 1); new hp = hp_klasy+100 const SIZE = 1024; new staty[SIZE+1],len = 0; len += formatex(staty[len], SIZE - len, ""); len += formatex(staty[len], SIZE - len, "Witaj %s w statystykach twojej klasy.

", name); len += formatex(staty[len], SIZE - len, "Klasa: %s

", nazwy_klas[klasa_gracza[id]]); len += formatex(staty[len], SIZE - len, "Masz %d Hp wiecej.
", zdrowie_gracza[id]); len += formatex(staty[len], SIZE - len, "Masz %0.1f%% redukcji obrazen.
", redukcja_obrazen_gracza[id]*100); len += formatex(staty[len], SIZE - len, "Jestes szybszy o %d.
", floatround(kondycja_gracza[id]*1.3)); len += formatex(staty[len], SIZE - len, "Masz o %d obrazen wiecej z rakiet/min/itp.
", inteligencja_gracza[id]); len += formatex(staty[len], SIZE - len, "Laczna ilosc zycia wynosi %d

", hp); len += formatex(staty[len], SIZE - len, "Twoj Perk to: %s
", nazwy_perkow[perk_gracza[id]]); len += formatex(staty[len], SIZE - len, "Opis Perku: %s

", opisy_perkow[perk_gracza[id]]); len += formatex(staty[len], SIZE - len, "Forum: Cs-Maniek.pl
"); len += formatex(staty[len], SIZE - len, ""); show_motd(id, staty, "Statystyki Klasy"); } return PLUGIN_CONTINUE; } public FindMaxLvl() { min_lvl = 0; new max_lvl=0; for(new id=1;id<=32;id++) { if(poziom_gracza[id] > max_lvl) max_lvl = poziom_gracza[id]; } min_lvl = floatround(max_lvl*procent); } stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha) { message_begin( MSG_ONE, MsgScreenfade,{0,0,0},id ); write_short( duration ); // Duration of fadeout write_short( holdtime ); // Hold time of color write_short( fadetype ); // Fade type write_byte ( red ); // Red write_byte ( green ); // Green write_byte ( blue ); // Blue write_byte ( alpha ); // Alpha message_end(); } stock fm_give_item(index, const item[]) { if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10)) return 0; new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item)); if (!pev_valid(ent)) return 0; new Float:origin[3]; pev(index, pev_origin, origin); set_pev(ent, pev_origin, origin); set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN); dllfunc(DLLFunc_Spawn, ent); new save = pev(ent, pev_solid); dllfunc(DLLFunc_Touch, ent, index); if (pev(ent, pev_solid) != save) return ent; engfunc(EngFunc_RemoveEntity, ent); return -1; } public ShowMotd(id) { show_motd(id, "vip.txt") } public BlokujKomende() return PLUGIN_HANDLED; 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<