Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

3 страниц V   1 2 »

Помогите исправить ошибку в амхх-плагине

, Есть 2 проблемы
yukish
сообщение 6.1.2014, 0:04
Сообщение #1
Стаж: 12 лет

Сообщений: 596
Благодарностей: 29
Полезность: 0

Есть плагин "Базука". Ниже его исходник.
В принципе работает, но есть 2 проблемы.

1) Когда берёшь оружие в руки - начинает подлагивать игра, пинг возрастает.
Заметил, если закоментируешь эту часть кода - то глюки уменьшаются в 2-3 раза,
но тогда не выводится какой режим выбрал и сколько ракет осталось.

Скрытый текст

format(AmmoHud, 64, "Rockets: %i | Mode: %s", Ammo, Mode_Text)

if (show) {

message_begin(MSG_ONE, get_user_msgid("StatusText"), {0,0,0}, id)
write_byte(0)
write_string(AmmoHud)
message_end()

}

else {

message_begin(MSG_ONE, get_user_msgid("StatusText"), {0,0,0}, id)
write_byte(0)
write_string("")
message_end()

}

Как исправить вывод подсказок, чтобы плагин не лагал??

2) в лог-файл "error_20140105.log" постоянно пишутся ошибки
L 01/05/2014 - 16:02:56: Start of error session.
L 01/05/2014 - 16:02:56: Info (map "fy_pool_day") (file "addons/amxmodx/logs/error_20140105.log")
L 01/05/2014 - 16:02:56: [AMXX] Run time error 4 (plugin "bazooka_2_Slot3.amxx") - debug not enabled!
L 01/05/2014 - 16:02:56: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 01/05/2014 - 16:02:56: [AMXX] Run time error 4 (plugin "bazooka_2_Slot3amxx") - debug not enabled!
L 01/05/2014 - 16:02:56: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
и так далее.... очень много таких строк...
Как найти и исправить этот глюк?

Вот весь исходник:
Скрытый текст

/* Plugin generated by AMXX-Studio *

Bazooka_2_Slot3 (Knife)

ToDo:
For ver: 2.2.1
Changed to pcvar cvars
More Anitmation cleanup.
Added Ammo by mode
Changed name to Bazooka_2_Slot3

Usage:
Select knife and press (E userkey) to toggle weapon bazooka/knife.

fire button 1 to fire missile
fire button 2 missile selection {Normal / Heat-Seeking / User-Guided}

Commands:

bazooka | spawn a bazooka in front of you (admin only)
bazooka_give <@all/ct/t>/userid> <amount> | give bazooka (admin only)

Say buybazooka in chat to buy bazooka. (everyone)

Cvars:

bazooka_buyable // Allow clients to buy a bazooka (default: 1)
bazooka_anitmation // Set to 1 for bazooka anitmation (default: 1)
bazooka_cost // Sets bazooka cost (default: 2500)
bazooka_dropping // Allow clients to drop the bazooka?? (default: 1)
bazooka_ammo1 // Sets max ammo Normal missiles (default: 3)
bazooka_ammo2 // Sets max ammo Heat-Seeking missiles (default: 1)
bazooka_ammo3 // Sets max ammo User-Guided missiles (default: 1)
bazooka_Damage_Radius // Sets bazooka damage radius (default: 250)
bazooka_Max_Damage // Sets bazooka damage. (default: 150)
bazooka_restrict // Resrict Certain Modes: a = Normal | b = Heat-Seeking | c = User-Guided | d = None
bazooka_trailtime // Bazooka trails time (default:10 roughly 1 seconds)
bazooka_velocity // Sets Missile speed only affects normal and heat-seeking rockets (default: 1200)
bazooka_trailcolors // Set to 0 = white 1 = team color 2 = random color trails
bazooka_gib // Set to 1 for gib` deaths
bazooka_obeyffcvar // Obeys friendly fire
bazooka_tkpunish1 // Sets team kill on/off
bazooka_tkpunish2 // Sets team kill amount
bazooka_buyzone // Obeys buy zone restriction.

Special thanks to:

-=STN=- MaGe / KaOs / RadidEskimo / Freecode / EJL / JTP10181 / PaintLancer / Kaddar
Vexd / twistedeuphoria / XxAvalanchexX / pimp daddy / Ronkkrop / Major_victory

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>

#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

new mod_name[33]
new g_buyzone[33]
new Rocket_Mode[33]
new User_Control[33]
new Bazooka_Ammo1[33]
new Bazooka_Ammo2[33]
new Bazooka_Ammo3[33]
new Team_Kill_Count[33]
new Old_Rocket_Mode[33]

new bool:RoundEnd
new bool:is_cstrike

new bool:Has_Bazooka[33]
new bool:Allow_Shooting[33]
new bool:Bazooka_Active[33]
new bool:g_restart_attempt[33]

new cvar_bazooka_cost
new cvar_bazooka_ammo1
new cvar_bazooka_ammo2
new cvar_bazooka_ammo3
new cvar_bazooka_buyable
new cvar_bazooka_dropping
new cvar_bazooka_restrict
new cvar_bazooka_velocity
new cvar_bazooka_trailtime
new cvar_bazooka_gib_death
new cvar_bazooka_tkpunish1
new cvar_bazooka_tkpunish2
new cvar_bazooka_max_damage
new cvar_bazooka_trailcolor
new cvar_bazooka_obeyffcvar
new cvar_bazooka_obeybuyzone
new cvar_bazooka_damage_radius
new cvar_bazooka_animation

new iFlags
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 gmsgDeathMsg, gmsgScoreInfo

new bool:E_KeyPress_Delay[33]

static PLUGIN_NAME[] = "Bazooka_2_Slot3"
static PLUGIN_AUTHOR[] = "Can't Shoot"
static PLUGIN_VERSION[] = "2.2.1"

public plugin_init () {

register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

/* Register pcvar cvars */
cvar_bazooka_cost = register_cvar("bazooka_cost","2500",FCVAR_SERVER)
cvar_bazooka_ammo1 = register_cvar("bazooka_ammo1","3",FCVAR_UNLOGGED)
cvar_bazooka_ammo2 = register_cvar("bazooka_ammo2","1",FCVAR_UNLOGGED)
cvar_bazooka_ammo3 = register_cvar("bazooka_ammo3","1",FCVAR_UNLOGGED)
cvar_bazooka_buyable = register_cvar("bazooka_buyable","1",FCVAR_SERVER)
cvar_bazooka_dropping = register_cvar("bazooka_dropping","1",FCVAR_SERVER)
cvar_bazooka_restrict = register_cvar("bazooka_restrict","d",FCVAR_SERVER)
cvar_bazooka_velocity = register_cvar("bazooka_velocity","1200",FCVAR_UNLOGGED)
cvar_bazooka_animation = register_cvar("bazooka_animation","1",FCVAR_UNLOGGED)
cvar_bazooka_trailtime = register_cvar("bazooka_trailtime","10",FCVAR_UNLOGGED)
cvar_bazooka_gib_death = register_cvar("bazooka_gib_death","1",FCVAR_SERVER)
cvar_bazooka_tkpunish1 = register_cvar("bazooka_tkpunish1","1",FCVAR_SERVER)
cvar_bazooka_tkpunish2 = register_cvar("bazooka_tkpunish2","3",FCVAR_SERVER)
cvar_bazooka_max_damage = register_cvar("bazooka_max_damage","150",FCVAR_UNLOGGED)
cvar_bazooka_trailcolor = register_cvar("bazooka_trailcolor","1",FCVAR_UNLOGGED)
cvar_bazooka_obeyffcvar = register_cvar("bazooka_obeyffcvar","1",FCVAR_SERVER)
cvar_bazooka_obeybuyzone = register_cvar("bazooka_obeybuyzone","1",FCVAR_SERVER)
cvar_bazooka_damage_radius = register_cvar("bazooka_damage_radius","250",FCVAR_UNLOGGED)

register_concmd("bazooka","cmd_Drop_Bazooka",ADMIN_BAN)
register_concmd("buybazooka","cmd_BuyBazooka",ADMIN_USER,"- Buys a bazooka")

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_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_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")

gmsgDeathMsg = get_user_msgid("DeathMsg")
gmsgScoreInfo = get_user_msgid("ScoreInfo")

get_modname(mod_name,31)
is_cstrike = equal(mod_name,"cstrike") ? true : false

}

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_model("models/v_knife.mdl")
precache_model("models/p_knife.mdl")
precache_model("models/shield/v_shield_knife.mdl")
precache_model("models/shield/p_shield_knife.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")

}

stock bool:has_shield(id) {

new modelName[32]
entity_get_string(id, EV_SZ_viewmodel, modelName, 31)

if(containi(modelName, "v_shield_") != -1) return true

return false

}

public Event_BuyZone(id) {

g_buyzone[id] = read_data(1)

}

public get_restrict_flags () {

new sFlags[24]
get_pcvar_string(cvar_bazooka_restrict,sFlags,24)
iFlags = read_flags(sFlags)

}

public client_connect (id) {

Rocket_Mode[id] = 1
Has_Bazooka[id] = false
Allow_Shooting[id] = false
Bazooka_Active[id] = false
E_KeyPress_Delay[id] = false

}

public client_disconnect (id) {

Rocket_Mode[id] = 1
Has_Bazooka[id] = false
Allow_Shooting[id] = false
Bazooka_Active[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_Ammo1[id] = get_pcvar_num(cvar_bazooka_ammo1)
Bazooka_Ammo2[id] = get_pcvar_num(cvar_bazooka_ammo2)
Bazooka_Ammo3[id] = get_pcvar_num(cvar_bazooka_ammo3)

// 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 (get_pcvar_num(cvar_bazooka_animation) == 1) {

if ((Bazooka_Ammo1[data[0]] > 0) && (Rocket_Mode[data[0]] == 1))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_IDLE)

if ((Bazooka_Ammo2[data[0]] > 0) && (Rocket_Mode[data[0]] == 2))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_IDLE)

if ((Bazooka_Ammo3[data[0]] > 0) && (Rocket_Mode[data[0]] == 3))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_IDLE)

if ((Bazooka_Ammo1[data[0]] <= 0) && (Rocket_Mode[data[0]] == 1))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_IDLE2)

if ((Bazooka_Ammo2[data[0]] <= 0) && (Rocket_Mode[data[0]] == 2))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_IDLE2)

if ((Bazooka_Ammo3[data[0]] <= 0) && (Rocket_Mode[data[0]] == 3))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_IDLE2)

}

}

public rpg_reload_start (data[]) {

if (get_pcvar_num(cvar_bazooka_animation) == 1) {

if ((Bazooka_Ammo1[data[0]] > 0) && (Rocket_Mode[data[0]] == 1))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_RELOAD)

if ((Bazooka_Ammo2[data[0]] > 0) && (Rocket_Mode[data[0]] == 2))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_RELOAD)

if ((Bazooka_Ammo3[data[0]] > 0) && (Rocket_Mode[data[0]] == 3))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_RELOAD)

if ((Bazooka_Ammo1[data[0]] <= 0) && (Rocket_Mode[data[0]] == 1))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_IDLE2)

if ((Bazooka_Ammo2[data[0]] <= 0) && (Rocket_Mode[data[0]] == 2))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_IDLE2)

if ((Bazooka_Ammo3[data[0]] <= 0) && (Rocket_Mode[data[0]] == 3))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_IDLE2)

}

}

public rpg_fidget (data[]) {

if (!RoundEnd) Allow_Shooting[data[0]] = true

if (get_pcvar_num(cvar_bazooka_animation) == 1) {

if ((Bazooka_Ammo1[data[0]] > 0) && (Rocket_Mode[data[0]] == 1))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_FIDGET)

if ((Bazooka_Ammo2[data[0]] > 0) && (Rocket_Mode[data[0]] == 2))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_FIDGET)

if ((Bazooka_Ammo3[data[0]] > 0) && (Rocket_Mode[data[0]] == 3))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_FIDGET)

if ((Bazooka_Ammo1[data[0]] <= 0) && (Rocket_Mode[data[0]] == 1))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_FIDGET2)

if ((Bazooka_Ammo2[data[0]] <= 0) && (Rocket_Mode[data[0]] == 2))
entity_set_int(data[0], EV_INT_weaponanim, SEQ_FIDGET2)

if ((Bazooka_Ammo3[data[0]] <= 0) && (Rocket_Mode[data[0]] == 3))
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(Bazooka_Active[id]) {

if(containi(sample, "weapons/knife") != -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)
entity_set_int(RocketEnt, EV_INT_movetype, 5)
entity_set_edict(RocketEnt, EV_ENT_owner, id)

new Float:Velocity[3]
new myvelocity = get_pcvar_num(cvar_bazooka_velocity)

VelocityByAim(id, myvelocity, Velocity)
entity_set_vector(RocketEnt, EV_VEC_velocity, Velocity)

new CsTeams:iTeam = cs_get_user_team(id)
new TrailTime = get_pcvar_num(cvar_bazooka_trailtime )

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(RocketEnt)
write_short(RocketSmoke)
write_byte(TrailTime)
write_byte(5)

if (get_pcvar_num(cvar_bazooka_trailcolor) == 0) {

// Color = White
write_byte(254)
write_byte(254)
write_byte(254)
write_byte(255)

}

else if (get_pcvar_num(cvar_bazooka_trailcolor) == 1) {

switch(iTeam) {

// if team T Color = Red
case CS_TEAM_T: {

write_byte(255)
write_byte(0)
write_byte(0)
write_byte(255)

}

// if team CT Color = Blue
case CS_TEAM_CT: {

write_byte(0)
write_byte(0)
write_byte(255)
write_byte(255)

}
}
}

else {

// random colors
write_byte(random_num(0,255))
write_byte(random_num(0,255))
write_byte(random_num(0,255))
write_byte(255)

}

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)

if (Rocket_Mode[id] == 1) Bazooka_Ammo1[id]--

if (Rocket_Mode[id] == 2) {

new info[1]
info[0] = RocketEnt
set_task(0.5, "find_and_follow", 0, info, 1)

Bazooka_Ammo2[id]--

}

else if (Rocket_Mode[id] == 3) {

entity_set_int(RocketEnt, EV_INT_rendermode, 1)
attach_view(id, RocketEnt)

User_Control[id] = RocketEnt

Bazooka_Ammo3[id]--

}

return PLUGIN_HANDLED

}

public find_and_follow (info[]) {

new RocketEnt = info[0]
new Float:shortestDist = 10000.0
new nearestPlayer = 0

if (is_valid_ent(RocketEnt)) {

new players[32], count

get_players(players, count)

for (new i = 0; i < count; i++) {

if (is_user_alive(players[i])
&& (entity_get_edict(RocketEnt, EV_ENT_owner) != players[i])
&& (get_user_team(players[i]) != get_user_team(entity_get_edict(RocketEnt, EV_ENT_owner)))) {

new Float:PlayerOrigin[3], Float:RocketOrigin[3]

entity_get_vector(players[i], EV_VEC_origin, PlayerOrigin)
entity_get_vector(RocketEnt, EV_VEC_origin, RocketOrigin)

new Float:Distance = vector_distance(PlayerOrigin, RocketOrigin)

if (Distance <= shortestDist) {

shortestDist = Distance
nearestPlayer = players[i]

}

}

}

}

if (nearestPlayer > 0) {

new data[2]

data[0] = RocketEnt
data[1] = nearestPlayer

set_task(0.1, "follow_and_catch", RocketEnt, data, 2, "b")

}

else {

pfn_touch(RocketEnt, 0)

}
}

public follow_and_catch (data[]) {

new RocketEnt = data[0]
new target = data[1]
new myvelocity = get_pcvar_num(cvar_bazooka_velocity)

if (is_user_alive(target) && is_valid_ent(RocketEnt)) {

entity_set_follow(RocketEnt, target, (myvelocity + 0.0))

new Float:Velocity[3]
new Float:NewAngle[3]

entity_get_vector(RocketEnt, EV_VEC_velocity, Velocity)
vector_to_angle(Velocity, NewAngle)
entity_set_vector(RocketEnt, EV_VEC_angles, NewAngle)

}

else {

if (task_exists(RocketEnt))
remove_task(RocketEnt)

new info[1]

info[0] = RocketEnt

set_task(0.1, "find_and_follow", 0, data, 1)

}

}

public entity_set_follow (entity, target, Float:speed) {

if (!is_valid_ent(entity) || !is_valid_ent(target)) return

new Float:entity_origin[3], Float:target_origin[3]
entity_get_vector(entity, EV_VEC_origin, entity_origin)
entity_get_vector(target, EV_VEC_origin, target_origin)

new Float:diff[3]
diff[0] = target_origin[0] - entity_origin[0]
diff[1] = target_origin[1] - entity_origin[1]
diff[2] = target_origin[2] - entity_origin[2]

new Float:length = floatsqroot(floatpower(diff[0], 2.0) + floatpower(diff[1], 2.0) + floatpower(diff[2], 2.0))

new Float:Velocity[3]
Velocity[0] = diff[0] * (speed / length)
Velocity[1] = diff[1] * (speed / length)
Velocity[2] = diff[2] * (speed / length)

entity_set_vector(entity, EV_VEC_velocity, Velocity)

return

}

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)

User_Control[id] = 0

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 = get_pcvar_num(cvar_bazooka_max_damage)
new Damage_Radius = get_pcvar_num(cvar_bazooka_damage_radius )

new PlayerPos[3], Distance, Damage

for (new i = 1; i < 32; i++) {

if (is_user_alive(i) == 1) {

new team_kill = 0
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") && get_pcvar_num(cvar_bazooka_obeyffcvar)) {

if(get_user_team(i) == get_user_team(attacker))
team_kill = 1

do_victim(i,attacker,Damage,team_kill)

}

else {

if(get_user_team(i) != get_user_team(attacker))
do_victim(i,attacker,Damage,team_kill)

}

}

else {

do_victim(i,attacker,Damage,team_kill)

}


}

else {

do_victim(i,attacker,Damage,team_kill)

}

}

}

}

new owner = entity_get_edict(toucher, EV_ENT_owner)
attach_view(owner, owner)
User_Control[owner] = 0
remove_entity(toucher)

//*******************************************************************
// force_use all func_breakable entites 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")) {

if(Has_Bazooka[touched])
return PLUGIN_CONTINUE

if(has_shield(touched))
return PLUGIN_CONTINUE

new Picker[32]

if (is_valid_ent(touched))
entity_get_string(touched, EV_SZ_classname, Picker, 31)

if (equal(Picker, "player")) {

give_item(touched, "weapon_knife")

Allow_Shooting[touched] = true
Has_Bazooka[touched] = true

Bazooka_Ammo1[touched] = entity_get_int(toucher, EV_INT_iuser1)
Bazooka_Ammo2[touched] = entity_get_int(toucher, EV_INT_iuser2)
Bazooka_Ammo3[touched] = entity_get_int(toucher, EV_INT_iuser3)

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

Bazooka_Active[touched] = true
Event_CurWeapon(touched)

if (Bazooka_Ammo1[touched] > 0) entity_set_int(touched, EV_INT_weaponanim, SEQ_RELOAD)
if (Bazooka_Ammo1[touched] <= 0) entity_set_int(touched, EV_INT_weaponanim, SEQ_IDLE2)

}

}


}

return PLUGIN_CONTINUE

}

public do_victim (victim,attacker,Damage,team_kill) {

new namek[32],namev[32],authida[35],authidv[35],teama[32],teamv[32]

get_user_name(victim,namev,31)
get_user_name(attacker,namek,31)
get_user_authid(victim,authidv,34)
get_user_authid(attacker,authida,34)
get_user_team(victim,teamv,31)
get_user_team(attacker,teama,31)

if(Damage >= get_user_health(victim)) {

if(get_cvar_num("mp_logdetail") == 3) {

log_message("^"%s<%d><%s><%s>^" attacked ^"%s<%d><%s><%s>^" with ^"missile^" (hit ^"chest^") (Damage ^"%d^") (health ^"0^")",
namek,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),auth
idv,teamv,Damage)

}

client_print(attacker,print_chat,"[AMXX] You killed %s with that missile",namev)
client_print(victim,print_chat,"[AMXX] You were killed by %s's missile",namek)

if(team_kill == 0) {

set_user_frags(attacker,get_user_frags(attacker) + 1 )

}

else {

Team_Kill_Count[attacker] += 1
client_print(attacker,print_center,"You killed a teammate")
set_user_frags(attacker,get_user_frags(attacker) - 1 )

}

set_msg_block(gmsgDeathMsg,BLOCK_ONCE)
set_msg_block(gmsgScoreInfo,BLOCK_ONCE)

user_kill(victim,1)

replace_dm(attacker,victim,0)

log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"missile^"",
namek,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),auth
idv,teamv)

if (Damage > 100 && get_pcvar_num(cvar_bazooka_gib_death) == 1) {

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 )

if(get_cvar_num("mp_logdetail") == 3) {

log_message("^"%s<%d><%s><%s>^" attacked ^"%s<%d><%s><%s>^" with ^"missile^" (hit ^"chest^") (Damage ^"%d^") (health ^"%d^")",
namek,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),auth
idv,teamv,Damage,get_user_health(victim))

}

client_print(attacker,print_chat,"[AMXX] You hurt %s with that missile",namev)
client_print(victim,print_chat,"[AMXX] You were hurt by %s's missile",namek)

}

if (team_kill) {

new players[32],pNum

get_players(players,pNum,"e",teama)

for(new i=0;i<pNum;i++) {

client_print(players[i],print_chat,"%s attacked a teammate",namek)

new punish1 = get_pcvar_num(cvar_bazooka_tkpunish1)
new punish2 = get_pcvar_num(cvar_bazooka_tkpunish2)

if (!(get_user_flags(attacker)&ADMIN_IMMUNITY)) {

if (punish1 > 2) {

user_kill(attacker,0)
set_hudmessage(255,50,50, -1.0, 0.45, 0, 0.02, 10.0, 1.01, 1.1, 4)
show_hudmessage(attacker,"YOU WERE KILLED FOR ATTACKING TEAMMATES.^nSEE THAT IT HAPPENS NO MORE!")

}

if((punish1) && (Team_Kill_Count[attacker] >= punish2 )) {

if(punish1 == 1 || punish1 == 3) {

client_cmd(attacker,"echo You were kicked for team killing;disconnect")
}

else if(punish1 == 2 || punish1 == 4) {

client_cmd(attacker,"echo You were banned for team killing")

if (equal("4294967295",authida)) {

new ipa[32]
get_user_ip(attacker,ipa,31,1)
server_cmd("addip 180.0 %s;writeip",ipa)

}

else {

server_cmd("banid 180.0 %s kick;writeid",authida)

}

}

}

}

}

}

}

public replace_dm (id,tid,tbody) {

//Update killers scorboard with new info
message_begin(MSG_ALL,gmsgScoreInfo)
write_byte(id)
write_short(get_user_frags(id))
write_short(get_user_deaths(id))
write_short(0)
write_short(get_user_team(id))
message_end()

//Update victims scoreboard with correct info
message_begin(MSG_ALL,gmsgScoreInfo)
write_byte(tid)
write_short(get_user_frags(tid))
write_short(get_user_deaths(tid))
write_short(0)
write_short(get_user_team(tid))
message_end()

//Headshot Kill
if (tbody == 1) {

message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
write_byte(id)
write_byte(tid)
write_string(" missile")
message_end()

}

//Normal Kill
else {

message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
write_byte(id)
write_byte(tid)
write_byte(0)
write_string("missile")
message_end()

}

return PLUGIN_CONTINUE

}

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_Ammo1[id] = 0
Bazooka_Ammo2[id] = 0
Bazooka_Ammo3[id] = 0
Has_Bazooka[id] = false
Bazooka_Active[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, get_pcvar_num(cvar_bazooka_ammo1))
if (sel == 0) entity_set_int(RPG, EV_INT_iuser2, get_pcvar_num(cvar_bazooka_ammo2))
if (sel == 0) entity_set_int(RPG, EV_INT_iuser3, get_pcvar_num(cvar_bazooka_ammo3))

if (sel == 1) entity_set_int(RPG, EV_INT_iuser1, Bazooka_Ammo1[id])
if (sel == 1) entity_set_int(RPG, EV_INT_iuser2, Bazooka_Ammo2[id])
if (sel == 1) entity_set_int(RPG, EV_INT_iuser3, Bazooka_Ammo3[id])

return PLUGIN_HANDLED

}

public delay (data2[]) {

E_KeyPress_Delay[data2[0]] = false

}

public fw_CmdStart (id, uc_handle, seed) {

if(!is_user_connected(id)) return FMRES_IGNORED
if(!is_user_alive(id)) return FMRES_IGNORED
if(!Has_Bazooka[id]) return FMRES_IGNORED

if(has_shield(id)) {

drop_rpglancher(id)
return FMRES_IGNORED

}

if (Bazooka_Active[id]) ammo_hud(id, 1)
if (!Bazooka_Active[id]) ammo_hud(id, 0)

new weaponid, clip, ammo
weaponid = get_user_weapon(id, clip, ammo)

if (weaponid == CSW_KNIFE) {

new buttons = get_uc(uc_handle, UC_Buttons)
new inuse = get_user_button(id) & IN_USE
new attack = get_user_button(id) & IN_ATTACK
new attack2 = get_user_button(id) & IN_ATTACK2
new oldinuse = get_user_oldbutton(id) & IN_USE
new oldattack = get_user_oldbutton(id) & IN_ATTACK
new oldattack2 = get_user_oldbutton(id) & IN_ATTACK2

if((inuse) && (oldinuse) && (!E_KeyPress_Delay[id]))
return FMRES_IGNORED

if(buttons & IN_USE)
buttons &= ~IN_USE

if((buttons & IN_ATTACK) && Bazooka_Active[id])
buttons &= ~IN_ATTACK

if((buttons & IN_ATTACK2) && Bazooka_Active[id])
buttons &= ~IN_ATTACK2

set_uc(uc_handle, UC_Buttons, buttons)

if((inuse) && !(oldinuse)) {

new data2[1]

data2[0] = id

E_KeyPress_Delay[id] = true

set_task(0.2,"delay", id+2023, data2, 1)

if (Bazooka_Active[id])
Bazooka_Active[id] = false

else
Bazooka_Active[id] = true

Event_CurWeapon(id)

}

else if (attack && !oldattack && Bazooka_Active[id]) {

if (Rocket_Mode[id] == 1 && Bazooka_Ammo1[id] <= 0) {

emit_sound(id, CHAN_WEAPON, "weapons/dryfire1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

return FMRES_SUPERCEDE

}

if (Rocket_Mode[id] == 2 && Bazooka_Ammo2[id] <= 0) {

emit_sound(id, CHAN_WEAPON, "weapons/dryfire1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

return FMRES_SUPERCEDE

}

if (Rocket_Mode[id] == 3 && Bazooka_Ammo3[id] <= 0) {

emit_sound(id, CHAN_WEAPON, "weapons/dryfire1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

return FMRES_SUPERCEDE

}

if (Allow_Shooting[id] && (User_Control[id] == 0)) {

remove_task (id+2023)

Allow_Shooting[id] = false

entity_set_int(id, EV_INT_weaponanim, SEQ_FIRE)

fire_rocket(id)

}

}

else if (attack2 && !oldattack2 && Bazooka_Active[id]) {

get_restrict_flags()

Old_Rocket_Mode[id] = Rocket_Mode[id]

if ((Rocket_Mode[id] == 1) && (iFlags&BA_HEAT) != BA_HEAT) Rocket_Mode[id] = 2

else if ((Rocket_Mode[id] == 1) && (iFlags&BA_USER) != BA_USER) Rocket_Mode[id] = 3
else if ((Rocket_Mode[id] == 2) && (iFlags&BA_USER) != BA_USER) Rocket_Mode[id] = 3
else if ((Rocket_Mode[id] == 2) && (iFlags&BA_NORMAL) != BA_NORMAL) Rocket_Mode[id] = 1
else if ((Rocket_Mode[id] == 3) && (iFlags&BA_NORMAL) != BA_NORMAL) Rocket_Mode[id] = 1
else if ((Rocket_Mode[id] == 3) && (iFlags&BA_HEAT) != BA_HEAT) Rocket_Mode[id] = 2

if(Old_Rocket_Mode[id] == Rocket_Mode[id]) {

client_print(id, print_center, "The other modes are restricted")
return FMRES_SUPERCEDE

}

if (Rocket_Mode[id] == 1) client_print(id, print_center, "Switched to Normal Mode.")
if (Rocket_Mode[id] == 2) client_print(id, print_center, "Switched to Heat-Seeking Mode.")
if (Rocket_Mode[id] == 3) client_print(id, print_center, "Switched to User-Guided Mode.")

//emit_sound(id, CHAN_ITEM, "common/wpn_select.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

Event_CurWeapon(id)

}

}

if (User_Control[id] > 0) {

new RocketEnt = User_Control[id]

if (is_valid_ent(RocketEnt)) {

new Float:Velocity[3]
new Float:NewAngle[3]

VelocityByAim(id, 500, Velocity)

entity_set_vector(RocketEnt, EV_VEC_velocity, Velocity)

entity_get_vector(id, EV_VEC_v_angle, NewAngle)
entity_set_vector(RocketEnt, EV_VEC_angles, NewAngle)

}

else {

attach_view(id, id)

}

}

return FMRES_HANDLED

}

public cmd_BuyBazooka (id) {

if (get_pcvar_num(cvar_bazooka_buyable) == 0)
return PLUGIN_CONTINUE

new iMoney = cs_get_user_money(id)
new iCost = get_pcvar_num(cvar_bazooka_cost)

if(!is_user_alive(id))
client_print(id, print_center, "You cant buy when your dead!")

else if(Has_Bazooka[id])
client_print(id, print_center, "You already own that weapon.")

else if(has_shield(id))
client_print(id, print_center, "You cant buy bazooka when you have shield.")

else if(iMoney < iCost)
client_print(id, print_center, "Insufficient funds! ($%d)", iCost)

else if(get_pcvar_num(cvar_bazooka_obeybuyzone) == 1 && !g_buyzone[id])
client_print(id, print_center, "You need to be in the buyzone")

else {

give_item(id, "weapon_knife")

Has_Bazooka[id] = true
Allow_Shooting[id] = true

Bazooka_Ammo1[id] = get_pcvar_num(cvar_bazooka_ammo1)
Bazooka_Ammo2[id] = get_pcvar_num(cvar_bazooka_ammo2)
Bazooka_Ammo3[id] = get_pcvar_num(cvar_bazooka_ammo3)

cs_set_user_money(id, cs_get_user_money(id) - get_pcvar_num(cvar_bazooka_cost))
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_KNIFE) {

Bazooka_Active[id] = true
Event_CurWeapon(id)
entity_set_int(id, EV_INT_weaponanim, SEQ_FIDGET)

}

else {

Bazooka_Active[id] = true
client_cmd(id, "weapon_knife")

}

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]

give_item(target, "weapon_knife")

Has_Bazooka[target] = true
Allow_Shooting[target] = true

Bazooka_Ammo1[target] = get_pcvar_num(cvar_bazooka_ammo1)
Bazooka_Ammo2[target] = get_pcvar_num(cvar_bazooka_ammo2)
Bazooka_Ammo3[target] = get_pcvar_num(cvar_bazooka_ammo3)

new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])

if(weaponID == CSW_KNIFE) {

Bazooka_Active[target] = true
Event_CurWeapon(target)
entity_set_int(target, EV_INT_weaponanim, SEQ_FIDGET)

}

else {

Bazooka_Active[target] = true
client_cmd(target, "weapon_knife")

}

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)

give_item(target, "weapon_knife")

Has_Bazooka[target] = true
Allow_Shooting[target] = true

Bazooka_Ammo1[target] = get_pcvar_num(cvar_bazooka_ammo1)
Bazooka_Ammo2[target] = get_pcvar_num(cvar_bazooka_ammo2)
Bazooka_Ammo3[target] = get_pcvar_num(cvar_bazooka_ammo3)

new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])

if(weaponID == CSW_KNIFE) {

Bazooka_Active[target] = true
Event_CurWeapon(target)
entity_set_int(target, EV_INT_weaponanim, SEQ_FIDGET)

}

else {

Bazooka_Active[target] = true
client_cmd(target, "weapon_knife")

}

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_KNIFE) && (Bazooka_Active[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)
emit_sound(id, CHAN_ITEM, "common/wpn_select.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

return PLUGIN_HANDLED

}

if ((weaponid == CSW_KNIFE) && (!Bazooka_Active[id])) {

if(has_shield(id)) {

entity_set_string(id, EV_SZ_viewmodel, "models/shield/v_shield_knife.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/shield/p_shield_knife.mdl")

}

else {

entity_set_string(id, EV_SZ_viewmodel, "models/v_knife.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/p_knife.mdl")

}

emit_sound(id, CHAN_ITEM, "weapons/knife_deploy1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
entity_set_int(id, EV_INT_weaponanim, SEQ_FIRE)

ammo_hud(id, 0)

return PLUGIN_HANDLED

}

if(Has_Bazooka[id] && Bazooka_Active[id])
Bazooka_Active[id] = false

return PLUGIN_CONTINUE

}

public ammo_hud (id, show) {

new AmmoHud[65], Mode_Text[20], Ammo

if (Rocket_Mode[id] == 1) {

Ammo = Bazooka_Ammo1[id]
Mode_Text = "Normal"

}

if (Rocket_Mode[id] == 2) {

Ammo = Bazooka_Ammo2[id]
Mode_Text = "Heat-Seeking"

}

if (Rocket_Mode[id] == 3) {

Ammo = Bazooka_Ammo3[id]
Mode_Text = "User-Guided"

}

format(AmmoHud, 64, "Rockets: %i | Mode: %s", Ammo, Mode_Text)

if (show) {

message_begin(MSG_ONE, get_user_msgid("StatusText"), {0,0,0}, id)
write_byte(0)
write_string(AmmoHud)
message_end()

}

else {

message_begin(MSG_ONE, get_user_msgid("StatusText"), {0,0,0}, id)
write_byte(0)
write_string("")
message_end()

}

}

public Event_DeathMsg () {

new id = read_data(2)

if(!is_user_connected(id) || !Has_Bazooka[id])
return PLUGIN_CONTINUE

drop_rpglancher(id)

return PLUGIN_CONTINUE

}

public Event_WeaponDrop (id) {

if(!is_user_alive(id) || !Has_Bazooka[id] || !Bazooka_Active[id])
return PLUGIN_CONTINUE

new weaponid, clip, ammo
weaponid = get_user_weapon(id, clip, ammo)

if (weaponid == CSW_KNIFE) {

if (get_pcvar_num(cvar_bazooka_dropping) == 1) {

client_print(id, print_center, "")
drop_rpglancher(id)

}

else {

client_print(id, print_center, "This weapon cannot be dropped")

}

}

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

}

}

}


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя winzh1
сообщение 6.1.2014, 5:08
Сообщение #2


Стаж: 14 лет

Сообщений: 1414
Благодарностей: 600
Полезность: 838

Код
[AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

Включите дебаг у плагина, что бы посмотреть более подробно ошибку.


Установлю и настрою FreshBans, DopBan.
Писать в ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя RedL1ne
сообщение 6.1.2014, 6:03
Сообщение #3


Стаж: 15 лет

Сообщений: 3828
Благодарностей: 1854
Полезность: 876

Может не стоит каждую неделю создавать новую тему?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 6.1.2014, 13:35
Сообщение #4
Стаж: 12 лет

Сообщений: 596
Благодарностей: 29
Полезность: 0

Цитата(winzh1 @ 6.1.2014, 6:08) *
Код
[AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

Включите дебаг у плагина, что бы посмотреть более подробно ошибку.


Если не трудно, подскажите как это делается?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 6.1.2014, 13:44
Сообщение #5
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Цитата(yukish @ 6.1.2014, 14:35) *
Если не трудно, подскажите как это делается?

yukish, bazooka_2_Slot3.amxx debug
P.S. >>
Цитата
L 01/05/2014 - 16:02:56: [AMXX] Run time error 4 (plugin "bazooka_2_Slot3нету точки в логахamxx") - debug not enabled!


Отредактировал: Esecman, - 6.1.2014, 13:46
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 6.1.2014, 13:49
Сообщение #6


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Если есть желания, можем скинуться и заказать нормальный плагин без всяких приколов.


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 6.1.2014, 17:24
Сообщение #7
Стаж: 12 лет

Сообщений: 596
Благодарностей: 29
Полезность: 0

Цитата(Esecman @ 6.1.2014, 14:44) *
yukish, bazooka_2_Slot3.amxx debug
P.S. >>


1) Спасибо, дружище, логи очистил, на отладку поставил, вот что оно пишет.

Скрытый текст


L 01/06/2014 - 16:17:30: Start of error session.
L 01/06/2014 - 16:17:30: Info (map "fy_pool_day") (file "addons/amxmodx/logs/error_20140106.log")
L 01/06/2014 - 16:17:30: [AMXX] Displaying debug trace (plugin "bazooka_2_Slot3.amxx")
L 01/06/2014 - 16:17:30: [AMXX] Run time error 4: index out of bounds
L 01/06/2014 - 16:17:30: [AMXX] [0] bazooka_2_Slot3.sma::pfn_touch (line 959)
L 01/06/2014 - 16:17:30: [AMXX] Displaying debug trace (plugin "bazooka_2_Slot3.amxx")
L 01/06/2014 - 16:17:30: [AMXX] Run time error 4: index out of bounds
L 01/06/2014 - 16:17:30: [AMXX] [0] bazooka_2_Slot3.sma::pfn_touch (line 959)

И ТАКИХ СТРОК ОЧЕНЬ МНОГО


2) Касательно точки - они есть везде и в первом еррор-сообщении есть,
наверно там курсор стоял и случайно удалил точку.

3) А что про "проблему 1" - с тормозами при выводе подсказок. Как её разрешить?

Отредактировал: yukish, - 6.1.2014, 18:23
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 7.1.2014, 14:07
Сообщение #8
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Цитата(yukish @ 6.1.2014, 18:24) *
1) Спасибо, дружище, логи очистил, на отладку поставил, вот что оно пишет.

Скрытый текст


L 01/06/2014 - 16:17:30: Start of error session.
L 01/06/2014 - 16:17:30: Info (map "fy_pool_day") (file "addons/amxmodx/logs/error_20140106.log")
L 01/06/2014 - 16:17:30: [AMXX] Displaying debug trace (plugin "bazooka_2_Slot3.amxx")
L 01/06/2014 - 16:17:30: [AMXX] Run time error 4: index out of bounds
L 01/06/2014 - 16:17:30: [AMXX] [0] bazooka_2_Slot3.sma::pfn_touch (line 959)
L 01/06/2014 - 16:17:30: [AMXX] Displaying debug trace (plugin "bazooka_2_Slot3.amxx")
L 01/06/2014 - 16:17:30: [AMXX] Run time error 4: index out of bounds
L 01/06/2014 - 16:17:30: [AMXX] [0] bazooka_2_Slot3.sma::pfn_touch (line 959)

И ТАКИХ СТРОК ОЧЕНЬ МНОГО


2) Касательно точки - они есть везде и в первом еррор-сообщении есть,
наверно там курсор стоял и случайно удалил точку.

3) А что про "проблему 1" - с тормозами при выводе подсказок. Как её разрешить?


Залей исходник. долго копировать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 7.1.2014, 17:21
Сообщение #9
Стаж: 12 лет

Сообщений: 596
Благодарностей: 29
Полезность: 0

Вот архив - внутри sma, amxx и описание.

http://zalil.ru/34886066
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 17.1.2014, 22:32
Сообщение #10
Стаж: 12 лет

Сообщений: 596
Благодарностей: 29
Полезность: 0

Было время один специалист пообещал посмотреть, я ждал результата,
но что-то он перестал отвечать.

Пожалуйста, посмотрите кто может, в чём проблема.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя NichtWolf
сообщение 19.1.2014, 1:05
Сообщение #11
Стаж: 17 лет

Сообщений: 573
Благодарности: выкл.

Вылажи модель базуки, думаю вней проблема
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 19.1.2014, 17:33
Сообщение #12
Стаж: 12 лет

Сообщений: 596
Благодарностей: 29
Полезность: 0

Как модель может глючить - это просто картинка!!
Глючит сам плагин, прошу знающих в плагинах помочь разобраться.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя NichtWolf
сообщение 21.1.2014, 12:58
Сообщение #13
Стаж: 17 лет

Сообщений: 573
Благодарности: выкл.

откуда берёш модель базуки?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 21.1.2014, 17:55
Сообщение #14
Стаж: 12 лет

Сообщений: 596
Благодарностей: 29
Полезность: 0

Модель стандартная из HL, сама модель не при чём.
Здесь ошибка в sma-исходнике.
Ребята, кто-то может глянуть в чем дело?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
XyLiGaN
сообщение 21.1.2014, 17:58
Сообщение #15
Стаж: 13 лет
Город: Югорск

Сообщений: 11668
Благодарностей: 6450
Полезность: 1052

Меценат Меценат

yukish,
Мне вот всё интересно... Ты всегда сам с собой разговариваешь? В теме про voteban разговаривал, тут разговариваешь...
Ну если нету людей, работают они... Так кто тебе поможет? Написал, сиди и жди, кто-то да поможет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
yukish
сообщение 22.1.2014, 0:29
Сообщение #16
Стаж: 12 лет

Сообщений: 596
Благодарностей: 29
Полезность: 0

Если бы я что-то соображал в плагинах я бы поковырял.
Но... Хороший плагин и некому подправить, наверняка дело всего в 1-й строчке...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
XyLiGaN
сообщение 22.1.2014, 4:11
Сообщение #17
Стаж: 13 лет
Город: Югорск

Сообщений: 11668
Благодарностей: 6450
Полезность: 1052

Меценат Меценат

yukish,
Ну в ошибки сказана какая строчка там, так что можешь пойти в гугл и почитать :-) А так в плагинах соображают много кто, но вопрос в другом, стоит ли вам помогать?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 22.1.2014, 15:32
Сообщение #18
Стаж: 12 лет

Сообщений: 596
Благодарностей: 29
Полезность: 0

Я не знаю, чем я провинился, что вы сомневаетесь стоит ли мне помогать.

Если подскажете, как найти нужную строчку и что там править, я поправлю.
По номеру строки (line 959) - данная переменная pfn_touch там не встречается.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 22.1.2014, 15:52
Сообщение #19


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

yukish,
Плагин кривой, в паблике нету нормальных. Хочешь хороший плагин со стабильной работой - заказывай.


You become responsible, forever, for what you have tamed
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 22.1.2014, 18:56
Сообщение #20
Стаж: 12 лет

Сообщений: 596
Благодарностей: 29
Полезность: 0

Один говорит - плати деньги, работа сложная...
Другой говорит - там же строчка указана и ошибка, разобраться просто...

Только вот помочь, как всегда, некому. cray.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
3 страниц V   1 2 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: