Half-Life 1 Engine Messages
//SVC_BAD 0 SVC_NOP 1 SVC_DISCONNECT 2 SVC_EVENT 3 SVC_VERSION 4 SVC_SETVIEW 5 SVC_SOUND 6 SVC_TIME 7 SVC_PRINT 8 SVC_STUFFTEXT 9 SVC_SETANGLE 10 SVC_SERVERINFO 11 SVC_LIGHTSTYLE 12 SVC_UPDATEUSERINFO 13 SVC_DELTADESCRIPTION 14 SVC_CLIENTDATA 15 SVC_STOPSOUND 16 SVC_PINGS 17 SVC_PARTICLE 18 SVC_DAMAGE 19 SVC_SPAWNSTATIC 20 SVC_EVENT_RELIABLE 21 SVC_SPAWNBASELINE 22 SVC_TEMPENTITY 23 SVC_SETPAUSE 24 SVC_SIGNONNUM 25 SVC_CENTERPRINT 26 SVC_KILLEDMONSTER 27 SVC_FOUNDSECRET 28 SVC_SPAWNSTATICSOUND 29 SVC_INTERMISSION 30 SVC_FINALE 31 SVC_CDTRACK 32 SVC_RESTORE 33 SVC_CUTSCENE 34 SVC_WEAPONANIM 35 SVC_DECALNAME 36 SVC_ROOMTYPE 37 SVC_ADDANGLE 38 SVC_NEWUSERMSG 39 SVC_PACKETENTITIES 40 SVC_DELTAPACKETENTITIES 41 SVC_CHOKE 42 SVC_RESOURCELIST 43 SVC_NEWMOVEVARS 44 SVC_RESOURCEREQUEST 45 SVC_CUSTOMIZATION 46 SVC_CROSSHAIRANGLE 47 SVC_SOUNDFADE 48 SVC_FILETXFERFAILED 49 SVC_HLTV 50 SVC_DIRECTOR 51 SVC_VOICEINIT 52 SVC_VOICEDATA 53 SVC_SENDEXTRAINFO 54 SVC_TIMESCALE 55 SVC_RESOURCELOCATION 56 SVC_SENDCVARVALUE 57 SVC_SENDCVARVALUE2 58
Contents
- 1 SVC_ADDANGLE
- 2 SVC_CDTRACK
- 3 SVC_CENTERPRINT
- 4 SVC_CHOKE
- 5 SVC_CLIENTDATA
- 6 SVC_CROSSHAIRANGLE
- 7 SVC_CUSTOMIZATION
- 8 SVC_CUTSCENE
- 9 SVC_DAMAGE
- 10 SVC_DECALNAME
- 11 SVC_DELTADESCRIPTION
- 12 SVC_DELTAPACKETENTITIES
- 13 SVC_DISCONNECT
- 14 SVC_EVENT
- 15 SVC_EVENT_RELIABLE
- 16 SVC_FILETXFERFAILED
- 17 SVC_FINALE
- 18 SVC_FOUNDSECRET
- 19 SVC_HLTV
- 20 SVC_INTERMISSION
- 21 SVC_KILLEDMONSTER
- 22 SVC_LIGHTSTYLE
- 23 SVC_NEWMOVEVARS
- 24 SVC_NEWUSERMSG
- 25 SVC_NOP
- 26 SVC_PACKETENTITIES
- 27 SVC_PARTICLE
- 28 SVC_PINGS
- 29 SVC_PRINT
- 30 SVC_RESOURCELIST
- 31 SVC_RESOURCELOCATION
- 32 SVC_RESOURCEREQUEST
- 33 SVC_RESTORE
- 34 SVC_ROOMTYPE
- 35 SVC_SENDCVARVALUE
- 36 SVC_SENDCVARVALUE2
- 37 SVC_SENDEXTRAINFO
- 38 SVC_SERVERINFO
- 39 SVC_SETANGLE
- 40 SVC_SETPAUSE
- 41 SVC_SETVIEW
- 42 SVC_SIGNONNUM
- 43 SVC_SOUND
- 44 SVC_SOUNDFADE
- 45 SVC_SPAWNBASELINE
- 46 SVC_SPAWNSTATIC
- 47 SVC_SPAWNSTATICSOUND
- 48 SVC_STOPSOUND
- 49 SVC_STUFFTEXT
- 50 SVC_TEMPENTITY
- 51 SVC_TIME
- 52 SVC_TIMESCALE
- 53 SVC_UPDATEUSERINFO
- 54 SVC_VERSION
- 55 SVC_VOICEDATA
- 56 SVC_VOICEINIT
- 57 SVC_WEAPONANIM
SVC_ADDANGLE
Add an angle on the yaw axis of the current client's view angle.
Note: When pev->fixangle is set to 2, this message is called with pev->avelocity[1] as a value.
Note: The value needs to be scaled by (65536 / 360).
Name: | SVC_ADDANGLE | ||
Structure: |
|
SVC_CDTRACK
Plays a Half-Life music.
Note: Track number goes from 1 to 30.
Note: The music files are located in valve/media/.
Note: The LoopTrack param is unused but required.
Name: | SVC_CDTRACK | ||||
Structure: |
|
SVC_CENTERPRINT
Sends a centered message.
Note: Called from pfnClientPrintf with print_center as type.
Name: | SVC_CENTERPRINT | ||
Structure: |
|
SVC_CHOKE
Notify the client that some outgoing datagrams were not transmitted due to exceeding bandwidth rate limits.
Note: This message has no arguments.
Name: | SVC_CHOKE | |
Structure: |
|
SVC_CLIENTDATA
Contains information about the client state at the time of last server frame.
Weapon data is also sent if the client is predicting weapon state changes.
Note: DeltaUpdateMask determines the frame which should be taken as a source for delta compression.
Note: The length of WeaponIndex field is 5 on some outdated engines where MAX_WEAPON_DATA is set to 32.
Note: If HasDelta is set to 0, DeltaUpdateMask should not be sent, and the client will not inherit previous data from any frame.
Note: This message has its arguments in bit-packed form.
Name: | SVC_CLIENTDATA | ||||||||||||||||||
Structure: |
|
SVC_CROSSHAIRANGLE
Adjusts the weapon's crosshair angle.
Basically, the weapon position on the player's view can have a different origin.
Note: Called by pfnCrosshairAngle. So, the same as EngFunc_CrosshairAngle.
Note: If you use the engine call, no need to scale by 5.
Note: Use 0 for both to get the default position.
Name: | SVC_CROSSHAIRANGLE | ||||
Structure: |
|
SVC_CUSTOMIZATION
Notifies the client that a new customization is avaliable for download.
Note: Sent for all active clients every time a new player finishes uploading its custom resources.
Note: Also sent for this very client a number of times with information about the customizations of all other clients currently on the server.
Note: MD5Hash is sent only if Flags has the RES_CUSTOM (4) bit set.
Name: | SVC_CUSTOMIZATION | ||||||||||||||
Structure: |
|
SVC_CUTSCENE
Shows the intermission camera view, and writes-out text passed in first parameter.
Note: Intermission mode 3.
Note: This text will keep showing on clients in future intermissions.
Name: | SVC_CUTSCENE | ||
Structure: |
|
SVC_DAMAGE
Note: Deprecated.
Note: This message has no arguments.
Name: | SVC_DAMAGE | |
Structure: |
|
SVC_DECALNAME
Allows to set, into the client's decals array and at specific position index (0->511), a decal name.
E.g: let's say you send a message to set a decal "{break" at index 200.
As result, when a message TE_ will be used to show a decal at index 200, we will see "{break".
Note: If there is already an existing decal at the provided index, it will be overwritten.
Note: It appears we can play only with decals from decals.wad.
Name: | SVC_DECALNAME | ||||
Structure: |
|
SVC_DELTADESCRIPTION
Synchronizes client delta descriptions with server ones.
Note: The descriptions are parsed from "delta.lst" once on server startup.
Note: Fields are delta-compressed too using the meta delta definition, which is identical both on the client and the server.
Note: This message has some of its arguments in bit-packed form.
Name: | SVC_DELTADESCRIPTION | ||||||||
Structure: |
|
SVC_DELTAPACKETENTITIES
Contains information about the entity states, like origin, angles and such.
This is the basic means of sending entity updates to the client.
Note: UpdateMask determines the frame which should be taken as a source for delta compression.
Note: Each entity can inherit itself in a number of ways:
Note: - from a "null" state (no delta);
Note: - from a previous entity in the message;
Note: - from a "best" calculated baseline;
Note: - from an instanced baseline set by the game library.
Note: NoDelta means there would be no delta information following the header.
Note: Entity index can be short (6 bits) or long (11 bits). The short index is basically a difference between current and previous index.
Note: If difference is 1, no index would be sent.
Note: Compression is done using one of three encoders: entity_state_t, entity_state_player_t and custom_entity_state_t.
Note: "Best" baseline is a baseline with the least amount of fields that were changed, and as such, the lesser network traffic.
Note: This message has some of its arguments in bit-packed form.
Name: | SVC_DELTAPACKETENTITIES | ||||||||||||||||||||||||||||||||
Structure: |
|
SVC_DISCONNECT
Disconnects a player with given reason.
Name: | SVC_DISCONNECT | ||
Structure: |
|
SVC_EVENT
An event, defined by the game library, has recently occurred on the server.
Note: This message can be dropped if the client already has too much content in its unreliable buffer.
Note: Events can be precached using pfnPrecacheEvent routine.
Note: Events are queued and grouped together every frame, if there's any.
Note: EventArgs are always inherited from "null" event args.
Note: Only a max of 31 events can be queued and subsequently sent this way.
Note: This message has its arguments in bit-packed form.
Name: | SVC_EVENT | ||||||||||||||||||||
Structure: |
|
SVC_EVENT_RELIABLE
This message is simular to SVC_EVENT, but no queuing takes place, and the message can only hold one event.
Note: All events with FEV_RELIABLE flag set would be sent this way.
Note: The message would be fragmented and sent separately if it overflows the client network channel.
Note: EventArgs are always inherited from "null" event args.
Note: This message has its arguments in bit-packed form.
Name: | SVC_EVENT_RELIABLE | ||||||||||
Structure: |
|
SVC_FILETXFERFAILED
Sends a message to the client's console telling what file has failed to be transfered.
Note: The message type is : "Error: server failed to transmit file 'FileName'""
Name: | SVC_FILETXFERFAILED | ||
Structure: |
|
SVC_FINALE
Shows the intermission camera view, and writes-out text passed in first parameter.
Note: Intermission mode 2.
Note: This text will keep showing on clients in future intermissions.
Name: | SVC_FINALE | ||
Structure: |
|
SVC_FOUNDSECRET
Note: Deprecated.
Note: This message has no arguments.
Name: | SVC_FOUNDSECRET | |
Structure: |
|
SVC_HLTV
Tells client about current spectator mode.
As found in hltv.h: #define HLTV_ACTIVE 0 // tells client that he's an spectator and will get director commands #define HLTV_STATUS 1 // send status infos about proxy #define HLTV_LISTEN 2 // tell client to listen to a multicast stream
Name: | SVC_HLTV | ||
Structure: |
|
SVC_INTERMISSION
Shows the intermission camera view
Note: Intermission mode 1.
Note: This message has no arguments.
Name: | SVC_INTERMISSION | |
Structure: |
|
SVC_KILLEDMONSTER
Note: Deprecated.
Note: This message has no arguments.
Name: | SVC_KILLEDMONSTER | |
Structure: |
|
SVC_LIGHTSTYLE
Setup light animation tables. 'a' is total darkness, 'z' is maxbright.
Note: Server send 64 lightstyles to client during client connect. Most of them has empty light info. All of them could be found in world.cpp
// 0 normal LIGHT_STYLE(0, "m"); // 1 FLICKER (first variety) LIGHT_STYLE(1, "mmnmmommommnonmmonqnmmo"); // 2 SLOW STRONG PULSE LIGHT_STYLE(2, "abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba"); // 3 CANDLE (first variety) LIGHT_STYLE(3, "mmmmmaaaaammmmmaaaaaabcdefgabcdefg"); // 4 FAST STROBE LIGHT_STYLE(4, "mamamamamama"); // 5 GENTLE PULSE 1 LIGHT_STYLE(5,"jklmnopqrstuvwxyzyxwvutsrqponmlkj"); // 6 FLICKER (second variety) LIGHT_STYLE(6, "nmonqnmomnmomomno"); // 7 CANDLE (second variety) LIGHT_STYLE(7, "mmmaaaabcdefgmmmmaaaammmaamm"); // 8 CANDLE (third variety) LIGHT_STYLE(8, "mmmaaammmaaammmabcdefaaaammmmabcdefmmmaaaa"); // 9 SLOW STROBE (fourth variety) LIGHT_STYLE(9, "aaaaaaaazzzzzzzz"); // 10 FLUORESCENT FLICKER LIGHT_STYLE(10, "mmamammmmammamamaaamammma"); // 11 SLOW PULSE NOT FADE TO BLACK LIGHT_STYLE(11, "abcdefghijklmnopqrrqponmlkjihgfedcba"); // 12 UNDERWATER LIGHT MUTATION // this light only distorts the lightmap - no contribution // is made to the brightness of affected surfaces LIGHT_STYLE(12, "mmnnmmnnnmmnn"); // styles 32-62 are assigned by the light program for switchable lights // 63 testing LIGHT_STYLE(63, "a");
Name: | SVC_LIGHTSTYLE | ||||
Structure: |
|
SVC_NEWMOVEVARS
Updates client's movevars.
Note: This message is sent on client's connect and when any change is detected between the current server movevars and server cvars values.
Note: If there is a change, the value of server cvars are copied into the server movevars, then the message is sent to all players using the server movevars.
Name: | SVC_NEWMOVEVARS | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Structure: |
|
SVC_NEWUSERMSG
Registers a new user message on the client.
Note: Sent every time a new message is registered on the server, but most games do this only once on the map change or server startup.
Note: Name can be represented as an array of 4 "longs".
Name: | SVC_NEWUSERMSG | ||||||
Structure: |
|
SVC_NOP
Does absolutely nothing.
Note: Server pads outgoing messages with SVC_NOP if the total datagram size is lesser than 16.
Note: This message has no arguments.
Name: | SVC_NOP | |
Structure: |
|
SVC_PACKETENTITIES
Contains information about the entity states, like origin, angles and such.
This message is the same as SVC_DELTAPACKETENTITIES, only with UpdateMask field omitted.
Note: The delta compression still takes place, albeit from a "null" state.
Note: This message has some of its arguments in bit-packed form.
Name: | SVC_PACKETENTITIES | ||||||||
Structure: |
|
SVC_PARTICLE
Shows a particle effect.
Note: Called from pfnParticleEffect. So, the same as EngFunc_ParticleEffect.
Note: The direction has to be a value between -128 to 127, after the scale operation.
Note: You don't need to scaled by 16 if you use the engine call.
Note: Color is an index from the palette attached at right.
Name: | SVC_PARTICLE | ||||||||||||||||
Structure: |
|
SVC_PINGS
Contains ping and loss values for a number of players.
Note: Current server builds send this message every once in a frame, resulting in lots of unnecessary network overhead. This happens due to a bug in SV_ShouldUpdatePing routine; it can be observed by typing cl_messages in the console after some time playing on a server.
Note: This message has its arguments in bit-packed form.
Name: | SVC_PINGS | ||||||||||||||
Structure: |
|
SVC_PRINT
Sends a message to the client's console.
Note: Called from pfnClientPrintf with print_console or print_notify as type.
Name: | SVC_PRINT | ||
Structure: |
|
SVC_RESOURCELIST
This message contains all the resources provided by the server for clients to download. Consistency info can also be included.
Note: MD5Hash is sent only if Flags has the RES_CUSTOM (4) bit set.
Note: Outgoing Flags field can only include RES_FATALIFMISSING and RES_WASMISSING.
Note: If ExtraInfo is empty, it is not sent, and HasExtraInfo must be equal to 0.
Note: Otherwise, ExtraInfo can include a FORCE_TYPE variable and allowed min/max size for models.
Note: Consistency info is not sent in any of these cases:
Note: - mp_consistency is set to 0;
Note: - the current game mode is singleplayer, or it is a listen server;
Note: - there were no calls to ForceUnmodified before sending the resource list;
Note: - the receiving client is a HLTV proxy.
Note: Every resource with RES_CHECKFILE would be included in consistency list.
Note: The consistency index can be short or long. Short index is a difference between current and last index.
Note: This message has its arguments in bit-packed form.
Name: | SVC_RESOURCELIST | ||||||||||||||||||||||||||||||||||||||
Structure: |
|
SVC_RESOURCELOCATION
This message sends sv_downloadurl to client.
Name: | SVC_RESOURCELOCATION | ||
Structure: |
|
SVC_RESOURCEREQUEST
Allows the client to send its own resource list (CLC_RESOURCELIST).
Name: | SVC_RESOURCEREQUEST | ||||
Structure: |
|
SVC_RESTORE
Maintains a global transition table for the saved game.
Note: Sent only if a save file is being played, and a new client connects to the server.
Note: HLTV clients can't connect to a saved game, and subsequently they can't receive this message.
Note: SaveName is formatted like: "SAVE/(map name).HL2".
Name: | SVC_RESTORE | ||||||||
Structure: |
|
SVC_ROOMTYPE
Sets client room_type cvar to provided value.
0 = Normal (off) 1 = Generic 2 = Metal Small 3 = Metal Medium 4 = Metal Large 5 = Tunnel Small 6 = Tunnel Medium 7 = Tunnel Large 8 = Chamber Small 9 = Chamber Medium 10 = Chamber Large 11 = Bright Small 12 = Bright Medium 13 = Bright Large 14 = Water 1 15 = Water 2 16 = Water 3 17 = Concrete Small 18 = Concrete Medium 19 = Concrete Large 20 = Big 1 21 = Big 2 22 = Big 3 23 = Cavern Small 24 = Cavern Medium 25 = Cavern Large 26 = Weirdo 1 27 = Weirdo 2 28 = Weirdo 3
Name: | SVC_ROOMTYPE | ||
Structure: |
|
SVC_SENDCVARVALUE
Request a cvar value from a connected client.
Note: This message is considered obsolete, since it provides no option to differentiate between various cvar queries.
Note: After the client has successfully responded, the server calls pfnCvarValue function in the game library.
Name: | SVC_SENDCVARVALUE | ||
Structure: |
|
SVC_SENDCVARVALUE2
Request a cvar value from a connected client.
Note: RequestID is provided to be able to distinguish cvar queries between each other.
Note: After the client has successfully responded, the server calls pfnCvarValue2 function in the game library.
Name: | SVC_SENDCVARVALUE2 | ||||
Structure: |
|
SVC_SENDEXTRAINFO
Sends some extra information regarding the server.
Note: This message is sent at player's connection right after SVC_SERVERINFO.
Note: The sv_cheats cvar will be set on the client with the value provided.
Note: It appears FallbackDir is always null.
Name: | SVC_SENDEXTRAINFO | ||||
Structure: |
|
SVC_SERVERINFO
Contains information about the server.
Note: SpawnCount is the number of times the server has changed its map.
Note: MapFileName contains full map name relatively to the root directory, like maps/de_dust2.bsp.
Note: Contents of "mapcyclefile" are copied into Mapcycle string, allowing up to 8 KB of data.
Name: | SVC_SERVERINFO | ||||||||||||||||||||||||
Structure: |
|
SVC_SETANGLE
Update immediately the client's view angles.
Note: When pev->fixangle is set to a value other than 0 or 2, this message is sent with the current player's pev->v_angle values.
Note: This message is also sent during the client connection process, but with AngleRoll always set to 0.
Note: The provided angles need to be scaled by (65536 / 360).
Name: | SVC_SETANGLE | ||||||
Structure: |
|
SVC_SETPAUSE
Puts client to a pause.
Note: If server is not paused, commands and packets from client are still sent, that means that client still can shoot/buy/etc...
Note: IsPaused: 1 - for pause, 0 - for unpause.
Name: | SVC_SETPAUSE | ||
Structure: |
|
SVC_SETVIEW
Attaches a player's view to an entity.
Note: Called from pfnSetView. The same as attach_view() native.
Name: | SVC_SETVIEW | ||
Structure: |
|
SVC_SIGNONNUM
Called just after client_putinserver. Signals the client that the server has marked it as "active".
Name: | SVC_SIGNONNUM | ||
Structure: |
|
SVC_SOUND
Plays a sound file on the client.
Note: The sound index can be short or long. If the index can fit in a single byte, the short variant is used, otherwise SND_LONG_INDEX bit (4) is included in Flags and 16 bits would be used for SoundIndex variable.
Note: This message has its arguments in bit-packed form.
Name: | SVC_SOUND | ||||||||||||||||||||||
Structure: |
|
SVC_SOUNDFADE
Updates client side sound fade.
It's used to modulate sound volume on the client.
Such functionality is part of a main function where the purpose would be to update sound subsystem and cd audio.
Note: EngFunc_FadeClientVolume sends that message to client.
Name: | SVC_SOUNDFADE | ||||||||
Structure: |
|
SVC_SPAWNBASELINE
Creates a baseline for future referencing.
Note: This message can hold more than one baseline.
Note: Delta-compressed fields are inherited from a "null" value.
Note: Engine baselines are sent first; they are formed from all eligible entities at the moment of map startup.
Note: GameDLL baselines are sent after engine ones. They are formed at the same time, but a game library can manually define them in CreateInstancedBaseline calls.
Note: There is no limit how many baselines can be sent. However, only 63 game baselines can be created by a game library, and NumInstanced can only hold 6 bits.
Note: This message has its arguments in bit-packed form.
Name: | SVC_SPAWNBASELINE | ||||||||||||||||
Structure: |
|
SVC_SPAWNSTATIC
Marks an entity as "static", so that it can be freed from server memory.
Note: RenderAmt, RenderColor and RenderFX are sent only if RenderMode does not equal to 0.
Note: ColorMap and Skin fields are deprecated; they can be set to 0.
Name: | SVC_SPAWNSTATIC | ||||||||||||||||||||||||||||||||||
Structure: |
|
SVC_SPAWNSTATICSOUND
Start playback of a sound, loaded into the static portion of the channel array.
This should be used for looping ambient sounds, looping sounds that should not non-creature sentences, and one-shot ambient streaming sounds.
It can also play 'regular' sounds one-shot, in case designers want to trigger regular game sounds.
The sound can be spawned either from a fixed position or from an entity.
Note: To use it on a fixed position, provide a valid origin and set EntityIndex with 0.
Note: To use it from an entity, so position is updated, provide a valid EntityIndex and set Origin with a null vector.
Note: To stop a sound with SVC_STOPSOUND, a valid EntityIndex is needed.
Note: Volume has to be scaled by 255 and Attenuation by 64.
Note: Use SND_SENTENCE (1<<4) as flag for sentence sounds.
Note: It can be sent to one player.
Name: | SVC_SPAWNSTATICSOUND | ||||||||||||||||
Structure: |
|
SVC_STOPSOUND
Stops an ambient sound.
Name: | SVC_STOPSOUND | ||
Structure: |
|
SVC_STUFFTEXT
Executes command on player.
Note: This message is sent by client_cmd(index,const command[],any:...)
Name: | SVC_STUFFTEXT | ||
Structure: |
|
SVC_TEMPENTITY
Creates a temp entity.
Name: | SVC_TEMPENTITY | ||||
Structure: |
|
SVC_TIME
Notifies clients about the current server time.
Note: This message is sent every frame by the server.
Name: | SVC_TIME | ||
Structure: |
|
SVC_TIMESCALE
Name: | SVC_TIMESCALE | ||
Structure: |
|
SVC_UPDATEUSERINFO
Contains information about a particular client. See following posts for more details : https://forums.alliedmods.net/showthread.php?p=1995516#post1995516
Note: This message is sent at a number of times:
Note: - at the moment of client activation (during the connection);
Note: - at the moment of disconnection with ClientUserInfo set to "";
Note: - using "fullupdate" command or having impulse #204 set in incoming move packets;
Note: - if the userinfo was changed, but only once per second for a single client.
Name: | SVC_UPDATEUSERINFO | ||||||||
Structure: |
|
SVC_VERSION
Disconnects the client and sends a message to the console if the number passed doesn't match the current server protocol version.
Note: Message type sent: "CL_Parse_Version: Server is protocol %i instead of %i\n".
Note: This message seems to be unused.
Name: | SVC_VERSION | ||
Structure: |
|
SVC_VOICEDATA
Contains compressed voice data.
Note: Size can be no higher than 4096.
Name: | SVC_VOICEDATA | ||||||
Structure: |
|
SVC_VOICEINIT
Sends sv_voicecodec and sv_voicequality cvars to client.
Note: Codec name either voice_miles or voice_speex.
Note: Quality 1 to 5.
Name: | SVC_VOICEINIT | ||||
Structure: |
|
SVC_WEAPONANIM
Plays a weapon sequence.
Name: | SVC_WEAPONANIM | ||||
Structure: |
|