Код
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <fakemeta>
#include <engine>
#include <hamsandwich>
#include <nvault>
#define PLUGIN "Call of Duty: MW Mod"
#define VERSION "1.0"
#define AUTHOR "QTM_Peyote,johnC,GranTorino"
#define STANDARD_FAST 250.0
#define TASK_SHOW_INFORMATION 672
#define TASK_RAISE 704
#define TASK_TRAINING_SANITARY 736
#define TASK_SHOW_ADVERTISEMENT 768
#define TASK_SET_FAST 832
new SyncHudObj;
new SyncHudObj2;
new SyncHudObj3;
new g_msg_screenfade;
new sprite_white;
new sprite_blast;
new g_vault;
new podkladajacy;
new disarming;
new experience_for_murder;
new experience_for_bomb;
new Clothing_CT[4][]={"sas","gsg9","urban","gign"};
new Clothing_Terro[4][]={"arctic","leet","guerilla","terror"};
new const maxAmmo[31]={0,52,0,90,1,32,1,100,90,1,120,100,100,90,90,90,100,120,30,120,200,32,90,12
0,90,2,35,90,90,0,100};
new const maxClip[31] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20,
10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 };
new information_item_player[33][2];
new const names_objects[][] =
{
"Нет",
"Нападающие ботинки",
"Двойной жилет",
"Усиленный жилет",
"Ветеран ножа",
"Сюрприз врагу",
"Плащ ниндзя",
"Морфий",
"Боевой нож",
"Шпионские очки",
"Тайна гранаты",
"Ноги ниндзя",
"Военная тайна",
"AWP снайпер",
"Адреналин",
"Тайный Рэмбо",
"Обученный санитар",
"Жилет NASA",
"Обученный ветеран",
"Первый помощник",
"Выталкиватель отдачи",
"Титановые картриджи",
"Полковник картриджей",
"Ограничитель отдачи",
"Спецназовский щит",
"Обученный рекрут",
"Мыслящая броня",
"Капитан Заметки",
"Jet модуль"
};
new const descriptions_objects[][] = {"Убей, чтобы получить предмет!",
"Выполнить скрыто",
"Снижает урон",
"Снижает урон",
"Сильнее удар ножа",
"Удар сзади сильнее в 2 раза",
"Делает тебя частично невидимым",
"1 к 3 возможность возродиться, когда убили",
"Убить ножом с первого удара",
"Получаешь шанс 1 к 3 мгновенно убить с гранаты. Ты выглядишь как враг",
"Мгновенно убить с гранаты",
"Можно делать двойное приседание в воздухе",
"Твои повреждения снижаются 1 к 3. У тебя есть шанс 1 к 3 ослепить врага",
"Убить первым выстрелом с AWP",
"За каждый фраг +50 HP",
"За каждый фраг, полный Сlip и +20 HP",
"Получаешь 10 HP каждые 3 секунды",
"+500 Брони",
"100 HP каждый раунд + медленный шаг",
"Нажать E чтобы получить HP",
"Без отдачи",
"+15 повреждений врагу",
"+25 повреждений врагу",
"У тебя слабая отдача",
"Нет предметов, работающих против тебя.",
"Получаешь +50 HP каждый раунд и медленный шаг",
"Возможность 1 к 3 изменения ваших повреждений",
"Ты устойчив до трёх выстрелов в каждом раунде",
"Нажми CTRL + SPACE чтобы заюзать JET модуль, модуль загружается каждые 4 секунды"
};
new g_szAuthID[33][34];
new class_player[33];
new level_player[33] = 1;
new experience_player[33];
new nowa_class_player[33];
new const experience_level[] =
{
0,35,140,315,560,875,1260,1715,2240,2835,3500,4235,5040,5915,6860,7875,8960
,10115,11340,12635,14000,15435,16940,18515,20160,21875,23660,25515,27440,29435,3
1
500,33635,35840,38115,40460,42875,45360,47915,50540,53235,56000,58835,61740,6471
5
,67760,70875,
74060,77315,80640,84035,87500,91035,94640,98315,102060,105875,109760,113715
,117740,121835,126000,130235,134540,138915,143360,147875,152460,157115,161840,16
6
635,171500,176435,181440,186515,191660,196875,202160,207515,212940,218435,224000
,
229635,235340,241115,246960,252875,258860,
264915,271040,277235,283500,289835,296240,302715,309260,315875,322560,32931
5,336140,343035,350000,357035,364140
};
new punkty_player[33];
new zdrowie_player[33];
new inteligencja_player[33];
new wytrzymalosc_player[33];
new Float:redukcja_obrazen_player[33];
new kondycja_player[33];
new maksymalne_zdrowie_player[33];
new Float:fast_player[33];
new bool:gracz_resetuje[33];
enum { NONE = 0, Sniper, Commando, Sharpshooter, Protector, Medic, FireSupport, Sapper, Demolitions, Rusher, Rambo };
new const zdrowie_klasy[] = { 0, 120, 130, 110, 250, 150, 100, 100, 130, 100, 130};
new const Float:fast_klasy[] = {0.0, 1.2, 1.35, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0, 1.45 , 1.15};
new const pancerz_klasy[] = { 0, 100, 100, 100, 200, 100, 0, 100, 100, 0, 150};
new const names_klas[][] = {"НЕТ",
"Снайпер",
"Боевик",
"Точный стрелок",
"Протектор",
"Медик",
"Огневая поддержка",
"Сапёр",
"Подрывник",
"Атакующий",
"Рэмбо"
};
new const descriptions_klas[][] = {"None",
"AWP, Deagle & Scout, 120 HP. 110 скорости, 100 брони.",
"Deagle, 130 HP. 135 скорости, 100 брони",
"AK47, M4A1 & 110 HP. 80 скорости, 100 брони",
"M249, 250 HP & ВСЕ гранаты , Иммунитет к минам, 200 брони",
"UMP45, 150 HP. Первый помощник, 100 брони",
"MP5, 100 HP, Две ракеты",
"P90, 100 HP, 3 мины, 100 брони",
"AUG, 130 HP, ВСЕ гранаты, динамит, 100 брони",
"M3, 100 HP, 145 скорости",
"Famas, 130 HP, 120 скорости, 100 брони"
};
new ilosc_apteczek_player[33];
new ilosc_rakiet_player[33];
new Float:poprzednia_rakieta_player[33];
new ilosc_min_player[33];
new ilosc_dynamitow_player[33];
new ilosc_skokow_player[33];
new bool:freezetime = true;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
g_vault = nvault_open("CodMod");
register_think("FirstAidKit","FirstAidKitThink");
RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
register_forward(FM_CmdStart, "CmdStart");
register_forward(FM_EmitSound, "EmitSound");
register_logevent("PoczatekRundy", 2, "1=Round_Start");
register_logevent("BombaPodlozona", 3, "2=Planted_The_Bomb");
register_event("SendAudio", "BombaRozbrojona", "a", "2&%!MRAD_BOMBDEF");
register_event("BarTime", "RozbrajaBomb", "be", "1=10", "1=5");
register_event("DeathMsg", "Death", "ade");
register_event("Damage", "Damage", "b", "2!=0");
register_event("CurWeapon","CurWeapon","be", "1=1");
register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");
register_touch("Rocket", "*" , "DotykRakiety");
register_touch("Mine", "player", "DotykMiny");
register_cvar("cod_killxp", "50");
register_cvar("cod_bombxp", "100");
register_clcmd("say /class", "WybierzKlase");
register_clcmd("say /classinfo", "DescriptionKlasy");
register_clcmd("say /perk", "DescriptionItem");
register_clcmd("say /drop", "WyrzucPrzedmiot");
register_clcmd("say /reset", "KomendaResetujPunkty");
register_clcmd("say /help", "userhelp", 0, " - Help Motd ");
register_clcmd("say /save","ZapiszDane")
register_clcmd("fullupdate", "CommandBlock");
register_clcmd("cl_autobuy", "CommandBlock");
register_clcmd("cl_rebuy", "CommandBlock");
register_clcmd("cl_setautobuy", "CommandBlock");
register_clcmd("rebuy", "CommandBlock");
register_clcmd("autobuy", "CommandBlock");
register_clcmd("glock", "CommandBlock");
register_clcmd("usp", "CommandBlock");
register_clcmd("p228", "CommandBlock");
register_clcmd("deagle", "CommandBlock");
register_clcmd("elites", "CommandBlock");
register_clcmd("fn57", "CommandBlock");
register_clcmd("m3", "CommandBlock");
register_clcmd("autoshotgun", "CommandBlock");
register_clcmd("mac10", "CommandBlock");
register_clcmd("tmp", "CommandBlock");
register_clcmd("mp5", "CommandBlock");
register_clcmd("ump45", "CommandBlock");
register_clcmd("p90", "CommandBlock");
register_clcmd("galil", "CommandBlock");
register_clcmd("ak47", "CommandBlock");
register_clcmd("scout", "CommandBlock");
register_clcmd("sg552", "CommandBlock");
register_clcmd("awp", "CommandBlock");
register_clcmd("g3sg1", "CommandBlock");
register_clcmd("famas", "CommandBlock");
register_clcmd("m4a1", "CommandBlock");
register_clcmd("bullpup", "CommandBlock");
register_clcmd("sg550", "CommandBlock");
register_clcmd("m249", "CommandBlock");
register_clcmd("shield", "CommandBlock");
register_clcmd("hegren", "CommandBlock");
register_clcmd("sgren", "CommandBlock");
register_clcmd("flash", "CommandBlock");
register_concmd("cod_setlvl", "cmd_setlvl", ADMIN_KICK, "<name> <level>");
g_msg_screenfade = get_user_msgid("ScreenFade");
SyncHudObj = CreateHudSyncObj();
SyncHudObj2 = CreateHudSyncObj();
SyncHudObj3 = CreateHudSyncObj();
experience_for_murder = get_cvar_num("cod_killxp");
experience_for_bomb = get_cvar_num("cod_bombxp");
set_task(60.0, "Pomoc");
}
public plugin_cfg()
{
server_cmd("sv_maxspeed 1600");
}
public plugin_precache()
{
sprite_white = precache_model("sprites/white.spr");
sprite_blast = precache_model("sprites/dexplo.spr");
precache_sound("MW/select.wav");
precache_sound("MW/start.wav");
precache_sound("MW/start2.wav");
precache_sound("MW/levelup.wav");
precache_model("models/w_medkit.mdl");
precache_model("models/rpgrocket.mdl");
precache_model("models/mine.mdl");
}
public CmdStart(id, uc_handle)
{
if(!is_user_alive(id))
return FMRES_IGNORED;
new button = get_uc(uc_handle, UC_Buttons);
new oldbutton = get_user_oldbutton(id);
new flags = get_entity_flags(id);
if(information_item_player[id][0] == 11 || class_player[id] == Rambo)
{
if((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && ilosc_skokow_player[id] > 0)
{
ilosc_skokow_player[id]--;
new Float:velocity[3];
entity_get_vector(id,EV_VEC_velocity,velocity);
velocity[2] = random_float(265.0,285.0);
entity_set_vector(id,EV_VEC_velocity,velocity);
}
else if(flags & FL_ONGROUND)
{
ilosc_skokow_player[id] = 0;
if(information_item_player[id][0] == 11)
ilosc_skokow_player[id]++;
if(class_player[id] == Rambo)
ilosc_skokow_player[id]++;
}
}
if(button & IN_ATTACK)
{
new Float:punchangle[3];
if(information_item_player[id][0] == 20)
entity_set_vector(id, EV_VEC_punchangle, punchangle);
if(information_item_player[id][0] == 23)
{
entity_get_vector(id, EV_VEC_punchangle, punchangle);
for(new i=0; i<3;i++)
punchangle[i]*=0.9;
entity_set_vector(id, EV_VEC_punchangle, punchangle);
}
}
if(information_item_player[id][0] == 28 && button & IN_JUMP && button & IN_DUCK && flags & FL_ONGROUND && get_gametime() > information_item_player[id][1]+4.0)
{
information_item_player[id][1] = floatround(get_gametime());
new Float:velocity[3];
VelocityByAim(id, 700, velocity);
velocity[2] = random_float(265.0,285.0);
entity_set_vector(id, EV_VEC_velocity, velocity);
}
return FMRES_IGNORED;
}
public Odrodzenie(id)
{
if(!is_user_alive(id) || !is_user_connected(id))
return PLUGIN_CONTINUE;
if(nowa_class_player[id])
{
class_player[id] = nowa_class_player[id];
nowa_class_player[id] = 0;
strip_user_weapons(id);
give_item(id, "weapon_knife");
switch(get_user_team(id))
{
case 1: give_item(id, "weapon_glock18");
case 2: give_item(id, "weapon_usp");
}
WczytajDane(id, class_player[id]);
}
if(!class_player[id])
{
WybierzKlase(id);
return PLUGIN_CONTINUE;
}
switch(class_player[id])
{
case Sniper:
{
give_item(id, "weapon_awp");
give_item(id, "weapon_scout");
give_item(id, "weapon_deagle");
}
case Commando:
{
give_item(id, "weapon_deagle");
}
case Sharpshooter:
{
give_item(id, "weapon_m4a1");
give_item(id, "weapon_ak47");
}
case Protector:
{
give_item(id, "weapon_m249");
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
}
case Medic:
{
give_item(id, "weapon_ump45");
ilosc_apteczek_player[id] = 2;
}
case FireSupport:
{
give_item(id, "weapon_mp5navy");
ilosc_rakiet_player[id] = 2;
}
case Sapper:
{
give_item(id, "weapon_p90");
ilosc_min_player[id] = 3;
}
case Demolitions:
{
give_item(id, "weapon_aug");
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
ilosc_dynamitow_player[id] = 1;
}
case Rusher:
{
give_item(id, "weapon_m3");
}
case Rambo:
{
give_item(id, "weapon_famas");
}
}
if(gracz_resetuje[id])
{
ResetujPunkty(id);
gracz_resetuje[id] = false;
}
if(punkty_player[id]>0)
PrzydzielPunkty(id);
if(information_item_player[id][0] == 10 || information_item_player[id][0] == 9)
give_item(id, "weapon_hegrenade");
if(information_item_player[id][0] == 9)
ZmienUbranie(id, 0);
if(information_item_player[id][0] == 1)
set_user_footsteps(id, 1);
else
set_user_footsteps(id, 0);
if(information_item_player[id][0] == 13)
give_item(id, "weapon_awp");
if(information_item_player[id][0] == 19)
information_item_player[id][1] = 1;
if(information_item_player[id][0] == 27)
information_item_player[id][1] = 3;
new weapons[32];
new weaponsnum;
get_user_weapons(id, weapons, weaponsnum);
for(new i=0; i<weaponsnum; i++)
if(is_user_alive(id))
if(maxAmmo[weapons[i]] > 0)
cs_set_user_bpammo(id, weapons[i], maxAmmo[weapons[i]]);
redukcja_obrazen_player[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(wytrzymalosc_player[id])))/100);
maksymalne_zdrowie_player[id] = zdrowie_klasy[class_player[id]]+zdrowie_player[id]*2;
fast_player[id] = STANDARD_FAST*fast_klasy[class_player[id]]+floatround(kondycja_player[id]*1.3);
if(information_item_player[id][0] == 18)
{
maksymalne_zdrowie_player[id] += 100;
fast_player[id] -= 0.4;
}
if(information_item_player[id][0] == 25)
{
maksymalne_zdrowie_player[id] += 50;
fast_player[id] -= 0.3;
}
set_user_armor(id, pancerz_klasy[class_player[id]]);
set_user_health(id, maksymalne_zdrowie_player[id]);
if(information_item_player[id][0] == 17)
set_user_armor(id, 500);
return PLUGIN_CONTINUE;
}
public PoczatekRundy()
{
freezetime = false;
for(new id=0;id<=32;id++)
{
if(!is_user_alive(id))
continue;
set_task(0.1, "SetFast", id+TASK_SET_FAST);
switch(get_user_team(id))
{
case 1: client_cmd(id, "spk MW/start");
case 2: client_cmd(id, "spk MW/start2");
}
}
}
public NowaRunda()
{
freezetime = true;
new iEnt = find_ent_by_class(-1, "Mine");
while(iEnt > 0)
{
remove_entity(iEnt);
iEnt = find_ent_by_class(iEnt, "Mine");
}
}
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_alive(this) || !is_user_connected(this) || information_item_player[this][0] == 24 || !is_user_connected(idattacker) || get_user_team(this) == get_user_team(idattacker) || !class_player[idattacker])
return HAM_IGNORED;
new health = get_user_health(this);
new weapon = get_user_weapon(idattacker);
if(health < 2)
return HAM_IGNORED;
if(information_item_player[this][0] == 27 && information_item_player[this][1]>0)
{
information_item_player[this][1]--;
return HAM_SUPERCEDE;
}
if(wytrzymalosc_player[this]>0)
damage -= redukcja_obrazen_player[this]*damage;
if(information_item_player[this][0] == 2 || information_item_player[this][0] == 3)
damage-=(float(information_item_player[this][1])<damage)? float(information_item_player[this][1]): damage;
if(information_item_player[idattacker][0] == 5 && !UTIL_In_FOV(this, idattacker) && UTIL_In_FOV(idattacker, this))
damage*=2.0;
if(information_item_player[idattacker][0] == 10)
damage+=information_item_player[idattacker][1];
if(information_item_player[this][0] == 12)
damage-=(5.0<damage)? 5.0: damage;
if(weapon == CSW_AWP && information_item_player[idattacker][0] == 13)
damage=float(health);
if(information_item_player[idattacker][0] == 21)
damage+=15;
if(information_item_player[idattacker][0] == 22)
damage+=25;
if(idinflictor != idattacker && entity_get_int(idinflictor, EV_INT_movetype) != 5)
{
if((information_item_player[idattacker][0] == 9 && random_num(1, information_item_player[idattacker][1]) == 1) || information_item_player[idattacker][0] == 10)
damage = float(health);
}
if(weapon == CSW_KNIFE)
{
if(information_item_player[this][0] == 4)
damage=damage*1.4+inteligencja_player[idattacker];
if(information_item_player[idattacker][0] == 8 || (class_player[idattacker] == Sniper && random(2) == 2) || class_player[idattacker] == Commando && !(get_user_button(idattacker) & IN_ATTACK))
damage = float(health);
}
if(information_item_player[this][0] == 26 && random_num(1, information_item_player[this][1]) == 1)
{
SetHamParamEntity(3, this);
SetHamParamEntity(1, idattacker);
}
SetHamParamFloat(4, damage);
return HAM_IGNORED;
}
public Damage(id)
{
new attacker = get_user_attacker(id);
new damage = read_data(2);
if(!is_user_alive(attacker) || !is_user_connected(attacker) || id == attacker || !class_player[attacker])
return PLUGIN_CONTINUE;
if(information_item_player[attacker][0] == 12 && random_num(1, information_item_player[id][1]) == 1)
Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230);
if(get_user_team(id) != get_user_team(attacker))
{
while(damage>20)
{
damage-=20;
experience_player[attacker]++;
}
}
SprawdzLevel(attacker);
return PLUGIN_CONTINUE;
}
public Death()
{
new id = read_data(2);
new attacker = read_data(1);
if(!is_user_alive(attacker) || !is_user_connected(attacker))
return PLUGIN_CONTINUE;
new weapon = get_user_weapon(attacker);
new zdrowie = get_user_health(attacker);
if(get_user_team(id) != get_user_team(attacker) && class_player[attacker])
{
new nowe_experience = 0;
nowe_experience += experience_for_murder;
if(class_player[id] == Rambo && class_player[attacker] != Rambo)
nowe_experience += experience_for_murder*2;
if(level_player[id] > level_player[attacker])
nowe_experience += level_player[id] - level_player[attacker];
if(class_player[attacker] == Rambo || information_item_player[attacker][0] == 15 && maxClip[weapon] != -1)
{
new nowe_zdrowie = (zdrowie+20<maksymalne_zdrowie_player[attacker])? zdrowie+20: maksymalne_zdrowie_player[attacker];
set_user_clip(attacker, maxClip[weapon]);
set_user_health(attacker, nowe_zdrowie);
}
#if defined BOT
if(is_user_bot2(attacker) && random(9) == 0)
WyrzucPrzedmiot(id);
#endif
if(!information_item_player[attacker][0])
DajPrzedmiot(attacker, random_num(1, sizeof names_objects-1));
if(information_item_player[attacker][0] == 14)
{
new nowe_zdrowie = (zdrowie+50<maksymalne_zdrowie_player[attacker])? zdrowie+50: maksymalne_zdrowie_player[attacker];
set_user_health(attacker, nowe_zdrowie);
}
set_hudmessage(255, 212, 0, 0.50, 0.33, 1, 6.0, 4.0);
ShowSyncHudMsg(attacker, SyncHudObj2, "+%i", nowe_experience);
experience_player[attacker] += nowe_experience;
}
SprawdzLevel(attacker);
if(information_item_player[id][0] == 7 && random_num(1, information_item_player[id][1]) == 1)
set_task(0.1, "Raise", id+TASK_RAISE);
return PLUGIN_CONTINUE;
}
public client_connect(id)
{
class_player[id] = 0;
level_player[id] = 0;
experience_player[id] = 0;
punkty_player[id] = 0;
zdrowie_player[id] = 0;
inteligencja_player[id] = 0;
wytrzymalosc_player[id] = 0;
kondycja_player[id] = 0;
maksymalne_zdrowie_player[id] = 0;
fast_player[id] = 0.0;
get_user_authid(id, g_szAuthID[id], charsmax(g_szAuthID[] ));
remove_task(id+TASK_SHOW_INFORMATION);
remove_task(id+TASK_SHOW_ADVERTISEMENT);
remove_task(id+TASK_SET_FAST);
remove_task(id+TASK_RAISE);
remove_task(id+TASK_TRAINING_SANITARY);
set_task(10.0, "ShowAdvertisement", id+TASK_SHOW_ADVERTISEMENT);
set_task(3.0, "ShowInformation", id+TASK_SHOW_INFORMATION);
UsunPrzedmiot(id);
}
public client_disconnect(id)
{
remove_task(id+TASK_SHOW_INFORMATION);
remove_task(id+TASK_SHOW_ADVERTISEMENT);
remove_task(id+TASK_SET_FAST);
remove_task(id+TASK_RAISE);
remove_task(id+TASK_TRAINING_SANITARY);
ZapiszDane(id);
UsunPrzedmiot(id);
}
public RozbrajaBomb(id)
if(class_player[id])
disarming = id;
public BombaPodlozona()
{
new Players[32], playerCount, id;
get_players(Players, playerCount, "aeh", "TERRORIST");
if(get_playersnum() > 1)
{
experience_player[podkladajacy] += experience_for_bomb;
for (new i=0; i<playerCount; i++)
{
id = Players[i];
if(!class_player[id])
continue;
if(id != podkladajacy)
{
experience_player[id] += experience_for_murder;
client_print(id, print_chat, "[COD:MW] Получено **%i** EXP за установку бомбы.", experience_for_murder);
}
else
{
client_print(id, print_chat, "[COD:MW] Получено **%i** EXP за установку бомбы.", experience_for_bomb);
}
SprawdzLevel(id);
}
}
}
public BombaRozbrojona()
{
new Players[32], playerCount, id;
get_players(Players, playerCount, "aeh", "CT");
experience_player[disarming] += experience_for_bomb;
for (new i=0; i<playerCount; i++)
{
id = Players[i];
if(!class_player[id])
continue;
if(id != disarming)
{
experience_player[id]+= experience_for_murder;
client_print(id, print_chat, "[COD:MW] Получено **%i** EXP за разминирование бомбы.", experience_for_murder);
}
else
client_print(id, print_chat, "[COD:MW] Получено **%i** EXP за разминирование бомбы.",experience_for_bomb);
SprawdzLevel(id);
}
}
public DescriptionKlasy(id)
{
new menu = menu_create("Select Class:", "DescriptionKlasy_Handle");
for(new i=1; i<sizeof names_klas; i++)
menu_additem(menu, names_klas[i]);
menu_setprop(menu, MPROP_EXITNAME, "Выход");
menu_setprop(menu, MPROP_BACKNAME, "Назад");
menu_setprop(menu, MPROP_NEXTNAME, "Вперёд");
menu_display(id, menu);
client_cmd(id, "spk MW/select");
}
public DescriptionKlasy_Handle(id, menu, item)
{
client_cmd(id, "spk MW/select");
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
client_print(id, print_chat, "[COD:MW] %s: %s", names_klas[item+1], descriptions_klas[item+1]);
menu_display(id, menu);
return PLUGIN_CONTINUE;
}
public WybierzKlase(id)
{
new menu = menu_create("Выбор класса:", "WybierzKlase_Handle");
new class[50];
for(new i=1; i<sizeof names_klas; i++)
{
WczytajDane(id, i);
format(class, 49, "%s \yLevel: %i", names_klas[i], level_player[id]);
menu_additem(menu, class);
}
WczytajDane(id, class_player[id]);
menu_setprop(menu, MPROP_EXITNAME, "Выход");
menu_setprop(menu, MPROP_BACKNAME, "Назад");
menu_setprop(menu, MPROP_NEXTNAME, "Вперёд");
menu_display(id, menu);
client_cmd(id, "spk MW/select");
#if defined BOT
if(is_user_bot2(id))
WybierzKlase_Handle(id, menu, random(sizeof names_klas-1));
#endif
}
public WybierzKlase_Handle(id, menu, item)
{
client_cmd(id, "spk MW/select");
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
item++;
if(item == class_player[id])
return PLUGIN_CONTINUE;
if(class_player[id])
{
nowa_class_player[id] = item;
client_print(id, print_chat, "[COD:MW] Класс будет изменён со следующего раунда.");
}
else
{
class_player[id] = item;
WczytajDane(id, class_player[id]);
Odrodzenie(id);
}
return PLUGIN_CONTINUE;
}
public PrzydzielPunkty(id)
{
new inteligencja[65];
new zdrowie[60];
new wytrzymalosc[60];
new kondycja[60];
new tytul[25];
format(inteligencja, 64, "Интеллект: \r%i \y(Увеличивает урон)", inteligencja_player[id]);
format(zdrowie, 59, "HP: \r%i \y(Увеличивает уровень HP)", zdrowie_player[id]);
format(wytrzymalosc, 59, "Стойкость: \r%i \y(Сниж.нанес.вам урон)", wytrzymalosc_player[id]);
format(kondycja, 59, "Скорость: \r%i \y(Увеличив. скорость)", kondycja_player[id]);
format(tytul, 24, "Назначение очков(%i):", punkty_player[id]);
new menu = menu_create(tytul, "PrzydzielPunkty_Handler");
menu_additem(menu, inteligencja);
menu_additem(menu, zdrowie);
menu_additem(menu, wytrzymalosc);
menu_additem(menu, kondycja);
menu_display(id, menu);
#if defined BOT
if(is_user_bot2(id))
PrzydzielPunkty_Handler(id, menu, random(4));
#endif
}
public PrzydzielPunkty_Handler(id, menu, item)
{
client_cmd(id, "spk MW/select");
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
switch(item)
{
case 0:
{
if(inteligencja_player[id]<100)
inteligencja_player[id]++;
else
client_print(id, print_chat, "[COD:MW] Максимальный уровень интеллекта");
}
case 1:
{
if(zdrowie_player[id]<100)
zdrowie_player[id]++;
else
client_print(id, print_chat, "[COD:MW] Максимальный уровень силы");
}
case 2:
{
if(wytrzymalosc_player[id]<100)
wytrzymalosc_player[id]++;
else
client_print(id, print_chat, "[COD:MW] Максимальный уровень ловкости");
}
case 3:
{
if(kondycja_player[id]<100)
kondycja_player[id]++;
else
client_print(id, print_chat, "[COD:MW] Максимальный уровень ловкости");
}
}
punkty_player[id]--;
if(punkty_player[id]>0)
PrzydzielPunkty(id);
return PLUGIN_CONTINUE;
}
public ResetujPunkty(id)
{
punkty_player[id] = level_player[id]*2-2;
inteligencja_player[id] = 0;
zdrowie_player[id] = 0;
kondycja_player[id] = 0;
wytrzymalosc_player[id] = 0;
}
public KomendaResetujPunkty(id)
{
client_print(id, print_chat, "[COD:MW] Навыки будут сброшены со следующего раунда.");
client_cmd(id, "spk MW/select");
gracz_resetuje[id] = true;
}
public TrainingSanitary(id)
{
id -= TASK_TRAINING_SANITARY;
if(information_item_player[id][0] != 16)
return PLUGIN_CONTINUE;
set_task(3.0, "TrainingSanitary", id+TASK_TRAINING_SANITARY);
if(!is_user_alive(id))
return PLUGIN_CONTINUE;
new health = get_user_health(id);
new new_health = (health+10<maksymalne_zdrowie_player[id])?health+10:maksymalne_zdrowie_player[id];
set_user_health(id, new_health);
return PLUGIN_CONTINUE;
}
public StworzApteczke(id)
{
if (!ilosc_apteczek_player[id])
{
client_print(id, print_center, "Ты можешь получить только два комплекта за раунд!");
return PLUGIN_CONTINUE;
}
if(inteligencja_player[id] < 1)
client_print(id, print_center, "Укрепление, прокачка интеллекта!");
ilosc_apteczek_player[id]--;
new Float:origin[3];
entity_get_vector(id, EV_VEC_origin, origin);
new ent = create_entity("info_target");
entity_set_string(ent, EV_SZ_classname, "FirstAidKit");
entity_set_edict(ent, EV_ENT_owner, id);
entity_set_int(ent, EV_INT_solid, SOLID_NOT);
entity_set_vector(ent, EV_VEC_origin, origin);
entity_set_float(ent, EV_FL_ltime, halflife_time() + 7 + 0.1);
entity_set_model(ent, "models/w_medkit.mdl");
set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 );
drop_to_floor(ent);
entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.1);
return PLUGIN_CONTINUE;
}
public FirstAirKitThink(ent)
{
new id = entity_get_edict(ent, EV_ENT_owner);
new totem_dist = 300;
new totem_heal = 5+floatround(inteligencja_player[id]*0.5);
if (entity_get_edict(ent, EV_ENT_euser2) == 1)
{
new Float:forigin[3], origin[3];
entity_get_vector(ent, EV_VEC_origin, forigin);
FVecIVec(forigin,origin);
new entlist[33];
new numfound = find_sphere_class(0,"player",totem_dist+0.0,entlist, 32,forigin);
for (new i=0; i < numfound; i++)
{
new pid = entlist[i];
if (get_user_team(pid) != get_user_team(id))
continue;
new zdrowie = get_user_health(pid);
new nowe_zdrowie = (zdrowie+totem_heal<maksymalne_zdrowie_player[pid])?zdrowie+totem_heal:maksymalne_zdrowie_player[pid];
if (is_user_alive(pid)) set_user_health(pid, nowe_zdrowie);
}
entity_set_edict(ent, EV_ENT_euser2, 0);
entity_set_float(ent, EV_FL_nextthink, halflife_time() + 1.5);
return PLUGIN_CONTINUE;
}
if (entity_get_float(ent, EV_FL_ltime) < halflife_time() || !is_user_alive(id))
{
remove_entity(ent);
return PLUGIN_CONTINUE;
}
if (entity_get_float(ent, EV_FL_ltime)-2.0 < halflife_time())
set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 );
new Float:forigin[3], origin[3];
entity_get_vector(ent, EV_VEC_origin, forigin);
FVecIVec(forigin,origin);
message_begin( MSG_BROADCAST, SVC_TEMPENTITY, origin );
write_byte( TE_BEAMCYLINDER );
write_coord( origin[0] );
write_coord( origin[1] );
write_coord( origin[2] );
write_coord( origin[0] );
write_coord( origin[1] + totem_dist );
write_coord( origin[2] + totem_dist );
write_short( sprite_white );
write_byte( 0 );
write_byte( 0 );
write_byte( 10 );
write_byte( 10 );
write_byte( 255 );
write_byte( 255 );
write_byte( 100 );
write_byte( 100 );
write_byte( 128 );
write_byte( 5 );
message_end();
entity_set_edict(ent, EV_ENT_euser2 ,1);
entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.5);
return PLUGIN_CONTINUE;
}
public StworzRakiete(id)
{
if (!ilosc_rakiet_player[id])
{
client_print(id, print_center, "Ты использовал все свои ракеты!");
return PLUGIN_CONTINUE;
}
if(poprzednia_rakieta_player[id] + 2.0 > get_gametime())
{
client_print(id, print_center, "Ты можешь использовать ракеты через каждые 2 секунды!");
return PLUGIN_CONTINUE;
}
if (is_user_alive(id))
{
if(inteligencja_player[id] < 1)
client_print(id, print_center, "Укрепление ракет, прокачка интеллекта!");
poprzednia_rakieta_player[id] = get_gametime();
ilosc_rakiet_player[id]--;
new Float: Origin[3], Float: vAngle[3], Float: Velocity[3];
entity_get_vector(id, EV_VEC_v_angle, vAngle);
entity_get_vector(id, EV_VEC_origin , Origin);
new Ent = create_entity("info_target");
entity_set_string(Ent, EV_SZ_classname, "Rocket");
entity_set_model(Ent, "models/rpgrocket.mdl");
vAngle[0] *= -1.0;
entity_set_origin(Ent, Origin);
entity_set_vector(Ent, EV_VEC_angles, vAngle);
entity_set_int(Ent, EV_INT_effects, 2);
entity_set_int(Ent, EV_INT_solid, SOLID_BBOX);
entity_set_int(Ent, EV_INT_movetype, MOVETYPE_FLY);
entity_set_edict(Ent, EV_ENT_owner, id);
VelocityByAim(id, 1000 , Velocity);
entity_set_vector(Ent, EV_VEC_velocity ,Velocity);
}
return PLUGIN_CONTINUE;
}
public PolozDynamit(id)
{
if(!ilosc_dynamitow_player[id])
{
client_print(id, print_center, "Ты уже использовал динамит!");
return PLUGIN_CONTINUE;
}
if(inteligencja_player[id] < 1)
client_print(id, print_center, "Укрепление динамита, прокачка интеллекта!");
ilosc_dynamitow_player[id]--;
new Float:fOrigin[3], iOrigin[3];
entity_get_vector( id, EV_VEC_origin, fOrigin);
iOrigin[0] = floatround(fOrigin[0]);
iOrigin[1] = floatround(fOrigin[1]);
iOrigin[2] = floatround(fOrigin[2]);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_blast);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();
message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
write_byte( TE_BEAMCYLINDER );
write_coord( iOrigin[0] );
write_coord( iOrigin[1] );
write_coord( iOrigin[2] );
write_coord( iOrigin[0] );
write_coord( iOrigin[1] + 300 );
write_coord( iOrigin[2] + 300 );
write_short( sprite_white );
write_byte( 0 );
write_byte( 0 );
write_byte( 10 );
write_byte( 10 );
write_byte( 255 );
write_byte( 255 );
write_byte( 100 );
write_byte( 100 );
write_byte( 128 );
write_byte( 8 );
message_end();
new entlist[33];
new numfound = find_sphere_class(id, "player", 300.0 , entlist, 32);
for (new i=0; i < numfound; i++)
{
new pid = entlist[i];
if (!is_user_alive(pid) || get_user_team(id) == get_user_team(pid) || information_item_player[pid][0] == 24)
continue;
ExecuteHam(Ham_TakeDamage, pid, 0, id, 90.0+float(inteligencja_player[id]) , 1);
}
return PLUGIN_CONTINUE;
}
public PostawMine(id)
{
if (!ilosc_min_player[id])
{
client_print(id, print_center, "Ты использовал все свои мины!");
return PLUGIN_CONTINUE;
}
if(inteligencja_player[id] < 1)
client_print(id, print_center, "Укрепление мин, прокачка интеллекта!");
ilosc_min_player[id]--;
new Float:origin[3];
entity_get_vector(id, EV_VEC_origin, origin);
new ent = create_entity("info_target");
entity_set_string(ent ,EV_SZ_classname, "Mine");
entity_set_edict(ent ,EV_ENT_owner, id);
entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS);
entity_set_origin(ent, origin);
entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
entity_set_model(ent, "models/mine.mdl");
entity_set_size(ent,Float:{-16.0,-16.0,0.0},Float:{16.0,16.0,2.0});
drop_to_floor(ent);
entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01);
set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,20) ;
return PLUGIN_CONTINUE;
}
public DotykMiny(ent, id)
{
new attacker = entity_get_edict(ent, EV_ENT_owner);
if (get_user_team(attacker) != get_user_team(id))
{
new Float:fOrigin[3], iOrigin[3];
entity_get_vector( ent, EV_VEC_origin, fOrigin);
iOrigin[0] = floatround(fOrigin[0]);
iOrigin[1] = floatround(fOrigin[1]);
iOrigin[2] = floatround(fOrigin[2]);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_blast);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();
new entlist[33];
new numfound = find_sphere_class(ent,"player", 90.0 ,entlist, 32);
for (new i=0; i < numfound; i++)
{
new pid = entlist[i];
if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid) || information_item_player[pid][0] == 24 || class_player[id] == Protector)
continue;
ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 90.0+float(inteligencja_player[attacker]) , 1);
}
remove_entity(ent);
}
}
public DotykRakiety(ent)
{
if ( !is_valid_ent(ent))
return;
new attacker = entity_get_edict(ent, EV_ENT_owner);
new Float:fOrigin[3], iOrigin[3];
entity_get_vector( ent, EV_VEC_origin, fOrigin);
iOrigin[0] = floatround(fOrigin[0]);
iOrigin[1] = floatround(fOrigin[1]);
iOrigin[2] = floatround(fOrigin[2]);
message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_blast);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();
new entlist[33];
new numfound = find_sphere_class(ent, "player", 230.0, entlist, 32);
for (new i=0; i < numfound; i++)
{
new pid = entlist[i];
if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid) || information_item_player[pid][0] == 24)
continue;
ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 55.0+float(inteligencja_player[attacker]) , 1);
}
remove_entity(ent);
}
public CurWeapon(id)
{
if(freezetime || !class_player[id])
return PLUGIN_CONTINUE;
new weapon = read_data(2);
SetFast(id);
if(weapon == CSW_C4)
podkladajacy = id;
return PLUGIN_CONTINUE;
}
public EmitSound(id, iChannel, szSound[], Float:fVol, Float:fAttn, iFlags, iPitch )
{
if(equal(szSound, "common/wpn_denyselect.wav"))
{
UzyjItem(id);
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public UzyjItem(id)
{
if(information_item_player[id][0] == 19 && information_item_player[id][1]>0)
{
set_user_health(id, maksymalne_zdrowie_player[id]);
information_item_player[id][1]--;
}
if(ilosc_apteczek_player[id]>0)
StworzApteczke(id);
if(ilosc_rakiet_player[id]>0)
StworzRakiete(id);
if(ilosc_min_player[id]>0)
PostawMine(id);
if(ilosc_dynamitow_player[id]>0)
PolozDynamit(id);
return PLUGIN_HANDLED;
}
public ZapiszDane(id)
{
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s-%i-cod", g_szAuthID[id], class_player[id]);
format(vaultdata,255,"%i#%i#%i#%i#%i#%i", experience_player[id], level_player[id], inteligencja_player[id], zdrowie_player[id], wytrzymalosc_player[id], kondycja_player[id]);
nvault_set(g_vault,vaultkey,vaultdata);
}
public WczytajDane(id, class)
{
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s-%i-cod", g_szAuthID[id], class);
format(vaultdata,255,"%i#%i#%i#%i#%i#%i", experience_player[id], level_player[id], inteligencja_player[id], zdrowie_player[id], wytrzymalosc_player[id], kondycja_player[id]);
nvault_get(g_vault,vaultkey,vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new experienceplayer[32], levelplayer[32], inteligencjaplayer[32], silaplayer[32], zrecznoscplayer[32], zwinnoscplayer[32];
parse(vaultdata, experienceplayer, 31, levelplayer, 31, inteligencjaplayer, 31, silaplayer, 31, zrecznoscplayer, 31, zwinnoscplayer, 31);
experience_player[id] = str_to_num(experienceplayer);
level_player[id] = str_to_num(levelplayer)>0?str_to_num(levelplayer):1;
inteligencja_player[id] = str_to_num(inteligencjaplayer);
zdrowie_player[id] = str_to_num(silaplayer);
wytrzymalosc_player[id] = str_to_num(zrecznoscplayer);
kondycja_player[id] = str_to_num(zwinnoscplayer);
punkty_player[id] = (level_player[id]-1)*2-inteligencja_player[id]-zdrowie_player[id]-wytrzymalosc_player[id]-kondycja_player[id];
}
public WyrzucPrzedmiot(id)
{
if(information_item_player[id][0])
{
client_print(id, print_chat, "[COD:MW] Выброшено %s.", names_objects[information_item_player[id][0]]);
UsunPrzedmiot(id);
}
else
client_print(id, print_chat, "[COD:MW] У тебя нету предмета чтобы его выбросить.", names_objects[information_item_player[id][0]]);
}
public UsunPrzedmiot(id)
{
information_item_player[id][0] = 0;
information_item_player[id][1] = 0;
if(is_user_alive(id))
set_user_footsteps(id, 0);
set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, 255);
ZmienUbranie(id, 1);
}
public DajPrzedmiot(id, przedmiot)
{
UsunPrzedmiot(id);
information_item_player[id][0] = przedmiot;
client_print(id, print_chat, "[COD:MW] Получено %s.", names_objects[information_item_player[id][0]]);
switch(przedmiot)
{
case 1:
{
set_user_footsteps(id, 1);
}
case 2:
{
information_item_player[id][1] = random_num(3,6);
}
case 3:
{
information_item_player[id][1] = random_num(6, 11);
}
case 5:
{
information_item_player[id][1] = random_num(6, 9);
}
case 6:
{
information_item_player[id][1] = random_num(100, 150);
set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, 40);
}
case 7:
{
information_item_player[id][1] = random_num(2, 4);
}
case 8:
{
if(class_player[id] == Commando)
DajPrzedmiot(id, random_num(1, sizeof names_objects-1));
}
case 9:
{
information_item_player[id][1] = random_num(1, 3);
ZmienUbranie(id, 0);
give_item(id, "weapon_hegrenade");
}
case 10:
{
information_item_player[id][1] = random_num(4, 98);
give_item(id, "weapon_hegrenade");
}
case 12:
{
information_item_player[id][1] = random_num(1, 99);
}
case 13:
{
give_item(id, "weapon_awp");
}
case 15:
{
if(class_player[id] == Rambo)
DajPrzedmiot(id, random_num(1, sizeof names_objects-1));
}
case 16:
{
set_task(5.0, "TrainingSanitary", id+TASK_TRAINING_SANITARY);
}
case 19:
{
information_item_player[id][1] = 1;
}
case 26:
{
information_item_player[id][1] = random_num(3, 6);
}
case 27:
{
information_item_player[id][1] = 3;
}
}
}
public DescriptionItem(id)
{
new description_item[128];
new losowa_wartosc[3];
num_to_str(information_item_player[id][1], losowa_wartosc, 2);
format(description_item, 127, descriptions_objects[information_item_player[id][0]]);
replace_all(description_item, 127, "LW", losowa_wartosc);
client_print(id, print_chat, "Предмет: %s.", names_objects[information_item_player[id][0]]);
client_print(id, print_chat, "Описание: %s.", description_item);
}
public Raise(id)
{
id-=TASK_RAISE;
ExecuteHamB(Ham_CS_RoundRespawn, id);
}
public SprawdzLevel(id)
{
if(level_player[id] < 201)
{
while(experience_player[id] >= experience_level[level_player[id]])
{
level_player[id]++;
set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
ShowSyncHudMsg(id, SyncHudObj3, "Поздравляем, ты получил следующий уровень!");
client_cmd(id, "spk MW/levelup");
}
punkty_player[id] = (level_player[id]-1)*2-inteligencja_player[id]-zdrowie_player[id]-wytrzymalosc_player[id]-kondycja_player[id];
}
ZapiszDane(id);
}
public ShowInformation(id)
{
id -= TASK_SHOW_INFORMATION;
set_task(0.1, "ShowInformation", id+TASK_SHOW_INFORMATION);
if(!is_user_alive(id))
{
new target = entity_get_int(id, EV_INT_iuser2);
if(target == 0)
return PLUGIN_CONTINUE;
set_hudmessage(0, 255, 0, 0.6, -1.0, 0, 0.0, 0.3, 0.0, 0.0, 2);
ShowSyncHudMsg(id, SyncHudObj, "Класс : %s^nЭкспа : %i / %i^nУровень : %i^nПерк : %s", names_klas[class_player[target]], experience_player[target], experience_level[level_player[target]], level_player[target], names_objects[information_item_player[target][0]]);
return PLUGIN_CONTINUE;
}
set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
ShowSyncHudMsg(id, SyncHudObj, "[Класс : %s]^n[Экспа : %i / %i]^n[Уровень : %i]^n[Перк : %s]", names_klas[class_player[id]], experience_player[id], experience_level[level_player[id]], level_player[id], names_objects[information_item_player[id][0]]);
return PLUGIN_CONTINUE;
}
public ShowAdvertisement(id)
{
id-=TASK_SHOW_ADVERTISEMENT;
client_print(id, print_chat, "[COD:MW] Добро пожаловать в Call of Duty мод.");
}
public SetFast(id)
{
id -= id>32? TASK_SET_FAST: 0;
if(class_player[id])
set_user_maxspeed(id, fast_player[id]);
}
public ZmienUbranie(id,reset)
{
if (id<1 || id>32 || !is_user_connected(id))
return PLUGIN_CONTINUE;
if (reset)
cs_reset_user_model(id);
else
{
new num = random_num(0,3);
switch(get_user_team(id))
{
case 1: cs_set_user_model(id, Clothing_CT[num]);
case 2:cs_set_user_model(id, Clothing_Terro[num]);
}
}
return PLUGIN_CONTINUE;
}
public Pomoc()
{
switch(random(3))
{
case 0: client_print(0, print_chat, "[COD:MW] Напиши /help для помощи");
case 1: client_print(0, print_chat, "[COD:MW] Чрезмерные Spawn убийства приведут к наказанию");
}
set_task(60.0, "Pomoc");
}
public cmd_setlvl(id, level, cid)
{
if(!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED;
new arg1[33];
new arg2[6];
read_argv(1, arg1, 32);
read_argv(2, arg2, 5);
new player = cmd_target(id, arg1);
new value = str_to_num(arg2)-1;
experience_player[player] = experience_level[value];
level_player[player] = 0;
SprawdzLevel(player);
return PLUGIN_HANDLED;
}
public CommandBlock()
return PLUGIN_HANDLED;
stock bool:UTIL_In_FOV(id,target)
{
if (Find_Angle(id,target,9999.9) > 0.0)
return true;
return false;
}
#if defined BOT
public is_user_bot2(id)
{
new ping, loss
get_user_ping(id, ping, loss)
if(ping > 0 && loss > 0)
return false
return true
}
#endif
stock Float:Find_Angle(Core,Target,Float:dist)
{
new Float:vec2LOS[2];
new Float:flDot;
new Float:CoreOrigin[3];
new Float:TargetOrigin[3];
new Float:CoreAngles[3];
pev(Core,pev_origin,CoreOrigin);
pev(Target,pev_origin,TargetOrigin);
if (get_distance_f(CoreOrigin,TargetOrigin) > dist)
return 0.0;
pev(Core,pev_angles, CoreAngles);
for ( new i = 0; i < 2; i++ )
vec2LOS[i] = TargetOrigin[i] - CoreOrigin[i];
new Float:veclength = Vec2DLength(vec2LOS);
if (veclength <= 0.0)
{
vec2LOS[0] = 0.0;
vec2LOS[1] = 0.0;
}
else
{
new Float:flLen = 1.0 / veclength;
vec2LOS[0] = vec2LOS[0]*flLen;
vec2LOS[1] = vec2LOS[1]*flLen;
}
engfunc(EngFunc_MakeVectors,CoreAngles);
new Float:v_forward[3];
new Float:v_forward2D[2];
get_global_vector(GL_v_forward, v_forward);
v_forward2D[0] = v_forward[0];
v_forward2D[1] = v_forward[1];
flDot = vec2LOS[0]*v_forward2D[0]+vec2LOS[1]*v_forward2D[1];
if ( flDot > 0.5 )
{
return flDot;
}
return 0.0;
}
stock Float:Vec2DLength( Float:Vec[2] )
{
return floatsqroot(Vec[0]*Vec[0] + Vec[1]*Vec[1] );
}
stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha)
{
message_begin( MSG_ONE, g_msg_screenfade,{0,0,0},id );
write_short( duration );
write_short( holdtime );
write_short( fadetype );
write_byte ( red );
write_byte ( green );
write_byte ( blue );
write_byte ( alpha );
message_end();
}
stock set_user_clip(id, ammo)
{
new weaponname[32], weaponid = -1, weapon = get_user_weapon(id, _, _);
get_weaponname(weapon, weaponname, 31);
while ((weaponid = find_ent_by_class(weaponid, weaponname)) != 0)
if(entity_get_edict(weaponid, EV_ENT_owner) == id)
{
set_pdata_int(weaponid, 51, ammo, 4);
return weaponid;
}
return 0;
}
public userhelp(id)
{
show_motd(id, "help.txt", "Help Motd")
}