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

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

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

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

ZP M-79

, нужен небольшой фикс
Статус пользователя YrkinSon
сообщение 4.10.2015, 12:32
Сообщение #1
Стаж: 12 лет
Город: Новосибирск

Сообщений: 302
Благодарностей: 54
Полезность: 36

Облазил почти весь интернет и нашел более менее хороший плагин этого оружия для ZP но есть одно но, если ты купил эту оружку там идет спрайт на прицел, стандартный убирается и ставится другой, но если ты купил и тебя заразили то стандартный прицел не появится пока заново не купишь это лаунчер и не передернеш его c другим оружием на Q, так вот хочу сделать что бы стандартный прицел вообще не убирался. Если что готов оплатить работу.

Cкрытый текст
Код:
#include <amxmodx>
#include <engine>
#include <xs>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <zombieplague>

//native zp_cs_get_user_money(index)
//native zp_cs_set_user_money(index, value)

//#define BUYMENU

//#if defined BUYMENU
//#define GET_MONEY zp_cs_get_user_money
//#define SET_MONEY zp_cs_set_user_money
//#else
#define GET_MONEY zp_get_user_ammo_packs
#define SET_MONEY zp_set_user_ammo_packs
//#endif

#define WEAPON_NUMBER 1079

#define TIME_RELOAD 2.7
#define TIME_DRAW 1.0

#define ANIM_DRAW 1
#define ANIM_SHOOT 2
#define ANIM_SHOOT_L 3

#define CLIP 20
#define AMMO_COST 600

#define BUYAMMO_SOUND "items/9mmclip1.wav"
#define EXPLODE_SOUND "weapons/m79_explosion.wav"
#define SHOOT_SOUND "weapons/m79-1.wav"
#define VIEW_MODEL "models/cso_zp/v_m79_new.mdl"
#define PLAYER_MODEL "models/cso_zp/p_m79.mdl"
#define WORLD_MODEL "models/cso_zp/w_m79.mdl"
#define SPECIAL_MODEL "models/cso_zp/s_m79.mdl"

#define EXPLODE_DAMAGE 700.0

new g_itemid, g_has_m79[33], g_clipammo[33]

new g_orig_event_p228, g_p228_variables[10]

new g_index_explosion, g_index_trail, g_index_smoke, g_index_gibs

const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_GLOCK18)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_DEAGLE)|(1<<CSW_P228)

public plugin_init()
{
register_plugin("[ZP] Extra Item: M79 Saw off", "1.0", "n1ke:D")

register_message(get_user_msgid("WeapPickup"), "message_weappickup")
register_message(get_user_msgid("CurWeapon"), "message_curweapon")
register_message(get_user_msgid("AmmoX"), "message_ammox")

register_forward(FM_SetModel, "fm_setmodel")
register_forward(FM_UpdateClientData, "fm_updateclientdata_post", 1)
register_forward(FM_PlaybackEvent, "fm_playbackevent")

register_touch("m79_grenade", "*", "touch_m79_grenade")

RegisterHam(Ham_Item_AddToPlayer, "weapon_p228", "ham_item_addtoplayer")
RegisterHam(Ham_Item_Deploy, "weapon_p228", "ham_item_deploy_post", 1)
RegisterHam(Ham_Item_Holster, "weapon_p228", "ham_item_holster_post", 1)

RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_p228", "ham_weapon_primaryattack")
RegisterHam(Ham_Weapon_Reload, "weapon_p228", "ham_weapon_reload")

RegisterHam(Ham_Spawn, "player", "ham_spawn_post", 1)

g_itemid = zp_register_extra_item("M-79", 0, ZP_TEAM_HUMAN)

//register_dictionary("buy_menu.txt")
}

public plugin_precache()
{
precache_model(VIEW_MODEL)
precache_model(PLAYER_MODEL)
precache_model(WORLD_MODEL)
precache_model(SPECIAL_MODEL)

precache_sound(SHOOT_SOUND)
precache_sound(EXPLODE_SOUND)

g_index_explosion = precache_model("sprites/eexplo.spr")

g_index_trail = precache_model("sprites/zbeam2.spr")
g_index_smoke = precache_model("sprites/black_smoke3.spr")
g_index_gibs = precache_model("models/ceilinggibs.mdl")

precache_sound(BUYAMMO_SOUND)

precache_sound("weapons/m79_clipin.wav")
precache_sound("weapons/m79_clipon.wav")
precache_sound("weapons/m79_clipout.wav")
precache_sound("weapons/m79_draw.wav")

precache_generic("sprites/blackcat_sc/640hud7.spr")
precache_generic("sprites/blackcat_sc/640hud42.spr")
precache_generic("sprites/blackcat_sc/grenade_scope.spr")
precache_generic("sprites/weapon_m79_sc.txt")
register_clcmd("weapon_m79_sc", "clcmd_weapon_m79_sc")

register_message(78, "message_weaponlist")
register_forward(FM_PrecacheEvent, "fm_precacheevent_post", 1)
}

/*public zp_buy_ammo_2(i)
{
if(!g_has_m79[i])
return PLUGIN_CONTINUE

new weapon_entity = find_ent_by_owner (-1, "weapon_p228", i)

if(get_pdata_int(weapon_entity, 51, 4) >= CLIP)
{
client_print(i, print_center, "%L", i, "CAN_NOT_CARRY")
return ZP_PLUGIN_HANDLED
}

if(GET_MONEY(i) < AMMO_COST)
{
client_print(i, print_center, "%L", i, "NOT_ENOUGH_MONEY")

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("BlinkAcct"), _, i)
write_byte(5)
message_end()

return ZP_PLUGIN_HANDLED
}

set_pdata_int(weapon_entity, 51, get_pdata_int(weapon_entity, 51, 4) + 1, 4)

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoPickup"), {0,0,0}, i)
{
write_byte(g_p228_variables[2])
write_byte(1)
}
message_end()

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), {0,0,0}, i)
{
write_byte(g_p228_variables[2])
write_byte(get_pdata_int(weapon_entity, 51, 4))
}
message_end()

SET_MONEY(i, GET_MONEY(i) - AMMO_COST)

emit_sound(i, CHAN_ITEM, "items/9mmclip1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

return ZP_PLUGIN_HANDLED
}*/

public client_disconnect(id)
{
g_has_m79[id] = false
}

public zp_user_infected_post(id)
{
g_has_m79[id] = false
}

public ham_spawn_post(id)
{
if(!is_user_alive(id))
return HAM_IGNORED

if(!return_has_weapon(id, "weapon_p228"))
g_has_m79[id] = false

if(get_user_weapon(id) != CSW_P228 || !g_has_m79[id])
return HAM_IGNORED

new weapon_ent = find_ent_by_owner(-1, "weapon_p228", id)
new iClip = get_pdata_int(weapon_ent, 51, 4)

message_begin(MSG_ONE, get_user_msgid("HideWeapon"), {0,0,0}, id)
{
write_byte(1<<6)
}
message_end()

message_begin(MSG_ONE, get_user_msgid("SetFOV"), {0,0,0}, id)
{
write_byte(89)
}
message_end()

message_begin(MSG_ONE, get_user_msgid("CurWeapon"), {0,0,0}, id)
{
write_byte(true)
write_byte(g_p228_variables[8])
write_byte(iClip)
}
message_end()

return HAM_IGNORED
}

public zp_extra_item_selected(id, itemid)
{
if(itemid != g_itemid)
return

give_m79(id)
}

public give_m79(id)
{
drop_weapons(id, 1)

g_has_m79[id] = true

new weapon = give_item(id, "weapon_p228")

if(weapon > 0)
{
set_pdata_int(weapon, 51, CLIP, 4)
g_clipammo[id] = CLIP
}

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), {0,0,0}, id)
{
write_byte(g_p228_variables[2])
write_byte(get_pdata_int(find_ent_by_owner(-1, "weapon_p228", id), 51, 4))
}
message_end()

ExecuteHam(Ham_Item_Deploy, id)
}

public give_m792(id)
{
drop_weapons(id, 1)

g_has_m79[id] = true

new weapon = give_item(id, "weapon_p228")

if(weapon > 0)
{
set_pdata_int(weapon, 51, CLIP, 4)
g_clipammo[id] = CLIP
}

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), {0,0,0}, id)
{
write_byte(g_p228_variables[2])
write_byte(get_pdata_int(find_ent_by_owner(-1, "weapon_p228", id), 51, 4))
}
message_end()

ExecuteHam(Ham_Item_Deploy, id)
}

public fm_precacheevent_post(type, const name[])
{
if(!equal("events/p228.sc", name))
return FMRES_IGNORED

g_orig_event_p228 = get_orig_retval()
return FMRES_HANDLED
}

public fm_setmodel(entity, model[])
{
if(!is_valid_ent(entity))
return FMRES_IGNORED

static id, Ent
id = entity_get_edict(entity, EV_ENT_owner)
Ent = find_ent_by_owner(-1, "weapon_p228", entity)

if(!equal(model, "models/w_p228.mdl") || !is_valid_ent(Ent) || !g_has_m79[id])
return FMRES_IGNORED

entity_set_int(Ent, EV_INT_impulse, WEAPON_NUMBER)

entity_set_model(entity, WORLD_MODEL)

set_pev(entity, pev_body, 11)

g_has_m79[id] = false

return FMRES_SUPERCEDE
}

public fm_updateclientdata_post(id, SendWeapons, CD_Handle)
{
if(!is_user_alive(id) || get_user_weapon(id) != CSW_P228 || !g_has_m79[id])
return FMRES_IGNORED

set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001)
return FMRES_HANDLED
}

public fm_playbackevent(flags, id, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
{
if (eventid != g_orig_event_p228 || !is_user_alive(id))
return FMRES_IGNORED

playback_event(flags | FEV_HOSTONLY, id, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
return FMRES_SUPERCEDE
}

public message_weappickup(msg_id, msg_dest, id)
{
if(!is_user_alive(id) || get_msg_arg_int(1) != CSW_P228 || !g_has_m79[id])
return PLUGIN_CONTINUE

set_weaplist(id, "weapon_m79_sc")
return PLUGIN_CONTINUE
}

public message_ammox(msg_id, msg_dest, id)
{
if(!is_user_connected(id) || !g_has_m79[id] || get_user_weapon(id) != CSW_P228 || get_msg_arg_int(1) != g_p228_variables[2])
return PLUGIN_CONTINUE

set_msg_arg_int(1, ARG_BYTE, g_clipammo[id])

return PLUGIN_CONTINUE
}

public message_curweapon(msg_id, msg_dest, id)
{
if(!is_user_connected(id) || get_msg_arg_int(2) != CSW_P228 || !g_has_m79[id])
return PLUGIN_CONTINUE

set_msg_arg_int(3, ARG_BYTE, -1)

return PLUGIN_CONTINUE
}

public message_weaponlist(msg_id, msg_dest, id)
{
if(get_msg_arg_int(8) != CSW_P228)
return PLUGIN_CONTINUE;

g_p228_variables[2] = get_msg_arg_int(2)
g_p228_variables[3] = get_msg_arg_int(3)
g_p228_variables[4] = get_msg_arg_int(4)
g_p228_variables[5] = get_msg_arg_int(5)
g_p228_variables[6] = get_msg_arg_int(6)
g_p228_variables[7] = get_msg_arg_int(7)
g_p228_variables[8] = get_msg_arg_int(8)
g_p228_variables[9] = get_msg_arg_int(9)

return PLUGIN_CONTINUE;
}

public set_weaplist(index, const string_msg[])
{
message_begin(MSG_ONE, get_user_msgid("WeaponList"), {0,0,0}, index)
{
write_string(string_msg)
write_byte(g_p228_variables[2])
write_byte(g_p228_variables[3])
write_byte(g_p228_variables[4])
write_byte(g_p228_variables[5])
write_byte(g_p228_variables[6])
write_byte(g_p228_variables[7])
write_byte(g_p228_variables[8])
write_byte(g_p228_variables[9])
}
message_end()
}

public clcmd_weapon_m79_sc(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED

engclient_cmd(id, "weapon_p228")
return PLUGIN_HANDLED
}

public ham_item_addtoplayer(entity, id)
{
if(!is_user_alive(id))
return HAM_IGNORED

if(entity_get_int(entity, EV_INT_impulse) != WEAPON_NUMBER)
{
set_weaplist(id, "weapon_p228")
return HAM_IGNORED
}

entity_set_int(entity, EV_INT_impulse, 0)

g_has_m79[id] = true

return HAM_HANDLED
}

public ham_item_deploy_post(weapon_ent)
{
static id; id = get_pdata_cbase(weapon_ent, 41, 4)
new iClip = get_pdata_int(weapon_ent, 51, 4)

if(!is_user_alive(id) || !g_has_m79[id])
return HAM_IGNORED

set_pev(id, pev_viewmodel2, VIEW_MODEL)
set_pev(id, pev_weaponmodel2, PLAYER_MODEL)

play_weapon_animation(id, ANIM_DRAW)
set_pdata_float(id, 83, TIME_DRAW, 5)

message_begin(MSG_ONE, get_user_msgid("HideWeapon"), {0,0,0}, id)
{
write_byte(1<<6)
}
message_end()

message_begin(MSG_ONE, get_user_msgid("SetFOV"), {0,0,0}, id)
{
write_byte(89)
}
message_end()

message_begin(MSG_ONE, get_user_msgid("CurWeapon"), {0,0,0}, id)
{
write_byte(true)
write_byte(g_p228_variables[8])
write_byte(iClip)
}
message_end()

return HAM_IGNORED
}

public ham_item_holster_post(weapon_ent)
{
static id; id = get_pdata_cbase(weapon_ent, 41, 4)

if(!is_user_alive(id) || !g_has_m79[id])
return HAM_IGNORED

message_begin(MSG_ONE, get_user_msgid("HideWeapon"), {0,0,0}, id)
{
write_byte(1>>6)
}
message_end()

message_begin(MSG_ONE, get_user_msgid("SetFOV"), {0,0,0}, id)
{
write_byte(90)
}
message_end()

return HAM_IGNORED
}

public ham_weapon_primaryattack(weapon_entity)
{
new id = get_pdata_cbase(weapon_entity, 41, 4)

if (!is_user_alive(id) || !g_has_m79[id])
return HAM_IGNORED

if(get_pdata_int(weapon_entity, 51, 4) <= 0)
return HAM_IGNORED

play_weapon_animation(id, get_pdata_int(weapon_entity, 51, 4) == 1 ? ANIM_SHOOT_L : ANIM_SHOOT)
emit_sound(id, CHAN_WEAPON, SHOOT_SOUND, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

make_grenade(id)

set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0})

set_pdata_float(id, 83, 2.8, 5)
set_pdata_float(weapon_entity, 46, 2.8, 4);

set_pdata_int(weapon_entity, 51, get_pdata_int(weapon_entity, 51, 4) - 1, 4)

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), {0,0,0}, id)
{
write_byte(g_p228_variables[2])
write_byte(get_pdata_int(weapon_entity, 51, 4))
}
message_end()

return HAM_SUPERCEDE
}

public ham_weapon_reload(weapon_entity)
{
new id; id = pev(weapon_entity, pev_owner)

if (!is_user_alive(id) || !g_has_m79[id])
return HAM_IGNORED

return HAM_SUPERCEDE
}

stock play_weapon_animation(const Player, const Sequence)
{
set_pev(Player, pev_weaponanim, Sequence)

message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
write_byte(Sequence)
write_byte(pev(Player, pev_body))
message_end()
}

stock drop_weapons(id, dropwhat)
{
static weapons[32], wname[32], num, i, weaponid
num = 0
get_user_weapons(id, weapons, num)

for (i = 0; i < num; i++)
{
weaponid = weapons[i]

if (dropwhat == 1 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))
{
get_weaponname(weaponid, wname, sizeof wname - 1)
engclient_cmd(id, "drop", wname)
}
}
}

stock return_has_weapon(id, const findstring[])
{
static weapons[32], wname[32], num, i, weaponid
num = 0
get_user_weapons(id, weapons, num)

for (i = 0; i < num; i++)
{
weaponid = weapons[i]
get_weaponname(weaponid, wname, sizeof wname - 1)

if(equal(wname, findstring))
return 1;
}
return 0;
}

public make_grenade(id)
{
new Float:fAngle[3], Float:fVelocity[3]
pev(id, pev_v_angle, fAngle)

new grenade = create_entity("info_target")

if (!grenade)
return

entity_set_string(grenade, EV_SZ_classname, "m79_grenade")

entity_set_model(grenade, SPECIAL_MODEL)

new Float:vOrigin[3]
pev(id, pev_origin, vOrigin)

static Float:origin[3], Float:angles[3], Float:v_forward[3], Float:v_right[3], Float:v_up[3], Float:gun_position[3], Float:player_origin[3], Float:player_view_offset[3];

pev(id, pev_v_angle, angles);
engfunc(EngFunc_MakeVectors, angles);
global_get(glb_v_forward, v_forward);
global_get(glb_v_right, v_right);
global_get(glb_v_up, v_up);

pev(id, pev_origin, player_origin);
pev(id, pev_view_ofs, player_view_offset);
xs_vec_add(player_origin, player_view_offset, gun_position);

/*
// For Right hand
xs_vec_mul_scalar(v_forward, 18.0, v_forward); //18
xs_vec_mul_scalar(v_up, -3.8, v_up); //-3.8
xs_vec_mul_scalar(v_right, 6.0, v_right); // 6.0
*/

xs_vec_add(gun_position, v_forward, origin);
xs_vec_add(origin, v_right, origin);
xs_vec_add(origin, v_up, origin);
vOrigin[0] = origin[0]
vOrigin[1] = origin[1]
vOrigin[2] = origin[2]

entity_set_origin(grenade, vOrigin)

entity_set_vector(grenade, EV_VEC_angles, fAngle)
entity_set_size(grenade, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0})
entity_set_int(grenade, EV_INT_solid, SOLID_SLIDEBOX)
entity_set_int(grenade, EV_INT_movetype, MOVETYPE_TOSS)
entity_set_edict(grenade, EV_ENT_owner, id)

VelocityByAim(id, 2000, fVelocity)

entity_set_vector(grenade, EV_VEC_velocity, fVelocity)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(grenade)
write_short(g_index_trail)
write_byte(6)
write_byte(3)
write_byte(255)
write_byte(255)
write_byte(255)
write_byte(75)
message_end()
}

public touch_m79_grenade(ent, id)
{
if (!pev_valid(ent))
return

// Get origin
static Float:originF[3]
pev(ent, pev_origin, originF)

new owner = pev(ent, pev_owner)

new victim

while((victim=engfunc(EngFunc_FindEntityInSphere, victim, originF, 240.0))!=0) {
if(pev(victim, pev_takedamage)!=DAMAGE_NO && pev(victim, pev_solid)!=SOLID_NOT) {
if(is_user_alive(victim)) {
if(zp_get_user_zombie(victim)) {

new victim_origin[3], distance, Float:distance_damage, floated_origin[3]
floated_origin[0] = floatround(originF[0])
floated_origin[1] = floatround(originF[1])
floated_origin[2] = floatround(originF[2])
get_user_origin(victim, victim_origin)

distance = get_distance(victim_origin, floated_origin)
distance_damage = EXPLODE_DAMAGE - floatmul(EXPLODE_DAMAGE, floatdiv(float(distance), 300.0))

ExecuteHamB(Ham_TakeDamage, victim, ent, owner, distance_damage, DMG_GENERIC)
}
}
else
ExecuteHamB(Ham_TakeDamage, victim, ent, owner, EXPLODE_DAMAGE, DMG_GENERIC)
}
}

make_metal_gibs(ent)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_EXPLOSION) // Temporary entity ID
engfunc(EngFunc_WriteCoord, originF[0]) // engfunc because float
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2] + 20)
write_short(g_index_explosion) // Sprite index
write_byte(30) // Scale
write_byte(20) // Framerate
write_byte(0) // Flags
message_end()

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_SMOKE) // Temporary entity IF
engfunc(EngFunc_WriteCoord, originF[0]) // Pos X
engfunc(EngFunc_WriteCoord, originF[1]) // Pos Y
engfunc(EngFunc_WriteCoord, originF[2]) // Pos Z
write_short(g_index_smoke) // Sprite index
write_byte(30) // Scale
write_byte(17) // Framerate
message_end()

engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_WORLDDECAL)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
write_byte(engfunc(EngFunc_DecalIndex, "{scorch3"))
message_end()

emit_sound(ent, CHAN_WEAPON, EXPLODE_SOUND, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

// Get rid of the grenade
engfunc(EngFunc_RemoveEntity, ent)
}

public make_metal_gibs(ent)
{
static Float:flOrigin[3]
pev(ent, pev_origin, flOrigin)

message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_BREAKMODEL)
engfunc(EngFunc_WriteCoord, flOrigin[0])
engfunc(EngFunc_WriteCoord, flOrigin[1])
engfunc(EngFunc_WriteCoord, flOrigin[2])
engfunc(EngFunc_WriteCoord, 150)
engfunc(EngFunc_WriteCoord, 150)
engfunc(EngFunc_WriteCoord, 150)
engfunc(EngFunc_WriteCoord, random_num(-50,50))
engfunc(EngFunc_WriteCoord, random_num(-50,50))
engfunc(EngFunc_WriteCoord, random_num(-50,50))
write_byte(30)
write_short(g_index_gibs)
write_byte(random_num(20, 30))
write_byte(20)
write_byte(0x04) //0x02 - metal
message_end()
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя samthugg
сообщение 4.10.2015, 17:39
Сообщение #2


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

Стаж: 15 лет

Сообщений: 1333
Благодарностей: 1476
Полезность: 1344

Вырезать вообще убирание прицела, все сообщения где есть HideWeapon
Просто удалив по всему коду 3 строки начиная с message_begin до message_end


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: