Proszę o połączenie a nie usuwanie bo zapomniałem dodać sms
#include <amxmodx>
#include <fun>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>
#define PLUGINNAME "Extra Item Bazooka"
#define VERSION "1.0"
#define AUTHOR "B!gBud"
#define ACCESS_LEVEL ADMIN_LEVEL_A
#define TE_EXPLOSION 3
#define TE_BEAMFOLLOW 22
#define TE_BEAMCYLINDER 21
#define BAZOOKA_COST 30 // set how may ammopacks the Bazooka costs
new ROCKET_MDL[64] = "models/rpgrocket.mdl"
new ROCKET_SOUND[64] = "weapons/rocketfire1.wav"
new getrocket[64] = "items/9mmclip2.wav"
new bool:rocket[33] = false
new bool:rksound[33] = false
new bool:shot[33] = false
new hasbazooka[33]
new Float:gltime = 0.0
new Float:last_Rocket[33] = 0.0
new explosion, trail, white
new cvar_RocketDelay, cvar_RocketSpeed, cvar_RocketDmg, cvar_Dmg_range, g_item_bazooka
public plugin_init()
{
register_plugin(PLUGINNAME, VERSION, AUTHOR)
g_item_bazooka = zp_register_extra_item("Bazooka", BAZOOKA_COST, ZP_TEAM_HUMAN, 1)
register_clcmd("drop","cmdDrop")
new ver[64]
format(ver,63,"%s v%s",PLUGINNAME,VERSION)
register_cvar("zp_bz_version",ver,FCVAR_SERVER)
cvar_RocketDelay=register_cvar("zp_bz_rocket_delay","15.0")
cvar_RocketSpeed=register_cvar("zp_bz_rocket_speed","1500")
cvar_RocketDmg=register_cvar("zp_bz_rocket_damage","800")
cvar_Dmg_range=register_cvar("zp_bz_damage_radius","350")
register_event("CurWeapon", "check_models", "be", "1=1")
register_event("DeathMsg", "player_die", "a")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_forward(FM_StartFrame, "fm_startFrame")
register_forward(FM_EmitSound, "emitsound")
}
public plugin_precache()
{
precache_model("models/p_rpg.mdl")
precache_model("models/v_rpg.mdl")
precache_model("models/w_rpg.mdl")
precache_model(ROCKET_MDL)
precache_sound(ROCKET_SOUND)
precache_sound(getrocket)
explosion = precache_model("sprites/zerogxplode.spr")
trail = precache_model("sprites/smoke.spr")
white = precache_model("sprites/white.spr")
}
public client_putinserver(id)
{
rocket[id] = false
}
public client_disconnect(id)
{
rocket[id] = false
}
public event_round_start()
{
remove_bazookas();
}
public fm_startFrame()
{
gltime = get_gametime()
static id
for (id = 1; id <= 32; id++)
{
bz_forward(id)
}
}
public bz_forward(player)
{
if (!hasbazooka[player])
return FMRES_IGNORED
check_rocket(player)
new clip,ammo
new wpnid = get_user_weapon(player,clip,ammo)
if (wpnid == CSW_KNIFE)
{
if((pev(player,pev_button)&IN_ATTACK2))
{
attack2(player)
}
}
return FMRES_IGNORED
}
public attack2(player)
{
if (rocket[player])
{
new rocket = create_entity("info_target")
if(rocket == 0) return PLUGIN_CONTINUE
entity_set_string(rocket, EV_SZ_classname, "zp_bz_rocket")
entity_set_model(rocket, ROCKET_MDL)
entity_set_size(rocket, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0})
entity_set_int(rocket, EV_INT_movetype, MOVETYPE_FLY)
entity_set_int(rocket, EV_INT_solid, SOLID_BBOX)
new Float:vSrc[3]
entity_get_vector(player, EV_VEC_origin, vSrc)
new Float:Aim[3],Float:origin[3]
VelocityByAim(player, 64, Aim)
entity_get_vector(player,EV_VEC_origin,origin)
vSrc[0] += Aim[0]
vSrc[1] += Aim[1]
entity_set_origin(rocket, vSrc)
new Float:velocity[3], Float:angles[3]
VelocityByAim(player, get_pcvar_num(cvar_RocketSpeed), velocity)
entity_set_vector(rocket, EV_VEC_velocity, velocity)
vector_to_angle(velocity, angles)
entity_set_vector(rocket, EV_VEC_angles, angles)
entity_set_edict(rocket,EV_ENT_owner,player)
entity_set_float(rocket, EV_FL_takedamage, 1.0)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(rocket)
write_short(trail)
write_byte(25)
write_byte(5)
write_byte(224)
write_byte(224)
write_byte(255)
write_byte(255)
message_end()
emit_sound(rocket, CHAN_WEAPON, ROCKET_SOUND, 1.0, ATTN_NORM, 0, PITCH_NORM)
shot[player] = true
last_Rocket[player] = gltime + get_pcvar_num(cvar_RocketDelay)
}
return PLUGIN_CONTINUE
}
public check_models(id)
{
if (zp_get_user_zombie(id) || zp_get_user_survivor(id))
return;
if(hasbazooka[id])
{
new wpnid = read_data(2);
if ( wpnid == CSW_KNIFE)
{
switchmodel(id)
}
}
}
public switchmodel(id)
{
set_pev(id,pev_viewmodel2,"models/v_rpg.mdl")
set_pev(id,pev_weaponmodel2,"models/p_rpg.mdl")
}
public remove_bazookas()
{
new nextitem = find_ent_by_class(-1,"zp_bazooka")
while(nextitem)
{
remove_entity(nextitem)
nextitem = find_ent_by_class(-1,"zp_bazooka")
}
return PLUGIN_CONTINUE
}
public emitsound(entity, channel, const sample[])
{
if(is_user_alive(entity))
{
new clip,ammo
new weapon = get_user_weapon(entity,clip,ammo)
if(hasbazooka[entity] && weapon == CSW_KNIFE)
{
if(equal(sample,"weapons/knife_slash1.wav")) return FMRES_SUPERCEDE
if(equal(sample,"weapons/knife_slash2.wav")) return FMRES_SUPERCEDE
if(equal(sample,"weapons/knife_deploy1.wav")) return FMRES_SUPERCEDE
if(equal(sample,"weapons/knife_hitwall1.wav")) return FMRES_SUPERCEDE
if(equal(sample,"weapons/knife_hit1.wav")) return FMRES_SUPERCEDE
if(equal(sample,"weapons/knife_hit2.wav")) return FMRES_SUPERCEDE
if(equal(sample,"weapons/knife_hit3.wav")) return FMRES_SUPERCEDE
if(equal(sample,"weapons/knife_hit4.wav")) return FMRES_SUPERCEDE
if(equal(sample,"weapons/knife_stab.wav")) return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
public check_rocket(player)
{
if (last_Rocket[player] > gltime)
{
rk_forbidden(player)
rksound[player] = true
}
else
{
if (shot[player])
{
rksound[player] = false
shot[player] = false
}
rk_sound(player)
rk_allow(player)
}
}
public rk_allow(player)
{
rocket[player] = true
}
public rk_forbidden(player)
{
rocket[player] = false
}
public rk_sound(player)
{
if (!rksound[player])
{
engfunc(EngFunc_EmitSound, player, CHAN_WEAPON, getrocket, 1.0, ATTN_NORM, 0, PITCH_NORM)
client_print(player, print_center, "[Bazooka] Bron przeladowana !!!")
rksound[player] = true
}
}
public player_die()
{
new id = read_data(2)
if(hasbazooka[id])
{
drop_bazooka(id)
rocket[id] = false
}
return PLUGIN_CONTINUE
}
public cmdDrop(id)
{
if(hasbazooka[id])
{
new clip,ammo
new weapon = get_user_weapon(id,clip,ammo)
if(weapon == CSW_KNIFE)
{
drop_bazooka(id)
if(!zp_get_user_zombie(id))
{
entity_set_string(id,EV_SZ_viewmodel,"models/v_knife.mdl")
entity_set_string(id,EV_SZ_weaponmodel,"models/p_knife.mdl")
}
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
public drop_bazooka(player)
{
if(hasbazooka[player])
{
new Float:Aim[3],Float:origin[3]
VelocityByAim(player, 64, Aim)
entity_get_vector(player,EV_VEC_origin,origin)
origin[0] += Aim[0]
origin[1] += Aim[1]
new bazooka = create_entity("info_target")
entity_set_string(bazooka,EV_SZ_classname,"zp_bazooka")
entity_set_model(bazooka,"models/w_rpg.mdl")
entity_set_size(bazooka,Float:{-16.0,-16.0,-16.0},Float:{16.0,16.0,16.0})
entity_set_int(bazooka,EV_INT_solid,1)
entity_set_int(bazooka,EV_INT_movetype,6)
entity_set_vector(bazooka,EV_VEC_origin,origin)
hasbazooka[player] = 0
rocket[player] = false
}
}
public pfn_touch(ptr, ptd)
{
if(is_valid_ent(ptr))
{
new classname[32]
entity_get_string(ptr,EV_SZ_classname,classname,31)
if(equal(classname, "zp_bazooka"))
{
if(is_valid_ent(ptd))
{
new id = ptd
if(id > 0 && id < 34) {
if(!hasbazooka[id] && !zp_get_user_zombie(id) && is_user_alive(id))
{
engclient_cmd(id,"weapon_knife")
hasbazooka[id] = 1
rocket[id] = true
client_cmd(id,"spk items/gunpickup2.wav")
switchmodel(id)
remove_entity(ptr)
}
}
}
}
else if(equal(classname, "zp_bz_rocket"))
{
new Float:fOrigin[3]
new iOrigin[3]
entity_get_vector(ptr, EV_VEC_origin, fOrigin)
FVecIVec(fOrigin,iOrigin)
bz_radius_damage(ptr)
message_begin(MSG_BROADCAST,SVC_TEMPENTITY,iOrigin)
write_byte(TE_EXPLOSION)
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2])
write_short(explosion)
write_byte(30)
write_byte(15)
write_byte(0)
message_end()
message_begin(MSG_ALL,SVC_TEMPENTITY,iOrigin)
write_byte(TE_BEAMCYLINDER)
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2])
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2]+200)
write_short(white)
write_byte(0)
write_byte(1)
write_byte(6)
write_byte(8)
write_byte(1)
write_byte(255)
write_byte(255)
write_byte(192)
write_byte(128)
write_byte(5)
message_end()
if(is_valid_ent(ptd))
{
new classname2[32]
entity_get_string(ptd,EV_SZ_classname,classname2,31)
if(equal(classname2,"func_breakable"))
force_use(ptr,ptd)
}
remove_entity(ptr)
}
}
return PLUGIN_CONTINUE
}
public zp_user_infected_pre(player, infector)
{
drop_bazooka(player)
hasbazooka[player] = 0;
rocket[player] = false;
}
public zp_extra_item_selected(player, itemid)
{
new clip,ammo
new weapon = get_user_weapon(player,clip,ammo)
if (itemid == g_item_bazooka)
{
hasbazooka[player] = 1
rocket[player] = true
client_cmd(player,"spk items/gunpickup2.wav")
if(weapon == CSW_KNIFE)
{
switchmodel(player)
}
else
{
engclient_cmd(player,"weapon_knife")
switchmodel(player)
}
}
}
stock bz_radius_damage(entity)
{
new attacker = entity_get_edict(entity, EV_ENT_owner);
new name[35];
get_user_name(attacker, name, 34);
for(new i = 1; i < 33; i++)
{
if(is_user_alive(i))
{
new dist = floatround(entity_range(entity,i))
if(dist <= get_pcvar_num(cvar_Dmg_range))
{
new hp = get_user_health(i)
new Float:damage = get_pcvar_float(cvar_RocketDmg)-(get_pcvar_float(cvar_RocketDmg)/get_pcvar_float(cvar_Dmg_range))*float(dist)
if(zp_get_user_zombie(attacker) != zp_get_user_zombie(i))
{
if(hp > damage)
{
ExecuteHamB(Ham_TakeDamage, i, entity, attacker, damage, DMG_BLAST);
}
else
{
ExecuteHamB(Ham_TakeDamage, i, entity, attacker, float(hp), DMG_BLAST);
log_kill(attacker ,i,"Bazooka",0)
}
}
}
}
}
}
stock log_kill(killer, victim, weapon[], headshot)
{
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
ExecuteHamB(Ham_Killed, victim, killer, 2) // set last param to 2 if you want victim to gib
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
message_begin(MSG_BROADCAST, get_user_msgid("DeathMsg"))
write_byte(killer)
write_byte(victim)
write_byte(headshot)
write_string(weapon)
message_end()
if(get_user_team(killer)!=get_user_team(victim))
set_user_frags(killer,get_user_frags(killer) +1)
if(get_user_team(killer)==get_user_team(victim))
set_user_frags(killer,get_user_frags(killer) -1)
new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10]
get_user_name(killer, kname, 31)
get_user_team(killer, kteam, 9)
get_user_authid(killer, kauthid, 31)
get_user_name(victim, vname, 31)
get_user_team(victim, vteam, 9)
get_user_authid(victim, vauthid, 31)
log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"",
kname, get_user_userid(killer), kauthid, kteam,
vname, get_user_userid(victim), vauthid, vteam, weapon)
return PLUGIN_CONTINUE;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/