Additions to existing entities: Difference between revisions
No edit summary  | 
				No edit summary  | 
				||
| Line 411: | Line 411: | ||
*$SetCollisionFilter <entity>  | *$SetCollisionFilter <entity>  | ||
**Sets custom collision filter entity. If the filter passes, the entity collides as usual, otherwise the colliding entities pass through  | **Sets custom collision filter entity. If the filter passes, the entity collides as usual, otherwise the colliding entities pass through  | ||
*$HideTo <player>  | |||
**Hides this entity to specific player  | |||
*$ShowTo <player>  | |||
**Shows previously hidden entity to specific player  | |||
*$HideToAll  | |||
**Hides this entity to all players by default  | |||
*$ShowToAll  | |||
**Shows previo<u>usly hidden entity to all players</u>  | |||
===Outputs===  | ===Outputs===  | ||
Revision as of 20:51, 22 May 2022
Targeting
- You can target parent of specified entity by adding @p@. @p@!activator would target parent of the activator entity
 - You can target children of specified entity by adding @c@ prefix. @c@!activator would target children of the activator entity
 - Target all entities in a box by adding @bbxmin ymin zmin xmax ymax zmax@ prefix. @bb-100 -100 -100 100 100 100@prop_dynamic would target prop_dynamic entities inside -100 -100 -100 100 100 100 box
 - Target entities matching the filter by adding @f@ prefix. @f@filtername@entityname would target all entityname that pass the filtername filter
 - Target entity from datamap/sendprop by adding @e@ prefix. @e@m_hOwnerEntity@!activator would target the owner entity of !activator
 
Various
- You can execute an input immediately rather than with at least 1 tick delay by setting input delay to -1. This allows you to access !activator of $OnKilled entity
 
Expressions
Expressions can be used to calculate input parameters without the need of extra logic entities
point_viewcontrol
Inputs
- $EnableAll
- Enable the camera for all players on the map. Spawnflag [512] may not work properly. (Start At Player, Interruptable by Player)
 
 - $DisableAll
- Disable the camera for all players on the map
 
 - $SetTarget <entity>
- Set current target to entity
 
 
Sentry Gun (obj_sentrygun)
Spawnflags
- [64] - Spawn as mini-sentry
 
Weapon Mimic (tf_point_weapon_mimic)
- Fired projectiles can have their team assigned with teamnum keyvalue (2 for RED and 3 for BLU). Previously all fired projectiles always belonged to the BLU team
 - If the player owner is set with $SetOwner or $InheritOwner, fired projectiles are assigned to the owner
 - Fired stickybombs are automatically removed if the mimic is removed
 - Added projectile type 4 - Bullet. SpeedMax keyvalue determines max distance (infinite if not specified). SplashRadius determines knockback force
 
Keyvalues
- $preventshootparent <1/0>
- If set, bullets fired from the mimic cannot hit the parent entity
 
 - $dmgtype <int>
- Set custom damage type
 
 - $killicon <string>
- Set custom kill icon
 
 
Outputs
- $OnFire
- Called when the projectile is being fired, with the projectile as 
!activator 
 - Called when the projectile is being fired, with the projectile as 
 
Spawnflags
- [4] - Fire "OnUser4" output when projectile is fired, with the projectile as 
!activator. 
Tank (tank_boss)
- When tank starts deploying, and there is at least one PointTemplate assigned to it, "OnUser4" output is activated
 
Outputs
- $OnStartDeploy
- Fired when the tank is deploying the bomb
 
 
Medic shield (entity_medigun_shield)
Spawnflags
- [1] - Don't expire and don't block LOS
 - [2] - Use the LV2 Shield model
 
logic_case
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.
Example point template usage:
Formatter
{
	OnSpawnOutput
	{
		Target "formattest"
		Action "$Format"
		Delay 1
	}
	logic_case
	{
		"targetname" "formattest"
		"case16" "You have % out of % coins left. % %% done" // Formatter string
		"case01" "6" //First argument
		"case02" "12" //Second argument
		"case03" "50" //Third argument
		"ondefault" "player,$DisplayTextCenter,,0,-1"
	}
}
This would display "You have 6 out of 12 coins left. 50 % done" to all players
Menu
You can use $DisplayMenu input to display a menu for the player, up to 15 entries
Menu
{
	OnSpawnOutput
	{
		Target "menutest"
		Action "$DisplayMenu"
		Delay 1
		Param "player"
	}
	logic_case
	{
		"targetname" "menutest"
		"case16" "Menu title|30|Cancel" // Title, menu duration (0 for infinite), display optional cancel button
		"case01" "option1" //First argument
		"case02" "!disabled option" //Second argument, disabled
		"case03" "suicide" //Third argument
		"oncase03" "!activator,sethealth,0,0,-1" // Selected 3rd option
		"ondefault" "player,$DisplayTextCenter,he,0,-1" // No option selected
	}
}
Inputs
- $FormatString <string>
- Sets formatting string, then fires OnDefault output, with formatted string as parameter
 
 - $FormatStringNoFire <string>
- Sets formatting string
 
 - $FormatInput1 <string>
- Sets formatting input argument 1, then fires OnDefault output, with formatted string as parameter
 
 - $FormatInput2-15 <string>
- 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
Inputs
- $StopVO <string>
- Stops sound that was started with PlayVO input
 
 
- $StopVORed <string>
- Stops sound that was started with PlayVORed input
 
 
- $StopVOBlue <string>
- Stops sound that was started with PlayVOBlue input
 
 - $SetBossHealthPercentage <float>
- Set Halloween boss bar percentage to a value between 0 and 1. 0 hides the health bar, any other value makes the bar appear
 
 - $SetBossState <int>
- If set to 1, makes the health bar green, like if Merasmus is hiding. If set to 0, the bar goes back to normal
 
 - $AddCurrencyGlobal <int>
- Add currency to all players
 
 
player
Inputs
- $AllowClassAnimations <0|1>
- Allow class animations instead of using refpose when UseCustomModel input is fired to change player model
 
 - $SwitchClass <string>
- Switch player class. The parameter can be either a class name (heavyweapons for example), or class index
 
 - $SwitchClassInPlace <string>
- Switch player class in current position. The parameter can be either a class name (heavyweapons for example), or class index
 
 - $ForceRespawn
- The player instantly respawns
 
 - $ForceRespawnDead
- The player instantly respawns, but only if they are dead
 
 - $DisplayTextCenter <string>
- Display text in the middle of the screen
 
 - $DisplayTextChat <string>
- Display text to the player's chat
 
 - $DisplayTextHint <string>
- Display yellow text in the bottom part of the screen and play a sound cue
 
 - $Suicide
- Kill the player
 
 - $ChangeAttributes <string>
- If the player is a bot, this can be used to change active EventChangeAttributes
 
 - $RollCommonSpell
- Roll common spell
 
 - $SetSpell <string>
- Set player current spell to one of the following:
- Fireball
 - Ball O' Bats
 - Healing Aura
 - Pumpkin MIRV
 - Superjump
 - Invisibility
 - Teleport
 - Tesla Bolt
 - Minify
 - Meteor Shower
 - Summon Monoculus
 - Summon Skeletons
 
 
 - Set player current spell to one of the following:
 - $AddSpell <string>
- Adds spell to the number of spells. If the spell is different than the current one, it replaces the spell. The parameter is the same as in $SetSpell
 
 - $AddCond <int> [int]
- Add condition to player. If a second argument is present, the condition will only run for a specified duration
 
 - $RemoveCond <int>
- Remove condition from player
 
 - $AddPlayerAttribute <string>
- Add attribute to player, the parameter should be passed in this way: attribute|value. Example: "move speed bonus|1.2"
 
 - $RemovePlayerAttribute <string>
- Remove attribute from player. Example: "move speed bonus"
 
 - $GetPlayerAttribute <string>
- Sends attribute from player as the parameter.
 - parameter format: attribute|entity|input|default value
 - example: fire rate bonus|!activator|$DisplayTextChat|0
 
 - $AddItemAttribute <string>
- Add attribute to item in slot, the parameter should be passed in this way: attribute|value|slot or item name. Example "damage bonus|2|0" adds 100% damage bonus to primary weapon, "damage penalty|0.5" adds 50% damage penalty to active weapon
 
 - $RemoveItemAttribute <string>
- Remove attribute from item in slot, the parameter should be passed in this way: attribute|slot or item name. Example "damage bonus" removes damage bonus from primary weapon, "damage penalty" removes damage penalty from active weapon
 
 - $GetItemAttribute <string>
- Sends item attribute value as the parameter.
 - parameter format: slot or item name|attribute|entity|input|default value
 - example to grab primary slot item's fire rate bonus value: 0|fire rate bonus|!activator|$DisplayTextChat|0
 - You can also type -1 for active weapon or the item name.
 
 - $PlaySoundToSelf <string>
- Play sound to the player
 
 - $IgnitePlayerDuration <float>
- Ignite the player for a specified duration in seconds
 
 - $WeaponSwitchSlot <int>
- Forcibly switches to weapon in slot
 
 - $WeaponStripSlot <int>
- Removes weapon from a slot (-1 = current slot)
 
 - $GiveItem <string>
- Gives an item to the player
 
 - $AddCurrency <int>
- Add currency to the player
 
 - $RemoveCurrency <int>
- Remove currency from the player
 
 - $SetCurrency <int>
- Set currency to specified value
 
 - $CurrencyOutputX <string>
- Fires input if player currency is above specified value (the X in input name), the attribute should be passed in this way: target,input,parameter.
 
 - $CurrencyInvertOutputX<string>
- Fires input if player currency is below specified value(the X in input name), the attribute should be passed in this way: target,input,parameter
 
 - $DropItem <int>
- Drop item in slot (-1 = current slot)
 
 - $RemoveItem <string>
- Remove item with a name
 
 - $Regenerate
- Regenerate the player, as if touching resupply cabinet
 
 - $RefillAmmo
- Restore player ammo
 
 - $PlaySequence <string>
- Play animation sequence with specified name
 
 - $ResetInventory
- Reset loadout items, as if touching the resupply cabinet
 
 - $BotCommand <string>
- Forces the bot to perform an action. Examples:
- interrupt_action -posent targetmove -lookposent targetlook -duration 10 -waituntildone -ondoneattributes AfterDone
- Move to entity targetmove, while looking at entity targetlook. Wait 10 seconds after moving to the target entity, then ChangeAttributes to AfterDone
 
 - interrupt_action -posent targetkill -lookposent targetkill -killlook
- Move to entity targetkill and try to destroy it
 
 - interrupt_action -pos 0 0 0 -lookpos 100 100 100
- Move to position 0 0 0 while looking at position 100 100 100
 
 - despawn
- Forces to bot to despawn
 
 - taunt
- Forces the bot to taunt
 
 - cloak
- Forces the spy bot to cloak
 
 - uncloak
- Forces the spy bot to uncloak
 
 - disguise
- Forces the spy bot to disguise as something
 
 - build sentry at nearest sentry hint
 
 - interrupt_action -posent targetmove -lookposent targetlook -duration 10 -waituntildone -ondoneattributes AfterDone
 
 - Forces the bot to perform an action. Examples:
 
trigger_hurt
If entity owner is set with $SetOwner or $InheritOwner, the owner will become the damage inflictor
Filter entities
The server will no longer crash if the activator entity got removed the time TestActivator is called
Inputs
- $TestEntity <entity>
- Test any entity, rather than only the !activator
 
 
Trigger entities
The server will no longer crash if the caller entity got removed the time StartTouch or EndTouch is called
Inputs
- $StartTouchEntity <entity>
- StartTouch any entity, rather than only the !caller
 
 - $EndTouchEntity <entity>
- EndTouch any entity, rather than only the !caller
 
 
game_ui
The server will no longer crash if the player using the entity disconnected from the server
All entities
Keyvalues
- $modules <string>
- Comma separated list of modules to attach to the entity
 
 
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. Does not support negative values.
 
 - $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)
 
 - $GetEntIndex <string>
- parameter format: entity|input
 - example: !activator|$DisplayTextCenter
 - Triggers the input of an entity, with entity index as parameter
 
 - $RemoveOutput <string>
- remove outputs with given name
 
 - $CancelPending
- Remove all pending inputs this entity is going to fire
 
 - $SetForwardVelocity <float>
- Set forward velocity of an entity, does not work on every entity
 
 - $FaceEntity <entity>
- Rotate the entity so that it faces the target entity
 
 - $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$(datamap prop name) <string>
- Set datamap property to specified value
 
 - $GetData$(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$(send prop name)[$(array)] <string>
- Set send property to specified value. Can also set arrays.
 - example without array: $SetProp$m_bInUpgradeZone
- sets player state if player is visiting an upgrade station
 
 - example with array: $SetProp$m_iAmmo$3
- sets player ammo type array to 3, which is metal carried
 
 
 - $GetProp$(send prop name)[$(array)] <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)
 
 - $SetClientProp$(send prop name)[$(array)] <string>
- Set fake send prop value only seen by players. Can also set arrays. Useful for setting fake mission name or wave number, as $SetProp would trigger unwanted behavior
 - example without array: $SetClientProp$m_bInUpgradeZone
- sets player state if player is visiting an upgrade station
 
 - example with array: $SetClientProp$m_iAmmo$3
- sets player ammo type array to 3, which is metal carried
 
 
 - $ResetClientProp$(send prop name)[$(array)]
- Reset fake prop value set by $SetClientProp
 
 - $AddModule <string>
- Add entity module by name
 
 - $RemoveModule <string>
- Remove entity module by name
 
 - $SetCollisionFilter <entity>
- Sets custom collision filter entity. If the filter passes, the entity collides as usual, otherwise the colliding entities pass through
 
 - $HideTo <player>
- Hides this entity to specific player
 
 - $ShowTo <player>
- Shows previously hidden entity to specific player
 
 - $HideToAll
- Hides this entity to all players by default
 
 - $ShowToAll
- Shows previously hidden entity to all players
 
 
Outputs
- $OnUser5-8 <string>
- Called when $FireUser5-8 input is used
 
 - $OnKilled
- Fired when the entity is killed (removed from the world). The calling entity no longer exist and cannot be accessed unless input delay is set to -1
 
 - $OnDamageReceived <int>
- Fired when the entity is damaged. Parameter is the damage received by the entity. !activator is the damage inflictor
 
 - $OnDamageBlocked <int>
- Fired when damage was blocked by the entity. Parameter is the amount of damage blocked by the entity. !activator is the damage inflictor
 
 - $OnDeath <int>
- Fired when the entity died. Parameter is the damage of the fatal blow. !activator is the damage inflictor