Пользователь
wellasgood
Кидала, мошенник, вымогатель
- Сообщения
- 1,409
- Реакции
- 182
- Помог
- 2 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
RockTheStreet, зато как по обсирать первые)
Ну это ты так видишь.зато как по обсирать первые)
RockTheStreet ,ну я кончено могу оставить плагин molotov как есть, но хотелось бы сделать этот момент. (для юзверов)Ну это ты так видишь.
Хотя, мне нравится что ты думаешь, мол ты постоянно в говне. Продолжай в том же духе.
Актуально, не могу понять как решить.В общем суть в том, что нужно разделить 1 событие на 2 (скорость анимации и скорость получения урона игроку)
В плагине есть такая строка кода:
Тут выставляется скорость анимации огня +скорость получения урона (тикрейт)C++:if(pev_valid(iEntity)) set_entvar(iEntity, var_dmgtime, flCurTime + eCvarData[DMG_TICK])
ВОПРОС
Как сделать это событие в 2 разных, что бы одно от другого не зависело) ?
Т.е если ставить очень малое значение, то анимация становится ужасно стремной.
@FireMolotov_Think_Post(iEntity)
{
if(is_nullent(iEntity)) return
if(get_entvar(iEntity, var_chain) != OBJECT_MOLOTOV_FIRE) return
new Float:flCurTime = get_gametime(), Float:vecOrigin[3]
get_entvar(iEntity, var_origin, vecOrigin)
if(eCvarData[EXTINGUISHING])
{
if(CheckGrenade(iEntity))
{
set_task(eCvarData[EXTINGUISHING_TIME], "@KillFireEnt", iEntity)
}
}
if(Float:get_entvar(iEntity, var_teleport_time) <= flCurTime)
{
TE_SetupSmoke(vecOrigin, Float:{ 0.0, 0.0, 0.0 }, g_iModelIndex[3], 7, 15)
set_entvar(iEntity, var_flags, FL_KILLME)
}
new iOwner = get_entvar(iEntity, var_owner)
if(!is_user_connected(iOwner)) return
if(Float:get_entvar(iEntity, var_dmgtime) <= flCurTime)
{
if(pev_valid(iEntity)) set_entvar(iEntity, var_dmgtime, flCurTime + eCvarData[DMG_TICK])
TE_SetupExplosion(vecOrigin, Float:{ 0.0, 0.0, 24.0 }, g_iModelIndex[2], 8, 20, TE_EXPLFLAG_NODLIGHTS | TE_EXPLFLAG_NOSOUND | TE_EXPLFLAG_NOPARTICLES)
static iVictim = -1
static Float:flHealth
while((iVictim = engfunc(EngFunc_FindEntityInSphere, iVictim, vecOrigin, eCvarData[RADIUS])))
{
if(!is_user_alive(iVictim)) continue
if(!eCvarData[DMG_TM])
{
if(iOwner != iVictim && get_member(iOwner, m_iTeam) == get_member(iVictim, m_iTeam)) continue
}
flHealth = Float:get_entvar(iVictim, var_health)
if(flHealth <= eCvarData[DMG])
{
ExecuteHamB(Ham_Killed, iVictim, iOwner, 0)
}
else
{
set_entvar(iVictim, var_health, flHealth - eCvarData[DMG])
rh_emit_sound2(iVictim, 0, CHAN_STATIC, "player/pl_pain2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
}
}
new iFireNum = get_entvar(iEntity, var_iuser1)
if(iFireNum < 15)
{
new Float:flFraction, Float:vecStart[3], Float:vecEnd[3], Float:vecAngles[3], Float:vecViewForward[3], Float:vecPlaneNormal[3]
get_entvar(iEntity, var_vuser1, vecPlaneNormal)
vecAngles[0] = random_float(-45.0, -135.0)
vecAngles[1] = random_float(0.0, 360.0)
engfunc(EngFunc_MakeVectors, vecAngles)
global_get(glb_v_forward, vecViewForward)
for(new i = 0; i < 3; i++)
{
vecStart[i] = vecOrigin[i] + vecPlaneNormal[i] * 64.0
vecEnd[i] = vecStart[i] + vecViewForward[i] * 128.0
}
engfunc(EngFunc_TraceLine, vecStart, vecEnd, IGNORE_MONSTERS, iEntity, 0)
get_tr2(0, TR_flFraction, flFraction)
get_tr2(0, TR_vecEndPos, vecEnd)
get_tr2(0, TR_vecPlaneNormal, vecPlaneNormal)
if(flFraction >= 1.0 || vecPlaneNormal[2] == -1.0)
{
set_entvar(iEntity, var_iuser1, iFireNum + 1)
Molotov_CreateDebris(iEntity, vecEnd)
}
}
}
Можно завести ещё одну переменную со временем (лучше использовать entvar), и делать как dmgtime делаешь.Делать дополнительный синк и тп, а как оно должно быть тогда? не понимаю