Ru Temp Entity Events (Half-Life 1)
Temp Entity - это временные объекты на стороне клиента, которые создаются при посылке специальных сообщений сервером. Например, с помощью таких рассылок можно формировать эффекты трассирующих пуль, вызрывы, вспышки, а также мертвые тела игроков и многое другое.
Contents
Типы сообщений
Типы сообщений определяют механизм рассылки сообщений клиентам, а также адресатов. Типы описываются макроопределениями MSG_?, которые можно найти в файле const.h HLSDK, или message_const.inc AMX Mod X API. Типы используются в качестве значения аргумента dest функции message_begin():
#define MSG_BROADCAST 0 // сообщение может быть доставлено всем клиентам #define MSG_ONE 1 // сообщение будет доставлено только одному клиенту (msg_entity) #define MSG_ALL 2 // сообщение будет доставлено всем клиентам #define MSG_INIT 3 // write to the init string(?) #define MSG_PVS 4 // сообщение может быть доставлено клиентам, находящимся в // в области видимости точки с координатами org #define MSG_PAS 5 // сообщение может быть доставлено клиентам, находящимся в // зоне слышимости от точки org #define MSG_PVS_R 6 // аналогично MSG_PVS с гарантией доставки сообщений #define MSG_PAS_R 7 // аналогично MSG_PAS с гарантией доставки сообщений #define MSG_ONE_UNRELIABLE 8 // аналогично MSG_ONE, но доставка сообщения НЕ гарантируется #define MSG_SPEC 9 // отправлка сообщения всем прокси для зрителей (HLTV?)
События TempEnt
0: TE_BEAMPOINTS
Создает луч между 2-мя точками.
Параметры:
Настройка | Диапазон | Настройки по-умолчанию | Описание |
---|---|---|---|
Начало | X Y Z (координаты) | Координата первого энтити или 0 0 0 | Начальная точка луча |
Конец | X Y Z (координаты) | Координата второго энтити или 0 0 0 | Конечная точка луча |
Спрайт | Путь к спрайту | "sprites/laserbeam.spr" | Собственно, луч |
Первый кадр | 0-255 | 0 | Кадр, с которого будет проигрываться спрайт |
FPS | 0-255 | 0 | Частота кадров, в 0.1 (10 = 1 fps) |
Жизнь спрайта | 0-255 | 50 | Промежуток времени, в течении которого видно спрайт, в 0.1 (50 = 5 секунд) |
Ширина | 0-255 | 10 | Ширина луча в 0.1 |
Искажение | 0-255 | 10 | Амплитуда искажения, обозначает то, как сильно будет "ломаться" луч, снова в 0.1 |
Цвет | R G B | 255 255 255 | Цвет луча в системе R G B |
Яркость | 0-255 | 127 | Яркость луча |
Прокрутка | 0-255 | 0 | Скорость прокрутки(?) луча в 0.1 |
Формат:
#define TE_BEAMPOINTS 0 // Луч между 2 точками message_begin(MSG_? ,SVC_TEMPENTITY) write_byte(TE_BEAMPOINTS) write_coord() // Начало луча: x write_coord() // y write_coord() // z write_coord() // Конец луча: x write_coord() // y write_coord() // z write_short() // Индекс спрайта write_byte() // Начальный кадр write_byte() // FPS в 0.1 write_byte() // Время существования в 0.1 write_byte() // Ширина в 0.1 write_byte() // Искажение в 0.1 write_byte() // Красный (R) write_byte() // Зеленый (G) write_byte() // Синий (B) write_byte() // Яркость write_byte() // Скорость прокрутки в 0.1 message_end()
1: TE_BEAMENTPOINT
Создает луч между энтитей и точкой.
Настройки:
Настройка | Диапазон | Настройки по-умолчанию | Описание |
---|---|---|---|
Начальное энтити | ID энтити | Идентификатор первичного энтити | Стартовая точка луча - центр (origin) энтити |
Конец | X Y Z (координаты) | Координата второго энтити или 0 0 0 | Конечная точка луча |
Спрайт | Путь к спрайту | "sprites/laserbeam.spr" | Собственно, луч |
Первый кадр | 0-255 | 0 | Кадр, с которого будет проигрываться спрайт |
FPS | 0-255 | 0 | Частота кадров, в 0.1 (10 = 1 fps) |
Жизнь спрайта | 0-255 | 50 | Промежуток времени, в течении которого видно спрайт, в 0.1 (50 = 5 секунд) |
Ширина | 0-255 | 10 | Ширина луча в 0.1 |
Искажение | 0-255 | 10 | Амплитуда искажения, обозначает то, как сильно будет "ломаться" луч, снова в 0.1 |
Цвет | R G B | 255 255 255 | Цвет луча в системе R G B |
Яркость | 0-255 | 127 | Яркость луча |
Прокрутка | 0-255 | 0 | Скорость прокрутки(?) луча в 0.1 |
Формат:
#define TE_BEAMENTPOINT 1 // Луч между энтитей и точкой message_begin(MSG_ ,SVC_TEMPENTITY) write_byte(TE_BEAMENTPOINT) write_short() // Начальное энтити write_coord() // Конец луча write_coord() write_coord() write_short() // Индекс спрайта write_byte() // Начальный кадр write_byte() // FPS в 0.1 write_byte() // Время существования в 0.1 write_byte() // Ширина в 0.1 write_byte() // Искажение в 0.1 write_byte() // Красный (R) write_byte() // Зеленый (G) write_byte() // Синий (B) write_byte() // Яркость write_byte() // Скорость прокрутки в 0.1 message_end()
2: TE_GUNSHOT
Создает частцы и звук рикошета.
Настройки:
Настройка | Диапазон | Настройки по-умолчанию | Описание |
---|---|---|---|
Координата | X Y Z (координаты) | Координата первого энтити или 0 0 0 | Точка для эффекта выстрела |
Формат:
#define TE_GUNSHOT 2 // Частцы и звук рикошета message_begin(MSG_ ,SVC_TEMPENTITY) write_byte(TE_GUNSHOT) write_coord() // Координата: x write_coord() // y write_coord() // z message_end()
3: TE_EXPLOSION
Creates an additive sprite, 2 dynamic lights, flickering particles, explosion sound, and moves the sprite vertically.
Параметры:
Option | Range | Default | Description |
---|---|---|---|
Pos | X Y Z (coords) | Origin of primary entity, or 0 0 0 | Position of the explosion effect |
Sprite | sprite path | "sprites/zerogxplode.spr" | The additive sprite to use in the explosion |
Scale | 0-255 | 1 | The scale of the sprite in the explosion, in 0.1s |
FrameRate | 0-255 | 0 | The frame rate to show the sprite at, in 0.1s (10 = 1 fps) |
Flags | 0-15 | 0 | Sets flags for the explosion, you may also add these together:
|
Формат:
#define TE_EXPLOSION 3 // additive sprite, 2 dynamic lights, flickering particles, // explosion sound, move vertically 8 pps message_begin(MSG_ ,SVC_TEMPENTITY) write_byte(TE_EXPLOSION) write_coord() // start position write_coord() write_coord() write_short() // sprite index write_byte() // scale in 0.1's write_byte() // framerate write_byte() // flags message_end()
4: TE_TAREXPLOSION
Creates the Quake 'tar' explosion.
Options:
Option | Range | Default | Description |
---|---|---|---|
Pos | X Y Z (coords) | Origin of primary entity, or 0 0 0 | Position of the effect |
Format:
#define TE_TAREXPLOSION 4 // Quake1 "tarbaby" explosion with sound message_begin(MSG_ ,SVC_TEMPENTITY) write_byte(TE_TAREXPLOSION) write_coord() // start position write_coord() write_coord() message_end()
5: TE_SMOKE
Creates a rising alphablend sprite at 30 pps.
Options:
Option | Range | Default | Description |
---|---|---|---|
Pos | X Y Z (coords) | Origin of primary entity, or 0 0 0 | Position of the smoke effect |
Sprite | sprite path | "sprites/steam1.spr" | The alphablend sprite to use for smoke |
Scale | 0-255 | 1 | The scale of the smoke, in 0.1s |
FrameRate | 0-255 | 0 | The frame rate to show the sprite at |
Format:
#define TE_SMOKE 5 // alphablend sprite, move vertically 30 pps message_begin(MSG_ ,SVC_TEMPENTITY) write_byte(TE_SMOKE) write_coord() // start position write_coord() write_coord() write_short() // sprite index write_byte() // scale in 0.1's write_byte() // framerate message_end()
6: TE_TRACER
Создает эффект трассирующей пули из одной точки пространства в другую.
Параметры:
Option | Range | Значение по-умолчанию | Описание |
---|---|---|---|
Pos | X Y Z (координаты) | Origin of primary entity, or 0 0 0 | Начальная точка для эффекта |
End | X Y Z (координаты) | Origin of secondary entity, or 0 0 0 | Конечная точка для эффекта |
Формат:
#define TE_TRACER 6 // tracer effect from point to point message_begin(MSG_ ,SVC_TEMPENTITY) write_byte(TE_TRACER) write_coord() // начальная позиция: x write_coord() // y write_coord() // z write_coord() // конечная позиция: x write_coord() // y write_coord() // z message_end()
7: TE_LIGHTNING
Simplified options for TE_BEAMPOINTS - Lightning effect.
Options:
Option | Range | Default | Description |
---|---|---|---|
Pos | X Y Z (coords) | Origin of primary entity, or 0 0 0 | Starting point of the lightning |
End | X Y Z (coords) | Origin of secondary entity, or 0 0 0 | Ending point of the lightning |
Life | 0-255 | 50 | The length of time the lightning shall remain, in 0.1s (50 = 5 seconds) |
Width | 0-255 | 10 | The width of the lightning in 0.1s |
Noise | 0-255 | 10 | The noise amplitude of the lightning, this controls how much it distorts, again in 0.1s |
Sprite | sprite path | "sprites/laserbeam.spr" | The sprite to use in the lightning |
Format:
#define TE_LIGHTNING 7 // TE_BEAMPOINTS with simplified parameters message_begin(MSG_ ,SVC_TEMPENTITY) write_byte(TE_LIGHTNING) write_coord() // start position write_coord() write_coord() write_coord() // end position write_coord() write_coord() write_byte() // life in 0.1's write_byte() // width in 0.1's write_byte() // amplitude in 0.01's write_short() // sprite model index message_end()
8: TE_BEAMENTS
Creates a beam between the primary entity and another entity.
Options:
Option | Range | Default | Description |
---|---|---|---|
Start Entity | ID of Entity | Primary entity id | Starting point of the beam from the id's origin |
End Entity | ID of Entity | Secondary entity id | Ending point of the beam to the id's origin |
Sprite | sprite path | "sprites/laserbeam.spr" | The sprite to use in the beam |
FrameStart | 0-255 | 0 | The frame to start with in the sprite |
FrameRate | 0-255 | 0 | The frame rate to show the sprite at, in 0.1s (10 = 1 fps) |
Life | 0-255 | 50 | The length of time the beam shall remain, in 0.1s (50 = 5 seconds) |
Width | 0-255 | 10 | The width of the beam in 0.1s |
Noise | 0-255 | 10 | The noise amplitude of the beam, this controls how much the beam distorts, again in 0.1s |
Color | R G B | 255 255 255 | The color of the beam in the RBG triplet value |
Brightness | 0-255 | 127 | The brightness of the beam |
Scroll | 0-255 | 0 | The scroll speed of the beam, in 0.1s (??) |
Format:
#define TE_BEAMENTS 8 // Create a beam between two entities message_begin(MSG_ ,SVC_TEMPENTITY) write_byte(TE_BEAMENTS) write_short() // start entity write_short() // end entity write_short() // sprite index write_byte() // starting frame write_byte() // frame rate in 0.1's write_byte() // life in 0.1's write_byte() // line width in 0.1's write_byte() // noise amplitude in 0.01's write_byte() // red write_byte() // green write_byte() // blue write_byte() // brightness write_byte() // scroll speed in 0.1's message_end()
TODO: add rest, I'll get this done eventually.