LuK.ZEW # 1,111 Posted February 24, 2015 Share Posted February 24, 2015 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: Link to comment Share on other sites More sharing options...
Recommended Posts