Half-Life и Adrenaline Gamer форум
http://www.aghl.ru/forum/

Как определить получателя урона?
http://www.aghl.ru/forum/viewtopic.php?f=42&t=3277
Страница 1 из 1

Автор:  russia [ 07 июн 2022, 20:05 ]
Заголовок сообщения:  Как определить получателя урона?

Создаю газовую гранату используя wpnmod_fire_timed_grenade
Суть ее в том, что когда она вылетает, начинает пускать газ и в момент выпуска в радиусе наносит урон. Данные выбросы газа вызываются таском

Вот код таска:
Код:
public smok_on(idx)
{
   new iGrenade_smok = idx -TASK_GR;
   
   new iOwner;
   //new iVictim;
   
   new Float: vecOrigin[3];
   
   
   
   if (pev_valid(iGrenade_smok))
   pev(iGrenade_smok, pev_origin, vecOrigin);
   
   engfunc(EngFunc_MessageBegin,MSG_PAS, SVC_TEMPENTITY, vecOrigin, 0);
   write_byte(TE_SPRITE);
   engfunc(EngFunc_WriteCoord, vecOrigin[0]);
   engfunc(EngFunc_WriteCoord, vecOrigin[1]);
   engfunc(EngFunc_WriteCoord, vecOrigin[2]);
   write_short(engfunc(EngFunc_PointContents, vecOrigin) != CONTENTS_WATER ? g_iSmok : g_iModelIndexWExplosion);
   write_byte(70);
   write_byte(68);
   message_end();
   
   
   
   if (pev_valid(iGrenade_smok)){
   set_task(0.8, "smok_on", TASK_GR + iGrenade_smok);
   iOwner = pev(iGrenade_smok, pev_owner);
   //iVictim = pev(iGrenade_smok, pev_dmg_inflictor);
   //emit_sound(iVictim,CHAN_STATIC,COUGH_SOUND,0.9,ATTN_NORM,SND_STOP,PITCH_NORM);
   //emit_sound(iVictim,CHAN_STATIC,COUGH_SOUND,0.9,ATTN_NORM,0,PITCH_NORM);
   wpnmod_radius_damage( vecOrigin, iGrenade_smok, iOwner, WEAPON_DAMAGE_SMOKE, WEAPON_RADIUS, CLASS_NONE, DMG_NERVEGAS | DMG_NEVERGIB );
   
   }
   return PLUGIN_CONTINUE;
}

Владельца гранаты удалось получить с помощью iOwner = pev(iGrenade_smok, pev_owner);

Как получить товарища, который получил урон от данной гранаты, что бы в дальнейшем проиграть от него звук???

Автор:  Glaster [ 07 июн 2022, 22:51 ]
Заголовок сообщения:  Re: Как определить получателя урона?

Тут надо зарегистрировать тач на entity_gas (или как ты его там назовёшь, не принципиально), и уже в функции тача делать обработку события: проигрывать звук, наносить урон и так далее. Как такое реализовать в коде хорошо расписано тут http://amxxmodx.ru/engine/engineinc/423 ... lassa.html

Автор:  Виталий [ 10 июн 2022, 02:16 ]
Заголовок сообщения:  Re: Как определить получателя урона?

native HamHook:RegisterHam(Ham:function, const EntityClass[], const Callback[], Post=0, bool:specialbot = false);

function:
The function to hook.
EntityClass:
The entity classname to hook.
callback:
The forward to call.
post:
Whether or not to forward this in post.
specialbot:
Whether or not to enable support for bot without "player" classname.

Description:
Hooks the virtual table for the specified entity class.
An example would be: RegisterHam(Ham_TakeDamage, "player", "player_hurt");
Look at the Ham enum for parameter lists.
Return
Returns a handle to the forward. Use EnableHamForward/DisableHamForward to toggle the forward on or off.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/