This article's documentation is for anything that uses the Source engine. Click here for more information.

$keyvalues: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Added information about keyvalues that the Jeep, Airboat and other vehicles uses)
No edit summary
 
(10 intermediate revisions by 8 users not shown)
Line 1: Line 1:
The [[$keyvalues]] [[QC command]] embeds a block of arbitrary [[keyvalue]]s into the .mdl file.
{{LanguageBar}}
{{this is a|QC command|name=$keyvalues}} It embeds a block of arbitrary [[keyvalue]]s into the .mdl file.


{{note|Since the values are arbitrary, [[studiomdl]] can't check that they are correct when it compiles the model.}}
{{note|Since the values are arbitrary, [[studiomdl]] can't check that they are correct when it compiles the model.}}
Line 16: Line 17:
See [[:Category:QC Keyvalues]] for a complete list.
See [[:Category:QC Keyvalues]] for a complete list.


;<code>[[Prop Data|prop_data]]</code>
;<code>[[prop_data]]</code>
:Defines various properties for models for use in Valve's prop_* entities - usually [[prop_physics]].
:Defines various properties for models for use in Valve's prop_* entities - usually {{ent|prop_physics}}.
;<code>[[physgun_interactions]]</code>
;<code>[[physgun_interactions]]</code>
:Defines any non-standard interactions with the [[Gravity Gun]].
:Defines any non-standard interactions with the [[Gravity Gun]].
;<code>[[Particles On Models|particles]]</code>
;<code>[[Particles On Models|particles]]</code>
:Attaches [[:Category:Particle System|particles]].
:Attaches [[:Category:Particle System|particles]].
; <code>[[prop_door_rotating#Custom door models|door_options]]</code>
; <code>[[prop_door_rotating#Custom Door Models|door_options]]</code>
: Configures the model for use with [[prop_door_rotating]].
: Configures the model for use with {{ent|prop_door_rotating}}.
;<code>vehicle_entry</code>
;<code>vehicle_entry</code>
:Positions where the player will enter into a [[vehicle]], where the player's camera will blend into the vehicle's camera position ( eyes ). It is defined by [[Attachments|attachments]] with a number to indicate the hitbox group, set previously on any hitbox within a [[$hboxset|hitbox set]] called "entryboxes".
:Positions where the player will enter into a [[vehicle]], where the player's camera will blend into the vehicle's camera position ( eyes ). It is defined by [[attachments]] with a number to indicate the hitbox group, set previously on any hitbox within a [[$hboxset|hitbox set]] called "entryboxes".
;<code>vehicle_exit</code>
;<code>vehicle_exit</code>
:Positions where the player will exit from a vehicle. Defined by the name of an attachment and if is intended to be used while the vehicle is upright ( "upright" ) or upside down ( "upsidedown" ).
:Positions where the player will exit from a vehicle. Defined by the name of an attachment and if is intended to be used while the vehicle is upright ( "upright" ) or upside down ( "upsidedown" ).
;<code>vehicle_escape_exit</code>
;<code>vehicle_escape_exit</code>
:Positions where the player will exit from a vehicle in case there are problems ( underwater, upside down, other events... ). Same definitions as in vehicle_exit.
:Positions where the player will exit from a vehicle in case there are problems ( underwater, upside down, other events... ). Same definitions as in vehicle_exit.
;<code>AddedAmbientScale <[[int]]></code>
:Softens the ambient lighting received by this model. Present in L4D2 infected.


== Example ==
== Example ==


  [[$keyvalues]]
  $keyvalues
  {
  {
  [[Prop Data|prop_data]]
  [[prop_data]]
  {
  {
  base              Wooden.Small
  base              Wooden.Small
Line 57: Line 60:




  [[$keyvalues]]
  $keyvalues
  {
  {
   vehicle_entry
   vehicle_entry
Line 84: Line 87:
   }
   }
  }
  }
[[Category:QC Commands|keyvalues]]

Latest revision as of 21:24, 18 July 2025

English (en)中文 (zh)Translate (Translate)

$keyvalues is a QC command available in all Source Source games. It embeds a block of arbitrary keyvalues into the .mdl file.

Note.pngNote:Since the values are arbitrary, studiomdl can't check that they are correct when it compiles the model.

Programmers can access the $keyvalues block with modelinfo->GetModelKeyValueText(GetModel()) and the KeyValues class.

Syntax

$keyvalues
{
    keyvalue data
}

Common KeyValues

See Category:QC Keyvalues for a complete list.

prop_data
Defines various properties for models for use in Valve's prop_* entities - usually prop_physics.
physgun_interactions
Defines any non-standard interactions with the Gravity Gun.
particles
Attaches particles.
door_options
Configures the model for use with prop_door_rotating.
vehicle_entry
Positions where the player will enter into a vehicle, where the player's camera will blend into the vehicle's camera position ( eyes ). It is defined by attachments with a number to indicate the hitbox group, set previously on any hitbox within a hitbox set called "entryboxes".
vehicle_exit
Positions where the player will exit from a vehicle. Defined by the name of an attachment and if is intended to be used while the vehicle is upright ( "upright" ) or upside down ( "upsidedown" ).
vehicle_escape_exit
Positions where the player will exit from a vehicle in case there are problems ( underwater, upside down, other events... ). Same definitions as in vehicle_exit.
AddedAmbientScale <int>
Softens the ambient lighting received by this model. Present in L4D2 infected.

Example

$keyvalues
{
	prop_data
	{
		base              Wooden.Small
		dmg.bullets       0
		explosive_damage  100
		explosive_radius  100
	}
	physgun_interactions
	{
		onfirstimpact 	break
		onfirstimpact 	paintsplat
		onlaunch 	spin_zaxis
		onbreak 	explode_fire
	}

	// hud_name has been made up as an example of a one-dimensional custom KV.
	// (If you were being picky, you might point out that it ought to be localised ...)

	hud_name "Rubber chicken with a pulley in the middle"
}


$keyvalues
{
 vehicle_entry
 {
  "enter1" "1"
  "enter2" "2"
  "enter3" "3"
  "enter4" "1"
  "enter5" "2"
  "enter6" "3"
  "enter7" "1"
 }
 vehicle_exit
 {
  "exit3" "upright"
  "exit4" "upright"
  "exit6" "upsidedown"
 }
 vehicle_escape_exit
 {
  "exit1" "upright"
  "exit2" "upright"
  "exit5" "upsidedown"
  "exit7" "upright"
  "exit8" "upsidedown"
 }
}