Half-Life и Adrenaline Gamer форум

Всё об игре в Халф-Лайф и АГ
Текущее время: 29 мар 2024, 00:33

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Как определить получателя урона?
СообщениеДобавлено: 07 июн 2022, 20:05 
Не в сети
Зарегистрирован:
07 мар 2013, 20:21
Последнее посещение:
19 авг 2023, 05:27
Сообщения: 39
Создаю газовую гранату используя 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);

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


Вернуться к началу
 Профиль 
  
СообщениеДобавлено: 07 июн 2022, 22:51 
Не в сети
Аватара пользователя
Зарегистрирован:
27 дек 2019, 17:59
Последнее посещение:
26 мар 2024, 13:29
Сообщения: 273
Откуда: Иркутск
Тут надо зарегистрировать тач на entity_gas (или как ты его там назовёшь, не принципиально), и уже в функции тача делать обработку события: проигрывать звук, наносить урон и так далее. Как такое реализовать в коде хорошо расписано тут http://amxxmodx.ru/engine/engineinc/423 ... lassa.html

_________________
ВК: https://vk.com/pristavka2013
GitHub: https://github.com/mrglaster
Почта: [email protected]

Есть объективная реальность, а есть печенье.


Вернуться к началу
 Профиль 
  
СообщениеДобавлено: 10 июн 2022, 02:16 
Не в сети
Зарегистрирован:
26 апр 2019, 15:15
Последнее посещение:
30 дек 2023, 16:47
Сообщения: 55
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.


Вернуться к началу
 Профиль 
  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB