1128 lines
28 KiB
SourcePawn
1128 lines
28 KiB
SourcePawn
// vim: set ts=4 sw=4 tw=99 noet:
|
|
//
|
|
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
|
|
// Copyright (C) The AMX Mod X Development Team.
|
|
//
|
|
// This software is licensed under the GNU General Public License, version 3 or higher.
|
|
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
|
|
// https://alliedmods.net/amxmodx-license
|
|
|
|
//
|
|
// Message Constants
|
|
//
|
|
|
|
#if defined _message_const_included
|
|
#endinput
|
|
#endif
|
|
#define _message_const_included
|
|
|
|
/**
|
|
* Destination types for message_begin()
|
|
*/
|
|
#define MSG_BROADCAST 0 // Unreliable to all
|
|
#define MSG_ONE 1 // Reliable to one (msg_entity)
|
|
#define MSG_ALL 2 // Reliable to all
|
|
#define MSG_INIT 3 // Write to the init string
|
|
#define MSG_PVS 4 // Ents in PVS of org
|
|
#define MSG_PAS 5 // Ents in PAS of org
|
|
#define MSG_PVS_R 6 // Reliable to PVS
|
|
#define MSG_PAS_R 7 // Reliable to PAS
|
|
#define MSG_ONE_UNRELIABLE 8 // Send to one client, but don't put in reliable stream, put in unreliable datagram (could be dropped)
|
|
#define MSG_SPEC 9 // Sends to all spectator proxies
|
|
|
|
/**
|
|
* Hardcoded message types for message_begin()
|
|
*
|
|
* @note Look at the actual HLSDK for details
|
|
*/
|
|
#define SVC_NOP 1
|
|
#define SVC_DISCONNECT 2
|
|
#define SVC_EVENT 3
|
|
#define SVC_VERSION 4
|
|
#define SVC_SETVIEW 5
|
|
#define SVC_SOUND 6
|
|
#define SVC_TIME 7
|
|
#define SVC_PRINT 8
|
|
#define SVC_STUFFTEXT 9
|
|
#define SVC_SETANGLE 10
|
|
#define SVC_SERVERINFO 11
|
|
#define SVC_LIGHTSTYLE 12
|
|
#define SVC_UPDATEUSERINFO 13
|
|
#define SVC_DELTADESCRIPTION 14
|
|
#define SVC_CLIENTDATA 15
|
|
#define SVC_STOPSOUND 16
|
|
#define SVC_PINGS 17
|
|
#define SVC_PARTICLE 18
|
|
#define SVC_DAMAGE 19
|
|
#define SVC_SPAWNSTATIC 20
|
|
#define SVC_EVENT_RELIABLE 21
|
|
#define SVC_SPAWNBASELINE 22
|
|
#define SVC_TEMPENTITY 23
|
|
#define SVC_SETPAUSE 24
|
|
#define SVC_SIGNONNUM 25
|
|
#define SVC_CENTERPRINT 26
|
|
#define SVC_KILLEDMONSTER 27
|
|
#define SVC_FOUNDSECRET 28
|
|
#define SVC_SPAWNSTATICSOUND 29
|
|
#define SVC_INTERMISSION 30
|
|
#define SVC_FINALE 31
|
|
#define SVC_CDTRACK 32
|
|
#define SVC_RESTORE 33
|
|
#define SVC_CUTSCENE 34
|
|
#define SVC_WEAPONANIM 35
|
|
#define SVC_DECALNAME 36
|
|
#define SVC_ROOMTYPE 37
|
|
#define SVC_ADDANGLE 38
|
|
#define SVC_NEWUSERMSG 39
|
|
#define SVC_PACKETENTITIES 40
|
|
#define SVC_DELTAPACKETENTITIES 41
|
|
#define SVC_CHOKE 42
|
|
#define SVC_RESOURCELIST 43
|
|
#define SVC_NEWMOVEVARS 44
|
|
#define SVC_RESOURCEREQUEST 45
|
|
#define SVC_CUSTOMIZATION 46
|
|
#define SVC_CROSSHAIRANGLE 47
|
|
#define SVC_SOUNDFADE 48
|
|
#define SVC_FILETXFERFAILED 49
|
|
#define SVC_HLTV 50
|
|
#define SVC_DIRECTOR 51
|
|
#define SVC_VOICEINIT 52
|
|
#define SVC_VOICEDATA 53
|
|
#define SVC_SENDEXTRAINFO 54
|
|
#define SVC_TIMESCALE 55
|
|
|
|
/**
|
|
* Flags for set_msg_block()
|
|
*/
|
|
#define BLOCK_NOT 0
|
|
#define BLOCK_ONCE 1
|
|
#define BLOCK_SET 2
|
|
|
|
/**
|
|
* Message argument types used with get_msg_argtype() and set_msg_arg_*
|
|
*/
|
|
enum
|
|
{
|
|
ARG_BYTE = 1, /* int */
|
|
ARG_CHAR, /* int */
|
|
ARG_SHORT, /* int */
|
|
ARG_LONG, /* int */
|
|
ARG_ANGLE, /* float */
|
|
ARG_COORD, /* float */
|
|
ARG_STRING, /* string */
|
|
ARG_ENTITY, /* int */
|
|
};
|
|
|
|
/**
|
|
* @section TempEntity messages for message_begin()
|
|
*/
|
|
|
|
/**
|
|
* Beam effect between two points
|
|
*
|
|
* @note
|
|
* write_byte(TE_BEAMPOINTS)
|
|
* write_coord(startposition.x)
|
|
* write_coord(startposition.y)
|
|
* write_coord(startposition.z)
|
|
* write_coord(endposition.x)
|
|
* write_coord(endposition.y)
|
|
* write_coord(endposition.z)
|
|
* 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)
|
|
*/
|
|
#define TE_BEAMPOINTS 0
|
|
|
|
/**
|
|
* Beam effect between a point and an entity
|
|
*
|
|
* @note
|
|
* write_byte(TE_BEAMENTPOINT)
|
|
* write_short(start entity)
|
|
* write_coord(endposition.x)
|
|
* write_coord(endposition.y)
|
|
* write_coord(endposition.z)
|
|
* 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)
|
|
*/
|
|
#define TE_BEAMENTPOINT 1
|
|
|
|
/**
|
|
* Particle effect plus ricochet sound
|
|
*
|
|
* @note
|
|
* write_byte(TE_GUNSHOT)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
*/
|
|
#define TE_GUNSHOT 2
|
|
|
|
/**
|
|
* Additive sprite, 2 dynamic lights, flickering particles, explosion sound,
|
|
* move vertically 8 pps
|
|
*
|
|
* @note
|
|
* write_byte(TE_EXPLOSION)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_short(sprite index)
|
|
* write_byte(scale in 0.1's)
|
|
* write_byte(framerate)
|
|
* write_byte(flags)
|
|
*/
|
|
#define TE_EXPLOSION 3
|
|
|
|
/**
|
|
* Flags for the TE_EXPLOSION effect, controlling its performance and aesthetic
|
|
* features
|
|
*/
|
|
#define TE_EXPLFLAG_NONE 0 // All flags clear makes default Half-Life explosion
|
|
#define TE_EXPLFLAG_NOADDITIVE 1 // Sprite will be drawn opaque (ensure that the sprite you send is a non-additive sprite)
|
|
#define TE_EXPLFLAG_NODLIGHTS 2 // Do not render dynamic lights
|
|
#define TE_EXPLFLAG_NOSOUND 4 // Do not play client explosion sound
|
|
#define TE_EXPLFLAG_NOPARTICLES 8 // Do not draw particles
|
|
|
|
/**
|
|
* Quake1 "tarbaby" explosion with sound
|
|
*
|
|
* @note
|
|
* write_byte(TE_TAREXPLOSION)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
*/
|
|
#define TE_TAREXPLOSION 4
|
|
|
|
/**
|
|
* Alphablend sprite, move vertically 30pps
|
|
*
|
|
* @note
|
|
* write_byte(TE_SMOKE)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_short(sprite index)
|
|
* write_byte(scale in 0.1's)
|
|
* write_byte(framerate)
|
|
*/
|
|
#define TE_SMOKE 5
|
|
|
|
/**
|
|
* Tracer effect from point to point
|
|
*
|
|
* @note
|
|
* write_byte(TE_TRACER)
|
|
* write_coord(startposition.x)
|
|
* write_coord(startposition.y)
|
|
* write_coord(startposition.z)
|
|
* write_coord(endposition.x)
|
|
* write_coord(endposition.y)
|
|
* write_coord(endposition.z)
|
|
*/
|
|
#define TE_TRACER 6
|
|
|
|
/**
|
|
* TE_BEAMPOINTS with simplified parameters
|
|
*
|
|
* @note
|
|
* write_byte(TE_LIGHTNING)
|
|
* write_coord(startposition.x)
|
|
* write_coord(startposition.y)
|
|
* write_coord(startposition.z)
|
|
* write_coord(endposition.x)
|
|
* write_coord(endposition.y)
|
|
* write_coord(endposition.z)
|
|
* 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)
|
|
*/
|
|
#define TE_LIGHTNING 7
|
|
|
|
/**
|
|
* TE_BEAMENTS
|
|
*
|
|
* @note
|
|
* 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)
|
|
*/
|
|
#define TE_BEAMENTS 8
|
|
|
|
/**
|
|
* 8 random tracers with gravity, ricochet sprite
|
|
*
|
|
* @note
|
|
* write_byte(TE_SPARKS)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
*/
|
|
#define TE_SPARKS 9
|
|
|
|
/**
|
|
* Quake1 lava splash
|
|
*
|
|
* @note
|
|
* write_byte(TE_LAVASPLASH)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
*/
|
|
#define TE_LAVASPLASH 10
|
|
|
|
/**
|
|
* Quake1 teleport splash
|
|
*
|
|
* @note
|
|
* write_byte(TE_TELEPORT)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
*/
|
|
#define TE_TELEPORT 11
|
|
|
|
/**
|
|
* Quake1 colormaped (base palette) particle explosion with sound
|
|
*
|
|
* @note
|
|
* write_byte(TE_EXPLOSION2)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_byte(starting color)
|
|
* write_byte(num colors)
|
|
*/
|
|
#define TE_EXPLOSION2 12
|
|
|
|
/**
|
|
* Decal from the .BSP file
|
|
*
|
|
* @note
|
|
* write_byte(TE_BSPDECAL)
|
|
* write_coord(position.x) decal position (center of texture in world)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_short(texture index of precached decal texture name)
|
|
* write_short(entity index)
|
|
* [optional - write_short(index of model of above entity) only included if previous short is non-zero (not the world)]
|
|
*/
|
|
#define TE_BSPDECAL 13
|
|
|
|
/**
|
|
* Tracers moving toward a point
|
|
*
|
|
* @note
|
|
* write_byte(TE_IMPLOSION)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_byte(radius)
|
|
* write_byte(count)
|
|
* write_byte(life in 0.1's)
|
|
*/
|
|
#define TE_IMPLOSION 14
|
|
|
|
/**
|
|
* Line of moving glow sprites with gravity, fadeout, and collisions
|
|
*
|
|
* @note
|
|
* write_byte(TE_SPRITETRAIL)
|
|
* write_coord(startposition.x)
|
|
* write_coord(startposition.y)
|
|
* write_coord(startposition.z)
|
|
* write_coord(endposition.x)
|
|
* write_coord(endposition.y)
|
|
* write_coord(endposition.z)
|
|
* write_short(sprite index)
|
|
* write_byte(count)
|
|
* write_byte(life in 0.1's)
|
|
* write_byte(scale in 0.1's)
|
|
* write_byte(velocity along vector in 10's)
|
|
* write_byte(randomness of velocity in 10's)
|
|
*/
|
|
#define TE_SPRITETRAIL 15
|
|
|
|
/**
|
|
* Additive sprite, plays 1 cycle
|
|
*
|
|
* @note
|
|
* write_byte(TE_SPRITE)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_short(sprite index)
|
|
* write_byte(scale in 0.1's)
|
|
* write_byte(brightness)
|
|
*/
|
|
#define TE_SPRITE 17
|
|
|
|
/**
|
|
* A beam with a sprite at the end
|
|
*
|
|
* @note
|
|
* write_byte(TE_BEAMSPRITE)
|
|
* write_coord(startposition.x)
|
|
* write_coord(startposition.y)
|
|
* write_coord(startposition.z)
|
|
* write_coord(endposition.x)
|
|
* write_coord(endposition.y)
|
|
* write_coord(endposition.z)
|
|
* write_short(beam sprite index)
|
|
* write_short(end sprite index)
|
|
*/
|
|
#define TE_BEAMSPRITE 18
|
|
|
|
/**
|
|
* Screen aligned beam ring, expands to max radius over lifetime
|
|
*
|
|
* @note
|
|
* write_byte(TE_BEAMTORUS)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_coord(axis.x)
|
|
* write_coord(axis.y)
|
|
* write_coord(axis.z)
|
|
* 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)
|
|
*/
|
|
#define TE_BEAMTORUS 19
|
|
|
|
/**
|
|
* Disk that expands to max radius over lifetime
|
|
*
|
|
* @note
|
|
* write_byte(TE_BEAMDISK)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_coord(axis.x)
|
|
* write_coord(axis.y)
|
|
* write_coord(axis.z)
|
|
* 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)
|
|
*/
|
|
#define TE_BEAMDISK 20
|
|
|
|
/**
|
|
* Cylinder that expands to max radius over lifetime
|
|
*
|
|
* @note
|
|
* write_byte(TE_BEAMCYLINDER)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_coord(axis.x)
|
|
* write_coord(axis.y)
|
|
* write_coord(axis.z)
|
|
* 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)
|
|
*/
|
|
#define TE_BEAMCYLINDER 21
|
|
|
|
/**
|
|
* Create a line of decaying beam segments until entity stops moving
|
|
*
|
|
* @note
|
|
* write_byte(TE_BEAMFOLLOW)
|
|
* write_short(entity:attachment to follow)
|
|
* write_short(sprite index)
|
|
* write_byte(life in 0.1's)
|
|
* write_byte(line width in 0.1's)
|
|
* write_byte(red)
|
|
* write_byte(green)
|
|
* write_byte(blue)
|
|
* write_byte(brightness)
|
|
*/
|
|
#define TE_BEAMFOLLOW 22
|
|
|
|
/**
|
|
* TE_GLOWSPRITE
|
|
*
|
|
* @note
|
|
* write_byte(TE_GLOWSPRITE)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_short(model index)
|
|
* write_byte(scale / 10)
|
|
* write_byte(size)
|
|
* write_byte(brightness)
|
|
*/
|
|
#define TE_GLOWSPRITE 23
|
|
|
|
/**
|
|
* Connect a beam ring to two entities
|
|
*
|
|
* @note
|
|
* write_byte(TE_BEAMRING)
|
|
* 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)
|
|
*/
|
|
#define TE_BEAMRING 24
|
|
|
|
/**
|
|
* Oriented shower of tracers
|
|
*
|
|
* @note
|
|
* write_byte(TE_STREAK_SPLASH)
|
|
* write_coord(startposition.x)
|
|
* write_coord(startposition.y)
|
|
* write_coord(startposition.z)
|
|
* write_coord(vector.x)
|
|
* write_coord(vector.y)
|
|
* write_coord(vector.z)
|
|
* write_byte(color)
|
|
* write_short(count)
|
|
* write_short(base speed)
|
|
* write_short(ramdon velocity)
|
|
*/
|
|
#define TE_STREAK_SPLASH 25
|
|
|
|
/**
|
|
* Dynamic light, effect world, minor entity effect
|
|
*
|
|
* @note
|
|
* write_byte(TE_DLIGHT)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_byte(radius in 10's)
|
|
* write_byte(red)
|
|
* write_byte(green)
|
|
* write_byte(blue)
|
|
* write_byte(brightness)
|
|
* write_byte(life in 10's)
|
|
* write_byte(decay rate in 10's)
|
|
*/
|
|
#define TE_DLIGHT 27
|
|
|
|
/**
|
|
* Point entity light, no world effect
|
|
*
|
|
* @note
|
|
* write_byte(TE_ELIGHT)
|
|
* write_short(entity:attachment to follow)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_coord(radius)
|
|
* write_byte(red)
|
|
* write_byte(green)
|
|
* write_byte(blue)
|
|
* write_byte(life in 0.1's)
|
|
* write_coord(decay rate)
|
|
*/
|
|
#define TE_ELIGHT 28
|
|
|
|
/**
|
|
* TE_TEXTMESSAGE
|
|
*
|
|
* @note
|
|
* write_byte(TE_TEXTMESSAGE)
|
|
* write_byte(channel)
|
|
* write_short(x) -1 = center)
|
|
* write_short(y) -1 = center)
|
|
* write_byte(effect) 0 = fade in/fade out, 1 is flickery credits, 2 is write out (training room)
|
|
* write_byte(red) - text color
|
|
* write_byte(green)
|
|
* write_byte(blue)
|
|
* write_byte(alpha)
|
|
* write_byte(red) - effect color
|
|
* write_byte(green)
|
|
* write_byte(blue)
|
|
* write_byte(alpha)
|
|
* write_short(fadein time)
|
|
* write_short(fadeout time)
|
|
* write_short(hold time)
|
|
* [optional] write_short(fxtime) time the highlight lags behing the leading text in effect 2
|
|
* write_string(text message) 512 chars max string size
|
|
*/
|
|
#define TE_TEXTMESSAGE 29
|
|
|
|
/**
|
|
* TE_LINE
|
|
*
|
|
* @note
|
|
* write_byte(TE_LINE)
|
|
* write_coord(startposition.x)
|
|
* write_coord(startposition.y)
|
|
* write_coord(startposition.z)
|
|
* write_coord(endposition.x)
|
|
* write_coord(endposition.y)
|
|
* write_coord(endposition.z)
|
|
* write_short(life in 0.1 s)
|
|
* write_byte(red)
|
|
* write_byte(green)
|
|
* write_byte(blue)
|
|
*/
|
|
#define TE_LINE 30
|
|
|
|
/**
|
|
* TE_BOX
|
|
*
|
|
* @note
|
|
* write_byte(TE_BOX)
|
|
* write_coord(boxmins.x)
|
|
* write_coord(boxmins.y)
|
|
* write_coord(boxmins.z)
|
|
* write_coord(boxmaxs.x)
|
|
* write_coord(boxmaxs.y)
|
|
* write_coord(boxmaxs.z)
|
|
* write_short(life in 0.1 s)
|
|
* write_byte(red)
|
|
* write_byte(green)
|
|
* write_byte(blue)
|
|
*/
|
|
#define TE_BOX 31
|
|
|
|
/**
|
|
* Kill all beams attached to entity
|
|
*
|
|
* @note
|
|
* write_byte(TE_KILLBEAM)
|
|
* write_short(entity)
|
|
*/
|
|
#define TE_KILLBEAM 99
|
|
|
|
/**
|
|
* TE_LARGEFUNNEL
|
|
*
|
|
* @note
|
|
* write_byte(TE_LARGEFUNNEL)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_short(sprite index)
|
|
* write_short(flags)
|
|
*/
|
|
#define TE_LARGEFUNNEL 100
|
|
|
|
/**
|
|
* Particle spray
|
|
*
|
|
* @note
|
|
* write_byte(TE_BLOODSTREAM)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_coord(vector.x)
|
|
* write_coord(vector.y)
|
|
* write_coord(vector.z)
|
|
* write_byte(color)
|
|
* write_byte(speed)
|
|
*/
|
|
#define TE_BLOODSTREAM 101
|
|
|
|
/**
|
|
* Line of particles every 5 units, dies in 30 seconds
|
|
*
|
|
* @note
|
|
* write_byte(TE_SHOWLINE)
|
|
* write_coord(startposition.x)
|
|
* write_coord(startposition.y)
|
|
* write_coord(startposition.z)
|
|
* write_coord(endposition.x)
|
|
* write_coord(endposition.y)
|
|
* write_coord(endposition.z)
|
|
*/
|
|
#define TE_SHOWLINE 102
|
|
|
|
/**
|
|
* Particle spray
|
|
*
|
|
* @note
|
|
* write_byte(TE_BLOOD)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_coord(vector.x)
|
|
* write_coord(vector.y)
|
|
* write_coord(vector.z)
|
|
* write_byte(color)
|
|
* write_byte(speed)
|
|
*/
|
|
#define TE_BLOOD 103
|
|
|
|
/**
|
|
* Decal applied to a brush entity (not the world)
|
|
*
|
|
* @note
|
|
* write_byte(TE_DECAL)
|
|
* write_coord(position.x) decal position (center of texture in world)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_byte(texture index of precached decal texture name)
|
|
* write_short(entity index)
|
|
*/
|
|
#define TE_DECAL 104
|
|
|
|
/**
|
|
* Create alpha sprites inside of entity, float upwards
|
|
*
|
|
* @note
|
|
* write_byte(TE_FIZZ)
|
|
* write_short(entity)
|
|
* write_short(sprite index)
|
|
* write_byte density)
|
|
*/
|
|
#define TE_FIZZ 105
|
|
|
|
/**
|
|
* Create a moving model that bounces and makes a sound when it hits
|
|
*
|
|
* @note
|
|
* write_byte(TE_MODEL)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_coord(velocity.x)
|
|
* write_coord(velocity.y)
|
|
* write_coord(velocity.z)
|
|
* write_angle(initial yaw)
|
|
* write_short(model index)
|
|
* write_byte(bounce sound type)
|
|
* write_byte(life in 0.1's)
|
|
*/
|
|
#define TE_MODEL 106
|
|
|
|
/**
|
|
* Spherical shower of models, picks from set
|
|
*
|
|
* @note
|
|
* write_byte(TE_EXPLODEMODEL)
|
|
* write_coord(origin.x)
|
|
* write_coord(origin.y)
|
|
* write_coord(origin.z)
|
|
* write_coord(velocity.x)
|
|
* write_coord(velocity.y)
|
|
* write_coord(velocity.z)
|
|
* write_short(model index)
|
|
* write_short(count)
|
|
* write_byte(life in 0.1's)
|
|
*/
|
|
#define TE_EXPLODEMODEL 107
|
|
|
|
/**
|
|
* Box of models or sprites
|
|
*
|
|
* @note
|
|
* write_byte(TE_BREAKMODEL)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_coord(size.x)
|
|
* write_coord(size.y)
|
|
* write_coord(size.z)
|
|
* write_coord(velocity.x)
|
|
* write_coord(velocity.y)
|
|
* write_coord(velocity.z)
|
|
* write_byte(random velocity in 10's)
|
|
* write_short(sprite or model index)
|
|
* write_byte(count)
|
|
* write_byte(life in 0.1 secs)
|
|
* write_byte(flags)
|
|
*/
|
|
#define TE_BREAKMODEL 108
|
|
|
|
/**
|
|
* Decal and ricochet sound
|
|
*
|
|
* @note
|
|
* write_byte(TE_GUNSHOTDECAL)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_short(entity index???)
|
|
* write_byte(decal???)
|
|
*/
|
|
#define TE_GUNSHOTDECAL 109
|
|
|
|
/**
|
|
* Spray of alpha sprites
|
|
*
|
|
* @note
|
|
* write_byte(TE_SPRITE_SPRAY)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_coord(velocity.x)
|
|
* write_coord(velocity.y)
|
|
* write_coord(velocity.z)
|
|
* write_short(sprite index)
|
|
* write_byte(count)
|
|
* write_byte(speed)
|
|
* write_byte(noise)
|
|
*/
|
|
#define TE_SPRITE_SPRAY 110
|
|
|
|
/**
|
|
* Quick spark sprite, client ricochet sound.
|
|
*
|
|
* @note
|
|
* write_byte(TE_ARMOR_RICOCHET)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_byte(scale in 0.1's)
|
|
*/
|
|
#define TE_ARMOR_RICOCHET 111
|
|
|
|
/**
|
|
* TE_PLAYERDECAL
|
|
*
|
|
* @note
|
|
* write_byte(TE_PLAYERDECAL)
|
|
* write_byte(playerindex)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_short(entity???)
|
|
* write_byte(decal number)
|
|
* [optional] write_short(model index)
|
|
*/
|
|
#define TE_PLAYERDECAL 112
|
|
|
|
/**
|
|
* Create alpha sprites inside of box, float upwards
|
|
*
|
|
* @note
|
|
* write_byte(TE_BUBBLES)
|
|
* write_coord(position.x) (min start position)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_coord(position.x) (max start position)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_coord(float height)
|
|
* write_short(model index)
|
|
* write_byte(count)
|
|
* write_coord(speed)
|
|
*/
|
|
#define TE_BUBBLES 113
|
|
|
|
/**
|
|
* Create alpha sprites along a line, float upwards
|
|
*
|
|
* @note
|
|
* write_byte(TE_BUBBLETRAIL)
|
|
* write_coord(position.x) (min start position)
|
|
* write_coord(position.y) (min start position)
|
|
* write_coord(position.z) (min start position)
|
|
* write_coord(position.x) (max start position)
|
|
* write_coord(position.y) (max start position)
|
|
* write_coord(position.z) (max start position)
|
|
* write_coord(float height)
|
|
* write_short(model index)
|
|
* write_byte(count)
|
|
* write_coord(speed)
|
|
*/
|
|
#define TE_BUBBLETRAIL 114
|
|
|
|
/**
|
|
* Spray of opaque sprite1's that fall, single sprite2 for 1..2 secs (this is a high-priority tent)
|
|
*
|
|
* @note
|
|
* write_byte(TE_BLOODSPRITE)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_short(sprite1 index)
|
|
* write_short(sprite2 index)
|
|
* write_byte(color)
|
|
* write_byte(scale)
|
|
*/
|
|
#define TE_BLOODSPRITE 115
|
|
|
|
/**
|
|
* Decal applied to the world brush
|
|
*
|
|
* @note
|
|
* write_byte(TE_WORLDDECAL)
|
|
* write_coord(position.x) decal position (center of texture in world)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_byte(texture index of precached decal texture name)
|
|
*/
|
|
#define TE_WORLDDECAL 116
|
|
|
|
/**
|
|
* Decal (with texture index > 256) applied to world brush
|
|
*
|
|
* @note
|
|
* write_byte(TE_WORLDDECALHIGH)
|
|
* write_coord(position.x) decal position (center of texture in world)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_byte(texture index of precached decal texture name - 256)
|
|
*/
|
|
#define TE_WORLDDECALHIGH 117
|
|
|
|
/**
|
|
* Same as TE_DECAL, but the texture index was greater than 256
|
|
*
|
|
* @note
|
|
* write_byte(TE_DECALHIGH)
|
|
* write_coord(position.x) decal position (center of texture in world)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_byte(texture index of precached decal texture name - 256)
|
|
* write_short(entity index)
|
|
*/
|
|
#define TE_DECALHIGH 118
|
|
|
|
/**
|
|
* Makes a projectile (like a nail) (this is a high-priority tent)
|
|
*
|
|
* @note
|
|
* write_byte(TE_PROJECTILE)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_coord(velocity.x)
|
|
* write_coord(velocity.y)
|
|
* write_coord(velocity.z)
|
|
* write_short(modelindex)
|
|
* write_byte(life)
|
|
* write_byte(owner) projectile won't collide with owner (if owner == 0, projectile will hit any client).
|
|
*/
|
|
#define TE_PROJECTILE 119
|
|
|
|
/**
|
|
* Throws a shower of sprites or models
|
|
*
|
|
* @note
|
|
* write_byte(TE_SPRAY)
|
|
* write_coord(position.x)
|
|
* write_coord(position.y)
|
|
* write_coord(position.z)
|
|
* write_coord(direction.x)
|
|
* write_coord(direction.y)
|
|
* write_coord(direction.z)
|
|
* write_short(modelindex)
|
|
* write_byte(count)
|
|
* write_byte(speed)
|
|
* write_byte(noise)
|
|
* write_byte(rendermode)
|
|
*/
|
|
#define TE_SPRAY 120
|
|
|
|
/**
|
|
* Sprites emit from a player's bounding box (ONLY use for players!)
|
|
*
|
|
* @note
|
|
* write_byte(TE_PLAYERSPRITES)
|
|
* write_short(playernum)
|
|
* write_short(sprite modelindex)
|
|
* write_byte(count)
|
|
* write_byte(variance) (0 = no variance in size) (10 = 10% variance in size)
|
|
*/
|
|
#define TE_PLAYERSPRITES 121
|
|
|
|
/**
|
|
* Very similar to lavasplash
|
|
*
|
|
* @note
|
|
* write_byte(TE_PARTICLEBURST)
|
|
* write_coord(origin)
|
|
* write_short(radius)
|
|
* write_byte(particle color)
|
|
* write_byte(duration * 10) (will be randomized a bit)
|
|
*/
|
|
#define TE_PARTICLEBURST 122
|
|
|
|
/**
|
|
* Makes a field of fire
|
|
*
|
|
* @note
|
|
* write_byte(TE_FIREFIELD)
|
|
* write_coord(origin)
|
|
* write_short(radius) (fire is made in a square around origin. -radius, -radius to radius, radius)
|
|
* write_short(modelindex)
|
|
* write_byte(count)
|
|
* write_byte(flags)
|
|
* write_byte(duration (in seconds) * 10) (will be randomized a bit)
|
|
*/
|
|
#define TE_FIREFIELD 123
|
|
|
|
/**
|
|
* Flags for the TE_FIREFIELD effect, controlling its performance and aesthetic
|
|
* features
|
|
*/
|
|
#define TEFIRE_FLAG_ALLFLOAT 1 // All sprites will drift upwards as they animate
|
|
#define TEFIRE_FLAG_SOMEFLOAT 2 // Some of the sprites will drift upwards. (50% chance)
|
|
#define TEFIRE_FLAG_LOOP 4 // If set, sprite plays at 15 fps, otherwise plays at whatever rate stretches the animation over the sprite's duration.
|
|
#define TEFIRE_FLAG_ALPHA 8 // If set, sprite is rendered alpha blended at 50% else, opaque
|
|
#define TEFIRE_FLAG_PLANAR 16 // If set, all fire sprites have same initial Z instead of randomly filling a cube.
|
|
|
|
/**
|
|
* Attaches a TENT to a player (this is a high-priority tent)
|
|
*
|
|
* @note
|
|
* write_byte(TE_PLAYERATTACHMENT)
|
|
* write_byte(entity index of player)
|
|
* write_coord(vertical offset) (attachment origin.z = player origin.z + vertical offset)
|
|
* write_short(model index)
|
|
* write_short(life * 10 )
|
|
*/
|
|
#define TE_PLAYERATTACHMENT 124
|
|
|
|
/**
|
|
* Will expire all TENTS attached to a player.
|
|
*
|
|
* @note
|
|
* write_byte(TE_KILLPLAYERATTACHMENTS)
|
|
* write_byte(entity index of player)
|
|
*/
|
|
#define TE_KILLPLAYERATTACHMENTS 125
|
|
|
|
/**
|
|
* Much more compact shotgun message
|
|
*
|
|
* @note This message is used to make a client approximate a 'spray' of gunfire.
|
|
* Any weapon that fires more than one bullet per frame and fires in a bit
|
|
* of a spread is a good candidate for MULTIGUNSHOT use. (shotguns)
|
|
* @note This effect makes the client do traces for each bullet, these client
|
|
* traces ignore entities that have studio models.Traces are 4096 long.
|
|
* @note
|
|
* write_byte(TE_MULTIGUNSHOT)
|
|
* write_coord(origin.x)
|
|
* write_coord(origin.y)
|
|
* write_coord(origin.z)
|
|
* write_coord(direction.x)
|
|
* write_coord(direction.y)
|
|
* write_coord(direction.z)
|
|
* write_coord(x noise * 100)
|
|
* write_coord(y noise * 100)
|
|
* write_byte(count)
|
|
* write_byte(bullethole decal texture index)
|
|
*/
|
|
#define TE_MULTIGUNSHOT 126
|
|
|
|
|
|
/**
|
|
* Larger message than the standard tracer, but allows some customization.
|
|
*
|
|
* @note
|
|
* write_byte(TE_USERTRACER)
|
|
* write_coord(origin.x)
|
|
* write_coord(origin.y)
|
|
* write_coord(origin.z)
|
|
* write_coord(velocity.x)
|
|
* write_coord(velocity.y)
|
|
* write_coord(velocity.z)
|
|
* write_byte(life * 10)
|
|
* write_byte(color) this is an index into an array of color vectors in the engine. (0 - )
|
|
* write_byte(length * 10)
|
|
*/
|
|
#define TE_USERTRACER 127
|
|
|
|
/**
|
|
* @endsection
|
|
*/
|
|
|
|
/**
|
|
* From hltv.h from the HLSDK, these are used in conjunction with SVC_DIRECTOR
|
|
* sub commands of svc_director
|
|
*/
|
|
#define DRC_CMD_NONE 0 // NULL director command
|
|
#define DRC_CMD_START 1 // start director mode
|
|
#define DRC_CMD_EVENT 2 // informs about director command
|
|
#define DRC_CMD_MODE 3 // switches camera modes
|
|
#define DRC_CMD_CAMERA 4 // sets camera registers
|
|
#define DRC_CMD_TIMESCALE 5 // sets time scale
|
|
#define DRC_CMD_MESSAGE 6 // send HUD centerprint
|
|
#define DRC_CMD_SOUND 7 // plays a particular sound
|
|
#define DRC_CMD_STATUS 8 // status info about broadcast
|
|
#define DRC_CMD_BANNER 9 // banner file name for HLTV gui
|
|
#define DRC_CMD_FADE 10 // send screen fade command
|
|
#define DRC_CMD_SHAKE 11 // send screen shake command
|
|
#define DRC_CMD_STUFFTEXT 12 // like the normal svc_stufftext but as director command
|
|
|
|
#define DRC_CMD_LAST 12
|
|
|
|
/**
|
|
* HLTV_EVENT event flags
|
|
*/
|
|
#define DRC_FLAG_PRIO_MASK 0x0F // priorities between 0 and 15 (15 most important)
|
|
#define DRC_FLAG_SIDE (1<<4) //
|
|
#define DRC_FLAG_DRAMATIC (1<<5) // is a dramatic scene
|
|
#define DRC_FLAG_SLOWMOTION (1<<6) // would look good in SloMo
|
|
#define DRC_FLAG_FACEPLAYER (1<<7) // player is doning something (reload/defuse bomb etc)
|
|
#define DRC_FLAG_INTRO (1<<8) // is a introduction scene
|
|
#define DRC_FLAG_FINAL (1<<9) // is a final scene
|
|
#define DRC_FLAG_NO_RANDOM (1<<10) // don't randomize event data
|
|
|
|
#define MAX_DIRECTOR_CMD_PARAMETERS 4
|
|
#define MAX_DIRECTOR_CMD_STRING 128
|