<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alliedmods.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RedSword</id>
	<title>AlliedModders Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alliedmods.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RedSword"/>
	<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/Special:Contributions/RedSword"/>
	<updated>2026-05-25T23:41:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.6</generator>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9925</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9925"/>
		<updated>2015-06-20T18:46:20Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* SDKHook_OnTakeDamageAlive */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damages another, inflictor should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamageAlive===&lt;br /&gt;
This hook works in a similar way to SDKHook_OnTakeDamage but it gives the [https://bugs.alliedmods.net/show_bug.cgi?id=6249#c7 actual, calculated damage amount done to the player. The pre-hook will fire after an OnTakeDamage pre-hook, and the post-hook will fire before an OnTakeDamage post-hook. The health is subtracted in between pre and post unless the hook is blocked.] {{pr|149}}&lt;br /&gt;
&lt;br /&gt;
[https://forums.alliedmods.net/showthread.php?p=2309798#post2309798 OnTakeDamageAlive is also only called for players.]&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;br /&gt;
&lt;br /&gt;
===Regarding SDKHook_OnTakeDamage and SDKHook_OnTakeDamageAlive===&lt;br /&gt;
&lt;br /&gt;
SDKHook_OnTakeDamage/Post is triggered when hitting a teammate with mp_friendlyfire 0, but not SDKHook_OnTakeDamageAlive.&lt;br /&gt;
&lt;br /&gt;
==Under TF2==&lt;br /&gt;
Under tf2, the &amp;quot;normal&amp;quot; takedamage hook isn't 100% accurate, it's damage param is the weapon's base damage. the DMG_CRIT flag is for both crit and minicrit, spread and minicrit/crit damage is done after this call.&lt;br /&gt;
&lt;br /&gt;
The modified crit damage is available in SDKHook_OnTakeDamageAlive/Post.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
Shotgun = DMG_BUCKSHOT | DMG_SLOWBURN&lt;br /&gt;
&lt;br /&gt;
Rocket Launcher = DMG_SLOWBURN | DMG_RADIATION | DMG_BLAST&lt;br /&gt;
&lt;br /&gt;
If a crit, |= DMG_CRIT&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Black_Mesa_Events&amp;diff=9923</id>
		<title>Black Mesa Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Black_Mesa_Events&amp;diff=9923"/>
		<updated>2015-06-03T17:45:15Z</updated>

		<summary type="html">&lt;p&gt;RedSword: Adding BMS events&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:''Refer back to [[Game Events (Source)]] for more events.''&lt;br /&gt;
&lt;br /&gt;
The events are taken from steamapps\common\Black Mesa\bms\bms_misc_dir.vpk\resource\gameevents.res . Note that the file also contains the generic source events (BMS doesn't seem to have a separate modevents.res), which most were removed from this page as they do not differ, and for presentation purpose. Only player_death (which is presented here) seems to differ from the generic source event list.&lt;br /&gt;
&lt;br /&gt;
=== freezecam_started ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|freezecam_started|string}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== spec_target_updated ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|spec_target_updated|string}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== show_freezepanel ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|show_freezepanel|string}}&lt;br /&gt;
{{hl2msg|long|killer|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hide_freezepanel ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|hide_freezepanel|string}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_dominated ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|player_dominated|string}}&lt;br /&gt;
{{hl2msg|short|attacker|}}&lt;br /&gt;
{{hl2msg|short|dominated|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_revenge ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|player_revenge|string}}&lt;br /&gt;
{{hl2msg|short|attacker|}}&lt;br /&gt;
{{hl2msg|short|victim|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_death ===&lt;br /&gt;
{{qnotice|a game event, name may be 32 charaters long}}&lt;br /&gt;
{{begin-hl2msg|player_death|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who died}}&lt;br /&gt;
{{hl2msg|short|attacker|user ID who killed}}&lt;br /&gt;
{{hl2msg|string|weapon|name of the weapon used}}&lt;br /&gt;
{{hl2msg|short|customkill|}}&lt;br /&gt;
{{hl2msg|short|priority|}}&lt;br /&gt;
{{hl2msg|float|victim_x|}}&lt;br /&gt;
{{hl2msg|float|victim_y|}}&lt;br /&gt;
{{hl2msg|float|victim_z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== broadcast_killstreak ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|broadcast_killstreak|string}}&lt;br /&gt;
{{hl2msg|short|playerid|ID of the player that triggered this event}}&lt;br /&gt;
{{hl2msg|byte|soundid|type must be changed if sounds amount exceed 2^8}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== broadcast_teamsound ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|broadcast_teamsound|string}}&lt;br /&gt;
{{hl2msg|short|teamid|ID of the team that will hear this sound}}&lt;br /&gt;
{{hl2msg|byte|soundid|type must be changed if sounds amount exceed 2^8}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_soda_machine ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|player_soda_machine|string}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_pickup ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|item_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who died}}&lt;br /&gt;
{{hl2msg|short|itemid|item ID}}&lt;br /&gt;
{{hl2msg|short|ammoid|ammo ID if applicable}}&lt;br /&gt;
{{hl2msg|short|weaponid|weapon ID if applicable}}&lt;br /&gt;
{{hl2msg|short|count|used for things like ammo on how much was given from this particular item}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_pickup ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|weapon_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who died}}&lt;br /&gt;
{{hl2msg|short|weaponid|weapon ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tram_accelerate ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|tram_accelerate|string}}&lt;br /&gt;
{{hl2msg|long|entindex|}}&lt;br /&gt;
{{hl2msg|short|level|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== fire_mortar ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|fire_mortar|string}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tram_client_state_change ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|tram_client_state_change|string}}&lt;br /&gt;
{{hl2msg|long|entindex|}}&lt;br /&gt;
{{hl2msg|short|speed|}}&lt;br /&gt;
{{hl2msg|short|level|}}&lt;br /&gt;
{{hl2msg|float|accel|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tram_control_state ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|tram_control_state|string}}&lt;br /&gt;
{{hl2msg|long|entindex|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_tau_overcharged ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|weapon_tau_overcharged|string}}&lt;br /&gt;
{{hl2msg|long|owner|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_gluon_fired ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|weapon_gluon_fired|string}}&lt;br /&gt;
{{hl2msg|long|owner|}}&lt;br /&gt;
{{hl2msg|long|ammo_used|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== npc_barnacle_grab_victim ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|npc_barnacle_grab_victim|string}}&lt;br /&gt;
{{hl2msg|long|entindex|}}&lt;br /&gt;
{{hl2msg|long|victim|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== damage_indicator ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|damage_indicator|string}}&lt;br /&gt;
{{hl2msg|long|entindex|Player}}&lt;br /&gt;
{{hl2msg|long|type|Damage type}}&lt;br /&gt;
{{end-hl2msg}}&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Game_Events_(Source)&amp;diff=9922</id>
		<title>Game Events (Source)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Game_Events_(Source)&amp;diff=9922"/>
		<updated>2015-06-03T17:39:58Z</updated>

		<summary type="html">&lt;p&gt;RedSword: Adding BMS events&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are all the games that the Source engine covers (that we could find).&lt;br /&gt;
* [[Generic Source Events]]&lt;br /&gt;
* [[Generic Source Server Events]]&lt;br /&gt;
* [[Alien Swarm Events]]&lt;br /&gt;
* [[Black Mesa Events]]&lt;br /&gt;
* [[Counter-Strike: Source Events]]&lt;br /&gt;
* [[Counter-Strike: Global Offensive Events]]&lt;br /&gt;
* [[Day of Defeat: Source Events]]&lt;br /&gt;
* [[Dota 2 Events]]&lt;br /&gt;
* [[Dystopia Events]]&lt;br /&gt;
* [[Garry's Mod Events]]&lt;br /&gt;
* [[Half-Life 2: Capture the Flag Events]]&lt;br /&gt;
* [[Half-Life 2: Deathmatch Events]]&lt;br /&gt;
* [[Hidden: Source Events]]&lt;br /&gt;
* [[Insurgency: Source  Events]]&lt;br /&gt;
* [[Iron Grip: Source  Events]]&lt;br /&gt;
* [[Left 4 Dead Events]]&lt;br /&gt;
* [[Left 4 Dead 2 Events]]&lt;br /&gt;
* [[Neotokyo Events]]&lt;br /&gt;
* [[No More Room in Hell]]&lt;br /&gt;
* [[Nuclear Dawn Events]]&lt;br /&gt;
* [[Perfect Dark: Source Events]]&lt;br /&gt;
* [[Pirates, Vikings, Knights II Events]]&lt;br /&gt;
* [[SourceForts Events]]&lt;br /&gt;
* [[Team Fortress 2 Events]]&lt;br /&gt;
* [[Zombie Panic! Source Events]]&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
[[User:Shane|Shane]] - Writing some of the events pages and organization and general wikiknowhow&amp;lt;br /&amp;gt;&lt;br /&gt;
[[User:FlyingMongoose|FlyingMongoose]] - Writing a lot of the events pages&amp;lt;br /&amp;gt;&lt;br /&gt;
[[User:sslice|sslice]] - For creating a wikitizer application for these events&amp;lt;br /&amp;gt;&lt;br /&gt;
[[User:RedSword|RedSword]] - For creating a wikitizer [https://forums.alliedmods.net/showthread.php?p=2268802#post2268802 application] for these events&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Metamod:Source Development]]&lt;br /&gt;
[[Category:SourceMod Development]]&lt;br /&gt;
[[Category:SourceMod Scripting]]&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Counter-Strike:_Global_Offensive_Events&amp;diff=9914</id>
		<title>Counter-Strike: Global Offensive Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Counter-Strike:_Global_Offensive_Events&amp;diff=9914"/>
		<updated>2015-05-26T16:24:59Z</updated>

		<summary type="html">&lt;p&gt;RedSword: added &amp;lt;nowiki&amp;gt; tags @ those '='/* player_hurt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:''Refer back to [[Game Events (Source)]] for more events.''&lt;br /&gt;
&lt;br /&gt;
=== player_death ===&lt;br /&gt;
{{qnotice|When a client dies}}&lt;br /&gt;
{{begin-hl2msg|player_death|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who died}}&lt;br /&gt;
{{hl2msg|short|attacker|user ID who killed}}&lt;br /&gt;
{{hl2msg|short|assister|user ID who assisted in the kill}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name killer used }}&lt;br /&gt;
{{hl2msg|string|weapon_itemid|inventory item id of weapon killer used}}&lt;br /&gt;
{{hl2msg|string|weapon_fauxitemid|faux item id of weapon killer used}}&lt;br /&gt;
{{hl2msg|string|weapon_originalowner_xuid|}}&lt;br /&gt;
{{hl2msg|bool|headshot|singals a headshot}}&lt;br /&gt;
{{hl2msg|short|dominated|did killer dominate victim with this kill}}&lt;br /&gt;
{{hl2msg|short|revenge|did killer get revenge on victim with this kill}}&lt;br /&gt;
{{hl2msg|short|penetrated|number of objects shot penetrated before killing target}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_hurt ===&lt;br /&gt;
{{qnotice|When a client is damaged}}&lt;br /&gt;
{{begin-hl2msg|player_hurt|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who was hurt}}&lt;br /&gt;
{{hl2msg|short|attacker|user ID who attacked}}&lt;br /&gt;
{{hl2msg|byte|health|remaining health points}}&lt;br /&gt;
{{hl2msg|byte|armor|remaining armor points}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name attacker used, if not the world}}&lt;br /&gt;
{{hl2msg|short|dmg_health|damage done to health}}&lt;br /&gt;
{{hl2msg|byte|dmg_armor|damage done to armor}}&lt;br /&gt;
{{hl2msg|byte|hitgroup|hitgroup that was damaged ; &amp;lt;nowiki&amp;gt;1=hs 2=upper torso 3=lower torso 4=left arm 5=right arm 6=left leg 7=right leg&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_purchase ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|item_purchase|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|team|}}&lt;br /&gt;
{{hl2msg|string|weapon|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_beginplant ===&lt;br /&gt;
{{qnotice|When the bomb is starting to get planted}}&lt;br /&gt;
{{begin-hl2msg|bomb_beginplant|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who is planting the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_abortplant ===&lt;br /&gt;
{{qnotice|When the bomb planter stops planting the bomb}}&lt;br /&gt;
{{begin-hl2msg|bomb_abortplant|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who is planting the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_planted ===&lt;br /&gt;
{{qnotice|When the bomb has been planted}}&lt;br /&gt;
{{begin-hl2msg|bomb_planted|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who planted the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_defused ===&lt;br /&gt;
{{qnotice|When the bomb has been defused}}&lt;br /&gt;
{{begin-hl2msg|bomb_defused|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who defused the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_exploded ===&lt;br /&gt;
{{qnotice|When the bomb explodes}}&lt;br /&gt;
{{begin-hl2msg|bomb_exploded|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who planted the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_dropped ===&lt;br /&gt;
{{qnotice|When the bomb is dropped by a client}}&lt;br /&gt;
{{begin-hl2msg|bomb_dropped|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who dropped the bomb}}&lt;br /&gt;
{{hl2msg|long|entindex|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_pickup ===&lt;br /&gt;
{{qnotice|When the bomb is picked up by a client}}&lt;br /&gt;
{{begin-hl2msg|bomb_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who picked up the bomb}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== defuser_dropped ===&lt;br /&gt;
{{qnotice|When the defuser is dropped by a client}}&lt;br /&gt;
{{begin-hl2msg|defuser_dropped|string}}&lt;br /&gt;
{{hl2msg|long|entityid|defuser's entity ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== defuser_pickup ===&lt;br /&gt;
{{qnotice|When the defuser is picked up by a client}}&lt;br /&gt;
{{begin-hl2msg|defuser_pickup|string}}&lt;br /&gt;
{{hl2msg|long|entityid|defuser's entity ID}}&lt;br /&gt;
{{hl2msg|short|userid|player who picked up the defuser}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== announce_phase_end ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|announce_phase_end|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_intermission ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|cs_intermission|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_begindefuse ===&lt;br /&gt;
{{qnotice|When the bomb is started to be defused}}&lt;br /&gt;
{{begin-hl2msg|bomb_begindefuse|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who is defusing}}&lt;br /&gt;
{{hl2msg|bool|haskit|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_abortdefuse ===&lt;br /&gt;
{{qnotice|When the bomb defusal is stopped}}&lt;br /&gt;
{{begin-hl2msg|bomb_abortdefuse|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who was defusing}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_follows ===&lt;br /&gt;
{{qnotice|When the hostage begins following a client}}&lt;br /&gt;
{{begin-hl2msg|hostage_follows|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who touched the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_hurt ===&lt;br /&gt;
{{qnotice|When a hostage is damaged}}&lt;br /&gt;
{{begin-hl2msg|hostage_hurt|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who hurt the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_killed ===&lt;br /&gt;
{{qnotice|When a hostage is killed}}&lt;br /&gt;
{{begin-hl2msg|hostage_killed|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who killed the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_rescued ===&lt;br /&gt;
{{qnotice|When a hostage is rescued}}&lt;br /&gt;
{{begin-hl2msg|hostage_rescued|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who rescued the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{hl2msg|short|site|rescue site index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_stops_following ===&lt;br /&gt;
{{qnotice|When a hostage stops following a client}}&lt;br /&gt;
{{begin-hl2msg|hostage_stops_following|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who rescued the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_rescued_all ===&lt;br /&gt;
{{qnotice|When all the hostages are rescued}}&lt;br /&gt;
{{begin-hl2msg|hostage_rescued_all|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_call_for_help ===&lt;br /&gt;
{{qnotice|When the hostage calls for help}}&lt;br /&gt;
{{begin-hl2msg|hostage_call_for_help|string}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== vip_escaped ===&lt;br /&gt;
{{qnotice|When the VIP escapes}}&lt;br /&gt;
{{begin-hl2msg|vip_escaped|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who was the VIP}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== vip_killed ===&lt;br /&gt;
{{qnotice|When the VIP is killed}}&lt;br /&gt;
{{begin-hl2msg|vip_killed|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who was the VIP}}&lt;br /&gt;
{{hl2msg|short|attacker|user ID who killed the VIP}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_radio ===&lt;br /&gt;
{{qnotice|When the player uses radio commands}}&lt;br /&gt;
{{begin-hl2msg|player_radio|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|slot|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_beep ===&lt;br /&gt;
{{qnotice|Every time the bomb beep sound happens}}&lt;br /&gt;
{{begin-hl2msg|bomb_beep|string}}&lt;br /&gt;
{{hl2msg|long|entindex|c4 entity}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_fire ===&lt;br /&gt;
{{qnotice|Every time a client fires their weapon}}&lt;br /&gt;
{{begin-hl2msg|weapon_fire|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name used}}&lt;br /&gt;
{{hl2msg|bool|silenced|is weapon silenced}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_fire_on_empty ===&lt;br /&gt;
{{qnotice|Every time a client fires their weapon and it's empty}}&lt;br /&gt;
{{begin-hl2msg|weapon_fire_on_empty|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name used}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_outofammo ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|weapon_outofammo|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_reload ===&lt;br /&gt;
{{qnotice|Every time a client reloads their weapon}}&lt;br /&gt;
{{begin-hl2msg|weapon_reload|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_zoom ===&lt;br /&gt;
{{qnotice|Every time a client zooms a scoped weapon}}&lt;br /&gt;
{{begin-hl2msg|weapon_zoom|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== silencer_detach ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|silencer_detach|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inspect_weapon ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inspect_weapon|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_zoom_rifle ===&lt;br /&gt;
{{qnotice|exists for the game instructor to let it know when the player zoomed in with a regular rifle. Different from the above weapon_zoom because we don't use this event to notify bots}}&lt;br /&gt;
{{begin-hl2msg|weapon_zoom_rifle|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_spawned ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|player_spawned|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|inrestart|true if restart is pending}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_pickup ===&lt;br /&gt;
{{qnotice|Every time an item is picked up (generally weapons)}}&lt;br /&gt;
{{begin-hl2msg|item_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|item|either a weapon such as 'tmp' or 'hegrenade', or an item such as 'nvgs'}}&lt;br /&gt;
{{hl2msg|bool|silent|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== ammo_pickup ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|ammo_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|item|either a weapon such as 'tmp' or 'hegrenade', or an item such as 'nvgs'}}&lt;br /&gt;
{{hl2msg|long|index|the weapon entindex}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_equip ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|item_equip|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|item|either a weapon such as 'tmp' or 'hegrenade', or an item such as 'nvgs'}}&lt;br /&gt;
{{hl2msg|bool|canzoom|}}&lt;br /&gt;
{{hl2msg|bool|hassilencer|}}&lt;br /&gt;
{{hl2msg|bool|issilenced|}}&lt;br /&gt;
{{hl2msg|bool|hastracers|}}&lt;br /&gt;
{{hl2msg|short|weptype|see below}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_UNKNOWN		&amp;amp;#61;	-1}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_KNIFE			&amp;amp;#61;	0}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_PISTOL		&amp;amp;#61;	1}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_SUBMACHINEGUN	&amp;amp;#61;	2}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_RIFLE			&amp;amp;#61;	3}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_SHOTGUN		&amp;amp;#61;	4}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_SNIPER_RIFLE	&amp;amp;#61;	5}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_MACHINEGUN	&amp;amp;#61;	6}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_C4			&amp;amp;#61;	7}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_GRENADE		&amp;amp;#61;	8}}&lt;br /&gt;
{{hl2msg|bool|ispainted|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enter_buyzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|enter_buyzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|canbuy|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== exit_buyzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|exit_buyzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|canbuy|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== buytime_ended ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|buytime_ended|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enter_bombzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|enter_bombzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|hasbomb|}}&lt;br /&gt;
{{hl2msg|bool|isplanted|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== exit_bombzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|exit_bombzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|hasbomb|}}&lt;br /&gt;
{{hl2msg|bool|isplanted|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enter_rescue_zone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|enter_rescue_zone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== exit_rescue_zone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|exit_rescue_zone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== silencer_off ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|silencer_off|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== silencer_on ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|silencer_on|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== buymenu_open ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|buymenu_open|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== buymenu_close ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|buymenu_close|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_prestart ===&lt;br /&gt;
{{qnotice|sent before all other round restart actions}}&lt;br /&gt;
{{begin-hl2msg|round_prestart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_poststart ===&lt;br /&gt;
{{qnotice|sent after all other round restart actions}}&lt;br /&gt;
{{begin-hl2msg|round_poststart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_start ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|round_start|string}}&lt;br /&gt;
{{hl2msg|long|timelimit|round time limit in seconds}}&lt;br /&gt;
{{hl2msg|long|fraglimit|frag limit in seconds}}&lt;br /&gt;
{{hl2msg|string|objective|round objective}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_end ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|round_end|string}}&lt;br /&gt;
{{hl2msg|byte|winner|winner team/user id}}&lt;br /&gt;
{{hl2msg|byte|reason|reson why team won}}&lt;br /&gt;
{{hl2msg|string|message|round end round message }}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== grenade_bounce ===&lt;br /&gt;
{{qnotice|Every time a grenade bounces}}&lt;br /&gt;
{{begin-hl2msg|grenade_bounce|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hegrenade_detonate ===&lt;br /&gt;
{{qnotice|Every time a hegrenade explodes}}&lt;br /&gt;
{{begin-hl2msg|hegrenade_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== flashbang_detonate ===&lt;br /&gt;
{{qnotice|Every time a flashbang detonates}}&lt;br /&gt;
{{begin-hl2msg|flashbang_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== smokegrenade_detonate ===&lt;br /&gt;
{{qnotice|Every time a smokegrenade detonates}}&lt;br /&gt;
{{begin-hl2msg|smokegrenade_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== smokegrenade_expired ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|smokegrenade_expired|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== molotov_detonate ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|molotov_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== decoy_detonate ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|decoy_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== decoy_started ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|decoy_started|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inferno_startburn ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inferno_startburn|string}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inferno_expire ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inferno_expire|string}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inferno_extinguish ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inferno_extinguish|string}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== decoy_firing ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|decoy_firing|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bullet_impact ===&lt;br /&gt;
{{qnotice|Every time a bullet hits something}}&lt;br /&gt;
{{begin-hl2msg|bullet_impact}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_footstep ===&lt;br /&gt;
{{qnotice|Every time a player takes a step}}&lt;br /&gt;
{{begin-hl2msg|player_footstep|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_jump ===&lt;br /&gt;
{{qnotice|Every time a player jumps}}&lt;br /&gt;
{{begin-hl2msg|player_jump|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_blind ===&lt;br /&gt;
{{qnotice|Every time a player is blinded by a flashbang}}&lt;br /&gt;
{{begin-hl2msg|player_blind|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_falldamage ===&lt;br /&gt;
{{qnotice|Every time a player takes damage due to a fall}}&lt;br /&gt;
{{begin-hl2msg|player_falldamage|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|float|damage|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== door_moving ===&lt;br /&gt;
{{qnotice|Every time a door is put in motion (opened)}}&lt;br /&gt;
{{begin-hl2msg|door_moving|string}}&lt;br /&gt;
{{hl2msg|long|entindex|}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_freeze_end ===&lt;br /&gt;
{{qnotice|When the round's mp_freezetime is up}}&lt;br /&gt;
{{begin-hl2msg|round_freeze_end|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== mb_input_lock_success ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|mb_input_lock_success|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== mb_input_lock_cancel ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|mb_input_lock_cancel|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== nav_blocked ===&lt;br /&gt;
{{qnotice|''Guess: Called when an area is blocked by the nav of a map''}}&lt;br /&gt;
{{begin-hl2msg|nav_blocked|string}}&lt;br /&gt;
{{hl2msg|long|area|}}&lt;br /&gt;
{{hl2msg|bool|blocked|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== nav_generate ===&lt;br /&gt;
{{qnotice|Called when a nav file does not exist for a map and bots are added}}&lt;br /&gt;
{{begin-hl2msg|nav_generate|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_stats_updated ===&lt;br /&gt;
{{qnotice|''Guess: Called when the player stats (achievments) are sent to valve''}}&lt;br /&gt;
{{begin-hl2msg|player_stats_updated|string}}&lt;br /&gt;
{{hl2msg|bool|forceupload|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== achievement_info_loaded ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|achievement_info_loaded|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== spec_target_updated ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|spec_target_updated|string}}&lt;br /&gt;
{{hl2msg|byte|userid|entindex of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== spec_mode_updated ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|spec_target_updated|string}}&lt;br /&gt;
{{hl2msg|byte|userid|entindex of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hltv_changed_mode ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|hltv_changed_mode|string}}&lt;br /&gt;
{{hl2msg|long|oldmode|}}&lt;br /&gt;
{{hl2msg|long|newmode|}}&lt;br /&gt;
{{hl2msg|long|obs_target|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_game_disconnected ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_game_disconnected|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_win_panel_round ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_win_panel_round|string}}&lt;br /&gt;
{{hl2msg|bool|show_timer_defend|}}&lt;br /&gt;
{{hl2msg|bool|show_timer_attack|}}&lt;br /&gt;
{{hl2msg|short|timer_time|}}&lt;br /&gt;
{{hl2msg|byte|final_event|defined in cs_gamerules.h}}&lt;br /&gt;
{{hl2msg|string|funfact_token|}}&lt;br /&gt;
{{hl2msg|short|funfact_player|}}&lt;br /&gt;
{{hl2msg|long|funfact_data1|}}&lt;br /&gt;
{{hl2msg|long|funfact_data2|}}&lt;br /&gt;
{{hl2msg|long|funfact_data3|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_win_panel_match ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_win_panel_match|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|Well nothing defined in CS:GO but maybe it's the same as in CS:S}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_match_end_restart ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_match_end_restart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_pre_restart ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_pre_restart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== show_freezepanel ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|show_freezepanel|string}}&lt;br /&gt;
{{hl2msg|short|victim|endindex of the one who was killed}}&lt;br /&gt;
{{hl2msg|short|killer|entindex of the killer entity}}&lt;br /&gt;
{{hl2msg|short|hits_taken|}}&lt;br /&gt;
{{hl2msg|short|damage_taken|}}&lt;br /&gt;
{{hl2msg|short|hits_given|}}&lt;br /&gt;
{{hl2msg|short|damage_given|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hide_freezepanel ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|hide_freezepanel|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== freezecam_started ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|freezecam_started|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_avenged_teammate ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_avenged_teammate|string}}&lt;br /&gt;
{{hl2msg|short|avenger_id|}}&lt;br /&gt;
{{hl2msg|short|avenged_player_id|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== achievement_earned ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|achievement_earned|string}}&lt;br /&gt;
{{hl2msg|byte|player|entindex of the player}}&lt;br /&gt;
{{hl2msg|short|achievement|achievement ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== achievement_earned_local ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|achievement_earned_local|string}}&lt;br /&gt;
{{hl2msg|short|achievement|achievement ID}}&lt;br /&gt;
{{hl2msg|short|splitscreenplayer|splitscreen ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_found ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|item_found|string}}&lt;br /&gt;
{{hl2msg|byte|player|entindex of the player}}&lt;br /&gt;
{{hl2msg|byte|quality|quality of the item}}&lt;br /&gt;
{{hl2msg|byte|method|method by which we acquired the item}}&lt;br /&gt;
{{hl2msg|long|itemdef|the item definition index}}&lt;br /&gt;
{{hl2msg|long|itemid|the item id in the players inventory}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_gifted ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|item_gifted|string}}&lt;br /&gt;
{{hl2msg|byte|player|entindex of the player who sent the gift}}&lt;br /&gt;
{{hl2msg|long|itemdef|the item definition index of the gift that was opened}}&lt;br /&gt;
{{hl2msg|byte|numgifts|how many recipients got the gifts in this gift batch}}&lt;br /&gt;
{{hl2msg|byte|giftidx|index of recipient in this gift batch (0 for the first recipient, 1 for second, and so on...)}}&lt;br /&gt;
{{hl2msg|long|accountid|gift recipient's account ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== repost_xbox_achievements ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|repost_xbox_achievements|string}}&lt;br /&gt;
{{hl2msg|short|splitscreenplayer|splitscreen ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== match_end_conditions ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|match_end_conditions|string}}&lt;br /&gt;
{{hl2msg|long|frags|}}&lt;br /&gt;
{{hl2msg|long|max_rounds|}}&lt;br /&gt;
{{hl2msg|long|win_rounds|}}&lt;br /&gt;
{{hl2msg|long|time|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_mvp ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|round_mvp|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|reason|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_decal ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_decal|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== teamplay_round_start ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|teamplay_round_start|string}}&lt;br /&gt;
{{hl2msg|bool|full_reset|is this a full reset of the map}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== client_disconnect===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|client_disconnect|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_player_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_player_levelup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who leveled up}}&lt;br /&gt;
{{hl2msg|short|weaponrank|}}&lt;br /&gt;
{{hl2msg|string|weaponname|name of weapon being awarded}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== ggtr_player_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|ggtr_player_levelup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who leveled up}}&lt;br /&gt;
{{hl2msg|short|weaponrank|}}&lt;br /&gt;
{{hl2msg|string|weaponname|name of weapon being awarded}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== ggprogressive_player_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|ggprogressive_player_levelup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who leveled up}}&lt;br /&gt;
{{hl2msg|short|weaponrank|}}&lt;br /&gt;
{{hl2msg|string|weaponname|name of weapon being awarded}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_killed_enemy ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_killed_enemy|string}}&lt;br /&gt;
{{hl2msg|short|victimid|user ID who died}}&lt;br /&gt;
{{hl2msg|short|attackerid|user ID who killed}}&lt;br /&gt;
{{hl2msg|short|dominated|did killer dominate victim with this kill}}&lt;br /&gt;
{{hl2msg|short|revenge|did killer get revenge on victim with this kill}}&lt;br /&gt;
{{hl2msg|bool|bonus|did killer kill with a bonus weapon?}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_final_weapon_achieved ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_final_weapon_achieved|string}}&lt;br /&gt;
{{hl2msg|short|playerid|user ID who achieved the final gun game weapon}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_bonus_grenade_achieved ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_bonus_grenade_achieved|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who achieved the bonus grenade}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== switch_team ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|switch_team|string}}&lt;br /&gt;
{{hl2msg|short|numPlayers|number of active players on both T and CT}}&lt;br /&gt;
{{hl2msg|short|numSpectators|number of spectators}}&lt;br /&gt;
{{hl2msg|short|avg_rank|average rank of human players}}&lt;br /&gt;
{{hl2msg|short|numTSlotsFree|}}&lt;br /&gt;
{{hl2msg|short|numCTSlotsFree|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_leader ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_leader|string}}&lt;br /&gt;
{{hl2msg|short|playerid|user ID that is currently in the lead}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_player_impending_upgrade ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_player_impending_upgrade|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who will be leveling up}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== write_profile_data ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|write_profile_data|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== trial_time_expired ===&lt;br /&gt;
{{qnotice|fired when a player runs out of time in trial mode}}&lt;br /&gt;
{{begin-hl2msg|trial_time_expired|string}}&lt;br /&gt;
{{hl2msg|short|slot|player whose time has expired}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== update_matchmaking_stats ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|update_matchmaking_stats|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_reset_vote ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_reset_vote|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|vote|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enable_restart_voting ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|enable_restart_voting|string}}&lt;br /&gt;
{{hl2msg|bool|enable|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== sfuievent ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|sfuievent|string}}&lt;br /&gt;
{{hl2msg|string|action|}}&lt;br /&gt;
{{hl2msg|string|data|}}&lt;br /&gt;
{{hl2msg|byte|slot|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== start_vote ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|start_vote|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID on server}}&lt;br /&gt;
{{hl2msg|byte|type|}}&lt;br /&gt;
{{hl2msg|short|vote_parameter|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_given_c4 ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_given_c4|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who received the c4}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_reset_round_start_sounds ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_reset_round_start_sounds|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who should have round start sounds reset}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_player_flashbanged ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_player_flashbanged|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player banged}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_highlight_ammo ===&lt;br /&gt;
{{qnotice|not used yet because this relied on vgui panels, scaleform isn't supported yet}}&lt;br /&gt;
{{begin-hl2msg|tr_highlight_ammo|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_mark_complete ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_mark_complete|string}}&lt;br /&gt;
{{hl2msg|short|complete|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_mark_best_time ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_mark_best_time|string}}&lt;br /&gt;
{{hl2msg|long|time|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_exit_hint_trigger ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_exit_hint_trigger|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bot_takeover ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|bot_takeover|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|botid|}}&lt;br /&gt;
{{hl2msg|short|index|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_show_finish_msgbox ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_show_finish_msgbox|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_show_exit_msgbox ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_show_exit_msgbox|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== reset_player_controls ===&lt;br /&gt;
{{qnotice|used for demos}}&lt;br /&gt;
{{begin-hl2msg|reset_player_controls|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== jointeam_failed ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|jointeam_failed|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|byte|reason|0 = team_full}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== teamchange_pending ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|teamchange_pending|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|byte|toteam|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== material_default_complete ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|material_default_complete|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_prev_next_spectator ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_prev_next_spectator|string}}&lt;br /&gt;
{{hl2msg|bool|next|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_handle_ime_event ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_handle_ime_event|string}}&lt;br /&gt;
{{hl2msg|1|local|}}&lt;br /&gt;
{{hl2msg|string|eventtype|}}&lt;br /&gt;
{{hl2msg|wstring|eventdata|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== nextlevel_changed ===&lt;br /&gt;
{{qnotice|a game event, name may be 32 characters long}}&lt;br /&gt;
{{begin-hl2msg|nextlevel_changed|string}}&lt;br /&gt;
{{hl2msg|string|nextlevel|weapon name killer used}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== seasoncoin_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|seasoncoin_levelup|string}}&lt;br /&gt;
{{hl2msg|short|player|}}&lt;br /&gt;
{{hl2msg|short|category|}}&lt;br /&gt;
{{hl2msg|short|rank|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tournament_reward ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tournament_reward|string}}&lt;br /&gt;
{{hl2msg|long|defindex|}}&lt;br /&gt;
{{hl2msg|long|totalrewards|}}&lt;br /&gt;
{{hl2msg|long|accountid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== start_halftime ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|start_halftime|string}}&lt;br /&gt;
{{end-hl2msg}}&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Counter-Strike:_Global_Offensive_Events&amp;diff=9913</id>
		<title>Counter-Strike: Global Offensive Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Counter-Strike:_Global_Offensive_Events&amp;diff=9913"/>
		<updated>2015-05-26T16:20:52Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* player_hurt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:''Refer back to [[Game Events (Source)]] for more events.''&lt;br /&gt;
&lt;br /&gt;
=== player_death ===&lt;br /&gt;
{{qnotice|When a client dies}}&lt;br /&gt;
{{begin-hl2msg|player_death|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who died}}&lt;br /&gt;
{{hl2msg|short|attacker|user ID who killed}}&lt;br /&gt;
{{hl2msg|short|assister|user ID who assisted in the kill}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name killer used }}&lt;br /&gt;
{{hl2msg|string|weapon_itemid|inventory item id of weapon killer used}}&lt;br /&gt;
{{hl2msg|string|weapon_fauxitemid|faux item id of weapon killer used}}&lt;br /&gt;
{{hl2msg|string|weapon_originalowner_xuid|}}&lt;br /&gt;
{{hl2msg|bool|headshot|singals a headshot}}&lt;br /&gt;
{{hl2msg|short|dominated|did killer dominate victim with this kill}}&lt;br /&gt;
{{hl2msg|short|revenge|did killer get revenge on victim with this kill}}&lt;br /&gt;
{{hl2msg|short|penetrated|number of objects shot penetrated before killing target}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_hurt ===&lt;br /&gt;
{{qnotice|When a client is damaged}}&lt;br /&gt;
{{begin-hl2msg|player_hurt|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who was hurt}}&lt;br /&gt;
{{hl2msg|short|attacker|user ID who attacked}}&lt;br /&gt;
{{hl2msg|byte|health|remaining health points}}&lt;br /&gt;
{{hl2msg|byte|armor|remaining armor points}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name attacker used, if not the world}}&lt;br /&gt;
{{hl2msg|short|dmg_health|damage done to health}}&lt;br /&gt;
{{hl2msg|byte|dmg_armor|damage done to armor}}&lt;br /&gt;
{{hl2msg|byte|hitgroup|hitgroup that was damaged 1=hs, 2=uppertorso, 3=lowertorso, 4=left arm, 5=right arm, 6=left leg, 7=right leg}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_purchase ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|item_purchase|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|team|}}&lt;br /&gt;
{{hl2msg|string|weapon|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_beginplant ===&lt;br /&gt;
{{qnotice|When the bomb is starting to get planted}}&lt;br /&gt;
{{begin-hl2msg|bomb_beginplant|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who is planting the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_abortplant ===&lt;br /&gt;
{{qnotice|When the bomb planter stops planting the bomb}}&lt;br /&gt;
{{begin-hl2msg|bomb_abortplant|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who is planting the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_planted ===&lt;br /&gt;
{{qnotice|When the bomb has been planted}}&lt;br /&gt;
{{begin-hl2msg|bomb_planted|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who planted the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_defused ===&lt;br /&gt;
{{qnotice|When the bomb has been defused}}&lt;br /&gt;
{{begin-hl2msg|bomb_defused|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who defused the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_exploded ===&lt;br /&gt;
{{qnotice|When the bomb explodes}}&lt;br /&gt;
{{begin-hl2msg|bomb_exploded|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who planted the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_dropped ===&lt;br /&gt;
{{qnotice|When the bomb is dropped by a client}}&lt;br /&gt;
{{begin-hl2msg|bomb_dropped|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who dropped the bomb}}&lt;br /&gt;
{{hl2msg|long|entindex|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_pickup ===&lt;br /&gt;
{{qnotice|When the bomb is picked up by a client}}&lt;br /&gt;
{{begin-hl2msg|bomb_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who picked up the bomb}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== defuser_dropped ===&lt;br /&gt;
{{qnotice|When the defuser is dropped by a client}}&lt;br /&gt;
{{begin-hl2msg|defuser_dropped|string}}&lt;br /&gt;
{{hl2msg|long|entityid|defuser's entity ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== defuser_pickup ===&lt;br /&gt;
{{qnotice|When the defuser is picked up by a client}}&lt;br /&gt;
{{begin-hl2msg|defuser_pickup|string}}&lt;br /&gt;
{{hl2msg|long|entityid|defuser's entity ID}}&lt;br /&gt;
{{hl2msg|short|userid|player who picked up the defuser}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== announce_phase_end ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|announce_phase_end|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_intermission ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|cs_intermission|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_begindefuse ===&lt;br /&gt;
{{qnotice|When the bomb is started to be defused}}&lt;br /&gt;
{{begin-hl2msg|bomb_begindefuse|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who is defusing}}&lt;br /&gt;
{{hl2msg|bool|haskit|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_abortdefuse ===&lt;br /&gt;
{{qnotice|When the bomb defusal is stopped}}&lt;br /&gt;
{{begin-hl2msg|bomb_abortdefuse|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who was defusing}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_follows ===&lt;br /&gt;
{{qnotice|When the hostage begins following a client}}&lt;br /&gt;
{{begin-hl2msg|hostage_follows|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who touched the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_hurt ===&lt;br /&gt;
{{qnotice|When a hostage is damaged}}&lt;br /&gt;
{{begin-hl2msg|hostage_hurt|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who hurt the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_killed ===&lt;br /&gt;
{{qnotice|When a hostage is killed}}&lt;br /&gt;
{{begin-hl2msg|hostage_killed|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who killed the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_rescued ===&lt;br /&gt;
{{qnotice|When a hostage is rescued}}&lt;br /&gt;
{{begin-hl2msg|hostage_rescued|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who rescued the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{hl2msg|short|site|rescue site index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_stops_following ===&lt;br /&gt;
{{qnotice|When a hostage stops following a client}}&lt;br /&gt;
{{begin-hl2msg|hostage_stops_following|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who rescued the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_rescued_all ===&lt;br /&gt;
{{qnotice|When all the hostages are rescued}}&lt;br /&gt;
{{begin-hl2msg|hostage_rescued_all|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_call_for_help ===&lt;br /&gt;
{{qnotice|When the hostage calls for help}}&lt;br /&gt;
{{begin-hl2msg|hostage_call_for_help|string}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== vip_escaped ===&lt;br /&gt;
{{qnotice|When the VIP escapes}}&lt;br /&gt;
{{begin-hl2msg|vip_escaped|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who was the VIP}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== vip_killed ===&lt;br /&gt;
{{qnotice|When the VIP is killed}}&lt;br /&gt;
{{begin-hl2msg|vip_killed|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who was the VIP}}&lt;br /&gt;
{{hl2msg|short|attacker|user ID who killed the VIP}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_radio ===&lt;br /&gt;
{{qnotice|When the player uses radio commands}}&lt;br /&gt;
{{begin-hl2msg|player_radio|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|slot|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_beep ===&lt;br /&gt;
{{qnotice|Every time the bomb beep sound happens}}&lt;br /&gt;
{{begin-hl2msg|bomb_beep|string}}&lt;br /&gt;
{{hl2msg|long|entindex|c4 entity}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_fire ===&lt;br /&gt;
{{qnotice|Every time a client fires their weapon}}&lt;br /&gt;
{{begin-hl2msg|weapon_fire|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name used}}&lt;br /&gt;
{{hl2msg|bool|silenced|is weapon silenced}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_fire_on_empty ===&lt;br /&gt;
{{qnotice|Every time a client fires their weapon and it's empty}}&lt;br /&gt;
{{begin-hl2msg|weapon_fire_on_empty|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name used}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_outofammo ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|weapon_outofammo|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_reload ===&lt;br /&gt;
{{qnotice|Every time a client reloads their weapon}}&lt;br /&gt;
{{begin-hl2msg|weapon_reload|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_zoom ===&lt;br /&gt;
{{qnotice|Every time a client zooms a scoped weapon}}&lt;br /&gt;
{{begin-hl2msg|weapon_zoom|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== silencer_detach ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|silencer_detach|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inspect_weapon ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inspect_weapon|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_zoom_rifle ===&lt;br /&gt;
{{qnotice|exists for the game instructor to let it know when the player zoomed in with a regular rifle. Different from the above weapon_zoom because we don't use this event to notify bots}}&lt;br /&gt;
{{begin-hl2msg|weapon_zoom_rifle|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_spawned ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|player_spawned|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|inrestart|true if restart is pending}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_pickup ===&lt;br /&gt;
{{qnotice|Every time an item is picked up (generally weapons)}}&lt;br /&gt;
{{begin-hl2msg|item_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|item|either a weapon such as 'tmp' or 'hegrenade', or an item such as 'nvgs'}}&lt;br /&gt;
{{hl2msg|bool|silent|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== ammo_pickup ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|ammo_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|item|either a weapon such as 'tmp' or 'hegrenade', or an item such as 'nvgs'}}&lt;br /&gt;
{{hl2msg|long|index|the weapon entindex}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_equip ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|item_equip|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|item|either a weapon such as 'tmp' or 'hegrenade', or an item such as 'nvgs'}}&lt;br /&gt;
{{hl2msg|bool|canzoom|}}&lt;br /&gt;
{{hl2msg|bool|hassilencer|}}&lt;br /&gt;
{{hl2msg|bool|issilenced|}}&lt;br /&gt;
{{hl2msg|bool|hastracers|}}&lt;br /&gt;
{{hl2msg|short|weptype|see below}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_UNKNOWN		&amp;amp;#61;	-1}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_KNIFE			&amp;amp;#61;	0}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_PISTOL		&amp;amp;#61;	1}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_SUBMACHINEGUN	&amp;amp;#61;	2}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_RIFLE			&amp;amp;#61;	3}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_SHOTGUN		&amp;amp;#61;	4}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_SNIPER_RIFLE	&amp;amp;#61;	5}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_MACHINEGUN	&amp;amp;#61;	6}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_C4			&amp;amp;#61;	7}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_GRENADE		&amp;amp;#61;	8}}&lt;br /&gt;
{{hl2msg|bool|ispainted|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enter_buyzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|enter_buyzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|canbuy|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== exit_buyzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|exit_buyzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|canbuy|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== buytime_ended ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|buytime_ended|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enter_bombzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|enter_bombzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|hasbomb|}}&lt;br /&gt;
{{hl2msg|bool|isplanted|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== exit_bombzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|exit_bombzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|hasbomb|}}&lt;br /&gt;
{{hl2msg|bool|isplanted|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enter_rescue_zone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|enter_rescue_zone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== exit_rescue_zone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|exit_rescue_zone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== silencer_off ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|silencer_off|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== silencer_on ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|silencer_on|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== buymenu_open ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|buymenu_open|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== buymenu_close ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|buymenu_close|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_prestart ===&lt;br /&gt;
{{qnotice|sent before all other round restart actions}}&lt;br /&gt;
{{begin-hl2msg|round_prestart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_poststart ===&lt;br /&gt;
{{qnotice|sent after all other round restart actions}}&lt;br /&gt;
{{begin-hl2msg|round_poststart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_start ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|round_start|string}}&lt;br /&gt;
{{hl2msg|long|timelimit|round time limit in seconds}}&lt;br /&gt;
{{hl2msg|long|fraglimit|frag limit in seconds}}&lt;br /&gt;
{{hl2msg|string|objective|round objective}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_end ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|round_end|string}}&lt;br /&gt;
{{hl2msg|byte|winner|winner team/user id}}&lt;br /&gt;
{{hl2msg|byte|reason|reson why team won}}&lt;br /&gt;
{{hl2msg|string|message|round end round message }}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== grenade_bounce ===&lt;br /&gt;
{{qnotice|Every time a grenade bounces}}&lt;br /&gt;
{{begin-hl2msg|grenade_bounce|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hegrenade_detonate ===&lt;br /&gt;
{{qnotice|Every time a hegrenade explodes}}&lt;br /&gt;
{{begin-hl2msg|hegrenade_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== flashbang_detonate ===&lt;br /&gt;
{{qnotice|Every time a flashbang detonates}}&lt;br /&gt;
{{begin-hl2msg|flashbang_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== smokegrenade_detonate ===&lt;br /&gt;
{{qnotice|Every time a smokegrenade detonates}}&lt;br /&gt;
{{begin-hl2msg|smokegrenade_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== smokegrenade_expired ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|smokegrenade_expired|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== molotov_detonate ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|molotov_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== decoy_detonate ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|decoy_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== decoy_started ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|decoy_started|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inferno_startburn ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inferno_startburn|string}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inferno_expire ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inferno_expire|string}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inferno_extinguish ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inferno_extinguish|string}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== decoy_firing ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|decoy_firing|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bullet_impact ===&lt;br /&gt;
{{qnotice|Every time a bullet hits something}}&lt;br /&gt;
{{begin-hl2msg|bullet_impact}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_footstep ===&lt;br /&gt;
{{qnotice|Every time a player takes a step}}&lt;br /&gt;
{{begin-hl2msg|player_footstep|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_jump ===&lt;br /&gt;
{{qnotice|Every time a player jumps}}&lt;br /&gt;
{{begin-hl2msg|player_jump|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_blind ===&lt;br /&gt;
{{qnotice|Every time a player is blinded by a flashbang}}&lt;br /&gt;
{{begin-hl2msg|player_blind|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_falldamage ===&lt;br /&gt;
{{qnotice|Every time a player takes damage due to a fall}}&lt;br /&gt;
{{begin-hl2msg|player_falldamage|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|float|damage|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== door_moving ===&lt;br /&gt;
{{qnotice|Every time a door is put in motion (opened)}}&lt;br /&gt;
{{begin-hl2msg|door_moving|string}}&lt;br /&gt;
{{hl2msg|long|entindex|}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_freeze_end ===&lt;br /&gt;
{{qnotice|When the round's mp_freezetime is up}}&lt;br /&gt;
{{begin-hl2msg|round_freeze_end|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== mb_input_lock_success ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|mb_input_lock_success|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== mb_input_lock_cancel ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|mb_input_lock_cancel|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== nav_blocked ===&lt;br /&gt;
{{qnotice|''Guess: Called when an area is blocked by the nav of a map''}}&lt;br /&gt;
{{begin-hl2msg|nav_blocked|string}}&lt;br /&gt;
{{hl2msg|long|area|}}&lt;br /&gt;
{{hl2msg|bool|blocked|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== nav_generate ===&lt;br /&gt;
{{qnotice|Called when a nav file does not exist for a map and bots are added}}&lt;br /&gt;
{{begin-hl2msg|nav_generate|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_stats_updated ===&lt;br /&gt;
{{qnotice|''Guess: Called when the player stats (achievments) are sent to valve''}}&lt;br /&gt;
{{begin-hl2msg|player_stats_updated|string}}&lt;br /&gt;
{{hl2msg|bool|forceupload|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== achievement_info_loaded ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|achievement_info_loaded|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== spec_target_updated ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|spec_target_updated|string}}&lt;br /&gt;
{{hl2msg|byte|userid|entindex of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== spec_mode_updated ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|spec_target_updated|string}}&lt;br /&gt;
{{hl2msg|byte|userid|entindex of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hltv_changed_mode ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|hltv_changed_mode|string}}&lt;br /&gt;
{{hl2msg|long|oldmode|}}&lt;br /&gt;
{{hl2msg|long|newmode|}}&lt;br /&gt;
{{hl2msg|long|obs_target|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_game_disconnected ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_game_disconnected|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_win_panel_round ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_win_panel_round|string}}&lt;br /&gt;
{{hl2msg|bool|show_timer_defend|}}&lt;br /&gt;
{{hl2msg|bool|show_timer_attack|}}&lt;br /&gt;
{{hl2msg|short|timer_time|}}&lt;br /&gt;
{{hl2msg|byte|final_event|defined in cs_gamerules.h}}&lt;br /&gt;
{{hl2msg|string|funfact_token|}}&lt;br /&gt;
{{hl2msg|short|funfact_player|}}&lt;br /&gt;
{{hl2msg|long|funfact_data1|}}&lt;br /&gt;
{{hl2msg|long|funfact_data2|}}&lt;br /&gt;
{{hl2msg|long|funfact_data3|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_win_panel_match ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_win_panel_match|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|Well nothing defined in CS:GO but maybe it's the same as in CS:S}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_match_end_restart ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_match_end_restart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_pre_restart ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_pre_restart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== show_freezepanel ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|show_freezepanel|string}}&lt;br /&gt;
{{hl2msg|short|victim|endindex of the one who was killed}}&lt;br /&gt;
{{hl2msg|short|killer|entindex of the killer entity}}&lt;br /&gt;
{{hl2msg|short|hits_taken|}}&lt;br /&gt;
{{hl2msg|short|damage_taken|}}&lt;br /&gt;
{{hl2msg|short|hits_given|}}&lt;br /&gt;
{{hl2msg|short|damage_given|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hide_freezepanel ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|hide_freezepanel|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== freezecam_started ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|freezecam_started|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_avenged_teammate ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_avenged_teammate|string}}&lt;br /&gt;
{{hl2msg|short|avenger_id|}}&lt;br /&gt;
{{hl2msg|short|avenged_player_id|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== achievement_earned ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|achievement_earned|string}}&lt;br /&gt;
{{hl2msg|byte|player|entindex of the player}}&lt;br /&gt;
{{hl2msg|short|achievement|achievement ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== achievement_earned_local ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|achievement_earned_local|string}}&lt;br /&gt;
{{hl2msg|short|achievement|achievement ID}}&lt;br /&gt;
{{hl2msg|short|splitscreenplayer|splitscreen ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_found ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|item_found|string}}&lt;br /&gt;
{{hl2msg|byte|player|entindex of the player}}&lt;br /&gt;
{{hl2msg|byte|quality|quality of the item}}&lt;br /&gt;
{{hl2msg|byte|method|method by which we acquired the item}}&lt;br /&gt;
{{hl2msg|long|itemdef|the item definition index}}&lt;br /&gt;
{{hl2msg|long|itemid|the item id in the players inventory}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_gifted ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|item_gifted|string}}&lt;br /&gt;
{{hl2msg|byte|player|entindex of the player who sent the gift}}&lt;br /&gt;
{{hl2msg|long|itemdef|the item definition index of the gift that was opened}}&lt;br /&gt;
{{hl2msg|byte|numgifts|how many recipients got the gifts in this gift batch}}&lt;br /&gt;
{{hl2msg|byte|giftidx|index of recipient in this gift batch (0 for the first recipient, 1 for second, and so on...)}}&lt;br /&gt;
{{hl2msg|long|accountid|gift recipient's account ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== repost_xbox_achievements ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|repost_xbox_achievements|string}}&lt;br /&gt;
{{hl2msg|short|splitscreenplayer|splitscreen ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== match_end_conditions ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|match_end_conditions|string}}&lt;br /&gt;
{{hl2msg|long|frags|}}&lt;br /&gt;
{{hl2msg|long|max_rounds|}}&lt;br /&gt;
{{hl2msg|long|win_rounds|}}&lt;br /&gt;
{{hl2msg|long|time|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_mvp ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|round_mvp|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|reason|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_decal ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_decal|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== teamplay_round_start ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|teamplay_round_start|string}}&lt;br /&gt;
{{hl2msg|bool|full_reset|is this a full reset of the map}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== client_disconnect===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|client_disconnect|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_player_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_player_levelup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who leveled up}}&lt;br /&gt;
{{hl2msg|short|weaponrank|}}&lt;br /&gt;
{{hl2msg|string|weaponname|name of weapon being awarded}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== ggtr_player_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|ggtr_player_levelup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who leveled up}}&lt;br /&gt;
{{hl2msg|short|weaponrank|}}&lt;br /&gt;
{{hl2msg|string|weaponname|name of weapon being awarded}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== ggprogressive_player_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|ggprogressive_player_levelup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who leveled up}}&lt;br /&gt;
{{hl2msg|short|weaponrank|}}&lt;br /&gt;
{{hl2msg|string|weaponname|name of weapon being awarded}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_killed_enemy ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_killed_enemy|string}}&lt;br /&gt;
{{hl2msg|short|victimid|user ID who died}}&lt;br /&gt;
{{hl2msg|short|attackerid|user ID who killed}}&lt;br /&gt;
{{hl2msg|short|dominated|did killer dominate victim with this kill}}&lt;br /&gt;
{{hl2msg|short|revenge|did killer get revenge on victim with this kill}}&lt;br /&gt;
{{hl2msg|bool|bonus|did killer kill with a bonus weapon?}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_final_weapon_achieved ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_final_weapon_achieved|string}}&lt;br /&gt;
{{hl2msg|short|playerid|user ID who achieved the final gun game weapon}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_bonus_grenade_achieved ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_bonus_grenade_achieved|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who achieved the bonus grenade}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== switch_team ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|switch_team|string}}&lt;br /&gt;
{{hl2msg|short|numPlayers|number of active players on both T and CT}}&lt;br /&gt;
{{hl2msg|short|numSpectators|number of spectators}}&lt;br /&gt;
{{hl2msg|short|avg_rank|average rank of human players}}&lt;br /&gt;
{{hl2msg|short|numTSlotsFree|}}&lt;br /&gt;
{{hl2msg|short|numCTSlotsFree|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_leader ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_leader|string}}&lt;br /&gt;
{{hl2msg|short|playerid|user ID that is currently in the lead}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_player_impending_upgrade ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_player_impending_upgrade|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who will be leveling up}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== write_profile_data ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|write_profile_data|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== trial_time_expired ===&lt;br /&gt;
{{qnotice|fired when a player runs out of time in trial mode}}&lt;br /&gt;
{{begin-hl2msg|trial_time_expired|string}}&lt;br /&gt;
{{hl2msg|short|slot|player whose time has expired}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== update_matchmaking_stats ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|update_matchmaking_stats|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_reset_vote ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_reset_vote|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|vote|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enable_restart_voting ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|enable_restart_voting|string}}&lt;br /&gt;
{{hl2msg|bool|enable|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== sfuievent ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|sfuievent|string}}&lt;br /&gt;
{{hl2msg|string|action|}}&lt;br /&gt;
{{hl2msg|string|data|}}&lt;br /&gt;
{{hl2msg|byte|slot|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== start_vote ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|start_vote|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID on server}}&lt;br /&gt;
{{hl2msg|byte|type|}}&lt;br /&gt;
{{hl2msg|short|vote_parameter|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_given_c4 ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_given_c4|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who received the c4}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_reset_round_start_sounds ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_reset_round_start_sounds|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who should have round start sounds reset}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_player_flashbanged ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_player_flashbanged|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player banged}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_highlight_ammo ===&lt;br /&gt;
{{qnotice|not used yet because this relied on vgui panels, scaleform isn't supported yet}}&lt;br /&gt;
{{begin-hl2msg|tr_highlight_ammo|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_mark_complete ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_mark_complete|string}}&lt;br /&gt;
{{hl2msg|short|complete|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_mark_best_time ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_mark_best_time|string}}&lt;br /&gt;
{{hl2msg|long|time|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_exit_hint_trigger ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_exit_hint_trigger|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bot_takeover ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|bot_takeover|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|botid|}}&lt;br /&gt;
{{hl2msg|short|index|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_show_finish_msgbox ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_show_finish_msgbox|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_show_exit_msgbox ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_show_exit_msgbox|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== reset_player_controls ===&lt;br /&gt;
{{qnotice|used for demos}}&lt;br /&gt;
{{begin-hl2msg|reset_player_controls|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== jointeam_failed ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|jointeam_failed|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|byte|reason|0 = team_full}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== teamchange_pending ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|teamchange_pending|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|byte|toteam|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== material_default_complete ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|material_default_complete|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_prev_next_spectator ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_prev_next_spectator|string}}&lt;br /&gt;
{{hl2msg|bool|next|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_handle_ime_event ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_handle_ime_event|string}}&lt;br /&gt;
{{hl2msg|1|local|}}&lt;br /&gt;
{{hl2msg|string|eventtype|}}&lt;br /&gt;
{{hl2msg|wstring|eventdata|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== nextlevel_changed ===&lt;br /&gt;
{{qnotice|a game event, name may be 32 characters long}}&lt;br /&gt;
{{begin-hl2msg|nextlevel_changed|string}}&lt;br /&gt;
{{hl2msg|string|nextlevel|weapon name killer used}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== seasoncoin_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|seasoncoin_levelup|string}}&lt;br /&gt;
{{hl2msg|short|player|}}&lt;br /&gt;
{{hl2msg|short|category|}}&lt;br /&gt;
{{hl2msg|short|rank|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tournament_reward ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tournament_reward|string}}&lt;br /&gt;
{{hl2msg|long|defindex|}}&lt;br /&gt;
{{hl2msg|long|totalrewards|}}&lt;br /&gt;
{{hl2msg|long|accountid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== start_halftime ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|start_halftime|string}}&lt;br /&gt;
{{end-hl2msg}}&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Counter-Strike:_Global_Offensive_Events&amp;diff=9912</id>
		<title>Counter-Strike: Global Offensive Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Counter-Strike:_Global_Offensive_Events&amp;diff=9912"/>
		<updated>2015-05-26T16:20:33Z</updated>

		<summary type="html">&lt;p&gt;RedSword: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:''Refer back to [[Game Events (Source)]] for more events.''&lt;br /&gt;
&lt;br /&gt;
=== player_death ===&lt;br /&gt;
{{qnotice|When a client dies}}&lt;br /&gt;
{{begin-hl2msg|player_death|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who died}}&lt;br /&gt;
{{hl2msg|short|attacker|user ID who killed}}&lt;br /&gt;
{{hl2msg|short|assister|user ID who assisted in the kill}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name killer used }}&lt;br /&gt;
{{hl2msg|string|weapon_itemid|inventory item id of weapon killer used}}&lt;br /&gt;
{{hl2msg|string|weapon_fauxitemid|faux item id of weapon killer used}}&lt;br /&gt;
{{hl2msg|string|weapon_originalowner_xuid|}}&lt;br /&gt;
{{hl2msg|bool|headshot|singals a headshot}}&lt;br /&gt;
{{hl2msg|short|dominated|did killer dominate victim with this kill}}&lt;br /&gt;
{{hl2msg|short|revenge|did killer get revenge on victim with this kill}}&lt;br /&gt;
{{hl2msg|short|penetrated|number of objects shot penetrated before killing target}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_hurt ===&lt;br /&gt;
{{qnotice|When a client is damaged}}&lt;br /&gt;
{{begin-hl2msg|player_hurt|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who was hurt}}&lt;br /&gt;
{{hl2msg|short|attacker|user ID who attacked}}&lt;br /&gt;
{{hl2msg|byte|health|remaining health points}}&lt;br /&gt;
{{hl2msg|byte|armor|remaining armor points}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name attacker used, if not the world}}&lt;br /&gt;
{{hl2msg|short|dmg_health|damage done to health}}&lt;br /&gt;
{{hl2msg|byte|dmg_armor|damage done to armor}}&lt;br /&gt;
{{hl2msg|byte|hitgroup|hitgroup that was damaged : 1=hs, 2=uppertorso, 3=lowertorso, 4=left arm, 5=right arm, 6=left leg, 7=right leg}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_purchase ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|item_purchase|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|team|}}&lt;br /&gt;
{{hl2msg|string|weapon|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_beginplant ===&lt;br /&gt;
{{qnotice|When the bomb is starting to get planted}}&lt;br /&gt;
{{begin-hl2msg|bomb_beginplant|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who is planting the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_abortplant ===&lt;br /&gt;
{{qnotice|When the bomb planter stops planting the bomb}}&lt;br /&gt;
{{begin-hl2msg|bomb_abortplant|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who is planting the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_planted ===&lt;br /&gt;
{{qnotice|When the bomb has been planted}}&lt;br /&gt;
{{begin-hl2msg|bomb_planted|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who planted the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_defused ===&lt;br /&gt;
{{qnotice|When the bomb has been defused}}&lt;br /&gt;
{{begin-hl2msg|bomb_defused|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who defused the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_exploded ===&lt;br /&gt;
{{qnotice|When the bomb explodes}}&lt;br /&gt;
{{begin-hl2msg|bomb_exploded|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who planted the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_dropped ===&lt;br /&gt;
{{qnotice|When the bomb is dropped by a client}}&lt;br /&gt;
{{begin-hl2msg|bomb_dropped|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who dropped the bomb}}&lt;br /&gt;
{{hl2msg|long|entindex|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_pickup ===&lt;br /&gt;
{{qnotice|When the bomb is picked up by a client}}&lt;br /&gt;
{{begin-hl2msg|bomb_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who picked up the bomb}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== defuser_dropped ===&lt;br /&gt;
{{qnotice|When the defuser is dropped by a client}}&lt;br /&gt;
{{begin-hl2msg|defuser_dropped|string}}&lt;br /&gt;
{{hl2msg|long|entityid|defuser's entity ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== defuser_pickup ===&lt;br /&gt;
{{qnotice|When the defuser is picked up by a client}}&lt;br /&gt;
{{begin-hl2msg|defuser_pickup|string}}&lt;br /&gt;
{{hl2msg|long|entityid|defuser's entity ID}}&lt;br /&gt;
{{hl2msg|short|userid|player who picked up the defuser}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== announce_phase_end ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|announce_phase_end|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_intermission ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|cs_intermission|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_begindefuse ===&lt;br /&gt;
{{qnotice|When the bomb is started to be defused}}&lt;br /&gt;
{{begin-hl2msg|bomb_begindefuse|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who is defusing}}&lt;br /&gt;
{{hl2msg|bool|haskit|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_abortdefuse ===&lt;br /&gt;
{{qnotice|When the bomb defusal is stopped}}&lt;br /&gt;
{{begin-hl2msg|bomb_abortdefuse|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who was defusing}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_follows ===&lt;br /&gt;
{{qnotice|When the hostage begins following a client}}&lt;br /&gt;
{{begin-hl2msg|hostage_follows|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who touched the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_hurt ===&lt;br /&gt;
{{qnotice|When a hostage is damaged}}&lt;br /&gt;
{{begin-hl2msg|hostage_hurt|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who hurt the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_killed ===&lt;br /&gt;
{{qnotice|When a hostage is killed}}&lt;br /&gt;
{{begin-hl2msg|hostage_killed|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who killed the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_rescued ===&lt;br /&gt;
{{qnotice|When a hostage is rescued}}&lt;br /&gt;
{{begin-hl2msg|hostage_rescued|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who rescued the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{hl2msg|short|site|rescue site index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_stops_following ===&lt;br /&gt;
{{qnotice|When a hostage stops following a client}}&lt;br /&gt;
{{begin-hl2msg|hostage_stops_following|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who rescued the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_rescued_all ===&lt;br /&gt;
{{qnotice|When all the hostages are rescued}}&lt;br /&gt;
{{begin-hl2msg|hostage_rescued_all|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_call_for_help ===&lt;br /&gt;
{{qnotice|When the hostage calls for help}}&lt;br /&gt;
{{begin-hl2msg|hostage_call_for_help|string}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== vip_escaped ===&lt;br /&gt;
{{qnotice|When the VIP escapes}}&lt;br /&gt;
{{begin-hl2msg|vip_escaped|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who was the VIP}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== vip_killed ===&lt;br /&gt;
{{qnotice|When the VIP is killed}}&lt;br /&gt;
{{begin-hl2msg|vip_killed|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who was the VIP}}&lt;br /&gt;
{{hl2msg|short|attacker|user ID who killed the VIP}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_radio ===&lt;br /&gt;
{{qnotice|When the player uses radio commands}}&lt;br /&gt;
{{begin-hl2msg|player_radio|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|slot|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_beep ===&lt;br /&gt;
{{qnotice|Every time the bomb beep sound happens}}&lt;br /&gt;
{{begin-hl2msg|bomb_beep|string}}&lt;br /&gt;
{{hl2msg|long|entindex|c4 entity}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_fire ===&lt;br /&gt;
{{qnotice|Every time a client fires their weapon}}&lt;br /&gt;
{{begin-hl2msg|weapon_fire|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name used}}&lt;br /&gt;
{{hl2msg|bool|silenced|is weapon silenced}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_fire_on_empty ===&lt;br /&gt;
{{qnotice|Every time a client fires their weapon and it's empty}}&lt;br /&gt;
{{begin-hl2msg|weapon_fire_on_empty|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name used}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_outofammo ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|weapon_outofammo|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_reload ===&lt;br /&gt;
{{qnotice|Every time a client reloads their weapon}}&lt;br /&gt;
{{begin-hl2msg|weapon_reload|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_zoom ===&lt;br /&gt;
{{qnotice|Every time a client zooms a scoped weapon}}&lt;br /&gt;
{{begin-hl2msg|weapon_zoom|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== silencer_detach ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|silencer_detach|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inspect_weapon ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inspect_weapon|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_zoom_rifle ===&lt;br /&gt;
{{qnotice|exists for the game instructor to let it know when the player zoomed in with a regular rifle. Different from the above weapon_zoom because we don't use this event to notify bots}}&lt;br /&gt;
{{begin-hl2msg|weapon_zoom_rifle|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_spawned ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|player_spawned|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|inrestart|true if restart is pending}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_pickup ===&lt;br /&gt;
{{qnotice|Every time an item is picked up (generally weapons)}}&lt;br /&gt;
{{begin-hl2msg|item_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|item|either a weapon such as 'tmp' or 'hegrenade', or an item such as 'nvgs'}}&lt;br /&gt;
{{hl2msg|bool|silent|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== ammo_pickup ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|ammo_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|item|either a weapon such as 'tmp' or 'hegrenade', or an item such as 'nvgs'}}&lt;br /&gt;
{{hl2msg|long|index|the weapon entindex}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_equip ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|item_equip|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|item|either a weapon such as 'tmp' or 'hegrenade', or an item such as 'nvgs'}}&lt;br /&gt;
{{hl2msg|bool|canzoom|}}&lt;br /&gt;
{{hl2msg|bool|hassilencer|}}&lt;br /&gt;
{{hl2msg|bool|issilenced|}}&lt;br /&gt;
{{hl2msg|bool|hastracers|}}&lt;br /&gt;
{{hl2msg|short|weptype|see below}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_UNKNOWN		&amp;amp;#61;	-1}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_KNIFE			&amp;amp;#61;	0}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_PISTOL		&amp;amp;#61;	1}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_SUBMACHINEGUN	&amp;amp;#61;	2}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_RIFLE			&amp;amp;#61;	3}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_SHOTGUN		&amp;amp;#61;	4}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_SNIPER_RIFLE	&amp;amp;#61;	5}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_MACHINEGUN	&amp;amp;#61;	6}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_C4			&amp;amp;#61;	7}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_GRENADE		&amp;amp;#61;	8}}&lt;br /&gt;
{{hl2msg|bool|ispainted|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enter_buyzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|enter_buyzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|canbuy|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== exit_buyzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|exit_buyzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|canbuy|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== buytime_ended ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|buytime_ended|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enter_bombzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|enter_bombzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|hasbomb|}}&lt;br /&gt;
{{hl2msg|bool|isplanted|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== exit_bombzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|exit_bombzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|hasbomb|}}&lt;br /&gt;
{{hl2msg|bool|isplanted|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enter_rescue_zone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|enter_rescue_zone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== exit_rescue_zone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|exit_rescue_zone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== silencer_off ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|silencer_off|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== silencer_on ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|silencer_on|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== buymenu_open ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|buymenu_open|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== buymenu_close ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|buymenu_close|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_prestart ===&lt;br /&gt;
{{qnotice|sent before all other round restart actions}}&lt;br /&gt;
{{begin-hl2msg|round_prestart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_poststart ===&lt;br /&gt;
{{qnotice|sent after all other round restart actions}}&lt;br /&gt;
{{begin-hl2msg|round_poststart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_start ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|round_start|string}}&lt;br /&gt;
{{hl2msg|long|timelimit|round time limit in seconds}}&lt;br /&gt;
{{hl2msg|long|fraglimit|frag limit in seconds}}&lt;br /&gt;
{{hl2msg|string|objective|round objective}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_end ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|round_end|string}}&lt;br /&gt;
{{hl2msg|byte|winner|winner team/user id}}&lt;br /&gt;
{{hl2msg|byte|reason|reson why team won}}&lt;br /&gt;
{{hl2msg|string|message|round end round message }}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== grenade_bounce ===&lt;br /&gt;
{{qnotice|Every time a grenade bounces}}&lt;br /&gt;
{{begin-hl2msg|grenade_bounce|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hegrenade_detonate ===&lt;br /&gt;
{{qnotice|Every time a hegrenade explodes}}&lt;br /&gt;
{{begin-hl2msg|hegrenade_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== flashbang_detonate ===&lt;br /&gt;
{{qnotice|Every time a flashbang detonates}}&lt;br /&gt;
{{begin-hl2msg|flashbang_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== smokegrenade_detonate ===&lt;br /&gt;
{{qnotice|Every time a smokegrenade detonates}}&lt;br /&gt;
{{begin-hl2msg|smokegrenade_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== smokegrenade_expired ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|smokegrenade_expired|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== molotov_detonate ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|molotov_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== decoy_detonate ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|decoy_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== decoy_started ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|decoy_started|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inferno_startburn ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inferno_startburn|string}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inferno_expire ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inferno_expire|string}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inferno_extinguish ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inferno_extinguish|string}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== decoy_firing ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|decoy_firing|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bullet_impact ===&lt;br /&gt;
{{qnotice|Every time a bullet hits something}}&lt;br /&gt;
{{begin-hl2msg|bullet_impact}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_footstep ===&lt;br /&gt;
{{qnotice|Every time a player takes a step}}&lt;br /&gt;
{{begin-hl2msg|player_footstep|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_jump ===&lt;br /&gt;
{{qnotice|Every time a player jumps}}&lt;br /&gt;
{{begin-hl2msg|player_jump|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_blind ===&lt;br /&gt;
{{qnotice|Every time a player is blinded by a flashbang}}&lt;br /&gt;
{{begin-hl2msg|player_blind|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_falldamage ===&lt;br /&gt;
{{qnotice|Every time a player takes damage due to a fall}}&lt;br /&gt;
{{begin-hl2msg|player_falldamage|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|float|damage|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== door_moving ===&lt;br /&gt;
{{qnotice|Every time a door is put in motion (opened)}}&lt;br /&gt;
{{begin-hl2msg|door_moving|string}}&lt;br /&gt;
{{hl2msg|long|entindex|}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_freeze_end ===&lt;br /&gt;
{{qnotice|When the round's mp_freezetime is up}}&lt;br /&gt;
{{begin-hl2msg|round_freeze_end|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== mb_input_lock_success ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|mb_input_lock_success|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== mb_input_lock_cancel ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|mb_input_lock_cancel|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== nav_blocked ===&lt;br /&gt;
{{qnotice|''Guess: Called when an area is blocked by the nav of a map''}}&lt;br /&gt;
{{begin-hl2msg|nav_blocked|string}}&lt;br /&gt;
{{hl2msg|long|area|}}&lt;br /&gt;
{{hl2msg|bool|blocked|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== nav_generate ===&lt;br /&gt;
{{qnotice|Called when a nav file does not exist for a map and bots are added}}&lt;br /&gt;
{{begin-hl2msg|nav_generate|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_stats_updated ===&lt;br /&gt;
{{qnotice|''Guess: Called when the player stats (achievments) are sent to valve''}}&lt;br /&gt;
{{begin-hl2msg|player_stats_updated|string}}&lt;br /&gt;
{{hl2msg|bool|forceupload|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== achievement_info_loaded ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|achievement_info_loaded|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== spec_target_updated ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|spec_target_updated|string}}&lt;br /&gt;
{{hl2msg|byte|userid|entindex of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== spec_mode_updated ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|spec_target_updated|string}}&lt;br /&gt;
{{hl2msg|byte|userid|entindex of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hltv_changed_mode ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|hltv_changed_mode|string}}&lt;br /&gt;
{{hl2msg|long|oldmode|}}&lt;br /&gt;
{{hl2msg|long|newmode|}}&lt;br /&gt;
{{hl2msg|long|obs_target|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_game_disconnected ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_game_disconnected|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_win_panel_round ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_win_panel_round|string}}&lt;br /&gt;
{{hl2msg|bool|show_timer_defend|}}&lt;br /&gt;
{{hl2msg|bool|show_timer_attack|}}&lt;br /&gt;
{{hl2msg|short|timer_time|}}&lt;br /&gt;
{{hl2msg|byte|final_event|defined in cs_gamerules.h}}&lt;br /&gt;
{{hl2msg|string|funfact_token|}}&lt;br /&gt;
{{hl2msg|short|funfact_player|}}&lt;br /&gt;
{{hl2msg|long|funfact_data1|}}&lt;br /&gt;
{{hl2msg|long|funfact_data2|}}&lt;br /&gt;
{{hl2msg|long|funfact_data3|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_win_panel_match ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_win_panel_match|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|Well nothing defined in CS:GO but maybe it's the same as in CS:S}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_match_end_restart ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_match_end_restart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_pre_restart ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_pre_restart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== show_freezepanel ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|show_freezepanel|string}}&lt;br /&gt;
{{hl2msg|short|victim|endindex of the one who was killed}}&lt;br /&gt;
{{hl2msg|short|killer|entindex of the killer entity}}&lt;br /&gt;
{{hl2msg|short|hits_taken|}}&lt;br /&gt;
{{hl2msg|short|damage_taken|}}&lt;br /&gt;
{{hl2msg|short|hits_given|}}&lt;br /&gt;
{{hl2msg|short|damage_given|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hide_freezepanel ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|hide_freezepanel|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== freezecam_started ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|freezecam_started|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_avenged_teammate ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_avenged_teammate|string}}&lt;br /&gt;
{{hl2msg|short|avenger_id|}}&lt;br /&gt;
{{hl2msg|short|avenged_player_id|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== achievement_earned ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|achievement_earned|string}}&lt;br /&gt;
{{hl2msg|byte|player|entindex of the player}}&lt;br /&gt;
{{hl2msg|short|achievement|achievement ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== achievement_earned_local ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|achievement_earned_local|string}}&lt;br /&gt;
{{hl2msg|short|achievement|achievement ID}}&lt;br /&gt;
{{hl2msg|short|splitscreenplayer|splitscreen ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_found ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|item_found|string}}&lt;br /&gt;
{{hl2msg|byte|player|entindex of the player}}&lt;br /&gt;
{{hl2msg|byte|quality|quality of the item}}&lt;br /&gt;
{{hl2msg|byte|method|method by which we acquired the item}}&lt;br /&gt;
{{hl2msg|long|itemdef|the item definition index}}&lt;br /&gt;
{{hl2msg|long|itemid|the item id in the players inventory}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_gifted ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|item_gifted|string}}&lt;br /&gt;
{{hl2msg|byte|player|entindex of the player who sent the gift}}&lt;br /&gt;
{{hl2msg|long|itemdef|the item definition index of the gift that was opened}}&lt;br /&gt;
{{hl2msg|byte|numgifts|how many recipients got the gifts in this gift batch}}&lt;br /&gt;
{{hl2msg|byte|giftidx|index of recipient in this gift batch (0 for the first recipient, 1 for second, and so on...)}}&lt;br /&gt;
{{hl2msg|long|accountid|gift recipient's account ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== repost_xbox_achievements ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|repost_xbox_achievements|string}}&lt;br /&gt;
{{hl2msg|short|splitscreenplayer|splitscreen ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== match_end_conditions ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|match_end_conditions|string}}&lt;br /&gt;
{{hl2msg|long|frags|}}&lt;br /&gt;
{{hl2msg|long|max_rounds|}}&lt;br /&gt;
{{hl2msg|long|win_rounds|}}&lt;br /&gt;
{{hl2msg|long|time|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_mvp ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|round_mvp|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|reason|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_decal ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_decal|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== teamplay_round_start ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|teamplay_round_start|string}}&lt;br /&gt;
{{hl2msg|bool|full_reset|is this a full reset of the map}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== client_disconnect===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|client_disconnect|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_player_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_player_levelup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who leveled up}}&lt;br /&gt;
{{hl2msg|short|weaponrank|}}&lt;br /&gt;
{{hl2msg|string|weaponname|name of weapon being awarded}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== ggtr_player_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|ggtr_player_levelup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who leveled up}}&lt;br /&gt;
{{hl2msg|short|weaponrank|}}&lt;br /&gt;
{{hl2msg|string|weaponname|name of weapon being awarded}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== ggprogressive_player_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|ggprogressive_player_levelup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who leveled up}}&lt;br /&gt;
{{hl2msg|short|weaponrank|}}&lt;br /&gt;
{{hl2msg|string|weaponname|name of weapon being awarded}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_killed_enemy ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_killed_enemy|string}}&lt;br /&gt;
{{hl2msg|short|victimid|user ID who died}}&lt;br /&gt;
{{hl2msg|short|attackerid|user ID who killed}}&lt;br /&gt;
{{hl2msg|short|dominated|did killer dominate victim with this kill}}&lt;br /&gt;
{{hl2msg|short|revenge|did killer get revenge on victim with this kill}}&lt;br /&gt;
{{hl2msg|bool|bonus|did killer kill with a bonus weapon?}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_final_weapon_achieved ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_final_weapon_achieved|string}}&lt;br /&gt;
{{hl2msg|short|playerid|user ID who achieved the final gun game weapon}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_bonus_grenade_achieved ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_bonus_grenade_achieved|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who achieved the bonus grenade}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== switch_team ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|switch_team|string}}&lt;br /&gt;
{{hl2msg|short|numPlayers|number of active players on both T and CT}}&lt;br /&gt;
{{hl2msg|short|numSpectators|number of spectators}}&lt;br /&gt;
{{hl2msg|short|avg_rank|average rank of human players}}&lt;br /&gt;
{{hl2msg|short|numTSlotsFree|}}&lt;br /&gt;
{{hl2msg|short|numCTSlotsFree|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_leader ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_leader|string}}&lt;br /&gt;
{{hl2msg|short|playerid|user ID that is currently in the lead}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_player_impending_upgrade ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_player_impending_upgrade|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who will be leveling up}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== write_profile_data ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|write_profile_data|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== trial_time_expired ===&lt;br /&gt;
{{qnotice|fired when a player runs out of time in trial mode}}&lt;br /&gt;
{{begin-hl2msg|trial_time_expired|string}}&lt;br /&gt;
{{hl2msg|short|slot|player whose time has expired}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== update_matchmaking_stats ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|update_matchmaking_stats|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_reset_vote ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_reset_vote|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|vote|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enable_restart_voting ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|enable_restart_voting|string}}&lt;br /&gt;
{{hl2msg|bool|enable|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== sfuievent ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|sfuievent|string}}&lt;br /&gt;
{{hl2msg|string|action|}}&lt;br /&gt;
{{hl2msg|string|data|}}&lt;br /&gt;
{{hl2msg|byte|slot|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== start_vote ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|start_vote|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID on server}}&lt;br /&gt;
{{hl2msg|byte|type|}}&lt;br /&gt;
{{hl2msg|short|vote_parameter|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_given_c4 ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_given_c4|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who received the c4}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_reset_round_start_sounds ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_reset_round_start_sounds|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who should have round start sounds reset}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_player_flashbanged ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_player_flashbanged|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player banged}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_highlight_ammo ===&lt;br /&gt;
{{qnotice|not used yet because this relied on vgui panels, scaleform isn't supported yet}}&lt;br /&gt;
{{begin-hl2msg|tr_highlight_ammo|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_mark_complete ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_mark_complete|string}}&lt;br /&gt;
{{hl2msg|short|complete|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_mark_best_time ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_mark_best_time|string}}&lt;br /&gt;
{{hl2msg|long|time|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_exit_hint_trigger ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_exit_hint_trigger|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bot_takeover ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|bot_takeover|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|botid|}}&lt;br /&gt;
{{hl2msg|short|index|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_show_finish_msgbox ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_show_finish_msgbox|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_show_exit_msgbox ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_show_exit_msgbox|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== reset_player_controls ===&lt;br /&gt;
{{qnotice|used for demos}}&lt;br /&gt;
{{begin-hl2msg|reset_player_controls|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== jointeam_failed ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|jointeam_failed|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|byte|reason|0 = team_full}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== teamchange_pending ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|teamchange_pending|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|byte|toteam|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== material_default_complete ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|material_default_complete|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_prev_next_spectator ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_prev_next_spectator|string}}&lt;br /&gt;
{{hl2msg|bool|next|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_handle_ime_event ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_handle_ime_event|string}}&lt;br /&gt;
{{hl2msg|1|local|}}&lt;br /&gt;
{{hl2msg|string|eventtype|}}&lt;br /&gt;
{{hl2msg|wstring|eventdata|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== nextlevel_changed ===&lt;br /&gt;
{{qnotice|a game event, name may be 32 characters long}}&lt;br /&gt;
{{begin-hl2msg|nextlevel_changed|string}}&lt;br /&gt;
{{hl2msg|string|nextlevel|weapon name killer used}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== seasoncoin_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|seasoncoin_levelup|string}}&lt;br /&gt;
{{hl2msg|short|player|}}&lt;br /&gt;
{{hl2msg|short|category|}}&lt;br /&gt;
{{hl2msg|short|rank|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tournament_reward ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tournament_reward|string}}&lt;br /&gt;
{{hl2msg|long|defindex|}}&lt;br /&gt;
{{hl2msg|long|totalrewards|}}&lt;br /&gt;
{{hl2msg|long|accountid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== start_halftime ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|start_halftime|string}}&lt;br /&gt;
{{end-hl2msg}}&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Counter-Strike:_Global_Offensive_Events&amp;diff=9911</id>
		<title>Counter-Strike: Global Offensive Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Counter-Strike:_Global_Offensive_Events&amp;diff=9911"/>
		<updated>2015-05-26T16:19:09Z</updated>

		<summary type="html">&lt;p&gt;RedSword: detailed hitgroups /* player_hurt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:''Refer back to [[Game Events (Source)]] for more events.''&lt;br /&gt;
&lt;br /&gt;
=== player_death ===&lt;br /&gt;
{{qnotice|When a client dies}}&lt;br /&gt;
{{begin-hl2msg|player_death|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who died}}&lt;br /&gt;
{{hl2msg|short|attacker|user ID who killed}}&lt;br /&gt;
{{hl2msg|short|assister|user ID who assisted in the kill}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name killer used }}&lt;br /&gt;
{{hl2msg|string|weapon_itemid|inventory item id of weapon killer used}}&lt;br /&gt;
{{hl2msg|string|weapon_fauxitemid|faux item id of weapon killer used}}&lt;br /&gt;
{{hl2msg|string|weapon_originalowner_xuid|}}&lt;br /&gt;
{{hl2msg|bool|headshot|singals a headshot}}&lt;br /&gt;
{{hl2msg|short|dominated|did killer dominate victim with this kill}}&lt;br /&gt;
{{hl2msg|short|revenge|did killer get revenge on victim with this kill}}&lt;br /&gt;
{{hl2msg|short|penetrated|number of objects shot penetrated before killing target}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_hurt ===&lt;br /&gt;
{{qnotice|When a client is damaged}}&lt;br /&gt;
{{begin-hl2msg|player_hurt|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who was hurt}}&lt;br /&gt;
{{hl2msg|short|attacker|user ID who attacked}}&lt;br /&gt;
{{hl2msg|byte|health|remaining health points}}&lt;br /&gt;
{{hl2msg|byte|armor|remaining armor points}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name attacker used, if not the world}}&lt;br /&gt;
{{hl2msg|short|dmg_health|damage done to health}}&lt;br /&gt;
{{hl2msg|byte|dmg_armor|damage done to armor}}&lt;br /&gt;
{{hl2msg|byte|hitgroup|hitgroup that was damaged ; 1=hs, 2=uppertorso, 3=lowertorso, 4=left arm, 5=right arm, 6=left leg, 7=right leg}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_purchase ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|item_purchase|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|team|}}&lt;br /&gt;
{{hl2msg|string|weapon|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_beginplant ===&lt;br /&gt;
{{qnotice|When the bomb is starting to get planted}}&lt;br /&gt;
{{begin-hl2msg|bomb_beginplant|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who is planting the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_abortplant ===&lt;br /&gt;
{{qnotice|When the bomb planter stops planting the bomb}}&lt;br /&gt;
{{begin-hl2msg|bomb_abortplant|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who is planting the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_planted ===&lt;br /&gt;
{{qnotice|When the bomb has been planted}}&lt;br /&gt;
{{begin-hl2msg|bomb_planted|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who planted the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_defused ===&lt;br /&gt;
{{qnotice|When the bomb has been defused}}&lt;br /&gt;
{{begin-hl2msg|bomb_defused|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who defused the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_exploded ===&lt;br /&gt;
{{qnotice|When the bomb explodes}}&lt;br /&gt;
{{begin-hl2msg|bomb_exploded|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who planted the bomb}}&lt;br /&gt;
{{hl2msg|short|site|bombsite index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_dropped ===&lt;br /&gt;
{{qnotice|When the bomb is dropped by a client}}&lt;br /&gt;
{{begin-hl2msg|bomb_dropped|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who dropped the bomb}}&lt;br /&gt;
{{hl2msg|long|entindex|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_pickup ===&lt;br /&gt;
{{qnotice|When the bomb is picked up by a client}}&lt;br /&gt;
{{begin-hl2msg|bomb_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who picked up the bomb}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== defuser_dropped ===&lt;br /&gt;
{{qnotice|When the defuser is dropped by a client}}&lt;br /&gt;
{{begin-hl2msg|defuser_dropped|string}}&lt;br /&gt;
{{hl2msg|long|entityid|defuser's entity ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== defuser_pickup ===&lt;br /&gt;
{{qnotice|When the defuser is picked up by a client}}&lt;br /&gt;
{{begin-hl2msg|defuser_pickup|string}}&lt;br /&gt;
{{hl2msg|long|entityid|defuser's entity ID}}&lt;br /&gt;
{{hl2msg|short|userid|player who picked up the defuser}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== announce_phase_end ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|announce_phase_end|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_intermission ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|cs_intermission|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_begindefuse ===&lt;br /&gt;
{{qnotice|When the bomb is started to be defused}}&lt;br /&gt;
{{begin-hl2msg|bomb_begindefuse|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who is defusing}}&lt;br /&gt;
{{hl2msg|bool|haskit|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_abortdefuse ===&lt;br /&gt;
{{qnotice|When the bomb defusal is stopped}}&lt;br /&gt;
{{begin-hl2msg|bomb_abortdefuse|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who was defusing}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_follows ===&lt;br /&gt;
{{qnotice|When the hostage begins following a client}}&lt;br /&gt;
{{begin-hl2msg|hostage_follows|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who touched the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_hurt ===&lt;br /&gt;
{{qnotice|When a hostage is damaged}}&lt;br /&gt;
{{begin-hl2msg|hostage_hurt|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who hurt the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_killed ===&lt;br /&gt;
{{qnotice|When a hostage is killed}}&lt;br /&gt;
{{begin-hl2msg|hostage_killed|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who killed the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_rescued ===&lt;br /&gt;
{{qnotice|When a hostage is rescued}}&lt;br /&gt;
{{begin-hl2msg|hostage_rescued|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who rescued the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{hl2msg|short|site|rescue site index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_stops_following ===&lt;br /&gt;
{{qnotice|When a hostage stops following a client}}&lt;br /&gt;
{{begin-hl2msg|hostage_stops_following|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who rescued the hostage}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_rescued_all ===&lt;br /&gt;
{{qnotice|When all the hostages are rescued}}&lt;br /&gt;
{{begin-hl2msg|hostage_rescued_all|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hostage_call_for_help ===&lt;br /&gt;
{{qnotice|When the hostage calls for help}}&lt;br /&gt;
{{begin-hl2msg|hostage_call_for_help|string}}&lt;br /&gt;
{{hl2msg|short|hostage|hostage entity index}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== vip_escaped ===&lt;br /&gt;
{{qnotice|When the VIP escapes}}&lt;br /&gt;
{{begin-hl2msg|vip_escaped|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who was the VIP}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== vip_killed ===&lt;br /&gt;
{{qnotice|When the VIP is killed}}&lt;br /&gt;
{{begin-hl2msg|vip_killed|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who was the VIP}}&lt;br /&gt;
{{hl2msg|short|attacker|user ID who killed the VIP}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_radio ===&lt;br /&gt;
{{qnotice|When the player uses radio commands}}&lt;br /&gt;
{{begin-hl2msg|player_radio|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|slot|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bomb_beep ===&lt;br /&gt;
{{qnotice|Every time the bomb beep sound happens}}&lt;br /&gt;
{{begin-hl2msg|bomb_beep|string}}&lt;br /&gt;
{{hl2msg|long|entindex|c4 entity}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_fire ===&lt;br /&gt;
{{qnotice|Every time a client fires their weapon}}&lt;br /&gt;
{{begin-hl2msg|weapon_fire|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name used}}&lt;br /&gt;
{{hl2msg|bool|silenced|is weapon silenced}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_fire_on_empty ===&lt;br /&gt;
{{qnotice|Every time a client fires their weapon and it's empty}}&lt;br /&gt;
{{begin-hl2msg|weapon_fire_on_empty|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|weapon|weapon name used}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_outofammo ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|weapon_outofammo|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_reload ===&lt;br /&gt;
{{qnotice|Every time a client reloads their weapon}}&lt;br /&gt;
{{begin-hl2msg|weapon_reload|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_zoom ===&lt;br /&gt;
{{qnotice|Every time a client zooms a scoped weapon}}&lt;br /&gt;
{{begin-hl2msg|weapon_zoom|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== silencer_detach ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|silencer_detach|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inspect_weapon ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inspect_weapon|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== weapon_zoom_rifle ===&lt;br /&gt;
{{qnotice|exists for the game instructor to let it know when the player zoomed in with a regular rifle. Different from the above weapon_zoom because we don't use this event to notify bots}}&lt;br /&gt;
{{begin-hl2msg|weapon_zoom_rifle|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_spawned ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|player_spawned|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|inrestart|true if restart is pending}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_pickup ===&lt;br /&gt;
{{qnotice|Every time an item is picked up (generally weapons)}}&lt;br /&gt;
{{begin-hl2msg|item_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|item|either a weapon such as 'tmp' or 'hegrenade', or an item such as 'nvgs'}}&lt;br /&gt;
{{hl2msg|bool|silent|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== ammo_pickup ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|ammo_pickup|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|item|either a weapon such as 'tmp' or 'hegrenade', or an item such as 'nvgs'}}&lt;br /&gt;
{{hl2msg|long|index|the weapon entindex}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_equip ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|item_equip|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|string|item|either a weapon such as 'tmp' or 'hegrenade', or an item such as 'nvgs'}}&lt;br /&gt;
{{hl2msg|bool|canzoom|}}&lt;br /&gt;
{{hl2msg|bool|hassilencer|}}&lt;br /&gt;
{{hl2msg|bool|issilenced|}}&lt;br /&gt;
{{hl2msg|bool|hastracers|}}&lt;br /&gt;
{{hl2msg|short|weptype|see below}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_UNKNOWN		&amp;amp;#61;	-1}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_KNIFE			&amp;amp;#61;	0}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_PISTOL		&amp;amp;#61;	1}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_SUBMACHINEGUN	&amp;amp;#61;	2}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_RIFLE			&amp;amp;#61;	3}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_SHOTGUN		&amp;amp;#61;	4}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_SNIPER_RIFLE	&amp;amp;#61;	5}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_MACHINEGUN	&amp;amp;#61;	6}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_C4			&amp;amp;#61;	7}}&lt;br /&gt;
{{hl2msg|''none''|''none''|WEAPONTYPE_GRENADE		&amp;amp;#61;	8}}&lt;br /&gt;
{{hl2msg|bool|ispainted|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enter_buyzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|enter_buyzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|canbuy|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== exit_buyzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|exit_buyzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|canbuy|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== buytime_ended ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|buytime_ended|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enter_bombzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|enter_bombzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|hasbomb|}}&lt;br /&gt;
{{hl2msg|bool|isplanted|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== exit_bombzone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|exit_bombzone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|bool|hasbomb|}}&lt;br /&gt;
{{hl2msg|bool|isplanted|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enter_rescue_zone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|enter_rescue_zone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== exit_rescue_zone ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|exit_rescue_zone|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== silencer_off ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|silencer_off|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== silencer_on ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|silencer_on|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== buymenu_open ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|buymenu_open|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== buymenu_close ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|buymenu_close|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_prestart ===&lt;br /&gt;
{{qnotice|sent before all other round restart actions}}&lt;br /&gt;
{{begin-hl2msg|round_prestart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_poststart ===&lt;br /&gt;
{{qnotice|sent after all other round restart actions}}&lt;br /&gt;
{{begin-hl2msg|round_poststart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_start ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|round_start|string}}&lt;br /&gt;
{{hl2msg|long|timelimit|round time limit in seconds}}&lt;br /&gt;
{{hl2msg|long|fraglimit|frag limit in seconds}}&lt;br /&gt;
{{hl2msg|string|objective|round objective}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_end ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|round_end|string}}&lt;br /&gt;
{{hl2msg|byte|winner|winner team/user id}}&lt;br /&gt;
{{hl2msg|byte|reason|reson why team won}}&lt;br /&gt;
{{hl2msg|string|message|round end round message }}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== grenade_bounce ===&lt;br /&gt;
{{qnotice|Every time a grenade bounces}}&lt;br /&gt;
{{begin-hl2msg|grenade_bounce|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hegrenade_detonate ===&lt;br /&gt;
{{qnotice|Every time a hegrenade explodes}}&lt;br /&gt;
{{begin-hl2msg|hegrenade_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== flashbang_detonate ===&lt;br /&gt;
{{qnotice|Every time a flashbang detonates}}&lt;br /&gt;
{{begin-hl2msg|flashbang_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== smokegrenade_detonate ===&lt;br /&gt;
{{qnotice|Every time a smokegrenade detonates}}&lt;br /&gt;
{{begin-hl2msg|smokegrenade_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== smokegrenade_expired ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|smokegrenade_expired|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== molotov_detonate ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|molotov_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== decoy_detonate ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|decoy_detonate|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== decoy_started ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|decoy_started|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inferno_startburn ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inferno_startburn|string}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inferno_expire ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inferno_expire|string}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== inferno_extinguish ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|inferno_extinguish|string}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== decoy_firing ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|decoy_firing|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|entityid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bullet_impact ===&lt;br /&gt;
{{qnotice|Every time a bullet hits something}}&lt;br /&gt;
{{begin-hl2msg|bullet_impact}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|float|x|}}&lt;br /&gt;
{{hl2msg|float|y|}}&lt;br /&gt;
{{hl2msg|float|z|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_footstep ===&lt;br /&gt;
{{qnotice|Every time a player takes a step}}&lt;br /&gt;
{{begin-hl2msg|player_footstep|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_jump ===&lt;br /&gt;
{{qnotice|Every time a player jumps}}&lt;br /&gt;
{{begin-hl2msg|player_jump|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_blind ===&lt;br /&gt;
{{qnotice|Every time a player is blinded by a flashbang}}&lt;br /&gt;
{{begin-hl2msg|player_blind|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_falldamage ===&lt;br /&gt;
{{qnotice|Every time a player takes damage due to a fall}}&lt;br /&gt;
{{begin-hl2msg|player_falldamage|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|float|damage|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== door_moving ===&lt;br /&gt;
{{qnotice|Every time a door is put in motion (opened)}}&lt;br /&gt;
{{begin-hl2msg|door_moving|string}}&lt;br /&gt;
{{hl2msg|long|entindex|}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_freeze_end ===&lt;br /&gt;
{{qnotice|When the round's mp_freezetime is up}}&lt;br /&gt;
{{begin-hl2msg|round_freeze_end|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== mb_input_lock_success ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|mb_input_lock_success|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== mb_input_lock_cancel ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|mb_input_lock_cancel|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== nav_blocked ===&lt;br /&gt;
{{qnotice|''Guess: Called when an area is blocked by the nav of a map''}}&lt;br /&gt;
{{begin-hl2msg|nav_blocked|string}}&lt;br /&gt;
{{hl2msg|long|area|}}&lt;br /&gt;
{{hl2msg|bool|blocked|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== nav_generate ===&lt;br /&gt;
{{qnotice|Called when a nav file does not exist for a map and bots are added}}&lt;br /&gt;
{{begin-hl2msg|nav_generate|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_stats_updated ===&lt;br /&gt;
{{qnotice|''Guess: Called when the player stats (achievments) are sent to valve''}}&lt;br /&gt;
{{begin-hl2msg|player_stats_updated|string}}&lt;br /&gt;
{{hl2msg|bool|forceupload|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== achievement_info_loaded ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|achievement_info_loaded|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== spec_target_updated ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|spec_target_updated|string}}&lt;br /&gt;
{{hl2msg|byte|userid|entindex of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== spec_mode_updated ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|spec_target_updated|string}}&lt;br /&gt;
{{hl2msg|byte|userid|entindex of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hltv_changed_mode ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|hltv_changed_mode|string}}&lt;br /&gt;
{{hl2msg|long|oldmode|}}&lt;br /&gt;
{{hl2msg|long|newmode|}}&lt;br /&gt;
{{hl2msg|long|obs_target|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_game_disconnected ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_game_disconnected|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_win_panel_round ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_win_panel_round|string}}&lt;br /&gt;
{{hl2msg|bool|show_timer_defend|}}&lt;br /&gt;
{{hl2msg|bool|show_timer_attack|}}&lt;br /&gt;
{{hl2msg|short|timer_time|}}&lt;br /&gt;
{{hl2msg|byte|final_event|defined in cs_gamerules.h}}&lt;br /&gt;
{{hl2msg|string|funfact_token|}}&lt;br /&gt;
{{hl2msg|short|funfact_player|}}&lt;br /&gt;
{{hl2msg|long|funfact_data1|}}&lt;br /&gt;
{{hl2msg|long|funfact_data2|}}&lt;br /&gt;
{{hl2msg|long|funfact_data3|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_win_panel_match ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_win_panel_match|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|Well nothing defined in CS:GO but maybe it's the same as in CS:S}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_match_end_restart ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_match_end_restart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_pre_restart ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_pre_restart|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== show_freezepanel ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|show_freezepanel|string}}&lt;br /&gt;
{{hl2msg|short|victim|endindex of the one who was killed}}&lt;br /&gt;
{{hl2msg|short|killer|entindex of the killer entity}}&lt;br /&gt;
{{hl2msg|short|hits_taken|}}&lt;br /&gt;
{{hl2msg|short|damage_taken|}}&lt;br /&gt;
{{hl2msg|short|hits_given|}}&lt;br /&gt;
{{hl2msg|short|damage_given|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== hide_freezepanel ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|hide_freezepanel|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== freezecam_started ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|freezecam_started|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_avenged_teammate ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_avenged_teammate|string}}&lt;br /&gt;
{{hl2msg|short|avenger_id|}}&lt;br /&gt;
{{hl2msg|short|avenged_player_id|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== achievement_earned ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|achievement_earned|string}}&lt;br /&gt;
{{hl2msg|byte|player|entindex of the player}}&lt;br /&gt;
{{hl2msg|short|achievement|achievement ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== achievement_earned_local ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|achievement_earned_local|string}}&lt;br /&gt;
{{hl2msg|short|achievement|achievement ID}}&lt;br /&gt;
{{hl2msg|short|splitscreenplayer|splitscreen ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_found ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|item_found|string}}&lt;br /&gt;
{{hl2msg|byte|player|entindex of the player}}&lt;br /&gt;
{{hl2msg|byte|quality|quality of the item}}&lt;br /&gt;
{{hl2msg|byte|method|method by which we acquired the item}}&lt;br /&gt;
{{hl2msg|long|itemdef|the item definition index}}&lt;br /&gt;
{{hl2msg|long|itemid|the item id in the players inventory}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== item_gifted ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|item_gifted|string}}&lt;br /&gt;
{{hl2msg|byte|player|entindex of the player who sent the gift}}&lt;br /&gt;
{{hl2msg|long|itemdef|the item definition index of the gift that was opened}}&lt;br /&gt;
{{hl2msg|byte|numgifts|how many recipients got the gifts in this gift batch}}&lt;br /&gt;
{{hl2msg|byte|giftidx|index of recipient in this gift batch (0 for the first recipient, 1 for second, and so on...)}}&lt;br /&gt;
{{hl2msg|long|accountid|gift recipient's account ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== repost_xbox_achievements ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|repost_xbox_achievements|string}}&lt;br /&gt;
{{hl2msg|short|splitscreenplayer|splitscreen ID}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== match_end_conditions ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|match_end_conditions|string}}&lt;br /&gt;
{{hl2msg|long|frags|}}&lt;br /&gt;
{{hl2msg|long|max_rounds|}}&lt;br /&gt;
{{hl2msg|long|win_rounds|}}&lt;br /&gt;
{{hl2msg|long|time|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== round_mvp ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|round_mvp|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|reason|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_decal ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_decal|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== teamplay_round_start ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|teamplay_round_start|string}}&lt;br /&gt;
{{hl2msg|bool|full_reset|is this a full reset of the map}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== client_disconnect===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|client_disconnect|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_player_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_player_levelup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who leveled up}}&lt;br /&gt;
{{hl2msg|short|weaponrank|}}&lt;br /&gt;
{{hl2msg|string|weaponname|name of weapon being awarded}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== ggtr_player_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|ggtr_player_levelup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who leveled up}}&lt;br /&gt;
{{hl2msg|short|weaponrank|}}&lt;br /&gt;
{{hl2msg|string|weaponname|name of weapon being awarded}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== ggprogressive_player_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|ggprogressive_player_levelup|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who leveled up}}&lt;br /&gt;
{{hl2msg|short|weaponrank|}}&lt;br /&gt;
{{hl2msg|string|weaponname|name of weapon being awarded}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_killed_enemy ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_killed_enemy|string}}&lt;br /&gt;
{{hl2msg|short|victimid|user ID who died}}&lt;br /&gt;
{{hl2msg|short|attackerid|user ID who killed}}&lt;br /&gt;
{{hl2msg|short|dominated|did killer dominate victim with this kill}}&lt;br /&gt;
{{hl2msg|short|revenge|did killer get revenge on victim with this kill}}&lt;br /&gt;
{{hl2msg|bool|bonus|did killer kill with a bonus weapon?}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_final_weapon_achieved ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_final_weapon_achieved|string}}&lt;br /&gt;
{{hl2msg|short|playerid|user ID who achieved the final gun game weapon}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_bonus_grenade_achieved ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_bonus_grenade_achieved|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who achieved the bonus grenade}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== switch_team ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|switch_team|string}}&lt;br /&gt;
{{hl2msg|short|numPlayers|number of active players on both T and CT}}&lt;br /&gt;
{{hl2msg|short|numSpectators|number of spectators}}&lt;br /&gt;
{{hl2msg|short|avg_rank|average rank of human players}}&lt;br /&gt;
{{hl2msg|short|numTSlotsFree|}}&lt;br /&gt;
{{hl2msg|short|numCTSlotsFree|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_leader ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_leader|string}}&lt;br /&gt;
{{hl2msg|short|playerid|user ID that is currently in the lead}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_player_impending_upgrade ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_player_impending_upgrade|string}}&lt;br /&gt;
{{hl2msg|short|userid|player who will be leveling up}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== write_profile_data ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|write_profile_data|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== trial_time_expired ===&lt;br /&gt;
{{qnotice|fired when a player runs out of time in trial mode}}&lt;br /&gt;
{{begin-hl2msg|trial_time_expired|string}}&lt;br /&gt;
{{hl2msg|short|slot|player whose time has expired}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== update_matchmaking_stats ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|update_matchmaking_stats|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_reset_vote ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_reset_vote|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|vote|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== enable_restart_voting ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|enable_restart_voting|string}}&lt;br /&gt;
{{hl2msg|bool|enable|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== sfuievent ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|sfuievent|string}}&lt;br /&gt;
{{hl2msg|string|action|}}&lt;br /&gt;
{{hl2msg|string|data|}}&lt;br /&gt;
{{hl2msg|byte|slot|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== start_vote ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|start_vote|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID on server}}&lt;br /&gt;
{{hl2msg|byte|type|}}&lt;br /&gt;
{{hl2msg|short|vote_parameter|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== player_given_c4 ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|player_given_c4|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who received the c4}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== gg_reset_round_start_sounds ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|gg_reset_round_start_sounds|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID who should have round start sounds reset}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_player_flashbanged ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_player_flashbanged|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player banged}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_highlight_ammo ===&lt;br /&gt;
{{qnotice|not used yet because this relied on vgui panels, scaleform isn't supported yet}}&lt;br /&gt;
{{begin-hl2msg|tr_highlight_ammo|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_mark_complete ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_mark_complete|string}}&lt;br /&gt;
{{hl2msg|short|complete|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_mark_best_time ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_mark_best_time|string}}&lt;br /&gt;
{{hl2msg|long|time|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_exit_hint_trigger ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_exit_hint_trigger|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== bot_takeover ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|bot_takeover|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|short|botid|}}&lt;br /&gt;
{{hl2msg|short|index|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_show_finish_msgbox ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_show_finish_msgbox|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tr_show_exit_msgbox ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tr_show_exit_msgbox|string}}&lt;br /&gt;
{{hl2msg|short|userid|user ID of the player}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== reset_player_controls ===&lt;br /&gt;
{{qnotice|used for demos}}&lt;br /&gt;
{{begin-hl2msg|reset_player_controls|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== jointeam_failed ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|jointeam_failed|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|byte|reason|0 = team_full}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== teamchange_pending ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|teamchange_pending|string}}&lt;br /&gt;
{{hl2msg|short|userid|}}&lt;br /&gt;
{{hl2msg|byte|toteam|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== material_default_complete ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|material_default_complete|string}}&lt;br /&gt;
{{hl2msg|''none''|''none''|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_prev_next_spectator ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_prev_next_spectator|string}}&lt;br /&gt;
{{hl2msg|bool|next|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== cs_handle_ime_event ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|cs_handle_ime_event|string}}&lt;br /&gt;
{{hl2msg|1|local|}}&lt;br /&gt;
{{hl2msg|string|eventtype|}}&lt;br /&gt;
{{hl2msg|wstring|eventdata|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== nextlevel_changed ===&lt;br /&gt;
{{qnotice|a game event, name may be 32 characters long}}&lt;br /&gt;
{{begin-hl2msg|nextlevel_changed|string}}&lt;br /&gt;
{{hl2msg|string|nextlevel|weapon name killer used}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== seasoncoin_levelup ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|seasoncoin_levelup|string}}&lt;br /&gt;
{{hl2msg|short|player|}}&lt;br /&gt;
{{hl2msg|short|category|}}&lt;br /&gt;
{{hl2msg|short|rank|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== tournament_reward ===&lt;br /&gt;
{{qnotice|-}}&lt;br /&gt;
{{begin-hl2msg|tournament_reward|string}}&lt;br /&gt;
{{hl2msg|long|defindex|}}&lt;br /&gt;
{{hl2msg|long|totalrewards|}}&lt;br /&gt;
{{hl2msg|long|accountid|}}&lt;br /&gt;
{{end-hl2msg}}&lt;br /&gt;
&lt;br /&gt;
=== start_halftime ===&lt;br /&gt;
{{qnotice|}}&lt;br /&gt;
{{begin-hl2msg|start_halftime|string}}&lt;br /&gt;
{{end-hl2msg}}&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Building_SourceMod&amp;diff=9903</id>
		<title>Building SourceMod</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Building_SourceMod&amp;diff=9903"/>
		<updated>2015-05-09T12:40:43Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Compiling SourceMod is not difficult, but requires a number of prerequisites.  This article details the requirements and steps to being able to build working SourceMod binaries.&lt;br /&gt;
&lt;br /&gt;
Note that specific compiler versions are required to maintain ABI compatibility with Source engine binaries.&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Install Visual Studio or Visual C++. VS/VC 2010 or above is required for SourceMod 1.6.x and earlier. VS/VC 2013 Update 2 or above is required for SourceMod 1.7.x and later. Express editions should work fine. If you use 2013 or higher, make sure to get the &amp;quot;Desktop&amp;quot; version: [http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-desktop Visual Studio Express 2013 for Desktop].&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Install [http://git-scm.com/ Git]. Make sure that you select the option that adds Git to PATH.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Next, you will need to start an environment capable of running Python and interacting with the Visual Studio compiler. There are two ways to do this.&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Use [https://wiki.mozilla.org/MozillaBuild MozillaBuild]. MozillaBuild comes with Python, Mercurial, and a unix-like shell.&lt;br /&gt;
   &amp;lt;ol&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Install MozillaBuild to &amp;lt;tt&amp;gt;C:\mozilla-build&amp;lt;/tt&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Navigate to &amp;lt;tt&amp;gt;C:\mozilla-build&amp;lt;/tt&amp;gt; and run as administrator the batch file corresponding to your Visual Studio version. For example, &amp;lt;tt&amp;gt;start-msvc10.bat&amp;lt;/tt&amp;gt; for Visual Studio 2010 (10.0). Do not run an x64 version.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Add Git to MozillaBuild's &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;. The easiest way to do this is to enter the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;export PATH=\$PATH:/c/Program\ Files\ \(x86\)/Git/bin&amp;quot; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
source ~/.profile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
    &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ol&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Or, you can manually set up a shell.&lt;br /&gt;
   &amp;lt;ol&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Install [http://python.org/ Python] 2.7. It will install to C:\Python27 by default. (Version 3.4 will work, but is not recommended for compatibility with other tools).&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Add Python to your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; variable. Go to Control Panel, System, Advanced, Environment Variables. Add &amp;lt;tt&amp;gt;C:\Python27;C:\Python27\Scripts&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; (or wherever your Python install is).&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Under Start, Programs, Microsoft Visual Studio, select the &amp;quot;Visual Studio Tools&amp;quot; folder and run &amp;quot;Visual Studio Command Prompt&amp;quot;. Alternately, open a normal command prompt and run &amp;lt;tt&amp;gt;&amp;quot;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars.bat&amp;quot;&amp;lt;/tt&amp;gt;. Substitute your Visual Studio version if needed.&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ol&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Install Git, via either system packages or from the [http://git-scm.com/ Git] distribution.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Install either the GNU C Compiler or the Clang compiler.&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;For GCC, version 4.4 or higher is required for SourceMod 1.6.x and earlier, and version 4.7 or high for SourceMod 1.7.x and later. On Debian/Ubuntu-based systems, the commands below will install GCC (the second set of packages is required for building on 64-bit systems).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install gcc g++&lt;br /&gt;
sudo apt-get install gcc-multilib g++-multilib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;For Clang, 3.2 or higher is required. On Debian/Ubuntu-based systems, the packages needed are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install clang&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;If building on a 64-bit system, a few additional packages may be required. For example on Debian/Ubuntu they are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install ia32-libs&lt;br /&gt;
sudo apt-get install lib32z1 lib32z1-dev&lt;br /&gt;
sudo apt-get install libc6-dev-i386 libc6-i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Newer versions, for example Debian 7.0+ or Ubuntu 13.04+ require slightly different packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install lib32stdc++-4.8-dev&lt;br /&gt;
sudo apt-get install lib32z1 lib32z1-dev&lt;br /&gt;
sudo apt-get install libc6-dev-i386 libc6-i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''You can find the latest release of Clang in LLVM's apt repositories for Debian and Ubuntu. Information on this is at http://llvm.org/apt/''&lt;br /&gt;
&lt;br /&gt;
==Mac OS X==&lt;br /&gt;
Mac OS X 10.7 or higher is required to build, however, SourceMod will work on 10.5. SourceMod will neither build nor run on older PPC Macs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Install the Xcode Command Line Tools.&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;For OS X 10.9 or higher, run the command below in Terminal and click the Install button in the window that appears.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xcode-select --install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
    &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;For earlier versions of OS X, download and install Xcode from the App Store. Launch Xcode and then navigate to Preferences -&amp;gt; Downloads -&amp;gt; Components -&amp;gt; Command Line Tools -&amp;gt; Install. If you have recently upgraded Xcode, you will need to perform this step again. SourceMod cannot build without Xcode's command line tools.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Source and Dependencies=&lt;br /&gt;
&lt;br /&gt;
First, grab the SourceMod source tree. We recommend placing it inside its own folder, since we'll also need to download its dependencies.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p alliedmodders&lt;br /&gt;
cd alliedmodders&lt;br /&gt;
git clone --recursive https://github.com/alliedmodders/sourcemod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, run the &amp;lt;tt&amp;gt;checkout-deps.sh&amp;lt;/tt&amp;gt; script. This will download all dependencies and attempt to install AMBuild. If you are using Linux or OS X, it may prompt you for your sudo password at the very end. If you want to skip this and install AMBuild manually, just Ctrl+C. (Do not run the checkout script with sudo.)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bash sourcemod/tools/checkout-deps.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After it's done, you should see a large number of hl2sdk folders and other assorted dependencies, like MySQL, Metamod:Source, and AMBuild.&lt;br /&gt;
&lt;br /&gt;
If you are on Windows, but not using MozillaBuild, then you won't be able to use the checkout-deps script. Instead, you'll have to manually clone the following repositories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone --mirror https://github.com/alliedmodders/hl2sdk hl2sdk-proxy-repo&lt;br /&gt;
# For each SDK you want to build with:&lt;br /&gt;
# git clone hl2sdk-proxy-repo hl2sdk-&amp;lt;SDK&amp;gt; -b &amp;lt;SDK&amp;gt;&lt;br /&gt;
# e.g. git clone hl2sdk-proxy-repo hl2sdk-csgo -b csgo&lt;br /&gt;
&lt;br /&gt;
git clone https://github.com/alliedmodders/metamod-source mmsource-1.10 -b 1.10-dev&lt;br /&gt;
wget http://cdn.mysql.com/archives/mysql-5.0/mysql-noinstall-5.0.24a-win32.zip mysql-noinstall-5.0.24a-win32&lt;br /&gt;
&lt;br /&gt;
# Install AMBuild&lt;br /&gt;
git clone https://github.com/alliedmodders/ambuild&lt;br /&gt;
cd ambuild&lt;br /&gt;
C:\Python27\python.exe setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you can skip MySQL and SDK versions you don't plan to build.&lt;br /&gt;
&lt;br /&gt;
=Configuring=&lt;br /&gt;
&lt;br /&gt;
The first time you are building a SourceMod tree, you must ''configure'' the build. This step initializes some basic information and allows some customization around how things get compiled.&lt;br /&gt;
&lt;br /&gt;
First create a build folder within your sourcemod folder, and then run &amp;lt;tt&amp;gt;configure.py&amp;lt;/tt&amp;gt;. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd sourcemod&lt;br /&gt;
mkdir build&lt;br /&gt;
cd build&lt;br /&gt;
python ../configure.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is safe to reconfigure over an old build. However, it's probably a bad idea to configure inside a random, non-empty folder.&lt;br /&gt;
&lt;br /&gt;
There are a few extra options you can pass to &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt;:&lt;br /&gt;
*--enable-debug - Compile with symbols and debug checks/assertions.&lt;br /&gt;
*--enable-optimize - Compile with optimizations.&lt;br /&gt;
*--no-sse - Disable floating point optimizations (if you have a very, very old CPU).&lt;br /&gt;
*--no-mysql - Don't build the MySQL database module.&lt;br /&gt;
*--sdks css - Only build css.&lt;br /&gt;
&lt;br /&gt;
See configure.py for all the options.&lt;br /&gt;
&lt;br /&gt;
=Building=&lt;br /&gt;
&lt;br /&gt;
To build SourceMod, simply type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ambuild&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In your build folder. Alternately, you can specify the path of the build folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ambuild debug-build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full package layout that would be shipped for release is in the &amp;lt;tt&amp;gt;package&amp;lt;/tt&amp;gt; folder of the build.&lt;br /&gt;
&lt;br /&gt;
=Deprecated Tools=&lt;br /&gt;
==Visual Studio Project Files==&lt;br /&gt;
In the future, we will use AMBuild to automatically generate project files, and the existing project files will be removed from the SourceMod tree. In the meantime however, it is possible to use these files. Unfortunately, they require a bit of extra work to use.&lt;br /&gt;
&lt;br /&gt;
First, make sure you've downloaded all necessary dependencies (SDKs, Metamod:Source source code, and MySQL) via the &amp;lt;tt&amp;gt;checkout-windows-deps.bat&amp;lt;/tt&amp;gt; script. Next,&lt;br /&gt;
#Open the Control Panel (for example, via Start -&amp;gt; Settings).&lt;br /&gt;
#Open the System control.  If you don't see it, you may need to switch to &amp;quot;Classic view&amp;quot; (either via the left-hand pane or by going to Tools -&amp;gt; Folder Options).&lt;br /&gt;
#Click the Advanced tab.&lt;br /&gt;
#Click the Environment Variables button.&lt;br /&gt;
&lt;br /&gt;
Now, add your environment variables to either your User settings or your System settings. Create a new variable for each item in the list below. You may omit SDKs that you do not plan to build against. The item names are in &amp;lt;tt&amp;gt;fixed-width font&amp;lt;/tt&amp;gt; and their value descriptions follow.&lt;br /&gt;
*&amp;lt;tt&amp;gt;MMSOURCE19&amp;lt;/tt&amp;gt; - Path to Metamod:Source 1.10+&lt;br /&gt;
*&amp;lt;tt&amp;gt;MMSOURCE18&amp;lt;/tt&amp;gt; - Path to Metamod:Source 1.10+&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK&amp;lt;/tt&amp;gt; - Path to HL2SDK Ep1/Original&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKOB&amp;lt;/tt&amp;gt; - Path to HL2SDK Ep2/OrangeBox for mods&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKOBVALVE&amp;lt;/tt&amp;gt; - Path to HL2SDK Source 2009 (HL2:DM, DoD:S, TF2)&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK-SWARM&amp;lt;/tt&amp;gt; - Path to HL2SDK Alien Swarm&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK-BGT&amp;lt;/tt&amp;gt; - Path to HL2SDK for Bloody Good Time&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKCSGO&amp;lt;/tt&amp;gt; - Path to HL2SDK CS:GO&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKCSS&amp;lt;/tt&amp;gt; - Path to HL2SDK CS:S&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK-DARKM&amp;lt;/tt&amp;gt; - Path to HL2SDK Dark Messiah&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK-EYE&amp;lt;/tt&amp;gt; - Path to HL2SDK E.Y.E.: Divine Cybermancy&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKL4D&amp;lt;/tt&amp;gt; - Path to HL2SDK L4D1&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKL4D2&amp;lt;/tt&amp;gt; - Path to HL2SDK L4D2&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK-DOTA&amp;lt;/tt&amp;gt; - Path to HL2SDK DOTA 2&lt;br /&gt;
*&amp;lt;tt&amp;gt;MYSQL5&amp;lt;/tt&amp;gt; - Path to the folder that contains MySQL's &amp;lt;tt&amp;gt;include&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt; folders.&lt;br /&gt;
&lt;br /&gt;
==Makefiles==&lt;br /&gt;
Makefiles are deprecated and will be removed from the tree soon.&lt;br /&gt;
&lt;br /&gt;
[[Category:SourceMod Documentation]]&lt;br /&gt;
[[Category:SourceMod Development]]&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=Building_SourceMod&amp;diff=9902</id>
		<title>Building SourceMod</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=Building_SourceMod&amp;diff=9902"/>
		<updated>2015-05-07T08:08:16Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Configuring */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Compiling SourceMod is not difficult, but requires a number of prerequisites.  This article details the requirements and steps to being able to build working SourceMod binaries.&lt;br /&gt;
&lt;br /&gt;
Note that specific compiler versions are required to maintain ABI compatibility with Source engine binaries.&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
&lt;br /&gt;
==Windows==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Install Visual Studio or Visual C++. VS/VC 2010 or above is required for SourceMod 1.6.x and earlier. VS/VC 2013 Update 2 or above is required for SourceMod 1.7.x and later. Express editions should work fine. If you use 2013 or higher, make sure to get the &amp;quot;Desktop&amp;quot; version: [http://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-desktop Visual Studio Express 2013 for Desktop].&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Install [http://git-scm.com/ Git]. Make sure that you select the option that adds Git to PATH.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Next, you will need to start an environment capable of running Python and interacting with the Visual Studio compiler. There are two ways to do this.&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Use [https://wiki.mozilla.org/MozillaBuild MozillaBuild]. MozillaBuild comes with Python, Mercurial, and a unix-like shell.&lt;br /&gt;
   &amp;lt;ol&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Install MozillaBuild to &amp;lt;tt&amp;gt;C:\mozilla-build&amp;lt;/tt&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Navigate to &amp;lt;tt&amp;gt;C:\mozilla-build&amp;lt;/tt&amp;gt; and run the batch file corresponding to your Visual Studio version. For example, &amp;lt;tt&amp;gt;start-msvc10.bat&amp;lt;/tt&amp;gt; for Visual Studio 2010 (10.0). Do not run an x64 version.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Add Git to MozillaBuild's &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;. The easiest way to do this is to enter the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;export PATH=\$PATH:/c/Program\ Files\ \(x86\)/Git/bin&amp;quot; &amp;gt;&amp;gt; ~/.profile&lt;br /&gt;
source ~/.profile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
    &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ol&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Or, you can manually set up a shell.&lt;br /&gt;
   &amp;lt;ol&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Install [http://python.org/ Python] 2.7. It will install to C:\Python27 by default. (Version 3.4 will work, but is not recommended for compatibility with other tools).&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Add Python to your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; variable. Go to Control Panel, System, Advanced, Environment Variables. Add &amp;lt;tt&amp;gt;C:\Python27;C:\Python27\Scripts&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; (or wherever your Python install is).&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;Under Start, Programs, Microsoft Visual Studio, select the &amp;quot;Visual Studio Tools&amp;quot; folder and run &amp;quot;Visual Studio Command Prompt&amp;quot;. Alternately, open a normal command prompt and run &amp;lt;tt&amp;gt;&amp;quot;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars.bat&amp;quot;&amp;lt;/tt&amp;gt;. Substitute your Visual Studio version if needed.&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ol&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Linux==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Install Git, via either system packages or from the [http://git-scm.com/ Git] distribution.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Install either the GNU C Compiler or the Clang compiler.&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;For GCC, version 4.4 or higher is required for SourceMod 1.6.x and earlier, and version 4.7 or high for SourceMod 1.7.x and later. On Debian/Ubuntu-based systems, the commands below will install GCC (the second set of packages is required for building on 64-bit systems).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install gcc g++&lt;br /&gt;
sudo apt-get install gcc-multilib g++-multilib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;For Clang, 3.2 or higher is required. On Debian/Ubuntu-based systems, the packages needed are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install clang&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;If building on a 64-bit system, a few additional packages may be required. For example on Debian/Ubuntu they are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install ia32-libs&lt;br /&gt;
sudo apt-get install lib32z1 lib32z1-dev&lt;br /&gt;
sudo apt-get install libc6-dev-i386 libc6-i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Newer versions, for example Debian 7.0+ or Ubuntu 13.04+ require slightly different packages:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install lib32stdc++-4.8-dev&lt;br /&gt;
sudo apt-get install lib32z1 lib32z1-dev&lt;br /&gt;
sudo apt-get install libc6-dev-i386 libc6-i386&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''You can find the latest release of Clang in LLVM's apt repositories for Debian and Ubuntu. Information on this is at http://llvm.org/apt/''&lt;br /&gt;
&lt;br /&gt;
==Mac OS X==&lt;br /&gt;
Mac OS X 10.7 or higher is required to build, however, SourceMod will work on 10.5. SourceMod will neither build nor run on older PPC Macs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Install the Xcode Command Line Tools.&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;For OS X 10.9 or higher, run the command below in Terminal and click the Install button in the window that appears.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xcode-select --install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
    &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;For earlier versions of OS X, download and install Xcode from the App Store. Launch Xcode and then navigate to Preferences -&amp;gt; Downloads -&amp;gt; Components -&amp;gt; Command Line Tools -&amp;gt; Install. If you have recently upgraded Xcode, you will need to perform this step again. SourceMod cannot build without Xcode's command line tools.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Source and Dependencies=&lt;br /&gt;
&lt;br /&gt;
First, grab the SourceMod source tree. We recommend placing it inside its own folder, since we'll also need to download its dependencies.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p alliedmodders&lt;br /&gt;
cd alliedmodders&lt;br /&gt;
git clone --recursive https://github.com/alliedmodders/sourcemod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, run the &amp;lt;tt&amp;gt;checkout-deps.sh&amp;lt;/tt&amp;gt; script. This will download all dependencies and attempt to install AMBuild. If you are using Linux or OS X, it may prompt you for your sudo password at the very end. If you want to skip this and install AMBuild manually, just Ctrl+C. (Do not run the checkout script with sudo.)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bash sourcemod/tools/checkout-deps.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After it's done, you should see a large number of hl2sdk folders and other assorted dependencies, like MySQL, Metamod:Source, and AMBuild.&lt;br /&gt;
&lt;br /&gt;
If you are on Windows, but not using MozillaBuild, then you won't be able to use the checkout-deps script. Instead, you'll have to manually clone the following repositories:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone --mirror https://github.com/alliedmodders/hl2sdk hl2sdk-proxy-repo&lt;br /&gt;
# For each SDK you want to build with:&lt;br /&gt;
# git clone hl2sdk-proxy-repo hl2sdk-&amp;lt;SDK&amp;gt; -b &amp;lt;SDK&amp;gt;&lt;br /&gt;
# e.g. git clone hl2sdk-proxy-repo hl2sdk-csgo -b csgo&lt;br /&gt;
&lt;br /&gt;
git clone https://github.com/alliedmodders/metamod-source mmsource-1.10 -b 1.10-dev&lt;br /&gt;
wget http://cdn.mysql.com/archives/mysql-5.0/mysql-noinstall-5.0.24a-win32.zip mysql-noinstall-5.0.24a-win32&lt;br /&gt;
&lt;br /&gt;
# Install AMBuild&lt;br /&gt;
git clone https://github.com/alliedmodders/ambuild&lt;br /&gt;
cd ambuild&lt;br /&gt;
C:\Python27\python.exe setup.py install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you can skip MySQL and SDK versions you don't plan to build.&lt;br /&gt;
&lt;br /&gt;
=Configuring=&lt;br /&gt;
&lt;br /&gt;
The first time you are building a SourceMod tree, you must ''configure'' the build. This step initializes some basic information and allows some customization around how things get compiled.&lt;br /&gt;
&lt;br /&gt;
First create a build folder within your sourcemod folder, and then run &amp;lt;tt&amp;gt;configure.py&amp;lt;/tt&amp;gt;. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd sourcemod&lt;br /&gt;
mkdir build&lt;br /&gt;
cd build&lt;br /&gt;
python ../configure.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is safe to reconfigure over an old build. However, it's probably a bad idea to configure inside a random, non-empty folder.&lt;br /&gt;
&lt;br /&gt;
There are a few extra options you can pass to &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt;:&lt;br /&gt;
*--enable-debug - Compile with symbols and debug checks/assertions.&lt;br /&gt;
*--enable-optimize - Compile with optimizations.&lt;br /&gt;
*--no-sse - Disable floating point optimizations (if you have a very, very old CPU).&lt;br /&gt;
*--no-mysql - Don't build the MySQL database module.&lt;br /&gt;
*--sdks css - Only build css.&lt;br /&gt;
&lt;br /&gt;
See configure.py for all the options.&lt;br /&gt;
&lt;br /&gt;
=Building=&lt;br /&gt;
&lt;br /&gt;
To build SourceMod, simply type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ambuild&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In your build folder. Alternately, you can specify the path of the build folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ambuild debug-build&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full package layout that would be shipped for release is in the &amp;lt;tt&amp;gt;package&amp;lt;/tt&amp;gt; folder of the build.&lt;br /&gt;
&lt;br /&gt;
=Deprecated Tools=&lt;br /&gt;
==Visual Studio Project Files==&lt;br /&gt;
In the future, we will use AMBuild to automatically generate project files, and the existing project files will be removed from the SourceMod tree. In the meantime however, it is possible to use these files. Unfortunately, they require a bit of extra work to use.&lt;br /&gt;
&lt;br /&gt;
First, make sure you've downloaded all necessary dependencies (SDKs, Metamod:Source source code, and MySQL) via the &amp;lt;tt&amp;gt;checkout-windows-deps.bat&amp;lt;/tt&amp;gt; script. Next,&lt;br /&gt;
#Open the Control Panel (for example, via Start -&amp;gt; Settings).&lt;br /&gt;
#Open the System control.  If you don't see it, you may need to switch to &amp;quot;Classic view&amp;quot; (either via the left-hand pane or by going to Tools -&amp;gt; Folder Options).&lt;br /&gt;
#Click the Advanced tab.&lt;br /&gt;
#Click the Environment Variables button.&lt;br /&gt;
&lt;br /&gt;
Now, add your environment variables to either your User settings or your System settings. Create a new variable for each item in the list below. You may omit SDKs that you do not plan to build against. The item names are in &amp;lt;tt&amp;gt;fixed-width font&amp;lt;/tt&amp;gt; and their value descriptions follow.&lt;br /&gt;
*&amp;lt;tt&amp;gt;MMSOURCE19&amp;lt;/tt&amp;gt; - Path to Metamod:Source 1.10+&lt;br /&gt;
*&amp;lt;tt&amp;gt;MMSOURCE18&amp;lt;/tt&amp;gt; - Path to Metamod:Source 1.10+&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK&amp;lt;/tt&amp;gt; - Path to HL2SDK Ep1/Original&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKOB&amp;lt;/tt&amp;gt; - Path to HL2SDK Ep2/OrangeBox for mods&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKOBVALVE&amp;lt;/tt&amp;gt; - Path to HL2SDK Source 2009 (HL2:DM, DoD:S, TF2)&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK-SWARM&amp;lt;/tt&amp;gt; - Path to HL2SDK Alien Swarm&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK-BGT&amp;lt;/tt&amp;gt; - Path to HL2SDK for Bloody Good Time&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKCSGO&amp;lt;/tt&amp;gt; - Path to HL2SDK CS:GO&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKCSS&amp;lt;/tt&amp;gt; - Path to HL2SDK CS:S&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK-DARKM&amp;lt;/tt&amp;gt; - Path to HL2SDK Dark Messiah&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK-EYE&amp;lt;/tt&amp;gt; - Path to HL2SDK E.Y.E.: Divine Cybermancy&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKL4D&amp;lt;/tt&amp;gt; - Path to HL2SDK L4D1&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDKL4D2&amp;lt;/tt&amp;gt; - Path to HL2SDK L4D2&lt;br /&gt;
*&amp;lt;tt&amp;gt;HL2SDK-DOTA&amp;lt;/tt&amp;gt; - Path to HL2SDK DOTA 2&lt;br /&gt;
*&amp;lt;tt&amp;gt;MYSQL5&amp;lt;/tt&amp;gt; - Path to the folder that contains MySQL's &amp;lt;tt&amp;gt;include&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt; folders.&lt;br /&gt;
&lt;br /&gt;
==Makefiles==&lt;br /&gt;
Makefiles are deprecated and will be removed from the tree soon.&lt;br /&gt;
&lt;br /&gt;
[[Category:SourceMod Documentation]]&lt;br /&gt;
[[Category:SourceMod Development]]&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9893</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9893"/>
		<updated>2015-03-29T06:39:19Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Under TF2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damages another, inflictor should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamageAlive===&lt;br /&gt;
This hook works in a similar way to SDKHook_OnTakeDamage but it gives the [https://bugs.alliedmods.net/show_bug.cgi?id=6249#c7 actual, calculated damage amount done to the player. The pre-hook will fire after an OnTakeDamage pre-hook, and the post-hook will fire before an OnTakeDamage post-hook. The health is subtracted in between pre and post unless the hook is blocked.] {{pr|149}}&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;br /&gt;
&lt;br /&gt;
===Regarding SDKHook_OnTakeDamage and SDKHook_OnTakeDamageAlive===&lt;br /&gt;
&lt;br /&gt;
SDKHook_OnTakeDamage/Post is triggered when hitting a teammate with mp_friendlyfire 0, but not SDKHook_OnTakeDamageAlive.&lt;br /&gt;
&lt;br /&gt;
==Under TF2==&lt;br /&gt;
Under tf2, the &amp;quot;normal&amp;quot; takedamage hook isn't 100% accurate, it's damage param is the weapon's base damage. the DMG_CRIT flag is for both crit and minicrit, spread and minicrit/crit damage is done after this call.&lt;br /&gt;
&lt;br /&gt;
The modified crit damage is available in SDKHook_OnTakeDamageAlive/Post.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
Shotgun = DMG_BUCKSHOT | DMG_SLOWBURN&lt;br /&gt;
&lt;br /&gt;
Rocket Launcher = DMG_SLOWBURN | DMG_RADIATION | DMG_BLAST&lt;br /&gt;
&lt;br /&gt;
If a crit, |= DMG_CRIT&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9892</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9892"/>
		<updated>2015-03-29T06:35:26Z</updated>

		<summary type="html">&lt;p&gt;RedSword: added some tf2 dmg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damages another, inflictor should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamageAlive===&lt;br /&gt;
This hook works in a similar way to SDKHook_OnTakeDamage but it gives the [https://bugs.alliedmods.net/show_bug.cgi?id=6249#c7 actual, calculated damage amount done to the player. The pre-hook will fire after an OnTakeDamage pre-hook, and the post-hook will fire before an OnTakeDamage post-hook. The health is subtracted in between pre and post unless the hook is blocked.] {{pr|149}}&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;br /&gt;
&lt;br /&gt;
===Regarding SDKHook_OnTakeDamage and SDKHook_OnTakeDamageAlive===&lt;br /&gt;
&lt;br /&gt;
SDKHook_OnTakeDamage/Post is triggered when hitting a teammate with mp_friendlyfire 0, but not SDKHook_OnTakeDamageAlive.&lt;br /&gt;
&lt;br /&gt;
==Under TF2==&lt;br /&gt;
Under tf2, the takedamage hook isn't 100% accurate, it's damage param is the weapon's base damage. the DMG_CRIT flag is for both crit and minicrit, spread and minicrit/crit damage is done after this call.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
Shotgun = DMG_BUCKSHOT | DMG_SLOWBURN&lt;br /&gt;
&lt;br /&gt;
Rocket Launcher = DMG_SLOWBURN | DMG_RADIATION | DMG_BLAST&lt;br /&gt;
&lt;br /&gt;
If a crit, |= DMG_CRIT&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SourcePawn_Transitional_Syntax&amp;diff=9891</id>
		<title>SourcePawn Transitional Syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SourcePawn_Transitional_Syntax&amp;diff=9891"/>
		<updated>2015-03-29T05:19:27Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
We would like to give our users a more modern language. Pawn is showing its age; manual memory management, buffers, tags, and lack of object-oriented API are very frustrating. We can't solve everything all at once, but we can begin to take steps in the right direction.&lt;br /&gt;
&lt;br /&gt;
SourceMod 1.7 introduces a ''Transitional API''. It is built on a new ''Transitional Syntax'' in SourcePawn, which is a set of language tools to make Pawn feel more modern. In particular, it allows developers to use older APIs in an object-oriented manner, without breaking compatibility. Someday, if and when SourcePawn can become a full-fledged modern language, the transitional API will making porting efforts very minimal.&lt;br /&gt;
&lt;br /&gt;
The transitional API has the following major features and changes:&lt;br /&gt;
* New Declarators - A cleaner way of declaring variables, similar to Java and C#.&lt;br /&gt;
* Methodmaps - Object-oriented wrappers around older APIs.&lt;br /&gt;
* Real Types - SourcePawn now has &amp;quot;int&amp;quot;, &amp;quot;float&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;void&amp;quot;, and &amp;quot;char&amp;quot; as real types.&lt;br /&gt;
* &amp;lt;tt&amp;gt;null&amp;lt;/tt&amp;gt; - A new, general keyword to replace &amp;lt;tt&amp;gt;INVALID_HANDLE&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=New Declarators=&lt;br /&gt;
Developers familiar with pawn will recognize Pawn's original declaration style:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
new Float:x = 5.0;&lt;br /&gt;
new y = 7;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the transitional syntax, this can be reworded as:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
float x = 5.0;&lt;br /&gt;
int y = 7;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following builtin tags now have types:&lt;br /&gt;
* &amp;lt;tt&amp;gt;Float:&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;float&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;bool:&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;bool&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;_:&amp;lt;/tt&amp;gt; (or no tag) is &amp;lt;tt&amp;gt;int&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;String:&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;char&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;void&amp;lt;/tt&amp;gt; can now be used as a return type for functions.&lt;br /&gt;
&lt;br /&gt;
===Rationale===&lt;br /&gt;
In the old style, tagged variables are not real types. &amp;lt;tt&amp;gt;Float:x&amp;lt;/tt&amp;gt; does not indicate a float-typed variable, it indicates a 32-bit &amp;quot;cell&amp;quot; &amp;lt;i&amp;gt;tagged&amp;lt;/i&amp;gt; as a float. It is possible to remove the tag or change the tag, which while flexible, is dangerous and confusing. The syntax itself is also problematic. The parser does not have the ability to identify characters in between the tag name and the colon. Internally, the compiler cannot represent values that are not exactly 32-bit.&lt;br /&gt;
&lt;br /&gt;
The takeaway message is: there is no sensible way to represent a concept like &amp;quot;int64&amp;quot; or &amp;quot;X is a type that represents an array of floats&amp;quot;. The tagging grammar makes it too awkward, and the compiler itself is incapable of attaching such information to a tag. We can't fix that right away, but we can begin to deprecate the tag system via a more normal declaration syntax.&lt;br /&gt;
&lt;br /&gt;
An easy example to see why this is necessary, is the weirdness in expressing something like this with tags:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
native float[3] GetEntOrigin();&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note on the &amp;lt;tt&amp;gt;String&amp;lt;/tt&amp;gt; tag:'' The introduction of &amp;lt;tt&amp;gt;char&amp;lt;/tt&amp;gt; might initially seem confusing. The reason for this is that in the future, we would like to introduce a true &amp;quot;string&amp;quot; type that acts as an object, like strings in most other languages. The existing behavior in Pawn is an array of characters, which is much lower-level. The renaming clarifies what the type really is, and leaves the door open for better types in the future.&lt;br /&gt;
&lt;br /&gt;
==Arrays==&lt;br /&gt;
The new style of declaration disambiguates between two kinds of arrays. Pawn has ''indeterminate arrays'', where the size is not known, and ''determinate arrays'', where the size is known. We refer to these as &amp;quot;dynamic&amp;quot; and &amp;quot;fixed-length&amp;quot; arrays, respectively.&lt;br /&gt;
&lt;br /&gt;
'''A fixed-length array is declared by placing brackets after a variable name'''. For example:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
int CachedStuff[1000];&lt;br /&gt;
int PlayerData[MAXPLAYERS + 1] = { 0, ... };&lt;br /&gt;
int Weapons[] = { WEAPON_AK47, WEAPON_GLOCK, WEAPON_KNIFE };&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In these examples, the array size is fixed. The size is known ahead of time and cannot change. When using brackets in this position, the array size must be specified, either via an explicit size or inferred from an initial value.&lt;br /&gt;
&lt;br /&gt;
A dynamic-length array has the brackets '''before the variable name''', that is, '''after the type'''. The most common case is when specifying functions that take an array as input:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
native void SetPlayerName(int player, const char[] name);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, we are specifying that the length of &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; is not always known - it could be anything.&lt;br /&gt;
&lt;br /&gt;
Dynamic arrays can also be created in local scopes. For example,&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
void FindPlayers()&lt;br /&gt;
{&lt;br /&gt;
  int[] players = new int[MaxClients + 1];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allocates a new array of the given size and places a reference in &amp;lt;tt&amp;gt;players&amp;lt;/tt&amp;gt;. The memory is automatically freed when no longer in use.&lt;br /&gt;
&lt;br /&gt;
It is illegal to initialize a fixed-length array with an indeterminate array, and it is illegal to initialize a dynamic array with a fixed-array. It is also illegal to specify a fixed size on a dynamic length array.&lt;br /&gt;
&lt;br /&gt;
For the most part, this does not change existing Pawn semantics. It is simply new syntax intended to clarify the way arrays work.&lt;br /&gt;
&lt;br /&gt;
===Rationale===&lt;br /&gt;
In the original syntax, there was a subtle difference in array declaration:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
new array1[MAXPLAYERS + 1];&lt;br /&gt;
new array2[MaxClents + 1];&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, &amp;lt;tt&amp;gt;array1&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;array2&amp;lt;/tt&amp;gt; are very different types: the first is an &amp;lt;tt&amp;gt;int[65]&amp;lt;/tt&amp;gt; and the latter is an &amp;lt;tt&amp;gt;int[]&amp;lt;/tt&amp;gt;. However, there is no syntactic difference: the compiler has to deduce whether the size expression is constant to determine the type. The new syntax clearly and explicitly disambiguates these cases, so in the future when we introduce fully dynamic and flexible arrays, we're less likely to break existing code.&lt;br /&gt;
&lt;br /&gt;
This may result in some confusion. Hopefully won't matter long term, as once we have true dynamic arrays, fixed arrays will become much less useful and more obscure.&lt;br /&gt;
&lt;br /&gt;
The rationale for restricting initializers is similar. Once we have true dynamic arrays, the restrictions will be lifted. In the meantime, we need to make sure we're limited to semantics that won't have subtle differences in the future.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
float x = 5.0;    // Replacement for &amp;quot;new Float:x = 5.0;&amp;quot;&lt;br /&gt;
int y = 4;        // Replacement for &amp;quot;new y = 4;&amp;quot;&lt;br /&gt;
char name[32];    // Replacement for &amp;quot;new String:name[32];&amp;quot; and &amp;quot;decl String:name[32];&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void DoStuff(float x, int y, char[] name, int length) { //Replacement for &amp;quot;DoStuff(Float:x, y, String:name[], length)&amp;quot;&lt;br /&gt;
  Format(name, length, &amp;quot;%f %d&amp;quot;, x, y); //No replacement here&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==View As==&lt;br /&gt;
A new operator is available for reinterpreting the bits in a value as another type. This operator is called &amp;lt;tt&amp;gt;view_as&amp;lt;/tt&amp;gt;. It is not a safe cast, in that, it can transform one type to another even if the actual value does not conform to either.&lt;br /&gt;
&lt;br /&gt;
In pre-transitional syntax, this was called &amp;quot;retagging&amp;quot;. Retagging does not support new-style types, which is why this operator has been introduced. Example of before and after code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
// Before:&lt;br /&gt;
float x = Float:array.Get(i);&lt;br /&gt;
&lt;br /&gt;
// After:&lt;br /&gt;
float y = view_as&amp;lt;float&amp;gt;(array.Get(i));&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is worth reiterating that this is not a cast. If the value in the array is not a float, then when &amp;quot;viewed as&amp;quot; a float it will probably look very odd.&lt;br /&gt;
&lt;br /&gt;
==Grammar==&lt;br /&gt;
The new and old declaration grammar is below. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
return-type ::= return-old | return-new&lt;br /&gt;
return-new ::= type-expr new-dims?        // Note, dims not yet supported.&lt;br /&gt;
return-old ::= old-dims? label?&lt;br /&gt;
&lt;br /&gt;
argdecl ::= arg-old | arg-new&lt;br /&gt;
arg-new ::= &amp;quot;const&amp;quot;? type-expr '&amp;amp;'? symbol old-dims? ('=' arg-init)?&lt;br /&gt;
arg-old ::= &amp;quot;const&amp;quot;? tags? '&amp;amp;'? symbol old-dims? ('=' arg-init)?&lt;br /&gt;
&lt;br /&gt;
vardecl ::= var-old | var-new&lt;br /&gt;
var-new ::= var-new-prefix type-expr symbol old-dims?&lt;br /&gt;
var-new-prefix ::= &amp;quot;static&amp;quot; | &amp;quot;const&amp;quot;&lt;br /&gt;
var-old ::= var-old-prefix tag? symbol old-dims?&lt;br /&gt;
var-old-prefix ::= &amp;quot;new&amp;quot; | &amp;quot;decl&amp;quot; | &amp;quot;static&amp;quot; | &amp;quot;const&amp;quot;&lt;br /&gt;
&lt;br /&gt;
global ::= global-old | global-new&lt;br /&gt;
global-new ::= storage-class* type-expr symbol old-dims?&lt;br /&gt;
global-old ::= storage-class* tag? symbol old-dims?&lt;br /&gt;
&lt;br /&gt;
storage-class ::= &amp;quot;public&amp;quot; | &amp;quot;static&amp;quot; | &amp;quot;const&amp;quot; | &amp;quot;stock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
type-expr ::= (builtin-type | symbol) new-dims?&lt;br /&gt;
builtin-type ::= &amp;quot;void&amp;quot;&lt;br /&gt;
               | &amp;quot;int&amp;quot;&lt;br /&gt;
               | &amp;quot;float&amp;quot;&lt;br /&gt;
               | &amp;quot;char&amp;quot;&lt;br /&gt;
               | &amp;quot;bool&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tags ::= tag-vector | tag&lt;br /&gt;
tag-vector ::= '{' symbol (',' symbol)* '}' ':'&lt;br /&gt;
tag ::= label&lt;br /&gt;
&lt;br /&gt;
new-dims ::= ('[' ']')*&lt;br /&gt;
old-dims ::= ('[' expr? ']')+&lt;br /&gt;
&lt;br /&gt;
label ::= symbol ':'&lt;br /&gt;
symbol ::= [A-Za-z_]([A-Za-z0-9_]*)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also note, there is no equivalent of &amp;lt;tt&amp;gt;decl&amp;lt;/tt&amp;gt; in the new declarator syntax. &amp;lt;tt&amp;gt;decl&amp;lt;/tt&amp;gt; is considered to be dangerous and unnecessary. If an array's zero initialization is too costly, consider making it static or global.&lt;br /&gt;
&lt;br /&gt;
=Methodmaps=&lt;br /&gt;
==Introduction==&lt;br /&gt;
Methodmaps are simple: they attach methods onto an enum. For example, here is our legacy API for Handles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
native CloneHandle(Handle handle);&lt;br /&gt;
native CloseHandle(Handle handle);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a good example of our legacy API. Using it generally looks something like:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
Handle array = CreateAdtArray();&lt;br /&gt;
PushArrayCell(array, 4);&lt;br /&gt;
CloseHandle(array);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gross! A Methodmap can clean it up by attaching functions to the &amp;lt;tt&amp;gt;Handle&amp;lt;/tt&amp;gt; tag, like this:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap Handle {&lt;br /&gt;
    public Clone() = CloneHandle;&lt;br /&gt;
    public Close() = CloseHandle;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, our earlier array code can start to look object-oriented:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
Handle array = CreateAdtArray();&lt;br /&gt;
PushArrayCell(array, 4);&lt;br /&gt;
array.Close();&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With a full methodmap for Arrays, for example,&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap ArrayList &amp;lt; Handle&lt;br /&gt;
{&lt;br /&gt;
  public native ArrayList(); // constructor&lt;br /&gt;
  public native void Push(any value);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can write even more object-like code:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
ArrayList array = new ArrayList();&lt;br /&gt;
array.Push(4);&lt;br /&gt;
delete array;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Note: the official API does not expose methods on raw Handles.)&lt;br /&gt;
&lt;br /&gt;
==Inheritance==&lt;br /&gt;
The Handle system has a &amp;quot;weak&amp;quot; hierarchy. All handles can be passed to &amp;lt;tt&amp;gt;CloseHandle&amp;lt;/tt&amp;gt;, but only AdtArray handles can be passed to functions like &amp;lt;tt&amp;gt;PushArrayCell&amp;lt;/tt&amp;gt;. This hierarchy is not enforced via tags (unfortunately), but instead by run-time checks. Methodmaps allow us to make individual handle types object-oriented, while also moving type-checks into the compiler.&lt;br /&gt;
&lt;br /&gt;
For example, here is a transitional API for arrays:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
native AdtArray CreateAdtArray();&lt;br /&gt;
&lt;br /&gt;
methodmap AdtArray &amp;lt; Handle {&lt;br /&gt;
    public PushCell() = PushArrayCell;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;tt&amp;gt;CreateAdtArray&amp;lt;/tt&amp;gt; now returns &amp;lt;tt&amp;gt;AdtArray&amp;lt;/tt&amp;gt; instead of &amp;lt;tt&amp;gt;Handle&amp;lt;/tt&amp;gt;. Normally that would break older code, but since &amp;lt;tt&amp;gt;AdtArray&amp;lt;/tt&amp;gt; inherits from &amp;lt;tt&amp;gt;Handle&amp;lt;/tt&amp;gt;, there is a special rule in the type system that allows coercing an &amp;lt;tt&amp;gt;AdtArray&amp;lt;/tt&amp;gt; to a &amp;lt;tt&amp;gt;Handle&amp;lt;/tt&amp;gt; (but not vice versa).&lt;br /&gt;
&lt;br /&gt;
Now, the API looks much more object-oriented:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
AdtArray array = CreateAdtArray();&lt;br /&gt;
array.PushCell(4);&lt;br /&gt;
array.Close();&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inline Methods==&lt;br /&gt;
Methodmaps can declare inline methods and accessors. Inline methods can be either natives or Pawn functions. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap AdtArray {&lt;br /&gt;
    public native void PushCell(value);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example requires that an &amp;quot;AdtArray.PushCell&amp;quot; native exists somewhere in SourceMod. It has a magic initial parameter called &amp;quot;this&amp;quot;, so the signature will look something like:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
native void AdtArray.PushCell(AdtArray this, value);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Of course, this exact signature will not appear in an include file - it's the signature that the C++ implementation should expect, however.)&lt;br /&gt;
&lt;br /&gt;
It's also possible to define new functions without a native:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap AdtArray {&lt;br /&gt;
    public native void PushCell(value);&lt;br /&gt;
&lt;br /&gt;
    public void PushCells(list[], count) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; count; i++) {&lt;br /&gt;
            this.PushCell(i);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, we can also define accessors. or example,&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap AdtArray {&lt;br /&gt;
    property int Size {&lt;br /&gt;
        public get() = GetArraySize;&lt;br /&gt;
    }&lt;br /&gt;
    property bool Empty {&lt;br /&gt;
        public get() {&lt;br /&gt;
            return this.Size == 0;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    property int Capacity {&lt;br /&gt;
        public native get();&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first accessor simply assigns an existing function as an accessor for &amp;quot;Size&amp;quot;. The second accessor is an inline method with an implicit &amp;quot;this&amp;quot; parameter. The third accessor will bind to a native with the following name and signature:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
native int AdtArray.Capacity.get(AdtArray this);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setters are also supported. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap Player {&lt;br /&gt;
    property int Health {&lt;br /&gt;
        public native get();&lt;br /&gt;
        public native set(int health);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Custom Tags==&lt;br /&gt;
Methodmaps don't have to be used with Handles. It is possible to define custom methodmaps on new or existing tags. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap AdminId {&lt;br /&gt;
    public int Rights() {&lt;br /&gt;
        return GetAdminFlags(this);&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, for example, it is possible to do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;GetPlayerAdmin(id).Rights()&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constructors and Destructors==&lt;br /&gt;
Methodmaps can also define constructors and destructors, which is useful if they are intended to behave like actual objects. For example,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap AdtArray {&lt;br /&gt;
    public AdtArray(blocksize = 1);&lt;br /&gt;
    public ~AdtArray();&lt;br /&gt;
    public void PushCell(value);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now AdtArrays can be used in a fully object-oriented style:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
AdtArray array = new AdtArray();&lt;br /&gt;
array.PushCell(10);&lt;br /&gt;
array.PushCell(20);&lt;br /&gt;
array.PushCell(30);&lt;br /&gt;
delete array;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
There are a few caveats to methodmaps:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;CloseHandle() is not yet gone. It is required to call &amp;lt;tt&amp;gt;delete&amp;lt;/tt&amp;gt; on any object that previously would have required CloseHandle().&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;There can be only one methodmap for a tag.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;When using existing natives, the first parameter of the native must coerce to the tag of the methodmap. Tag mismatches of the &amp;quot;this&amp;quot; parameter will result in an error. Not a warning!&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Methodmaps can only be defined on tags. Pawn has some ways of creating actual types (like via &amp;lt;tt&amp;gt;struct&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;class&amp;lt;/tt&amp;gt;). Methodmaps cannot be created on those types.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Methodmaps do not have strong typing. For example, it is still possible to perform &amp;quot;illegal&amp;quot; casts like &amp;lt;tt&amp;gt;Float:CreateAdtArray()&amp;lt;/tt&amp;gt;. This is necessary for backwards compatibility, so methodmap values can flow into natives like &amp;lt;tt&amp;gt;PrintToServer&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;CreateTimer&amp;lt;/tt&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;It is not possible to inherit from anything other than another previously declared methodmap.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Methodmaps can only be defined over scalars - that is, the &amp;quot;this&amp;quot; parameter can never be an array. This means they cannot be used for enum-structs.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Destructors can only be native. When we are able to achieve garbage collection, destructors will be removed.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;The signatures of methodmaps must use the new declaration syntax.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Methodmaps must be declared before they are used.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grammar==&lt;br /&gt;
The grammar for methodmaps is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
visibility ::= &amp;quot;public&amp;quot;&lt;br /&gt;
method-args ::= arg-new* &amp;quot;...&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
methodmap ::= &amp;quot;methodmap&amp;quot; symbol? { methodmap-item* } term&lt;br /&gt;
methodmap-item ::=&lt;br /&gt;
           visibility &amp;quot;~&amp;quot;? symbol &amp;quot;(&amp;quot; &amp;quot;)&amp;quot; &amp;quot;=&amp;quot; symbol term&lt;br /&gt;
         | visibility &amp;quot;native&amp;quot; type-expr &amp;quot;~&amp;quot;? symbol methodmap-symbol &amp;quot;(&amp;quot; method-args &amp;quot;)&amp;quot; term&lt;br /&gt;
         | visibility type-expr symbol &amp;quot;(&amp;quot; method-args &amp;quot;)&amp;quot; func-body term&lt;br /&gt;
         | &amp;quot;property&amp;quot; type-expr symbol { property-decl } term&lt;br /&gt;
property-func ::= &amp;quot;get&amp;quot; | &amp;quot;set&amp;quot;&lt;br /&gt;
property-decl ::= visibility property-impl&lt;br /&gt;
property-impl ::=&lt;br /&gt;
           &amp;quot;native&amp;quot; property-func &amp;quot;(&amp;quot; &amp;quot;)&amp;quot; term&lt;br /&gt;
         | property-func &amp;quot;(&amp;quot; &amp;quot;)&amp;quot; func-body term&lt;br /&gt;
         | property-func &amp;quot;(&amp;quot; &amp;quot;)&amp;quot; &amp;quot;=&amp;quot; symbol&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Typedefs=&lt;br /&gt;
&lt;br /&gt;
Function tags and function enums have been deprecated in favor of a more modern syntax. Currently, they can still only create tag names for functions. Future versions will support arbitrary types. The syntax is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef ::= &amp;quot;typedef&amp;quot; symbol &amp;quot;=&amp;quot; full-type-expr term&lt;br /&gt;
full-type-expr ::= &amp;quot;(&amp;quot; type-expr &amp;quot;)&amp;quot;&lt;br /&gt;
                 | type-expr&lt;br /&gt;
type-expr ::= &amp;quot;function&amp;quot; type-name &amp;quot;(&amp;quot; typedef-args? &amp;quot;)&amp;quot;&lt;br /&gt;
typedef-args ::= &amp;quot;...&amp;quot;&lt;br /&gt;
               | typedef-arg (&amp;quot;, &amp;quot; &amp;quot;...&amp;quot;)?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that typedefs only support new-style types. For example,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
functag public Action:SrvCmd(args);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Becomes...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
typedef SrvCmd = function Action (int args);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Enforcing new syntax=&lt;br /&gt;
&lt;br /&gt;
You can enforce the new syntax in 1.7 by using &amp;lt;pawn&amp;gt;#pragma newdecls required&amp;lt;/pawn&amp;gt; ontop of your code, after the includes (or else current 1.7 includes which contain old syntax will be read with new-syntax rules).&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SourcePawn_Transitional_Syntax&amp;diff=9890</id>
		<title>SourcePawn Transitional Syntax</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SourcePawn_Transitional_Syntax&amp;diff=9890"/>
		<updated>2015-03-29T05:17:24Z</updated>

		<summary type="html">&lt;p&gt;RedSword: Defined more in details how the &amp;quot;examples&amp;quot; changes from old syntax (for new-SP-learners)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
We would like to give our users a more modern language. Pawn is showing its age; manual memory management, buffers, tags, and lack of object-oriented API are very frustrating. We can't solve everything all at once, but we can begin to take steps in the right direction.&lt;br /&gt;
&lt;br /&gt;
SourceMod 1.7 introduces a ''Transitional API''. It is built on a new ''Transitional Syntax'' in SourcePawn, which is a set of language tools to make Pawn feel more modern. In particular, it allows developers to use older APIs in an object-oriented manner, without breaking compatibility. Someday, if and when SourcePawn can become a full-fledged modern language, the transitional API will making porting efforts very minimal.&lt;br /&gt;
&lt;br /&gt;
The transitional API has the following major features and changes:&lt;br /&gt;
* New Declarators - A cleaner way of declaring variables, similar to Java and C#.&lt;br /&gt;
* Methodmaps - Object-oriented wrappers around older APIs.&lt;br /&gt;
* Real Types - SourcePawn now has &amp;quot;int&amp;quot;, &amp;quot;float&amp;quot;, &amp;quot;bool&amp;quot;, &amp;quot;void&amp;quot;, and &amp;quot;char&amp;quot; as real types.&lt;br /&gt;
* &amp;lt;tt&amp;gt;null&amp;lt;/tt&amp;gt; - A new, general keyword to replace &amp;lt;tt&amp;gt;INVALID_HANDLE&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=New Declarators=&lt;br /&gt;
Developers familiar with pawn will recognize Pawn's original declaration style:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
new Float:x = 5.0;&lt;br /&gt;
new y = 7;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the transitional syntax, this can be reworded as:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
float x = 5.0;&lt;br /&gt;
int y = 7;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following builtin tags now have types:&lt;br /&gt;
* &amp;lt;tt&amp;gt;Float:&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;float&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;bool:&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;bool&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;_:&amp;lt;/tt&amp;gt; (or no tag) is &amp;lt;tt&amp;gt;int&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;String:&amp;lt;/tt&amp;gt; is &amp;lt;tt&amp;gt;char&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;void&amp;lt;/tt&amp;gt; can now be used as a return type for functions.&lt;br /&gt;
&lt;br /&gt;
===Rationale===&lt;br /&gt;
In the old style, tagged variables are not real types. &amp;lt;tt&amp;gt;Float:x&amp;lt;/tt&amp;gt; does not indicate a float-typed variable, it indicates a 32-bit &amp;quot;cell&amp;quot; &amp;lt;i&amp;gt;tagged&amp;lt;/i&amp;gt; as a float. It is possible to remove the tag or change the tag, which while flexible, is dangerous and confusing. The syntax itself is also problematic. The parser does not have the ability to identify characters in between the tag name and the colon. Internally, the compiler cannot represent values that are not exactly 32-bit.&lt;br /&gt;
&lt;br /&gt;
The takeaway message is: there is no sensible way to represent a concept like &amp;quot;int64&amp;quot; or &amp;quot;X is a type that represents an array of floats&amp;quot;. The tagging grammar makes it too awkward, and the compiler itself is incapable of attaching such information to a tag. We can't fix that right away, but we can begin to deprecate the tag system via a more normal declaration syntax.&lt;br /&gt;
&lt;br /&gt;
An easy example to see why this is necessary, is the weirdness in expressing something like this with tags:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
native float[3] GetEntOrigin();&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note on the &amp;lt;tt&amp;gt;String&amp;lt;/tt&amp;gt; tag:'' The introduction of &amp;lt;tt&amp;gt;char&amp;lt;/tt&amp;gt; might initially seem confusing. The reason for this is that in the future, we would like to introduce a true &amp;quot;string&amp;quot; type that acts as an object, like strings in most other languages. The existing behavior in Pawn is an array of characters, which is much lower-level. The renaming clarifies what the type really is, and leaves the door open for better types in the future.&lt;br /&gt;
&lt;br /&gt;
==Arrays==&lt;br /&gt;
The new style of declaration disambiguates between two kinds of arrays. Pawn has ''indeterminate arrays'', where the size is not known, and ''determinate arrays'', where the size is known. We refer to these as &amp;quot;dynamic&amp;quot; and &amp;quot;fixed-length&amp;quot; arrays, respectively.&lt;br /&gt;
&lt;br /&gt;
'''A fixed-length array is declared by placing brackets after a variable name'''. For example:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
int CachedStuff[1000];&lt;br /&gt;
int PlayerData[MAXPLAYERS + 1] = { 0, ... };&lt;br /&gt;
int Weapons[] = { WEAPON_AK47, WEAPON_GLOCK, WEAPON_KNIFE };&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In these examples, the array size is fixed. The size is known ahead of time and cannot change. When using brackets in this position, the array size must be specified, either via an explicit size or inferred from an initial value.&lt;br /&gt;
&lt;br /&gt;
A dynamic-length array has the brackets '''before the variable name''', that is, '''after the type'''. The most common case is when specifying functions that take an array as input:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
native void SetPlayerName(int player, const char[] name);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, we are specifying that the length of &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; is not always known - it could be anything.&lt;br /&gt;
&lt;br /&gt;
Dynamic arrays can also be created in local scopes. For example,&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
void FindPlayers()&lt;br /&gt;
{&lt;br /&gt;
  int[] players = new int[MaxClients + 1];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allocates a new array of the given size and places a reference in &amp;lt;tt&amp;gt;players&amp;lt;/tt&amp;gt;. The memory is automatically freed when no longer in use.&lt;br /&gt;
&lt;br /&gt;
It is illegal to initialize a fixed-length array with an indeterminate array, and it is illegal to initialize a dynamic array with a fixed-array. It is also illegal to specify a fixed size on a dynamic length array.&lt;br /&gt;
&lt;br /&gt;
For the most part, this does not change existing Pawn semantics. It is simply new syntax intended to clarify the way arrays work.&lt;br /&gt;
&lt;br /&gt;
===Rationale===&lt;br /&gt;
In the original syntax, there was a subtle difference in array declaration:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
new array1[MAXPLAYERS + 1];&lt;br /&gt;
new array2[MaxClents + 1];&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, &amp;lt;tt&amp;gt;array1&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;array2&amp;lt;/tt&amp;gt; are very different types: the first is an &amp;lt;tt&amp;gt;int[65]&amp;lt;/tt&amp;gt; and the latter is an &amp;lt;tt&amp;gt;int[]&amp;lt;/tt&amp;gt;. However, there is no syntactic difference: the compiler has to deduce whether the size expression is constant to determine the type. The new syntax clearly and explicitly disambiguates these cases, so in the future when we introduce fully dynamic and flexible arrays, we're less likely to break existing code.&lt;br /&gt;
&lt;br /&gt;
This may result in some confusion. Hopefully won't matter long term, as once we have true dynamic arrays, fixed arrays will become much less useful and more obscure.&lt;br /&gt;
&lt;br /&gt;
The rationale for restricting initializers is similar. Once we have true dynamic arrays, the restrictions will be lifted. In the meantime, we need to make sure we're limited to semantics that won't have subtle differences in the future.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
float x = 5.0;    // Replacement for &amp;quot;new Float:x = 5.0;&amp;quot;&lt;br /&gt;
int y = 4;        // Replacement for &amp;quot;new y = 4;&amp;quot;&lt;br /&gt;
char name[32];    // Replacement for &amp;quot;new String:name[32];&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void DoStuff(float x, int y, char[] name, int length) { //Replacement for &amp;quot;DoStuff(Float:x, y, String:name[], length)&amp;quot;&lt;br /&gt;
  Format(name, length, &amp;quot;%f %d&amp;quot;, x, y); //No replacement here&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==View As==&lt;br /&gt;
A new operator is available for reinterpreting the bits in a value as another type. This operator is called &amp;lt;tt&amp;gt;view_as&amp;lt;/tt&amp;gt;. It is not a safe cast, in that, it can transform one type to another even if the actual value does not conform to either.&lt;br /&gt;
&lt;br /&gt;
In pre-transitional syntax, this was called &amp;quot;retagging&amp;quot;. Retagging does not support new-style types, which is why this operator has been introduced. Example of before and after code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
// Before:&lt;br /&gt;
float x = Float:array.Get(i);&lt;br /&gt;
&lt;br /&gt;
// After:&lt;br /&gt;
float y = view_as&amp;lt;float&amp;gt;(array.Get(i));&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is worth reiterating that this is not a cast. If the value in the array is not a float, then when &amp;quot;viewed as&amp;quot; a float it will probably look very odd.&lt;br /&gt;
&lt;br /&gt;
==Grammar==&lt;br /&gt;
The new and old declaration grammar is below. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
return-type ::= return-old | return-new&lt;br /&gt;
return-new ::= type-expr new-dims?        // Note, dims not yet supported.&lt;br /&gt;
return-old ::= old-dims? label?&lt;br /&gt;
&lt;br /&gt;
argdecl ::= arg-old | arg-new&lt;br /&gt;
arg-new ::= &amp;quot;const&amp;quot;? type-expr '&amp;amp;'? symbol old-dims? ('=' arg-init)?&lt;br /&gt;
arg-old ::= &amp;quot;const&amp;quot;? tags? '&amp;amp;'? symbol old-dims? ('=' arg-init)?&lt;br /&gt;
&lt;br /&gt;
vardecl ::= var-old | var-new&lt;br /&gt;
var-new ::= var-new-prefix type-expr symbol old-dims?&lt;br /&gt;
var-new-prefix ::= &amp;quot;static&amp;quot; | &amp;quot;const&amp;quot;&lt;br /&gt;
var-old ::= var-old-prefix tag? symbol old-dims?&lt;br /&gt;
var-old-prefix ::= &amp;quot;new&amp;quot; | &amp;quot;decl&amp;quot; | &amp;quot;static&amp;quot; | &amp;quot;const&amp;quot;&lt;br /&gt;
&lt;br /&gt;
global ::= global-old | global-new&lt;br /&gt;
global-new ::= storage-class* type-expr symbol old-dims?&lt;br /&gt;
global-old ::= storage-class* tag? symbol old-dims?&lt;br /&gt;
&lt;br /&gt;
storage-class ::= &amp;quot;public&amp;quot; | &amp;quot;static&amp;quot; | &amp;quot;const&amp;quot; | &amp;quot;stock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
type-expr ::= (builtin-type | symbol) new-dims?&lt;br /&gt;
builtin-type ::= &amp;quot;void&amp;quot;&lt;br /&gt;
               | &amp;quot;int&amp;quot;&lt;br /&gt;
               | &amp;quot;float&amp;quot;&lt;br /&gt;
               | &amp;quot;char&amp;quot;&lt;br /&gt;
               | &amp;quot;bool&amp;quot;&lt;br /&gt;
&lt;br /&gt;
tags ::= tag-vector | tag&lt;br /&gt;
tag-vector ::= '{' symbol (',' symbol)* '}' ':'&lt;br /&gt;
tag ::= label&lt;br /&gt;
&lt;br /&gt;
new-dims ::= ('[' ']')*&lt;br /&gt;
old-dims ::= ('[' expr? ']')+&lt;br /&gt;
&lt;br /&gt;
label ::= symbol ':'&lt;br /&gt;
symbol ::= [A-Za-z_]([A-Za-z0-9_]*)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also note, there is no equivalent of &amp;lt;tt&amp;gt;decl&amp;lt;/tt&amp;gt; in the new declarator syntax. &amp;lt;tt&amp;gt;decl&amp;lt;/tt&amp;gt; is considered to be dangerous and unnecessary. If an array's zero initialization is too costly, consider making it static or global.&lt;br /&gt;
&lt;br /&gt;
=Methodmaps=&lt;br /&gt;
==Introduction==&lt;br /&gt;
Methodmaps are simple: they attach methods onto an enum. For example, here is our legacy API for Handles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
native CloneHandle(Handle handle);&lt;br /&gt;
native CloseHandle(Handle handle);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a good example of our legacy API. Using it generally looks something like:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
Handle array = CreateAdtArray();&lt;br /&gt;
PushArrayCell(array, 4);&lt;br /&gt;
CloseHandle(array);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gross! A Methodmap can clean it up by attaching functions to the &amp;lt;tt&amp;gt;Handle&amp;lt;/tt&amp;gt; tag, like this:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap Handle {&lt;br /&gt;
    public Clone() = CloneHandle;&lt;br /&gt;
    public Close() = CloseHandle;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, our earlier array code can start to look object-oriented:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
Handle array = CreateAdtArray();&lt;br /&gt;
PushArrayCell(array, 4);&lt;br /&gt;
array.Close();&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With a full methodmap for Arrays, for example,&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap ArrayList &amp;lt; Handle&lt;br /&gt;
{&lt;br /&gt;
  public native ArrayList(); // constructor&lt;br /&gt;
  public native void Push(any value);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can write even more object-like code:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
ArrayList array = new ArrayList();&lt;br /&gt;
array.Push(4);&lt;br /&gt;
delete array;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Note: the official API does not expose methods on raw Handles.)&lt;br /&gt;
&lt;br /&gt;
==Inheritance==&lt;br /&gt;
The Handle system has a &amp;quot;weak&amp;quot; hierarchy. All handles can be passed to &amp;lt;tt&amp;gt;CloseHandle&amp;lt;/tt&amp;gt;, but only AdtArray handles can be passed to functions like &amp;lt;tt&amp;gt;PushArrayCell&amp;lt;/tt&amp;gt;. This hierarchy is not enforced via tags (unfortunately), but instead by run-time checks. Methodmaps allow us to make individual handle types object-oriented, while also moving type-checks into the compiler.&lt;br /&gt;
&lt;br /&gt;
For example, here is a transitional API for arrays:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
native AdtArray CreateAdtArray();&lt;br /&gt;
&lt;br /&gt;
methodmap AdtArray &amp;lt; Handle {&lt;br /&gt;
    public PushCell() = PushArrayCell;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;tt&amp;gt;CreateAdtArray&amp;lt;/tt&amp;gt; now returns &amp;lt;tt&amp;gt;AdtArray&amp;lt;/tt&amp;gt; instead of &amp;lt;tt&amp;gt;Handle&amp;lt;/tt&amp;gt;. Normally that would break older code, but since &amp;lt;tt&amp;gt;AdtArray&amp;lt;/tt&amp;gt; inherits from &amp;lt;tt&amp;gt;Handle&amp;lt;/tt&amp;gt;, there is a special rule in the type system that allows coercing an &amp;lt;tt&amp;gt;AdtArray&amp;lt;/tt&amp;gt; to a &amp;lt;tt&amp;gt;Handle&amp;lt;/tt&amp;gt; (but not vice versa).&lt;br /&gt;
&lt;br /&gt;
Now, the API looks much more object-oriented:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
AdtArray array = CreateAdtArray();&lt;br /&gt;
array.PushCell(4);&lt;br /&gt;
array.Close();&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inline Methods==&lt;br /&gt;
Methodmaps can declare inline methods and accessors. Inline methods can be either natives or Pawn functions. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap AdtArray {&lt;br /&gt;
    public native void PushCell(value);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example requires that an &amp;quot;AdtArray.PushCell&amp;quot; native exists somewhere in SourceMod. It has a magic initial parameter called &amp;quot;this&amp;quot;, so the signature will look something like:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
native void AdtArray.PushCell(AdtArray this, value);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Of course, this exact signature will not appear in an include file - it's the signature that the C++ implementation should expect, however.)&lt;br /&gt;
&lt;br /&gt;
It's also possible to define new functions without a native:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap AdtArray {&lt;br /&gt;
    public native void PushCell(value);&lt;br /&gt;
&lt;br /&gt;
    public void PushCells(list[], count) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; count; i++) {&lt;br /&gt;
            this.PushCell(i);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lastly, we can also define accessors. or example,&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap AdtArray {&lt;br /&gt;
    property int Size {&lt;br /&gt;
        public get() = GetArraySize;&lt;br /&gt;
    }&lt;br /&gt;
    property bool Empty {&lt;br /&gt;
        public get() {&lt;br /&gt;
            return this.Size == 0;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    property int Capacity {&lt;br /&gt;
        public native get();&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first accessor simply assigns an existing function as an accessor for &amp;quot;Size&amp;quot;. The second accessor is an inline method with an implicit &amp;quot;this&amp;quot; parameter. The third accessor will bind to a native with the following name and signature:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
native int AdtArray.Capacity.get(AdtArray this);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setters are also supported. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap Player {&lt;br /&gt;
    property int Health {&lt;br /&gt;
        public native get();&lt;br /&gt;
        public native set(int health);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Custom Tags==&lt;br /&gt;
Methodmaps don't have to be used with Handles. It is possible to define custom methodmaps on new or existing tags. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap AdminId {&lt;br /&gt;
    public int Rights() {&lt;br /&gt;
        return GetAdminFlags(this);&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, for example, it is possible to do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;GetPlayerAdmin(id).Rights()&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constructors and Destructors==&lt;br /&gt;
Methodmaps can also define constructors and destructors, which is useful if they are intended to behave like actual objects. For example,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
methodmap AdtArray {&lt;br /&gt;
    public AdtArray(blocksize = 1);&lt;br /&gt;
    public ~AdtArray();&lt;br /&gt;
    public void PushCell(value);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now AdtArrays can be used in a fully object-oriented style:&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
AdtArray array = new AdtArray();&lt;br /&gt;
array.PushCell(10);&lt;br /&gt;
array.PushCell(20);&lt;br /&gt;
array.PushCell(30);&lt;br /&gt;
delete array;&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
There are a few caveats to methodmaps:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;CloseHandle() is not yet gone. It is required to call &amp;lt;tt&amp;gt;delete&amp;lt;/tt&amp;gt; on any object that previously would have required CloseHandle().&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;There can be only one methodmap for a tag.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;When using existing natives, the first parameter of the native must coerce to the tag of the methodmap. Tag mismatches of the &amp;quot;this&amp;quot; parameter will result in an error. Not a warning!&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Methodmaps can only be defined on tags. Pawn has some ways of creating actual types (like via &amp;lt;tt&amp;gt;struct&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;class&amp;lt;/tt&amp;gt;). Methodmaps cannot be created on those types.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Methodmaps do not have strong typing. For example, it is still possible to perform &amp;quot;illegal&amp;quot; casts like &amp;lt;tt&amp;gt;Float:CreateAdtArray()&amp;lt;/tt&amp;gt;. This is necessary for backwards compatibility, so methodmap values can flow into natives like &amp;lt;tt&amp;gt;PrintToServer&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;CreateTimer&amp;lt;/tt&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;It is not possible to inherit from anything other than another previously declared methodmap.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Methodmaps can only be defined over scalars - that is, the &amp;quot;this&amp;quot; parameter can never be an array. This means they cannot be used for enum-structs.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Destructors can only be native. When we are able to achieve garbage collection, destructors will be removed.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;The signatures of methodmaps must use the new declaration syntax.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;Methodmaps must be declared before they are used.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Grammar==&lt;br /&gt;
The grammar for methodmaps is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
visibility ::= &amp;quot;public&amp;quot;&lt;br /&gt;
method-args ::= arg-new* &amp;quot;...&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
methodmap ::= &amp;quot;methodmap&amp;quot; symbol? { methodmap-item* } term&lt;br /&gt;
methodmap-item ::=&lt;br /&gt;
           visibility &amp;quot;~&amp;quot;? symbol &amp;quot;(&amp;quot; &amp;quot;)&amp;quot; &amp;quot;=&amp;quot; symbol term&lt;br /&gt;
         | visibility &amp;quot;native&amp;quot; type-expr &amp;quot;~&amp;quot;? symbol methodmap-symbol &amp;quot;(&amp;quot; method-args &amp;quot;)&amp;quot; term&lt;br /&gt;
         | visibility type-expr symbol &amp;quot;(&amp;quot; method-args &amp;quot;)&amp;quot; func-body term&lt;br /&gt;
         | &amp;quot;property&amp;quot; type-expr symbol { property-decl } term&lt;br /&gt;
property-func ::= &amp;quot;get&amp;quot; | &amp;quot;set&amp;quot;&lt;br /&gt;
property-decl ::= visibility property-impl&lt;br /&gt;
property-impl ::=&lt;br /&gt;
           &amp;quot;native&amp;quot; property-func &amp;quot;(&amp;quot; &amp;quot;)&amp;quot; term&lt;br /&gt;
         | property-func &amp;quot;(&amp;quot; &amp;quot;)&amp;quot; func-body term&lt;br /&gt;
         | property-func &amp;quot;(&amp;quot; &amp;quot;)&amp;quot; &amp;quot;=&amp;quot; symbol&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Typedefs=&lt;br /&gt;
&lt;br /&gt;
Function tags and function enums have been deprecated in favor of a more modern syntax. Currently, they can still only create tag names for functions. Future versions will support arbitrary types. The syntax is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef ::= &amp;quot;typedef&amp;quot; symbol &amp;quot;=&amp;quot; full-type-expr term&lt;br /&gt;
full-type-expr ::= &amp;quot;(&amp;quot; type-expr &amp;quot;)&amp;quot;&lt;br /&gt;
                 | type-expr&lt;br /&gt;
type-expr ::= &amp;quot;function&amp;quot; type-name &amp;quot;(&amp;quot; typedef-args? &amp;quot;)&amp;quot;&lt;br /&gt;
typedef-args ::= &amp;quot;...&amp;quot;&lt;br /&gt;
               | typedef-arg (&amp;quot;, &amp;quot; &amp;quot;...&amp;quot;)?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that typedefs only support new-style types. For example,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
functag public Action:SrvCmd(args);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Becomes...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pawn&amp;gt;&lt;br /&gt;
typedef SrvCmd = function Action (int args);&lt;br /&gt;
&amp;lt;/pawn&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Enforcing new syntax=&lt;br /&gt;
&lt;br /&gt;
You can enforce the new syntax in 1.7 by using &amp;lt;pawn&amp;gt;#pragma newdecls required&amp;lt;/pawn&amp;gt; ontop of your code, after the includes (or else current 1.7 includes which contain old syntax will be read with new-syntax rules).&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9889</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9889"/>
		<updated>2015-03-26T01:50:34Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Under CSS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damages another, inflictor should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamageAlive===&lt;br /&gt;
This hook works in a similar way to SDKHook_OnTakeDamage but it gives the [https://bugs.alliedmods.net/show_bug.cgi?id=6249#c7 actual, calculated damage amount done to the player. The pre-hook will fire after an OnTakeDamage pre-hook, and the post-hook will fire before an OnTakeDamage post-hook. The health is subtracted in between pre and post unless the hook is blocked.] {{pr|149}}&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;br /&gt;
&lt;br /&gt;
===Regarding SDKHook_OnTakeDamage and SDKHook_OnTakeDamageAlive===&lt;br /&gt;
&lt;br /&gt;
SDKHook_OnTakeDamage/Post is triggered when hitting a teammate with mp_friendlyfire 0, but not SDKHook_OnTakeDamageAlive.&lt;br /&gt;
&lt;br /&gt;
==Under TF2==&lt;br /&gt;
Under tf2, the takedamage hook isn't 100% accurate, it's damage param is the weapon's base damage. the DMG_CRIT flag is for both crit and minicrit, spread and minicrit/crit damage is done after this call.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9888</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9888"/>
		<updated>2015-03-26T01:49:36Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Non-regular cases for SDKHook_OnTakeDamage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damages another, inflictor should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamageAlive===&lt;br /&gt;
This hook works in a similar way to SDKHook_OnTakeDamage but it gives the [https://bugs.alliedmods.net/show_bug.cgi?id=6249#c7 actual, calculated damage amount done to the player. The pre-hook will fire after an OnTakeDamage pre-hook, and the post-hook will fire before an OnTakeDamage post-hook. The health is subtracted in between pre and post unless the hook is blocked.] {{pr|149}}&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;br /&gt;
==Under TF2==&lt;br /&gt;
Under tf2, the takedamage hook isn't 100% accurate, it's damage param is the weapon's base damage. the DMG_CRIT flag is for both crit and minicrit, spread and minicrit/crit damage is done after this call.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9887</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9887"/>
		<updated>2015-03-26T01:48:20Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Non-regular cases for SDKHook_OnTakeDamage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damages another, inflictor should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamageAlive===&lt;br /&gt;
This hook works in a similar way to SDKHook_OnTakeDamage but it gives the [https://bugs.alliedmods.net/show_bug.cgi?id=6249#c7 actual, calculated damage amount done to the player. The pre-hook will fire after an OnTakeDamage pre-hook, and the post-hook will fire before an OnTakeDamage post-hook. The health is subtracted in between pre and post unless the hook is blocked.] {{pr|149}}&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
SDKHook_OnTakeDamage/Post is triggered when hitting a teammate with mp_friendlyfire 0, but not SDKHook_OnTakeDamageAlive&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;br /&gt;
==Under TF2==&lt;br /&gt;
Under tf2, the takedamage hook isn't 100% accurate, it's damage param is the weapon's base damage. the DMG_CRIT flag is for both crit and minicrit, spread and minicrit/crit damage is done after this call.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9886</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9886"/>
		<updated>2015-03-26T01:14:24Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* SDKHook_OnTakeDamageAlive */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damages another, inflictor should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamageAlive===&lt;br /&gt;
This hook works in a similar way to SDKHook_OnTakeDamage but it gives the [https://bugs.alliedmods.net/show_bug.cgi?id=6249#c7 actual, calculated damage amount done to the player. The pre-hook will fire after an OnTakeDamage pre-hook, and the post-hook will fire before an OnTakeDamage post-hook. The health is subtracted in between pre and post unless the hook is blocked.] {{pr|149}}&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;br /&gt;
==Under TF2==&lt;br /&gt;
Under tf2, the takedamage hook isn't 100% accurate, it's damage param is the weapon's base damage. the DMG_CRIT flag is for both crit and minicrit, spread and minicrit/crit damage is done after this call.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9885</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9885"/>
		<updated>2015-03-26T01:13:57Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* SDKHook_OnTakeDamageAlive */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damages another, inflictor should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamageAlive===&lt;br /&gt;
This hook works in a similar way to SDKHook_OnTakeDamage but it gives the [https://bugs.alliedmods.net/show_bug.cgi?id=6249#c7 actual, calculated damage amount done to the player. The pre-hook will fire after an OnTakeDamage pre-hook, and the post-hook will fire before an OnTakeDamage post-hook. The health is subtracted in between pre and post unless the hook is blocked.] {{pr|43}}&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;br /&gt;
==Under TF2==&lt;br /&gt;
Under tf2, the takedamage hook isn't 100% accurate, it's damage param is the weapon's base damage. the DMG_CRIT flag is for both crit and minicrit, spread and minicrit/crit damage is done after this call.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9884</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9884"/>
		<updated>2015-03-26T01:12:27Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* SDKHook_OnTakeDamageAlive */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damages another, inflictor should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamageAlive===&lt;br /&gt;
This hook works in a similar way to SDKHook_OnTakeDamage but it gives the [https://bugs.alliedmods.net/show_bug.cgi?id=6249#c7 actual, calculated damage amount done to the player. The pre-hook will fire after an OnTakeDamage pre-hook, and the post-hook will fire before an OnTakeDamage post-hook. The health is subtracted in between pre and post unless the hook is blocked.]&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;br /&gt;
==Under TF2==&lt;br /&gt;
Under tf2, the takedamage hook isn't 100% accurate, it's damage param is the weapon's base damage. the DMG_CRIT flag is for both crit and minicrit, spread and minicrit/crit damage is done after this call.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9883</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9883"/>
		<updated>2015-03-26T01:11:15Z</updated>

		<summary type="html">&lt;p&gt;RedSword: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damages another, inflictor should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamageAlive===&lt;br /&gt;
This hook works in a similar way to SDKHook_OnTakeDamage but it gives the actual damage done to the player.&lt;br /&gt;
&lt;br /&gt;
[https://bugs.alliedmods.net/show_bug.cgi?id=6249#c7 The damage amount passed in will be the actual, calculated damage amount. The pre-hook will fire after an OnTakeDamage pre-hook, and the post-hook will fire before an OnTakeDamage post-hook. The health is subtracted in between pre and post unless the hook is blocked.]&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;br /&gt;
==Under TF2==&lt;br /&gt;
Under tf2, the takedamage hook isn't 100% accurate, it's damage param is the weapon's base damage. the DMG_CRIT flag is for both crit and minicrit, spread and minicrit/crit damage is done after this call.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9881</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9881"/>
		<updated>2015-03-24T10:58:33Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* SDKHook_OnTakeDamage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damages another, inflictor should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9880</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9880"/>
		<updated>2015-03-24T10:58:04Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* SDKHook_OnTakeDamage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damage another &amp;quot;inflictor&amp;quot; should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9879</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9879"/>
		<updated>2015-03-24T10:57:32Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* SDKHook_OnTakeDamage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damage another it should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9878</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9878"/>
		<updated>2015-03-24T10:57:18Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* SDKHook_OnTakeDamage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damage another ot should be equal to the attacking player id. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9877</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9877"/>
		<updated>2015-03-24T10:56:13Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Hooks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
Some information on various hooks below.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damage someone else it should be equal to the attacker. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9876</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9876"/>
		<updated>2015-03-24T10:55:35Z</updated>

		<summary type="html">&lt;p&gt;RedSword: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Hooks==&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damage someone else it should be equal to the attacker. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9875</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9875"/>
		<updated>2015-03-24T10:54:45Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damage someone else it should be equal to the attacker. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9874</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9874"/>
		<updated>2015-03-24T10:54:30Z</updated>

		<summary type="html">&lt;p&gt;RedSword: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
===SDKHook_OnTakeDamage===&lt;br /&gt;
inflictor (3rd argument) is the entity that inflicts the damage. If a player directly damage someone else it should be equal to the attacker. An example of an indirect damage would be a grenade.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot). The inflictor will be the same as the attacker.&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9873</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9873"/>
		<updated>2015-03-24T10:50:31Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot). The inflictor will be the same as the attacker.&lt;br /&gt;
&lt;br /&gt;
A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9872</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9872"/>
		<updated>2015-03-24T10:42:49Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot). A single attack can trigger many SDKHook_OnTakeDamage; when a gun throws pullets for instance (shotgun and glock in burst-mode notably).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9871</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9871"/>
		<updated>2015-03-24T10:39:10Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet and the knife will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9870</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9870"/>
		<updated>2015-03-24T10:33:57Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9869</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9869"/>
		<updated>2015-03-24T10:33:43Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9868</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9868"/>
		<updated>2015-03-24T10:33:33Z</updated>

		<summary type="html">&lt;p&gt;RedSword: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;br /&gt;
&lt;br /&gt;
(Regarding SM/Admin damaged; maybe place this is another section if someone can be sure that this would occur on all mods)&lt;br /&gt;
&lt;br /&gt;
sm_slap does not trigger SDKHook_OnTakeDamage.&lt;br /&gt;
sm_burn will trigger two different callback : an entity with the classname &amp;quot;entityflame&amp;quot; will deal once 0 damage of type DMG_BURN and once 1 damage of type (DMG_BURN | DMG_DIRECT) every tick.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9867</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9867"/>
		<updated>2015-03-24T10:14:42Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflict damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflict damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9866</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9866"/>
		<updated>2015-03-24T10:14:24Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflict damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflicst damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9865</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9865"/>
		<updated>2015-03-24T10:12:43Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflicst damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9864</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9864"/>
		<updated>2015-03-24T10:12:24Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) when it's a (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflicst damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9863</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9863"/>
		<updated>2015-03-24T10:11:37Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Non-regular cases for SDKHook_OnTakeDamage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plants the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) when its a (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflicst damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9862</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9862"/>
		<updated>2015-03-24T10:11:25Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Non-regular cases for SDKHook_OnTakeDamage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorists plant the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) when its a (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflicst damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9861</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9861"/>
		<updated>2015-03-24T10:11:13Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Non-regular cases for SDKHook_OnTakeDamage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0 (the world).&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plant the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) when its a (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflicst damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9860</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9860"/>
		<updated>2015-03-24T10:08:51Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5] and it does not need to be manually installed anymore.&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0.&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plant the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) when its a (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflicst damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9859</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9859"/>
		<updated>2015-03-24T10:06:20Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Non regular cases for SDKHook_OnTakeDamage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was added rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5]&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non-regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0.&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plant the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) when its a (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflicst damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9858</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9858"/>
		<updated>2015-03-24T10:05:22Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage TYPE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was added rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5]&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0.&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plant the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage types===&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) when its a (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflicst damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9857</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9857"/>
		<updated>2015-03-24T10:03:49Z</updated>

		<summary type="html">&lt;p&gt;RedSword: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was added rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5]&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0.&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plant the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage TYPE===&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) when its a (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflicst damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9856</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9856"/>
		<updated>2015-03-24T10:00:07Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage TYPE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SDKHooks==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was added rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5]&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0.&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plant the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage TYPE===&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type (DMG_BULLET | DMG_NEVERGIB) (non-headshot) or (DMG_BULLET | DMG_NEVERGIB | (1 &amp;lt;&amp;lt; 30) ) when its a (headshot).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflicst damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9855</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9855"/>
		<updated>2015-03-24T09:53:04Z</updated>

		<summary type="html">&lt;p&gt;RedSword: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SDKHooks==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was added rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5]&lt;br /&gt;
&lt;br /&gt;
==Under CSS==&lt;br /&gt;
===Non regular cases for SDKHook_OnTakeDamage===&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0.&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plant the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Some damage TYPE===&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type (DMG_BULLET | DMG_NEVERGIB).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflicst damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9854</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9854"/>
		<updated>2015-03-24T09:51:15Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage TYPE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SDKHooks==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was added rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5]&lt;br /&gt;
&lt;br /&gt;
===Under CSS===&lt;br /&gt;
==Non regular cases for SDKHook_OnTakeDamage==&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0.&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plant the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Some damage TYPE==&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type (DMG_BULLET | DMG_NEVERGIB).&lt;br /&gt;
&lt;br /&gt;
A grenade impact (for instance a flash hitting a teammate) will inflicst damage of type DMG_CLUB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9853</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9853"/>
		<updated>2015-03-24T09:47:20Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Non regular cases for SDKHook_OnTakeDamage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SDKHooks==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was added rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5]&lt;br /&gt;
&lt;br /&gt;
===Under CSS===&lt;br /&gt;
==Non regular cases for SDKHook_OnTakeDamage==&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0.&lt;br /&gt;
&lt;br /&gt;
In the scenario where a terrorist plant the bomb, when the bomb explodes, the attacker (2nd argument) will be the same as the inflictor (3rd argument) which will have the Classname &amp;quot;planted_c4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Some damage TYPE==&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type DMG_NEVERGIB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9852</id>
		<title>SDKHooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.alliedmods.net/index.php?title=SDKHooks&amp;diff=9852"/>
		<updated>2015-03-24T09:41:32Z</updated>

		<summary type="html">&lt;p&gt;RedSword: /* Some damage TYPE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==SDKHooks==&lt;br /&gt;
SDKHooks was previously an external extension to Sourcemod. It was added rolled in [https://wiki.alliedmods.net/Sourcemod_1.5.0_API_Changes#SDKHooks Sourcemod 1.5]&lt;br /&gt;
&lt;br /&gt;
===Under CSS===&lt;br /&gt;
==Non regular cases for SDKHook_OnTakeDamage==&lt;br /&gt;
In the scenario where a player throw a grenade to another player then quickly disconnect, the attacker (2nd argument) will become the inflictor (3rd argument). &lt;br /&gt;
&lt;br /&gt;
In the scenario where a player fall; the attacker, which is also the inflictor, will be 0.&lt;br /&gt;
==Some damage TYPE==&lt;br /&gt;
A normal HEGrenade and the C4 inflicts damage of type DMG_BLAST.&lt;br /&gt;
&lt;br /&gt;
A fall inflicts damage of type DMG_FALL.&lt;br /&gt;
&lt;br /&gt;
A normal gun bullet will inflicts damage of type DMG_NEVERGIB.&lt;/div&gt;</summary>
		<author><name>RedSword</name></author>
		
	</entry>
</feed>