darkspice
Участник
- Сообщения
- 21
- Реакции
- 0
Возник вопрос по поводу имитации каких-либо событий.
В данном случае интересует событие взрыва.
Есть некий лазер, дотрагиваясь которого, враги(зомби) получают урон, но я хочу заменить урон и сделать, что бы когда враг дотрагивался лазера, рядом с ним происходил взрыв гранаты, ну или прям в нем, не суть.
Взял из кода функцию срабатывающую когда враг дотрагивается до лазера.Сделал поправки.Но вместо того, что бы был взрыв, враги просто замедляются на время прохождения лазера.(ну там идут тики лазера равные фреймам).
В данном случае интересует событие взрыва.
Есть некий лазер, дотрагиваясь которого, враги(зомби) получают урон, но я хочу заменить урон и сделать, что бы когда враг дотрагивался лазера, рядом с ним происходил взрыв гранаты, ну или прям в нем, не суть.
Взял из кода функцию срабатывающую когда враг дотрагивается до лазера.Сделал поправки.Но вместо того, что бы был взрыв, враги просто замедляются на время прохождения лазера.(ну там идут тики лазера равные фреймам).
PHP:
//какой-то код выше
public void EventBeamTouched(const char[] sOutput, int nEntity, int activatorIndex, float flDelay)
{
#pragma unused activatorIndex
float fClientPos[3];
GetClientEyePosition(activatorIndex, fClientPos);
//Тут были всякие проверки.
//Это то что было в коде, но мне это не нужно.
// Apply damage
//SDKHooks_TakeDamage(activatorIndex, nEntity, ownerIndex, GetConVarFloat(gCvarList[CVAR_LASERMINE_DAMAGE]), DMG_BURN);
//Мой код
SendDetonate(activatorIndex, activatorIndex, fClientPos[0], fClientPos[1], fClientPos[2] );
// Emit hurt sound
EmitSoundToAll("*/zbm3/mine/suitchargeok1.mp3", activatorIndex, SNDCHAN_VOICE, SNDLEVEL_NORMAL);
}
//Функция отлова события взрыва
void SendDetonate(int iVictim, int iEntity, float xVictim, float yVictim, float zVictim )
{
Event hEvent = CreateEvent("hegrenade_detonate");
if (hEvent != null)
{
hEvent.SetInt("userid", GetClientUserId(iVictim) );
hEvent.SetInt("entityid", GetClientUserId(iEntity) );
hEvent.SetFloat("x", xVictim);
hEvent.SetFloat("y", yVictim);
hEvent.SetFloat("z", zVictim);
hEvent.Fire(true);
}
}