[New] Furien Shop (V 2.0)
Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com
-
- Membru, skill +1
- Posts: 133
- Joined: 20 Oct 2013, 17:07
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Has thanked: 1 time
- Contact:
Ai putea sa scoti frost nade de la ambele echipe? si in locu lor sa pui arma si knifele vip? Si la detector sa pui acces doar la vip? Te rog frumos?
-
- Membru nou
- Posts: 1
- Joined: 05 Jun 2020, 21:45
- Detinator Steam: Nu
- CS Status: Citesc forumul eXtreamCS.com...!
- Fond eXtream: 0
Mai are cineva pluginul acesta complet ? Cu tot cu sma si amxx ?
- levin
- Scripter eXtreamCS
- Posts: 3850
- Joined: 24 Aug 2011, 12:24
- Detinator Steam: Da
- CS Status: ♅
- Detinator server CS: ☯∴
- SteamID: 76561198063679589
- Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy - Location: ҳ̸Ҳ̸ҳ
- Discord: devilclass
- Has thanked: 36 times
- Been thanked: 595 times
- Contact:
Code: Select all
#include <amxmodx>
#include <cstrike>
#include <fakemeta_util>
#include <hamsandwich>
#include <engine>
#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[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},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[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();
}
}
}
}
Nu îmi mai trimiteți PM pe forum! Nu merge să răspund
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
- CyBer[N]eTicK
- Membru, skill +1
- Posts: 190
- Joined: 29 May 2020, 05:35
- Detinator Steam: Da
- CS Status: Strong & Original
- Detinator server CS: BB.BLACKGAMES.RO
- SteamID: /id/cybernetick_cbk/
- Fond eXtream: 0
- Location: Albania, tirana
- Discord: cybernetick_cbk
- Has thanked: 21 times
- Been thanked: 18 times
- Contact:
Pluginul nu merge! refal din nou te rogL E V I N wrote: ↑06 Jun 2020, 20:53Code: Select all
#include <amxmodx> #include <cstrike> #include <fakemeta_util> #include <hamsandwich> #include <engine> #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[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},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[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(); } } } }
- dann1el97
- Membru, skill 0
- Posts: 45
- Joined: 04 Oct 2014, 11:31
- Detinator Steam: Nu
- Fond eXtream: 0
- Has thanked: 8 times
@ UP !
Mai are cineva arhiva completa ? Plugin & Resurse ?
Mai are cineva arhiva completa ? Plugin & Resurse ?
Ofer servicii de Webdesign la preturi avantajoase!
Contact PM!, Email: [email protected]! sau Telefon *Privat Ceri PM* SMS sau APEL!
HTML5,PHP, CSS, HTML, Teme IPB, Teme phpBB3, Teme MyBB
Contact PM!, Email: [email protected]! sau Telefon *Privat Ceri PM* SMS sau APEL!
HTML5,PHP, CSS, HTML, Teme IPB, Teme phpBB3, Teme MyBB
-
- Fost administrator
- Posts: 13712
- Joined: 09 Oct 2010, 12:39
- Detinator Steam: Da
- CS Status: In grajd!
- SteamID: kalulord
- Reputatie: Fost Administrator
Fost membru Club eXtreamCS (6 luni)
Nume anterior: Terra - Location: Romania, Ploiesti
- Has thanked: 328 times
- Been thanked: 646 times
- Contact:
- dann1el97
- Membru, skill 0
- Posts: 45
- Joined: 04 Oct 2014, 11:31
- Detinator Steam: Nu
- Fond eXtream: 0
- Has thanked: 8 times
The Kalu wrote: ↑11 Nov 2021, 22:35Nu iti da de gandit ca in 7 ani este posibil sa nu mai gasesti nimic?
- AMXX CODE | Afiseaza codul
Multumesc! Ma intereseaza si resursele : modele & sunete, etc.
Ofer servicii de Webdesign la preturi avantajoase!
Contact PM!, Email: [email protected]! sau Telefon *Privat Ceri PM* SMS sau APEL!
HTML5,PHP, CSS, HTML, Teme IPB, Teme phpBB3, Teme MyBB
Contact PM!, Email: [email protected]! sau Telefon *Privat Ceri PM* SMS sau APEL!
HTML5,PHP, CSS, HTML, Teme IPB, Teme phpBB3, Teme MyBB