//=========== (C) Copyright 1999 Valve, L.L.C. All rights reserved. =========== // // The copyright to the contents herein is the property of Valve, L.L.C. // The contents may be used and/or copied only with the written permission of // Valve, L.L.C., or in accordance with the terms and conditions stipulated in // the agreement/contract under which the contents have been supplied. //============================================================================= // No spaces in event names, max length 32 // All strings are case sensitive // total game event byte length must be < 1024 // // valid data key types are: // none : value is not networked // string : a zero terminated string // bool : unsigned int, 1 bit // byte : unsigned int, 8 bit // short : signed int, 16 bit // long : signed int, 32 bit // float : float, 32 bit // gameevents + hltvevents + replayevents + engineevents "allevents" { ////////////////////////////////////////////////////////////////////// // Game events ////////////////////////////////////////////////////////////////////// "team_info" // info about team { "teamid" "byte" // unique team id "teamname" "string" // team name eg "Team Blue" } "team_score" // team score changed { "teamid" "byte" // team id "score" "short" // total team score } "teamplay_broadcast_audio" // emits a sound to everyone on a team { "team" "byte" // unique team id "sound" "string" // name of the sound to emit } ////////////////////////////////////////////////////////////////////// // Player events ////////////////////////////////////////////////////////////////////// // "player_team" // player change his team // { // "userid" "short" // user ID on server // "team" "byte" // team id // "oldteam" "byte" // old team id // "disconnect" "bool" // team change because player disconnects // "autoteam" "bool" // true if the player was auto assigned to the team // "silent" "bool" // if true wont print the team join messages // "name" "string" // player's name // } "player_class" // a player changed his class { "userid" "short" // user ID on server "class" "string" // new player class / model } // "player_death" // a game event, name may be 32 charaters long // { // "userid" "short" // user ID who died // "attacker" "short" // user ID who killed // } // "player_hurt" // { // "userid" "short" // player index who was hurt // "attacker" "short" // player index who attacked // "health" "byte" // remaining health points // } "player_chat" // a public player chat { "teamonly" "bool" // true if team only chat "userid" "short" // chatting player "text" "string" // chat text } "player_score" // players scores changed { "userid" "short" // user ID on server "kills" "short" // # of kills "deaths" "short" // # of deaths "score" "short" // total game score } "player_spawn" // player spawned in game { "userid" "short" // user ID on server } "player_shoot" // player shoot his weapon { "userid" "short" // user ID on server "weapon" "byte" // weapon ID "mode" "byte" // weapon mode } "player_use" { "userid" "short" // user ID on server "entity" "short" // entity used by player } "player_changename" { "userid" "short" // user ID on server "oldname" "string" // players old (current) name "newname" "string" // players new name } "player_hintmessage" { "hintmessage" "string" // localizable string of a hint } "base_player_teleported" { "entindex" "short" } ////////////////////////////////////////////////////////////////////// // Game events ////////////////////////////////////////////////////////////////////// "game_init" // sent when a new game is started { } "game_newmap" // send when new map is completely loaded { "mapname" "string" // map name } "game_start" // a new game starts { "roundslimit" "long" // max round "timelimit" "long" // time limit "fraglimit" "long" // frag limit "objective" "string" // round objective } "game_end" // a game ended { "winner" "byte" // winner team/user id } "round_start" { "timelimit" "long" // round time limit in seconds "fraglimit" "long" // frag limit in seconds "objective" "string" // round objective } "round_end" { "winner" "byte" // winner team/user i "reason" "byte" // reson why team won "message" "string" // end round message } "game_message" // a message send by game logic to everyone { "target" "byte" // 0 = console, 1 = HUD "text" "string" // the message text } "break_breakable" { "entindex" "long" "userid" "short" "material" "byte" // BREAK_GLASS, BREAK_WOOD, etc } "break_prop" { "entindex" "long" "userid" "short" } "entity_killed" { "entindex_killed" "long" "entindex_attacker" "long" "entindex_inflictor" "long" "damagebits" "long" } "bonus_updated" { "numadvanced" "short" "numbronze" "short" "numsilver" "short" "numgold" "short" } "achievement_event" { "achievement_name" "string" // non-localized name of achievement "cur_val" "short" // # of steps toward achievement "max_val" "short" // total # of steps in achievement } // sent whenever an achievement that's tracked on the HUD increases "achievement_increment" { "achievement_id" "long" // ID of achievement that went up "cur_val" "short" // # of steps toward achievement "max_val" "short" // total # of steps in achievement } "physgun_pickup" { "entindex" "long" // entity picked up } "flare_ignite_npc" { "entindex" "long" // entity ignited } "helicopter_grenade_punt_miss" { } "user_data_downloaded" // fired when achievements/stats are downloaded from Steam or XBox Live { } "ragdoll_dissolved" { "entindex" "long" } "hltv_changed_mode" { "oldmode" "short" "newmode" "short" "obs_target" "short" } "hltv_changed_target" { "mode" "short" "old_target" "short" "obs_target" "short" } // Client side VoteController talking to HUD "vote_ended" { } "vote_started" { "issue" "string" "param1" "string" "team" "byte" "initiator" "long" // entity id of the player who initiated the vote } "vote_changed" { "vote_option1" "byte" "vote_option2" "byte" "vote_option3" "byte" "vote_option4" "byte" "vote_option5" "byte" "potentialVotes" "byte" } "vote_passed" { "details" "string" "param1" "string" "team" "byte" } "vote_failed" { "team" "byte" } "vote_cast" { "vote_option" "byte" // which option the player voted on "team" "short" "entityid" "long" // entity id of the voter } "vote_options" { "count" "byte" // Number of options - up to MAX_VOTE_OPTIONS "option1" "string" "option2" "string" "option3" "string" "option4" "string" "option5" "string" } ////////////////////////////////////////////////////////////////////// // Replay events ////////////////////////////////////////////////////////////////////// "replay_saved" { } "entered_performance_mode" { } "browse_replays" { } "replay_youtube_stats" { "views" "long" "likes" "long" "favorited" "long" } ////////////////////////////////////////////////////////////////////// // Economy events ////////////////////////////////////////////////////////////////////// "inventory_updated" { } "cart_updated" { } "store_pricesheet_updated" { } "gc_connected" { } "item_schema_initialized" { } ////////////////////////////////////////////////////////////////////// // HLTV specific events ////////////////////////////////////////////////////////////////////// "hltv_status" // general HLTV status { "clients" "long" // number of HLTV spectators "slots" "long" // number of HLTV slots "proxies" "short" // number of HLTV proxies "master" "string" // disptach master IP:port } "hltv_cameraman" // a spectator/player is a cameraman { "index" "short" // camera man entity index } "hltv_rank_camera" // a camera ranking { "index" "byte" // fixed camera index "rank" "float" // ranking, how interesting is this camera view "target" "short" // best/closest target entity } "hltv_rank_entity" // an entity ranking { "index" "short" // entity index "rank" "float" // ranking, how interesting is this entity to view "target" "short" // best/closest target entity } "hltv_fixed" // show from fixed view { "posx" "long" // camera position in world "posy" "long" "posz" "long" "theta" "short" // camera angles "phi" "short" "offset" "short" "fov" "float" "target" "short" // follow this entity or 0 } "hltv_chase" // shot of a single entity { "target1" "short" // primary traget index "target2" "short" // secondary traget index or 0 "distance" "short" // camera distance "theta" "short" // view angle horizontal "phi" "short" // view angle vertical "inertia" "byte" // camera inertia "ineye" "byte" // diretcor suggests to show ineye } "hltv_message" // a HLTV message send by moderators { "text" "string" } "hltv_title" { "text" "string" } "hltv_chat" // a HLTV chat msg send by spectators { "text" "string" } ////////////////////////////////////////////////////////////////////// // replay specific events ////////////////////////////////////////////////////////////////////// "replay_startrecord" // Sent when the server begins recording - only used to display UI { } "replay_sessioninfo" // Sent when the server begins recording, or when a client first connects - only sent once per recording session { "sn" "string" // session name "di" "byte" // dump interval "cb" "long" // current block "st" "long" // session start tick } "replay_endrecord" { } "replay_replaysavailable" { } "replay_servererror" { "error" "string" } ////////////////////////////////////////////////////////////////////// // Server events ////////////////////////////////////////////////////////////////////// "server_spawn" // send once a server starts { "hostname" "string" // public host name "address" "string" // hostame, IP or DNS name "ip" "long" "port" "short" // server port "game" "string" // game dir "mapname" "string" // map name "maxplayers" "long" // max players "os" "string" // WIN32, LINUX "dedicated" "bool" // true if dedicated server "password" "bool" // true if password protected } "server_changelevel_failed" { "levelname" "string" // The level name that failed changelevel } "server_shutdown" // server shut down { "reason" "string" // reason why server was shut down } "server_cvar" // a server console var has changed { "cvarname" "string" // cvar name, eg "mp_roundtime" "cvarvalue" "string" // new cvar value } "server_message" // a generic server message { "text" "string" // the message text } "server_addban" { "name" "string" // player name "userid" "short" // user ID on server "networkid" "string" // player network (i.e steam) id "ip" "string" // IP address "duration" "string" // length of the ban "by" "string" // banned by... "kicked" "bool" // whether the player was also kicked } "server_removeban" { "networkid" "string" // player network (i.e steam) id "ip" "string" // IP address "by" "string" // removed by... } "player_connect" // a new client connected - we should only really have server listeners for this, due to the IP being exposed { "name" "string" // player name "index" "byte" // player slot (entity index-1) "userid" "short" // user ID on server (unique on server) "networkid" "string" // player network (i.e steam) id "address" "string" // ip:port "bot" "short" // is a bot } "player_connect_client" // a new client connected { "name" "string" // player name "index" "byte" // player slot (entity index-1) "userid" "short" // user ID on server (unique on server) "networkid" "string" // player network (i.e steam) id "bot" "short" // is a bot } "player_info" // a player changed his name { "name" "string" // player name "index" "byte" // player slot (entity index-1) "userid" "short" // user ID on server (unique on server) "networkid" "string" // player network (i.e steam) id "bot" "bool" // true if player is a AI bot } "player_disconnect" // a client was disconnected { "userid" "short" // user ID on server "reason" "string" // "self", "kick", "ban", "cheat", "error" "name" "string" // player name "networkid" "string" // player network (i.e steam) id "bot" "short" // is a bot } "player_activate" { "userid" "short" // user ID on server } "player_say" { "userid" "short" // user ID on server "text" "string" // the say text } "client_disconnect" // client side disconnect message { "message" "string" // Why are we disconnecting? This could be a localization token or an English-language string } "client_beginconnect" // client tries to connect to server { "address" "string" // Name we used to connect to the server "ip" "long" "port" "short" // server port "source" "string" // what caused us to attempt this connection? (blank for general command line, "serverbrowser", "quickplay", etc) } "client_connected" // client has completed the challenge / handshake process and is in SIGNONSTATE_CONNECTED { "address" "string" // Name we used to connect to the server "ip" "long" "port" "short" // server port } "client_fullconnect" { "address" "string" // Name we used to connect to the server "ip" "long" "port" "short" // server port } "host_quit" { } ////////////////////////////////////////////////////////////////////// // CStrike events ////////////////////////////////////////////////////////////////////// "player_death" // a game event, name may be 32 characters long { // this extents the original player_death by a new fields "userid" "short" // user ID who died "attacker" "short" // user ID who killed "weapon" "string" // weapon name killer used "headshot" "bool" // singals a headshot "dominated" "short" // did killer dominate victim with this kill "revenge" "short" // did killer get revenge on victim with this kill } "player_hurt" { "userid" "short" // player index who was hurt "attacker" "short" // player index who attacked "health" "byte" // remaining health points "armor" "byte" // remaining armor points "weapon" "string" // weapon name attacker used, if not the world "dmg_health" "byte" // damage done to health "dmg_armor" "byte" // damage done to armor "hitgroup" "byte" // hitgroup that was damaged } "bomb_beginplant" { "userid" "short" // player who is planting the bomb "site" "short" // bombsite index } "bomb_abortplant" { "userid" "short" // player who is planting the bomb "site" "short" // bombsite index } "bomb_planted" { "userid" "short" // player who planted the bomb "site" "short" // bombsite index "posx" "short" // position x "posy" "short" // position y } "bomb_defused" { "userid" "short" // player who defused the bomb "site" "short" // bombsite index } "bomb_exploded" { "userid" "short" // player who planted the bomb "site" "short" // bombsite index } "bomb_dropped" { "userid" "short" // player who dropped the bomb } "bomb_pickup" { "userid" "short" // player who picked up the bomb } "bomb_begindefuse" { "userid" "short" // player who is defusing "haskit" "bool" } "bomb_abortdefuse" { "userid" "short" // player who was defusing } "hostage_follows" { "userid" "short" // player who touched the hostage "hostage" "short" // hostage entity index } "hostage_hurt" { "userid" "short" // player who hurt the hostage "hostage" "short" // hostage entity index } "hostage_killed" { "userid" "short" // player who killed the hostage "hostage" "short" // hostage entity index } "hostage_rescued" { "userid" "short" // player who rescued the hostage "hostage" "short" // hostage entity index "site" "short" // rescue site index } "hostage_stops_following" { "userid" "short" // player who rescued the hostage "hostage" "short" // hostage entity index } "hostage_rescued_all" { } "hostage_call_for_help" { "hostage" "short" // hostage entity index } "vip_escaped" { "userid" "short" // player who was the VIP } "vip_killed" { "userid" "short" // player who was the VIP "attacker" "short" // user ID who killed the VIP } "player_radio" { "userid" "short" "slot" "short" } "bomb_beep" { "entindex" "long" // c4 entity } "weapon_fire" { "userid" "short" "weapon" "string" // weapon name used } "weapon_fire_on_empty" { "userid" "short" "weapon" "string" // weapon name used } "weapon_reload" { "userid" "short" } "weapon_zoom" { "userid" "short" } "item_pickup" { "userid" "short" "item" "string" // either a weapon such as 'tmp' or 'hegrenade', or an item such as 'nvgs' } "grenade_bounce" { "userid" "short" } "hegrenade_detonate" { "userid" "short" "x" "float" "y" "float" "z" "float" } "flashbang_detonate" { "userid" "short" "x" "float" "y" "float" "z" "float" } "smokegrenade_detonate" { "userid" "short" "x" "float" "y" "float" "z" "float" } "bullet_impact" { "userid" "short" "x" "float" "y" "float" "z" "float" } "player_footstep" { "userid" "short" } "player_jump" { "userid" "short" } "player_blind" { "userid" "short" } "player_falldamage" { "userid" "short" "damage" "float" } "door_moving" { "entindex" "long" "userid" "short" } "round_freeze_end" { } "nav_blocked" { "area" "long" "blocked" "bool" } "nav_generate" { } "player_stats_updated" { "forceupload" "bool" } "spec_target_updated" { } "cs_win_panel_round" { "show_timer_defend" "bool" "show_timer_attack" "bool" "timer_time" "short" "final_event" "byte" //define in cs_gamerules.h "funfact_token" "string" "funfact_player" "short" "funfact_data1" "long" "funfact_data2" "long" "funfact_data3" "long" } "cs_win_panel_match" { "t_score" "short" "ct_score" "short" "t_kd" "float" "ct_kd" "float" "t_objectives_done" "short" "ct_objectives_done" "short" "t_money_earned" "long" "ct_money_earned" "long" } "show_freezepanel" { "killer" "short" // entindex of the killer entity } "hide_freezepanel" { } "freezecam_started" { } "player_avenged_teammate" { "avenger_id" "short" "avenged_player_id" "short" } "achievement_earned" { "player" "byte" // entindex of the player "achievement" "short" // achievement ID } "achievement_earned_local" { "achievement" "short" // achievement ID } "match_end_conditions" { "frags" "long" "max_rounds" "long" "win_rounds" "long" "time" "long" } "round_mvp" { "userid" "short" "reason" "short" } "player_decal" { "userid" "short" } "teamplay_round_start" // round restart { "full_reset" "bool" // is this a full reset of the map } "christmas_gift_grab" { "userid" "short" } }