Nie mogę już edytować tamtego posta.
Dorzucam silnik codmod'a.
#include <amxmodx>
#include <cstrike>
#include <fakemeta_util>
#include <hamsandwich>
#include <nvault>
#include <codmod>
#define STANDARDOWA_SZYBKOSC 250.0
#define ZADANIE_POKAZ_INFORMACJE 672
#define m_pPlayer 41
#define m_flTimeWeaponIdle 48
#define m_fInReload 54
#define m_flNextAttack 83
/*-----------------KONFIGURACJA-----------------*/
#define EXP_PODNIESIENIE_UPUSZCZENIE // jesli chcesz wylaczyc dawanie expa za podniesienie/upuszczenie paki to przed ta linijka daj //
#define MIN_PLAYERS_EXP_PAKA 4 // minimalna ilosc graczy zeby dawalo expa za podlozenie, rozbrojenie paki, uratowanie hostow, wygranie rundy
#define WYTRZYMALOSC_PERKU // jesli chcesz wylaczyc wytrzymalosc perku to przed ta linijka daj // (WAZNE!! jezeli wylaczysz wytrzymalosc perku to zajrzyj takze do aukcje_cod.sma i bonusowe_paczki.sma !!)
#define VAULT_EXPIREDAYS 28 // po ilu dniach nieobecnosci na serwerze ma usuwac dane gracza (lvl, staty)
#define MAX_PLAYERS 22 // max ilosc graczy (chcesz mniej zuzycia pamieci? ustaw wartosc: ilosc slotow+1
#define FLAGA_PREMIUM ADMIN_LEVEL_A // flaga na ktora ma byc premium (zmieniasz tu to zmienia sie we wszystkich klasach (dolaczonych do tego cod))
#define FLAGA_SUPERPREMIUM ADMIN_LEVEL_B // jak wyzej tylko dla super premium
#define MAX_WIELKOSC_NAZWY 32 // max dlugosc nazwy klasy, perku, frakcji
#define MAX_WIELKOSC_OPISU 200 // max wielkosc opisu klasy lub perku
//#define ZAPIS_NA_STEAM // jezeli chcesz zapis na nick to daj przed ta linijka //
#if defined WYTRZYMALOSC_PERKU
#define MAX_WYTRZYMALOSC_PERKU 5 // max wytrzymalosc perku
#define USZKODZENIA_ZA_SMIERC 1 // ile wytrzymalosci perku ma zabierac po smierci
#endif
//LIMITY STATOW
#define LIMIT_ZDROWIA 60
#define LIMIT_INTELIGENCJI 70
#define LIMIT_KONDYCJI 90
#define LIMIT_WYTRZYMALOSCI 80
#define LIMIT_OBRAZEN 100
#define LIMIT_EXPA 200
#define LIMIT_KEVLARU 100
#define LIMIT_EKONOMII 50
#define LIMIT_RELOADU 50
#define LIMIT_KAMUFLAZU 60
#define LIMIT_UNIKU 20
#define LIMIT_KRYTYKU 25
new const co_ile[] = {1, 5, 20, 50, 100} // szybkie rozdawanie statystyk (ile pkt dodawac)
new const prefix[] = "^4[CoD]^1";
new const szPrefixPremium[] = "[Premium]";
new const szPrefixSPremium[] = "[Super Premium]";
new const szStatus[4][16] = { "", "Premium", "Super Premium", "Super Premium"}
/*--------------KONIEC KONFIGURACJI--------------*/
new szybkosc_rozdania[MAX_PLAYERS+1];
new vault, SyncHudObj;
#if defined WYTRZYMALOSC_PERKU
new wytrzymalosc_perku[2][MAX_PLAYERS+1];
#endif
new
cvar_doswiadczenie_za_zabojstwo,
cvar_doswiadczenie_za_obrazenia,
cvar_limit_poziomu,
cvar_exp_za_hs,
cvar_proporcja_poziomu,
cvar_doswiadczenie_za_wygrana,
cvar_dodatkowy_exp[3],
cvar_forum;
#if defined EXP_PODNIESIENIE_UPUSZCZENIE
new cvar_podniesienie,
cvar_upuszczenie;
#endif
new perk_zmieniony, klasa_zmieniona;
new
Array:nazwy_perkow,
Array:opisy_perkow,
Array:max_wartosci_perkow,
Array:min_wartosci_perkow,
Array:pluginy_perkow
new
nazwa_gracza[MAX_PLAYERS+1][33],
klasa_gracza[MAX_PLAYERS+1],
nowa_klasa_gracza[MAX_PLAYERS+1],
poziom_gracza[MAX_PLAYERS+1],
doswiadczenie_gracza[MAX_PLAYERS+1],
perk_gracza[2][MAX_PLAYERS+1],
wartosc_perku_gracza[2][MAX_PLAYERS+1],
klan_gracza[MAX_PLAYERS+1][33]
new Array:gRender[MAX_PLAYERS+1],
Array:gRenderPlugin[MAX_PLAYERS+1]
new Float:szybkosc_gracza[MAX_PLAYERS+1]
enum _:typ_statystyk
{
PUNKTY,
INTELIGENCJA,
ZDROWIE,
WYTRZYMALOSC,
KONDYCJA,
OBRAZENIA,
EXP,
KEVLAR,
EKONOMIA,
RELOAD,
KAMUFLAZ,
UNIK,
KRYTYK
}
new g_statystyki[MAX_PLAYERS+1][typ_statystyk];
new bonusowe_bronie_gracza[MAX_PLAYERS+1],
bonusowe_zdrowie_gracza[MAX_PLAYERS+1],
bonusowa_inteligencja_gracza[MAX_PLAYERS+1],
bonusowa_wytrzymalosc_gracza[MAX_PLAYERS+1],
bonusowa_kondycja_gracza[MAX_PLAYERS+1];
new
Array:bronie_klasy,
Array:zdrowie_klas,
Array:kondycja_klas,
Array:inteligencja_klas,
Array:wytrzymalosc_klas,
Array:opisy_klas,
Array:nazwy_klas,
Array:pluginy_klas,
Array:frakcja_klas,
Array:typ_frakcji
new bronie_dozwolone = ((1<<CSW_KNIFE) | (1<<CSW_C4));
new g_status[MAX_PLAYERS+1];
new killstreak_gracza[MAX_PLAYERS+1];
new bool:szybki_reload[MAX_PLAYERS+1];
new forum[64], limit_poziomu, za_obrazenia;
new bool:freezetime;
new msgScreenFade;
new const Float:g_fDelay[CSW_P90+1] = { 0.00, 2.70, 0.00, 2.00, 0.00, 0.55, 0.00, 3.15, 3.30, 0.00, 4.50, 2.70, 3.50, 3.35, 2.45, 3.30, 2.70, 2.20, 2.50, 2.63, 4.70, 0.55, 3.05, 2.12, 3.50, 0.00, 2.20, 3.00, 2.45, 0.00, 3.40 }
new const maxAmmo[CSW_P90+1] = {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, 1, 35, 90, 90, 0, 100};
new const Nazwy_broni[][] = {
"", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
"weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
"weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
"weapon_ak47", "weapon_knife", "weapon_p90" }
new const msg[][] = { "podlozenie paki", "rozbrojenie paki", "uratowanie hostow" }
new g_buffer[1024];
new sizeArray_typ_frakcji;
new iloscKlas;
new iloscPerkow;
public plugin_init()
{
register_plugin("CoD MoD", "ID - 2", "RiviT");
cvar_doswiadczenie_za_zabojstwo = register_cvar("cod_killxp", "140"); //exp za kill
cvar_doswiadczenie_za_obrazenia = register_cvar("cod_damagexp", "4"); //exp za 20 dmg
cvar_limit_poziomu = register_cvar("cod_maxlevel", "401"); //max lvl
cvar_doswiadczenie_za_wygrana = register_cvar("cod_winxp", "20"); //exp za wygrana runde
cvar_exp_za_hs = register_cvar("cod_hsxp", "75"); //exp za HS
cvar_dodatkowy_exp[0] = register_cvar("cod_plantexp", "60"); //exp za podlozenie paki
cvar_dodatkowy_exp[1] = register_cvar("cod_defuseexp", "60"); //exp za rozbrojenie
cvar_dodatkowy_exp[2] = register_cvar("cod_rescueexp", "30"); //exp za uratowanie hostow
cvar_proporcja_poziomu = register_cvar("cod_levelratio", "45"); //proprcja poziomu
cvar_forum = register_cvar("cod_forum", "Forum"); //nazwa forum wyswietlana w hud
#if defined EXP_PODNIESIENIE_UPUSZCZENIE
cvar_podniesienie = register_cvar("cod_bombget", "25"); //ile exp'a za podniesienie paki (mniej niz za upuszczenie)
cvar_upuszczenie = register_cvar("cod_bombdrop", "30"); //ile exp'a za wyrzucenie paki (wiecej niz za podniesienie)
#endif
register_clcmd("say /klasa", "WybierzKlase");
register_clcmd("say /class", "WybierzKlase");
register_clcmd("say /klasy", "OpisKlasy_Frakcje");
register_clcmd("say /classinfo", "OpisKlasy_Frakcje");
register_clcmd("say /perk", "KomendaOpisPerku");
register_clcmd("say /p", "KomendaOpisPerku");
register_clcmd("say /drop", "SprzedajPerk");
register_clcmd("say /d", "SprzedajPerk");
register_clcmd("say /wyrzuc", "SprzedajPerk");
register_clcmd("say /sprzedaj", "SprzedajPerk");
register_clcmd("say /sell", "SprzedajPerk");
register_clcmd("say /perk1", "KomendaOpisPerku");
register_clcmd("say /p1", "KomendaOpisPerku");
register_clcmd("say /drop1", "SprzedajPerk");
register_clcmd("say /d1", "SprzedajPerk");
register_clcmd("say /wyrzuc1", "SprzedajPerk");
register_clcmd("say /sprzedaj1", "SprzedajPerk");
register_clcmd("say /sell1", "SprzedajPerk");
register_clcmd("say /premium", "ShowMotdP");
register_clcmd("say /spremium", "ShowMotdSP");
register_clcmd("say /statystyki", "PrzydzielPunkty");
register_clcmd("say /staty", "PrzydzielPunkty");
register_clcmd("say /pomoc", "Pomoc");
register_clcmd("say /hud", "Hud");
register_clcmd("say /reset", "KomendaResetujPunkty");
register_clcmd("say /vips", "ShowVips")
register_clcmd("say /vipy", "ShowVips")
register_clcmd("say /perk2", "KomendaOpisPerku2");
register_clcmd("say /p2", "KomendaOpisPerku2");
register_clcmd("say /drop2", "SprzedajPerk2");
register_clcmd("say /d2", "SprzedajPerk2");
register_clcmd("say /wyrzuc2", "SprzedajPerk2");
register_clcmd("say /sprzedaj2", "SprzedajPerk2");
register_clcmd("say /sell2", "SprzedajPerk2");
register_clcmd("useperk2", "UzyjPerku2");
register_clcmd("radio2", "UzyjPerku2");
register_clcmd("useperk", "UzyjPerku");
register_clcmd("radio3", "UzyjPerku");
register_clcmd("fullupdate", "BlokujKomende");
RegisterHam(Ham_TakeDamage, "player", "Obrazenia");
RegisterHam(Ham_TakeDamage, "player", "ObrazeniaPost", 1);
RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
RegisterHam(Ham_Touch, "weapon_shield", "HamSupercede");
RegisterHam(Ham_Touch, "weaponbox", "DotykBroni");
RegisterHam(Ham_AddPlayerItem, "player", "Ham_AddPlayerItem_Pre", 0)
RegisterHam(Ham_CS_Player_ResetMaxSpeed, "player", "UstawSzybkosc", 1)
new suma_bitowa = (1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4)|(1<<CSW_M3)|(1<<CSW_XM1014)|(1<<2)
for(new i = CSW_P228; i <= CSW_P90; i++)
{
if(suma_bitowa & (1<<i)) continue;
RegisterHam(Ham_Weapon_Reload, Nazwy_broni[i], "PrzeladowanieBroniPost", 1)
}
register_forward(FM_EmitSound, "EmitSound");
register_forward(FM_CmdStart, "CmdStart");
register_forward(FM_ClientKill, "ClientKill")
register_logevent("ExpPakaHosty", 3, "1=triggered");
register_logevent("RoundEnd", 2, "1=Round_End");
#if defined EXP_PODNIESIENIE_UPUSZCZENIE
register_logevent("bomb_drop", 3, "2=Dropped_The_Bomb")
register_logevent("bomb_get", 3, "2=Got_The_Bomb")
#endif
register_logevent("PoczatekRundy", 2, "1=Round_Start");
register_event("SendAudio", "WygranaTerro" , "a", "2&%!MRAD_terwin");
register_event("SendAudio", "WygranaCT", "a", "2&%!MRAD_ctwin");
register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
register_event("DeathMsg", "DeathMsg", "a")
register_message(get_user_msgid("SayText"), "handleSayText");
register_message(get_user_msgid("ScoreAttrib"), "VipStatus");
register_message(get_user_msgid("Health"), "Health")
vault = nvault_open("CoD_by_Rivit");
if(vault == INVALID_HANDLE)
log_error(AMX_ERR_NATIVE, "Otwieranie pliku .vault nie powiodlo sie!")
SyncHudObj = CreateHudSyncObj();
perk_zmieniony = CreateMultiForward("cod_perk_changed", ET_CONTINUE, FP_CELL, FP_CELL);
klasa_zmieniona = CreateMultiForward("cod_class_changed", ET_CONTINUE, FP_CELL, FP_CELL);
msgScreenFade = get_user_msgid("ScreenFade")
bronie_klasy = ArrayCreate(1)
zdrowie_klas = ArrayCreate(1)
kondycja_klas = ArrayCreate(1)
inteligencja_klas = ArrayCreate(1)
wytrzymalosc_klas = ArrayCreate(1)
pluginy_klas = ArrayCreate(1)
opisy_klas = ArrayCreate(MAX_WIELKOSC_OPISU+1)
nazwy_klas = ArrayCreate(MAX_WIELKOSC_NAZWY+1)
typ_frakcji = ArrayCreate(MAX_WIELKOSC_NAZWY+1, 2)
frakcja_klas = ArrayCreate(MAX_WIELKOSC_NAZWY+1)
nazwy_perkow = ArrayCreate(MAX_WIELKOSC_NAZWY+1)
opisy_perkow = ArrayCreate(MAX_WIELKOSC_OPISU+1)
min_wartosci_perkow = ArrayCreate(1)
max_wartosci_perkow = ArrayCreate(1)
pluginy_perkow = ArrayCreate(1)
for(new i = 1; i <= MAX_PLAYERS; i++)
{
gRender[i] = ArrayCreate(1, 2)
gRenderPlugin[i] = ArrayCreate(1, 2)
}
ArrayPushCell(pluginy_klas, 0)
ArrayPushCell(bronie_klasy, 0)
ArrayPushCell(zdrowie_klas, 0)
ArrayPushCell(kondycja_klas, 0)
ArrayPushCell(inteligencja_klas, 0)
ArrayPushCell(wytrzymalosc_klas, 0)
ArrayPushString(opisy_klas, "")
ArrayPushString(nazwy_klas, "Brak")
ArrayPushString(frakcja_klas, "")
ArrayPushString(opisy_perkow, "Zabij kogos, aby dostac perk")
ArrayPushString(nazwy_perkow, "Brak")
ArrayPushCell(pluginy_perkow, 0)
ArrayPushCell(min_wartosci_perkow, 0)
ArrayPushCell(max_wartosci_perkow, 0)
set_task(0.5, "UsunDuplikaty")
}
public ShowVips(id)
{
new buffer[1536], i;
add(buffer, 1535, "<html><body bgcolor=Black><font color=^"#E0A518^">");
for(i = 1; i <= MAX_PLAYERS; i++)
{
if(is_user_connected(i))
format(buffer, 1535, "%s%s - Gracz %s<br>", buffer, nazwa_gracza[i], szStatus[g_status[i]])
}
add(buffer, 1535, "</font></body></html>");
show_motd(id, buffer, "Statusy graczy");
}
public UsunDuplikaty()
{
server_cmd("exec addons/amxmodx/configs/codmod.cfg");
server_exec();
new temp[MAX_WIELKOSC_NAZWY+1], j, i;
for(i = 0; i < ArraySize(typ_frakcji); i++)
{
ArrayGetString(typ_frakcji, i, g_buffer, MAX_WIELKOSC_NAZWY)
for(j = i+1; j < ArraySize(typ_frakcji); j++)
{
ArrayGetString(typ_frakcji, j, temp, MAX_WIELKOSC_NAZWY)
if(equali(g_buffer, temp))
{
ArrayDeleteItem(typ_frakcji, j)
j--
}
}
}
sizeArray_typ_frakcji = ArraySize(typ_frakcji)
iloscKlas = ArraySize(zdrowie_klas) // klas jest w rzeczywistosci jedna mniej bo "Brak"
iloscPerkow = ArraySize(nazwy_perkow) // perkow jest w rzeczywistosci jeden mniej bo "Brak"
get_pcvar_string(cvar_forum, forum, charsmax(forum))
limit_poziomu = get_pcvar_num(cvar_limit_poziomu)
za_obrazenia = get_pcvar_num(cvar_doswiadczenie_za_obrazenia)
nvault_prune(vault, 0, get_systime() - (86400 * VAULT_EXPIREDAYS));
}
public plugin_precache()
{
RegisterHam(Ham_Spawn, "func_buyzone", "HamSupercede")
RegisterHam(Ham_Spawn, "armoury_entity", "HamSupercede")
precache_sound("QTM_CodMod/select.wav");
precache_sound("QTM_CodMod/levelup.wav");
}
public CmdStart(id, uc_handle)
{
if(!is_user_alive(id)) return;
static Float:velocity[3];
pev(id, pev_velocity, velocity);
if(szybkosc_gracza[id] > vector_length(velocity) * 1.8)
set_pev(id, pev_flTimeStepSound, 300);
}
public Health(msgid, msgdest, id)
{
if(!is_user_alive(id)) return;
static hp;
hp = get_msg_arg_int(1);
if(hp > 255 && !(hp % 256))
set_msg_arg_int(1, ARG_BYTE, ++hp);
}
public Hud(id)
{
if(task_exists(id+ZADANIE_POKAZ_INFORMACJE))
remove_task(id+ZADANIE_POKAZ_INFORMACJE)
else
set_task(0.7, "PokazInformacje", id+ZADANIE_POKAZ_INFORMACJE, _, _, "b");
}
public Odrodzenie(id)
{
if(!is_user_alive(id)) return;
if(nowa_klasa_gracza[id])
UstawNowaKlase(id);
else
{
if(g_statystyki[id][PUNKTY] > 0)
PrzydzielPunkty(id, 0);
}
if(!klasa_gracza[id])
{
WybierzKlase(id);
return;
}
DajBronie(id)
set_task(0.3, "ZastosujAtrybuty", id)
if(g_status[id] == STATUS_PREMIUM)
{
if(get_user_team(id) == 2)
cs_set_user_defuse(id, 1)
cs_set_user_money(id, min(cs_get_user_money(id)+300, 16000), 1);
}
else if(g_status[id] > STATUS_PREMIUM)
{
if(get_user_team(id) == 2)
cs_set_user_defuse(id, 1)
cs_set_user_money(id, min(cs_get_user_money(id)+500, 16000), 1);
}
}
UstawNowaKlase(id)
{
ZapiszDane(id);
static ret, forward_handle;
forward_handle = CreateOneForward(ArrayGetCell(pluginy_klas, klasa_gracza[id]), "cod_class_disabled", FP_CELL);
ExecuteForward(forward_handle, ret, id);
DestroyForward(forward_handle);
forward_handle = CreateOneForward(ArrayGetCell(pluginy_klas, nowa_klasa_gracza[id]), "cod_class_enabled", FP_CELL);
ExecuteForward(forward_handle, ret, id);
DestroyForward(forward_handle);
if(ret == COD_STOP)
{
nowa_klasa_gracza[id] = 0;
return;
}
ExecuteForward(klasa_zmieniona, ret, id, klasa_gracza[id]);
if(ret == COD_STOP)
{
nowa_klasa_gracza[id] = 0;
return;
}
klasa_gracza[id] = nowa_klasa_gracza[id];
nowa_klasa_gracza[id] = 0;
#if defined WYTRZYMALOSC_PERKU
static cache_durability, cache_durability2;
cache_durability = wytrzymalosc_perku[0][id]
cache_durability2 = wytrzymalosc_perku[1][id]
#endif
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);
#if defined WYTRZYMALOSC_PERKU
wytrzymalosc_perku[0][id] = cache_durability
wytrzymalosc_perku[1][id] = cache_durability2
#endif
ArrayGetString(nazwy_klas, klasa_gracza[id], g_buffer, MAX_WIELKOSC_NAZWY)
WczytajDane(id);
}
DajBronie(id)
{
static suma_bitowa, i;
suma_bitowa = ArrayGetCell(bronie_klasy, klasa_gracza[id]) | bonusowe_bronie_gracza[id]
for(i = CSW_P228; i <= CSW_P90; ++i)
{
if((1<<i) & suma_bitowa)
{
fm_give_item(id, Nazwy_broni[i]);
cs_set_user_bpammo(id, i, maxAmmo[i]);
}
else
{
if((1<<i) & ~bronie_dozwolone && user_has_weapon(id, i))
ham_strip_weapon(id, i)
}
}
}
ham_strip_weapon(id, wId)
{
static wEnt;
wEnt = -1
while ((wEnt = engfunc(EngFunc_FindEntityByString, wEnt, "classname", Nazwy_broni[wId])) && pev(wEnt, pev_owner) != id) {}
if(!wEnt) return
if(get_user_weapon(id) == wId) ExecuteHam(Ham_Weapon_RetireWeapon, wEnt);
if(ExecuteHam(Ham_RemovePlayerItem, id, wEnt))
{
ExecuteHam(Ham_Item_Kill, wEnt);
set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId));
}
}
public ZastosujAtrybuty(id)
{
szybkosc_gracza[id] = STANDARDOWA_SZYBKOSC+PobierzKondycje(id, 1, 1, 1)*1.3;
set_pev(id, pev_health, 100.0+PobierzZdrowie(id, 1, 1, 1));
if(g_statystyki[id][KEVLAR])
cs_set_user_armor(id, min(get_user_armor(id) + g_statystyki[id][KEVLAR], 150), CS_ARMOR_KEVLAR)
ArraySetCell(gRender[id], 0, 255 - (3 * g_statystyki[id][KAMUFLAZ]))
ZastosujRender(id)
}
#if defined EXP_PODNIESIENIE_UPUSZCZENIE
public bomb_drop()
{
static id, za_upuszczenie;
id = get_loguser_index()
za_upuszczenie = get_pcvar_num(cvar_upuszczenie);
if(is_user_alive(id) && doswiadczenie_gracza[id] >= za_upuszczenie)
{
doswiadczenie_gracza[id] -= za_upuszczenie;
client_print_color(id, print_team_red, "%s Straciles %i expa za upuszczenie paki", prefix, za_upuszczenie)
set_dhudmessage(122, 255, 228, -1.0, 0.63, 0, 0.0, 1.5, 0.0, 0.0)
show_dhudmessage(id, "-%i", za_upuszczenie);
SprawdzPoziom(id);
}
}
public bomb_get()
{
static id, za_podniesienie;
id = get_loguser_index()
if(is_user_alive(id))
{
za_podniesienie = get_pcvar_num(cvar_podniesienie)
doswiadczenie_gracza[id] += za_podniesienie;
client_print_color(id, print_team_red, "%s Dostales %i expa za podniesienie paki", prefix, za_podniesienie)
set_dhudmessage(122, 255, 228, -1.0, 0.63, 0, 0.0, 1.5, 0.0, 0.0)
show_dhudmessage(id, "+%i", za_podniesienie);
SprawdzPoziom(id);
}
}
#endif
public ExpPakaHosty()
{
if(get_playersnum() < MIN_PLAYERS_EXP_PAKA) return;
static loguser[80], name[33], id, akcja[20];
read_logargv(0, loguser, 79);
parse_loguser(loguser, name, 32);
id = get_user_index(name);
if(!is_user_connected(id)) return;
read_logargv(2, akcja, 19);
if(equal(akcja, "Planted_The_Bomb"))
PrzydzielExp(id, 0);
else if(equal(akcja, "Defused_The_Bomb"))
PrzydzielExp(id, 1);
else if(equal(akcja, "Rescued_A_Hostage"))
PrzydzielExp(id, 2);
}
PrzydzielExp(id, typ)
{
static exp;
exp = get_pcvar_num(cvar_dodatkowy_exp[typ]);
if(g_status[id] == STATUS_PREMIUM)
exp += 300
else if(g_status[id] > STATUS_PREMIUM)
exp += 400
doswiadczenie_gracza[id] += exp;
client_print_color(id, print_team_red, "%s Dostales %d expa za %s", prefix, exp, msg[typ])
set_dhudmessage(122, 255, 228, -1.0, 0.68, 0, 0.0, 1.5, 0.0, 0.0)
show_dhudmessage(id, "+%i", exp);
SprawdzPoziom(id);
}
public WygranaTerro()
WygranaRunda(1);
public WygranaCT()
WygranaRunda(2);
WygranaRunda(team)
{
if(get_playersnum() < MIN_PLAYERS_EXP_PAKA) return;
static doswiadczenie_za_wygrana, id;
doswiadczenie_za_wygrana = get_pcvar_num(cvar_doswiadczenie_za_wygrana);
for(id = 1; id <= MAX_PLAYERS; id++)
{
if(get_user_team(id) != team) continue;
if(!klasa_gracza[id]) continue;
doswiadczenie_gracza[id] += doswiadczenie_za_wygrana;
client_print_color(id, print_team_red, "%s Dostales %i expa za wygrana runde!", prefix, doswiadczenie_za_wygrana)
SprawdzPoziom(id);
}
}
public RoundEnd()
{
static i;
for(i = 1; i <= MAX_PLAYERS; i++)
{
if(is_user_alive(i))
{
if(g_status[i] == STATUS_PREMIUM)
cs_set_user_money(i, min(cs_get_user_money(i)+100, 16000));
else if(g_status[i] > STATUS_PREMIUM)
cs_set_user_money(i, min(cs_get_user_money(i)+200, 16000));
}
}
}
public PrzeladowanieBroniPost(iEnt)
{
static id, Float:fDelay;
id = get_pdata_cbase(iEnt, m_pPlayer, 4)
if(szybki_reload[id]) return;
if(g_statystyki[id][RELOAD] && get_pdata_int(iEnt, m_fInReload, 4))
{
fDelay = g_fDelay[cs_get_weapon_id(iEnt)] * (1.0 - (float(g_statystyki[id][RELOAD]) / 100.0))
set_pdata_float(id, m_flNextAttack, fDelay, 5)
set_pdata_float(iEnt, m_flTimeWeaponIdle, fDelay + 0.5, 4)
}
}
public Ham_AddPlayerItem_Pre(id, ent)
{
if(~(ArrayGetCell(bronie_klasy, klasa_gracza[id]) | bonusowe_bronie_gracza[id] | bronie_dozwolone) & 1<<cs_get_weapon_id(ent))
{
ExecuteHam(Ham_Item_Kill, ent)
return HAM_SUPERCEDE
}
return HAM_IGNORED
}
public PoczatekRundy()
freezetime = false;
public NowaRunda()
freezetime = true;
public UstawSzybkosc(id)
{
if(is_user_alive(id) && !freezetime)
fm_set_user_maxspeed(id, klasa_gracza[id] ? szybkosc_gracza[id] : 20.0)
}
public Obrazenia(vid, idinflictor, kid, Float:damage)
{
if(!is_user_connected(kid) || get_user_team(vid) == get_user_team(kid))
return HAM_IGNORED;
if(g_statystyki[vid][UNIK])
{
if(random(100) < floatround(g_statystyki[vid][UNIK] * 0.5, floatround_floor))
{
set_dhudmessage(122, 255, 228, -1.0, 0.55, 0, 0.0, 1.5, 0.0, 0.0)
show_dhudmessage(vid, "UNIK!");
show_dhudmessage(kid, "%s - UNIK!", nazwa_gracza[vid]);
Display_Fade(vid, 0, 0, 250)
return HAM_SUPERCEDE;
}
}
if(g_statystyki[kid][KRYTYK])
{
if(random(100) < floatround(g_statystyki[kid][KRYTYK] * 0.4, floatround_floor))
{
set_dhudmessage(122, 255, 228, -1.0, 0.55, 0, 0.0, 1.5, 0.0, 0.0)
show_dhudmessage(kid, "CIOS KRYTYCZNY!");
show_dhudmessage(vid, "%s - CIOS KRYTYCZNY!", nazwa_gracza[kid]);
Display_Fade(vid, 255, 0, 0)
damage *= 3
}
}
damage += (damage * float(g_statystyki[kid][OBRAZENIA]) * 0.005)
SetHamParamFloat(4, damage * (1.0 - (PobierzWytrzymalosc(vid, 1, 1, 1) * 0.0025)));
return HAM_HANDLED;
}
public ObrazeniaPost(id, idinflictor, attacker, Float:damage)
{
if(!is_user_connected(attacker) || get_user_team(id) == get_user_team(attacker) || !attacker) return;
while(damage >= 20)
{
damage -= 20;
doswiadczenie_gracza[attacker] += za_obrazenia;
}
SprawdzPoziom(attacker);
}
public DeathMsg()
{
static kid, vid, nowe_doswiadczenie, hs, nowa_kasa;
kid = read_data(1);
if(!is_user_connected(kid)) return;
vid = read_data(2);
killstreak_gracza[vid] = 0
if(kid && kid != vid && get_user_team(kid) != get_user_team(vid))
{
killstreak_gracza[kid]++
nowe_doswiadczenie = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo) + (2 * g_statystyki[kid][EXP]) + killstreak_gracza[kid] * 10;
hs = read_data(3)
if(hs)
nowe_doswiadczenie += get_pcvar_num(cvar_exp_za_hs);
if(!perk_gracza[0][kid])
UstawPerk(kid, -1, -1, 1, 0);
else if(!perk_gracza[1][kid])
UstawPerk(kid, -1, -1, 1, 1);
if(g_status[kid] == STATUS_PREMIUM)
nowe_doswiadczenie += hs ? 40 : 25
else if(g_status[kid] > STATUS_PREMIUM)
nowe_doswiadczenie += hs ? 50 : 35
set_dhudmessage(122, 255, 228, -1.0, 0.66, 0, 0.0, 1.5, 0.0, 0.0)
show_dhudmessage(kid, "+%i", nowe_doswiadczenie);
doswiadczenie_gracza[kid] += nowe_doswiadczenie;
SprawdzPoziom(kid);
if(g_statystyki[kid][EKONOMIA] || g_status[kid])
{
nowa_kasa = g_statystyki[kid][EKONOMIA] * 14;
if(g_status[kid] == STATUS_PREMIUM)
nowa_kasa += hs ? 450 : 250
else if(g_status[kid] > STATUS_PREMIUM)
nowa_kasa += hs ? 550 : 350
cs_set_user_money(kid, min(cs_get_user_money(kid) + nowa_kasa, 16000))
set_dhudmessage(122, 255, 228, 0.8, 0.63, 0, 0.0, 1.5, 0.0, 0.0)
show_dhudmessage(kid, "+%i$", nowa_kasa);
}
}
#if defined WYTRZYMALOSC_PERKU
if(perk_gracza[0][vid] && ((wytrzymalosc_perku[0][vid] -= USZKODZENIA_ZA_SMIERC) <= 0))
{
UstawPerk(vid, 0, 0, 0, 0);
client_print_color(vid, print_team_red, "%s Twoj pierwszy perk ulegl zniszczeniu!", prefix)
}
if(perk_gracza[1][vid] && ((wytrzymalosc_perku[1][vid] -= USZKODZENIA_ZA_SMIERC) <= 0))
{
UstawPerk(vid, 0, 0, 0, 1);
client_print_color(vid, print_team_red, "%s Twoj drugi perk ulegl zniszczeniu!", prefix)
}
#endif
}
public client_authorized(id)
{
poziom_gracza[id] = 1;
doswiadczenie_gracza[id] = 0;
szybki_reload[id] = false
szybkosc_gracza[id] = 0.0;
killstreak_gracza[id] = 0
g_status[id] = 0;
get_user_name(id, nazwa_gracza[id], 32);
set_task(0.7, "PokazInformacje", id+ZADANIE_POKAZ_INFORMACJE, _, _, "b")
ArrayClear(gRender[id]);
ArrayClear(gRenderPlugin[id]);
ArrayPushCell(gRender[id], 255) //pierwszy to jest ze statystyki
ArrayPushCell(gRenderPlugin[id], 1) //index pluginu, nie potrzebne, bo usuwanie jest od 1 indexu tablicy, a ten jest zerowy
static a;
for(a = 0; a < typ_statystyk; a++)
g_statystyki[id][a] = 0;
a = get_user_flags(id)
if(a & FLAGA_PREMIUM)
g_status[id] |= STATUS_PREMIUM
if(a & FLAGA_SUPERPREMIUM)
{
g_status[id] |= STATUS_SPREMIUM
set_hudmessage(24, 190, 220, 0.25, 0.2, 0, 6.0, 6.0);
show_hudmessage(0, "[%s] %s wbija na serwer !", szStatus[g_status[id]], nazwa_gracza[id]);
}
client_cmd(id, "cl_forwardspeed 1000");
client_cmd(id, "cl_backspeed 1000");
client_cmd(id, "cl_sidespeed 1000");
client_cmd(id, "cl_upspeed 1000");
client_cmd(id, "cl_downspeed 1000");
}
public client_disconnect(id)
{
ZapiszDane(id);
remove_task(id+ZADANIE_POKAZ_INFORMACJE);
remove_task(id);
nowa_klasa_gracza[id] = 0;
UstawNowaKlase(id);
UstawPerk(id, 0, 0, 0, 0);
UstawPerk(id, 0, 0, 0, 1);
//usuwanie bonusow musi byc w disconnect ze wzgledu na klany!!
bonusowe_zdrowie_gracza[id] = 0;
bonusowa_wytrzymalosc_gracza[id] = 0;
bonusowa_inteligencja_gracza[id] = 0;
bonusowa_kondycja_gracza[id] = 0;
}
public KomendaOpisPerku(id)
{
OpisPerku(id, 0)
return PLUGIN_HANDLED;
}
public KomendaOpisPerku2(id)
{
OpisPerku(id, 1)
return PLUGIN_HANDLED;
}
OpisPerku(id, lp)
{
static losowa_wartosc[MAX_WIELKOSC_NAZWY];
num_to_str(wartosc_perku_gracza[lp][id], losowa_wartosc, 14);
ArrayGetString(opisy_perkow, perk_gracza[lp][id], g_buffer, MAX_WIELKOSC_OPISU)
replace_all(g_buffer, charsmax(g_buffer), "LW", losowa_wartosc);
ArrayGetString(nazwy_perkow, perk_gracza[lp][id], losowa_wartosc, MAX_WIELKOSC_NAZWY)
client_print_color(id, print_team_red, "%s PERK: %s", prefix, losowa_wartosc);
client_print_color(id, print_team_red, "%s OPIS: %s", prefix, g_buffer);
}
public OpisKlasy_Frakcje(id)
{
static menu, i;
menu = menu_create("\r===| \wWybierz frakcje: \r|===", "OpisKlasyFrakcje_Handle");
for(i = 0; i < sizeArray_typ_frakcji; i++)
{
ArrayGetString(typ_frakcji, i, g_buffer, MAX_WIELKOSC_NAZWY)
if(!equal(g_buffer, ""))
menu_additem(menu, g_buffer)
}
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_display(id, menu);
}
public OpisKlasyFrakcje_Handle(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
static idKlasy[3], iNameFrakcji[MAX_WIELKOSC_NAZWY+1], i, menu2;
menu_item_getinfo(menu, item, i, idKlasy, 1, iNameFrakcji, MAX_WIELKOSC_NAZWY, i)
menu2 = menu_create("\r===| \wWybierz klase: \r|===", "OpisKlasy_Handle");
for(i = 1; i < iloscKlas; i++)
{
ArrayGetString(frakcja_klas, i, g_buffer, MAX_WIELKOSC_NAZWY)
if(equali(iNameFrakcji, g_buffer))
{
num_to_str(i, idKlasy, charsmax(idKlasy));
ArrayGetString(nazwy_klas, i, g_buffer, MAX_WIELKOSC_NAZWY)
menu_additem(menu2, g_buffer, idKlasy);
}
}
menu_setprop(menu2, MPROP_EXITNAME, "Wstecz");
menu_setprop(menu2, MPROP_BACKNAME, "Poprzednie");
menu_setprop(menu2, MPROP_NEXTNAME, "Nastepne");
menu_display(id, menu2);
menu_destroy(menu);
}
public OpisKlasy_Handle(id, menu, item)
{
if(item == MENU_EXIT)
{
OpisKlasy_Frakcje(id)
menu_destroy(menu);
return;
}
static ZmiennaNaOpisKlasy[MAX_WIELKOSC_OPISU+1], i, nazwa_klasy[MAX_WIELKOSC_NAZWY+1], bronie[320], n;
menu_item_getinfo(menu, item, i, ZmiennaNaOpisKlasy, 2, nazwa_klasy, MAX_WIELKOSC_NAZWY, i)
bronie = "";
menu_display(id, menu, item/7)
item = str_to_num(ZmiennaNaOpisKlasy);
for(i = 1, n = 1; i <= CSW_P90; i++)
{
if((1<<i) & ArrayGetCell(bronie_klasy, item))
{
if(n > 1)
add(bronie, charsmax(bronie), ", ");
add(bronie, charsmax(bronie), Nazwy_broni[i]);
n++;
}
}
replace_all(bronie, charsmax(bronie), "weapon_", "");
ArrayGetString(opisy_klas, item, ZmiennaNaOpisKlasy, charsmax(ZmiennaNaOpisKlasy))
formatex(g_buffer, charsmax(g_buffer), "<body bgcolor=#000><font color=#33CCFF><font size=^"5^"><font face=^"Verdana^"><center>Opis: %s</center><br><br>Bronie: %s<br>Opis: %s", nazwa_klasy, bronie, ZmiennaNaOpisKlasy)
show_motd(id, g_buffer, "Opis klasy");
}
public WybierzKlase(id)
{
static menu, i;
menu = menu_create("\r===| \wWybierz frakcje: \r|===", "WybierzKlase_Frakcje");
for(i = 0; i < sizeArray_typ_frakcji; i++)
{
ArrayGetString(typ_frakcji, i, g_buffer, MAX_WIELKOSC_NAZWY)
if(!equal(g_buffer, ""))
menu_additem(menu, g_buffer)
}
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_display(id, menu);
return PLUGIN_HANDLED;
}
public WybierzKlase_Frakcje(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
static iNameFrakcji[MAX_WIELKOSC_NAZWY+1], i, menu2, klasa[MAX_WIELKOSC_NAZWY+20];
menu_item_getinfo(menu, item, i, klasa, 1, iNameFrakcji, MAX_WIELKOSC_NAZWY, i)
menu2 = menu_create("\r===| \wWybierz klase: \r|===", "WybierzKlase_Handle");
ZapiszDane(id);
for(i = 1; i < iloscKlas; i++)
{
ArrayGetString(frakcja_klas, i, g_buffer, MAX_WIELKOSC_NAZWY)
if(equali(iNameFrakcji, g_buffer))
{
ArrayGetString(nazwy_klas, i, g_buffer, MAX_WIELKOSC_NAZWY)
formatex(klasa, charsmax(klasa), "\w%s \r| \y%i \r|", g_buffer, WczytajPoziom(id));
num_to_str(i, g_buffer, 3);
menu_additem(menu2, klasa, g_buffer);
}
}
ArrayGetString(nazwy_klas, klasa_gracza[id], g_buffer, MAX_WIELKOSC_NAZWY)
WczytajDane(id);
menu_setprop(menu2, MPROP_EXITNAME, "Wroc");
menu_setprop(menu2, MPROP_BACKNAME, "Poprzednie");
menu_setprop(menu2, MPROP_NEXTNAME, "Nastepne");
menu_display(id, menu2);
menu_destroy(menu);
}
public WybierzKlase_Handle(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");
if(item == MENU_EXIT)
{
WybierzKlase(id)
menu_destroy(menu);
return;
}
static data[3];
menu_item_getinfo(menu, item, item, data, 2, _, _, item)
item = str_to_num(data);
if(item == klasa_gracza[id] && !nowa_klasa_gracza[id]) return;
nowa_klasa_gracza[id] = item;
if(klasa_gracza[id])
client_print_color(id, print_team_red, "%s Klasa zostanie zmieniona w nastepnej rundzie", prefix)
else
{
UstawNowaKlase(id);
DajBronie(id);
ZastosujAtrybuty(id);
fm_set_user_maxspeed(id, szybkosc_gracza[id])
}
menu_destroy(menu);
}
public PrzydzielPunkty(id, strona)
{
static temp[80], temp2[30], menu, mcb;
formatex(temp, charsmax(temp), "\r===| \wStaty | \y(%i)\w: \r|===", g_statystyki[id][PUNKTY]);
menu = menu_create(temp, "PrzydzielPunkty_Handler");
mcb = menu_makecallback("PrzydzielPunkty_cb")
formatex(temp2, charsmax(temp2), "Po ile dodawac?: \r%d", co_ile[szybkosc_rozdania[id]]);
menu_additem(menu, temp2);
formatex(temp, charsmax(temp), "Inteligencja: \r%i/%i \w(+%i) \y|Zwieksza moc perkow i klas", g_statystyki[id][INTELIGENCJA], LIMIT_INTELIGENCJI, PobierzInteligencje(id, 0, 1, 1));
menu_additem(menu, temp, "", 0, mcb);
formatex(temp, charsmax(temp), "Zdrowie: \r%i/%i \y|+%i HP", g_statystyki[id][ZDROWIE], LIMIT_ZDROWIA, PobierzZdrowie(id, 1, 1, 1));
menu_additem(menu, temp, "", 0, mcb);
g_buffer[666] = PobierzWytrzymalosc(id, 1, 1, 1)*25
formatex(temp, charsmax(temp), "Wytrzymalosc: \r%i/%i \w(+%i) \y|Otrzymujesz o %d.%02d%% mniej dmg", g_statystyki[id][WYTRZYMALOSC], LIMIT_WYTRZYMALOSCI, PobierzWytrzymalosc(id, 0, 1, 1), g_buffer[666]/100, g_buffer[666]%100);
menu_additem(menu, temp, "", 0, mcb);
g_buffer[666] = PobierzKondycje(id, 1, 1, 1)*130
formatex(temp, charsmax(temp), "Kondycja: \r%i/%i \w(+%i) \y|Zwieksza szybkosc o %d.%02d%%", g_statystyki[id][KONDYCJA], LIMIT_KONDYCJI, PobierzKondycje(id, 0, 1, 1), g_buffer[666]/100, g_buffer[666]%100);
menu_additem(menu, temp, "", 0, mcb);
g_buffer[666] = g_statystyki[id][OBRAZENIA]*50
formatex(temp, charsmax(temp), "Obrazenia: \r%i/%i \y|%d.%02d%% wieksze dmg", g_statystyki[id][OBRAZENIA], LIMIT_OBRAZEN, g_buffer[666]/100, g_buffer[666]%100);
menu_additem(menu, temp, "", 0, mcb);
formatex(temp, charsmax(temp), "Exp: \r%i/%i \y|+%i exp za frag", g_statystyki[id][EXP], LIMIT_EXPA, g_statystyki[id][EXP]*2);
menu_additem(menu, temp, "", 0, mcb);
menu_additem(menu, temp2);
formatex(temp, charsmax(temp), "Kevlar: \r%i/%i \y|+%i kamizelki", g_statystyki[id][KEVLAR], LIMIT_KEVLARU, g_statystyki[id][KEVLAR]);
menu_additem(menu, temp, "", 0, mcb);
formatex(temp, charsmax(temp), "Ekonomia: \r%i/%i \y|+%i$ za frag", g_statystyki[id][EKONOMIA], LIMIT_EKONOMII, g_statystyki[id][EKONOMIA]*14);
menu_additem(menu, temp, "", 0, mcb);
formatex(temp, charsmax(temp), "Reload: \r%i/%i \y|%i%% szybszy reload", g_statystyki[id][RELOAD], LIMIT_RELOADU, g_statystyki[id][RELOAD]);
menu_additem(menu, temp, "", 0, mcb);
formatex(temp, charsmax(temp), "Kamuflaz: \r%i/%i \y|Masz %i%% widocznosci", g_statystyki[id][KAMUFLAZ], LIMIT_KAMUFLAZU, (255-(g_statystyki[id][KAMUFLAZ]*3))*100/255);
menu_additem(menu, temp, "", 0, mcb);
g_buffer[666] = g_statystyki[id][UNIK]*50
formatex(temp, charsmax(temp), "Unik \r%i/%i \y|%d.%02d%% na unik obrazen", g_statystyki[id][UNIK], LIMIT_UNIKU, g_buffer[666]/100, g_buffer[666]%100)
menu_additem(menu, temp, "", 0, mcb);
g_buffer[666] = g_statystyki[id][KRYTYK]*40
formatex(temp, charsmax(temp), "Krytyk \r%i/%i \y|%d.%02d%% na potrojne obrazenia", g_statystyki[id][KRYTYK], LIMIT_KRYTYKU, g_buffer[666]/100, g_buffer[666]%100)
menu_additem(menu, temp, "", 0, mcb);
menu_setprop(menu, MPROP_PERPAGE, 7)
menu_setprop(menu, MPROP_EXIT, 1);
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednie");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepne");
menu_display(id, menu, strona);
}
public PrzydzielPunkty_cb(id, menu, item)
{
if(!g_statystyki[id][PUNKTY]) return ITEM_DISABLED
switch(item)
{
case 1:
if(g_statystyki[id][INTELIGENCJA] >= LIMIT_INTELIGENCJI) return ITEM_DISABLED
case 2:
if(g_statystyki[id][ZDROWIE] >= LIMIT_ZDROWIA) return ITEM_DISABLED
case 3:
if(g_statystyki[id][WYTRZYMALOSC] >= LIMIT_WYTRZYMALOSCI) return ITEM_DISABLED
case 4:
if(g_statystyki[id][KONDYCJA] >= LIMIT_KONDYCJI) return ITEM_DISABLED
case 5:
if(g_statystyki[id][OBRAZENIA] >= LIMIT_OBRAZEN) return ITEM_DISABLED
case 6:
if(g_statystyki[id][EXP] >= LIMIT_EXPA) return ITEM_DISABLED
case 8:
if(g_statystyki[id][KEVLAR] >= LIMIT_KEVLARU) return ITEM_DISABLED
case 9:
if(g_statystyki[id][EKONOMIA] >= LIMIT_EKONOMII) return ITEM_DISABLED
case 10:
if(g_statystyki[id][RELOAD] >= LIMIT_RELOADU) return ITEM_DISABLED
case 11:
if(g_statystyki[id][KAMUFLAZ] >= LIMIT_KAMUFLAZU) return ITEM_DISABLED
case 12:
if(g_statystyki[id][UNIK] >= LIMIT_UNIKU) return ITEM_DISABLED
case 13:
if(g_statystyki[id][KRYTYK] >= LIMIT_KRYTYKU) return ITEM_DISABLED
}
return ITEM_ENABLED
}
public PrzydzielPunkty_Handler(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
static ilosc;
ilosc = (co_ile[szybkosc_rozdania[id]] > g_statystyki[id][PUNKTY]) ? g_statystyki[id][PUNKTY] : co_ile[szybkosc_rozdania[id]]
switch(item)
{
case 0, 7:
{
if(szybkosc_rozdania[id] < charsmax(co_ile))
szybkosc_rozdania[id]++;
else
szybkosc_rozdania[id] = 0;
PrzydzielPunkty(id, item/7)
}
case 1:
{
if(ilosc > LIMIT_INTELIGENCJI - g_statystyki[id][INTELIGENCJA])
ilosc = LIMIT_INTELIGENCJI - g_statystyki[id][INTELIGENCJA];
g_statystyki[id][INTELIGENCJA]+=ilosc;
g_statystyki[id][PUNKTY]-=ilosc;
}
case 2:
{
if(ilosc > LIMIT_ZDROWIA - g_statystyki[id][ZDROWIE])
ilosc = LIMIT_ZDROWIA - g_statystyki[id][ZDROWIE];
g_statystyki[id][ZDROWIE]+=ilosc;
g_statystyki[id][PUNKTY]-=ilosc;
}
case 3:
{
if(ilosc > LIMIT_WYTRZYMALOSCI - g_statystyki[id][WYTRZYMALOSC])
ilosc = LIMIT_WYTRZYMALOSCI - g_statystyki[id][WYTRZYMALOSC];
g_statystyki[id][WYTRZYMALOSC]+=ilosc;
g_statystyki[id][PUNKTY]-=ilosc;
}
case 4:
{
if(ilosc > LIMIT_KONDYCJI - g_statystyki[id][KONDYCJA])
ilosc = LIMIT_KONDYCJI - g_statystyki[id][KONDYCJA];
g_statystyki[id][KONDYCJA]+=ilosc;
g_statystyki[id][PUNKTY]-=ilosc;
}
case 5:
{
if(ilosc > LIMIT_OBRAZEN - g_statystyki[id][OBRAZENIA])
ilosc = LIMIT_OBRAZEN - g_statystyki[id][OBRAZENIA];
g_statystyki[id][OBRAZENIA]+=ilosc;
g_statystyki[id][PUNKTY]-=ilosc;
}
case 6:
{
if(ilosc > LIMIT_EXPA - g_statystyki[id][EXP])
ilosc = LIMIT_EXPA - g_statystyki[id][EXP];
g_statystyki[id][EXP]+=ilosc;
g_statystyki[id][PUNKTY]-=ilosc;
}
case 8:
{
if(ilosc > LIMIT_KEVLARU - g_statystyki[id][KEVLAR])
ilosc = LIMIT_KEVLARU - g_statystyki[id][KEVLAR];
g_statystyki[id][KEVLAR]+=ilosc;
g_statystyki[id][PUNKTY]-=ilosc;
}
case 9:
{
if(ilosc > LIMIT_EKONOMII - g_statystyki[id][EKONOMIA])
ilosc = LIMIT_EKONOMII - g_statystyki[id][EKONOMIA];
g_statystyki[id][EKONOMIA]+=ilosc;
g_statystyki[id][PUNKTY]-=ilosc;
}
case 10:
{
if(ilosc > LIMIT_RELOADU - g_statystyki[id][RELOAD])
ilosc = LIMIT_RELOADU - g_statystyki[id][RELOAD];
g_statystyki[id][RELOAD]+=ilosc;
g_statystyki[id][PUNKTY]-=ilosc;
}
case 11:
{
if(ilosc > LIMIT_KAMUFLAZU - g_statystyki[id][KAMUFLAZ])
ilosc = LIMIT_KAMUFLAZU - g_statystyki[id][KAMUFLAZ];
g_statystyki[id][KAMUFLAZ]+=ilosc;
g_statystyki[id][PUNKTY]-=ilosc;
}
case 12:
{
if(ilosc > LIMIT_UNIKU - g_statystyki[id][UNIK])
ilosc = LIMIT_UNIKU - g_statystyki[id][UNIK];
g_statystyki[id][UNIK]+=ilosc;
g_statystyki[id][PUNKTY]-=ilosc;
}
case 13:
{
if(ilosc > LIMIT_KRYTYKU - g_statystyki[id][KRYTYK])
ilosc = LIMIT_KRYTYKU - g_statystyki[id][KRYTYK];
g_statystyki[id][KRYTYK]+=ilosc;
g_statystyki[id][PUNKTY]-=ilosc;
}
}
if(g_statystyki[id][PUNKTY] > 0)
PrzydzielPunkty(id, item/7)
}
public KomendaResetujPunkty(id)
{
client_cmd(id, "spk QTM_CodMod/select");
ResetujPunkty(id);
}
ResetujPunkty(id)
{
static i;
for(i = 1; i < typ_statystyk; i++)
g_statystyki[id][i] = 0;
if((g_statystyki[id][PUNKTY] = (poziom_gracza[id]-1)*2))
PrzydzielPunkty(id, 0);
}
public EmitSound(id, iChannel, szSound[])
{
if(!is_user_alive(id)) return FMRES_IGNORED;
if(equal(szSound, "common/wpn_denyselect.wav"))
{
static forward_handle
forward_handle = CreateOneForward(ArrayGetCell(pluginy_klas, klasa_gracza[id]), "cod_class_skill_used", FP_CELL);
ExecuteForward(forward_handle, id, id);
DestroyForward(forward_handle);
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public UzyjPerku(id)
return UzyjPerki(id, 0);
public UzyjPerku2(id)
return UzyjPerki(id, 1);
public UzyjPerki(id, lp)
{
if(!is_user_alive(id)) return PLUGIN_HANDLED;
static forward_handle
forward_handle = CreateOneForward(ArrayGetCell(pluginy_perkow, perk_gracza[lp][id]), "cod_perk_used", FP_CELL)
ExecuteForward(forward_handle, id, id);
DestroyForward(forward_handle);
return PLUGIN_HANDLED;
}
ZapiszDane(id)
{
if(!klasa_gracza[id] || doswiadczenie_gracza[id] < 1) return;
static vaultkey[128];
ArrayGetString(nazwy_klas, klasa_gracza[id], g_buffer, MAX_WIELKOSC_NAZWY)
#if defined ZAPIS_NA_STEAM
static sID[35]
get_user_authid(id, sID, charsmax(sID));
formatex(vaultkey, charsmax(vaultkey), "%s-%s", sID, g_buffer);
#else
formatex(vaultkey, charsmax(vaultkey), "%s-%s", nazwa_gracza[id], g_buffer);
#endif
formatex(g_buffer, 128, "%i %i %i %i %i %i %i %i %i %i %i %i %i", doswiadczenie_gracza[id], g_statystyki[id][INTELIGENCJA], g_statystyki[id][ZDROWIE], g_statystyki[id][WYTRZYMALOSC], g_statystyki[id][KONDYCJA], g_statystyki[id][OBRAZENIA], g_statystyki[id][EXP], g_statystyki[id][KEVLAR], g_statystyki[id][EKONOMIA], g_statystyki[id][RELOAD], g_statystyki[id][KAMUFLAZ], g_statystyki[id][UNIK], g_statystyki[id][KRYTYK]);
nvault_set(vault, vaultkey, g_buffer);
}
WczytajPoziom(id)
{
static vaultkey[128], poziom, xp
#if defined ZAPIS_NA_STEAM
static sID[35]
get_user_authid(id, sID, charsmax(sID));
formatex(vaultkey, charsmax(vaultkey), "%s-%s", sID, g_buffer);
#else
formatex(vaultkey, charsmax(vaultkey), "%s-%s", nazwa_gracza[id], g_buffer);
#endif
poziom = 1;
if((xp = nvault_get(vault, vaultkey)))
{
while(xp >= PobierzDoswiadczeniePoziomu(poziom) && poziom < limit_poziomu)
poziom++;
}
return poziom;
}
WczytajDane(id)
{
static vaultkey[128], vaultdata[128]
#if defined ZAPIS_NA_STEAM
static sID[35]
get_user_authid(id, sID, charsmax(sID));
formatex(vaultkey, charsmax(vaultkey), "%s-%s", sID, g_buffer);
#else
formatex(vaultkey, charsmax(vaultkey), "%s-%s", nazwa_gracza[id], g_buffer);
#endif
poziom_gracza[id] = 1;
if(nvault_get(vault, vaultkey, vaultdata, 127))
{
static danegracza[13][21];
parse(vaultdata, danegracza[0], 20, danegracza[1], 20, danegracza[2], 20, danegracza[3], 20, danegracza[4], 20, danegracza[5], 20, danegracza[6], 20, danegracza[7], 20, danegracza[8], 20, danegracza[9], 20, danegracza[10], 20, danegracza[11], 20, danegracza[12], 20);
doswiadczenie_gracza[id] = str_to_num(danegracza[0]);
while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu)
poziom_gracza[id]++;
g_statystyki[id][INTELIGENCJA] = str_to_num(danegracza[1]);
g_statystyki[id][ZDROWIE] = str_to_num(danegracza[2]);
g_statystyki[id][WYTRZYMALOSC] = str_to_num(danegracza[3]);
g_statystyki[id][KONDYCJA] = str_to_num(danegracza[4]);
g_statystyki[id][OBRAZENIA] = str_to_num(danegracza[5]);
g_statystyki[id][EXP] = str_to_num(danegracza[6]);
g_statystyki[id][KEVLAR] = str_to_num(danegracza[7]);
g_statystyki[id][EKONOMIA] = str_to_num(danegracza[8]);
g_statystyki[id][RELOAD] = str_to_num(danegracza[9]);
g_statystyki[id][KAMUFLAZ] = str_to_num(danegracza[10]);
g_statystyki[id][UNIK] = str_to_num(danegracza[11]);
g_statystyki[id][KRYTYK] = str_to_num(danegracza[12]);
g_statystyki[id][PUNKTY] = (poziom_gracza[id]-1)*2-g_statystyki[id][INTELIGENCJA]-g_statystyki[id][ZDROWIE]-g_statystyki[id][WYTRZYMALOSC]-g_statystyki[id][KONDYCJA]-g_statystyki[id][OBRAZENIA]-g_statystyki[id][EXP]-g_statystyki[id][KEVLAR]-g_statystyki[id][EKONOMIA]-g_statystyki[id][RELOAD]-g_statystyki[id][KAMUFLAZ]-g_statystyki[id][UNIK]-g_statystyki[id][KRYTYK];
nvault_touch(vault, vaultkey);
}
else
{
doswiadczenie_gracza[id] = 0;
static i;
for(i = 1; i < typ_statystyk; i++)
g_statystyki[id][i] = 0;
}
}
public SprzedajPerk(id)
SprzedajPerka(id, 0)
public SprzedajPerk2(id)
SprzedajPerka(id, 1)
public SprzedajPerka(id, lp)
{
if(perk_gracza[lp][id])
{
static cena;
cena = random_num(1, 1500);
client_print_color(id, print_team_red, "%s Sprzedales perk za %i$!", prefix, cena)
cs_set_user_money(id, min(16000, cs_get_user_money(id) + cena));
UstawPerk(id, 0, 0, 0, lp);
}
else
client_print_color(id, print_team_red, "%s Nie masz perku na %i slocie", prefix, lp + 1)
return PLUGIN_HANDLED;
}
SprawdzPoziom(id)
{
static bool:zdobyl_poziom, bool:stracil_poziom
zdobyl_poziom = false;
stracil_poziom = false;
while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu)
{
poziom_gracza[id]++;
zdobyl_poziom = true;
}
while(doswiadczenie_gracza[id] < PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1) && poziom_gracza[id] > 1)
{
poziom_gracza[id]--;
stracil_poziom = true;
}
if(stracil_poziom)
ResetujPunkty(id);
else if(zdobyl_poziom)
{
g_statystyki[id][PUNKTY] = (poziom_gracza[id]-1)*2-g_statystyki[id][INTELIGENCJA]-g_statystyki[id][ZDROWIE]-g_statystyki[id][WYTRZYMALOSC]-g_statystyki[id][KONDYCJA]-g_statystyki[id][OBRAZENIA]-g_statystyki[id][EXP]-g_statystyki[id][KEVLAR]-g_statystyki[id][EKONOMIA]-g_statystyki[id][RELOAD]-g_statystyki[id][KAMUFLAZ]-g_statystyki[id][UNIK]-g_statystyki[id][KRYTYK];
client_cmd(id, "spk QTM_CodMod/levelup");
}
}
public cod_klan_changed(id, const nazwaKlanu[])
formatex(klan_gracza[id], 32, nazwaKlanu)
public PokazInformacje(id)
{
id -= ZADANIE_POKAZ_INFORMACJE;
static Time[7], klasa[MAX_WIELKOSC_NAZWY+1], perk[MAX_WIELKOSC_NAZWY+1], perk2[MAX_WIELKOSC_NAZWY+1], target, Float:fProcent;
get_time("%H:%M", Time, 6)
if(!is_user_alive(id))
{
target = pev(id, pev_iuser2);
if(!target) return;
ArrayGetString(nazwy_klas, klasa_gracza[target], klasa, MAX_WIELKOSC_NAZWY)
ArrayGetString(nazwy_perkow, perk_gracza[0][target], perk, MAX_WIELKOSC_NAZWY)
ArrayGetString(nazwy_perkow, perk_gracza[1][target], perk2, MAX_WIELKOSC_NAZWY)
set_hudmessage(255, 255, 255, 0.01, 0.19, 0, _, 0.7, 0.4, 1.1, 2)
#if defined WYTRZYMALOSC_PERKU
ShowSyncHudMsg(id, SyncHudObj, "%s^n%s %i lvl^nPerk I [%i/%i]: %s^nPerk II [%i/%i]: %s^n%s | Killstreak: %i | Status: Gracz %s^nKlan: <%s>", forum, klasa, poziom_gracza[target], wytrzymalosc_perku[0][target], MAX_WYTRZYMALOSC_PERKU, perk, wytrzymalosc_perku[1][target], MAX_WYTRZYMALOSC_PERKU, perk2, Time, killstreak_gracza[target], szStatus[g_status[target]], klan_gracza[target]);
#else
ShowSyncHudMsg(id, SyncHudObj, "%s^n%s %i lvl^nPerk I : %s^nPerk II : %s^n%s | Killstreak: %i | Status: Gracz %s^nKlan: <%s>", forum, klasa, poziom_gracza[target], perk, perk2, Time, killstreak_gracza[target], szStatus[g_status[target]], klan_gracza[target]);
#endif
return;
}
if(!doswiadczenie_gracza[id])
fProcent = 0.0;
else if(poziom_gracza[id] >= limit_poziomu)
fProcent = 100.0;
else
{
target = PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1);
fProcent = 100.0 * (doswiadczenie_gracza[id] - target) / (PobierzDoswiadczeniePoziomu(poziom_gracza[id]) - target);
}
ArrayGetString(nazwy_klas, klasa_gracza[id], klasa, MAX_WIELKOSC_NAZWY)
ArrayGetString(nazwy_perkow, perk_gracza[0][id], perk, MAX_WIELKOSC_NAZWY)
ArrayGetString(nazwy_perkow, perk_gracza[1][id], perk2, MAX_WIELKOSC_NAZWY)
set_hudmessage(90, 255, 50, -1.0, 0.0, 0, _, 0.7, 0.4, 1.1, 2);
#if defined WYTRZYMALOSC_PERKU
ShowSyncHudMsg(id, SyncHudObj, "%s^n%s %i lvl | XP : %0.2f%%^nPerk I [%i/%i]: %s^nPerk II [%i/%i]: %s^n%s | KS: %i^nHP: %i | Klan: <%s>", forum, klasa, poziom_gracza[id], fProcent, wytrzymalosc_perku[0][id], MAX_WYTRZYMALOSC_PERKU, perk, wytrzymalosc_perku[1][id], MAX_WYTRZYMALOSC_PERKU, perk2, Time, killstreak_gracza[id], get_user_health(id), klan_gracza[id]);
#else
ShowSyncHudMsg(id, SyncHudObj, "%s^n%s %i lvl | XP : %0.2f%%^nPerk I: %s^nPerk II: %s^n%s | KS: %i^nHP: %i | Klan: <%s>", forum, klasa, poziom_gracza[id], fProcent, perk, perk2, Time, killstreak_gracza[id], get_user_health(id), klan_gracza[id]);
#endif
}
public Pomoc(id) show_motd(id, "addons/amxmodx/data/pomoc.txt", "Pomoc")
public ShowMotdSP(id) show_motd(id, "addons/amxmodx/data/spremium.txt", "Informacje o Super Premium");
public ShowMotdP(id) show_motd(id, "addons/amxmodx/data/premium.txt", "Informacje o Premium");
public DotykBroni(weapon, id)
{
if(!is_user_connected(id) || pev(weapon, pev_owner) == id) return HAM_IGNORED;
if((1<<cs_get_weapon_id(weapon)) & (ArrayGetCell(bronie_klasy, klasa_gracza[id]) | bonusowe_bronie_gracza[id] | bronie_dozwolone)) return HAM_IGNORED;
static model[19]
pev(weapon, pev_model, model, 18);
if (containi(model, "w_backpack") != -1) return HAM_IGNORED;
return HAM_SUPERCEDE;
}
public UstawPerk(id, perk, wartosc, pokaz_info, lp)
{
if(iloscPerkow == 1) return;
static obroty[MAX_PLAYERS+1], ret, forward_handle, maxWartosc, minWartosc;
if(obroty[id]++ >= 5)
{
ExecuteForward(perk_zmieniony, ret, id, 0);
forward_handle = CreateOneForward(ArrayGetCell(pluginy_perkow, perk_gracza[lp][id]), "cod_perk_disabled", FP_CELL);
ExecuteForward(forward_handle, ret, id);
DestroyForward(forward_handle);
perk_gracza[lp][id] = 0;
wartosc_perku_gracza[lp][id] = 0;
#if defined WYTRZYMALOSC_PERKU
wytrzymalosc_perku[lp][id] = 0
#endif
obroty[id] = 0;
return;
}
if(perk == -1)
perk = random_num(1, iloscPerkow-1)
if(perk == perk_gracza[!lp][id] && perk)
{
UstawPerk(id, -1, -1, 1, lp);
return;
}
maxWartosc = ArrayGetCell(max_wartosci_perkow, perk), minWartosc = ArrayGetCell(min_wartosci_perkow, perk)
if(wartosc == -1 || minWartosc < wartosc || wartosc > maxWartosc)
wartosc = random_num(minWartosc, maxWartosc)
ExecuteForward(perk_zmieniony, ret, id, perk);
if(ret == COD_STOP)
{
UstawPerk(id, -1, -1, 1, lp);
return;
}
forward_handle = CreateOneForward(ArrayGetCell(pluginy_perkow, perk_gracza[lp][id]), "cod_perk_disabled", FP_CELL);
ExecuteForward(forward_handle, ret, id);
DestroyForward(forward_handle);
forward_handle = CreateOneForward(ArrayGetCell(pluginy_perkow, perk), "cod_perk_enabled", FP_CELL, FP_CELL);
ExecuteForward(forward_handle, ret, id, wartosc);
DestroyForward(forward_handle);
if(ret == COD_STOP)
{
UstawPerk(id, -1, -1, 1, lp);
return;
}
#if defined WYTRZYMALOSC_PERKU
wytrzymalosc_perku[lp][id] = perk ? MAX_WYTRZYMALOSC_PERKU : 0
#endif
perk_gracza[lp][id] = perk;
wartosc_perku_gracza[lp][id] = wartosc;
obroty[id] = 0;
if(pokaz_info && perk_gracza[lp][id])
{
ArrayGetString(nazwy_perkow, perk_gracza[lp][id], g_buffer, MAX_WIELKOSC_NAZWY)
client_print_color(id, print_team_red, "%s Zdobyles %s", prefix, g_buffer)
}
}
public handleSayText()
{
static szTmp[192], szTmp2[192], szPrefix[32], id;
id = get_msg_arg_int(1);
if(!g_status[id]) return;
get_msg_arg_string(2, szTmp, charsmax(szTmp));
if(g_status[id] == STATUS_PREMIUM)
szPrefix = szPrefixPremium
else if(g_status[id] > STATUS_PREMIUM)
szPrefix = szPrefixSPremium
if(!equal(szTmp,"#Cstrike_Chat_All"))
formatex(szTmp2, charsmax(szTmp2), "^4%s %s", szPrefix, szTmp)
else
{
get_msg_arg_string(4, szTmp, charsmax(szTmp));
set_msg_arg_string(4, "");
formatex(szTmp2, charsmax(szTmp2), "^4%s^3 %s^1 : %s", szPrefix, nazwa_gracza[id], szTmp)
}
set_msg_arg_string(2, szTmp2);
}
public VipStatus()
{
static id;
id = get_msg_arg_int(1);
if(is_user_alive(id) && g_status[id])
set_msg_arg_int(2, ARG_BYTE, get_msg_arg_int(2) | 4);
}
public UstawDoswiadczenie(id, wartosc)
{
doswiadczenie_gracza[id] = wartosc;
SprawdzPoziom(id);
}
public DodajDoswiadczenie(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 DajBron(id, bron)
{
bonusowe_bronie_gracza[id] |= (1<<bron);
fm_give_item(id, Nazwy_broni[bron]);
cs_set_user_bpammo(id, bron, maxAmmo[bron]);
}
public WezBron(id, bron)
{
bonusowe_bronie_gracza[id] &= ~(1<<bron);
if((1<<bron) & (bronie_dozwolone | ArrayGetCell(bronie_klasy, klasa_gracza[id]))) return;
ham_strip_weapon(id, bron)
}
public UsunRender(plugin)
{
static id;
id = get_param(1)
if(!is_user_connected(id)) return;
static i, size;
size = ArraySize(gRender[id])
for(i = 1; i < size; i++)
{
if(ArrayGetCell(gRenderPlugin[id], i) == plugin)
{
ArrayDeleteItem(gRender[id], i)
ArrayDeleteItem(gRenderPlugin[id], i)
break;
}
}
ZastosujRender(id)
}
public UstawRendering(plugin)
{
static id;
id = get_param(1)
if(!is_user_connected(id)) return;
ArrayPushCell(gRender[id], get_param(2))
ArrayPushCell(gRenderPlugin[id], plugin)
ZastosujRender(id)
}
public ZastosujRender(id)
{
static i, min, size, cell;
min = 255
size = ArraySize(gRender[id])
for(i = 0; i < size; i++)
{
cell = ArrayGetCell(gRender[id], i)
if(min > cell)
min = cell
}
fm_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, min);
}
public DodajBonusoweZdrowie(id, wartosc)
bonusowe_zdrowie_gracza[id] += wartosc;
public DodajBonusowaInteligencje(id, wartosc)
bonusowa_inteligencja_gracza[id] += wartosc;
public DodajBonusowaKondycje(id, wartosc)
{
bonusowa_kondycja_gracza[id] += wartosc;
szybkosc_gracza[id] = STANDARDOWA_SZYBKOSC+PobierzKondycje(id, 1, 1, 1)*1.3;
}
public DodajBonusowaWytrzymalosc(id, wartosc)
bonusowa_wytrzymalosc_gracza[id] += wartosc;
public PobierzPerk()
{
new id = get_param(1)
new lp = get_param(3)
set_param_byref(2, wartosc_perku_gracza[lp][id])
return perk_gracza[lp][id];
}
public PobierzNazwePerku(perk, Return[], len)
{
if(perk < iloscPerkow)
{
param_convert(2);
ArrayGetString(nazwy_perkow, perk, Return, len)
}
}
public PobierzOpisPerku(perk, Return[], len)
{
if(perk < iloscPerkow)
{
param_convert(2);
ArrayGetString(opisy_perkow, perk, Return, len)
}
}
public PobierzPerkPrzezNazwe(const nazwa[])
{
static i;
param_convert(1);
for(i = 1; i < iloscPerkow; i++)
{
ArrayGetString(nazwy_perkow, i, g_buffer, MAX_WIELKOSC_NAZWY)
if(equal(nazwa, g_buffer))
return i;
}
return 0;
}
public PobierzDoswiadczeniePoziomu(poziom)
return power(poziom, 2) * get_pcvar_num(cvar_proporcja_poziomu);
public PobierzDoswiadczenie(id)
return doswiadczenie_gracza[id];
public PobierzPoziom(id)
return poziom_gracza[id];
public PobierzZdrowie(id, zdrowie_zdobyte, zdrowie_klasy, zdrowie_bonusowe)
{
static zdrowie;
zdrowie = 0
if(zdrowie_zdobyte)
zdrowie += g_statystyki[id][ZDROWIE];
if(zdrowie_bonusowe)
zdrowie += bonusowe_zdrowie_gracza[id];
if(zdrowie_klasy)
zdrowie += ArrayGetCell(zdrowie_klas, klasa_gracza[id]);
return zdrowie;
}
public PobierzInteligencje(id, inteligencja_zdobyta, inteligencja_klasy, inteligencja_bonusowa)
{
static inteligencja;
inteligencja = 0
if(inteligencja_zdobyta)
inteligencja += g_statystyki[id][INTELIGENCJA];
if(inteligencja_bonusowa)
inteligencja += bonusowa_inteligencja_gracza[id];
if(inteligencja_klasy)
inteligencja += ArrayGetCell(inteligencja_klas, klasa_gracza[id]);
return inteligencja;
}
public PobierzKondycje(id, kondycja_zdobyta, kondycja_klasy, kondycja_bonusowa)
{
static kondycja;
kondycja = 0
if(kondycja_zdobyta)
kondycja += g_statystyki[id][KONDYCJA];
if(kondycja_bonusowa)
kondycja += bonusowa_kondycja_gracza[id];
if(kondycja_klasy)
kondycja += ArrayGetCell(kondycja_klas, klasa_gracza[id])
return kondycja;
}
public PobierzWytrzymalosc(id, wytrzymalosc_zdobyta, wytrzymalosc_klasy, wytrzymalosc_bonusowa)
{
static wytrzymalosc;
wytrzymalosc = 0
if(wytrzymalosc_zdobyta)
wytrzymalosc += g_statystyki[id][WYTRZYMALOSC];
if(wytrzymalosc_bonusowa)
wytrzymalosc += bonusowa_wytrzymalosc_gracza[id];
if(wytrzymalosc_klasy)
wytrzymalosc += ArrayGetCell(wytrzymalosc_klas, klasa_gracza[id])
return wytrzymalosc;
}
public PobierzKlase(id)
return klasa_gracza[id];
public PobierzNazweKlasy(klasa, Return[], len)
{
if(klasa < iloscKlas)
{
param_convert(2);
ArrayGetString(nazwy_klas, klasa, Return, len)
}
}
public PobierzOpisKlasy(klasa, Return[], len)
{
if(klasa < iloscKlas)
{
param_convert(2);
ArrayGetString(opisy_klas, klasa, Return, len)
}
}
public PobierzKlasePrzezNazwe(const nazwa[])
{
static i;
param_convert(1);
for(i = 1; i < iloscKlas; i++)
{
ArrayGetString(nazwy_klas, i, g_buffer, MAX_WIELKOSC_NAZWY)
if(equal(nazwa, g_buffer))
return i;
}
return 0;
}
public PobierzStatusGracza(id)
return g_status[id]
public PobierzIloscKlas()
return iloscKlas-1;
public PobierzIloscPerkow()
return iloscPerkow-1;
#if defined WYTRZYMALOSC_PERKU
public PobierzWytrzymaloscPerku(id, lp)
return wytrzymalosc_perku[lp][id];
public UstawWytrzymaloscPerku(id, wartosc, lp)
wytrzymalosc_perku[lp][id] = (wartosc > MAX_WYTRZYMALOSC_PERKU) ? MAX_WYTRZYMALOSC_PERKU : wartosc;
#endif
public PobierzSumeBitowaBonusowychBroni(id)
return bonusowe_bronie_gracza[id]
public FastReload(id, bool:mode)
szybki_reload[id] = mode
public ZadajObrazenia(attacker, victim, Float:dmg, Float:czynnik_inteligencji, byt_uszkadzajacy, damagebits)
ExecuteHam(Ham_TakeDamage, victim, byt_uszkadzajacy, attacker, dmg+(PobierzInteligencje(attacker, 1, 1, 1)*czynnik_inteligencji), damagebits);
public ZarejestrujPerk(plugin, params)
{
if(params != 4) return;
ArrayPushCell(pluginy_perkow, plugin)
get_string(1, g_buffer, MAX_WIELKOSC_NAZWY);
ArrayPushString(nazwy_perkow, g_buffer)
get_string(2, g_buffer, MAX_WIELKOSC_OPISU);
ArrayPushString(opisy_perkow, g_buffer)
ArrayPushCell(min_wartosci_perkow, get_param(3))
ArrayPushCell(max_wartosci_perkow, get_param(4))
}
public ZarejestrujKlase(plugin, params)
{
if(params != 8) return;
ArrayPushCell(pluginy_klas, plugin)
get_string(1, g_buffer, MAX_WIELKOSC_NAZWY);
ArrayPushString(nazwy_klas, g_buffer)
get_string(2, g_buffer, MAX_WIELKOSC_OPISU);
ArrayPushString(opisy_klas, g_buffer)
ArrayPushCell(bronie_klasy, get_param(3))
ArrayPushCell(zdrowie_klas, get_param(4))
ArrayPushCell(kondycja_klas, get_param(5))
ArrayPushCell(inteligencja_klas, get_param(6))
ArrayPushCell(wytrzymalosc_klas, get_param(7))
get_string(8, g_buffer, MAX_WIELKOSC_NAZWY);
ArrayPushString(frakcja_klas, g_buffer)
ArrayPushString(typ_frakcji, g_buffer)
}
public BlokujKomende() return PLUGIN_HANDLED;
public HamSupercede() return HAM_SUPERCEDE;
public ClientKill() return FMRES_SUPERCEDE
public plugin_natives()
{
register_native("cod_set_user_xp", "UstawDoswiadczenie", 1);
register_native("cod_add_user_xp", "DodajDoswiadczenie", 1);
register_native("cod_set_user_class", "UstawKlase", 1);
register_native("cod_set_user_perk", "UstawPerk", 1);
register_native("cod_add_user_bonus_health", "DodajBonusoweZdrowie", 1);
register_native("cod_add_user_bonus_intelligence", "DodajBonusowaInteligencje", 1);
register_native("cod_add_user_bonus_trim", "DodajBonusowaKondycje", 1);
register_native("cod_add_user_bonus_stamina", "DodajBonusowaWytrzymalosc", 1);
register_native("cod_get_user_xp", "PobierzDoswiadczenie", 1);
register_native("cod_get_user_level", "PobierzPoziom", 1);
register_native("cod_get_user_class", "PobierzKlase", 1);
register_native("cod_get_user_perk", "PobierzPerk");
register_native("cod_get_user_health", "PobierzZdrowie", 1);
register_native("cod_get_user_intelligence", "PobierzInteligencje", 1);
register_native("cod_get_user_trim", "PobierzKondycje", 1);
register_native("cod_get_user_stamina", "PobierzWytrzymalosc", 1);
register_native("cod_get_level_xp", "PobierzDoswiadczeniePoziomu", 1);
register_native("cod_get_perkid", "PobierzPerkPrzezNazwe", 1);
register_native("cod_get_perk_name", "PobierzNazwePerku", 1);
register_native("cod_get_perk_desc", "PobierzOpisPerku", 1);
register_native("cod_get_perks_num", "PobierzIloscPerkow", 1);
register_native("cod_get_classid", "PobierzKlasePrzezNazwe", 1);
register_native("cod_get_class_name", "PobierzNazweKlasy", 1);
register_native("cod_get_class_desc", "PobierzOpisKlasy", 1);
register_native("cod_get_classes_num", "PobierzIloscKlas", 1)
register_native("cod_give_weapon", "DajBron", 1);
register_native("cod_take_weapon", "WezBron", 1);
register_native("cod_inflict_damage", "ZadajObrazenia", 1);
register_native("cod_register_perk", "ZarejestrujPerk");
register_native("cod_register_class", "ZarejestrujKlase");
register_native("cod_get_user_status", "PobierzStatusGracza", 1);
#if defined WYTRZYMALOSC_PERKU
register_native("cod_get_perk_durability", "PobierzWytrzymaloscPerku", 1);
register_native("cod_set_perk_durability", "UstawWytrzymaloscPerku", 1);
#endif
register_native("cod_get_bonus_weapons_bitsum", "PobierzSumeBitowaBonusowychBroni", 1)
register_native("cod_user_fast_reload", "FastReload", 1);
register_native("cod_set_user_rendering", "UstawRendering")
register_native("cod_remove_user_rendering", "UsunRender")
register_native("cod_refresh_rendering", "ZastosujRender", 1)
}
get_loguser_index()
{
static name[33]
read_logargv(0, g_buffer, 79)
parse_loguser(g_buffer, name, 32)
return get_user_index(name)
}
Display_Fade(id, r, g, b)
{
message_begin(MSG_ONE_UNRELIABLE, msgScreenFade, {0, 0, 0}, id);
write_short((1<<12) * 2); // Duration of fadeout
write_short((1<<12) * 2); // Hold time of color
write_short(0); // Fade type
write_byte (r); // Red
write_byte (g); // Green
write_byte (b); // Blue
write_byte (90); // Alpha
message_end();
}
public plugin_end()
{
nvault_close(vault)
ArrayDestroy(bronie_klasy)
ArrayDestroy(zdrowie_klas)
ArrayDestroy(kondycja_klas)
ArrayDestroy(inteligencja_klas)
ArrayDestroy(wytrzymalosc_klas)
ArrayDestroy(pluginy_klas)
ArrayDestroy(opisy_klas)
ArrayDestroy(min_wartosci_perkow)
ArrayDestroy(max_wartosci_perkow)
ArrayDestroy(pluginy_perkow)
ArrayDestroy(opisy_perkow)
ArrayDestroy(nazwy_perkow)
ArrayDestroy(frakcja_klas)
ArrayDestroy(nazwy_klas)
ArrayDestroy(typ_frakcji)
}