Editing User:Orin/Sandbox/Entity Additions

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 4: Line 4:


<div style="float:right;clear:all;padding:0 1em;">__TOC__</div>
<div style="float:right;clear:all;padding:0 1em;">__TOC__</div>
All entity-oriented feature additions: Inputs, Outputs, Targetting, etc. are all documented within their own heaps of lists.
All entity-oriented feature additions: Inputs, Outputs, Targetting, etc. are all documented here within their own heaps of lists.
 
Note I/O inputs have two different type of parameters: <Required> and [Optional].


To traverse this page, use the ''Table of Contents'' at the right side, or use the CTRL+F shortcut for your Browser.
== I/O Expansions ==
== I/O Expansions ==
=== Targetname Prefixes ===
=== Targetname Prefixes ===
Line 22: Line 21:
|-
|-
| <code>@bb<''vector'' mins> <''vector'' maxs>@<targetname></code>
| <code>@bb<''vector'' mins> <''vector'' maxs>@<targetname></code>
| Target ''all'' entiities within a [https://developer.valvesoftware.com/wiki/Bounding_box bounding box] relative to the given entity. Example: <code>@bb-100 -100 -100 100 100 100@prop_dynamic</code>.
| Target ''all'' entiities within a [https://developer.valvesoftware.com/w/images/6/63/BoundingBoxMinsMaxs.png bounding box] relative to the given entity. Example: <code>@bb-100 -100 -100 100 100 100@prop_dynamic</code>.
|}
|}


=== Entity I/O Additions ===
== Entity Expansions ==
==== <div style="font-size: 110%;">All Entities</div> ====
=== [https://developer.valvesoftware.com/wiki/Point_viewcontrol point_viewcontrol] ===
 
==== <u>Inputs</u> ====
 
<b>Inputs</b>
{| class="wikitable" style="table-layout: fixed;"
{| class="wikitable" style="table-layout: fixed;"
! Input
! Input
! Description
! Description
|-
|-
| <code>$FireUserAsActivator1-4 <string></code>
| <code>$EnableAll</code>
| Acts like FireUser1-4, but the entity becomes the !activator and is passed as the parameter of OnUser1-4 output
| Enable the camera for all players on the map.<br>&nbsp;'''Warning:''' Spawnflag #512 may not do anything. (<code>Start At Player, Interruptable by Player</code>)
|-
| <code>$FireUser5-8 <string></code>
| Fires custom $OnUser5-8 output
|-
| <code>$TakeDamage <int></code>
| Take specified amount of damage
|-
| <code>$TakeDamageFromActivator <int></code>
| Take specified amount of damage, the !activator is the damage inflictor
|-
| <code>$SetModel <string></code>
| Set custom model
|-
| <code>$SetModelOverride <string></code>
| Set custom model, only changes the appearance
|-
| <code>$SetModelSpecial <string></code>
| Set custom model, in a special way, it does less additional changes to the entity
|-
| <code>$SetOwner <entity></code>
| Set entity owner
|-
| <code>$InheritOwner <entity></code>
| Set entity owner to the passed entity owner
|-
| <code>$InheritParent <entity></code>
| Set entity parent to the passed entity parent
|-
| <code>$GetKeyValue <string></code>
| Fire OnUser1 output, with key value as a parameter
|-
| <code>$MoveType <int>,<int></code>
| Set move type
|-
| <code>$PlaySound <string></code>
| Play sound from this entity
|-
| <code>$StopSound <string></code>
| Stop playing sound from this entity
|-
| <code>$SetLocalOrigin <vector></code>
| Set origin relative to parent
|-
| <code>$SetLocalAngles <vector></code>
| Set angles relative to parent
|-
| <code>$SetLocalVelocity <vector></code>
| Set velocity relative to parent
|-
| <code>$TeleportToEntity <entity></code>
| Teleport to specified entity
|-
| <code>$MoveRelative <vector></code>
| Move relative to parent (world)
|-
| <code>$RotateRelative <vector></code>
| Rotate relative to parent (world)
|-
| <code>SetKey$(keyvalue name) <string></code>
| Set keyvalue to specified value
|-
| <code>GetKey$(keyvalue name) <string></code>
| parameter format: entity|input|default value; example: !activator|$DisplayTextCenter|def<br>
Trigger the input of an entity, with keyvalue as a parameter (default value if not found)
|-
| <code>SetVar$(variable name) <string></code>
| Set custom entity variable
|-
| <code>GetVar$(variable name) <string></code>
| parameter format: entity|input|default value; example: !activator|$DisplayTextCenter|def<br>
Trigger the input of an entity, with variable as a parameter (default value if not found)
|-
| <code>SetData$([https://raw.githubusercontent.com/powerlord/tf2-data/master/datamaps.txt datamap] prop name) <string></code>
| Set datamap property to specified value
|-
| <code>GetData$([https://raw.githubusercontent.com/powerlord/tf2-data/master/datamaps.txt datamap] prop name) <string></code>
| parameter format: entity|input|default value; example: !activator|$DisplayTextCenter|def<br>
Trigger the input of an entity, with datamap prop as a parameter (default value if not found)
|-
| <code>SetProp$([https://raw.githubusercontent.com/powerlord/tf2-data/master/netprops.txt send prop] name) <string></code>
| Set send property to specified value
|-
| <code>GetProp$([https://raw.githubusercontent.com/powerlord/tf2-data/master/netprops.txt send prop] name) <string></code>
| parameter format: entity|input|default value; example: !activator|$DisplayTextCenter|def<br>
Trigger the input of an entity, with send prop as a parameter (default value if not found)
|}
 
<b>Outputs</b>
{| class="wikitable" style="table-layout:fixed;"
! Output
! Description
|-
| <code>$OnUser5-8 <string></code>
| Called when $FireUser5-8 input is used.
|-
| <code>$OnKilled</code>
| Fired when the entity is killed. The <code>!caller</code> entity will be inaccessible at this point.
|}
 
==== <div style="font-size:110%;">logic_case</u> ====
Redirects I/O in ways depending if a case's scenario has happened. [https://developer.valvesoftware.com/wiki/Logic_case VDC page]
 
For the inputs used in text formatting and menus, look at the [[#logic_case_2|Entity Expansions]] section.
 
<b>Inputs</b>
{| class="wikitable" style="table-layout: fixed;"
! Input
! Description
|-
| <code>$TestSigsegv</code>
| Dedicated for testing if the extension is successfully loaded. Fires <code>OnUser1</code> output.
|-
| <code>$ToFloat <any></code>
| Converts argument to float, or known as ''number''. Fires <code>OnDefault</code> output with result as parameter.
|-
| <code>$ToInt <any></code>
| Converts argument to integer, a ''number'' with no decimals. Fires <code>OnDefault</code> output with result as parameter.
|-
| <code>$GetConVar <string></code>
| Fetches a convar's (console variable) number value, but on two criterias: Having "replicated" flag, and not having a "protected" flag. If both pass, the <code>OnDefault</code> output fires with the parameter as the number value.
: ℹ️ '''Tip:''' The <code>help</code> concommand displays the flags of a convar.
|-
| <code>$GetConVarString <string></code>
| Identical to <code>$GetConVar</code>, but the fetched value is passed as a string.
|-
| <code>$CallerToActivator</code>
| Fires <code>OnDefault</code> output with <code>!activator</code> overriden as the entity in <code>!caller</code>.
|-
| <code>$GetKeyValueFromActivator <string></code>
| Grab value of a key from the <code>!activator</code> entity. Fires <code>OnDefault</code> output with result as parameter.
: 🛑 '''Superseded:''' Use <code>$GetKey$<keyvalue></code> input.
|}
 
==== <div style="font-size:110%;">point_viewcontrol</u> ====
A camera entity capable to force the viewport of any desired players to use its own. [https://developer.valvesoftware.com/wiki/Point_viewcontrol VDC page]
 
<b>Inputs</b>
{| class="wikitable" style="table-layout: fixed;"
! Input
! Description
|-
|-
| <code>$EnableAll</code>
| <code>$EnableAll</code>
| Enable the camera for all players on the map.<br>&nbsp;❗ '''Warning:''' Spawnflag #512 may not do anything. (<code>Start At Player, Interruptable by Player</code>)
| Disable the camera for all players on the map
|-
| <code>$DisableAll</code>
| Disable the camera for all players on the map.
|-
|-
| <code>$SetTarget <entity></code>
| <code>$SetTarget <entity></code>
| The entity that the camera should point to.
| Set current target to entity.
|}
 
==== <div style="font-size:110%;">tank_boss</u> ====
The big sluggish Tank robot. [https://developer.valvesoftware.com/wiki/Tank_boss VDC page]
 
<b>Outputs</b>
{| class="wikitable" style="table-layout:fixed;"
! Output
! Description
|-
| <code>$OnStartDeploy</code>
| Fired when the tank is deploying the bomb if a condition is fulfilled:
* Using <code>"spawnflags" "1"</code>
* Giving the Tank a <code>PointTemplate</code>.
|}
|}


== Entity Expansions ==
=== [https://developer.valvesoftware.com/wiki/Point_viewcontrol obj_sentrygun] (Sentry Gun) ===
=== obj_sentrygun ===
==== <u>Spawnflags</u> ====
The Sentry Gun, one of Engineer's buildings. [https://developer.valvesoftware.com/wiki/Obj_sentrygun VDC page]<br>
<b>Spawnflags</b>
* '''[64]''' - Spawn as mini-sentry
* '''[64]''' - Spawn as mini-sentry


=== tf_point_weapon_mimic ===
=== [https://developer.valvesoftware.com/wiki/Tf_point_weapon_mimic tf_point_weapon_mimic] (Weapon Mimic)<hr> ===
An entity that mimics firing of various projectiles, as if a player shot the projectile. [https://developer.valvesoftware.com/wiki/Tf_point_weapon_mimic VDC page]<br>
; <u>General</u>
<b>Miscellaneous</b><br><br>
1. Added projectile type 4 - Bullet.
'''>''' Killing the mimic entity now automatically removes all of its Stickybombs.<br>
:- <code>SpeedMax</code> keyvalue determines max distance (infinite if not specified).
'''>''' Setting an owner with <code>$SetOwner</code> or <code>$InheritOwner</code> will assign the same owner to fired projectiles are assigned the same owner.<br>
:- <code>SplashRadius</code> determines knockback force.
'''>''' Mimic can shoot bullets if <code>WeaponType</code> is set to 4. It can be customised with these keyvalues:
2. Shot projectiles are now team-assignable with <code>teamnum</code> keyvalue (2 for RED, 3 for BLU).
:'''>''' <code>SpeedMax</code> - max distance (infinite if not specified).
:- Previously they're always of BLU team.
:'''>''' <code>SplashRadius</code> - knockback force.
3. If a player owner is set with <code>$SetOwner</code> or <code>$InheritOwner</code>, fired projectiles are assigned the same owner.<br>
'''>''' If <code>teamnum</code> keyvalue is used, shot projectiles will be assigned a team. (Previously it was always team 3, BLU)
4. Stickybombs are automatically removed if the mimic is killed.
:'''>''' 2 for RED, 3 for BLU.
==== Spawnflags ====
<b>Spawnflags</b>
* '''[1]''' - Shot projectile callback; fires the <code>OnUser4</code> output whenever a projectile is shot, with <code>!activator</code> as the projectile.
* '''[1]''' - Shot projectile callback; fires the <code>OnUser4</code> output whenever a projectile is shot, with <code>!activator</code> as the projectile.
* '''[2]''' - Allow the keyvalues "''FireSound''" and "''ParticleEffect''" to have functionality.
* '''[2]''' - Allow the keyvalues "''FireSound''" and "''ParticleEffect''" to have functionality.


=== Tank (tank_boss) ===
=== Tank (tank_boss) ===
'''>''' When a tank with <code>PointTemplate</code>(s) starts deploying, "OnUser4" output is fired.
* When a tank with <code>PointTemplate</code>(s) starts deploying, "OnUser4" output is fired.
==== Outputs ====
{| class="wikitable" style="width: 100%;"
! Output
! Description
|-
| <code>OnStartDeploy,<none></code>
| Fired when the tank is deploying the bomb
|}


=== Medic shield (entity_medigun_shield) ===
=== Medic shield (entity_medigun_shield) ===
<b>Spawnflags</b>
==== Spawnflags ====
* '''[1]''' - Never expire, and don't block LOS
* '''[1]''' - Never expire, and don't block LOS
* '''[2]''' - Spawn as LV2 Shield
* '''[2]''' - Spawn as LV2 Shield


=== logic_case ===
=== logic_case ===
==== <div style="font-size:110%;">Text formatter</div> ====
==== Text formatter ====
With the use of the added inputs, logic_case can be transformed into a text formatter, replacing % in the format string into format parameters.
With the use of the added inputs, logic_case can be transformed into a text formatter, replacing % in the format string into format parameters.


Line 254: Line 99:
</syntaxhighlight>This would display "You have 6 out of 12 coins left. 50 % done" to all players
</syntaxhighlight>This would display "You have 6 out of 12 coins left. 50 % done" to all players


<b>Inputs</b>
==== Menus ====
{| class="wikitable" style="table-layout: fixed;"
You can use $DisplayMenu input to display a menu for the player, up to 15 entries<syntaxhighlight lang="php">
! Output
! Description
|-
| <code>$Format</code>
| Start a string format. When finished, fires <code>OnDefault</code> output with the formatted string as parameter.
|-
| <code>$FormatInput1-15 <string></code>
| Sets a respective formatting input's argument, then starts a string format.
|-
| <code>$FormatInputNoFire1-15 <string></code>
| Functionally, its <code>$FormatInput1-15</code> without starting a string format.
|-
| <code>$FormatString <string></code>
| Sets the string to be used in formatting, then starts a string format.
|-
| <code>$FormatStringNoFire <string></code>
| Functionally, its <code>$FormatString</code> without starting a string format.
|}
 
==== <div style="font-size:110%;">Menus</div> ====
Sourcemod Menus are displayed using the <code>$DisplayMenu</code> input.
 
<code>Case16</code> title, <code>Case01-15</code> choices.
 
Example: <syntaxhighlight lang="php">
Menu
Menu
{
{
Line 303: Line 123:
</syntaxhighlight>
</syntaxhighlight>


<b>Inputs</b>
==== Inputs ====
{| class="wikitable" style="table-layout: fixed;"
 
! Output
* $FormatString <string>
! Description
** Sets formatting string, then fires OnDefault output, with formatted string as parameter
|-
* $FormatStringNoFire <string>
| <code>$DisplayMenu <entity></code>
** Sets formatting string
| Start displaying a menu to the player entity.
* $FormatInput1 <string>
|-
** Sets formatting input argument 1, then fires OnDefault output, with formatted string as parameter
| <code>$HideMenu <entity></code>
* $FormatInput2-15 <string>
| Forcefully hide the player's menu.
** Sets formatting input argument 2-15, then fires OnDefault output, with formatted string as parameter
|}
* $FormatInputNoFire1 <string>
** Sets formatting input argument 1
* $Format
** Fires OnDefault output, with formatted string as parameter
* $TestSigsegv
** Fires OnUser1 output. Can be used to test if sigsegv extension is active
* $ToInt <any>
** Fires OnDefault output, converts parameter value from string/float to integer
* $ToFloat <any>
** Fires OnDefault output, converts value from string/int to real number
* $CallerToActivator <any>
** Fires OnDefault output, but the !caller entity is converted to !activator
* $GetKeyValueFromActivator <string>
** Fires OnDefault output, the key value from the !activator entity is the parameter
* $GetConVar <string>
** Fires OnDefault output, the convar (console variable) number value is the parameter
* $GetConVarString <string>
** Fires OnDefault output, the convar (console variable) string value is the parameter
*$DisplayMenu <entity>
**Display menu at player
*$HideMenu <entity>
**Hide menu at player


== tf_gamerules ==
== tf_gamerules ==
Line 438: Line 279:
== game_ui ==
== game_ui ==
The server will no longer crash if the player using the entity disconnected from the server
The server will no longer crash if the player using the entity disconnected from the server
== $filter_keyvalue ==
Custom filter that lets you filter entities matching the key value. Shares inputs with [https://developer.valvesoftware.com/wiki/Filter_base filter_base] entity
=== Keyvalues ===
* $name <string>
** Name of the key to compare, example: health
* $value <any>
** Value to compare against
* $compare <string>
** The condition for passing the filter (default: equal). Should only be set for numeric values
** Possible values:
*** equal
*** less than
*** greater than
*** less than or equal
*** greater than or equal
== $filter_variable ==
Custom filter that lets you filter entities matching the custom entity variable (declared by firing $SetVar$variablename input of the entity). Shares inputs with [https://developer.valvesoftware.com/wiki/Filter_base filter_base] entity
=== Keyvalues ===
* $name <string>
** Name of the variable to compare, example: myvar
* $value <any>
** Value to compare against
* $compare <string>
** The condition for passing the filter (default: equal). Should only be set for numeric values
** Possible values:
*** equal
*** less than
*** greater than
*** less than or equal
*** greater than or equal
== $filter_datamap ==
Custom filter that lets you filter entities matching the [https://raw.githubusercontent.com/powerlord/tf2-data/master/datamaps.txt datamap] prop. Shares inputs with [https://developer.valvesoftware.com/wiki/Filter_base filter_base] entity
=== Keyvalues ===
* $name <string>
** Name of the variable to compare, example: m_iHealth
* $value <any>
** Value to compare against
* $compare <string>
** The condition for passing the filter (default: equal). Should only be set for numeric values
** Possible values:
*** equal
*** less than
*** greater than
*** less than or equal
*** greater than or equal
== $filter_prop ==
Custom filter that lets you filter entities matching the [https://raw.githubusercontent.com/powerlord/tf2-data/master/netprops.txt send prop]. Shares inputs with [https://developer.valvesoftware.com/wiki/Filter_base filter_base] entity
=== Keyvalues ===
* $name <string>
** Name of the variable to compare, example: m_nCurrency
* $value <any>
** Value to compare against
* $compare <string>
** The condition for passing the filter (default: equal). Should only be set for numeric values
** Possible values:
*** equal
*** less than
*** greater than
*** less than or equal
*** greater than or equal
== All entities ==
=== Inputs ===
* $FireUserAsActivator1-4 <string>
** Acts like FireUser1-4, but the entity becomes the !activator, and the parameter is passed in OnUser1-4 output
*$FireUser5-8 <string>
** Fires custom $onuser5-8 output
* $TakeDamage <int>
** Take specified amount of damage
* $TakeDamageFromActivator <int>
** Take specified amount of damage, the !activator is the damage inflictor
* $SetModel <string>
** Set custom model
* $SetModelOverride <string>
** Set custom model, only changes the appearence
* $SetModelSpecial <string>
** Set custom model, in a special way, it does less additional changes to the entity
* $SetOwner <entity>
** Set entity owner
* $InheritOwner <entity>
** Set entity owner to the passed entity owner
* $InheritParent <entity>
** Set entity parent to the passed entity parent
* $GetKeyValue <string>
** Fire OnUser1 output, with key value as a parameter
* $MoveType <int>,<int>
** Set move type
* $PlaySound <string>
** Play sound from this entity
* $StopSound <string>
** Stop playing sound from this entity
* $SetLocalOrigin <vector>
** Set origin relative to parent
* $SetLocalAngles <vector>
** Set angles relative to parent
* $SetLocalVelocity <vector>
** Set velocity relative to parent
* $TeleportToEntity <entity>
** Teleport to specified entity
* $MoveRelative <vector>
** Move relative to parent (world)
* $RotateRelative <vector>
** Rotate relative to parent (world)
*$SetKey$(keyvalue name) <string>
**Set keyvalue to specified value
*$GetKey$(keyvalue name) <string>
**parameter format: entity|input|default value
**example: !activator|$DisplayTextCenter|def
**Trigger the input of an entity, with keyvalue as a paramer (default value if not found)
*$SetVar$(variable name) <string>
**Set custom entity variable
*$GetVar$(variable name) <string>
**parameter format: entity|input|default value
**example: !activator|$DisplayTextCenter|def
**Trigger the input of an entity, with variable as a paramer (default value if not found)
*$SetData$([https://raw.githubusercontent.com/powerlord/tf2-data/master/datamaps.txt datamap] prop name) <string>
**Set datamap property to specified value
*$GetData$([https://raw.githubusercontent.com/powerlord/tf2-data/master/datamaps.txt datamap] prop name) <string>
**parameter format: entity|input|default value
**example: !activator|$DisplayTextCenter|def
**Trigger the input of an entity, with datamap prop as a paramer (default value if not found)
*$SetProp$([https://raw.githubusercontent.com/powerlord/tf2-data/master/netprops.txt send prop] name) <string>
**Set send property to specified value
*$GetProp$([https://raw.githubusercontent.com/powerlord/tf2-data/master/netprops.txt send prop] name) <string>
**parameter format: entity|input|default value
**example: !activator|$DisplayTextCenter|def
**Trigger the input of an entity, with send prop as a paramer (default value if not found)
=== Outputs ===
* $OnUser5-8 <string>
** Called when $FireUser5-8 input is used
* $OnKilled
** Fired when the entity is killed. The calling entity no longer exist and cannot be accessed
Please note that all contributions to SigMod are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see SigMod:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)