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

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

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

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

Убрать w модель

Статус пользователя DANDY
сообщение 21.6.2016, 13:37
Сообщение #1
Стаж: 15 лет

Сообщений: 270
Благодарностей: 38
Полезность: 120

Здравствуйте.

Просьба помочь убрать w модель, чтобы осталась только p и v.
w модель в антидот гранате не нужна, даже не смотря на то, что она не используется, ведь она будет скачиваться клиентом игры?

Поэтому нужно убрать. Спасибо заранее.
Код:

#include <amxmodx>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>

//#define CLCMD
#define TYPE_FROST 1212
#define FROST_RADIUS 240.0
#define V_MODEL "models/zombieplay/v_grenade_antidote.mdl"
#define P_MODEL "models/zombieplay/p_grenade_antidote.mdl"
#define W_MODEL "models/zombieplay/w_grenade_antidote.mdl"
#define EXPLODE_SPR "sprites/shockwave.spr"
#define TRAIL_SPR "sprites/laserbeam.spr"
#define EXPLODE_SOUND "weapons/zombieplay/antidote_explosion.wav"

new g_exploSpr, g_trailSpr, g_iItem, g_iDeathMsg, g_iScoreAttrib, g_iScoreInfo, g_cvar_flaregrenades, g_msgsaytext, g_iBuyAntidote = 0;
new bool:g_iAntiDote[33];

public plugin_init()
{
register_plugin("[ZP] AntiDote Nade", "0.1", "di.alyabev");
register_forward(FM_SetModel, "Fakemeta_SetModel");
RegisterHam(Ham_Item_Deploy, "weapon_smokegrenade", "Ham_Player_ItemDeploy", 1);
RegisterHam(Ham_Think, "grenade", "Ham_Flash_Think");
RegisterHam(Ham_Killed, "player", "Ham_Player_Killed")
#if defined CLCMD
register_clcmd("give_item_AntiDote", "give_item_AntiDote");
#endif
g_iDeathMsg = get_user_msgid("DeathMsg")
g_iScoreAttrib = get_user_msgid("ScoreAttrib")
g_iScoreInfo = get_user_msgid("ScoreInfo")
g_iItem = zp_register_extra_item("\y[Grenade] \wAntiDote", 50, ZP_TEAM_HUMAN)
g_cvar_flaregrenades = get_cvar_pointer("zp_flare_grenades")
g_msgsaytext = get_user_msgid("SayText")
}

public plugin_precache()
{
engfunc(EngFunc_PrecacheModel, V_MODEL);
engfunc(EngFunc_PrecacheModel, P_MODEL);
engfunc(EngFunc_PrecacheModel, W_MODEL);
engfunc(EngFunc_PrecacheSound, EXPLODE_SOUND);
engfunc(EngFunc_PrecacheSound, "items/tr_kevlar.wav");
g_exploSpr = engfunc(EngFunc_PrecacheModel, EXPLODE_SPR);
g_trailSpr = engfunc(EngFunc_PrecacheModel, TRAIL_SPR)
}

public zp_extra_item_selected(id, itemid)
{
if(itemid == g_iItem) {
give_item_AntiDote(id)
}
}

public client_disconnect(id)
{
g_iAntiDote[id] = false;
}

public Ham_Player_Killed(victim, attacker, shouldgib)
{
g_iAntiDote[victim] = false;
}

public zp_round_ended()
{
g_iBuyAntidote = 0
}

//public zp_round_started()
//{
// g_iBuyAntidote = 0
//}

public give_item_AntiDote(id)
{
if(g_iBuyAntidote >= 3) {
print_col_chat(id, "^x04[ZP]^x01 Игроки купили максимум Антидот гранат: 3/3!")
return PLUGIN_CONTINUE;
}
if(g_iAntiDote[id]) {
engclient_cmd(id, "weapon_smokegrenade");
print_col_chat(id, "^x04[ZP]^x01 У вас уже есть Антидот граната!")
return PLUGIN_CONTINUE;
}
#if defined CLCMD
if(!is_user_alive(id)) {
client_print(id, print_center,"Вы умерли и не можете купить Антидот гранату!")
return PLUGIN_CONTINUE;
}
if(zp_get_user_zombie(id) || zp_get_user_nemesis(id) || zp_get_user_first_zombie(id) || zp_get_user_last_zombie(id)) {
client_print(id, print_center,"Вы не можете купить Антидот гранату!")
return PLUGIN_CONTINUE;
}
#endif
g_iBuyAntidote++
g_iAntiDote[id] = true;
engfunc(EngFunc_EmitSound, id, CHAN_WEAPON, "items/tr_kevlar.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
fm_strip_user_gun(id, _, "weapon_smokegrenade")
fm_give_item(id, "weapon_smokegrenade");
engclient_cmd(id, "weapon_smokegrenade");
new iszViewModel, iszWeaponModel;
if(iszViewModel || (iszViewModel = engfunc(EngFunc_AllocString, V_MODEL))) set_pev_string(id, pev_viewmodel2, iszViewModel);
if(iszWeaponModel || (iszWeaponModel = engfunc(EngFunc_AllocString, P_MODEL))) set_pev_string(id, pev_weaponmodel2, iszWeaponModel);
return PLUGIN_CONTINUE;
}

#define m_pPlayer 41
#define linux_diff_weapon 4
public Ham_Player_ItemDeploy(weapon)
{
new id = get_pdata_cbase(weapon, m_pPlayer, linux_diff_weapon);
if(!g_iAntiDote[id] || !is_user_alive(id)) return HAM_IGNORED;
new iszViewModel, iszWeaponModel;
if(iszViewModel || (iszViewModel = engfunc(EngFunc_AllocString, V_MODEL))) set_pev_string(id, pev_viewmodel2, iszViewModel);
if(iszWeaponModel || (iszWeaponModel = engfunc(EngFunc_AllocString, P_MODEL))) set_pev_string(id, pev_weaponmodel2, iszWeaponModel);
return HAM_IGNORED;
}

public Fakemeta_SetModel(entity, model[])
{
if(!pev_valid(entity) || !equal(model, "models/w_smokegrenade.mdl")) return FMRES_IGNORED;
new id = pev(entity, pev_owner);
if(!g_iAntiDote[id]) return FMRES_IGNORED;
set_pcvar_num(g_cvar_flaregrenades, 0)
set_pev(entity, pev_flTimeStepSound, TYPE_FROST)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(entity)
write_short(g_trailSpr)
write_byte(10)
write_byte(10)
write_byte(0)
write_byte(100)
write_byte(200)
write_byte(200)
message_end()
return FMRES_IGNORED;
}

public Ham_Flash_Think(entity)
{
if(!pev_valid(entity)) return HAM_IGNORED;
new id = pev(entity, pev_owner);
if(!is_user_alive(id) || !g_iAntiDote[id]) return HAM_IGNORED;
engfunc(EngFunc_SetModel, entity, W_MODEL);
new Float:dmgtime, Float:current_time
pev(entity, pev_dmgtime, dmgtime)
current_time = get_gametime()
if(dmgtime > current_time) return HAM_IGNORED;
if(pev(entity, pev_flTimeStepSound) == TYPE_FROST) {
antidote_explode(entity, id);
return HAM_SUPERCEDE;
}
return HAM_IGNORED;
}

antidote_explode(entity, id)
{
if(!g_iAntiDote[id]) return PLUGIN_CONTINUE;
set_pcvar_num(g_cvar_flaregrenades, 1)
new Float:originF[3]; pev(entity, pev_origin, originF);
create_effect(originF);
engfunc(EngFunc_EmitSound, id, CHAN_WEAPON, EXPLODE_SOUND, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
new victim; victim = -1; new attacker; attacker = pev(entity, pev_owner);
while((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, FROST_RADIUS)) != 0) {
if(!is_user_alive(victim) || !zp_get_user_zombie(victim) || zp_get_user_nemesis(victim) || zp_get_user_first_zombie(victim) || zp_get_user_last_zombie(victim))
continue
send_death_msg(attacker, victim)
fix_death_attrib(victim)
update_frags(attacker, victim, 1, 1, 1)
zp_disinfect_user(victim)
zp_set_user_ammo_packs(attacker,zp_get_user_ammo_packs(attacker) + 1)
}
engfunc(EngFunc_RemoveEntity, entity);
g_iAntiDote[id] = false;
return PLUGIN_CONTINUE
}

create_effect(const Float:originF[3])
{
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0);
write_byte(TE_BEAMCYLINDER);
engfunc(EngFunc_WriteCoord, originF[0]);
engfunc(EngFunc_WriteCoord, originF[1]);
engfunc(EngFunc_WriteCoord, originF[2]);
engfunc(EngFunc_WriteCoord, originF[0]);
engfunc(EngFunc_WriteCoord, originF[1]);
engfunc(EngFunc_WriteCoord, originF[2] + 385.0);
write_short(g_exploSpr);
write_byte(0);
write_byte(0);
write_byte(4);
write_byte(60);
write_byte(0);
write_byte(0);
write_byte(100);
write_byte(200);
write_byte(200);
write_byte(0);
message_end();

engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0);
write_byte(TE_BEAMCYLINDER);
engfunc(EngFunc_WriteCoord, originF[0]);
engfunc(EngFunc_WriteCoord, originF[1]);
engfunc(EngFunc_WriteCoord, originF[2]);
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1]);
engfunc(EngFunc_WriteCoord, originF[2] + 470.0);
write_short(g_exploSpr);
write_byte(0);
write_byte(0);
write_byte(4);
write_byte(60);
write_byte(0);
write_byte(0);
write_byte(100);
write_byte(200);
write_byte(200);
write_byte(0);
message_end();

engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0);
write_byte(TE_BEAMCYLINDER);
engfunc(EngFunc_WriteCoord, originF[0]);
engfunc(EngFunc_WriteCoord, originF[1]);
engfunc(EngFunc_WriteCoord, originF[2]);
engfunc(EngFunc_WriteCoord, originF[0]);
engfunc(EngFunc_WriteCoord, originF[1]);
engfunc(EngFunc_WriteCoord, originF[2] + 555.0);
write_short(g_exploSpr);
write_byte(0);
write_byte(0);
write_byte(4);
write_byte(60);
write_byte(0);
write_byte(0);
write_byte(100);
write_byte(200);
write_byte(200);
write_byte(0);
message_end();
}

public send_death_msg(attacker, victim)
{
message_begin(MSG_BROADCAST, g_iDeathMsg)
write_byte(attacker)
write_byte(victim)
write_byte(1)
write_string("grenade")
message_end()
}

public fix_death_attrib(id)
{
message_begin(MSG_BROADCAST, g_iScoreAttrib)
write_byte(id)
write_byte(0)
message_end()
}

public update_frags(attacker, victim, frags, deaths, scoreboard)
{
set_pev(attacker, pev_frags, float(pev(attacker, pev_frags) + frags))
fm_set_user_deaths(victim, fm_get_user_deaths(victim) + deaths)
if(scoreboard) {
message_begin(MSG_BROADCAST, g_iScoreInfo)
write_byte(attacker)
write_short(pev(attacker, pev_frags))
write_short(fm_get_user_deaths(attacker))
write_short(0)
write_short(fm_get_user_team(attacker))
message_end()

message_begin(MSG_BROADCAST, g_iScoreInfo)
write_byte(victim)
write_short(pev(victim, pev_frags))
write_short(fm_get_user_deaths(victim))
write_short(0)
write_short(fm_get_user_team(victim))
message_end()
}
}

stock fm_get_user_team(id) return get_pdata_int(id, 114, 5)
stock fm_set_user_deaths(id, value) set_pdata_int(id, 444, value, 5)
stock fm_get_user_deaths(id) return get_pdata_int(id, 444, 5)
stock print_col_chat(target, const message[], any:...)
{
static buffer[512], i, argscount
argscount = numargs()

if (!target)
{
static player
for (player = 1; player <= 32; player++)
{
if (!is_user_connected(player))
continue;

static changed[5], changedcount
changedcount = 0

for (i = 2; i < argscount; i++)
{
if (getarg(i) == LANG_PLAYER)
{
setarg(i, 0, player)
changed[changedcount] = i
changedcount++
}
}

vformat(buffer, charsmax(buffer), message, 3)

message_begin(MSG_ONE_UNRELIABLE, g_msgsaytext, _, player)
write_byte(player)
write_string(buffer)
message_end()

for (i = 0; i < changedcount; i++)
setarg(changed[i], 0, LANG_PLAYER)
}
}
else
{
vformat(buffer, charsmax(buffer), message, 3)

message_begin(MSG_ONE, g_msgsaytext, _, target)
write_byte(target)
write_string(buffer)
message_end()
}
}


Отредактировал: iShot, - 23.6.2016, 15:06
Прикрепленные файлы:
Прикрепленный файл  zp_antidote_nade.rar ( 2,71 килобайт ) Кол-во скачиваний: 16
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя BaHeK
сообщение 23.6.2016, 10:43
Сообщение #2


Стаж: 17 лет

Сообщений: 571
Благодарностей: 505
Полезность: 651

Всего-то надо закомментить/удалить 3 строки, где есть "W_MODEL"


Чуть-чуть нарушаю
http://img-host.su/aoN1.png
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Host
сообщение 23.6.2016, 12:21
Сообщение #3


Стаж: 9 лет
Город: Киев

Сообщений: 199
Благодарностей: 5
Полезность: 30

expert-server.ru
Первая строчка: #define W_MODEL "models/zombieplay/w_grenade_antidote.mdl"
Вторая строчка: if(!pev_valid(entity) || !equal(model, "models/w_smokegrenade.mdl")) return FMRES_IGNORED;
Третяя строчка: engfunc(EngFunc_PrecacheModel, W_MODEL);
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 23.6.2016, 12:50
Сообщение #4
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Цитата(BaHeK @ 23.6.2016, 18:43) *
Всего-то надо закомментить/удалить 3 строки, где есть "W_MODEL"

Цитата(Host @ 23.6.2016, 20:21) *
Первая строчка: #define W_MODEL "models/zombieplay/w_grenade_antidote.mdl"
Вторая строчка: if(!pev_valid(entity) || !equal(model, "models/w_smokegrenade.mdl")) return FMRES_IGNORED;
Третяя строчка: engfunc(EngFunc_PrecacheModel, W_MODEL);

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