Team Fortress 2/Scripting/Game Events: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
(Distinguished Clientside events based on the SDK 2013 Build of Team Fortress 2)
 
Line 3: Line 3:
{{warning|Some events have parameter 'class' which cannot be accessed with dot syntax, i.e. <code>params.class</code>, as <code>class</code> is a reserved word in Squirrel. Instead, use string indexing like so: <code>params["class"]</code>}}
{{warning|Some events have parameter 'class' which cannot be accessed with dot syntax, i.e. <code>params.class</code>, as <code>class</code> is a reserved word in Squirrel. Instead, use string indexing like so: <code>params["class"]</code>}}
{{tip|To see what events fire during the game, download [https://raw.githubusercontent.com/ficool2/vscript_tf/refs/heads/main/scripts/vscripts/showevents.nut this script] (right click and ''Save Page''), place it into your <code>tf/scripts/vscripts/</code> folder and run <code>script_execute showevents</code> in console.}}
{{tip|To see what events fire during the game, download [https://raw.githubusercontent.com/ficool2/vscript_tf/refs/heads/main/scripts/vscripts/showevents.nut this script] (right click and ''Save Page''), place it into your <code>tf/scripts/vscripts/</code> folder and run <code>script_execute showevents</code> in console.}}
{{todo|Distinguish which events are clientside and/or serverside}}
{{todo|Check which events are shared (if possible?)}}


== achievement_earned ==
== Serverside ==
==== achievement_earned ====
* <b>player</b> <small>(byte)</small> - entindex of the player
* <b>player</b> <small>(byte)</small> - entindex of the player
* <b>achievement</b> <small>(short)</small> - achievement ID
* <b>achievement</b> <small>(short)</small> - achievement ID


== achievement_earned_local ==
=== achievement_event ===
* <b>achievement</b> <small>(short)</small>
 
== achievement_event ==
* <b>achievement_name</b> <small>(string)</small> - non-localized name of achievement
* <b>achievement_name</b> <small>(string)</small> - non-localized name of achievement
* <b>cur_val</b> <small>(short)</small> - # of steps toward achievement
* <b>cur_val</b> <small>(short)</small> - # of steps toward achievement
* <b>max_val</b> <small>(short)</small> - total # of steps in achievement
* <b>max_val</b> <small>(short)</small> - total # of steps in achievement


== achievement_increment ==
=== achievement_increment ===
* <b>achievement_id</b> <small>(long)</small> - ID of achievement that went up
* <b>achievement_id</b> <small>(long)</small> - ID of achievement that went up
* <b>cur_val</b> <small>(short)</small> - # of steps toward achievement
* <b>cur_val</b> <small>(short)</small> - # of steps toward achievement
* <b>max_val</b> <small>(short)</small> - total # of steps in achievement
* <b>max_val</b> <small>(short)</small> - total # of steps in achievement


== air_dash ==
=== ammo_pickup ===
* <b>player</b> <small>(byte)</small>
 
== ammo_pickup ==
* <b>ammo_index</b> <small>(long)</small>
* <b>ammo_index</b> <small>(long)</small>
* <b>amount</b> <small>(long)</small>
* <b>amount</b> <small>(long)</small>
* <b>total</b> <small>(long)</small>
* <b>total</b> <small>(long)</small>


== arena_match_maxstreak ==
=== arena_match_maxstreak ===
* <b>team</b> <small>(byte)</small>
* <b>team</b> <small>(byte)</small>
* <b>streak</b> <small>(byte)</small>
* <b>streak</b> <small>(byte)</small>


== arena_player_notification ==
=== arena_round_start ===
* <b>player</b> <small>(byte)</small>
* <b>message</b> <small>(byte)</small>
 
== arena_round_start ==
called when round is active, players can move
called when round is active, players can move


== arena_win_panel ==
=== arena_win_panel ===
* <b>panel_style</b> <small>(byte)</small> - for client to determine layout
* <b>panel_style</b> <small>(byte)</small> - for client to determine layout
* <b>winning_team</b> <small>(byte)</small>
* <b>winning_team</b> <small>(byte)</small>
Line 83: Line 74:
* <b>player_6_kills</b> <small>(short)</small>
* <b>player_6_kills</b> <small>(short)</small>


== arrow_impact ==
=== arrow_impact ===
* <b>attachedEntity</b> <small>(short)</small>
* <b>attachedEntity</b> <small>(short)</small>
* <b>shooter</b> <small>(short)</small>
* <b>shooter</b> <small>(short)</small>
Line 96: Line 87:
* <b>isCrit</b> <small>(bool)</small>
* <b>isCrit</b> <small>(bool)</small>


== base_player_teleported ==
=== bonus_updated ===
* <b>entindex</b> <small>(short)</small>
 
== bonus_updated ==
* <b>numadvanced</b> <small>(short)</small>
* <b>numadvanced</b> <small>(short)</small>
* <b>numbronze</b> <small>(short)</small>
* <b>numbronze</b> <small>(short)</small>
Line 105: Line 93:
* <b>numgold</b> <small>(short)</small>
* <b>numgold</b> <small>(short)</small>


== break_breakable ==
=== break_breakable ===
* <b>entindex</b> <small>(long)</small>
* <b>entindex</b> <small>(long)</small>
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>
* <b>material</b> <small>(byte)</small> - BREAK_GLASS, BREAK_WOOD, etc
* <b>material</b> <small>(byte)</small> - BREAK_GLASS, BREAK_WOOD, etc


== break_prop ==
=== break_prop ===
* <b>entindex</b> <small>(long)</small>
* <b>entindex</b> <small>(long)</small>
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>


== browse_replays ==
=== building_healed ===
 
== building_healed ==
* <b>building</b> <small>(short)</small>
* <b>building</b> <small>(short)</small>
* <b>healer</b> <small>(short)</small>
* <b>healer</b> <small>(short)</small>
* <b>amount</b> <small>(short)</small>
* <b>amount</b> <small>(short)</small>


== building_info_changed ==
=== christmas_gift_grab ===
* <b>building_type</b> <small>(byte)</small>
* <b>object_mode</b> <small>(byte)</small>
* <b>remove</b> <small>(byte)</small>
 
== cart_updated ==
 
== christmas_gift_grab ==
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>


== cl_drawline ==
=== cl_drawline ===
* <b>player</b> <small>(byte)</small> - index of the player
* <b>player</b> <small>(byte)</small> - index of the player
* <b>panel</b> <small>(byte)</small> - type of panel
* <b>panel</b> <small>(byte)</small> - type of panel
Line 138: Line 117:
* <b>y</b> <small>(float)</small>
* <b>y</b> <small>(float)</small>


== client_beginconnect ==
=== client_beginconnect ===
client tries to connect to server
client tries to connect to server
* <b>address</b> <small>(string)</small> - Name we used to connect to the server
* <b>address</b> <small>(string)</small> - Name we used to connect to the server
Line 145: Line 124:
* <b>source</b> <small>(string)</small> - what caused us to attempt this connection?  (blank for general command line, "serverbrowser", "quickplay", etc)
* <b>source</b> <small>(string)</small> - what caused us to attempt this connection?  (blank for general command line, "serverbrowser", "quickplay", etc)


== client_connected ==
=== client_connected ===
client has completed the challenge / handshake process and is in SIGNONSTATE_CONNECTED
client has completed the challenge / handshake process and is in SIGNONSTATE_CONNECTED
* <b>address</b> <small>(string)</small> - Name we used to connect to the server
* <b>address</b> <small>(string)</small> - Name we used to connect to the server
Line 151: Line 130:
* <b>port</b> <small>(short)</small> - server port
* <b>port</b> <small>(short)</small> - server port


== client_disconnect ==
=== client_disconnect ===
client side disconnect message
client side disconnect message
* <b>message</b> <small>(string)</small> - Why are we disconnecting?  This could be a localization token or an English-language string
* <b>message</b> <small>(string)</small> - Why are we disconnecting?  This could be a localization token or an English-language string


== client_fullconnect ==
=== client_fullconnect ===
* <b>address</b> <small>(string)</small> - Name we used to connect to the server
* <b>address</b> <small>(string)</small> - Name we used to connect to the server
* <b>ip</b> <small>(long)</small>
* <b>ip</b> <small>(long)</small>
* <b>port</b> <small>(short)</small> - server port
* <b>port</b> <small>(short)</small> - server port


== competitive_stats_update ==
=== competitive_stats_update ===
* <b>index</b> <small>(short)</small> - entindex of the player
* <b>index</b> <small>(short)</small> - entindex of the player
* <b>kills_rank</b> <small>(byte)</small> - num std deviations above
* <b>kills_rank</b> <small>(byte)</small> - num std deviations above
Line 168: Line 147:
* <b>support_rank</b> <small>(byte)</small>
* <b>support_rank</b> <small>(byte)</small>


== competitive_victory ==
=== competitive_victory ===


== conga_kill ==
=== conga_kill ===
* <b>index</b> <small>(short)</small> - entindex of the player
* <b>index</b> <small>(short)</small> - entindex of the player


== controlpoint_endtouch ==
=== controlpoint_endtouch ===
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>area</b> <small>(short)</small> - index of the control point area
* <b>area</b> <small>(short)</small> - index of the control point area


== controlpoint_fake_capture ==
=== controlpoint_fake_capture ===
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>int_data</b> <small>(short)</small>
* <b>int_data</b> <small>(short)</small>


== controlpoint_fake_capture_mult ==
=== controlpoint_fake_capture_mult ===
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>int_data</b> <small>(short)</small>
* <b>int_data</b> <small>(short)</small>


== controlpoint_initialized ==
=== controlpoint_pulse_element ===
 
== controlpoint_pulse_element ==
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>player</b> <small>(short)</small> - entindex of the player


== controlpoint_starttouch ==
=== controlpoint_starttouch ===
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>area</b> <small>(short)</small> - index of the control point area
* <b>area</b> <small>(short)</small> - index of the control point area


== controlpoint_timer_updated ==
=== controlpoint_updatecapping ===
* <b>index</b> <small>(short)</small> - index of the cap being updated
* <b>time</b> <small>(float)</small> - time
 
== controlpoint_unlock_updated ==
* <b>index</b> <small>(short)</small> - index of the cap being updated
* <b>time</b> <small>(float)</small> - time
 
== controlpoint_updatecapping ==
* <b>index</b> <small>(short)</small> - index of the cap being updated
* <b>index</b> <small>(short)</small> - index of the cap being updated


== controlpoint_updateimages ==
=== controlpoint_updateimages ===
* <b>index</b> <small>(short)</small> - index of the cap being updated
* <b>index</b> <small>(short)</small> - index of the cap being updated


== controlpoint_updatelayout ==
=== controlpoint_updatelayout ===
* <b>index</b> <small>(short)</small> - index of the cap being updated
* <b>index</b> <small>(short)</small> - index of the cap being updated


== controlpoint_updateowner ==
=== controlpoint_updateowner ===
* <b>index</b> <small>(short)</small> - index of the cap being updated
* <b>index</b> <small>(short)</small> - index of the cap being updated


== cross_spectral_bridge ==
=== cross_spectral_bridge ===
* <b>player</b> <small>(short)</small> - userid of the player that crossed
* <b>player</b> <small>(short)</small> - userid of the player that crossed


== crossbow_heal ==
=== crossbow_heal ===
* <b>healer</b> <small>(byte)</small> - userid of the Healer
* <b>healer</b> <small>(byte)</small> - userid of the Healer
* <b>target</b> <small>(byte)</small> - userid of the player that got hit
* <b>target</b> <small>(byte)</small> - userid of the player that got hit
* <b>amount</b> <small>(short)</small> - amount that was healed
* <b>amount</b> <small>(short)</small> - amount that was healed


== ctf_flag_captured ==
=== ctf_flag_captured ===
* <b>capping_team</b> <small>(short)</small>
* <b>capping_team</b> <small>(short)</small>
* <b>capping_team_score</b> <small>(short)</small>
* <b>capping_team_score</b> <small>(short)</small>


== damage_mitigated ==
=== damage_mitigated ===
* <b>mitigator</b> <small>(byte)</small> - userid of the player who provided the mitigation
* <b>mitigator</b> <small>(byte)</small> - userid of the player who provided the mitigation
* <b>damaged</b> <small>(byte)</small> - userid of the player who took the damage
* <b>damaged</b> <small>(byte)</small> - userid of the player who took the damage
Line 232: Line 201:
* <b>itemdefindex</b> <small>(short)</small> - defindex of the item that provided the mitigation
* <b>itemdefindex</b> <small>(short)</small> - defindex of the item that provided the mitigation


== damage_prevented ==
=== damage_prevented ===
* <b>preventor</b> <small>(short)</small> - Who prevented the damage
* <b>preventor</b> <small>(short)</small> - Who prevented the damage
* <b>victim</b> <small>(short)</small> - Who took the damage that was prevented
* <b>victim</b> <small>(short)</small> - Who took the damage that was prevented
Line 238: Line 207:
* <b>condition</b> <small>(short)</small> - Which condition did the preventing
* <b>condition</b> <small>(short)</small> - Which condition did the preventing


== damage_resisted ==
=== damage_resisted ===
* <b>entindex</b> <small>(byte)</small>
* <b>entindex</b> <small>(byte)</small>


== deadringer_cheat_death ==
=== deadringer_cheat_death ===
* <b>spy</b> <small>(byte)</small> - userid of the Spy that cheat the death
* <b>spy</b> <small>(byte)</small> - userid of the Spy that cheat the death
* <b>attacker</b> <small>(byte)</small> - userid of the player that caused the cheat death to happen
* <b>attacker</b> <small>(byte)</small> - userid of the player that caused the cheat death to happen


== demoman_det_stickies ==
=== demoman_det_stickies ===
* <b>player</b> <small>(short)</small> - entindex of the detonating player
* <b>player</b> <small>(short)</small> - entindex of the detonating player


== deploy_buff_banner ==
=== deploy_buff_banner ===
* <b>buff_type</b> <small>(byte)</small> - type of buff (skin index)
* <b>buff_type</b> <small>(byte)</small> - type of buff (skin index)
* <b>buff_owner</b> <small>(short)</small> - user ID of the person who gets the banner
* <b>buff_owner</b> <small>(short)</small> - user ID of the person who gets the banner


== doomsday_rocket_open ==
=== doomsday_rocket_open ===
* <b>team</b> <small>(byte)</small> - which team opened the rocket
* <b>team</b> <small>(byte)</small> - which team opened the rocket


== duck_xp_level_up ==
=== duel_status ===
* <b>level</b> <small>(short)</small> - leveled up to what
 
== duel_status ==
* <b>killer</b> <small>(short)</small>
* <b>killer</b> <small>(short)</small>
* <b>score_type</b> <small>(short)</small>
* <b>score_type</b> <small>(short)</small>
Line 266: Line 232:
* <b>target_score</b> <small>(short)</small>
* <b>target_score</b> <small>(short)</small>


== econ_inventory_connected ==
=== enter_vehicle ===
 
== enter_vehicle ==
* <b>vehicle</b> <small>(long)</small> - entindex of the vehicle
* <b>vehicle</b> <small>(long)</small> - entindex of the vehicle


== entered_performance_mode ==
=== entity_killed ===
 
== entity_killed ==
* <b>entindex_killed</b> <small>(long)</small>
* <b>entindex_killed</b> <small>(long)</small>
* <b>entindex_attacker</b> <small>(long)</small>
* <b>entindex_attacker</b> <small>(long)</small>
Line 279: Line 241:
* <b>damagebits</b> <small>(long)</small>
* <b>damagebits</b> <small>(long)</small>


== environmental_death ==
=== environmental_death ===
* <b>killer</b> <small>(byte)</small> - index of the killer
* <b>killer</b> <small>(byte)</small> - index of the killer
* <b>victim</b> <small>(byte)</small> - index of the victim
* <b>victim</b> <small>(byte)</small> - index of the victim


== escape_hell ==
=== escape_hell ===
* <b>player</b> <small>(short)</small> - userid of the player that escaped
* <b>player</b> <small>(short)</small> - userid of the player that escaped


== escaped_loot_island ==
=== escaped_loot_island ===
* <b>player</b> <small>(short)</small> - userid of the escaping player
* <b>player</b> <small>(short)</small> - userid of the escaping player


== escort_progress ==
=== eyeball_boss_escape_imminent ===
* <b>team</b> <small>(byte)</small> - which team
* <b>progress</b> <small>(float)</small>
* <b>reset</b> <small>(bool)</small>
 
== escort_recede ==
* <b>team</b> <small>(byte)</small> - which team
* <b>recedetime</b> <small>(float)</small>
 
== escort_speed ==
* <b>team</b> <small>(byte)</small> - which team
* <b>speed</b> <small>(byte)</small>
* <b>players</b> <small>(byte)</small>
 
== eyeball_boss_escape_imminent ==
* <b>level</b> <small>(short)</small>
* <b>level</b> <small>(short)</small>
* <b>time_remaining</b> <small>(byte)</small>
* <b>time_remaining</b> <small>(byte)</small>


== eyeball_boss_escaped ==
=== eyeball_boss_escaped ===
* <b>level</b> <small>(short)</small>
* <b>level</b> <small>(short)</small>


== eyeball_boss_killed ==
=== eyeball_boss_killed ===
* <b>level</b> <small>(short)</small>
* <b>level</b> <small>(short)</small>


== eyeball_boss_killer ==
=== eyeball_boss_killer ===
* <b>level</b> <small>(short)</small>
* <b>level</b> <small>(short)</small>
* <b>player_entindex</b> <small>(byte)</small>
* <b>player_entindex</b> <small>(byte)</small>


== eyeball_boss_stunned ==
=== eyeball_boss_stunned ===
* <b>level</b> <small>(short)</small>
* <b>level</b> <small>(short)</small>
* <b>player_entindex</b> <small>(byte)</small>
* <b>player_entindex</b> <small>(byte)</small>


== eyeball_boss_summoned ==
=== eyeball_boss_summoned ===
* <b>level</b> <small>(short)</small>
* <b>level</b> <small>(short)</small>


== fish_notice ==
=== fish_notice ===
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>victim_entindex</b> <small>(long)</small>
* <b>victim_entindex</b> <small>(long)</small>
Line 340: Line 288:
* <b>assister_fallback</b> <small>(string)</small> - contains a string to use if "assister" is -1
* <b>assister_fallback</b> <small>(string)</small> - contains a string to use if "assister" is -1


== fish_notice__arm ==
=== fish_notice__arm ===
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>victim_entindex</b> <small>(long)</small>
* <b>victim_entindex</b> <small>(long)</small>
Line 356: Line 304:
* <b>assister_fallback</b> <small>(string)</small> - contains a string to use if "assister" is -1
* <b>assister_fallback</b> <small>(string)</small> - contains a string to use if "assister" is -1


== flag_carried_in_detection_zone ==
=== flag_carried_in_detection_zone ===
 
== flagstatus_update ==
* <b>userid</b> <small>(short)</small> - user ID of the player who now has the flag
* <b>entindex</b> <small>(long)</small> - ent index of flag


== flare_ignite_npc ==
=== flare_ignite_npc ===
* <b>entindex</b> <small>(long)</small> - entity ignited
* <b>entindex</b> <small>(long)</small> - entity ignited


== freezecam_started ==


== game_end ==
=== game_end ===
a game ended
a game ended
* <b>winner</b> <small>(byte)</small> - winner team/user id
* <b>winner</b> <small>(byte)</small> - winner team/user id


== game_init ==
=== game_init ===
sent when a new game is started
sent when a new game is started


== game_message ==
=== game_message ===
a message send by game logic to everyone
a message send by game logic to everyone
* <b>target</b> <small>(byte)</small> - 0 = console, 1 = HUD
* <b>target</b> <small>(byte)</small> - 0 = console, 1 = HUD
* <b>text</b> <small>(string)</small> - the message text
* <b>text</b> <small>(string)</small> - the message text


== game_newmap ==
=== game_start ===
send when new map is completely loaded
* <b>mapname</b> <small>(string)</small> - map name
 
== game_start ==
a new game starts
a new game starts
* <b>roundslimit</b> <small>(long)</small> - max round
* <b>roundslimit</b> <small>(long)</small> - max round
Line 390: Line 329:
* <b>objective</b> <small>(string)</small> - round objective
* <b>objective</b> <small>(string)</small> - round objective


== gameui_activate ==
=== gameui_activate ===
 
== gameui_activated ==
 
== gameui_hidden ==
 
== gameui_hide ==


== gc_lost_session ==
=== gameui_hide ===


== gc_new_session ==
=== halloween_boss_killed ===
 
== halloween_boss_killed ==
* <b>boss</b> <small>(short)</small> - 1=HHH 2=Monoculus 3=Merasmus
* <b>boss</b> <small>(short)</small> - 1=HHH 2=Monoculus 3=Merasmus
* <b>killer</b> <small>(short)</small> - userid of the killing player
* <b>killer</b> <small>(short)</small> - userid of the killing player


== halloween_duck_collected ==
=== halloween_duck_collected ===
* <b>collector</b> <small>(short)</small> - userid of the collecting player
* <b>collector</b> <small>(short)</small> - userid of the collecting player


== halloween_pumpkin_grab ==
=== halloween_pumpkin_grab ===
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>


== halloween_skeleton_killed ==
=== halloween_skeleton_killed ===
* <b>player</b> <small>(short)</small> - userid of the player that killed the skeleton
* <b>player</b> <small>(short)</small> - userid of the player that killed the skeleton


== halloween_soul_collected ==
=== halloween_soul_collected ===
* <b>intended_target</b> <small>(byte)</small> - userid of the intended target
* <b>intended_target</b> <small>(byte)</small> - userid of the intended target
* <b>collecting_player</b> <small>(byte)</small> - userid of the player who picked up the soul
* <b>collecting_player</b> <small>(byte)</small> - userid of the player who picked up the soul
* <b>soul_count</b> <small>(byte)</small> - number of souls collected (gift boxes)
* <b>soul_count</b> <small>(byte)</small> - number of souls collected (gift boxes)


== helicopter_grenade_punt_miss ==
=== helicopter_grenade_punt_miss ===


== hide_annotation ==
=== host_quit ===
* <b>id</b> <small>(long)</small>
 
== hide_freezepanel ==
 
== hltv_changed_mode ==
* <b>oldmode</b> <small>(short)</small>
* <b>newmode</b> <small>(short)</small>
* <b>obs_target</b> <small>(short)</small>


== hltv_changed_target ==
=== intro_finish ===
* <b>mode</b> <small>(short)</small>
* <b>old_target</b> <small>(short)</small>
* <b>obs_target</b> <small>(short)</small>
 
== host_quit ==
 
== intro_finish ==
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>player</b> <small>(short)</small> - entindex of the player


== intro_nextcamera ==
=== intro_nextcamera ===
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>player</b> <small>(short)</small> - entindex of the player


== inventory_updated ==
=== item_found ===
 
== item_found ==
* <b>player</b> <small>(byte)</small> - entindex of the player
* <b>player</b> <small>(byte)</small> - entindex of the player
* <b>quality</b> <small>(byte)</small> - quality of the item
* <b>quality</b> <small>(byte)</small> - quality of the item
Line 456: Line 370:
* <b>wear</b> <small>(float)</small>
* <b>wear</b> <small>(float)</small>


== item_pickup ==
=== item_pickup ===
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>
* <b>item</b> <small>(string)</small>
* <b>item</b> <small>(string)</small>


== item_schema_initialized ==
=== item_schema_initialized ===


== items_acknowledged ==
=== kill_in_hell ===
* <b>blocker</b> <small>(short)</small> - entindex of the blocker
* <b>victim</b> <small>(short)</small> - entindex of the victim
 
== kill_in_hell ==
* <b>killer</b> <small>(short)</small> - userid of the killer
* <b>killer</b> <small>(short)</small> - userid of the killer
* <b>victim</b> <small>(short)</small> - userid of the victim
* <b>victim</b> <small>(short)</small> - userid of the victim


== kill_refills_meter ==
=== kill_refills_meter ===
* <b>index</b> <small>(short)</small> - entindex of the player
* <b>index</b> <small>(short)</small> - entindex of the player


== killed_capping_player ==
=== killed_capping_player ===
* <b>cp</b> <small>(byte)</small> - index of the point
* <b>cp</b> <small>(byte)</small> - index of the point
* <b>killer</b> <small>(byte)</small> - index of the killer
* <b>killer</b> <small>(byte)</small> - index of the killer
Line 479: Line 389:
* <b>assister</b> <small>(byte)</small> - index of the assister
* <b>assister</b> <small>(byte)</small> - index of the assister


== landed ==
=== leave_vehicle ===
* <b>player</b> <small>(byte)</small>
 
== leave_vehicle ==
* <b>vehicle</b> <small>(long)</small> - entindex of the vehicle
* <b>vehicle</b> <small>(long)</small> - entindex of the vehicle


== lobby_updated ==
=== medic_death ===
 
== localplayer_becameobserver ==
 
== localplayer_builtobject ==
* <b>object</b> <small>(short)</small> - type of object built
* <b>object_mode</b> <small>(short)</small> - used for teleporters: entrance vs. exit
* <b>index</b> <small>(short)</small> - index of the object
 
== localplayer_changeclass ==
 
== localplayer_changedisguise ==
* <b>disguised</b> <small>(bool)</small>
 
== localplayer_changeteam ==
 
== localplayer_chargeready ==
local player has full medic charge
 
== localplayer_healed ==
* <b>amount</b> <small>(short)</small>
 
== localplayer_pickup_weapon ==
 
== localplayer_respawn ==
 
== localplayer_score_changed ==
* <b>score</b> <small>(short)</small>
 
== localplayer_winddown ==
local player minigun winddown
 
== mainmenu_stabilized ==
* <b>attacker</b> <small>(short)</small>
* <b>victim</b> <small>(short)</small>
* <b>assister</b> <small>(short)</small>
 
== match_invites_updated ==
 
== medic_death ==
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>attacker</b> <small>(short)</small> - user ID who killed
* <b>attacker</b> <small>(short)</small> - user ID who killed
Line 530: Line 398:
* <b>charged</b> <small>(bool)</small> - had a full ubercharge?
* <b>charged</b> <small>(bool)</small> - had a full ubercharge?


== medic_defended ==
=== medic_defended ===
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>
* <b>medic</b> <small>(short)</small>
* <b>medic</b> <small>(short)</small>


== medigun_shield_blocked_damage ==
=== medigun_shield_blocked_damage ===
* <b>userid</b> <small>(short)</small> - user ID of the player using the shield
* <b>userid</b> <small>(short)</small> - user ID of the player using the shield
* <b>damage</b> <small>(float)</small> - damage that was blocked
* <b>damage</b> <small>(float)</small> - damage that was blocked


== merasmus_escape_warning ==
=== merasmus_escape_warning ===
* <b>level</b> <small>(short)</small>
* <b>level</b> <small>(short)</small>
* <b>time_remaining</b> <small>(byte)</small>
* <b>time_remaining</b> <small>(byte)</small>


== merasmus_escaped ==
=== merasmus_escaped ===
* <b>level</b> <small>(short)</small>
* <b>level</b> <small>(short)</small>


== merasmus_killed ==
=== merasmus_killed ===
* <b>level</b> <small>(short)</small>
* <b>level</b> <small>(short)</small>


== merasmus_prop_found ==
=== merasmus_prop_found ===
* <b>player</b> <small>(short)</small> - userid of the player that found the prop Merasmus was hiding in
* <b>player</b> <small>(short)</small> - userid of the player that found the prop Merasmus was hiding in


== merasmus_stunned ==
=== merasmus_stunned ===
* <b>player</b> <small>(short)</small> - userid of the stunning player
* <b>player</b> <small>(short)</small> - userid of the stunning player


== merasmus_summoned ==
=== merasmus_summoned ===
* <b>level</b> <small>(short)</small>
* <b>level</b> <small>(short)</small>


== minigame_win ==
=== minigame_win ===
* <b>team</b> <small>(byte)</small> - which team won the minigame
* <b>team</b> <small>(byte)</small> - which team won the minigame
* <b>type</b> <small>(byte)</small> - what type of minigame was won
* <b>type</b> <small>(byte)</small> - what type of minigame was won


== minigame_won ==
=== minigame_won ===
* <b>player</b> <small>(short)</small> - userid of the winning player
* <b>player</b> <small>(short)</small> - userid of the winning player
* <b>game</b> <small>(short)</small> - index of the game
* <b>game</b> <small>(short)</small> - index of the game


== mvm_adv_wave_complete_no_gates ==
=== mvm_adv_wave_complete_no_gates ===
* <b>index</b> <small>(short)</small> - wave index
* <b>index</b> <small>(short)</small> - wave index


== mvm_adv_wave_killed_stun_radio ==
=== mvm_adv_wave_killed_stun_radio ===


== mvm_begin_wave ==
=== mvm_begin_wave ===
* <b>wave_index</b> <small>(short)</small>
* <b>wave_index</b> <small>(short)</small>
* <b>max_waves</b> <small>(short)</small>
* <b>max_waves</b> <small>(short)</small>
* <b>advanced</b> <small>(short)</small>
* <b>advanced</b> <small>(short)</small>


== mvm_bomb_alarm_triggered ==
=== mvm_bomb_alarm_triggered ===


== mvm_bomb_carrier_killed ==
=== mvm_bomb_carrier_killed ===
* <b>level</b> <small>(short)</small> - upgrade level of the carrier
* <b>level</b> <small>(short)</small> - upgrade level of the carrier


== mvm_bomb_deploy_reset_by_player ==
=== mvm_bomb_deploy_reset_by_player ===
* <b>player</b> <small>(short)</small>
* <b>player</b> <small>(short)</small>


== mvm_bomb_reset_by_player ==
=== mvm_bomb_reset_by_player ===
* <b>player</b> <small>(short)</small>
* <b>player</b> <small>(short)</small>


== mvm_creditbonus_all ==
=== mvm_creditbonus_all ===


== mvm_creditbonus_all_advanced ==
=== mvm_creditbonus_all_advanced ===


== mvm_creditbonus_wave ==
=== mvm_creditbonus_wave ===


== mvm_kill_robot_delivering_bomb ==
=== mvm_kill_robot_delivering_bomb ===
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>player</b> <small>(short)</small> - entindex of the player


== mvm_mannhattan_pit ==
=== mvm_mannhattan_pit ===


== mvm_medic_powerup_shared ==
=== mvm_medic_powerup_shared ===
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>player</b> <small>(short)</small> - entindex of the player


== mvm_mission_complete ==
=== mvm_mission_complete ===
* <b>mission</b> <small>(string)</small>
* <b>mission</b> <small>(string)</small>


== mvm_mission_update ==
=== mvm_mission_update ===
* <b>class</b> <small>(short)</small>
* <b>class</b> <small>(short)</small>
* <b>count</b> <small>(short)</small>
* <b>count</b> <small>(short)</small>


== mvm_pickup_currency ==
=== mvm_pickup_currency ===
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>currency</b> <small>(short)</small>
* <b>currency</b> <small>(short)</small>


== mvm_quick_sentry_upgrade ==
=== mvm_quick_sentry_upgrade ===
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>player</b> <small>(short)</small> - entindex of the player


== mvm_reset_stats ==
=== mvm_reset_stats ===


== mvm_scout_marked_for_death ==
=== mvm_scout_marked_for_death ===
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>player</b> <small>(short)</small> - entindex of the player


== mvm_sentrybuster_detonate ==
=== mvm_sentrybuster_detonate ===
* <b>player</b> <small>(short)</small> - entindex of the target player
* <b>player</b> <small>(short)</small> - entindex of the target player
* <b>det_x</b> <small>(float)</small> - origin of the sentry buster
* <b>det_x</b> <small>(float)</small> - origin of the sentry buster
Line 625: Line 493:
* <b>det_z</b> <small>(float)</small>
* <b>det_z</b> <small>(float)</small>


== mvm_sentrybuster_killed ==
=== mvm_sentrybuster_killed ===
* <b>sentry_buster</b> <small>(short)</small> - entindex
* <b>sentry_buster</b> <small>(short)</small> - entindex


== mvm_sniper_headshot_currency ==
=== mvm_sniper_headshot_currency ===
* <b>userid</b> <small>(short)</small> - user ID of the player
* <b>userid</b> <small>(short)</small> - user ID of the player
* <b>currency</b> <small>(short)</small> - currency collected
* <b>currency</b> <small>(short)</small> - currency collected


== mvm_tank_destroyed_by_players ==
=== mvm_tank_destroyed_by_players ===


== mvm_wave_complete ==
=== mvm_wave_complete ===
* <b>advanced</b> <small>(bool)</small> - is this an advanced popfile
* <b>advanced</b> <small>(bool)</small> - is this an advanced popfile


== mvm_wave_failed ==
=== mvm_wave_failed ===


== nav_blocked ==
=== nav_blocked ===
* <b>area</b> <small>(long)</small>
* <b>area</b> <small>(long)</small>
* <b>blocked</b> <small>(bool)</small>
* <b>blocked</b> <small>(bool)</small>


== npc_hurt ==
=== npc_hurt ===
Fired when an Engineer building ([[obj_sentrygun]], [[obj_dispenser]], [[obj_teleporter]]), [[base_boss]], MvM tank ([[tank_boss]]) or Halloween enemy ([[headless_hatman]], [[eyeball_boss]], [[merasmus]], [[tf_zombie]]) is damaged.
Fired when an Engineer building ([[obj_sentrygun]], [[obj_dispenser]], [[obj_teleporter]]), [[base_boss]], MvM tank ([[tank_boss]]) or Halloween enemy ([[headless_hatman]], [[eyeball_boss]], [[merasmus]], [[tf_zombie]]) is damaged.
* <b>entindex</b> <small>(short)</small>
* <b>entindex</b> <small>(short)</small>
Line 653: Line 521:
* <b>boss</b> <small>(short)</small> - 1=HHH 2=Monoculus 3=Merasmus
* <b>boss</b> <small>(short)</small> - 1=HHH 2=Monoculus 3=Merasmus


== num_cappers_changed ==
=== num_cappers_changed ===
* <b>index</b> <small>(short)</small> - index of the trigger
* <b>index</b> <small>(short)</small> - index of the trigger
* <b>count</b> <small>(byte)</small> - number of cappers (-1 for blocked)
* <b>count</b> <small>(byte)</small> - number of cappers (-1 for blocked)


== object_deflected ==
=== object_deflected ===
* <b>userid</b> <small>(short)</small> - player who deflected the object
* <b>userid</b> <small>(short)</small> - player who deflected the object
* <b>ownerid</b> <small>(short)</small> - owner of the object
* <b>ownerid</b> <small>(short)</small> - owner of the object
Line 663: Line 531:
* <b>object_entindex</b> <small>(short)</small> - entindex of the object that got deflected
* <b>object_entindex</b> <small>(short)</small> - entindex of the object that got deflected


== object_destroyed ==
=== object_destroyed ===
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>attacker</b> <small>(short)</small> - user ID who killed
* <b>attacker</b> <small>(short)</small> - user ID who killed
Line 674: Line 542:
* <b>team</b> <small>(short)</small> - building's team
* <b>team</b> <small>(short)</small> - building's team


== object_detonated ==
=== object_detonated ===
* <b>userid</b> <small>(short)</small> - user ID of the object owner
* <b>userid</b> <small>(short)</small> - user ID of the object owner
* <b>objecttype</b> <small>(short)</small> - type of object removed
* <b>objecttype</b> <small>(short)</small> - type of object removed
* <b>index</b> <small>(short)</small> - index of the object removed
* <b>index</b> <small>(short)</small> - index of the object removed


== object_removed ==
=== object_removed ===
* <b>userid</b> <small>(short)</small> - user ID of the object owner
* <b>userid</b> <small>(short)</small> - user ID of the object owner
* <b>objecttype</b> <small>(short)</small> - type of object removed
* <b>objecttype</b> <small>(short)</small> - type of object removed
* <b>index</b> <small>(short)</small> - index of the object removed
* <b>index</b> <small>(short)</small> - index of the object removed


== overtime_nag ==
=== overtime_nag ===


== parachute_deploy ==
=== pass_ball_blocked ===
* <b>index</b> <small>(short)</small> - entindex of the player
 
== parachute_holster ==
* <b>index</b> <small>(short)</small> - entindex of the player
 
== party_chat ==
* <b>steamid</b> <small>(string)</small> - steamID (64-bit value converted to string) of user who said or did the thing.  May be
* <b>text</b> <small>(string)</small> - The message.  May have different meaning for some types
* <b>type</b> <small>(short)</small> - What sort of message?  ETFPartyChatType enum
 
== party_criteria_changed ==
 
== party_invites_changed ==
 
== party_member_join ==
* <b>steamid</b> <small>(string)</small> - steamID (64-bit value converted to string) of joined
 
== party_member_leave ==
* <b>steamid</b> <small>(string)</small> - steamID (64-bit value converted to string) of leaver
 
== party_pref_changed ==
 
== party_queue_state_changed ==
* <b>matchgroup</b> <small>(short)</small> - ETFMatchGroup
 
== party_updated ==
 
== pass_ball_blocked ==
* <b>owner</b> <small>(short)</small>
* <b>owner</b> <small>(short)</small>
* <b>blocker</b> <small>(short)</small>
* <b>blocker</b> <small>(short)</small>


== pass_ball_stolen ==
=== pass_ball_stolen ===
* <b>victim</b> <small>(short)</small>
* <b>victim</b> <small>(short)</small>
* <b>attacker</b> <small>(short)</small>
* <b>attacker</b> <small>(short)</small>


== pass_free ==
=== pass_free ===
* <b>owner</b> <small>(short)</small>
* <b>owner</b> <small>(short)</small>
* <b>attacker</b> <small>(short)</small>
* <b>attacker</b> <small>(short)</small>


== pass_get ==
=== pass_get ===
* <b>owner</b> <small>(short)</small>
* <b>owner</b> <small>(short)</small>
* <b>team</b> <small>(short)</small>
* <b>team</b> <small>(short)</small>


== pass_pass_caught ==
=== pass_pass_caught ===
* <b>passer</b> <small>(short)</small>
* <b>passer</b> <small>(short)</small>
* <b>catcher</b> <small>(short)</small>
* <b>catcher</b> <small>(short)</small>
Line 736: Line 576:
* <b>duration</b> <small>(float)</small>
* <b>duration</b> <small>(float)</small>


== pass_score ==
=== pass_score ===
* <b>scorer</b> <small>(short)</small>
* <b>scorer</b> <small>(short)</small>
* <b>assister</b> <small>(short)</small>
* <b>assister</b> <small>(short)</small>
* <b>points</b> <small>(byte)</small>
* <b>points</b> <small>(byte)</small>


== path_track_passed ==
=== path_track_passed ===
* <b>index</b> <small>(short)</small> - [[CHandle|entity handle]] of the node being passed (not the index!)
* <b>index</b> <small>(short)</small> - [[CHandle|entity handle]] of the node being passed (not the index!)
{{tip|To retrieve the entity index and therefore the script handle: <code>EntIndexToHScript(params.index & (Constants.Server.MAX_EDICTS - 1))</code>}}
{{tip|To retrieve the entity index and therefore the script handle: <code>EntIndexToHScript(params.index & (Constants.Server.MAX_EDICTS - 1))</code>}}


== payload_pushed ==
=== payload_pushed ===
* <b>pusher</b> <small>(byte)</small> - userid of the player who pushed
* <b>pusher</b> <small>(byte)</small> - userid of the player who pushed
* <b>distance</b> <small>(short)</small> - how far they pushed
* <b>distance</b> <small>(short)</small> - how far they pushed


== physgun_pickup ==
=== physgun_pickup ===
* <b>entindex</b> <small>(long)</small> - entity picked up
* <b>entindex</b> <small>(long)</small> - entity picked up


== player_abandoned_match ==
=== player_abandoned_match ===
* <b>game_over</b> <small>(bool)</small>
* <b>game_over</b> <small>(bool)</small>


== player_account_changed ==
=== player_activate ===
* <b>old_value</b> <small>(short)</small>
* <b>new_value</b> <small>(short)</small>
 
== player_activate ==
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>userid</b> <small>(short)</small> - user ID on server


== player_askedforball ==
=== player_askedforball ===
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>


== player_bonuspoints ==
=== player_buff ===
* <b>points</b> <small>(short)</small>
* <b>player_entindex</b> <small>(short)</small>
* <b>source_entindex</b> <small>(short)</small>
 
== player_buff ==
* <b>userid</b> <small>(short)</small> - user ID of the player the buff is being applied to
* <b>userid</b> <small>(short)</small> - user ID of the player the buff is being applied to
* <b>buff_owner</b> <small>(short)</small> - user ID of the player with the banner
* <b>buff_owner</b> <small>(short)</small> - user ID of the player with the banner
* <b>buff_type</b> <small>(byte)</small> - type of buff
* <b>buff_type</b> <small>(byte)</small> - type of buff


== player_builtobject ==
=== player_builtobject ===
* <b>userid</b> <small>(short)</small> - user ID of the builder
* <b>userid</b> <small>(short)</small> - user ID of the builder
* <b>object</b> <small>(short)</small> - type of object built
* <b>object</b> <small>(short)</small> - type of object built
* <b>index</b> <small>(short)</small> - index of the object
* <b>index</b> <small>(short)</small> - index of the object


== player_buyback ==
=== player_buyback ===
* <b>player</b> <small>(short)</small>
* <b>player</b> <small>(short)</small>
* <b>cost</b> <small>(short)</small>
* <b>cost</b> <small>(short)</small>


== player_calledformedic ==
=== player_carryobject ===
* <b>userid</b> <small>(short)</small>
 
== player_carryobject ==
* <b>userid</b> <small>(short)</small> - user ID of the builder
* <b>userid</b> <small>(short)</small> - user ID of the builder
* <b>object</b> <small>(short)</small> - type of object built
* <b>object</b> <small>(short)</small> - type of object built
* <b>index</b> <small>(short)</small> - index of the object
* <b>index</b> <small>(short)</small> - index of the object


== player_changeclass ==
=== player_changeclass ===
* <b>userid</b> <small>(short)</small> - user ID who changed class
* <b>userid</b> <small>(short)</small> - user ID who changed class
* <b>class</b> <small>(short)</small> - class that they changed to
* <b>class</b> <small>(short)</small> - class that they changed to


== player_changename ==
=== player_changename ===
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>oldname</b> <small>(string)</small> - players old (current) name
* <b>oldname</b> <small>(string)</small> - players old (current) name
* <b>newname</b> <small>(string)</small> - players new name
* <b>newname</b> <small>(string)</small> - players new name


== player_chargedeployed ==
=== player_chargedeployed ===
* <b>userid</b> <small>(short)</small> - user ID of medic who deployed charge
* <b>userid</b> <small>(short)</small> - user ID of medic who deployed charge
* <b>targetid</b> <small>(short)</small> - user ID of who the medic charged
* <b>targetid</b> <small>(short)</small> - user ID of who the medic charged


== player_chat ==
=== player_chat ===
a public player chat
a public player chat
* <b>teamonly</b> <small>(bool)</small> - true if team only chat
* <b>teamonly</b> <small>(bool)</small> - true if team only chat
Line 811: Line 639:
* <b>text</b> <small>(string)</small> - chat text
* <b>text</b> <small>(string)</small> - chat text


== player_class ==
=== player_class ===
a player changed his class
a player changed his class
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>class</b> <small>(string)</small> - new player class / model
* <b>class</b> <small>(string)</small> - new player class / model


== player_connect ==
=== player_connect ===
A new client has connected. This does NOT fire between level changes as the player is already connected. Use <code>player_spawn</code> instead if you need to catch every player entity that is created.
A new client has connected. This does NOT fire between level changes as the player is already connected. Use <code>player_spawn</code> instead if you need to catch every player entity that is created.
* <b>name</b> <small>(string)</small> - player name
* <b>name</b> <small>(string)</small> - player name
Line 825: Line 653:
* <b>bot</b> <small>(short)</small> - is a bot
* <b>bot</b> <small>(short)</small> - is a bot


== player_connect_client ==
=== player_connect_client ===
a new client connected
a new client connected
* <b>name</b> <small>(string)</small> - player name
* <b>name</b> <small>(string)</small> - player name
Line 833: Line 661:
* <b>bot</b> <small>(short)</small> - is a bot
* <b>bot</b> <small>(short)</small> - is a bot


== player_currency_changed ==
=== player_death ===
* <b>currency</b> <small>(short)</small>
 
== player_damage_dodged ==
* <b>damage</b> <small>(short)</small>
 
== player_damaged ==
* <b>amount</b> <small>(short)</small>
* <b>type</b> <small>(long)</small>
 
== player_death ==
Fired when a player dies. This shows up in the kill feed.
Fired when a player dies. This shows up in the kill feed.
{{warning|This also fires when a Spy feigns death using the Dead Ringer. Make sure to check for this case using <code>if (params.death_flags & 32</code>)!}}
{{warning|This also fires when a Spy feigns death using the Dead Ringer. Make sure to check for this case using <code>if (params.death_flags & 32</code>)!}}
Line 882: Line 700:
* <b>feign_death</b> <small>(bool)</small> - the victim is feign death
* <b>feign_death</b> <small>(bool)</small> - the victim is feign death


== player_destroyed_pipebomb ==
=== player_destroyed_pipebomb ===
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>


== player_directhit_stun ==
=== player_directhit_stun ===
* <b>attacker</b> <small>(short)</small> - entindex of the attacker
* <b>attacker</b> <small>(short)</small> - entindex of the attacker
* <b>victim</b> <small>(short)</small> - entindex of the victim
* <b>victim</b> <small>(short)</small> - entindex of the victim


== player_disconnect ==
=== player_disconnect ===
A client has disconnected. The player handle and script scope still exists when this event fires, as it persists for a frame after disconnect.
A client has disconnected. The player handle and script scope still exists when this event fires, as it persists for a frame after disconnect.


Line 898: Line 716:
* <b>bot</b> <small>(short)</small> - is a bot
* <b>bot</b> <small>(short)</small> - is a bot


== player_domination ==
=== player_domination ===
* <b>dominator</b> <small>(short)</small> - userID of who gained domination
* <b>dominator</b> <small>(short)</small> - userID of who gained domination
* <b>dominated</b> <small>(short)</small> - userID of who got dominated
* <b>dominated</b> <small>(short)</small> - userID of who got dominated
* <b>dominations</b> <small>(short)</small> - Number of dominations this dominator has
* <b>dominations</b> <small>(short)</small> - Number of dominations this dominator has


== player_dropobject ==
=== player_dropobject ===
* <b>userid</b> <small>(short)</small> - user ID of the builder
* <b>userid</b> <small>(short)</small> - user ID of the builder
* <b>object</b> <small>(short)</small> - type of object built
* <b>object</b> <small>(short)</small> - type of object built
* <b>index</b> <small>(short)</small> - index of the object
* <b>index</b> <small>(short)</small> - index of the object


== player_escort_score ==
=== player_escort_score ===
* <b>player</b> <small>(byte)</small>
* <b>player</b> <small>(byte)</small>
* <b>points</b> <small>(byte)</small>
* <b>points</b> <small>(byte)</small>


== player_extinguished ==
=== player_healed ===
sent when a burning player is extinguished by a medic
* <b>victim</b> <small>(byte)</small> - entindex of the player that was extinguished
* <b>healer</b> <small>(byte)</small> - entindex of the player who did the extinguishing
* <b>itemdefindex</b> <small>(short)</small> - item defindex that did the extinguishing
 
== player_healed ==
* <b>patient</b> <small>(short)</small>
* <b>patient</b> <small>(short)</small>
* <b>healer</b> <small>(short)</small>
* <b>healer</b> <small>(short)</small>
* <b>amount</b> <small>(short)</small>
* <b>amount</b> <small>(short)</small>


== player_healedbymedic ==
=== player_healedmediccall ===
* <b>medic</b> <small>(byte)</small>
 
== player_healedmediccall ==
local player heals someone who called for medic.
local player heals someone who called for medic.
* <b>userid</b> <small>(short)</small> - userid of person who got healed
* <b>userid</b> <small>(short)</small> - userid of person who got healed


== player_healonhit ==
=== player_healonhit ===
* <b>amount</b> <small>(short)</small>
* <b>amount</b> <small>(short)</small>
* <b>entindex</b> <small>(byte)</small>
* <b>entindex</b> <small>(byte)</small>
* <b>weapon_def_index</b> <small>(long)</small> - item def index of the healing weapon
* <b>weapon_def_index</b> <small>(long)</small> - item def index of the healing weapon


== player_highfive_cancel ==
=== player_highfive_cancel ===
* <b>entindex</b> <small>(byte)</small>
* <b>entindex</b> <small>(byte)</small>


== player_highfive_start ==
=== player_highfive_start ===
* <b>entindex</b> <small>(byte)</small>
* <b>entindex</b> <small>(byte)</small>


== player_highfive_success ==
=== player_highfive_success ===
* <b>initiator_entindex</b> <small>(byte)</small>
* <b>initiator_entindex</b> <small>(byte)</small>
* <b>partner_entindex</b> <small>(byte)</small>
* <b>partner_entindex</b> <small>(byte)</small>


== player_hintmessage ==
=== player_hurt ===
* <b>hintmessage</b> <small>(string)</small> - localizable string of a hint
 
== player_hurt ==
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>
* <b>health</b> <small>(short)</small> - if <= 0, then this will play the killsound
* <b>health</b> <small>(short)</small> - if <= 0, then this will play the killsound
Line 962: Line 768:
{{warning|A value of ''4'' is no damage effect. 0 is crits!}}
{{warning|A value of ''4'' is no damage effect. 0 is crits!}}


== player_ignited ==
=== player_info ===
sent when a player is ignited, only to the two players involved
* <b>pyro_entindex</b> <small>(byte)</small> - entindex of the pyro who ignited the victim
* <b>victim_entindex</b> <small>(byte)</small> - entindex of the player ignited by the pyro
* <b>weaponid</b> <small>(byte)</small> - weaponid of the weapon used
 
== player_ignited_inv ==
sent when a player is ignited by a pyro who is being invulned, only to the medic who's doing the invulning
* <b>pyro_entindex</b> <small>(byte)</small> - entindex of the pyro who ignited the victim
* <b>victim_entindex</b> <small>(byte)</small> - entindex of the player ignited by the pyro
* <b>medic_entindex</b> <small>(byte)</small> - entindex of the medic releasing the invuln
 
== player_info ==
a player changed his name
a player changed his name
* <b>name</b> <small>(string)</small> - player name
* <b>name</b> <small>(string)</small> - player name
Line 982: Line 776:
* <b>bot</b> <small>(bool)</small> - true if player is a AI bot
* <b>bot</b> <small>(bool)</small> - true if player is a AI bot


== player_initial_spawn ==
=== player_initial_spawn ===
* <b>index</b> <small>(short)</small> - entindex of the player
* <b>index</b> <small>(short)</small> - entindex of the player


== player_invulned ==
=== player_invulned ===
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>
* <b>medic_userid</b> <small>(short)</small>
* <b>medic_userid</b> <small>(short)</small>


== player_jarated ==
=== player_killed_achievement_zone ===
sent when a player is jarated, only to the two players involved
* <b>thrower_entindex</b> <small>(byte)</small> - entindex of the player who threw the jarate
* <b>victim_entindex</b> <small>(byte)</small> - entindex of the player receiving it
 
== player_jarated_fade ==
sent when a player is jarated, only to the two players involved
* <b>thrower_entindex</b> <small>(byte)</small> - entindex of the player who threw the jarate
* <b>victim_entindex</b> <small>(byte)</small> - entindex of the player receiving it
 
== player_killed_achievement_zone ==
* <b>attacker</b> <small>(short)</small> - entindex of the attacker
* <b>attacker</b> <small>(short)</small> - entindex of the attacker
* <b>victim</b> <small>(short)</small> - entindex of the victim
* <b>victim</b> <small>(short)</small> - entindex of the victim
* <b>zone_id</b> <small>(short)</small> - type of area (0 for general, 1 for capture zone)
* <b>zone_id</b> <small>(short)</small> - type of area (0 for general, 1 for capture zone)


== player_mvp ==
=== player_regenerate ===
* <b>player</b> <small>(short)</small>


== player_pinned ==
=== player_rocketpack_pushed ===
* <b>pinned</b> <small>(byte)</small>
 
== player_regenerate ==
 
== player_rocketpack_pushed ==
* <b>pusher</b> <small>(short)</small> - userID of who pushed
* <b>pusher</b> <small>(short)</small> - userID of who pushed
* <b>pushed</b> <small>(short)</small> - userID of who got pushed
* <b>pushed</b> <small>(short)</small> - userID of who got pushed


== player_sapped_object ==
=== player_sapped_object ===
* <b>userid</b> <small>(short)</small> - user ID of the spy
* <b>userid</b> <small>(short)</small> - user ID of the spy
* <b>ownerid</b> <small>(short)</small> - user ID of the building owner
* <b>ownerid</b> <small>(short)</small> - user ID of the building owner
Line 1,022: Line 800:
* <b>sapperid</b> <small>(short)</small> - index of the sapper
* <b>sapperid</b> <small>(short)</small> - index of the sapper


== player_say ==
=== player_say ===
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>text</b> <small>(string)</small> - the say text
* <b>text</b> <small>(string)</small> - the say text


== player_score ==
=== player_score ===
players scores changed
players scores changed
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>userid</b> <small>(short)</small> - user ID on server
Line 1,033: Line 811:
* <b>score</b> <small>(short)</small> - total game score
* <b>score</b> <small>(short)</small> - total game score


== player_score_changed ==
=== player_score_changed ===
* <b>player</b> <small>(byte)</small>
* <b>player</b> <small>(byte)</small>
* <b>delta</b> <small>(short)</small>
* <b>delta</b> <small>(short)</small>


== player_shield_blocked ==
=== player_shoot ===
sent when a player is jarated, only to the two players involved
* <b>attacker_entindex</b> <small>(byte)</small> - entindex of the player who threw the jarate
* <b>blocker_entindex</b> <small>(byte)</small> - entindex of the player receiving it
 
== player_shoot ==
{{note|Not implemented.}}
{{note|Not implemented.}}
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>userid</b> <small>(short)</small> - user ID on server
Line 1,048: Line 821:
* <b>mode</b> <small>(byte)</small> - weapon mode
* <b>mode</b> <small>(byte)</small> - weapon mode


== player_spawn ==
=== player_spawn ===
This event will be sent once when the player entity is created, i.e. they joined the server or they are loading in after a map change. In this case, <code>team</code> is equal to 0 (unassigned). Each time afterwards, the event will only be fired when the player spawns alive on red or blue team. This is also fired once when [[SourceTV]] is loaded in.  
This event will be sent once when the player entity is created, i.e. they joined the server or they are loading in after a map change. In this case, <code>team</code> is equal to 0 (unassigned). Each time afterwards, the event will only be fired when the player spawns alive on red or blue team. This is also fired once when [[SourceTV]] is loaded in.  


Line 1,055: Line 828:
* <b>class</b> <small>(short)</small> - class they spawned as
* <b>class</b> <small>(short)</small> - class they spawned as


== player_stats_updated ==
=== player_stealsandvich ===
* <b>forceupload</b> <small>(bool)</small>
 
== player_stealsandvich ==
* <b>owner</b> <small>(short)</small>
* <b>owner</b> <small>(short)</small>
* <b>target</b> <small>(short)</small>
* <b>target</b> <small>(short)</small>


== player_stunned ==
=== player_stunned ===
* <b>stunner</b> <small>(short)</small> {{warning|If there's no attacker, this key won't exist (such as being stunned after hitting a wall with a bumper kart)}}
* <b>stunner</b> <small>(short)</small> {{warning|If there's no attacker, this key won't exist (such as being stunned after hitting a wall with a bumper kart)}}
* <b>victim</b> <small>(short)</small>
* <b>victim</b> <small>(short)</small>
Line 1,068: Line 838:
* <b>big_stun</b> <small>(bool)</small>
* <b>big_stun</b> <small>(bool)</small>


== player_team ==
=== player_team ===
Fired when player joins a team.
Fired when player joins a team.
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>userid</b> <small>(short)</small> - user ID on server
Line 1,078: Line 848:
* <b>name</b> <small>(string)</small> - player's name
* <b>name</b> <small>(string)</small> - player's name


== player_teleported ==
=== player_teleported ===
* <b>userid</b> <small>(short)</small> - userid of the player
* <b>userid</b> <small>(short)</small> - userid of the player
* <b>builderid</b> <small>(short)</small> - userid of the player who built the teleporter
* <b>builderid</b> <small>(short)</small> - userid of the player who built the teleporter
* <b>dist</b> <small>(float)</small> - distance the player was teleported
* <b>dist</b> <small>(float)</small> - distance the player was teleported


== player_turned_to_ghost ==
=== player_turned_to_ghost ===
* <b>userid</b> <small>(short)</small> - user ID of the player who changed to a ghost
* <b>userid</b> <small>(short)</small> - user ID of the player who changed to a ghost


== player_upgraded ==
=== player_upgraded ===


== player_upgradedobject ==
=== player_upgradedobject ===
* <b>userid</b> <small>(short)</small> - user ID of the builder
* <b>userid</b> <small>(short)</small> - user ID of the builder
* <b>object</b> <small>(short)</small> - type of object built
* <b>object</b> <small>(short)</small> - type of object built
Line 1,094: Line 864:
* <b>isbuilder</b> <small>(bool)</small>
* <b>isbuilder</b> <small>(bool)</small>


== player_use ==
=== player_use ===
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>entity</b> <small>(short)</small> - entity used by player
* <b>entity</b> <small>(short)</small> - entity used by player


== player_used_powerup_bottle ==
=== player_used_powerup_bottle ===
* <b>player</b> <small>(short)</small>
* <b>player</b> <small>(short)</small>
* <b>type</b> <small>(short)</small>
* <b>type</b> <small>(short)</small>
* <b>time</b> <small>(float)</small>
* <b>time</b> <small>(float)</small>


== playing_commentary ==
=== post_inventory_application ===
 
== post_inventory_application ==
Fired when the player has items resupplied, i.e. when the player spawns or touches resupply ([[func_regenerate]]).
Fired when the player has items resupplied, i.e. when the player spawns or touches resupply ([[func_regenerate]]).
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>


== projectile_direct_hit ==
=== projectile_direct_hit ===
* <b>attacker</b> <small>(byte)</small> - index of the player who shot the projectile
* <b>attacker</b> <small>(byte)</small> - index of the player who shot the projectile
* <b>victim</b> <small>(byte)</small> - index of the player who got direct-ht
* <b>victim</b> <small>(byte)</small> - index of the player who got direct-ht
* <b>weapon_def_index</b> <small>(long)</small> - defindex of the direct hitting weapon
* <b>weapon_def_index</b> <small>(long)</small> - defindex of the direct hitting weapon


== projectile_removed ==
=== projectile_removed ===
* <b>attacker</b> <small>(byte)</small>
* <b>attacker</b> <small>(byte)</small>
* <b>weapon_def_index</b> <small>(long)</small>
* <b>weapon_def_index</b> <small>(long)</small>
Line 1,120: Line 888:
* <b>num_direct_hit</b> <small>(byte)</small>
* <b>num_direct_hit</b> <small>(byte)</small>


== pumpkin_lord_killed ==
=== pumpkin_lord_killed ===


== pumpkin_lord_summoned ==
=== pumpkin_lord_summoned ===


== pve_win_panel ==
=== pve_win_panel ===
* <b>panel_style</b> <small>(byte)</small> - for client to determine layout
* <b>panel_style</b> <small>(byte)</small> - for client to determine layout
* <b>winning_team</b> <small>(byte)</small>
* <b>winning_team</b> <small>(byte)</small>
* <b>winreason</b> <small>(byte)</small> - the reason the team won
* <b>winreason</b> <small>(byte)</small> - the reason the team won


== quest_map_data_changed ==
=== quest_map_data_changed ===
* <b>igniter</b> <small>(short)</small> - entindex of the igniter
* <b>igniter</b> <small>(short)</small> - entindex of the igniter
* <b>douser</b> <small>(short)</small> - entindex of the douser
* <b>douser</b> <small>(short)</small> - entindex of the douser
* <b>victim</b> <small>(short)</small> - entindex of the victim
* <b>victim</b> <small>(short)</small> - entindex of the victim


== quest_objective_completed ==
=== quest_progress ===
For prediction
* <b>quest_item_id_low</b> <small>(long)</small>
* <b>quest_item_id_hi</b> <small>(long)</small>
* <b>quest_objective_id</b> <small>(long)</small>
* <b>scorer_user_id</b> <small>(short)</small>
 
== quest_progress ==
* <b>owner</b> <small>(short)</small>
* <b>owner</b> <small>(short)</small>
* <b>scorer</b> <small>(short)</small>
* <b>scorer</b> <small>(short)</small>
Line 1,148: Line 909:
* <b>quest_defindex</b> <small>(long)</small>
* <b>quest_defindex</b> <small>(long)</small>


== quest_request ==
=== ragdoll_dissolved ===
* <b>request</b> <small>(long)</small>
* <b>msg</b> <small>(string)</small> - Protobuf serialized to a string
 
== quest_response ==
* <b>request</b> <small>(long)</small>
* <b>success</b> <small>(bool)</small>
* <b>msg</b> <small>(string)</small> - Protobuf serialized to a string
 
== quest_turn_in_state ==
* <b>state</b> <small>(short)</small> - Maps to EQuestTurnInState
 
== questlog_opened ==
 
== ragdoll_dissolved ==
* <b>entindex</b> <small>(long)</small>
* <b>entindex</b> <small>(long)</small>


== raid_spawn_mob ==
=== raid_spawn_mob ===


== raid_spawn_squad ==
=== raid_spawn_squad ===


== rd_player_score_points ==
=== rd_player_score_points ===
* <b>player</b> <small>(short)</small>
* <b>player</b> <small>(short)</small>
* <b>method</b> <small>(short)</small>
* <b>method</b> <small>(short)</small>
* <b>amount</b> <small>(short)</small>
* <b>amount</b> <small>(short)</small>


== rd_robot_impact ==
=== rd_robot_impact ===
* <b>entindex</b> <small>(short)</small>
* <b>entindex</b> <small>(short)</small>
* <b>impulse_x</b> <small>(float)</small>
* <b>impulse_x</b> <small>(float)</small>
Line 1,180: Line 927:
* <b>impulse_z</b> <small>(float)</small>
* <b>impulse_z</b> <small>(float)</small>


== rd_robot_killed ==
=== rd_robot_killed ===
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>victim_entindex</b> <small>(long)</small>
* <b>victim_entindex</b> <small>(long)</small>
Line 1,191: Line 938:
* <b>weapon_logclassname</b> <small>(string)</small> - weapon name that should be printed on the log
* <b>weapon_logclassname</b> <small>(string)</small> - weapon name that should be printed on the log


== rd_rules_state_changed ==
=== recalculate_holidays ===


== rd_team_points_changed ==
=== recalculate_truce ===
* <b>points</b> <small>(short)</small>
* <b>team</b> <small>(byte)</small>
* <b>method</b> <small>(byte)</small>


== recalculate_holidays ==
=== rematch_failed_to_create ===
 
== recalculate_truce ==
 
== rematch_failed_to_create ==
* <b>map_index</b> <small>(byte)</small> - what they voted for
* <b>map_index</b> <small>(byte)</small> - what they voted for
* <b>vote</b> <small>(byte)</small> - what the vote was
* <b>vote</b> <small>(byte)</small> - what the vote was


== remove_nemesis_relationships ==
=== remove_nemesis_relationships ===
* <b>player</b> <small>(short)</small> - entindex of the player who should reset
* <b>player</b> <small>(short)</small> - entindex of the player who should reset


== replay_endrecord ==
=== replay_endrecord ===


== replay_replaysavailable ==
=== replay_replaysavailable ===


== replay_saved ==
=== replay_servererror ===
 
== replay_servererror ==
* <b>error</b> <small>(string)</small>
* <b>error</b> <small>(string)</small>


== replay_sessioninfo ==
=== replay_sessioninfo ===
Sent when the server begins recording, or when a client first connects - only sent once per recording session
Sent when the server begins recording, or when a client first connects - only sent once per recording session
* <b>sn</b> <small>(string)</small> - session name
* <b>sn</b> <small>(string)</small> - session name
Line 1,225: Line 963:
* <b>st</b> <small>(long)</small> - session start tick
* <b>st</b> <small>(long)</small> - session start tick


== replay_startrecord ==
=== replay_startrecord ===
Sent when the server begins recording - only used to display UI
Sent when the server begins recording - only used to display UI


== replay_youtube_stats ==
=== respawn_ghost ===
* <b>views</b> <small>(long)</small>
* <b>likes</b> <small>(long)</small>
* <b>favorited</b> <small>(long)</small>
 
== respawn_ghost ==
* <b>reviver</b> <small>(short)</small> - userid of the reviving player
* <b>reviver</b> <small>(short)</small> - userid of the reviving player
* <b>ghost</b> <small>(short)</small> - userid of the player that got revived
* <b>ghost</b> <small>(short)</small> - userid of the player that got revived


== restart_timer_time ==
=== revive_player_complete ===
* <b>time</b> <small>(byte)</small> - How much time is left
 
== revive_player_complete ==
* <b>entindex</b> <small>(short)</small> - entindex of the medic
* <b>entindex</b> <small>(short)</small> - entindex of the medic


== revive_player_notify ==
=== revive_player_notify ===
* <b>entindex</b> <small>(short)</small>
* <b>entindex</b> <small>(short)</small>
* <b>marker_entindex</b> <small>(short)</small>
* <b>marker_entindex</b> <small>(short)</small>


== revive_player_stopped ==
=== revive_player_stopped ===
* <b>entindex</b> <small>(short)</small>
* <b>entindex</b> <small>(short)</small>


== rocket_jump ==
=== rocket_jump ===
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>
* <b>playsound</b> <small>(bool)</small>
* <b>playsound</b> <small>(bool)</small>


== rocket_jump_landed ==
=== rocket_jump_landed ===
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>


== rocketpack_landed ==
=== rocketpack_landed ===
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>


== rocketpack_launch ==
=== rocketpack_launch ===
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>
* <b>playsound</b> <small>(bool)</small>
* <b>playsound</b> <small>(bool)</small>


== round_end ==
=== round_end ===
* <b>winner</b> <small>(byte)</small> - winner team/user i
* <b>winner</b> <small>(byte)</small> - winner team/user i
* <b>reason</b> <small>(byte)</small> - reson why team won
* <b>reason</b> <small>(byte)</small> - reson why team won
* <b>message</b> <small>(string)</small> - end round message
* <b>message</b> <small>(string)</small> - end round message


== round_start ==
=== round_start ===
* <b>timelimit</b> <small>(long)</small> - round time limit in seconds
* <b>timelimit</b> <small>(long)</small> - round time limit in seconds
* <b>fraglimit</b> <small>(long)</small> - frag limit in seconds
* <b>fraglimit</b> <small>(long)</small> - frag limit in seconds
* <b>objective</b> <small>(string)</small> - round objective
* <b>objective</b> <small>(string)</small> - round objective


== rps_taunt_event ==
=== rps_taunt_event ===
* <b>winner</b> <small>(short)</small> - entindex of the winning player
* <b>winner</b> <small>(short)</small> - entindex of the winning player
* <b>winner_rps</b> <small>(byte)</small> - winner's selection
* <b>winner_rps</b> <small>(byte)</small> - winner's selection
Line 1,280: Line 1,010:
* <b>loser_rps</b> <small>(byte)</small> - loser's selection
* <b>loser_rps</b> <small>(byte)</small> - loser's selection


== schema_updated ==
=== scorestats_accumulated_reset ===
 
== scorestats_accumulated_reset ==
Fired when round resets due to <code>mp_restartgame</code>.
Fired when round resets due to <code>mp_restartgame</code>.


== scorestats_accumulated_update ==
=== scorestats_accumulated_update ===
Fired right before map entities are cleaned up for a round restart.  
Fired right before map entities are cleaned up for a round restart.  


This event is not fired in Mann Vs Machine mode. For MvM, use <code>recalculate_holidays</code> and check if <code>GetRoundState() == 3</code> is true, which indicates a mission reset.
This event is not fired in Mann Vs Machine mode. For MvM, use <code>recalculate_holidays</code> and check if <code>GetRoundState() === 3</code> is true, which indicates a mission reset.


== scout_grand_slam ==
=== scout_grand_slam ===
* <b>scout_id</b> <small>(short)</small>
* <b>scout_id</b> <small>(short)</small>
* <b>target_id</b> <small>(short)</small>
* <b>target_id</b> <small>(short)</small>


== scout_slamdoll_landed ==
=== sentry_on_go_active ===
* <b>target_index</b> <small>(short)</small>
* <b>x</b> <small>(float)</small>
* <b>y</b> <small>(float)</small>
* <b>z</b> <small>(float)</small>
 
== sentry_on_go_active ==
* <b>index</b> <small>(short)</small>
* <b>index</b> <small>(short)</small>


== server_addban ==
=== server_addban ===
* <b>name</b> <small>(string)</small> - player name
* <b>name</b> <small>(string)</small> - player name
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>userid</b> <small>(short)</small> - user ID on server
Line 1,312: Line 1,034:
* <b>kicked</b> <small>(bool)</small> - whether the player was also kicked
* <b>kicked</b> <small>(bool)</small> - whether the player was also kicked


== server_changelevel_failed ==
=== server_changelevel_failed ===
* <b>levelname</b> <small>(string)</small> - The level name that failed changelevel
* <b>levelname</b> <small>(string)</small> - The level name that failed changelevel


== server_cvar ==
=== server_cvar ===
a server console var has changed
a server console var has changed
* <b>cvarname</b> <small>(string)</small> - cvar name, eg "mp_roundtime"
* <b>cvarname</b> <small>(string)</small> - cvar name, eg "mp_roundtime"
* <b>cvarvalue</b> <small>(string)</small> - new cvar value
* <b>cvarvalue</b> <small>(string)</small> - new cvar value


== server_message ==
=== server_message ===
a generic server message
a generic server message
* <b>text</b> <small>(string)</small> - the message text
* <b>text</b> <small>(string)</small> - the message text


== server_removeban ==
=== server_removeban ===
* <b>networkid</b> <small>(string)</small> - player network (i.e steam) id
* <b>networkid</b> <small>(string)</small> - player network (i.e steam) id
* <b>ip</b> <small>(string)</small> - IP address
* <b>ip</b> <small>(string)</small> - IP address
* <b>by</b> <small>(string)</small> - removed by...
* <b>by</b> <small>(string)</small> - removed by...


== server_shutdown ==
=== server_shutdown ===
server shut down
server shut down
* <b>reason</b> <small>(string)</small> - reason why server was shut down
* <b>reason</b> <small>(string)</small> - reason why server was shut down


== server_spawn ==
=== server_spawn ===
send once a server starts
send once a server starts
* <b>hostname</b> <small>(string)</small> - public host name
* <b>hostname</b> <small>(string)</small> - public host name
Line 1,346: Line 1,068:
* <b>password</b> <small>(bool)</small> - true if password protected
* <b>password</b> <small>(bool)</small> - true if password protected


== show_annotation ==
=== show_match_summary ===
* <b>worldPosX</b> <small>(float)</small>
* <b>worldPosY</b> <small>(float)</small>
* <b>worldPosZ</b> <small>(float)</small>
* <b>worldNormalX</b> <small>(float)</small>
* <b>worldNormalY</b> <small>(float)</small>
* <b>worldNormalZ</b> <small>(float)</small>
* <b>id</b> <small>(long)</small>
* <b>text</b> <small>(string)</small> - name (unlocalized)
* <b>lifetime</b> <small>(float)</small>
* <b>visibilityBitfield</b> <small>(long)</small> - bitfield of the players that can see this. If 0, everyone can see it
{{warning|This was only intended for supporting 32 players, players above that index are not considered.}}
* <b>follow_entindex</b> <small>(long)</small> - if this is set, follow this entity
* <b>show_distance</b> <small>(bool)</small>
* <b>play_sound</b> <small>(string)</small>
* <b>show_effect</b> <small>(bool)</small>
 
== show_class_layout ==
* <b>show</b> <small>(bool)</small>
 
== show_freezepanel ==
* <b>killer</b> <small>(short)</small> - entindex of the killer entity
 
== show_match_summary ==
* <b>success</b> <small>(bool)</small>
* <b>success</b> <small>(bool)</small>


== show_vs_panel ==
=== show_vs_panel ===
* <b>show</b> <small>(bool)</small>
* <b>show</b> <small>(bool)</small>


== single_player_death ==
=== single_player_death ===


== skeleton_killed_quest ==
=== skeleton_killed_quest ===
* <b>player</b> <small>(short)</small> - userid of the player that killed the skeleton
* <b>player</b> <small>(short)</small> - userid of the player that killed the skeleton


== skeleton_king_killed_quest ==
=== skeleton_king_killed_quest ===
* <b>player</b> <small>(short)</small> - userid of the player that killed the skeleton
* <b>player</b> <small>(short)</small> - userid of the player that killed the skeleton


== slap_notice ==
=== slap_notice ===
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>victim_entindex</b> <small>(long)</small>
* <b>victim_entindex</b> <small>(long)</small>
Line 1,399: Line 1,098:
* <b>assister_fallback</b> <small>(string)</small> - contains a string to use if "assister" is -1
* <b>assister_fallback</b> <small>(string)</small> - contains a string to use if "assister" is -1


== spec_target_updated ==


== special_score ==
=== special_score ===
* <b>player</b> <small>(byte)</small> - index of the scorer
* <b>player</b> <small>(byte)</small> - index of the scorer


== spy_pda_reset ==
=== spy_pda_reset ===


== stats_resetround ==
=== stats_resetround ===


== sticky_jump ==
=== sticky_jump ===
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>
* <b>playsound</b> <small>(bool)</small>
* <b>playsound</b> <small>(bool)</small>


== sticky_jump_landed ==
=== sticky_jump_landed ===
* <b>userid</b> <small>(short)</small>
* <b>userid</b> <small>(short)</small>


== store_pricesheet_updated ==
=== tagged_player_as_it ===
 
== tagged_player_as_it ==
* <b>player</b> <small>(short)</small> - userid of the tagging player
* <b>player</b> <small>(short)</small> - userid of the tagging player


== take_armor ==
=== take_armor ===
* <b>amount</b> <small>(long)</small>
* <b>amount</b> <small>(long)</small>
* <b>total</b> <small>(long)</small>
* <b>total</b> <small>(long)</small>


== take_health ==
=== take_health ===
* <b>amount</b> <small>(long)</small>
* <b>amount</b> <small>(long)</small>
* <b>total</b> <small>(long)</small>
* <b>total</b> <small>(long)</small>


== team_info ==
=== team_info ===
info about team
info about team
* <b>teamid</b> <small>(byte)</small> - unique team id
* <b>teamid</b> <small>(byte)</small> - unique team id
* <b>teamname</b> <small>(string)</small> - team name eg "Team Blue"
* <b>teamname</b> <small>(string)</small> - team name eg "Team Blue"


== team_leader_killed ==
=== team_leader_killed ===
* <b>killer</b> <small>(byte)</small> - index of the killer
* <b>killer</b> <small>(byte)</small> - index of the killer
* <b>victim</b> <small>(byte)</small> - index of the victim
* <b>victim</b> <small>(byte)</small> - index of the victim


== team_score ==
=== team_score ===
team score changed
team score changed
* <b>teamid</b> <small>(byte)</small> - team id
* <b>teamid</b> <small>(byte)</small> - team id
* <b>score</b> <small>(short)</small> - total team score
* <b>score</b> <small>(short)</small> - total team score


== teamplay_alert ==
=== teamplay_alert ===
* <b>alert_type</b> <small>(short)</small> - which alert type is this (scramble, etc)?
* <b>alert_type</b> <small>(short)</small> - which alert type is this (scramble, etc)?


== teamplay_broadcast_audio ==
=== teamplay_broadcast_audio ===
* <b>team</b> <small>(byte)</small> - which team should hear the broadcast. 0 will make everyone hear it.
* <b>team</b> <small>(byte)</small> - which team should hear the broadcast. 0 will make everyone hear it.
* <b>sound</b> <small>(string)</small> - sound to play
* <b>sound</b> <small>(string)</small> - sound to play
Line 1,451: Line 1,147:
* <b>player</b> <small>(short)</small> - entindex of the player source or -1
* <b>player</b> <small>(short)</small> - entindex of the player source or -1


== teamplay_capture_blocked ==
=== teamplay_capture_blocked ===
* <b>cp</b> <small>(byte)</small> - index of the point that was blocked
* <b>cp</b> <small>(byte)</small> - index of the point that was blocked
* <b>cpname</b> <small>(string)</small> - name of the point
* <b>cpname</b> <small>(string)</small> - name of the point
Line 1,457: Line 1,153:
* <b>victim</b> <small>(byte)</small> - index of the player that died, causing the block
* <b>victim</b> <small>(byte)</small> - index of the player that died, causing the block


== teamplay_capture_broken ==
=== teamplay_capture_broken ===
* <b>cp</b> <small>(byte)</small>
* <b>cp</b> <small>(byte)</small>
* <b>cpname</b> <small>(string)</small>
* <b>cpname</b> <small>(string)</small>
* <b>time_remaining</b> <small>(float)</small>
* <b>time_remaining</b> <small>(float)</small>


== teamplay_flag_event ==
=== teamplay_flag_event ===
* <b>player</b> <small>(short)</small> - player this event involves
* <b>player</b> <small>(short)</small> - player this event involves
* <b>carrier</b> <small>(short)</small> - the carrier if needed
* <b>carrier</b> <small>(short)</small> - the carrier if needed
Line 1,469: Line 1,165:
* <b>team</b> <small>(byte)</small> - which team the flag belongs to
* <b>team</b> <small>(byte)</small> - which team the flag belongs to


== teamplay_game_over ==
=== teamplay_game_over ===
* <b>reason</b> <small>(string)</small> - why the game is over ( timelimit, winlimit )
* <b>reason</b> <small>(string)</small> - why the game is over ( timelimit, winlimit )


== teamplay_map_time_remaining ==
=== teamplay_map_time_remaining ===
* <b>seconds</b> <small>(short)</small>
* <b>seconds</b> <small>(short)</small>


== teamplay_overtime_begin ==
=== teamplay_overtime_begin ===


== teamplay_overtime_end ==
=== teamplay_overtime_end ===


== teamplay_point_captured ==
=== teamplay_point_captured ===
* <b>cp</b> <small>(byte)</small> - index of the point that was captured
* <b>cp</b> <small>(byte)</small> - index of the point that was captured
* <b>cpname</b> <small>(string)</small> - name of the point
* <b>cpname</b> <small>(string)</small> - name of the point
Line 1,485: Line 1,181:
* <b>cappers</b> <small>(string)</small> - string where each character is a player index of someone that capped
* <b>cappers</b> <small>(string)</small> - string where each character is a player index of someone that capped


== teamplay_point_locked ==
=== teamplay_point_locked ===
* <b>cp</b> <small>(byte)</small> - index of the point being captured
* <b>cp</b> <small>(byte)</small> - index of the point being captured
* <b>cpname</b> <small>(string)</small> - name of the point
* <b>cpname</b> <small>(string)</small> - name of the point
* <b>team</b> <small>(byte)</small> - which team currently owns the point
* <b>team</b> <small>(byte)</small> - which team currently owns the point


== teamplay_point_startcapture ==
=== teamplay_point_startcapture ===
* <b>cp</b> <small>(byte)</small> - index of the point being captured
* <b>cp</b> <small>(byte)</small> - index of the point being captured
* <b>cpname</b> <small>(string)</small> - name of the point
* <b>cpname</b> <small>(string)</small> - name of the point
Line 1,498: Line 1,194:
* <b>captime</b> <small>(float)</small> - time between when this cap started and when the point last changed hands
* <b>captime</b> <small>(float)</small> - time between when this cap started and when the point last changed hands


== teamplay_point_unlocked ==
=== teamplay_point_unlocked ===
* <b>cp</b> <small>(byte)</small> - index of the point being captured
* <b>cp</b> <small>(byte)</small> - index of the point being captured
* <b>cpname</b> <small>(string)</small> - name of the point
* <b>cpname</b> <small>(string)</small> - name of the point
* <b>team</b> <small>(byte)</small> - which team currently owns the point
* <b>team</b> <small>(byte)</small> - which team currently owns the point


== teamplay_pre_round_time_left ==
=== teamplay_pre_round_time_left ===
* <b>time</b> <small>(short)</small>
* <b>time</b> <small>(short)</small>


== teamplay_ready_restart ==
=== teamplay_ready_restart ===


== teamplay_restart_round ==
=== teamplay_restart_round ===


== teamplay_round_active ==
=== teamplay_round_active ===
called when round is active, players can move
called when round is active, players can move


== teamplay_round_restart_seconds ==
=== teamplay_round_restart_seconds ===
* <b>seconds</b> <small>(short)</small>
* <b>seconds</b> <small>(short)</small>


== teamplay_round_selected ==
=== teamplay_round_selected ===
* <b>round</b> <small>(string)</small> - name of the round selected
* <b>round</b> <small>(string)</small> - name of the round selected


== teamplay_round_stalemate ==
=== teamplay_round_start ===
* <b>reason</b> <small>(byte)</small> - why the stalemate is occuring
 
== teamplay_round_start ==
round restart
round restart
* <b>full_reset</b> <small>(bool)</small> - is this a full reset of the map
* <b>full_reset</b> <small>(bool)</small> - is this a full reset of the map


== teamplay_round_win ==
=== teamplay_round_win ===
* <b>team</b> <small>(byte)</small> - which team won the round
* <b>team</b> <small>(byte)</small> - which team won the round
* <b>winreason</b> <small>(byte)</small> - the reason the team won
* <b>winreason</b> <small>(byte)</small> - the reason the team won
Line 1,535: Line 1,228:
* <b>was_sudden_death</b> <small>(byte)</small> - did a team win this after entering sudden death
* <b>was_sudden_death</b> <small>(byte)</small> - did a team win this after entering sudden death


== teamplay_setup_finished ==
=== teamplay_setup_finished ===


== teamplay_suddendeath_begin ==
=== teamplay_suddendeath_begin ===


== teamplay_suddendeath_end ==
=== teamplay_suddendeath_end ===


== teamplay_team_ready ==
=== teamplay_team_ready ===
* <b>team</b> <small>(byte)</small> - which team is ready
* <b>team</b> <small>(byte)</small> - which team is ready


== teamplay_teambalanced_player ==
=== teamplay_teambalanced_player ===
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>player</b> <small>(short)</small> - entindex of the player
* <b>team</b> <small>(byte)</small> - which team the player is being moved to
* <b>team</b> <small>(byte)</small> - which team the player is being moved to


== teamplay_timer_flash ==
=== teamplay_timer_flash ===
* <b>time_remaining</b> <small>(short)</small> - how many seconds until the round ends
* <b>time_remaining</b> <small>(short)</small> - how many seconds until the round ends


== teamplay_timer_time_added ==
=== teamplay_timer_time_added ===
* <b>timer</b> <small>(short)</small> - entindex of the timer
* <b>timer</b> <small>(short)</small> - entindex of the timer
* <b>seconds_added</b> <small>(short)</small> - how many seconds were added to the round timer
* <b>seconds_added</b> <small>(short)</small> - how many seconds were added to the round timer


== teamplay_update_timer ==
=== teamplay_waiting_abouttoend ===
 
== teamplay_waiting_abouttoend ==


== teamplay_waiting_begins ==
=== teamplay_waiting_begins ===


== teamplay_waiting_ends ==
=== teamplay_waiting_ends ===


== teamplay_win_panel ==
=== teamplay_win_panel ===
* <b>panel_style</b> <small>(byte)</small> - for client to determine layout
* <b>panel_style</b> <small>(byte)</small> - for client to determine layout
* <b>winning_team</b> <small>(byte)</small>
* <b>winning_team</b> <small>(byte)</small>
Line 1,585: Line 1,276:
* <b>game_over</b> <small>(byte)</small>
* <b>game_over</b> <small>(byte)</small>


== teams_changed ==
=== teams_changed ===


== tf_game_over ==
=== tf_game_over ===
* <b>reason</b> <small>(string)</small> - why the game is over ( timelimit, winlimit )
* <b>reason</b> <small>(string)</small> - why the game is over ( timelimit, winlimit )


== tf_map_time_remaining ==
=== tf_map_time_remaining ===
* <b>seconds</b> <small>(long)</small>
* <b>seconds</b> <small>(long)</small>


== throwable_hit ==
=== throwable_hit ===
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>userid</b> <small>(short)</small> - user ID who died
* <b>victim_entindex</b> <small>(long)</small>
* <b>victim_entindex</b> <small>(long)</small>
Line 1,610: Line 1,301:
* <b>totalhits</b> <small>(short)</small> - Number of hits his player has done
* <b>totalhits</b> <small>(short)</small> - Number of hits his player has done


== tournament_enablecountdown ==
=== tournament_enablecountdown ===


== tournament_stateupdate ==
=== tournament_stateupdate ===
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>userid</b> <small>(short)</small> - user ID on server
* <b>namechange</b> <small>(bool)</small>
* <b>namechange</b> <small>(bool)</small>
Line 1,618: Line 1,309:
* <b>newname</b> <small>(string)</small> - players new name
* <b>newname</b> <small>(string)</small> - players new name


== training_complete ==
=== training_complete ===
* <b>next_map</b> <small>(string)</small> - next map (if any)
* <b>next_map</b> <small>(string)</small> - next map (if any)
* <b>map</b> <small>(string)</small> - the name of the map this screen is on.
* <b>map</b> <small>(string)</small> - the name of the map this screen is on.
* <b>text</b> <small>(string)</small> - text to show
* <b>text</b> <small>(string)</small> - text to show


== update_status_item ==
=== upgrades_file_changed ===
* <b>index</b> <small>(byte)</small>
* <b>object</b> <small>(byte)</small>
 
== upgrades_file_changed ==
* <b>path</b> <small>(string)</small>
* <b>path</b> <small>(string)</small>


== user_data_downloaded ==
=== vote_cast ===
fired when achievements/stats are downloaded from Steam or XBox Live
 
== vote_cast ==
* <b>vote_option</b> <small>(byte)</small> - which option the player voted on
* <b>vote_option</b> <small>(byte)</small> - which option the player voted on
* <b>team</b> <small>(short)</small>
* <b>team</b> <small>(short)</small>
Line 1,639: Line 1,323:
* <b>voteidx</b> <small>(long)</small>
* <b>voteidx</b> <small>(long)</small>


== vote_changed ==
=== vote_ended ===
 
=== vote_options ===
* <b>count</b> <small>(byte)</small> - Number of options - up to MAX_VOTE_OPTIONS
* <b>option1</b> <small>(string)</small>
* <b>option2</b> <small>(string)</small>
* <b>option3</b> <small>(string)</small>
* <b>option4</b> <small>(string)</small>
* <b>option5</b> <small>(string)</small>
* <b>voteidx</b> <small>(long)</small>
 
=== weapon_equipped ===
* <b>class</b> <small>(string)</small>
* <b>entindex</b> <small>(long)</small>
 
=== winlimit_changed ===
* <b>delay</b> <small>(float)</small>
 
== Clientside ==
 
=== spec_target_updated ===
 
=== show_freezepanel ===
* <b>killer</b> <small>(short)</small> - entindex of the killer entity
 
=== hide_freezepanel ===
 
=== freezecam_started ===
 
=== controlpoint_initialized ===
 
=== controlpoint_unlock_updated ===
* <b>index</b> <small>(short)</small> - index of the cap being updated
* <b>time</b> <small>(float)</small> - time
 
=== controlpoint_timer_updated ===
* <b>index</b> <small>(short)</small> - index of the cap being updated
* <b>time</b> <small>(float)</small> - time
 
=== escort_speed ===
* <b>team</b> <small>(byte)</small> - which team
* <b>speed</b> <small>(byte)</small>
* <b>players</b> <small>(byte)</small>
 
=== escort_progress ===
* <b>team</b> <small>(byte)</small> - which team
* <b>progress</b> <small>(float)</small>
* <b>reset</b> <small>(bool)</small>
 
=== escort_recede ===
* <b>team</b> <small>(byte)</small> - which team
* <b>recedetime</b> <small>(float)</small>
 
=== vote_changed ===
* <b>vote_option1</b> <small>(byte)</small>
* <b>vote_option1</b> <small>(byte)</small>
* <b>vote_option2</b> <small>(byte)</small>
* <b>vote_option2</b> <small>(byte)</small>
Line 1,648: Line 1,385:
* <b>voteidx</b> <small>(long)</small>
* <b>voteidx</b> <small>(long)</small>


== vote_ended ==
=== gameui_activated ===
 
=== gameui_hidden ===
 
=== game_newmap ===
send when new map is completely loaded
* <b>mapname</b> <small>(string)</small> - map name
 
=== items_acknowledged ===
* <b>blocker</b> <small>(short)</small> - entindex of the blocker
* <b>victim</b> <small>(short)</small> - entindex of the victim


== vote_failed ==
=== store_pricesheet_updated ===
 
=== cart_updated ===
 
=== inventory_updated ===
 
=== hltv_changed_mode ===
* <b>oldmode</b> <small>(short)</small>
* <b>newmode</b> <small>(short)</small>
* <b>obs_target</b> <small>(short)</small>
 
=== hltv_changed_target ===
* <b>mode</b> <small>(short)</small>
* <b>old_target</b> <small>(short)</small>
* <b>obs_target</b> <small>(short)</small>
 
=== vote_failed ===
* <b>team</b> <small>(byte)</small>
* <b>voteidx</b> <small>(long)</small>
 
=== vote_started ===
* <b>issue</b> <small>(string)</small>
* <b>param1</b> <small>(string)</small>
* <b>team</b> <small>(byte)</small>
* <b>initiator</b> <small>(long)</small> - entity id of the player who initiated the vote
* <b>voteidx</b> <small>(long)</small>
 
=== vote_passed ===
* <b>details</b> <small>(string)</small>
* <b>param1</b> <small>(string)</small>
* <b>team</b> <small>(byte)</small>
* <b>team</b> <small>(byte)</small>
* <b>voteidx</b> <small>(long)</small>
* <b>voteidx</b> <small>(long)</small>


== vote_maps_changed ==
=== replay_saved ===
 
=== replay_youtube_stats ===
* <b>views</b> <small>(long)</small>
* <b>likes</b> <small>(long)</small>
* <b>favorited</b> <small>(long)</small>
 
=== base_player_teleported ===
* <b>entindex</b> <small>(short)</small>
 
=== browse_replays ===
 
=== entered_performance_mode ===
 
=== building_info_changed ===
* <b>building_type</b> <small>(byte)</small>
* <b>object_mode</b> <small>(byte)</small>
* <b>remove</b> <small>(byte)</small>
 
=== scout_slamdoll_landed ===
* <b>target_index</b> <small>(short)</small>
* <b>x</b> <small>(float)</small>
* <b>y</b> <small>(float)</small>
* <b>z</b> <small>(float)</small>
 
=== localplayer_changeteam ===
 
=== localplayer_changeclass ===
 
=== localplayer_becameobserver ===
 
=== localplayer_changedisguise ===
* <b>disguised</b> <small>(bool)</small>
 
=== localplayer_builtobject ===
* <b>object</b> <small>(short)</small> - type of object built
* <b>object_mode</b> <small>(short)</small> - used for teleporters: entrance vs. exit
* <b>index</b> <small>(short)</small> - index of the object
 
=== localplayer_chargeready ===
local player has full medic charge
 
=== localplayer_pickup_weapon ===
 
=== localplayer_respawn ===
 
=== localplayer_score_changed ===
* <b>score</b> <small>(short)</small>
 
=== localplayer_winddown ===
local player minigun winddown
 
=== player_account_changed ===
* <b>old_value</b> <small>(short)</small>
* <b>new_value</b> <small>(short)</small>
 
=== localplayer_healed ===
* <b>amount</b> <small>(short)</small>
 
=== player_currency_changed ===
* <b>currency</b> <small>(short)</small>
 
=== player_calledformedic ===
* <b>userid</b> <small>(short)</small>
 
=== player_healedbymedic ===
* <b>medic</b> <small>(byte)</small>
 
=== player_pinned ===
* <b>pinned</b> <small>(byte)</small>
 
=== hide_annotation ===
* <b>id</b> <small>(long)</small>
 
=== show_annotation ===
* <b>worldPosX</b> <small>(float)</small>
* <b>worldPosY</b> <small>(float)</small>
* <b>worldPosZ</b> <small>(float)</small>
* <b>worldNormalX</b> <small>(float)</small>
* <b>worldNormalY</b> <small>(float)</small>
* <b>worldNormalZ</b> <small>(float)</small>
* <b>id</b> <small>(long)</small>
* <b>text</b> <small>(string)</small> - name (unlocalized)
* <b>lifetime</b> <small>(float)</small>
* <b>visibilityBitfield</b> <small>(long)</small> - bitfield of the players that can see this. If 0, everyone can see it
{{warning|This was only intended for supporting 32 players, players above that index are not considered.}}
* <b>follow_entindex</b> <small>(long)</small> - if this is set, follow this entity
* <b>show_distance</b> <small>(bool)</small>
* <b>play_sound</b> <small>(string)</small>
* <b>show_effect</b> <small>(bool)</small>
 
=== player_bonuspoints ===
* <b>points</b> <small>(short)</small>
* <b>player_entindex</b> <small>(short)</small>
* <b>source_entindex</b> <small>(short)</small>
 
=== rd_team_points_changed ===
* <b>points</b> <small>(short)</small>
* <b>team</b> <small>(byte)</small>
* <b>method</b> <small>(byte)</small>
 
=== quest_objective_completed ===
For prediction
* <b>quest_item_id_low</b> <small>(long)</small>
* <b>quest_item_id_hi</b> <small>(long)</small>
* <b>quest_objective_id</b> <small>(long)</small>
* <b>scorer_user_id</b> <small>(short)</small>
 
=== quest_request ===
* <b>request</b> <small>(long)</small>
* <b>msg</b> <small>(string)</small> - Protobuf serialized to a string
 
=== quest_response ===
* <b>request</b> <small>(long)</small>
* <b>success</b> <small>(bool)</small>
* <b>msg</b> <small>(string)</small> - Protobuf serialized to a string
 
=== quest_turn_in_state ===
* <b>state</b> <small>(short)</small> - Maps to EQuestTurnInState
 
=== questlog_opened ===
 
=== lobby_updated ===
 
=== match_invites_updated ===
 
=== show_class_layout ===
* <b>show</b> <small>(bool)</small>
 
=== arena_player_notification ===
* <b>player</b> <small>(byte)</small>
* <b>message</b> <small>(byte)</small>
 
=== mainmenu_stabilized ===
* <b>attacker</b> <small>(short)</small>
* <b>victim</b> <small>(short)</small>
* <b>assister</b> <small>(short)</small>
 
=== player_stats_updated ===
* <b>forceupload</b> <small>(bool)</small>
 
=== player_mvp ===
* <b>player</b> <small>(short)</small>
 
=== party_chat ===
* <b>steamid</b> <small>(string)</small> - steamID (64-bit value converted to string) of user who said or did the thing.  May be
* <b>text</b> <small>(string)</small> - The message.  May have different meaning for some types
* <b>type</b> <small>(short)</small> - What sort of message?  ETFPartyChatType enum
 
=== party_member_join ===
* <b>steamid</b> <small>(string)</small> - steamID (64-bit value converted to string) of joined
 
=== party_member_leave ===
* <b>steamid</b> <small>(string)</small> - steamID (64-bit value converted to string) of leaver
 
=== party_criteria_changed ===
 
=== party_invites_changed ===
 
=== party_pref_changed ===
 
=== party_queue_state_changed ===
* <b>matchgroup</b> <small>(short)</small> - ETFMatchGroup
 
=== party_updated ===
 
=== playing_commentary ===
 
=== achievement_earned_local ===
* <b>achievement</b> <small>(short)</small>
 
=== user_data_downloaded ===
fired when achievements/stats are downloaded from Steam or XBox Live
 
=== econ_inventory_connected ===
 
=== gc_lost_session ===
 
=== gc_new_session ===
 
=== player_hintmessage ===
* <b>hintmessage</b> <small>(string)</small> - localizable string of a hint
 
=== restart_timer_time ===
* <b>time</b> <small>(byte)</small> - How much time is left
 
=== teamplay_update_timer ===
 
=== teamplay_round_stalemate ===
* <b>reason</b> <small>(byte)</small> - why the stalemate is occuring
 
=== player_ignited_inv ===
sent when a player is ignited by a pyro who is being invulned, only to the medic who's doing the invulning
* <b>pyro_entindex</b> <small>(byte)</small> - entindex of the pyro who ignited the victim
* <b>victim_entindex</b> <small>(byte)</small> - entindex of the player ignited by the pyro
* <b>medic_entindex</b> <small>(byte)</small> - entindex of the medic releasing the invuln
 
=== player_ignited ===
sent when a player is ignited, only to the two players involved
* <b>pyro_entindex</b> <small>(byte)</small> - entindex of the pyro who ignited the victim
* <b>victim_entindex</b> <small>(byte)</small> - entindex of the player ignited by the pyro
* <b>weaponid</b> <small>(byte)</small> - weaponid of the weapon used
 
=== player_damaged ===
* <b>amount</b> <small>(short)</small>
* <b>type</b> <small>(long)</small>
 
=== player_jarated ===
sent when a player is jarated, only to the two players involved
* <b>thrower_entindex</b> <small>(byte)</small> - entindex of the player who threw the jarate
* <b>victim_entindex</b> <small>(byte)</small> - entindex of the player receiving it
 
=== player_jarated_fade ===
sent when a player is jarated, only to the two players involved
* <b>thrower_entindex</b> <small>(byte)</small> - entindex of the player who threw the jarate
* <b>victim_entindex</b> <small>(byte)</small> - entindex of the player receiving it
 
=== player_shield_blocked ===
sent when a player is jarated, only to the two players involved
* <b>attacker_entindex</b> <small>(byte)</small> - entindex of the player who threw the jarate
* <b>blocker_entindex</b> <small>(byte)</small> - entindex of the player receiving it
 
=== player_extinguished ===
sent when a burning player is extinguished by a medic
* <b>victim</b> <small>(byte)</small> - entindex of the player that was extinguished
* <b>healer</b> <small>(byte)</small> - entindex of the player who did the extinguishing
* <b>itemdefindex</b> <small>(short)</small> - item defindex that did the extinguishing
 
=== player_damage_dodged ===
* <b>damage</b> <small>(short)</small>
 
=== flagstatus_update ===
* <b>userid</b> <small>(short)</small> - user ID of the player who now has the flag
* <b>entindex</b> <small>(long)</small> - ent index of flag
 
=== air_dash ===
* <b>player</b> <small>(byte)</small>
 
=== landed ===
* <b>player</b> <small>(byte)</small>
 
=== vote_maps_changed ===
* <b>type</b> <small>(byte)</small>
* <b>type</b> <small>(byte)</small>
* <b>defindex</b> <small>(long)</small>
* <b>defindex</b> <small>(long)</small>
Line 1,661: Line 1,678:
* <b>erase_history</b> <small>(bool)</small>
* <b>erase_history</b> <small>(bool)</small>


== vote_options ==
=== schema_updated ===
* <b>count</b> <small>(byte)</small> - Number of options - up to MAX_VOTE_OPTIONS
 
* <b>option1</b> <small>(string)</small>
=== rd_rules_state_changed ===
* <b>option2</b> <small>(string)</small>
* <b>option3</b> <small>(string)</small>
* <b>option4</b> <small>(string)</small>
* <b>option5</b> <small>(string)</small>
* <b>voteidx</b> <small>(long)</small>


== vote_passed ==
=== duck_xp_level_up ===
* <b>details</b> <small>(string)</small>
* <b>level</b> <small>(short)</small> - leveled up to what
* <b>param1</b> <small>(string)</small>
* <b>team</b> <small>(byte)</small>
* <b>voteidx</b> <small>(long)</small>


== vote_started ==
=== update_status_item ===
* <b>issue</b> <small>(string)</small>
* <b>index</b> <small>(byte)</small>
* <b>param1</b> <small>(string)</small>
* <b>object</b> <small>(byte)</small>
* <b>team</b> <small>(byte)</small>
* <b>initiator</b> <small>(long)</small> - entity id of the player who initiated the vote
* <b>voteidx</b> <small>(long)</small>


== weapon_equipped ==
=== parachute_deploy ===
* <b>class</b> <small>(string)</small>
* <b>index</b> <small>(short)</small> - entindex of the player
* <b>entindex</b> <small>(long)</small>


== winlimit_changed ==
=== parachute_holster ===
* <b>delay</b> <small>(float)</small>
* <b>index</b> <small>(short)</small> - entindex of the player

Latest revision as of 10:46, 20 May 2025

This article lists game events in Team Fortress 2. These were retrieved from serverevents.res, gameevents.res, modevents.res and replayevents.res in the resource folder.

Warning.pngWarning:Some events have parameter 'class' which cannot be accessed with dot syntax, i.e. params.class, as class is a reserved word in Squirrel. Instead, use string indexing like so: params["class"]
Tip.pngTip:To see what events fire during the game, download this script (right click and Save Page), place it into your tf/scripts/vscripts/ folder and run script_execute showevents in console.
Todo: Check which events are shared (if possible?)

Serverside

achievement_earned

  • player (byte) - entindex of the player
  • achievement (short) - achievement ID

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

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

ammo_pickup

  • ammo_index (long)
  • amount (long)
  • total (long)

arena_match_maxstreak

  • team (byte)
  • streak (byte)

arena_round_start

called when round is active, players can move

arena_win_panel

  • panel_style (byte) - for client to determine layout
  • winning_team (byte)
  • winreason (byte) - the reason the team won
  • cappers (string) - string where each character is a player index of someone that capped
  • flagcaplimit (short) - if win reason was flag cap limit, the value of the flag cap limit
  • blue_score (short) - red team score
  • red_score (short) - blue team score
  • blue_score_prev (short) - previous red team score
  • red_score_prev (short) - previous blue team score
  • round_complete (short) - is this a complete round, or the end of a mini-round
  • player_1 (short)
  • player_1_damage (short)
  • player_1_healing (short)
  • player_1_lifetime (short)
  • player_1_kills (short)
  • player_2 (short)
  • player_2_damage (short)
  • player_2_healing (short)
  • player_2_lifetime (short)
  • player_2_kills (short)
  • player_3 (short)
  • player_3_damage (short)
  • player_3_healing (short)
  • player_3_lifetime (short)
  • player_3_kills (short)
  • player_4 (short)
  • player_4_damage (short)
  • player_4_healing (short)
  • player_4_lifetime (short)
  • player_4_kills (short)
  • player_5 (short)
  • player_5_damage (short)
  • player_5_healing (short)
  • player_5_lifetime (short)
  • player_5_kills (short)
  • player_6 (short)
  • player_6_damage (short)
  • player_6_healing (short)
  • player_6_lifetime (short)
  • player_6_kills (short)

arrow_impact

  • attachedEntity (short)
  • shooter (short)
  • boneIndexAttached (short)
  • bonePositionX (float)
  • bonePositionY (float)
  • bonePositionZ (float)
  • boneAnglesX (float)
  • boneAnglesY (float)
  • boneAnglesZ (float)
  • projectileType (short)
  • isCrit (bool)

bonus_updated

  • numadvanced (short)
  • numbronze (short)
  • numsilver (short)
  • numgold (short)

break_breakable

  • entindex (long)
  • userid (short)
  • material (byte) - BREAK_GLASS, BREAK_WOOD, etc

break_prop

  • entindex (long)
  • userid (short)

building_healed

  • building (short)
  • healer (short)
  • amount (short)

christmas_gift_grab

  • userid (short)

cl_drawline

  • player (byte) - index of the player
  • panel (byte) - type of panel
  • line (byte) - type of line
  • x (float)
  • y (float)

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_disconnect

client side disconnect message

  • message (string) - Why are we disconnecting? This could be a localization token or an English-language string

client_fullconnect

  • address (string) - Name we used to connect to the server
  • ip (long)
  • port (short) - server port

competitive_stats_update

  • index (short) - entindex of the player
  • kills_rank (byte) - num std deviations above
  • score_rank (byte)
  • damage_rank (byte)
  • healing_rank (byte)
  • support_rank (byte)

competitive_victory

conga_kill

  • index (short) - entindex of the player

controlpoint_endtouch

  • player (short) - entindex of the player
  • area (short) - index of the control point area

controlpoint_fake_capture

  • player (short) - entindex of the player
  • int_data (short)

controlpoint_fake_capture_mult

  • player (short) - entindex of the player
  • int_data (short)

controlpoint_pulse_element

  • player (short) - entindex of the player

controlpoint_starttouch

  • player (short) - entindex of the player
  • area (short) - index of the control point area

controlpoint_updatecapping

  • index (short) - index of the cap being updated

controlpoint_updateimages

  • index (short) - index of the cap being updated

controlpoint_updatelayout

  • index (short) - index of the cap being updated

controlpoint_updateowner

  • index (short) - index of the cap being updated

cross_spectral_bridge

  • player (short) - userid of the player that crossed

crossbow_heal

  • healer (byte) - userid of the Healer
  • target (byte) - userid of the player that got hit
  • amount (short) - amount that was healed

ctf_flag_captured

  • capping_team (short)
  • capping_team_score (short)

damage_mitigated

  • mitigator (byte) - userid of the player who provided the mitigation
  • damaged (byte) - userid of the player who took the damage
  • amount (short) - amount that was mitigated
  • itemdefindex (short) - defindex of the item that provided the mitigation

damage_prevented

  • preventor (short) - Who prevented the damage
  • victim (short) - Who took the damage that was prevented
  • amount (short) - How much got prevented
  • condition (short) - Which condition did the preventing

damage_resisted

  • entindex (byte)

deadringer_cheat_death

  • spy (byte) - userid of the Spy that cheat the death
  • attacker (byte) - userid of the player that caused the cheat death to happen

demoman_det_stickies

  • player (short) - entindex of the detonating player

deploy_buff_banner

  • buff_type (byte) - type of buff (skin index)
  • buff_owner (short) - user ID of the person who gets the banner

doomsday_rocket_open

  • team (byte) - which team opened the rocket

duel_status

  • killer (short)
  • score_type (short)
  • initiator (short)
  • target (short)
  • initiator_score (short)
  • target_score (short)

enter_vehicle

  • vehicle (long) - entindex of the vehicle

entity_killed

  • entindex_killed (long)
  • entindex_attacker (long)
  • entindex_inflictor (long)
  • damagebits (long)

environmental_death

  • killer (byte) - index of the killer
  • victim (byte) - index of the victim

escape_hell

  • player (short) - userid of the player that escaped

escaped_loot_island

  • player (short) - userid of the escaping player

eyeball_boss_escape_imminent

  • level (short)
  • time_remaining (byte)

eyeball_boss_escaped

  • level (short)

eyeball_boss_killed

  • level (short)

eyeball_boss_killer

  • level (short)
  • player_entindex (byte)

eyeball_boss_stunned

  • level (short)
  • player_entindex (byte)

eyeball_boss_summoned

  • level (short)

fish_notice

  • userid (short) - user ID who died
  • victim_entindex (long)
  • inflictor_entindex (long) - ent index of inflictor (a sentry, for example)
  • attacker (short) - user ID who killed
  • weapon (string) - weapon name killer used
  • weaponid (short) - ID of weapon killed used
  • damagebits (long) - bits of type of damage
  • customkill (short) - type of custom kill
  • assister (short) - user ID of assister
  • weapon_logclassname (string) - weapon name that should be printed on the log
  • stun_flags (short) - victim's stun flags at the moment of death
  • death_flags (short) - death flags.
  • silent_kill (bool)
  • assister_fallback (string) - contains a string to use if "assister" is -1

fish_notice__arm

  • userid (short) - user ID who died
  • victim_entindex (long)
  • inflictor_entindex (long) - ent index of inflictor (a sentry, for example)
  • attacker (short) - user ID who killed
  • weapon (string) - weapon name killer used
  • weaponid (short) - ID of weapon killed used
  • damagebits (long) - bits of type of damage
  • customkill (short) - type of custom kill
  • assister (short) - user ID of assister
  • weapon_logclassname (string) - weapon name that should be printed on the log
  • stun_flags (short) - victim's stun flags at the moment of death
  • death_flags (short) - death flags.
  • silent_kill (bool)
  • assister_fallback (string) - contains a string to use if "assister" is -1

flag_carried_in_detection_zone

flare_ignite_npc

  • entindex (long) - entity ignited


game_end

a game ended

  • winner (byte) - winner team/user id

game_init

sent when a new game is started

game_message

a message send by game logic to everyone

  • target (byte) - 0 = console, 1 = HUD
  • text (string) - the message text

game_start

a new game starts

  • roundslimit (long) - max round
  • timelimit (long) - time limit
  • fraglimit (long) - frag limit
  • objective (string) - round objective

gameui_activate

gameui_hide

halloween_boss_killed

  • boss (short) - 1=HHH 2=Monoculus 3=Merasmus
  • killer (short) - userid of the killing player

halloween_duck_collected

  • collector (short) - userid of the collecting player

halloween_pumpkin_grab

  • userid (short)

halloween_skeleton_killed

  • player (short) - userid of the player that killed the skeleton

halloween_soul_collected

  • intended_target (byte) - userid of the intended target
  • collecting_player (byte) - userid of the player who picked up the soul
  • soul_count (byte) - number of souls collected (gift boxes)

helicopter_grenade_punt_miss

host_quit

intro_finish

  • player (short) - entindex of the player

intro_nextcamera

  • player (short) - entindex of the player

item_found

  • player (byte) - entindex of the player
  • quality (byte) - quality of the item
  • method (byte) - method by which we acquired the item
  • itemdef (long) - the item definition index
  • isstrange (byte)
  • isunusual (byte)
  • wear (float)

item_pickup

  • userid (short)
  • item (string)

item_schema_initialized

kill_in_hell

  • killer (short) - userid of the killer
  • victim (short) - userid of the victim

kill_refills_meter

  • index (short) - entindex of the player

killed_capping_player

  • cp (byte) - index of the point
  • killer (byte) - index of the killer
  • victim (byte) - index of the victim
  • assister (byte) - index of the assister

leave_vehicle

  • vehicle (long) - entindex of the vehicle

medic_death

  • userid (short) - user ID who died
  • attacker (short) - user ID who killed
  • healing (short) - amount healed in this life
  • charged (bool) - had a full ubercharge?

medic_defended

  • userid (short)
  • medic (short)

medigun_shield_blocked_damage

  • userid (short) - user ID of the player using the shield
  • damage (float) - damage that was blocked

merasmus_escape_warning

  • level (short)
  • time_remaining (byte)

merasmus_escaped

  • level (short)

merasmus_killed

  • level (short)

merasmus_prop_found

  • player (short) - userid of the player that found the prop Merasmus was hiding in

merasmus_stunned

  • player (short) - userid of the stunning player

merasmus_summoned

  • level (short)

minigame_win

  • team (byte) - which team won the minigame
  • type (byte) - what type of minigame was won

minigame_won

  • player (short) - userid of the winning player
  • game (short) - index of the game

mvm_adv_wave_complete_no_gates

  • index (short) - wave index

mvm_adv_wave_killed_stun_radio

mvm_begin_wave

  • wave_index (short)
  • max_waves (short)
  • advanced (short)

mvm_bomb_alarm_triggered

mvm_bomb_carrier_killed

  • level (short) - upgrade level of the carrier

mvm_bomb_deploy_reset_by_player

  • player (short)

mvm_bomb_reset_by_player

  • player (short)

mvm_creditbonus_all

mvm_creditbonus_all_advanced

mvm_creditbonus_wave

mvm_kill_robot_delivering_bomb

  • player (short) - entindex of the player

mvm_mannhattan_pit

mvm_medic_powerup_shared

  • player (short) - entindex of the player

mvm_mission_complete

  • mission (string)

mvm_mission_update

  • class (short)
  • count (short)

mvm_pickup_currency

  • player (short) - entindex of the player
  • currency (short)

mvm_quick_sentry_upgrade

  • player (short) - entindex of the player

mvm_reset_stats

mvm_scout_marked_for_death

  • player (short) - entindex of the player

mvm_sentrybuster_detonate

  • player (short) - entindex of the target player
  • det_x (float) - origin of the sentry buster
  • det_y (float)
  • det_z (float)

mvm_sentrybuster_killed

  • sentry_buster (short) - entindex

mvm_sniper_headshot_currency

  • userid (short) - user ID of the player
  • currency (short) - currency collected

mvm_tank_destroyed_by_players

mvm_wave_complete

  • advanced (bool) - is this an advanced popfile

mvm_wave_failed

nav_blocked

  • area (long)
  • blocked (bool)

npc_hurt

Fired when an Engineer building (obj_sentrygun, obj_dispenser, obj_teleporter), base_boss, MvM tank (tank_boss) or Halloween enemy (headless_hatman, eyeball_boss, merasmus, tf_zombie) is damaged.

  • entindex (short)
  • health (short)
  • attacker_player (short)
  • weaponid (short)
  • damageamount (short)
  • crit (bool)
  • boss (short) - 1=HHH 2=Monoculus 3=Merasmus

num_cappers_changed

  • index (short) - index of the trigger
  • count (byte) - number of cappers (-1 for blocked)

object_deflected

  • userid (short) - player who deflected the object
  • ownerid (short) - owner of the object
  • weaponid (short) - weapon id (0 means the player in ownerid was pushed)
  • object_entindex (short) - entindex of the object that got deflected

object_destroyed

  • userid (short) - user ID who died
  • attacker (short) - user ID who killed
  • assister (short) - user ID of assister
  • weapon (string) - weapon name killer used
  • weaponid (short) - id of the weapon used
  • objecttype (short) - type of object destroyed
  • index (short) - index of the object destroyed
  • was_building (bool) - object was being built when it died
  • team (short) - building's team

object_detonated

  • userid (short) - user ID of the object owner
  • objecttype (short) - type of object removed
  • index (short) - index of the object removed

object_removed

  • userid (short) - user ID of the object owner
  • objecttype (short) - type of object removed
  • index (short) - index of the object removed

overtime_nag

pass_ball_blocked

  • owner (short)
  • blocker (short)

pass_ball_stolen

  • victim (short)
  • attacker (short)

pass_free

  • owner (short)
  • attacker (short)

pass_get

  • owner (short)
  • team (short)

pass_pass_caught

  • passer (short)
  • catcher (short)
  • dist (float)
  • duration (float)

pass_score

  • scorer (short)
  • assister (short)
  • points (byte)

path_track_passed

  • index (short) - entity handle of the node being passed (not the index!)
Tip.pngTip:To retrieve the entity index and therefore the script handle: EntIndexToHScript(params.index & (Constants.Server.MAX_EDICTS - 1))

payload_pushed

  • pusher (byte) - userid of the player who pushed
  • distance (short) - how far they pushed

physgun_pickup

  • entindex (long) - entity picked up

player_abandoned_match

  • game_over (bool)

player_activate

  • userid (short) - user ID on server

player_askedforball

  • userid (short)

player_buff

  • userid (short) - user ID of the player the buff is being applied to
  • buff_owner (short) - user ID of the player with the banner
  • buff_type (byte) - type of buff

player_builtobject

  • userid (short) - user ID of the builder
  • object (short) - type of object built
  • index (short) - index of the object

player_buyback

  • player (short)
  • cost (short)

player_carryobject

  • userid (short) - user ID of the builder
  • object (short) - type of object built
  • index (short) - index of the object

player_changeclass

  • userid (short) - user ID who changed class
  • class (short) - class that they changed to

player_changename

  • userid (short) - user ID on server
  • oldname (string) - players old (current) name
  • newname (string) - players new name

player_chargedeployed

  • userid (short) - user ID of medic who deployed charge
  • targetid (short) - user ID of who the medic charged

player_chat

a public player chat

  • teamonly (bool) - true if team only chat
  • userid (short) - chatting player
  • text (string) - chat text

player_class

a player changed his class

  • userid (short) - user ID on server
  • class (string) - new player class / model

player_connect

A new client has connected. This does NOT fire between level changes as the player is already connected. Use player_spawn instead if you need to catch every player entity that is created.

  • 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_death

Fired when a player dies. This shows up in the kill feed.

Warning.pngWarning:This also fires when a Spy feigns death using the Dead Ringer. Make sure to check for this case using if (params.death_flags & 32)!
  • userid (short) - user ID who died
  • victim_entindex (long)
  • inflictor_entindex (long) - ent index of inflictor (a sentry, for example)
  • attacker (short) - user ID who killed
Warning.pngWarning:If you are retrieving a handle from this, i.e. with GetPlayerFromUserID, ALWAYS check if it's not null first! If the player died from the environment or NPCs, the attacker handle will be null.
  • weapon (string) - weapon name killer used
  • weaponid (short) - ID of weapon killer used
  • damagebits (long) - bits of type of damage
  • customkill (short) - type of custom kill
  • assister (short) - user ID of assister
  • weapon_logclassname (string) - weapon name that should be printed on the log
  • stun_flags (short) - victim's stun flags at the moment of death
  • death_flags (short) - death flags
  • silent_kill (bool)
  • playerpenetratecount (short)
  • assister_fallback (string) - contains a string to use if "assister" is -1
  • kill_streak_total (short) - Kill streak count (level)
  • kill_streak_wep (short) - Kill streak for killing weapon
  • kill_streak_assist (short) - Kill streak for assister count
  • kill_streak_victim (short) - Victims kill streak
  • ducks_streaked (short) - Duck streak increment from this kill
  • duck_streak_total (short) - Duck streak count for attacker
  • duck_streak_assist (short) - Duck streak count for assister
  • duck_streak_victim (short) - (former) duck streak count for victim
  • rocket_jump (bool) - was the victim rocket jumping
  • weapon_def_index (long) - item def index of weapon killer used
  • crit_type (short) - Crit type of kill. 0: None 1: Mini 2: Full
Note.pngNote:The fields below are unused, check death_flags instead.
  • dominated (short) - did killer dominate victim with this kill
  • assister_dominated (short) - did assister dominate victim with this kill
  • revenge (short) - did killer get revenge on victim with this kill
  • assister_revenge (short) - did assister get revenge on victim with this kill
  • first_blood (bool) - was this a first blood kill
  • feign_death (bool) - the victim is feign death

player_destroyed_pipebomb

  • userid (short)

player_directhit_stun

  • attacker (short) - entindex of the attacker
  • victim (short) - entindex of the victim

player_disconnect

A client has disconnected. The player handle and script scope still exists when this event fires, as it persists for a frame after disconnect.

  • 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_domination

  • dominator (short) - userID of who gained domination
  • dominated (short) - userID of who got dominated
  • dominations (short) - Number of dominations this dominator has

player_dropobject

  • userid (short) - user ID of the builder
  • object (short) - type of object built
  • index (short) - index of the object

player_escort_score

  • player (byte)
  • points (byte)

player_healed

  • patient (short)
  • healer (short)
  • amount (short)

player_healedmediccall

local player heals someone who called for medic.

  • userid (short) - userid of person who got healed

player_healonhit

  • amount (short)
  • entindex (byte)
  • weapon_def_index (long) - item def index of the healing weapon

player_highfive_cancel

  • entindex (byte)

player_highfive_start

  • entindex (byte)

player_highfive_success

  • initiator_entindex (byte)
  • partner_entindex (byte)

player_hurt

  • userid (short)
  • health (short) - if <= 0, then this will play the killsound
  • attacker (short)
  • damageamount (short)
  • custom (short)
  • showdisguisedcrit (bool) - if our attribute specifically crits disguised enemies we need to show it on the client
  • crit (bool) - legacy only, use bonuseffect
  • minicrit (bool) - legacy only, use bonuseffect
  • allseecrit (bool)
  • weaponid (short)
  • bonuseffect (byte) - type of damage effect, see constants page.
Warning.pngWarning:A value of 4 is no damage effect. 0 is crits!

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_initial_spawn

  • index (short) - entindex of the player

player_invulned

  • userid (short)
  • medic_userid (short)

player_killed_achievement_zone

  • attacker (short) - entindex of the attacker
  • victim (short) - entindex of the victim
  • zone_id (short) - type of area (0 for general, 1 for capture zone)

player_regenerate

player_rocketpack_pushed

  • pusher (short) - userID of who pushed
  • pushed (short) - userID of who got pushed

player_sapped_object

  • userid (short) - user ID of the spy
  • ownerid (short) - user ID of the building owner
  • object (byte)
  • sapperid (short) - index of the sapper

player_say

  • userid (short) - user ID on server
  • text (string) - the say 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_score_changed

  • player (byte)
  • delta (short)

player_shoot

Note.pngNote:Not implemented.
  • userid (short) - user ID on server
  • weapon (byte) - weapon ID
  • mode (byte) - weapon mode

player_spawn

This event will be sent once when the player entity is created, i.e. they joined the server or they are loading in after a map change. In this case, team is equal to 0 (unassigned). Each time afterwards, the event will only be fired when the player spawns alive on red or blue team. This is also fired once when SourceTV is loaded in.

  • userid (short) - user ID who spawned
  • team (short) - team they spawned on
  • class (short) - class they spawned as

player_stealsandvich

  • owner (short)
  • target (short)

player_stunned

  • stunner (short)
    Warning.pngWarning:If there's no attacker, this key won't exist (such as being stunned after hitting a wall with a bumper kart)
  • victim (short)
  • victim_capping (bool)
  • big_stun (bool)

player_team

Fired when player joins a 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_teleported

  • userid (short) - userid of the player
  • builderid (short) - userid of the player who built the teleporter
  • dist (float) - distance the player was teleported

player_turned_to_ghost

  • userid (short) - user ID of the player who changed to a ghost

player_upgraded

player_upgradedobject

  • userid (short) - user ID of the builder
  • object (short) - type of object built
  • index (short) - index of the object
  • isbuilder (bool)

player_use

  • userid (short) - user ID on server
  • entity (short) - entity used by player

player_used_powerup_bottle

  • player (short)
  • type (short)
  • time (float)

post_inventory_application

Fired when the player has items resupplied, i.e. when the player spawns or touches resupply (func_regenerate).

  • userid (short)

projectile_direct_hit

  • attacker (byte) - index of the player who shot the projectile
  • victim (byte) - index of the player who got direct-ht
  • weapon_def_index (long) - defindex of the direct hitting weapon

projectile_removed

  • attacker (byte)
  • weapon_def_index (long)
  • num_hit (byte)
  • num_direct_hit (byte)

pumpkin_lord_killed

pumpkin_lord_summoned

pve_win_panel

  • panel_style (byte) - for client to determine layout
  • winning_team (byte)
  • winreason (byte) - the reason the team won

quest_map_data_changed

  • igniter (short) - entindex of the igniter
  • douser (short) - entindex of the douser
  • victim (short) - entindex of the victim

quest_progress

  • owner (short)
  • scorer (short)
  • type (byte)
  • completed (bool)
  • quest_defindex (long)

ragdoll_dissolved

  • entindex (long)

raid_spawn_mob

raid_spawn_squad

rd_player_score_points

  • player (short)
  • method (short)
  • amount (short)

rd_robot_impact

  • entindex (short)
  • impulse_x (float)
  • impulse_y (float)
  • impulse_z (float)

rd_robot_killed

  • userid (short) - user ID who died
  • victim_entindex (long)
  • inflictor_entindex (long) - ent index of inflictor (a sentry, for example)
  • attacker (short) - user ID who killed
  • weapon (string) - weapon name killer used
  • weaponid (short) - ID of weapon killed used
  • damagebits (long) - bits of type of damage
  • customkill (short) - type of custom kill
  • weapon_logclassname (string) - weapon name that should be printed on the log

recalculate_holidays

recalculate_truce

rematch_failed_to_create

  • map_index (byte) - what they voted for
  • vote (byte) - what the vote was

remove_nemesis_relationships

  • player (short) - entindex of the player who should reset

replay_endrecord

replay_replaysavailable

replay_servererror

  • error (string)

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_startrecord

Sent when the server begins recording - only used to display UI

respawn_ghost

  • reviver (short) - userid of the reviving player
  • ghost (short) - userid of the player that got revived

revive_player_complete

  • entindex (short) - entindex of the medic

revive_player_notify

  • entindex (short)
  • marker_entindex (short)

revive_player_stopped

  • entindex (short)

rocket_jump

  • userid (short)
  • playsound (bool)

rocket_jump_landed

  • userid (short)

rocketpack_landed

  • userid (short)

rocketpack_launch

  • userid (short)
  • playsound (bool)

round_end

  • winner (byte) - winner team/user i
  • reason (byte) - reson why team won
  • message (string) - end round message

round_start

  • timelimit (long) - round time limit in seconds
  • fraglimit (long) - frag limit in seconds
  • objective (string) - round objective

rps_taunt_event

  • winner (short) - entindex of the winning player
  • winner_rps (byte) - winner's selection
  • loser (short) - entindex of the losing player
  • loser_rps (byte) - loser's selection

scorestats_accumulated_reset

Fired when round resets due to mp_restartgame.

scorestats_accumulated_update

Fired right before map entities are cleaned up for a round restart.

This event is not fired in Mann Vs Machine mode. For MvM, use recalculate_holidays and check if GetRoundState() === 3 is true, which indicates a mission reset.

scout_grand_slam

  • scout_id (short)
  • target_id (short)

sentry_on_go_active

  • index (short)

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_changelevel_failed

  • levelname (string) - The level name that failed changelevel

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_removeban

  • networkid (string) - player network (i.e steam) id
  • ip (string) - IP address
  • by (string) - removed by...

server_shutdown

server shut down

  • reason (string) - reason why server was shut down

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

show_match_summary

  • success (bool)

show_vs_panel

  • show (bool)

single_player_death

skeleton_killed_quest

  • player (short) - userid of the player that killed the skeleton

skeleton_king_killed_quest

  • player (short) - userid of the player that killed the skeleton

slap_notice

  • userid (short) - user ID who died
  • victim_entindex (long)
  • inflictor_entindex (long) - ent index of inflictor (a sentry, for example)
  • attacker (short) - user ID who killed
  • weapon (string) - weapon name killer used
  • weaponid (short) - ID of weapon killed used
  • damagebits (long) - bits of type of damage
  • customkill (short) - type of custom kill
  • assister (short) - user ID of assister
  • weapon_logclassname (string) - weapon name that should be printed on the log
  • stun_flags (short) - victim's stun flags at the moment of death
  • death_flags (short) - death flags.
  • silent_kill (bool)
  • assister_fallback (string) - contains a string to use if "assister" is -1


special_score

  • player (byte) - index of the scorer

spy_pda_reset

stats_resetround

sticky_jump

  • userid (short)
  • playsound (bool)

sticky_jump_landed

  • userid (short)

tagged_player_as_it

  • player (short) - userid of the tagging player

take_armor

  • amount (long)
  • total (long)

take_health

  • amount (long)
  • total (long)

team_info

info about team

  • teamid (byte) - unique team id
  • teamname (string) - team name eg "Team Blue"

team_leader_killed

  • killer (byte) - index of the killer
  • victim (byte) - index of the victim

team_score

team score changed

  • teamid (byte) - team id
  • score (short) - total team score

teamplay_alert

  • alert_type (short) - which alert type is this (scramble, etc)?

teamplay_broadcast_audio

  • team (byte) - which team should hear the broadcast. 0 will make everyone hear it.
  • sound (string) - sound to play
  • additional_flags (short) - additional sound flags to pass through to sound system
  • player (short) - entindex of the player source or -1

teamplay_capture_blocked

  • cp (byte) - index of the point that was blocked
  • cpname (string) - name of the point
  • blocker (byte) - index of the player that blocked the cap
  • victim (byte) - index of the player that died, causing the block

teamplay_capture_broken

  • cp (byte)
  • cpname (string)
  • time_remaining (float)

teamplay_flag_event

  • player (short) - player this event involves
  • carrier (short) - the carrier if needed
  • eventtype (short) - pick up, capture, defend, dropped
  • home (byte) - whether or not the flag was home (only set for TF_FLAGEVENT_PICKUP)
  • team (byte) - which team the flag belongs to

teamplay_game_over

  • reason (string) - why the game is over ( timelimit, winlimit )

teamplay_map_time_remaining

  • seconds (short)

teamplay_overtime_begin

teamplay_overtime_end

teamplay_point_captured

  • cp (byte) - index of the point that was captured
  • cpname (string) - name of the point
  • team (byte) - which team capped
  • cappers (string) - string where each character is a player index of someone that capped

teamplay_point_locked

  • cp (byte) - index of the point being captured
  • cpname (string) - name of the point
  • team (byte) - which team currently owns the point

teamplay_point_startcapture

  • cp (byte) - index of the point being captured
  • cpname (string) - name of the point
  • team (byte) - which team currently owns the point
  • capteam (byte) - which team is capping
  • cappers (string) - string where each character is a player index of someone capping
  • captime (float) - time between when this cap started and when the point last changed hands

teamplay_point_unlocked

  • cp (byte) - index of the point being captured
  • cpname (string) - name of the point
  • team (byte) - which team currently owns the point

teamplay_pre_round_time_left

  • time (short)

teamplay_ready_restart

teamplay_restart_round

teamplay_round_active

called when round is active, players can move

teamplay_round_restart_seconds

  • seconds (short)

teamplay_round_selected

  • round (string) - name of the round selected

teamplay_round_start

round restart

  • full_reset (bool) - is this a full reset of the map

teamplay_round_win

  • team (byte) - which team won the round
  • winreason (byte) - the reason the team won
  • flagcaplimit (short) - if win reason was flag cap limit, the value of the flag cap limit
  • full_round (short) - was this a full round or a mini-round
  • round_time (float) - elapsed time of this round
  • losing_team_num_caps (short) - # of caps this round by losing team
  • was_sudden_death (byte) - did a team win this after entering sudden death

teamplay_setup_finished

teamplay_suddendeath_begin

teamplay_suddendeath_end

teamplay_team_ready

  • team (byte) - which team is ready

teamplay_teambalanced_player

  • player (short) - entindex of the player
  • team (byte) - which team the player is being moved to

teamplay_timer_flash

  • time_remaining (short) - how many seconds until the round ends

teamplay_timer_time_added

  • timer (short) - entindex of the timer
  • seconds_added (short) - how many seconds were added to the round timer

teamplay_waiting_abouttoend

teamplay_waiting_begins

teamplay_waiting_ends

teamplay_win_panel

  • panel_style (byte) - for client to determine layout
  • winning_team (byte)
  • winreason (byte) - the reason the team won
  • cappers (string) - string where each character is a player index of someone that capped
  • flagcaplimit (short) - if win reason was flag cap limit, the value of the flag cap limit
  • blue_score (short) - red team score
  • red_score (short) - blue team score
  • blue_score_prev (short) - previous red team score
  • red_score_prev (short) - previous blue team score
  • round_complete (short) - is this a complete round, or the end of a mini-round
  • rounds_remaining (short) - # of rounds remaining for wining team, if mini-round
  • player_1 (short)
  • player_1_points (short)
  • player_2 (short)
  • player_2_points (short)
  • player_3 (short)
  • player_3_points (short)
  • killstreak_player_1 (short)
  • killstreak_player_1_count (short)
  • game_over (byte)

teams_changed

tf_game_over

  • reason (string) - why the game is over ( timelimit, winlimit )

tf_map_time_remaining

  • seconds (long)

throwable_hit

  • userid (short) - user ID who died
  • victim_entindex (long)
  • inflictor_entindex (long) - ent index of inflictor (a sentry, for example)
  • attacker (short) - user ID who killed
  • weapon (string) - weapon name killer used
  • weaponid (short) - ID of weapon killed used
  • damagebits (long) - bits of type of damage
  • customkill (short) - type of custom kill
  • assister (short) - user ID of assister
  • weapon_logclassname (string) - weapon name that should be printed on the log
  • stun_flags (short) - victim's stun flags at the moment of death
  • death_flags (short) - death flags.
  • silent_kill (bool)
  • assister_fallback (string) - contains a string to use if "assister" is -1
  • totalhits (short) - Number of hits his player has done

tournament_enablecountdown

tournament_stateupdate

  • userid (short) - user ID on server
  • namechange (bool)
  • readystate (short)
  • newname (string) - players new name

training_complete

  • next_map (string) - next map (if any)
  • map (string) - the name of the map this screen is on.
  • text (string) - text to show

upgrades_file_changed

  • path (string)

vote_cast

  • vote_option (byte) - which option the player voted on
  • team (short)
  • entityid (long) - entity id of the voter
  • voteidx (long)

vote_ended

vote_options

  • count (byte) - Number of options - up to MAX_VOTE_OPTIONS
  • option1 (string)
  • option2 (string)
  • option3 (string)
  • option4 (string)
  • option5 (string)
  • voteidx (long)

weapon_equipped

  • class (string)
  • entindex (long)

winlimit_changed

  • delay (float)

Clientside

spec_target_updated

show_freezepanel

  • killer (short) - entindex of the killer entity

hide_freezepanel

freezecam_started

controlpoint_initialized

controlpoint_unlock_updated

  • index (short) - index of the cap being updated
  • time (float) - time

controlpoint_timer_updated

  • index (short) - index of the cap being updated
  • time (float) - time

escort_speed

  • team (byte) - which team
  • speed (byte)
  • players (byte)

escort_progress

  • team (byte) - which team
  • progress (float)
  • reset (bool)

escort_recede

  • team (byte) - which team
  • recedetime (float)

vote_changed

  • vote_option1 (byte)
  • vote_option2 (byte)
  • vote_option3 (byte)
  • vote_option4 (byte)
  • vote_option5 (byte)
  • potentialVotes (byte)
  • voteidx (long)

gameui_activated

gameui_hidden

game_newmap

send when new map is completely loaded

  • mapname (string) - map name

items_acknowledged

  • blocker (short) - entindex of the blocker
  • victim (short) - entindex of the victim

store_pricesheet_updated

cart_updated

inventory_updated

hltv_changed_mode

  • oldmode (short)
  • newmode (short)
  • obs_target (short)

hltv_changed_target

  • mode (short)
  • old_target (short)
  • obs_target (short)

vote_failed

  • team (byte)
  • voteidx (long)

vote_started

  • issue (string)
  • param1 (string)
  • team (byte)
  • initiator (long) - entity id of the player who initiated the vote
  • voteidx (long)

vote_passed

  • details (string)
  • param1 (string)
  • team (byte)
  • voteidx (long)

replay_saved

replay_youtube_stats

  • views (long)
  • likes (long)
  • favorited (long)

base_player_teleported

  • entindex (short)

browse_replays

entered_performance_mode

building_info_changed

  • building_type (byte)
  • object_mode (byte)
  • remove (byte)

scout_slamdoll_landed

  • target_index (short)
  • x (float)
  • y (float)
  • z (float)

localplayer_changeteam

localplayer_changeclass

localplayer_becameobserver

localplayer_changedisguise

  • disguised (bool)

localplayer_builtobject

  • object (short) - type of object built
  • object_mode (short) - used for teleporters: entrance vs. exit
  • index (short) - index of the object

localplayer_chargeready

local player has full medic charge

localplayer_pickup_weapon

localplayer_respawn

localplayer_score_changed

  • score (short)

localplayer_winddown

local player minigun winddown

player_account_changed

  • old_value (short)
  • new_value (short)

localplayer_healed

  • amount (short)

player_currency_changed

  • currency (short)

player_calledformedic

  • userid (short)

player_healedbymedic

  • medic (byte)

player_pinned

  • pinned (byte)

hide_annotation

  • id (long)

show_annotation

  • worldPosX (float)
  • worldPosY (float)
  • worldPosZ (float)
  • worldNormalX (float)
  • worldNormalY (float)
  • worldNormalZ (float)
  • id (long)
  • text (string) - name (unlocalized)
  • lifetime (float)
  • visibilityBitfield (long) - bitfield of the players that can see this. If 0, everyone can see it
Warning.pngWarning:This was only intended for supporting 32 players, players above that index are not considered.
  • follow_entindex (long) - if this is set, follow this entity
  • show_distance (bool)
  • play_sound (string)
  • show_effect (bool)

player_bonuspoints

  • points (short)
  • player_entindex (short)
  • source_entindex (short)

rd_team_points_changed

  • points (short)
  • team (byte)
  • method (byte)

quest_objective_completed

For prediction

  • quest_item_id_low (long)
  • quest_item_id_hi (long)
  • quest_objective_id (long)
  • scorer_user_id (short)

quest_request

  • request (long)
  • msg (string) - Protobuf serialized to a string

quest_response

  • request (long)
  • success (bool)
  • msg (string) - Protobuf serialized to a string

quest_turn_in_state

  • state (short) - Maps to EQuestTurnInState

questlog_opened

lobby_updated

match_invites_updated

show_class_layout

  • show (bool)

arena_player_notification

  • player (byte)
  • message (byte)

mainmenu_stabilized

  • attacker (short)
  • victim (short)
  • assister (short)

player_stats_updated

  • forceupload (bool)

player_mvp

  • player (short)

party_chat

  • steamid (string) - steamID (64-bit value converted to string) of user who said or did the thing. May be
  • text (string) - The message. May have different meaning for some types
  • type (short) - What sort of message? ETFPartyChatType enum

party_member_join

  • steamid (string) - steamID (64-bit value converted to string) of joined

party_member_leave

  • steamid (string) - steamID (64-bit value converted to string) of leaver

party_criteria_changed

party_invites_changed

party_pref_changed

party_queue_state_changed

  • matchgroup (short) - ETFMatchGroup

party_updated

playing_commentary

achievement_earned_local

  • achievement (short)

user_data_downloaded

fired when achievements/stats are downloaded from Steam or XBox Live

econ_inventory_connected

gc_lost_session

gc_new_session

player_hintmessage

  • hintmessage (string) - localizable string of a hint

restart_timer_time

  • time (byte) - How much time is left

teamplay_update_timer

teamplay_round_stalemate

  • reason (byte) - why the stalemate is occuring

player_ignited_inv

sent when a player is ignited by a pyro who is being invulned, only to the medic who's doing the invulning

  • pyro_entindex (byte) - entindex of the pyro who ignited the victim
  • victim_entindex (byte) - entindex of the player ignited by the pyro
  • medic_entindex (byte) - entindex of the medic releasing the invuln

player_ignited

sent when a player is ignited, only to the two players involved

  • pyro_entindex (byte) - entindex of the pyro who ignited the victim
  • victim_entindex (byte) - entindex of the player ignited by the pyro
  • weaponid (byte) - weaponid of the weapon used

player_damaged

  • amount (short)
  • type (long)

player_jarated

sent when a player is jarated, only to the two players involved

  • thrower_entindex (byte) - entindex of the player who threw the jarate
  • victim_entindex (byte) - entindex of the player receiving it

player_jarated_fade

sent when a player is jarated, only to the two players involved

  • thrower_entindex (byte) - entindex of the player who threw the jarate
  • victim_entindex (byte) - entindex of the player receiving it

player_shield_blocked

sent when a player is jarated, only to the two players involved

  • attacker_entindex (byte) - entindex of the player who threw the jarate
  • blocker_entindex (byte) - entindex of the player receiving it

player_extinguished

sent when a burning player is extinguished by a medic

  • victim (byte) - entindex of the player that was extinguished
  • healer (byte) - entindex of the player who did the extinguishing
  • itemdefindex (short) - item defindex that did the extinguishing

player_damage_dodged

  • damage (short)

flagstatus_update

  • userid (short) - user ID of the player who now has the flag
  • entindex (long) - ent index of flag

air_dash

  • player (byte)

landed

  • player (byte)

vote_maps_changed

  • type (byte)
  • defindex (long)
  • created (bool)
  • deleted (bool)
  • erase_history (bool)

schema_updated

rd_rules_state_changed

duck_xp_level_up

  • level (short) - leveled up to what

update_status_item

  • index (byte)
  • object (byte)

parachute_deploy

  • index (short) - entindex of the player

parachute_holster

  • index (short) - entindex of the player