Ru Temp Entity Events (Half-Life 1)

From AlliedModders Wiki
Jump to: navigation, search

Temp Entity - это временные объекты на стороне клиента, которые создаются при посылке специальных сообщений сервером. Например, с помощью таких рассылок можно формировать эффекты трассирующих пуль, вызрывы, вспышки, а также мертвые тела игроков и многое другое.

Типы сообщений

Типы сообщений определяют механизм рассылки сообщений клиентам, а также адресатов. Типы описываются макроопределениями 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:
  • 0: Default Half-Life explosion
  • 1: Sprite will be drawn opaque
  • 2: Do not render the dynamic lights
  • 4: Do not play the explosion sound
  • 8: Do not draw the particles


Формат:

#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.