PDA

View Full Version : Cerere plugin sunete [RESPINS]



^JoK3R^
31-08-2014, 09:36 PM
Salut tuturor. Am nevoie de un plugin prin care ,atunci cand imi cumpar Super knife sa se auda un sunet pus de mine in ambele echipe ,la fel si pentru Bazooka.
Plugin shop
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <engine>
#include <fun>

#define PLUGIN "Furien Shop"
#define VERSION "2.0"
#define AUTHOR "DaNNe."

#define VIP_LEVEL ADMIN_LEVEL_H

// Pet
#define fm_precache_model(%1) engfunc(EngFunc_PrecacheModel,%1)
#define fm_precache_sound(%1) engfunc(EngFunc_PrecacheSound,%1)
#define fm_remove_entity(%1) engfunc(EngFunc_RemoveEntity, %1)
//#define fm_drop_to_floor(%1) engfunc(EngFunc_DropToFloor,%1)
#define fm_find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
#define fm_set_user_gravity(%1,%2) set_pev(%1,pev_gravity,%2)

#define PET_FLAG pev_flTimeStepSound
#define PET_KILLED 389

static const pet_model[] = "models/stukabat.mdl"
static const pet_sounds[][] = { "bullchicken/bc_die1.wav", "bullchicken/bc_die2.wav", "bullchicken/bc_die3.wav", "bullchicken/bc_idle1.wav", "bullchicken/bc_pain3.wav" }
static const pet_idle = 13
static const pet_run = 13
static const pet_die = 5
static const Float:pet_idle_speed = 0.3
static const Float:pet_run_speed = 10.0
static const Float:player_gravity = 0.65

// AT4
#define weapon_at4cs "weapon_m249"
#define CSW_AT4CS CSW_M249
#define TASK_CHECKRELOAD 111112
#define TASK_RELOAD 111113

new Float:g_lastfire[33], Float:g_lastaim[33], g_aiming[33],
g_smoke_id, g_spr_trail, g_spr_exp, is_reloading[33],
cvar_radius, cvar_maxdamage

new const AT4Model_V[] = "models/FurienShop/v_at4ex.mdl";
new const AT4Model_P[] = "models/FurienShop/p_at4ex.mdl";
new const AT4Model_W[] = "models/FurienShop/w_at4ex.mdl";
new const AT4Rocket[] = "models/FurienShop/s_rocket.mdl";

new const AT4Sound[][] = {
"weapons/at4-1.wav",
"weapons/at4_clipin1.wav",
"weapons/at4_clipin2.wav",
"weapons/at4_clipin3.wav",
"weapons/at4_draw.wav"
};

// Super Knifes
new SuperKnifeX2_Model[] = "models/FurienShop/v_super_knife_furien.mdl";
new SuperKnifeX3_Model[] = "models/FurienShop/v_super_knife_vip.mdl";
new SuperKnifeVIP_Model[] = "models/FurienShop/v_superknife_vip.mdl";

//Furien Detector
new DetectorSprite;
new PRIMARY_WEAPONS_BITSUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
new SECONDARY_WEAPONS_BITSUM = (1<<CSW_GLOCK18)|(1<<CSW_USP)|(1<<CSW_P228)|(1<<CSW_DEAGLE)|(1<<CSW_FIVESEVEN)|(1<<CSW_ELITE);

//Bools
new bool:HaveSuperKnifeX2[33], bool:HaveSuperKnifeX3[33], bool:HaveSuperKnifeVip[33], bool:HaveDetector[33], bool:HaveNoFlash[33], bool:HaveAT4[33]

//PET
new ItemPET[33], HavePET[33], PETAtSpawn[33]
new Float:item_leaptime[33]
new bool:g_has_speed[33]

new Prefix[] = "[FurienShop]";
new Menu;

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

register_clcmd("say shop", "CmdShop");
register_clcmd("say_team shop", "CmdShop");
register_clcmd("say /shop", "CmdShop");
register_clcmd("say_team /shop", "CmdShop");

RegisterHam(Ham_Spawn, "player", "HAM_Spawn_Post");
RegisterHam(Ham_TakeDamage, "player", "HAM_TakeDamage");

register_event("CurWeapon", "EVENT_CurWeapon", "be", "1=1");
register_event("DeathMsg", "EVENT_Death", "a");
register_event("HLTV", "HLTV_EVENT_NewRound", "a", "1=0", "2=0");
register_message(get_user_msgid("ScreenFade"), "MSG_ScreenFade")

register_forward(FM_PlayerPreThink, "FWD_PreThink");
register_forward(FM_Think, "FWD_Think");

register_forward(FM_UpdateClientData, "AT4_UpdateClientData_POST", 1)
register_forward(FM_CmdStart, "AT4_CMDStart")
register_forward(FM_SetModel, "AT4_WorldModel")

register_think("at4ex_rocket", "AT4_Think")
register_touch("at4ex_rocket", "*", "AT4_Touch")

RegisterHam(Ham_Weapon_Reload, weapon_at4cs, "AT4_Reload")
RegisterHam(Ham_Item_AddToPlayer, weapon_at4cs, "AT4_AddToPlayer", 1)

cvar_radius = register_cvar("zp_at4cs_radius", "300.0")
cvar_maxdamage = register_cvar("zp_at4cs_maxdamage", "70.0")

register_clcmd("weapon_at4cs", "hook_weapon")
}

public plugin_precache() {
precache_model(SuperKnifeX2_Model);
precache_model(SuperKnifeX3_Model);
precache_model(SuperKnifeVIP_Model);
precache_model(AT4Model_V)
precache_model(AT4Model_P)
precache_model(AT4Model_W)
precache_model(AT4Rocket)
fm_precache_model(pet_model)

engfunc(EngFunc_PrecacheGeneric, "sprites/FurienShop/weapon_at4cs.txt")
engfunc(EngFunc_PrecacheGeneric, "sprites/FurienShop/at4cs.spr")

g_smoke_id = precache_model("sprites/FurienShop/rainsplash.spr")
g_spr_trail = precache_model("sprites/FurienShop/xbeam3.spr")
g_spr_exp = precache_model("sprites/FurienShop/zerogxplode.spr")
DetectorSprite = precache_model("sprites/FurienShop/Detector.spr")

new i;
for(i = 0; i < sizeof pet_sounds; i++)
fm_precache_sound(pet_sounds[i])

for(i = 0; i < sizeof(AT4Sound); i++)
engfunc(EngFunc_PrecacheSound, AT4Sound[i])


}

public plugin_natives() {
register_native("get_user_at4", "get_user_at4", 1)
register_native("set_user_at4", "set_user_at4", 1)
}

public HAM_Spawn_Post(id) {
if(is_user_alive(id)) {
HaveDetector[id] = false;
HaveAT4[id] = false;
HaveSuperKnifeVip[id] = false;
set_user_at4(id, false)
drop_primary_weapons(id)
if(get_user_team(id) == 2) {
HaveSuperKnifeX2[id] = false;
HaveSuperKnifeX3[id] = false;
}
if(get_user_team(id) != 2) {
kill_pet(id)
HavePET[id] = 0
}
if(HavePET[id]) {
fm_set_user_gravity(id, player_gravity)
fm_set_user_health(id, get_user_health(id) + 200)
fm_set_user_armor(id, get_user_armor(id) + 200)
g_has_speed[id] = true
}
else if(PETAtSpawn[id]) {
create_pet(id)
PETAtSpawn[id] = 0
g_has_speed[id] = true
}
}
}

public HAM_TakeDamage(Victim, Inflictor, Attacker, Float:Damage) {
if(is_user_connected(Attacker)) {
if(get_user_weapon(Attacker) == CSW_KNIFE) {
if(HaveSuperKnifeX2[Attacker])
SetHamParamFloat(4, Damage * 2.0)
if(HaveSuperKnifeX3[Attacker])
SetHamParamFloat(4, Damage * 2.0)
if(HaveSuperKnifeVip[Attacker])
SetHamParamFloat(4, Damage * 1.5)
}
}
}

public EVENT_CurWeapon(id) {
if(get_user_weapon(id) == CSW_KNIFE) {
if(HaveSuperKnifeX2[id])
set_pev(id, pev_viewmodel2, SuperKnifeX2_Model)
if(HaveSuperKnifeX3[id])
set_pev(id, pev_viewmodel2, SuperKnifeX3_Model)
if(HaveSuperKnifeVip[id])
set_pev(id, pev_viewmodel2, SuperKnifeVIP_Model)
}
if(get_user_weapon(id) == CSW_AT4CS) {
if(HaveAT4[id]) {
set_pev(id, pev_viewmodel2, AT4Model_V)
set_pev(id, pev_weaponmodel2, AT4Model_P)
}
}
}

public HLTV_EVENT_NewRound() {
new entid = -1
while((entid = fm_find_ent_by_class(entid, "zp_bat"))) {
if(pev(entid,PET_FLAG) == PET_KILLED)
fm_remove_entity(entid)
}
remove_entity_name("at4ex_rocket")
}

public EVENT_Death() {
new Victim = read_data(2)
HaveSuperKnifeX2[Victim] = false;
HaveSuperKnifeX3[Victim] = false;
HaveNoFlash[Victim] = false;


if(HavePET[Victim]) {
kill_pet(Victim)
HavePET[Victim] = 0
}

if(get_user_team(Victim) == 1)
HavePET[Victim] = 0
if(g_has_speed[Victim])
g_has_speed[Victim] = false
}

public MSG_ScreenFade(msgid, dest, id) {
if(HaveNoFlash[id]) {
static data[4]
data[0] = get_msg_arg_int(4)
data[1] = get_msg_arg_int(5)
data[2] = get_msg_arg_int(6)
data[3] = get_msg_arg_int(7)

if(data[0] == 255 && data[1] == 255 && data[2] == 255 && data[3] > 199)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}

public create_pet(id) {
if(!is_user_alive(id)) {
ColorChat(id, "!t%s!g PET-ul iti va aparea runda urmatoare !", Prefix)
PETAtSpawn[id] = 1
return PLUGIN_HANDLED
}
else {
ItemPET[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"))
set_pev(ItemPET[id],pev_classname,"zp_bat")

engfunc(EngFunc_SetModel,ItemPET[id],pet_model)

new Float:origin[3]
pev(id,pev_origin,origin)

set_pev(ItemPET[id],pev_origin,origin)
set_pev(ItemPET[id],pev_solid,SOLID_TRIGGER)
set_pev(ItemPET[id],pev_movetype,MOVETYPE_FLY)
set_pev(ItemPET[id],pev_owner,33)
set_pev(ItemPET[id],pev_nextthink,1.0)
set_pev(ItemPET[id],pev_sequence,0)
set_pev(ItemPET[id],pev_gaitsequence,0)
set_pev(ItemPET[id],pev_framerate,1.0)

set_pev(ItemPET[id], pev_renderfx, kRenderFxGlowShell)
set_pev(ItemPET[id], pev_rendercolor, Float:{0.0, 0.0, 200.0})

fm_set_user_gravity(id,player_gravity)

fm_set_user_health(id, get_user_health(id) + 250)
fm_set_user_armor(id, get_user_armor(id) + 350)

engfunc(EngFunc_EmitSound,ItemPET[id],CHAN_AUTO,pet_sounds[random_num(0,sizeof pet_sounds - 1)],1.0, 1.2, 0, PITCH_NORM)

HavePET[id] = 1
g_has_speed[id] = true
}
return PLUGIN_HANDLED
}

public kill_pet(id) {
if(pev_valid(ItemPET[id])) {
set_pev(ItemPET[id],pev_sequence,pet_die)
set_pev(ItemPET[id],pev_gaitsequence,pet_die)
set_pev(ItemPET[id],pev_framerate,1.0)

set_pev(ItemPET[id],PET_FLAG,PET_KILLED)

fm_drop_to_floor(ItemPET[id])

HavePET[id] = 0
g_has_speed[id] = false
}
ItemPET[id] = 0
}

public FWD_PreThink(id) {
if(is_user_connected(id) && is_user_alive(id)) {
if(get_user_team(id) == 2 && HaveDetector[id]) {
static Target, Body, Weapon;

get_user_aiming(id, Target, Body);
Weapon = get_user_weapon(id);

if((1<<Weapon) & PRIMARY_WEAPONS_BITSUM || (1<<Weapon) & SECONDARY_WEAPONS_BITSUM) {
static Origin[3];
get_user_origin(id, Origin, 3);

message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BEAMENTPOINT);
write_short(id | 0x1000);
write_coord(Origin[0]);
write_coord(Origin[1]);
write_coord(Origin[2]);
write_short(DetectorSprite);
write_byte(0);
write_byte(10);
write_byte(1);
write_byte(5);
write_byte(0);
if(is_user_alive(Target) && get_user_team(Target) == 1) {
write_byte(150);
write_byte(0);
write_byte(0);
}
else {
write_byte(0);
write_byte(150);
write_byte(0);
}
write_byte(250);
write_byte(25);
message_end();
}
}
if(allowed_leap(id)) {
static Float:velocity[3]
velocity_by_aim(id, 500, velocity)
velocity[2] = 300.0
set_pev(id, pev_velocity, velocity)
item_leaptime[id] = get_gametime()
}
}
}

public FWD_Think(ent) {
for(new i = 0; i <= get_maxplayers(); i++) {
if(ent == ItemPET[i]) {
static Float:origin[3]
static Float:origin2[3]
static Float:velocity[3]
pev(ent,pev_origin,origin2)
get_offset_origin_body(i,Float:{50.0,0.0,0.0},orig in)

if(get_distance_f(origin,origin2) > 300.0)
set_pev(ent,pev_origin,origin)

else if(get_distance_f(origin,origin2) > 80.0) {
get_speed_vector(origin2,origin,250.0,velocity)
set_pev(ent,pev_velocity,velocity)
if(pev(ent,pev_sequence) != pet_run || pev(ent,pev_framerate) != pet_run_speed) {
set_pev(ent,pev_sequence,pet_run)
set_pev(ent,pev_gaitsequence,pet_run)
set_pev(ent,pev_framerate,pet_run_speed)
}
}

else if(get_distance_f(origin,origin2) < 75.0) {
if(pev(ent,pev_sequence) != pet_idle || pev(ent,pev_framerate) != pet_idle_speed) {
set_pev(ent,pev_sequence,pet_idle)
set_pev(ent,pev_gaitsequence,pet_idle)
set_pev(ent,pev_framerate,pet_idle_speed)
}
set_pev(ent,pev_velocity,Float:{0.0,0.0,0.0})
}
pev(i,pev_origin,origin)
origin[2] = origin2[2]
entity_set_aim(ent,origin)
set_pev(ent,pev_nextthink,1.0)
break
}
}
}

public allowed_leap(id) {
if(!HavePET[id])
return false

if(!(pev(id, pev_flags) & FL_ONGROUND) || fm_get_speed(id) < 80)
return false

static buttons
buttons = pev(id, pev_button)

if(!is_user_bot(id) && (!(buttons & IN_JUMP) || !(buttons & IN_DUCK)))
return false

if(get_gametime() - item_leaptime[id] < 3)
return false

return true
}

public is_a_player(ent) {
if(ent > 0 && ent < 33)
return true

return false
}

public remove_pet(ent) {
if(pev_valid(ent))
fm_remove_entity(ent)
}

public CmdShop(id) {
if(!is_user_alive(id)) {
ColorChat(id, "!t%s!g Nu poti folosi shopul cat timp esti mort !", Prefix)
return PLUGIN_HANDLED;
}
switch(get_user_team(id))
{
case 1:
{
FurienShop(id)
return PLUGIN_HANDLED
}
case 2:
{
AntiFurienShop(id)
return PLUGIN_HANDLED
}
}

return PLUGIN_CONTINUE;
}

public FurienShop(id) {
new Title[128]

new money = cs_get_user_money(id);

formatex(Title, sizeof(Title)-1, "Money: %d^nFurien Ultimate Shop:", money)
Menu = menu_create(Title, "FurienHandler")

if(HaveSuperKnifeX2[id])
menu_additem(Menu, "Killer Knife - Ai deja", "1", 0)
else {
if(money >= 14000)
menu_additem(Menu, "Killer Knife - 14000$", "1", 0)
else
menu_additem(Menu, "Killer Knife - 14000$", "1", 0)
}

if(get_user_flags(id) & VIP_LEVEL)
{
if(HaveSuperKnifeX3[id])
menu_additem(Menu, "Killer Knife [Only VIP] - Ai deja", "2", 0)
else {
if(money >= 14000)
menu_additem(Menu, "Killer Knife [Only VIP] - 14000$", "2", 0)
else
menu_additem(Menu, "Killer Knife [Only VIP] - 14000$", "2", 0)
}
}
else
menu_additem(Menu, "Killer Knife v2 - Doar VIP", "8", 0)


if(get_user_health(id) >= 200)
menu_additem(Menu, "Health [+40] - Ai viata maxima", "3", 0)
else {
if(money >= 3000)
menu_additem(Menu, "Health [+40] - 3000$", "3", 0)
else
menu_additem(Menu, "Health [+40] - 3000$", "3", 0)
}

if(get_user_armor(id) >= 200)
menu_additem(Menu, "Armor [+40] - Ai armura maxima", "4", 0)
else {
if(money >= 3000)
menu_additem(Menu, "Armor [+40] - 3000$", "4", 0)
else
menu_additem(Menu, "Armor [+40] - 3000$", "4", 0)
}

if(HaveNoFlash[id])
menu_additem(Menu, "No Flash - Ai deja", "5", 0)
else {
if(money >= 3000)
menu_additem(Menu, "No Flash - 3000$", "5", 0)
else
menu_additem(Menu, "No Flash - 3000$", "5", 0)
}

if(user_has_weapon(id, CSW_HEGRENADE))
menu_additem(Menu, "He grenade - Ai deja", "6", 0)
else {
if(money >= 6000)
menu_additem(Menu, "He grenade - 6000$", "6", 0)
else
menu_additem(Menu, "He grenade - 6000$", "6", 0)
}

if(user_has_weapon(id, CSW_SMOKEGRENADE))
menu_additem(Menu, "Frost nade - Ai deja", "7", 0)
else {
if(money >= 4000)
menu_additem(Menu, "Frost nade - 4000$", "7", 0)
else
menu_additem(Menu, "Frost nade - 4000$", "7", 0)
}

if(get_user_flags(id) & VIP_LEVEL) {
if(HaveSuperKnifeVip[id])
menu_additem(Menu, "Vip Pack - Ai deja", "8", 0)
else {
if(money >= 10000)
menu_additem(Menu, "Vip Pack - 10000$", "8", 0)
else
menu_additem(Menu, "Vip Pack - 10000$", "8", 0)
}
}
else
menu_additem(Menu, "Vip Pack - Doar VIP", "8", 0)

menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, Menu, 0);
}

public FurienHandler(id, menu, item) {
if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 1) {
menu_destroy(menu);

return PLUGIN_HANDLED;
}
new Data[6], Name[64];
new Access, CallBack;
menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
new Key = str_to_num(Data);

new money = cs_get_user_money(id);
switch(Key) {
case 1: {
if(HaveSuperKnifeX2[id]) {
ColorChat(id, "!t%s!g Ai deja!t Killer knife!g !", Prefix);
return 1;
}
else {
money -= 14000;
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t killer knife!g !", Prefix);
return 1;
}
else {
HaveSuperKnifeX2[id] = true;
HaveSuperKnifeVip[id] = false;
EVENT_CurWeapon(id);
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t Killer knife!g !", Prefix);
}
}
}
case 2: {
if(get_user_flags(id) & VIP_LEVEL)
{
if(HaveSuperKnifeX3[id]) {
ColorChat(id, "!t%s!g Ai deja!t Killer knife!g !", Prefix);
return 1;
}
else {
money -= 14000;
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t killer knife!g !", Prefix);
return 1;
}
else {
HaveSuperKnifeX3[id] = true;
HaveSuperKnifeVip[id] = false;
EVENT_CurWeapon(id);
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t Killer knife!g !", Prefix);
}
}
}
else {
ColorChat(id, "!t%s!g Acest item poate fi cumparat doar de catre!t membrii VIP!g !", Prefix);
return 1;
}

}
case 3: {
if(get_user_health(id) >= 200) {
ColorChat(id, "!t%s!g Ai deja!t 200 health!g !", Prefix);
return 1;
}
else {
money -= 3000;
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t +40 Health!g !", Prefix);
return 1;
}
else {
if(get_user_health(id) + 40 > 200)
fm_set_user_health(id, 200)
else {
fm_set_user_health(id, get_user_health(id) + 40)
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t +40 Health!g !", Prefix)
}
}
}
}
case 4: {
if(get_user_armor(id) >= 200) {
ColorChat(id, "!t%s!g Ai deja!t 200 armor!g !", Prefix);
return 1;
}
else {
money -= 3000
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t +40 Armor!g !", Prefix);
return 1;
}
else {
if(get_user_armor(id) + 40 > 200)
fm_set_user_armor(id, 200);
else {
fm_set_user_armor(id, get_user_armor(id) + 40) ;
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t +40 Armor!g !", Prefix);
}
}
}
}
case 5: {
if(HaveNoFlash[id]) {
ColorChat(id, "!t%s!g Ai deja!t No Flash!g !", Prefix);
return 1;
}
else {
money -= 3000
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t No Flash!g !", Prefix);
return 1;
}
else {
HaveNoFlash[id] = true;
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t No Flash!g !", Prefix);
}
}
}
case 6: {
if(user_has_weapon(id, CSW_HEGRENADE)) {
ColorChat(id, "!t%s!g Ai deja!t HE Grenade!g !", Prefix);
return 1;
}
else {
money -= 6000
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t HE Grenade!g !", Prefix);
return 1;
}
else {
fm_give_item(id, "weapon_hegrenade");
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t HE Grenade!g !", Prefix);
}
}
}
case 7: {
if(user_has_weapon(id, CSW_SMOKEGRENADE)) {
ColorChat(id, "!t%s!g Ai deja!t Frost Nade!g !", Prefix);
return 1;
}
else {
money -= 4000
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t Frost Nade!g !", Prefix);
return 1;
}
else {
fm_give_item(id, "weapon_smokegrenade");
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t Frost Nade!g !", Prefix);
}
}
}
case 8: {
if(get_user_flags(id) & VIP_LEVEL) {
if(HaveSuperKnifeVip[id]) {
ColorChat(id, "!t%s!g Ai deja!t VIP Pack!g !", Prefix);
return 1;
}
else {
money -= 10000
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t VIP Pack!g !", Prefix);
return 1;
}
else {
HaveSuperKnifeVip[id] = true;
HaveSuperKnifeX2[id] = false;
EVENT_CurWeapon(id);
fm_set_user_armor(id, 200);
fm_set_user_health(id, 200);
cs_set_user_money(id, money);
}
}
}
else {
ColorChat(id, "!t%s!g Acest item poate fi cumparat doar de catre!t membrii VIP!g !", Prefix);
return 1;
}
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}

public AntiFurienShop(id) {
new Title[128]

new money = cs_get_user_money(id);
formatex(Title, sizeof(Title)-1, "Money: %d^nAnti-Furien Ultimate Shop:", money)
Menu = menu_create(Title, "AntiFurienHandler")

if(HaveDetector[id])
menu_additem(Menu, "Furien Detector - Ai deja", "1", 0)
else {
if(money >= 8000)
menu_additem(Menu, "Furien Detector - 8000$", "1", 0)
else
menu_additem(Menu, "Furien Detector - 8000$", "1", 0)
}

if(cs_get_user_defuse(id))
menu_additem(Menu, "Defuse Kit - Ai deja", "2", 0)
else {
if(money >= 500)
menu_additem(Menu, "Defuse Kit - 500$", "2", 0)
else
menu_additem(Menu, "Defuse Kit - 500$", "2", 0 )
}

if(get_user_health(id) >= 200)
menu_additem(Menu, "Health [+40] - Ai viata maxima", "3", 0)
else {
if(money >= 3000)
menu_additem(Menu, "Health [+40] - 3000$", "3", 0)
else
menu_additem(Menu, "Health [+40] - 3000$", "3", 0)
}

if(get_user_armor(id) >= 200)
menu_additem(Menu, "Armor [+40] - Ai armura maxima", "4", 0)
else {
if(money >= 3000)
menu_additem(Menu, "Armor [+40] - 3000$", "4", 0)
else
menu_additem(Menu, "Armor [+40] - 3000$", "4", 0)
}

if(HaveNoFlash[id])
menu_additem(Menu, "No Flash - Ai deja", "5", 0)
else {
if(money >= 3000)
menu_additem(Menu, "No Flash - 3000$", "5", 0)
else
menu_additem(Menu, "No Flash - 3000$", "5", 0)
}

if(user_has_weapon(id, CSW_SMOKEGRENADE))
menu_additem(Menu, "Frost nade - Ai deja", "6", 0)
else {
if(money >= 3000)
menu_additem(Menu, "Frost nade - 3000$", "6", 0)
else
menu_additem(Menu, "Frost nade - 3000$", "6", 0)
}

if(HavePET[id])
menu_additem(Menu, "PET - Ai deja", "7", 0)
else {
if(money >= 10000)
menu_additem(Menu, "PET - 10000$", "7", 0)
else
menu_additem(Menu, "PET - 10000$", "7", 0)
}

if(get_user_flags(id) & VIP_LEVEL) {
if(HaveAT4[id])
menu_additem(Menu, "Bazooka - rAi deja", "8", 0)
else {
if(money >= 14000)
menu_additem(Menu, "Bazooka - 14000$", "8", 0)
else
menu_additem(Menu, "Bazooka - 14000$", "8", 0)
}
}
else
menu_additem(Menu, "Bazooka - Doar VIP", "8", 0)

menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, Menu, 0);
}

public AntiFurienHandler(id, menu, item) {
if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
menu_destroy(menu);

return PLUGIN_HANDLED;
}
new Data[6], Name[64];
new Access, CallBack;
menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
new Key = str_to_num(Data);

new money = cs_get_user_money(id);

switch(Key) {
case 1: {
if(HaveDetector[id]) {
ColorChat(id, "!t%s!g Ai deja!t Furien Detector!g !", Prefix);
return 1;
}
else {
money -= 8000
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti !tbani!g pentru cumpara!t Furien Detector!g !", Prefix);
return 1;
}
else {
HaveDetector[id] = true;
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t Furien Detector!g !", Prefix);
}
}
}
case 2: {
if(cs_get_user_defuse(id)) {
ColorChat(id, "!t%s!g Ai deja!t Defuse KIT!g !", Prefix);
return 1;
}
else {
money -= 500
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t Defuse KIT!g !", Prefix);
return 1;
}
else {
cs_set_user_defuse(id, 1)
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t Defuse KIT!g !", Prefix);
}
}
}
case 3: {
if(get_user_health(id) >= 200) {
ColorChat(id, "!t%s!g Ai deja!t 200 health!g !", Prefix);
return 1;
}
else {
money -= 3000
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t +40 Health!g !", Prefix);
return 1;
}
else {
if(get_user_health(id) + 40 > 200)
fm_set_user_health(id, 200)
else {
fm_set_user_health(id, get_user_health(id) + 40)
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t +40 Health!g !", Prefix)
}
}
}
}
case 4: {
if(get_user_armor(id) >= 200) {
ColorChat(id, "!t%s!g Ai deja!t 200 armor!g !", Prefix);
return 1;
}
else {
money -= 3000
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t +40 Armor!g !", Prefix);
return 1;
}
else {
if(get_user_armor(id) + 40 > 200)
fm_set_user_armor(id, 200);
else {
fm_set_user_armor(id, get_user_armor(id) + 40) ;
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t +40 Armor!g !", Prefix);
}
}
}
}
case 5: {
if(HaveNoFlash[id]) {
ColorChat(id, "!t%s!g Ai deja!t No Flash!g !", Prefix);
return 1;
}
else {
money -= 3000
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t No Flash!g !", Prefix);
return 1;
}
else {
HaveNoFlash[id] = true;
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t No Flash!g !", Prefix);
}
}
}
case 6: {
if(user_has_weapon(id, CSW_SMOKEGRENADE)) {
ColorChat(id, "!t%s!g Ai deja!t Frost Nade!g !", Prefix);
return 1;
}
else {
money -= 3000
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t Frost Nade!g !", Prefix);
return 1;
}
else {
fm_give_item(id, "weapon_smokegrenade");
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t Frost Nade!g !", Prefix);
}
}
}
case 7: {
if(HavePET[id]) {
ColorChat(id, "!t%s!g Ai deja un!t PET!g !", Prefix);
return 1;
}
else {
money -= 10000
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai suficienti!t bani!g pentru a cumpara!t PET", Prefix);
return 1;
}
else {
create_pet(id)
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t PET!g !", Prefix);
}
}
}
case 8: {
if(get_user_flags(id) & VIP_LEVEL) {
if(HaveAT4[id]) {
ColorChat(id, "!t%s!g Ai deja!t Bazooka!g !", Prefix);
return 1;
}
else {
money -= 14000
if(money < 0) {
ColorChat(id, "!t%s!g Nu ai destui bani pentru!t Bazooka!g !", Prefix)
return 1;
}
else {
set_user_at4(id, true)
cs_set_user_money(id, money);
ColorChat(id, "!t%s!g Ai cumparat!t Bazooka!g !", Prefix);
}
}
}
else {
ColorChat(id, "!t%s!g Acest item poate fi cumparat doar de catre!t membrii VIP!g !", Prefix);
return 1;
}
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}

public AT4_UpdateClientData_POST(id, sendweapons, cd_handle) {
if(is_user_connected(id) && is_user_alive(id)) {
if(get_user_weapon(id) == CSW_AT4CS && HaveAT4[id])
set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001)
}
}

public AT4_AddToPlayer(ent, id) {
if(!is_valid_ent(ent) || !is_user_alive(id))
return HAM_IGNORED

if(entity_get_int(ent, EV_INT_impulse) == 61296) {
HaveAT4[id] = true
entity_set_int(id, EV_INT_impulse, 0)

return HAM_HANDLED
}

if(HaveAT4[id]) {
message_begin(MSG_ONE, get_user_msgid("WeaponList"), _, id)
write_string("weapon_at4cs"); // WeaponName
write_byte(3) // PrimaryAmmoID
write_byte(1) // PrimaryAmmoMaxAmount
write_byte(-1) // SecondaryAmmoID
write_byte(-1) // SecondaryAmmoMaxAmount
write_byte(0) // SlotID (0...N)
write_byte(4) // NumberInSlot (1...N)
write_byte(CSW_AT4CS) // WeaponID
write_byte(0) // Flags
message_end()
}
return HAM_HANDLED
}

public AT4_CMDStart(id, uc_handle, seed) {
if(is_user_connected(id) && is_user_alive(id)) {
if(get_user_weapon(id) == CSW_AT4CS && HaveAT4[id]) {
static CurButton
CurButton = get_uc(uc_handle, UC_Buttons)
if(CurButton & IN_ATTACK) {
static Float:CurTime
CurTime = get_gametime()

static at4cs
at4cs = fm_find_ent_by_owner(-1, weapon_at4cs, id)

if(cs_get_weapon_ammo(at4cs) > 0 && !is_reloading[id]) {
if(CurTime - 4.5 > g_lastfire[id]) {
set_weapon_anim(id, 1)
emit_sound(id, CHAN_WEAPON, AT4Sound[0], 1.0, ATTN_NORM, 0, PITCH_NORM)

create_rocket(id)

static Float:Punch_Angles[3]

Punch_Angles[0] = -20.0
Punch_Angles[1] = 0.0
Punch_Angles[2] = 0.0

set_pev(id, pev_punchangle, Punch_Angles)
cs_set_weapon_ammo(at4cs, cs_get_weapon_ammo(at4cs) - 1)

if(cs_get_weapon_ammo(at4cs) <= 0 && !is_reloading[id]) {
if(cs_get_user_bpammo(id, CSW_AT4CS) > 0) {
set_task(1.0, "at4cs_reload", id)
}
}
if(cs_get_user_zoom(id))
cs_set_user_zoom(id, CS_RESET_ZOOM, 1)

g_lastfire[id] = CurTime
}
}
else {
if(!is_reloading[id]) {
if(cs_get_user_bpammo(id, CSW_AT4CS) > 0) {
if(CurTime - 1.0 > g_lastfire[id]) {
at4cs_reload(id)
g_lastfire[id] = CurTime
}
}
}
}
}
if(CurButton & IN_ATTACK2) {
static Float:CurTime
CurTime = get_gametime()

if((CurTime - 0.5 > g_lastaim[id]) && !is_reloading[id]) {
if(!g_aiming[id]) {
cs_set_user_zoom(id, CS_SET_FIRST_ZOOM, 1)
g_aiming[id] = 1
}
else {
cs_set_user_zoom(id, CS_RESET_ZOOM, 1)
g_aiming[id] = 0
}
g_lastaim[id] = CurTime
}
}

CurButton &= ~IN_ATTACK
set_uc(uc_handle, UC_Buttons, CurButton)

CurButton &= ~IN_RELOAD
set_uc(uc_handle, UC_Buttons, CurButton)
}
}

return FMRES_HANDLED
}

public AT4_WorldModel(ent, const model[]) {
if(!is_valid_ent(ent))
return FMRES_IGNORED

static szClassName[33]
entity_get_string(ent, EV_SZ_classname, szClassName, charsmax(szClassName))

if(!equal(szClassName, "weaponbox"))
return FMRES_IGNORED

static iOwner
iOwner = entity_get_edict(ent, EV_ENT_owner)

if(equal(model, "models/w_m249.mdl")) {
static at4cs
at4cs = find_ent_by_owner(-1, "weapon_m249", ent)

if(!is_valid_ent(at4cs))
return FMRES_IGNORED;

if(HaveAT4[iOwner]) {
entity_set_int(at4cs, EV_INT_impulse, 61296)
HaveAT4[iOwner] = false;
entity_set_model(ent, AT4Model_W)

return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}

public at4cs_reload(id) {
if(is_reloading[id])
return

is_reloading[id] = 1
set_weapon_anim(id, 3)

set_task(0.1, "checking_reload", id+TASK_CHECKRELOAD, _, _, "b")
set_task(4.0, "reload_complete", id+TASK_RELOAD)
}

public checking_reload(id) {
id -= TASK_CHECKRELOAD

if(cs_get_user_zoom(id))
cs_set_user_zoom(id, CS_RESET_ZOOM, 1)

if(get_user_weapon(id) != CSW_AT4CS || !HaveAT4[id]) {
remove_task(id+TASK_CHECKRELOAD)
remove_task(id+TASK_RELOAD)

is_reloading[id] = 0
}
}

public reload_complete(id) {
id -= TASK_RELOAD

if(!is_reloading[id])
return

remove_task(id+TASK_CHECKRELOAD)

static at4cs
at4cs = fm_find_ent_by_owner(-1, weapon_at4cs, id)

cs_set_weapon_ammo(at4cs, 1)
cs_set_user_bpammo(id, CSW_AT4CS, cs_get_user_bpammo(id, CSW_AT4CS) - 1)
is_reloading[id] = 0
}

public AT4_Reload(ent) {
static id
id = pev(ent, pev_owner)

if(is_user_connected(id) && is_user_alive(id)) {
if(get_user_weapon(id) == CSW_AT4CS && HaveAT4[id]) {

static Float:CurTime
CurTime = get_gametime()

if(!is_reloading[id]) {
if(cs_get_user_bpammo(id, CSW_AT4CS) > 0) {
if(CurTime - 1.0 > g_lastfire[id]) {
at4cs_reload(id)
g_lastfire[id] = CurTime
}
}
}
}
}
return HAM_SUPERCEDE
}

public AT4_Think(ent) {
if(!pev_valid(ent))
return

static Float:Origin[3]
pev(ent, pev_origin, Origin)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_SPRITE)
engfunc(EngFunc_WriteCoord, Origin[0])
engfunc(EngFunc_WriteCoord, Origin[1])
engfunc(EngFunc_WriteCoord, Origin[2])
write_short(g_smoke_id)
write_byte(2)
write_byte(200)
message_end()

if(pev(ent, pev_iuser4) == 0) {
static Victim
Victim = FindClosesEnemy(ent)

if(is_user_alive(Victim)) {
set_pev(ent, pev_iuser4, Victim)
}
}
else {
static Victim
Victim = pev(ent, pev_iuser4)

if(is_user_alive(Victim)) {
static Float:VicOrigin[3]
pev(Victim, pev_origin, VicOrigin)

turn_to_target(ent, Origin, Victim, VicOrigin)
hook_ent(ent, Victim, 500.0)
}
else {
set_pev(ent, pev_iuser4, 0)
}
}
set_pev(ent, pev_nextthink, halflife_time() + 0.075)
}

public AT4_Touch(rocket, touch) {
if(!pev_valid(rocket))
return

if(is_user_alive(touch) && pev(rocket, pev_owner) == touch)
return

static Float:Origin[3]
pev(rocket, pev_origin, Origin)

message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, Origin[0])
engfunc(EngFunc_WriteCoord, Origin[1])
engfunc(EngFunc_WriteCoord, Origin[2])
write_short(g_spr_exp) // sprite index
write_byte(20) // scale in 0.1's
write_byte(30) // framerate
write_byte(0) // flags
message_end()

static owner, iVictim

iVictim = -1
owner = pev(rocket, pev_owner)

while((iVictim = find_ent_in_sphere(iVictim, Origin, get_pcvar_float(cvar_radius))) != 0) {
if((0 < iVictim < 32) && is_user_alive(iVictim) && iVictim != owner) {
new Float:MaxDamage, Float:Damage

MaxDamage = get_pcvar_float(cvar_maxdamage)
Damage = random_float(MaxDamage - random_float(0.0, 100.0), MaxDamage + random_float(0.0, 100.0))

ExecuteHam(Ham_TakeDamage, iVictim, 0, owner, 0, DMG_BULLET)

static health
health = get_user_health(iVictim)

if(health - Damage >= 1) {
fm_set_user_health(iVictim, health - floatround(Damage))
}
else {
death_message(owner, iVictim, 1)
}
}
}
engfunc(EngFunc_RemoveEntity, rocket)
}

public create_rocket(id) {
new ent, Float:Origin[3], Float:Angles[3], Float:Velocity[3]

ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
engfunc(EngFunc_GetAttachment, id, 0, Origin, Angles)
pev(id, pev_angles, Angles)

set_pev(ent, pev_origin, Origin)
set_pev(ent, pev_angles, Angles)
set_pev(ent, pev_solid, 2)
set_pev(ent, pev_movetype, 5)
set_pev(ent, pev_classname, "at4ex_rocket")
set_pev(ent, pev_owner, id)
engfunc(EngFunc_SetModel, ent, AT4Rocket)

set_pev(ent, pev_mins, {-1.0, -1.0, -1.0})
set_pev(ent, pev_maxs, {1.0, 1.0, 1.0})

velocity_by_aim(id, 1750, Velocity)
set_pev(ent, pev_velocity, Velocity)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(ent) // entity:attachment to follow
write_short(g_spr_trail) // sprite index
write_byte(25) // life in 0.1's
write_byte(2) // line width in 0.1's
write_byte(255) // r
write_byte(255) // g
write_byte(255) // b
write_byte(200) // brightness
message_end()

set_pev(ent, pev_iuser4, 0)
set_pev(ent, pev_nextthink, halflife_time() + 0.1)
}

public hook_weapon(id) {
engclient_cmd(id, weapon_at4cs)
}

public get_user_at4(id) {
return HaveAT4[id];
}

public set_user_at4(id, at4) {
if(at4) {
if(!HaveAT4[id]) {
drop_primary_weapons(id);
HaveAT4[id] = true;
is_reloading[id] = 0
g_aiming[id] = 0
fm_give_item(id, weapon_at4cs);
new Clip = fm_get_user_weapon_entity(id, CSW_AT4CS);
cs_set_weapon_ammo(Clip, 1);
cs_set_user_bpammo(id, CSW_AT4CS, 50)
}
}
else {
if(HaveAT4[id]) {
HaveAT4[id] = false;
}
}
}

//-------------------------------------------------------------------------//
//=============================| Stocks |=================================//
//-----------------------------------------------------------------------//
stock get_offset_origin_body(ent,const Float:offset[3],Float:origin[3]) {
if(!pev_valid(ent))
return 0;

new Float:angle[3]
pev(ent,pev_angles,angle)

pev(ent,pev_origin,origin)

origin[0] += floatcos(angle[1],degrees) * offset[0]
origin[1] += floatsin(angle[1],degrees) * offset[0]

origin[1] += floatcos(angle[1],degrees) * offset[1]
origin[0] += floatsin(angle[1],degrees) * offset[1]

return 1;
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3]) {
new_velocity[0] = origin2[0] - origin1[0]
new_velocity[1] = origin2[1] - origin1[1]
new_velocity[2] = origin2[2] - origin1[2]
new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
new_velocity[0] *= num
new_velocity[1] *= num
new_velocity[2] *= num

return 1;
}

stock entity_set_aim(ent,const Float:origin2[3],bone=0) {
if(!pev_valid(ent))
return 0;

static Float:origin[3]
origin[0] = origin2[0]
origin[1] = origin2[1]
origin[2] = origin2[2]

static Float:ent_origin[3], Float:angles[3]

if(bone)
engfunc(EngFunc_GetBonePosition,ent,bone,ent_origi n,angles)
else
pev(ent,pev_origin,ent_origin)

origin[0] -= ent_origin[0]
origin[1] -= ent_origin[1]
origin[2] -= ent_origin[2]

static Float:v_length
v_length = vector_length(origin)

static Float:aim_vector[3]
aim_vector[0] = origin[0] / v_length
aim_vector[1] = origin[1] / v_length
aim_vector[2] = origin[2] / v_length

static Float:new_angles[3]
vector_to_angle(aim_vector,new_angles)

new_angles[0] *= -1

if(new_angles[1]>180.0) new_angles[1] -= 360
if(new_angles[1]<-180.0) new_angles[1] += 360
if(new_angles[1]==180.0 || new_angles[1]==-180.0) new_angles[1]=-179.999999

set_pev(ent,pev_angles,new_angles)
set_pev(ent,pev_fixangle,1)

return 1;
}


stock set_weapon_anim(id, anim) {
set_pev(id, pev_weaponanim, anim)

message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id)
write_byte(anim)
write_byte(pev(id,pev_body))
message_end()
}

stock death_message(Killer, Victim, ScoreBoard) {
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
ExecuteHamB(Ham_Killed, Victim, Killer, 2)
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)

make_deathmsg(Killer, Victim, 0, "")

if (ScoreBoard) {
message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
write_byte(Killer) // id
write_short(pev(Killer, pev_frags)) // frags
write_short(cs_get_user_deaths(Killer)) // deaths
write_short(0) // class?
write_short(get_user_team(Killer)) // team
message_end()

message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
write_byte(Victim) // id
write_short(pev(Victim, pev_frags)) // frags
write_short(cs_get_user_deaths(Victim)) // deaths
write_short(0) // class?
write_short(get_user_team(Victim)) // team
message_end()
}
}

stock FindClosesEnemy(entid) {
new Float:Dist
new Float:maxdistance = 300.0
new indexid = 0

for(new i = 1; i <= get_maxplayers(); i++){
if(is_user_alive(i) && is_valid_ent(i) && can_see_fm(entid, i)
&& pev(entid, pev_owner) != i && cs_get_user_team(pev(entid, pev_owner)) != cs_get_user_team(i)) {
Dist = entity_range(entid, i)
if(Dist <= maxdistance) {
maxdistance = Dist
indexid = i

return indexid
}
}
}
return 0
}

stock bool:can_see_fm(entindex1, entindex2) {
if (!entindex1 || !entindex2)
return false

if (pev_valid(entindex1) && pev_valid(entindex1)) {
new flags = pev(entindex1, pev_flags)
if (flags & EF_NODRAW || flags & FL_NOTARGET)
return false

new Float:lookerOrig[3]
new Float:targetBaseOrig[3]
new Float:targetOrig[3]
new Float:temp[3]

pev(entindex1, pev_origin, lookerOrig)
pev(entindex1, pev_view_ofs, temp)
lookerOrig[0] += temp[0]
lookerOrig[1] += temp[1]
lookerOrig[2] += temp[2]

pev(entindex2, pev_origin, targetBaseOrig)
pev(entindex2, pev_view_ofs, temp)
targetOrig[0] = targetBaseOrig [0] + temp[0]
targetOrig[1] = targetBaseOrig [1] + temp[1]
targetOrig[2] = targetBaseOrig [2] + temp[2]

engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the had of seen player
if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater)) {
return false
}
else {
new Float:flFraction
get_tr2(0, TraceResult:TR_flFraction, flFraction)
if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) {
return true
}
else {
targetOrig[0] = targetBaseOrig [0]
targetOrig[1] = targetBaseOrig [1]
targetOrig[2] = targetBaseOrig [2]
engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the body of seen player
get_tr2(0, TraceResult:TR_flFraction, flFraction)
if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) {
return true
}
else {
targetOrig[0] = targetBaseOrig [0]
targetOrig[1] = targetBaseOrig [1]
targetOrig[2] = targetBaseOrig [2] - 17.0
engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the legs of seen player
get_tr2(0, TraceResult:TR_flFraction, flFraction)
if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) {
return true
}
}
}
}
}
return false
}

stock turn_to_target(ent, Float:Ent_Origin[3], target, Float:Vic_Origin[3]) {
if(target) {
new Float:newAngle[3]
entity_get_vector(ent, EV_VEC_angles, newAngle)
new Float:x = Vic_Origin[0] - Ent_Origin[0]
new Float:z = Vic_Origin[1] - Ent_Origin[1]

new Float:radians = floatatan(z/x, radian)
newAngle[1] = radians * (180 / 3.14)
if (Vic_Origin[0] < Ent_Origin[0])
newAngle[1] -= 180.0

entity_set_vector(ent, EV_VEC_angles, newAngle)
}
}

stock hook_ent(ent, victim, Float:speed) {
static Float:fl_Velocity[3]
static Float:VicOrigin[3], Float:EntOrigin[3]

pev(ent, pev_origin, EntOrigin)
pev(victim, pev_origin, VicOrigin)

static Float:distance_f
distance_f = get_distance_f(EntOrigin, VicOrigin)

if (distance_f > 10.0) {
new Float:fl_Time = distance_f / speed

fl_Velocity[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
fl_Velocity[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
}
else {
fl_Velocity[0] = 0.0
fl_Velocity[1] = 0.0
fl_Velocity[2] = 0.0
}

entity_set_vector(ent, EV_VEC_velocity, fl_Velocity)
}

stock drop_primary_weapons(Player) {
static weapons[32], num, i, weaponid;
num = 0;
get_user_weapons(Player, weapons, num);

for(i = 0; i < num; i++) {
weaponid = weapons [i];

if(((1<<weaponid) & PRIMARY_WEAPONS_BITSUM)) {
static wname[32];
get_weaponname(weaponid, wname, charsmax(wname));

engclient_cmd(Player, "drop", wname);
}
}
}

stock ColorChat(const id, const input[], any:...) {
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);

replace_all(msg, 190, "!g", "^4");
replace_all(msg, 190, "!y", "^1");
replace_all(msg, 190, "!t", "^3");

if(id) players[0] = id;
else get_players(players, count, "ch"); {
for(new i = 0; i < count; i++) {
if(is_user_connected(players[i])) {
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1048\\ f0\\ fs16 \n\\ par }
*/

JuNNNkie
17-09-2014, 09:03 PM
Nu oferim suport celor care nu au sv in comunitate!Daca vrei posteaza 50 topicuri utile
:locked: