Здравствуйте.
поставил jump гранату на сервер. но при нажатии на 4 показывает :

вот исходник:
Код
#include <amxmodx>
#include <engine>
#include <cstrike>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>
new const PLUGIN_INFO[] =
{
"[ZP]ZombieBomb(Jump)",
"2.0",
"Zombie-rus/heka"
}
#pragma tabsize 0
#define ZOMBIE_BOMB_P "models/zp_grenade/p_zbomb.mdl"
#define ZOMBIE_BOMB_V "models/zp_grenade/v_zbomb.mdl"
#define ZOMBIE_BOMB_W "models/zp_grenade/w_zbomb.mdl"
#define ZOMBIE_BOMB_BUY "zp/jump_grenade/gunpickup2.wav"
#define ZOMBIE_BOMB_EXP "zp/jump_grenade/zombi_bomb_exp.wav"
#define ZOMBIE_BOMB_EXP_SPR "sprites/zp/zombiebomb_exp.spr"
#define ZOMBIE_BOMB_EXP_RADIUS 300.0
#define ZOMBIE_BOMB_EXP_POWER 450.0
#define NADE_TYPE_ZOMBIEBOMB 26517
new g_ZombieBomb_ExpSpr
new g_ZombieBombID
new g_ZombieBomb [33]
new g_ZombieBomb_Icon[33][32]
public plugin_init ()
{
register_plugin(PLUGIN_INFO[0],PLUGIN_INFO[1],PLUGIN_INFO[2])
RegisterHam(Ham_Item_Deploy,"weapon_smokegrenade","FwdItemDeployPost",1);
register_event("DeathMsg","EV_DeathMsg","a")
register_event("CurWeapon","grenade_icon","be","1=1")
register_forward(FM_SetModel,"fw_SetModel")
RegisterHam(Ham_Think, "grenade","fw_ThinkGrenade")
g_ZombieBombID = zp_register_extra_item("ZombieBomb",4,ZP_TEAM_ZOMBIE)
}
public plugin_precache ( )
{
precache_model(ZOMBIE_BOMB_P)
precache_model(ZOMBIE_BOMB_V)
precache_model(ZOMBIE_BOMB_W)
precache_sound(ZOMBIE_BOMB_BUY)
precache_sound(ZOMBIE_BOMB_EXP)
precache_generic("sprites/zp/weapon_zombiebomb.txt")
precache_generic("sprites/zp/640hud61.spr")
precache_generic("sprites/zp/640hud7.spr")
g_ZombieBomb_ExpSpr = precache_model (ZOMBIE_BOMB_EXP_SPR)
register_clcmd("weapon_zombiebomb","Hook_SelectWeapon")
register_clcmd("weapon_smokegrenade","Hook_SelectWeapon")
}
public zp_extra_item_selected(id,Item)
{
if (Item == g_ZombieBombID)
{
if (g_ZombieBomb[id] >= 1)
{
client_print (id,print_chat,"[ZP] Вы не можете купить больше!")
return;
}
fm_give_item (id, "weapon_smokegrenade")
client_print (id,print_chat,"[ZP] Вы купили [Гранату-Джамп]")
emit_sound (id, CHAN_ITEM, ZOMBIE_BOMB_BUY, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
message_begin(MSG_ONE,get_user_msgid( "AmmoPickup"), _,id)
write_byte (13)
write_byte (1)
message_end ()
WeaponList_Change(id,true)
g_ZombieBomb [id] = 1
}
}
public zp_user_infected_post(id)
{
if(zp_get_user_nemesis(id) || zp_is_survivor_round() || zp_is_nemesis_round())
return;
fm_give_item(id, "weapon_smokegrenade")
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 1)
emit_sound (id,CHAN_ITEM,ZOMBIE_BOMB_BUY,VOL_NORM,ATTN_NORM,0,PITCH_NORM)
message_begin(MSG_ONE,get_user_msgid( "AmmoPickup"), _,id)
write_byte (13)
write_byte (1)
message_end ()
WeaponList_Change(id,true)
engclient_cmd(id, "weapon_knife")
g_ZombieBomb [id] = 1
}
public zp_user_humanized_post(id)
{
WeaponList_Change(id,false)
g_ZombieBomb [id] = 0
}
public zp_round_ended(id)
{
for (new i = 1; i <= get_maxplayers(); i++)
{
if (is_user_alive(i) && zp_get_user_zombie(i))
{
WeaponList_Change(i,false)
ham_strip_weapon(i , "weapon_smokegrenade")
g_ZombieBomb[i] = 0
}
}
}
public Hook_SelectWeapon(id) engclient_cmd(id,"weapon_smokegrenade")
public client_connect(id) g_ZombieBomb[id] = 0
public FwdItemDeployPost(entity)
{
static id;
id = get_pdata_cbase(entity, 41, 4);
if(zp_get_user_zombie(id))
{
set_pev(id,pev_viewmodel2,ZOMBIE_BOMB_V)
set_pev(id,pev_weaponmodel2,ZOMBIE_BOMB_P)
}
}
public EV_DeathMsg()
{
new iVictim = read_data (2)
if (!is_user_connected(iVictim))
return;
if(!zp_get_user_zombie(iVictim))
return
remove_grenade_icon(iVictim)
WeaponList_Change(iVictim,false)
ham_strip_weapon(iVictim,"weapon_smokegrenade")
g_ZombieBomb[iVictim] = 0
}
public fw_SetModel(Entity,const Model[])
{
if (Entity < 0)
return FMRES_IGNORED;
if (pev(Entity,pev_dmgtime) == 0.0)
return FMRES_IGNORED;
new iOwner = entity_get_edict ( Entity, EV_ENT_owner )
if ( g_ZombieBomb [ iOwner ] >= 1 && equal ( Model [ 7 ], "w_sm", 4 ) )
{
set_pev(Entity,pev_flTimeStepSound,0)
set_pev(Entity,pev_flTimeStepSound,NADE_TYPE_ZOMBIEBOMB)
g_ZombieBomb[iOwner]--
entity_set_model(Entity, ZOMBIE_BOMB_W)
fm_set_rendering(Entity,kRenderFxHologram,255,165,0,kRenderNormal,16)
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public fw_ThinkGrenade(Entity)
{
if (!pev_valid(Entity))
return HAM_IGNORED;
static Float:dmg_time
pev (Entity,pev_dmgtime,dmg_time)
if (dmg_time > get_gametime())
return HAM_IGNORED;
if (pev(Entity,pev_flTimeStepSound) == NADE_TYPE_ZOMBIEBOMB)
{
jumping_explode (Entity)
return HAM_SUPERCEDE;
}
return HAM_IGNORED;
}
public jumping_explode (Entity)
{
if(Entity < 0)
return
static Float:flOrigin [3]
pev(Entity,pev_origin,flOrigin)
engfunc(EngFunc_MessageBegin,MSG_PVS,SVC_TEMPENTITY,flOrigin,0)
write_byte(TE_SPRITE)
engfunc(EngFunc_WriteCoord,flOrigin [0])
engfunc(EngFunc_WriteCoord,flOrigin [1])
engfunc(EngFunc_WriteCoord,flOrigin [2] + 45.0)
write_short( g_ZombieBomb_ExpSpr )
write_byte(35)
write_byte(186)
message_end()
emit_sound (Entity,CHAN_WEAPON,ZOMBIE_BOMB_EXP,VOL_NORM,ATTN_NORM,0,PITCH_NORM)
for (new i = 1; i < get_maxplayers (); i++)
{
if (!is_user_alive(i))
continue;
new Float:flVictimOrigin [3]
pev (i,pev_origin,flVictimOrigin)
new Float:flDistance = get_distance_f(flOrigin,flVictimOrigin)
if (flDistance <= ZOMBIE_BOMB_EXP_RADIUS)
{
static Float:flSpeed
flSpeed = ZOMBIE_BOMB_EXP_POWER
static Float:flNewSpeed
flNewSpeed = flSpeed * (1.0 - ( flDistance / ZOMBIE_BOMB_EXP_RADIUS))
static Float:flVelocity [3]
get_speed_vector(flOrigin,flVictimOrigin,flNewSpeed,flVelocity)
set_pev (i,pev_velocity,flVelocity)
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenShake"), _, i)
write_short((1<<12)*4) // amplitude
write_short((1<<12)*10) // duration
write_short((1<<12)*10) // frequency
message_end()
if(zp_get_user_zombie(i))
{
if (pev(i, pev_health) - 20.0 <= 0) ExecuteHamB(Ham_Killed, i, i, 1)
else ExecuteHamB(Ham_TakeDamage, i, 0, i, 20.0, DMG_BLAST)
}
}
}
engfunc(EngFunc_RemoveEntity,Entity)
}
public WeaponList_Change(id,bool:change)
{
if (!is_user_connected(id))
return;
message_begin(MSG_ONE, get_user_msgid("WeaponList"), {0,0,0}, id)
if (bool:change)
write_string("weapon_zombiebomb")
else
write_string("weapon_smokegrenade")
write_byte(13)
write_byte(1)
write_byte(-1)
write_byte(-1)
write_byte(3)
write_byte(3)
write_byte(9)
write_byte(24)
message_end()
}
public grenade_icon(id)
{
remove_grenade_icon(id)
if(is_user_bot(id))
return
static igrenade, grenade_sprite[16], grenade_color[3]
igrenade = get_user_weapon(id)
switch(igrenade)
{
case CSW_SMOKEGRENADE:
{
if(!is_user_alive(id) || zp_get_user_zombie(id))
{
grenade_sprite = "dmg_gas"
grenade_color = {255, 165, 0}
}
else
{
grenade_sprite = ""
grenade_color = {0, 0, 0}
}
}
default: return
}
g_ZombieBomb_Icon[id] = grenade_sprite
message_begin(MSG_ONE,get_user_msgid("StatusIcon"),{0,0,0},id)
write_byte(1)
write_string(g_ZombieBomb_Icon[id])
write_byte(grenade_color[0])
write_byte(grenade_color[1])
write_byte(grenade_color[2])
message_end()
return
}
public remove_grenade_icon(id)
{
message_begin(MSG_ONE,get_user_msgid("StatusIcon"),{0,0,0},id)
write_byte(0)
write_string(g_ZombieBomb_Icon[id])
message_end()
}
stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
{
new_velocity[0] = origin2[0] - origin1[0]
new_velocity[1] = origin2[1] - origin1[1]
new_velocity[2] = origin2[2] - origin1[2]
new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
new_velocity[0] *= num
new_velocity[1] *= num
new_velocity[2] *= num
return 1;
}
stock 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
if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt)
if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0
ExecuteHamB(Ham_Item_Kill,wEnt);
set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId))
return 1
}
и txt файл
Код
3
weapon 640 zp/640hud61 0 0 170 45
weapon_s 640 zp/640hud61 0 45 170 45
ammo 640 zp/640hud7 120 124 24 24