31/07/2020, 02:13 PM
(Última modificación: 31/07/2020, 02:14 PM por Euroker. Edited 1 time in total.
Razón: editar palabra
)
Hola como dice el titulo le quiero colocar limite al plugin bazooka que solo 3 usuarios puedan sacar la bazooka, en que parte del codigo tengo que modificar esa parte
aca el codigo
aca el codigo
Código PHP:
/*
Special thanks to:
-=STN=- MaGe / KaOs / RadidEskimo / Freecode / EJL / JTP10181 / PaintLancer / Kaddar
Vexd / twistedeuphoria / XxAvalanchexX / pimp daddy / Ronkkrop / Major_victory / Can't Shoot
More for making the original bazooka plugin
mike_cao for his awesome gore plugin
and anyone else that over looked.
*/
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fun>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#pragma reqlib "dcapi"
native damagecar(id, damage)
#define BA_NORMAL (1<<0) // "a"
#define BA_HEAT (1<<1) // "b"
#define BA_USER (1<<2) // "c"
#define BA_NONE (1<<3) // "d"
#define SEQ_IDLE 0
#define SEQ_FIDGET 1
#define SEQ_RELOAD 2
#define SEQ_FIRE 3
#define SEQ_HOLSTER1 4
#define SEQ_DRAW1 5
#define SEQ_HOLSTER2 6
#define SEQ_DRAW2 7
#define SEQ_IDLE2 8
#define SEQ_FIDGET2 9
#define bit(%1) (1 << CSW_%1)
new mod_name[33]
new g_buyzone[33]
const PRIMARY_WEAPONS = (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 Bazooka_Ammo[33]
new bool:RoundEnd
new bool:is_cstrike
new wep[33], anim[33]
new bool:Has_Bazooka[33]
new bool:Allow_Shooting[33]
new bool:g_restart_attempt[33]
new RocketSmoke
new mdl_gib_head
new mdl_gib_lung
new mdl_gib_meat
new mdl_gib_flesh
new mdl_gib_spine
new spr_blood_drop
new spr_blood_spray
new mdl_gib_legbone
new g_sModelIndexSmoke
new g_sModelIndexFireball
new cost
new bool:E_KeyPress_Delay[33]
new gravity;
static PLUGIN_NAME[] = "Bazooka_Slot1"
static PLUGIN_AUTHOR[] = "man_s_our"
static PLUGIN_VERSION[] = "2"
public plugin_init () {
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_concmd("bazooka","cmd_Drop_Bazooka",ADMIN_BAN)
register_concmd("rpg","cmd_BuyBazooka",ADMIN_USER)
register_clcmd("say /buybazooka","cmd_BuyBazooka",ADMIN_USER,"- Buys a bazooka")
register_clcmd("say_team /buybazooka","cmd_BuyBazooka",ADMIN_USER,"- Buys a bazooka")
register_clcmd("bazooka_give","cmd_GiveBazooka",ADMIN_BAN,"<@all/ct/t>/userid - Gives free bazooka")
register_clcmd("fullupdate","cmd_FullUpDate")
register_clcmd("drop", "Event_WeaponDrop")
//buynames
register_clcmd("m249", "Event_WeaponDrop")
register_clcmd("228compact", "Event_WeaponDrop")
register_clcmd("shield", "Event_WeaponDrop")
register_clcmd("scout", "Event_WeaponDrop")
register_clcmd("xm1014", "Event_WeaponDrop")
register_clcmd("autoshotgun", "Event_WeaponDrop")
register_clcmd("mac10", "Event_WeaponDrop")
register_clcmd("aug", "Event_WeaponDrop")
register_clcmd("bullpup", "Event_WeaponDrop")
register_clcmd("ump45", "Event_WeaponDrop")
register_clcmd("sg550", "Event_WeaponDrop")
register_clcmd("krieg550", "Event_WeaponDrop")
register_clcmd("galil", "Event_WeaponDrop")
register_clcmd("defender", "Event_WeaponDrop")
register_clcmd("famas", "Event_WeaponDrop")
register_clcmd("clarion", "Event_WeaponDrop")
register_clcmd("awp", "Event_WeaponDrop")
register_clcmd("magnum", "Event_WeaponDrop")
register_clcmd("mp5", "Event_WeaponDrop")
register_clcmd("smg", "Event_WeaponDrop")
register_clcmd("m3", "Event_WeaponDrop")
register_clcmd("12gauge", "Event_WeaponDrop")
register_clcmd("m4a1", "Event_WeaponDrop")
register_clcmd("tmp", "Event_WeaponDrop")
register_clcmd("mp", "Event_WeaponDrop")
register_clcmd("g3sg1", "Event_WeaponDrop")
register_clcmd("d3au1", "Event_WeaponDrop")
register_clcmd("sg552", "Event_WeaponDrop")
register_clcmd("krieg552", "Event_WeaponDrop")
register_clcmd("ak47", "Event_WeaponDrop")
register_clcmd("cv47", "Event_WeaponDrop")
register_clcmd("p90", "Event_WeaponDrop")
register_clcmd("c90", "Event_WeaponDrop")
register_event("CurWeapon","Event_CurWeapon","be","1=1")
register_event("DeathMsg","Event_DeathMsg","a")
register_event("HLTV","Event_NewRound", "a","1=0","2=0")
register_event("ResetHUD","Event_HudReset","be")
register_event("TextMsg","Event_WeaponDrop","be","2=#Weapon_Cannot_Be_Dropped")
register_event("TextMsg","Event_RestartAttempt","a","2=#Game_will_restart_in")
register_event("StatusIcon","Event_BuyZone","b","2=buyzone")
register_forward(FM_PlayerPreThink, "PlayerPreThink")
register_logevent("LogEvent_RoundStart",2,"1=Round_Start")
register_logevent("LogEvent_RoundEnd",2,"1=Round_End")
register_forward(FM_CmdStart,"fw_CmdStart")
register_forward(FM_EmitSound,"fw_EmitSound")
get_modname(mod_name,31)
is_cstrike = equal(mod_name,"cstrike") ? true : false
gravity = register_cvar("grav", "1",FCVAR_SERVER)
cost = register_cvar("bazooka_cost", "5000",FCVAR_SERVER)
RegisterHam(Ham_Item_AddToPlayer, "weapon_m249" , "Fw_Item_AddToPlayer_Post", 1);
register_clcmd("weapon_rpg", "Select_Weapon");
}
// Here we replace the HUD sprites for our custom weapon.
public Fw_Item_AddToPlayer_Post(weapon, id)
{
if(!pev_valid(weapon))
return HAM_IGNORED
if(Has_Bazooka[id]) //If player has the bazooka, we show these sprites.
{
message_begin(MSG_ONE, get_user_msgid("WeaponList"), .player = id);
write_string("weapon_rpg"); // WeaponName
write_byte(3); // PrimaryAmmoID
write_byte(200); // PrimaryAmmoMaxAmount
write_byte(-1); // SecondaryAmmoID
write_byte(-1); // SecondaryAmmoMaxAmount
write_byte(0); // SlotID (0...N)
write_byte(4); // NumberInSlot (1...N)
write_byte(CSW_M249); // WeaponID
write_byte(0); // Flags
message_end();
} else { //Else if not, we show the default sprites of our base weapon.
message_begin(MSG_ONE, get_user_msgid("WeaponList"), .player = id);
write_string("weapon_m249"); // WeaponName
write_byte(3); // PrimaryAmmoID
write_byte(200); // PrimaryAmmoMaxAmount
write_byte(-1); // SecondaryAmmoID
write_byte(-1); // SecondaryAmmoMaxAmount
write_byte(0); // SlotID (0...N)
write_byte(4); // NumberInSlot (1...N)
write_byte(CSW_M249); // WeaponID
write_byte(0); // Flags
message_end();
}
return HAM_HANDLED
}
public Select_Weapon(id)
{
client_cmd(id, "weapon_m249");
return PLUGIN_HANDLED
}
public plugin_precache () {
precache_model("models/w_rpg.mdl")
precache_model("models/v_rpg.mdl")
precache_model("models/p_rpg.mdl")
precache_model("models/rpgrocket.mdl")
precache_generic("sprites/weapon_rpg.txt");
precache_generic("sprites/640hud71.spr");
precache_generic("sprites/640hud51.spr");
precache_generic("sprites/640hud30.spr");
precache_generic("sprites/320hud2.spr");
precache_generic("sprites/320hud1.spr");
precache_model("models/v_m249.mdl")
precache_model("models/p_m249.mdl")
precache_sound("items/gunpickup4.wav")
precache_sound("weapons/nuke_fly.wav")
precache_sound("weapons/dryfire1.wav")
precache_sound("weapons/mortarhit.wav")
precache_sound("weapons/rocketfire1.wav")
precache_sound("ambience/particle_suck2.wav")
spr_blood_drop = precache_model("sprites/blood.spr")
spr_blood_spray = precache_model("sprites/bloodspray.spr")
mdl_gib_lung = precache_model("models/GIB_Lung.mdl")
mdl_gib_meat = precache_model("models/GIB_B_Gib.mdl")
mdl_gib_head = precache_model("models/GIB_Skull.mdl")
mdl_gib_flesh = precache_model("models/Fleshgibs.mdl")
mdl_gib_spine = precache_model("models/GIB_B_Bone.mdl")
mdl_gib_legbone = precache_model("models/GIB_Legbone.mdl")
g_sModelIndexSmoke = precache_model("sprites/steam1.spr")
g_sModelIndexFireball = precache_model("sprites/zerogxplode.spr")
RocketSmoke = precache_model("sprites/smoke.spr")
}
/*drop_primary(id)
{
if(cs_get_user_hasprim(id))
{
client_cmd(id, "weapon_p228");
client_cmd(id, "weapon_scout");
client_cmd(id, "weapon_xm1014");
client_cmd(id, "weapon_mac10");
client_cmd(id, "weapon_aug");
client_cmd(id, "weapon_ump45");
client_cmd(id, "weapon_sg550");
client_cmd(id, "weapon_galil");
client_cmd(id, "weapon_famas");
client_cmd(id, "weapon_awp");
client_cmd(id, "weapon_mp5navy");
client_cmd(id, "weapon_m249");
client_cmd(id, "weapon_m3");
client_cmd(id, "weapon_m4a1");
client_cmd(id, "weapon_tmp");
client_cmd(id, "weapon_g3sg1");
client_cmd(id, "weapon_sg552");
client_cmd(id, "weapon_ak47");
client_cmd(id, "weapon_p90");
}
new parm[1]
parm[0] = id
set_task(0.1, "BuyBazooka", id * 555, parm, 1)
}*/
drop_primary(id)
{
static weapons[32], num, i, wpn_id;
num = 0; // reset passed weapons count (bugfix)
// Getting all of our player's weapons
get_user_weapons(id, weapons, num);
// We then loop through all of them and drop everything listed
// on our PRIMARY_WEAPONS_BIT_SUM, which are all primaries.
for (i = 0; i < num; i++)
{
// Prevent re-indexing the array
wpn_id = weapons[i];
if(1<<wpn_id & PRIMARY_WEAPONS) //Does the weapon id match something in our PRIMARY_WEAPONS_BIT_SUM?
{
// Getting the weapon entity name (wname) using the weapon index (wpn_id).
static wname[32]; get_weaponname(wpn_id, wname, charsmax(wname));
// Player drops the weapon like a hot potato.
engclient_cmd(id, "drop", wname);
}
}
}
stock ham_strip_weapon(id,weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0;
new wId = get_weaponid(weapon);
if(!wId) return 0;
new wEnt;
while((wEnt = engfunc(EngFunc_FindEntityByString, wEnt, "classname", weapon)) && pev(wEnt, pev_owner) != id) {}
if(!wEnt) return 0;
new iTmp;
if(get_user_weapon(id, iTmp, iTmp) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt);
if(!ExecuteHamB(Ham_RemovePlayerItem, id, any:wEnt)) return 0;
ExecuteHamB(Ham_Item_Kill, wEnt);
set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId));
return 1;
}
public Event_BuyZone(id) {
g_buyzone[id] = read_data(1)
}
public client_connect (id) {
Has_Bazooka[id] = false
Allow_Shooting[id] = false
E_KeyPress_Delay[id] = false
}
public client_disconnect (id) {
Has_Bazooka[id] = false
Allow_Shooting[id] = false
E_KeyPress_Delay[id] = false
}
// Freeze Time.
public Event_NewRound () {
new iCurrent = find_ent_by_class(-1, "rpgrocket")
while ((iCurrent = find_ent_by_class(-1, "rpgrocket")) != 0) {
new id = entity_get_edict(iCurrent, EV_ENT_owner)
remove_missile(id,iCurrent)
}
}
// Player Spawn
public Event_PlayerSpawn (id) {
// Reset Bazooka's Ammo
Bazooka_Ammo[id] = 5
// Gibs - Unhide Players
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,255)
// Removed any rockets in world.
new Rocket = find_ent_by_class(-1, "rpgrocket")
while (Rocket > 0) {
remove_entity(Rocket)
Rocket = find_ent_by_class(Rocket, "rpgrocket")
}
// Removed any rpglancher in world.
new RPG = find_ent_by_class(-1, "rpglancher")
while (RPG > 0) {
remove_entity(RPG)
RPG = find_ent_by_class(RPG, "rpglancher")
}
new v_oldmodel[64], p_oldmodel[64]
entity_get_string(id, EV_SZ_viewmodel, v_oldmodel, 63)
entity_get_string(id, EV_SZ_weaponmodel, p_oldmodel, 63)
if (equal(v_oldmodel, "models/v_rpg.mdl") || equal(p_oldmodel, "models/p_rpg.mdl")) {
if (!Has_Bazooka[id]) {
new weaponid, clip, ammo
weaponid = get_user_weapon(id, clip, ammo)
new weaponname[64]
get_weaponname(weaponid, weaponname, 63)
new v_model[64], p_model[64]
format(v_model, 63, "%s", weaponname)
format(p_model, 63, "%s", weaponname)
replace(v_model, 63, "weapon_", "v_")
format(v_model, 63, "models/%s.mdl", v_model)
entity_set_string(id, EV_SZ_viewmodel, v_model)
replace(p_model, 63, "weapon_", "p_")
format(p_model, 63, "models/%s.mdl", p_model)
entity_set_string(id, EV_SZ_weaponmodel, p_model)
}
}
return PLUGIN_CONTINUE
}
// New Round - Freeze Time End.
public LogEvent_RoundStart () {
RoundEnd = false
new players[32], num
get_players(players, num, "a")
for (new i; i < num; ++i)
if (Has_Bazooka[players[i]])
Allow_Shooting[players[i]] = true
return PLUGIN_CONTINUE
}
// Round End
public LogEvent_RoundEnd () {
RoundEnd = true
new players[32], num
get_players(players, num, "a")
for (new i; i < num; ++i)
if (Has_Bazooka[players[i]])
Allow_Shooting[players[i]] = false
return PLUGIN_CONTINUE
}
public cmd_FullUpDate ()
{
return PLUGIN_HANDLED
}
public Event_RestartAttempt () {
new players[32], num
get_players(players, num, "a")
for (new i; i < num; ++i)
g_restart_attempt[players[i]] = true
}
public Event_HudReset (id) {
if (g_restart_attempt[id]) {
g_restart_attempt[id] = false
return
}
Event_PlayerSpawn (id)
}
public rpg_idle (data[]) {
if (Bazooka_Ammo[data[0]] > 0)
anim[data[0]] = SEQ_IDLE//entity_set_int(data[0], EV_INT_weaponanim, SEQ_IDLE)
if (Bazooka_Ammo[data[0]] <= 0)
anim[data[0]] = SEQ_IDLE2//entity_set_int(data[0], EV_INT_weaponanim, SEQ_IDLE2)
}
public rpg_reload_start (data[]) {
if ((Bazooka_Ammo[data[0]] > 0))
anim[data[0]] = SEQ_RELOAD //entity_set_int(data[0], EV_INT_weaponanim, SEQ_RELOAD)
else
anim[data[0]] = SEQ_IDLE2 //entity_set_int(data[0], EV_INT_weaponanim, SEQ_IDLE2)
}
public rpg_fidget (data[]) {
if (!RoundEnd)
Allow_Shooting[data[0]] = true;
if (Bazooka_Ammo[data[0]] > 0)
anim[data[0]] = SEQ_FIDGET //entity_set_int(data[0], EV_INT_weaponanim, SEQ_FIDGET)
if (Bazooka_Ammo[data[0]] <= 0)
anim[data[0]] = SEQ_FIDGET2 //entity_set_int(data[0], EV_INT_weaponanim, SEQ_FIDGET2)
set_task(6.0, "rpg_idle", data[0]+2023, data[0], 1)
}
public fw_EmitSound (id, channel, sample[]) {
if(!is_user_alive(id) || !is_user_connected(id))
return FMRES_IGNORED
if(Has_Bazooka[id]) {
if(containi(sample, "weapons/m249") != -1)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
public fire_rocket (id) {
new data[1]
data[0] = id
//Start reload animation.
set_task(1.0, "rpg_reload_start", id+2021, data, 1)
//Ends reload animation and enables fireing.
set_task(3.1, "rpg_fidget", id+2022, data, 1)
new Float:StartOrigin[3], Float:Angle[3]
new PlayerOrigin[3]
get_user_origin(id, PlayerOrigin, 1)
StartOrigin[0] = float(PlayerOrigin[0])
StartOrigin[1] = float(PlayerOrigin[1])
StartOrigin[2] = float(PlayerOrigin[2])
entity_get_vector(id, EV_VEC_v_angle, Angle)
Angle[0] = Angle[0] * -1.0
new RocketEnt = create_entity("info_target")
entity_set_string(RocketEnt, EV_SZ_classname, "rpgrocket")
entity_set_model(RocketEnt, "models/rpgrocket.mdl")
entity_set_origin(RocketEnt, StartOrigin)
entity_set_vector(RocketEnt, EV_VEC_angles, Angle)
new Float:MinBox[3] = {-1.0, -1.0, -1.0}
new Float:MaxBox[3] = {1.0, 1.0, 1.0}
entity_set_vector(RocketEnt, EV_VEC_mins, MinBox)
entity_set_vector(RocketEnt, EV_VEC_maxs, MaxBox)
entity_set_int(RocketEnt, EV_INT_solid, 2)
if(get_pcvar_num(gravity))
{
entity_set_int(RocketEnt, EV_INT_movetype, MOVETYPE_TOSS)
set_pev(RocketEnt, pev_gravity, 0.1)
}
else
entity_set_int(RocketEnt, EV_INT_movetype, MOVETYPE_FLY)
entity_set_edict(RocketEnt, EV_ENT_owner, id)
new Float:Velocity[3]
VelocityByAim(id, 2000, Velocity)
entity_set_vector(RocketEnt, EV_VEC_velocity, Velocity)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(RocketEnt)
write_short(RocketSmoke)
write_byte(3)
write_byte(5)
write_byte(50)
write_byte(50)
write_byte(50)
write_byte(254)
message_end()
emit_sound(RocketEnt, CHAN_WEAPON, "weapons/rocketfire1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
emit_sound(RocketEnt, CHAN_VOICE, "weapons/nuke_fly.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
Bazooka_Ammo[id]--;
return PLUGIN_HANDLED
}
public remove_missile (id,missile) {
new Float:fl_origin[3]
entity_get_vector(missile, EV_VEC_origin, fl_origin)
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_IMPLOSION)
write_coord(floatround(fl_origin[0]))
write_coord(floatround(fl_origin[1]))
write_coord(floatround(fl_origin[2]))
write_byte (200)
write_byte (40)
write_byte (45)
message_end()
emit_sound(missile, CHAN_WEAPON, "ambience/particle_suck2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
emit_sound(missile, CHAN_VOICE, "ambience/particle_suck2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
attach_view(id,id)
remove_entity(missile)
return PLUGIN_CONTINUE
}
public pfn_touch (toucher, touched)
{
new ClassName1[32]
new ClassName2[32]
if(!is_valid_ent(toucher))
return PLUGIN_CONTINUE
if (is_valid_ent(toucher))
entity_get_string(toucher, EV_SZ_classname, ClassName1, 31)
if (is_valid_ent(touched))
entity_get_string(touched, EV_SZ_classname, ClassName2, 31)
if (equal(ClassName1, "rpgrocket")) {
new vExplodeAt[3]
new Float:fl_vExplodeAt[3]
entity_get_vector(toucher, EV_VEC_origin, fl_vExplodeAt)
vExplodeAt[0] = floatround(fl_vExplodeAt[0])
vExplodeAt[1] = floatround(fl_vExplodeAt[1])
vExplodeAt[2] = floatround(fl_vExplodeAt[2])
emit_sound(toucher, CHAN_WEAPON, "weapons/mortarhit.wav", 1.0, 0.5, 0, PITCH_NORM)
emit_sound(toucher, CHAN_VOICE, "weapons/mortarhit.wav", 1.0, 0.5, 0, PITCH_NORM)
for (new Explosion = 1; Explosion < 8; Explosion++) {
// Random Explosion 8 Times
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_SPRITE)
write_coord(vExplodeAt[0] + random_num(-60,60))
write_coord(vExplodeAt[1] + random_num(-60,60))
write_coord(vExplodeAt[2] +128)
write_short(g_sModelIndexFireball)
write_byte(random_num(30,65))
write_byte(255)
message_end()
}
for (new Smoke = 1; Smoke < 3; Smoke++) {
// Random Smoke 3 Times
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_SMOKE)
write_coord(vExplodeAt[0])
write_coord(vExplodeAt[1])
write_coord(vExplodeAt[2] + 256)
write_short(g_sModelIndexSmoke)
write_byte(random_num(80,150))
write_byte(random_num(5,10))
message_end()
}
// Create the burn decal
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_GUNSHOTDECAL)
write_coord(vExplodeAt[0])
write_coord(vExplodeAt[1])
write_coord(vExplodeAt[2])
write_short(0)
if (is_cstrike) write_byte(random_num(46,48)) // decal
if (!is_cstrike) write_byte(random_num(58,60)) // decal
message_end()
new Max_Damage = 300
new Damage_Radius = 300
new PlayerPos[3], Distance, Damage
for (new i = 1; i < 32; i++) {
if (is_user_alive(i) == 1) {
get_user_origin(i, PlayerPos)
Distance = get_distance(PlayerPos, vExplodeAt)
if (Distance <= Damage_Radius) { // Screenshake Radius
message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, i) // Shake Screen
write_short(1<<14)
write_short(1<<14)
write_short(1<<14)
message_end()
new attacker = entity_get_edict(toucher, EV_ENT_owner)
Damage = Max_Damage - floatround(floatmul(float(Max_Damage), floatdiv(float(Distance), float(Damage_Radius))))
if (!get_user_godmode(i)) {
if(cvar_exists("mp_friendlyfire")) {
if( get_cvar_num("mp_friendlyfire")) {
do_victim(i,attacker,Damage)
}
else {
if(get_user_team(i) != get_user_team(attacker))
do_victim(i,attacker,Damage)
}
}
else {
do_victim(i,attacker,Damage)
}
}
else {
do_victim(i,attacker,Damage)
}
}
}
}
remove_entity(toucher)
if(is_valid_ent(touched))
if(equal(ClassName2, "func_vehicle") || equal(ClassName2, "func_tracktrain"))
damagecar(touched, 100);
//*****************************************//
// destroy ents within 1/4 of Damage radius//
//*****************************************//
static Entity_List[21]
new entites_in_radius
entites_in_radius = find_sphere_class(0, "func_breakable",Damage_Radius * 0.20,Entity_List,20,fl_vExplodeAt)
for(new i= 0;i < entites_in_radius; i++) {
force_use(Entity_List[i],Entity_List[i])
remove_task(Entity_List[i])
}
}
if (equal(ClassName1, "rpglancher")) {
new Picker[32]
if (is_valid_ent(touched))
entity_get_string(touched, EV_SZ_classname, Picker, 31)
if (equal(Picker, "player")) {
drop_primary(touched)
Bazooka_Ammo[touched] = entity_get_int(toucher, EV_INT_iuser1)
wep[touched] = give_item(touched, "weapon_m249");
Allow_Shooting[touched] = true
Has_Bazooka[touched] = true
entity_set_int(touched, EV_INT_weaponanim, SEQ_IDLE)
client_print(touched, print_chat, "[Bazooka] You have picked up a bazooka!")
emit_sound(touched, CHAN_WEAPON, "items/gunpickup2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
remove_entity(toucher)
new temp[2], weaponID = get_user_weapon(touched, temp[0], temp[1])
if(weaponID == CSW_M249) {
Event_CurWeapon(touched)
if (Bazooka_Ammo[touched] > 0) entity_set_int(touched, EV_INT_weaponanim, SEQ_RELOAD)
if (Bazooka_Ammo[touched] <= 0) entity_set_int(touched, EV_INT_weaponanim, SEQ_IDLE2)
}
}
}
return PLUGIN_CONTINUE
}
public do_victim (victim,attacker,Damage) {
if(Damage >= get_user_health(victim))
{
util_kill(attacker, victim)
if (Damage > 100)
{
new iOrigin[3]
get_user_origin(victim,iOrigin)
set_user_rendering(victim,kRenderFxNone,0,0,0,kRenderTransAlpha,0)
fx_gib_explode(iOrigin,3)
fx_blood_large(iOrigin,5)
fx_blood_small(iOrigin,15)
iOrigin[2] = iOrigin[2] - 20
set_user_origin(victim,iOrigin)
}
}
else
set_user_health(victim,get_user_health(victim) - Damage )
}
util_kill(killer, victim)
{
if (get_user_team(killer) != get_user_team(victim))
{
user_silentkill(victim);
make_deathmsg(killer, victim, 0, "rpg");
set_user_frags(killer, get_user_frags(killer) + 1);
new money = cs_get_user_money(killer) + 300;
if (money >= 16000)
cs_set_user_money(killer, 16000);
else
cs_set_user_money(killer, money, 1);
}
else
{
user_silentkill(victim);
make_deathmsg(killer, victim, 0, "rpg");
set_user_frags(killer, get_user_frags(killer) - 1);
new money = cs_get_user_money(killer) - 3300;
if (money <= 0)
cs_set_user_money(killer, 0);
else
cs_set_user_money(killer, money, 1);
}
message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
write_byte(killer); // Destination
write_short(get_user_frags(killer)); // Frags
write_short(cs_get_user_deaths(killer)); // Deaths
write_short(0); // Player class
write_short(get_user_team(killer)); // Team
message_end();
message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"));
write_byte(victim); // Destination
write_short(get_user_frags(victim)); // Frags
write_short(cs_get_user_deaths(victim)); // Deaths
write_short(0); // Player class
write_short(get_user_team(victim)); // Team
message_end();
}
public cmd_Drop_Bazooka (id, level, cid) {
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
drop_lancher(id,0)
return PLUGIN_HANDLED
}
public drop_rpglancher (id) {
drop_lancher(id,1)
Bazooka_Ammo[id] = 0
Has_Bazooka[id] = false
Event_CurWeapon(id)
return PLUGIN_HANDLED
}
public drop_lancher (id, sel) {
new Float:PlayerOrigin[3], Float:End[3], Float:Return[3], Float:TraceDirection[3], Float:Angles[3]
if (sel == 0) VelocityByAim(id, 64, TraceDirection)
if (sel == 1) VelocityByAim(id, 200, TraceDirection)
entity_get_vector(id, EV_VEC_origin, PlayerOrigin)
if (sel == 1) entity_get_vector(id, EV_VEC_angles, Angles)
End[0] = TraceDirection[0] + PlayerOrigin[0]
End[1] = TraceDirection[1] + PlayerOrigin[1]
End[2] = TraceDirection[2] + PlayerOrigin[2]
trace_line(id, PlayerOrigin, End, Return)
Return[2] = PlayerOrigin[2]
new RPG = create_entity("info_target")
entity_set_string(RPG, EV_SZ_classname, "rpglancher")
entity_set_model(RPG, "models/w_rpg.mdl")
entity_set_origin(RPG, Return)
if (sel == 1) {
Angles[0] = 0.0
Angles[2] = 0.0
}
if ( sel == 0) entity_set_vector(RPG, EV_VEC_angles, Angles)
new Float:MinBox[3] = {-16.0, -16.0, 0.0}
new Float:MaxBox[3] = {16.0, 16.0, 16.0}
entity_set_vector(RPG, EV_VEC_mins, MinBox)
entity_set_vector(RPG, EV_VEC_maxs, MaxBox)
entity_set_int(RPG, EV_INT_solid, 1)
entity_set_int(RPG, EV_INT_movetype, 6)
if (sel == 0) entity_set_int(RPG, EV_INT_iuser1, 5)
if (sel == 0) entity_set_int(RPG, EV_INT_iuser2, 0)
if (sel == 0) entity_set_int(RPG, EV_INT_iuser3, 0)
if (sel == 1) entity_set_int(RPG, EV_INT_iuser1, Bazooka_Ammo[id])
return PLUGIN_HANDLED
}
public delay (data2[]) {
E_KeyPress_Delay[data2[0]] = false
}
public PlayerPreThink(id)
{
if(!is_user_connected(id)) return FMRES_IGNORED
if(!is_user_alive(id)) return FMRES_IGNORED
if(!Has_Bazooka[id]) return FMRES_IGNORED
entity_set_int(id, EV_INT_weaponanim, anim[id])
new Float:v[3], Float:a[3]
new ent = ent = find_ent_by_class(-1, "rpgrocket")
while(ent > 0)
{
pev(ent, pev_velocity, v)
vector_to_angle(v, a)
set_pev(ent, pev_angles, a)
ent = find_ent_by_class(ent, "rpgrocket")
}
new weaponid, clip, ammo
weaponid = get_user_weapon(id, clip, ammo)
cs_set_weapon_ammo(wep[id], 0);
cs_set_user_bpammo(id, CSW_M249, Bazooka_Ammo[id]);
if (weaponid == CSW_M249) {
new buttons = pev(id,pev_button)
new attack = get_user_button(id) & IN_ATTACK
new oldattack = get_user_oldbutton(id) & IN_ATTACK
if((buttons & IN_ATTACK) && Has_Bazooka[id])
buttons &= ~IN_ATTACK
set_pev(id, pev_button, buttons);
if (attack && !oldattack && Has_Bazooka[id])
{
emit_sound(id, CHAN_WEAPON, "weapons/dryfire1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
if (Allow_Shooting[id] && Bazooka_Ammo[id] > 0)
{
remove_task (id+2023)
Allow_Shooting[id] = false
entity_set_int(id, EV_INT_weaponanim, SEQ_FIRE)
fire_rocket(id)
}
}
}
return FMRES_HANDLED
}
public cmd_BuyBazooka (id) {
if(!is_user_alive(id))
client_print(id, print_center, "You cant buy when your dead!")
else if(cs_get_user_money(id) < get_pcvar_num(cost))
client_print(id, print_center, "Insuffisant funds, you need %d to buy the bazooka", get_pcvar_num(cost))
else {
drop_primary(id)
cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(cost), 1)
wep[id] = give_item(id, "weapon_m249");
Has_Bazooka[id] = true
entity_set_int(id, EV_INT_weaponanim, SEQ_IDLE)
Allow_Shooting[id] = true
Bazooka_Ammo[id] = 5
client_print(id, print_chat, "[Bazooka] You have successfully bought a bazooka!")
client_print(id, print_chat, "[Bazooka] What are you going to do now!?")
new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_M249) {//
Event_CurWeapon(id)
entity_set_int(id, EV_INT_weaponanim, SEQ_FIDGET)
}
else {
client_cmd(id, "weapon_m249")
}
emit_sound(id, CHAN_WEAPON, "items/gunpickup2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
return PLUGIN_HANDLED
}
public cmd_GiveBazooka (id, level, cid) {
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new Arg1[64], target
read_argv(1, Arg1, 63)
new adminName[32]
get_user_name(id, adminName, 31)
new targetTeam
new Players[32], iNum
if(Arg1[0] == '@') {
if(equali(Arg1[1], "all")) {
targetTeam = 0
get_players(Players, iNum, "a")
}
else if(equali(Arg1[1], "t")) {
targetTeam = 1
get_players(Players, iNum, "ae" , "terrorist")
}
else if(equali(Arg1[1], "ct")) {
targetTeam = 2
get_players(Players, iNum, "ae" , "ct")
}
for(new i = 0; i < iNum; ++i)
{
target = Players[i]
drop_primary(target)
wep[target] = give_item(target, "weapon_m249");
Has_Bazooka[target] = true
anim[target] = SEQ_IDLE
Allow_Shooting[target] = true
Bazooka_Ammo[target] = 5
new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])
if(weaponID == CSW_M249)
{
Event_CurWeapon(target)
entity_set_int(target, EV_INT_weaponanim, SEQ_FIDGET)
}
else
{
client_cmd(target, "weapon_m249")
}
emit_sound(target, CHAN_WEAPON, "items/gunpickup2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
client_print(target, print_chat, "You have been given a bazooka")
}
switch(targetTeam) {
case 0: client_print(0, print_chat, "Admin: %s has given everyone a bazooka", adminName)
case 1: client_print(0, print_chat, "Admin: %s has given all terrorist a bazooka", adminName)
case 2: client_print(0, print_chat, "Admin: %s has given all ct's a bazooka", adminName)
}
}
else {
target = cmd_target(id, Arg1, 0)
if(!is_user_connected(target) || !is_user_alive(target))
return PLUGIN_HANDLED
new targetName[32]
get_user_name(target, targetName, 31)
wep[target] = give_item(target, "weapon_m249");
Has_Bazooka[target] = true
Allow_Shooting[target] = true
Bazooka_Ammo[target] = 5
new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])
if(weaponID == CSW_M249) {//
Event_CurWeapon(target)
anim[target] = SEQ_FIDGET
}
else {
client_cmd(target, "weapon_m249")
}
emit_sound(target, CHAN_WEAPON, "items/gunpickup2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
client_print(target, print_chat, "You have been given a bazooka.")
client_print(target, print_chat, "Admin: %s has given you a bazooka", adminName)
}
return PLUGIN_HANDLED
}
public Event_CurWeapon (id) {
if(!is_user_alive(id))
return PLUGIN_CONTINUE
new weaponid, clip, ammo
weaponid = get_user_weapon(id, clip, ammo)
if ((weaponid == CSW_M249) && (Has_Bazooka[id])) {
entity_set_string(id, EV_SZ_viewmodel, "models/v_rpg.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/p_rpg.mdl")
entity_set_int(id, EV_INT_weaponanim, SEQ_FIDGET)
Fw_Item_AddToPlayer_Post(CSW_M249, id)
return PLUGIN_HANDLED
}
if ((weaponid == CSW_M249) && (!Has_Bazooka[id]))
{
entity_set_string(id, EV_SZ_viewmodel, "models/v_m249.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/p_m249.mdl")
emit_sound(id, CHAN_ITEM, "weapons/m249_deploy1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
entity_set_int(id, EV_INT_weaponanim, SEQ_FIRE)
Fw_Item_AddToPlayer_Post(CSW_M249, id)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public Event_DeathMsg () {
new id = read_data(2)
if(!is_user_connected(id) || !Has_Bazooka[id])
return PLUGIN_CONTINUE
drop_rpglancher(id)
ham_strip_weapon(id, "weapon_m249");
return PLUGIN_CONTINUE
}
public Event_WeaponDrop (id) {
if(!is_user_alive(id) || !Has_Bazooka[id])
return PLUGIN_CONTINUE
new weaponid, clip, ammo
weaponid = get_user_weapon(id, clip, ammo)
if (weaponid == CSW_M249) {
drop_rpglancher(id)
ham_strip_weapon(id, "weapon_m249");
}
else
return PLUGIN_CONTINUE
return PLUGIN_HANDLED
}
/************************************************************
* GIB FUNCTIONS (made by mike_cao)
************************************************************/
static fx_blood_small (origin[3],num) {
// Small splash
for (new blood_small = 0; blood_small< num; blood_small++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_WORLDDECAL)
write_coord(origin[0]+random_num(-100,100))
write_coord(origin[1]+random_num(-100,100))
write_coord(origin[2]-36)
if (is_cstrike) write_byte(random_num(190,197)) // Blood decals
if (!is_cstrike) write_byte(random_num(202,209)) // Blood decals
message_end()
}
}
static fx_blood_large (origin[3],num) {
// Large splash
for (new blood_large = 0; blood_large < num; blood_large++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_WORLDDECAL)
write_coord(origin[0] + random_num(-50,50))
write_coord(origin[1] + random_num(-50,50))
write_coord(origin[2]-36)
if (is_cstrike) write_byte(random_num(204,205)) // Blood decals
if (!is_cstrike) write_byte(random_num(216,217)) // Blood decals
message_end()
}
}
static fx_gib_explode (origin[3],num) {
new flesh[3], x, y, z
flesh[0] = mdl_gib_flesh
flesh[1] = mdl_gib_meat
flesh[2] = mdl_gib_legbone
// Gib explosion
// Head
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_MODEL)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(random_num(-100,100))
write_coord(random_num(-100,100))
write_coord(random_num(100,200))
write_angle(random_num(0,360))
write_short(mdl_gib_head)
write_byte(0)
write_byte(500)
message_end()
// Spine
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_MODEL)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(random_num(-100,100))
write_coord(random_num(-100,100))
write_coord(random_num(100,200))
write_angle(random_num(0,360))
write_short(mdl_gib_spine)
write_byte(0)
write_byte(500)
message_end()
// Lung
for(new Lung = 0; Lung < random_num(1,2); Lung++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_MODEL)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(random_num(-100,100))
write_coord(random_num(-100,100))
write_coord(random_num(100,200))
write_angle(random_num(0,360))
write_short(mdl_gib_lung)
write_byte(0)
write_byte(500)
message_end()
}
// Parts, 5 times
for(new Parts = 0; Parts < 5; Parts++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_MODEL)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(random_num(-100,100))
write_coord(random_num(-100,100))
write_coord(random_num(100,200))
write_angle(random_num(0,360))
write_short(flesh[random_num(0,2)])
write_byte(0)
write_byte(500)
message_end()
}
// Blood
for(new Blood = 0; Blood < num; Blood++) {
x = random_num(-100,100)
y = random_num(-100,100)
z = random_num(0,100)
for(new j = 0; j < 5; j++) {
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_BLOODSPRITE)
write_coord(origin[0]+(x*j))
write_coord(origin[1]+(y*j))
write_coord(origin[2]+(z*j))
write_short(spr_blood_spray)
write_short(spr_blood_drop)
write_byte(248)
write_byte(15)
message_end()
}
}
}