Как прервать TE_BEAMFOLLOW?

Сообщения
499
Реакции
271
Помог
6 раз(а)
Хочу задавать трейл для движущейся энтити разными цветами в зависимости от ситуации. Как можно прервать предыдущий трейл, чтобы задать новый?
 
Сообщения
259
Реакции
129
Помог
12 раз(а)
Если с TE_KILLBEAM не получиться, то можно еще как вариант попробовать за энтитей фоловить другую энтитю, а уже за ней делать трейл. И когда новый трейл то ту убивать а новую создавать - ну как то так...
 
Сообщения
3,582
Реакции
1,570
Помог
137 раз(а)
Если с TE_KILLBEAM не получиться, то можно еще как вариант попробовать за энтитей фоловить другую энтитю, а уже за ней делать трейл. И когда новый трейл то ту убивать а новую создавать - ну как то так...
С чего должно не получиться-то? Всё верно же, он именно для TE_BEAMFOLLOW
 
Сообщения
499
Реакции
271
Помог
6 раз(а)
murlemur, интересно. А как правильно сделать, чтобы этот дополнительный энтити следовал за основным?
 
Сообщения
91
Реакции
141
Помог
1 раз(а)
CHEL74, создать через N время еще одну энтити с таким же велосити (ну, если например это какое то энтити, которое летит по одной траектории, по типу гранат или ракет)

Nordic Warrior, выглядит так себе вариант в итоге
 
Сообщения
259
Реакции
129
Помог
12 раз(а)
CHEL74, что-то типо такого :

Код:
set_entvar(new_ent, var_owner, ent)
set_entvar(new_ent, var_movetype, MOVETYPE_FOLLOW)
 
Сообщения
499
Реакции
271
Помог
6 раз(а)
Всем спасибо за помощь, подошёл способ murlemur.

Только небольшая поправка. Не var_owner, а var_aiment нужен, чтобы работало.

Код:
set_entvar(pTrailEntity, var_movetype, MOVETYPE_FOLLOW)
set_entvar(pTrailEntity, var_aiment, pEntity)
30 Сен 2023
Но появилась новая проблема) Если воспроизводить это всё дело из аттача MOVE_FOLLOW модели, трейл почему-то иногда лезет на нулевые координаты. Из-за чего появляются длинные полосы до центра карты.
 
Сообщения
499
Реакции
271
Помог
6 раз(а)
Вот таким образом:
Код:
message_begin(MSG_PVS, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(g_pTrailEntity | 0x1000)
write_short(g_iTrailSprite)
write_byte(30)
write_byte(10)
write_byte(50)
write_byte(50)
write_byte(255)
write_byte(100)
message_end()
Это мне необходимо, чтобы трейл из нужной точки шёл
 
Сообщения
106
Реакции
222
Помог
1 раз(а)
EF_FORCEVISIBILITY поможет по идее на энтити к которой цепляешь бим, иначе иногда не передаётся на клиент ее позиция и в нулях рисуется по идее
 
Сообщения
499
Реакции
271
Помог
6 раз(а)
EF_FORCEVISIBILITY поможет по идее на энтити к которой цепляешь бим, иначе иногда не передаётся на клиент ее позиция и в нулях рисуется по идее
set_entvar(pTrailEntity, var_effects, EF_FORCEVISIBILITY)
Выставил при создании энтити, не помогло. Также в нулевые координаты трейл уходит. Проблема только при использовании аттача проявляется. Если от модельки просто пускать, то всё в порядке, но не красиво.
 
Последнее редактирование:
Сообщения
259
Реакции
129
Помог
12 раз(а)
CHEL74, скинь весь код создания дополнительной энтити, возможно коллективный разум что-то увидит и подскажет ...
И скажи в какой именно момент треил уходит в начало координат. При уничтожении энтити ? Пробовал перед уничтожением энтити ее сначала остановить, а потом уничтожить ?
 
Сообщения
839
Реакции
519
Помог
12 раз(а)
на нулевые координаты
на аттачменте - никак
он на аттачменте всегда на полкарты отрисовывается (от нулевых координат)
так же искали способ и не нашли 👀


тут проблема скорее в том, что это аттачмент и у него координаты не обновляются по сути (pev_origin), он просто следует за aiment'ом
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
на аттачменте - никак
он на аттачменте всегда на полкарты отрисовывается (от нулевых координат)
так же искали способ и не нашли 👀


тут проблема скорее в том, что это аттачмент и у него координаты не обновляются по сути (pev_origin), он просто следует за aiment'ом
В movetype == folow, копируются origin, angles от aiment
 
  • Нравится
Реакции: Arni
Сообщения
499
Реакции
271
Помог
6 раз(а)
CHEL74, скинь весь код создания дополнительной энтити, возможно коллективный разум что-то увидит и подскажет ...
Код:
public Function() {
    if(g_pTrailEntity) {
        set_entvar(g_pTrailEntity, var_flags, FL_KILLME)
    }
    
    g_pTrailEntity = rg_create_entity("info_target")
    
    new Float:fOrigin[XYZ]
    get_entvar(g_pEntity, var_origin, fOrigin)
    
    engfunc(EngFunc_SetModel, g_pTrailEntity, g_szModel)
    engfunc(EngFunc_SetOrigin, g_pTrailEntity, fOrigin)
    
    set_entvar(g_pTrailEntity, var_solid, SOLID_NOT)
    set_entvar(g_pTrailEntity, var_movetype, MOVETYPE_FOLLOW)
    set_entvar(g_pTrailEntity, var_effects, EF_OWNER_NO_VISIBILITY)
    set_entvar(g_pTrailEntity, var_aiment, g_pEntity)
    
    set_task(0.1, "StartTrail_Task")
}

public StartTrail_Task() {
    message_begin(MSG_PVS, SVC_TEMPENTITY)
    write_byte(TE_BEAMFOLLOW)
    write_short(g_pTrailEntity | 0x1000)
    write_short(g_iTrailSprite)
    write_byte(30)
    write_byte(10)
    write_byte(50)
    write_byte(50)
    write_byte(255)
    write_byte(100)
    message_end()
}
И скажи в какой именно момент треил уходит в начало координат. При уничтожении энтити ? Пробовал перед уничтожением энтити ее сначала остановить, а потом уничтожить ?
При пересоздании уходил. Решил проблему на коленке, таском. Чтобы просто протестить, как будет работать. Но потом начались уходы в нулевые координаты при движении энтити. Каких-то закономерностей там не увидел. Трейл может быть идеальным долгое время, а потом резко начнёт уходить в нулевые.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу