Jump to content

[Plugin] Furien Shop (V 2.0)


LuK.ZEW #

Recommended Posts

Descriere: Este un plugin de shop pentru modul furien putin mai avansat. 

 

Pluginul conține: 

 

#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_superknife_x2.mdl";

new SuperKnifeX3_Model[] = "models/FurienShop/v_superknife_x3.mdl";

new SuperKnifeVIP_Model[] = "models/FurienShop/v_superknife_vip.mdl";

 

// Natives

native get_user_credits(id)

native set_user_credits(id, amount)

 

//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)

 

for(i = 0; i < sizeof(AT4Sound); i++)

engfunc(EngFunc_PrecacheSound, AT4Sound)

 

 

}

 

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_connected(id)) {

HaveNoFlash[id] = false;

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) + 250)

fm_set_user_armor(id, get_user_armor(id) + 350)

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 * 3.0)

if(HaveSuperKnifeVip[Attacker])

SetHamParamFloat(4, Damage * 3.0)

}

}

}

 

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;

 

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) {

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},origin)

 

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;

}

switch(get_user_team(id)) {

case 1: FurienShop(id)

case 2: AntiFurienShop(id)

}

}

 

public FurienShop(id) {

if(is_user_alive(id) && get_user_team(id) == 1) {

new Title[128]

formatex(Title, sizeof(Title)-1, "\rCredite: \y%d\r^n\rFurien Shop:", get_user_credits(id))

Menu = menu_create(Title, "FurienHandler")

 

if(HaveSuperKnifeX2[id])

menu_additem(Menu, "\dSuper Knife [X2]\w - \rAi deja", "1", 0)

else {

if(get_user_credits(id) >= 10)

menu_additem(Menu, "\wSuper Knife\r [X2]\w - \r10 Credite", "1", 0)

else 

menu_additem(Menu, "\dSuper Knife [X2]\w - \r10 Credite", "1", 0)

}

 

if(HaveSuperKnifeX3[id])

menu_additem(Menu, "\dSuper Knife [X3]\w - \rAi deja", "2", 0)

else {

if(get_user_credits(id) >= 20)

menu_additem(Menu, "\wSuper Knife\r [X3]\w - \r20 Credite", "2", 0)

else 

menu_additem(Menu, "\dSuper Knife [X3]\w - \r20 Credite", "2", 0)

}

 

if(get_user_health(id) >= 250) 

menu_additem(Menu, "\dHealth [+50]\w -\r Ai viata maxima", "3", 0)

else {

if(get_user_credits(id) >= 15)

menu_additem(Menu, "\wHealth \r[+50]\w - \r15 Credite", "3", 0)

else 

menu_additem(Menu, "\dHealth [+50]\w - \r15 Credite", "3", 0)

}

 

if(get_user_armor(id) >= 250) 

menu_additem(Menu, "\dArmor [+50]\w -\r Ai armura maxima", "4", 0)

else {

if(get_user_credits(id) >= 10)

menu_additem(Menu, "\wArmor \r[+50]\w - \r10 Credite", "4", 0)

else 

menu_additem(Menu, "\dArmor [+50]\w - \r10 Credite", "4", 0)

}

 

if(HaveNoFlash[id])

menu_additem(Menu, "\dNo Flash\w - \rAi deja", "5", 0)

else {

if(get_user_credits(id) >= 5)

menu_additem(Menu, "\wNo Flash - \r5 Credite", "5", 0)

else 

menu_additem(Menu, "\dNo Flash\w - \r5 Credite", "5", 0)

}

 

if(user_has_weapon(id, CSW_HEGRENADE))

menu_additem(Menu, "\dHe grenade\w - \rAi deja", "6", 0)

else {

if(get_user_credits(id) >= 25)

menu_additem(Menu, "\wHe grenade - \r25 Credite", "6", 0)

else 

menu_additem(Menu, "\dHe grenade\w - \r25 Credite", "6", 0)

}

 

if(user_has_weapon(id, CSW_SMOKEGRENADE))

menu_additem(Menu, "\dFrost nade\w - \rAi deja", "7", 0)

else {

if(get_user_credits(id) >= 30)

menu_additem(Menu, "\wFrost nade - \r30 Credite", "7", 0)

else 

menu_additem(Menu, "\dFrost nade\w - \r30 Credite", "7", 0)

}

 

if(get_user_flags(id) & VIP_LEVEL) {

if(HaveSuperKnifeVip[id])

menu_additem(Menu, "\dVip Pack\w - \rAi deja", "8", 0)

else {

if(get_user_credits(id) >= 100)

menu_additem(Menu, "\wVip Pack - \r100 Credite", "8", 0)

else 

menu_additem(Menu, "\dVip Pack\w - \r100 Credite", "8", 0)

}

}

else 

menu_additem(Menu, "\dVip Pack\w - \rDoar 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);

switch(Key) {

case 1: {

if(HaveSuperKnifeX2[id]) {

ColorChat(id, "!t%s!g Ai deja!t SuperKnife [X2]!g !", Prefix);

return 1;

}

else {

new Credits = get_user_credits(id) - 10 

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t SuperKnife [X2]!g !", Prefix);

return 1;

}

else {

HaveSuperKnifeX2[id] = true;

HaveSuperKnifeX3[id] = false;

HaveSuperKnifeVip[id] = false;

EVENT_CurWeapon(id);

set_user_credits(id, Credits);

ColorChat(id, "!t%s!g Ai cumparat!t SuperKnife [X2]!g !", Prefix);

}

}

}

case 2: {

if(HaveSuperKnifeX3[id]) {

ColorChat(id, "!t%s!g Ai deja!t SuperKnife [X3]!g !", Prefix);

return 1;

}

else {

new Credits = get_user_credits(id) - 20 

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t SuperKnife [X3]!g !", Prefix);

return 1;

}

else {

HaveSuperKnifeX3[id] = true;

EVENT_CurWeapon(id);

set_user_credits(id, Credits);

ColorChat(id, "!t%s!g Ai cumparat!t SuperKnife [X3]!g !", Prefix);

}

}

}

case 3: {

if(get_user_health(id) >= 250) {

ColorChat(id, "!t%s!g Ai deja!t 250 health!g !", Prefix);

return 1;

}

else {

new Credits = get_user_credits(id) - 15 

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Health!g !", Prefix);

return 1;

}

else {

if(get_user_health(id) + 50 > 250)

fm_set_user_health(id, 250)

else {

fm_set_user_health(id, get_user_health(id) + 50) 

set_user_credits(id, Credits)

ColorChat(id, "!t%s!g Ai cumparat!t +50 Health!g !", Prefix)

}

}

}

}

case 4: {

if(get_user_armor(id) >= 250) {

ColorChat(id, "!t%s!g Ai deja!t 250 armor!g !", Prefix);

return 1;

}

else {

new Credits = get_user_credits(id) - 10

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Armor!g !", Prefix);

return 1;

}

else {

if(get_user_armor(id) + 50 > 250)

fm_set_user_armor(id, 250);

else {

fm_set_user_armor(id, get_user_armor(id) + 50) ;

set_user_credits(id, Credits);

ColorChat(id, "!t%s!g Ai cumparat!t +50 Armor!g !", Prefix);

}

}

}

}

case 5: {

if(HaveNoFlash[id]) {

ColorChat(id, "!t%s!g Ai deja!t No Flash!g !", Prefix);

return 1;

}

else {

new Credits = get_user_credits(id) - 5 

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t No Flash!g !", Prefix);

return 1;

}

else {

HaveNoFlash[id] = true;

set_user_credits(id, Credits);

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 {

new Credits = get_user_credits(id) - 25 

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t HE Grenade!g !", Prefix);

return 1;

}

else {

fm_give_item(id, "weapon_hegrenade");

set_user_credits(id, Credits);

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 {

new Credits = get_user_credits(id) - 30 

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Frost Nade!g !", Prefix);

return 1;

}

else {

fm_give_item(id, "weapon_smokegrenade");

set_user_credits(id, Credits);

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 {

new Credits = get_user_credits(id) - 100

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t VIP Pac!g !", Prefix);

return 1;

}

else {

HaveSuperKnifeVip[id] = true;

HaveSuperKnifeX2[id] = false;

HaveSuperKnifeX3[id] = false;

EVENT_CurWeapon(id);

fm_set_user_armor(id, 300);

fm_set_user_health(id, 300);

set_user_credits(id, Credits)

}

}

}

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) {

if(is_user_alive(id) && get_user_team(id) == 2) {

new Title[128]

formatex(Title, sizeof(Title)-1, "\rCredite: \y%d\r^n\rAnti-Furien Shop:", get_user_credits(id))

Menu = menu_create(Title, "AntiFurienHandler")

 

if(HaveDetector[id])

menu_additem(Menu, "\dFurien Detector\w - \rAi deja", "1", 0)

else {

if(get_user_credits(id) >= 50) 

menu_additem(Menu, "\wFurien Detector - \r50 Credite", "1", 0)

else 

menu_additem(Menu, "\dFurien Detector\w - \r50 Credite", "1", 0)

}

 

if(cs_get_user_defuse(id))

menu_additem(Menu, "\dDefuse Kit\w - \rAi deja", "2", 0)

else {

if(get_user_credits(id) >= 2)

menu_additem(Menu, "\wDefuse Kit - \r2 Credite", "2", 0)

else 

menu_additem(Menu, "\dDefuse Kit\w - \r2 Credite", "2", 0 )

}

 

if(get_user_health(id) >= 250) 

menu_additem(Menu, "\dHealth [+50]\w -\r Ai viata maxima", "3", 0)

else {

if(get_user_credits(id) >= 15)

menu_additem(Menu, "\wHealth \r[+50]\w - \r15 Credite", "3", 0)

else 

menu_additem(Menu, "\dHealth [+50]\w - \r15 Credite", "3", 0)

}

 

if(get_user_armor(id) >= 250) 

menu_additem(Menu, "\dArmor [+50]\w -\r Ai armura maxima", "4", 0)

else {

if(get_user_credits(id) >= 10)

menu_additem(Menu, "\wArmor \r[+50]\w - \r10 Credite", "4", 0)

else 

menu_additem(Menu, "\dArmor [+50]\w - \r10 Credite", "4", 0)

}

 

if(HaveNoFlash[id])

menu_additem(Menu, "\dNo Flash\w - \rAi deja", "5", 0)

else {

if(get_user_credits(id) >= 5)

menu_additem(Menu, "\wNo Flash - \r5 Credite", "5", 0)

else 

menu_additem(Menu, "\dNo Flash\w - \r5 Credite", "5", 0)

}

 

if(user_has_weapon(id, CSW_SMOKEGRENADE))

menu_additem(Menu, "\dFrost nade\w - \rAi deja", "6", 0)

else {

if(get_user_credits(id) >= 30)

menu_additem(Menu, "\wFrost nade - \r30 Credite", "6", 0)

else 

menu_additem(Menu, "\dFrost nade\w - \r30 Credite", "6", 0)

}

 

if(HavePET[id])

menu_additem(Menu, "\dPET\w - \rAi deja", "7", 0)

else {

if(get_user_credits(id) >= 30) 

menu_additem(Menu, "\wPET - \r30 Credite", "7", 0)

else 

menu_additem(Menu, "\dPET\w - \r30 Credite", "7", 0)

}

 

if(get_user_flags(id) & VIP_LEVEL) {

if(HaveAT4[id])

menu_additem(Menu, "\dBazooka\w - \rAi deja", "8", 0)

else {

if(get_user_credits(id) >= 100)

menu_additem(Menu, "\wBazooka - \r100 Credite", "8", 0)

else 

menu_additem(Menu, "\dBazooka\w - \r100 Credite", "8", 0)

}

}

else 

menu_additem(Menu, "\dBazooka\w - \rDoar 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);

switch(Key) {

case 1: {

if(HaveDetector[id]) {

ColorChat(id, "!t%s!g Ai deja!t Furien Detector!g !", Prefix);

return 1;

}

else {

new Credits = get_user_credits(id) - 50

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente !tcredite!g pentru cumpara!t Furien Detector!g !", Prefix);

return 1;

}

else {

HaveDetector[id] = true;

set_user_credits(id, Credits)

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 {

new Credits = get_user_credits(id) - 2 

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Defuse KIT!g !", Prefix);

return 1;

}

else {

cs_set_user_defuse(id, 1)

set_user_credits(id, Credits)

ColorChat(id, "!t%s!g Ai cumparat!t Defuse KIT!g !", Prefix);

}

}

}

case 3: {

if(get_user_health(id) >= 250) {

ColorChat(id, "!t%s!g Ai deja!t 250 health!g !", Prefix);

return 1;

}

else {

new Credits = get_user_credits(id) - 15 

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Health!g !", Prefix);

return 1;

}

else {

if(get_user_health(id) + 50 > 250)

fm_set_user_health(id, 250)

else {

fm_set_user_health(id, get_user_health(id) + 50) 

set_user_credits(id, Credits)

ColorChat(id, "!t%s!g Ai cumparat!t +50 Health!g !", Prefix)

}

}

}

}

case 4: {

if(get_user_armor(id) >= 250) {

ColorChat(id, "!t%s!g Ai deja!t 250 armor!g !", Prefix);

return 1;

}

else {

new Credits = get_user_credits(id) - 10

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Armor!g !", Prefix);

return 1;

}

else {

if(get_user_armor(id) + 50 > 250)

fm_set_user_armor(id, 250);

else {

fm_set_user_armor(id, get_user_armor(id) + 50) ;

set_user_credits(id, Credits);

ColorChat(id, "!t%s!g Ai cumparat!t +50 Armor!g !", Prefix);

}

}

}

case 5: {

if(HaveNoFlash[id]) {

ColorChat(id, "!t%s!g Ai deja!t No Flash!g !", Prefix);

return 1;

}

else {

new Credits = get_user_credits(id) - 5 

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t No Flash!g !", Prefix);

return 1;

}

else {

HaveNoFlash[id] = true;

set_user_credits(id, Credits);

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 {

new Credits = get_user_credits(id) - 30 

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Frost Nade!g !", Prefix);

return 1;

}

else {

fm_give_item(id, "weapon_smokegrenade");

set_user_credits(id, Credits);

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 {

new Credits = get_user_credits(id) - 30 

if(Credits < 0) {

ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t PET", Prefix);

return 1;

}

else {

create_pet(id)

set_user_credits(id, Credits);

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 {

new Credits = get_user_credits(id) - 100

if(Credits < 0) {

ColorChat(id, "!t%s!g Ai deja!t Bazooka!g !", Prefix)

return 1;

}

else {

set_user_at4(id, true)

set_user_credits(id, Credits);

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_origin,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 ;

 

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)) {

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players);

write_byte(players);

write_string(msg);

message_end();

}

}

}

 

 

Nume: New Furien Shop 

Versiune: 2.0 

Link Dowload: Aici

 

Instalare:

1. Fisierul NewFurienShop.sma il copiati in cstrike/addons/amxmodx/scripting

2. Fisierul NewFurienShop.amxx il copiati in cstrike/addons/amxmodx/plugins

3. Intrati in cstrike/addons/amxmodx/configs/plugins.ini si adaugati la sfarsit linia:

 

Code:

NewFurienShop.amxx

 

4. Schimbati mapa sau dati restart la server

 

CVAR-uri: Nu are 

 

Comenzi: 

say /shop - deschide meniul

say_team /shop - deschide meniul

say shop - deschide meniul

say_team shop - deschide meniul

 

Autor:Dias Leon ,Aragon* si Sn!ff3r 

 

Imagini:

 

4fp8mRr.png

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...