QC File Glossary
Here you can see all .qc file commands. Need more information on what qc files are? Check out the
tutorial section.
Dashed underlinesThat's right, dashed underlines just like this. mean a pop-up note is attached to the word, hover your mouse over it to read it.
Regarding Outlines of Use; brackets and their grey contents should not be used as shown. They should be replaced with appropriate values that can be seen from the 'Possible Values' sections. (Should the 'values' also be in grey, then just do as the 'values' instruct.) Quotation marks and file extensions (.smd, etc.) aren't required on all commands, but they help to keep the .qc file tidy, which in-turn helps prevent any possible mistakes.
QC files are merely .txt files that have had their file extension renamed to become a .qc file. These QC files consist of many "commands", which define almost everything about a model, such as; its folder structure and name, its physics properties, whether it has animations, and much, much more. Do not worry about placing capital letters in command names, as they are not case-sensitive. Brackets (and the like) however, are very sensitive, so be careful with those.
This is what a common QC used on a "prop" model will look like:
Example
$cd "C:\Documents and Settings\Marc\Desktop\Compiling Related\Raptor"
$modelname "katharsmodels\raptor\raptor.mdl"
$cdmaterials "katharsmodels\raptor\"
$scale 22
$upaxis "z"
$surfaceprop "metal"
$body "studio" "raptor_ref.smd"
$sequence idle "raptor_ref" fps 30.00
$collisionmodel "raptor_phy.smd" {
$concave
$mass 1800
}
This is what a common QC used on a "ragdoll" model will look like:
Example
$cd "C:\Documents and Settings\Marc\Desktop\Jeff Wayne Tripod"
$modelname "katharsmodels\jeffwayne_tripod\jeffwayne_tripod.mdl"
$scale 32
$body "studio" "tripod_ref.smd"
$surfaceprop "metal"
$cdmaterials "katharsmodels\jeffwayne_tripod\"
$upaxis "z"
$sequence idle "tripod_ref" fps 30.00
$collisionjoints "tripod_phy.smd" {
$concave
$mass 10000000
$inertia 30.00
$damping 0.0
$drag 0.01
$rotdamping 0.0
$rootbone "root"
$jointcollide "root" "r_knee"
$jointcollide "root" "l_knee"
$jointcollide "root" "b_knee"
$jointcollide "root" "r_ankle"
$jointcollide "root" "l_ankle"
$jointcollide "root" "b_ankle"
$jointcollide "root" "r_arm3"
$jointcollide "root" "l_arm3"
$jointcollide "root" "b_arm3"
$jointcollide "r_arm3" "b_arm3"
$jointcollide "r_arm3" "l_arm3"
$jointcollide "l_arm3" "b_arm3"
$jointcollide "l_knee" "r_knee"
$jointcollide "l_knee" "b_knee"
$jointcollide "r_knee" "b_knee"
$jointcollide "l_ankle" "r_ankle"
$jointcollide "l_ankle" "b_ankle"
$jointcollide "r_ankle" "b_ankle"
$jointcollide "r_knee" "l_ankle"
$jointcollide "r_knee" "b_ankle"
$jointcollide "l_knee" "r_ankle"
$jointcollide "l_knee" "b_ankle"
$jointcollide "b_knee" "r_ankle"
$jointcollide "b_knee" "l_ankle"
$jointconstrain "l_arm1" x limit -48.00 58.00 0.00
$jointconstrain "l_arm1" y limit 0.00 0.00 0.00
$jointconstrain "l_arm1" z limit -35.00 70.00 0.00
$jointconstrain "l_arm2" x limit -10.00 10.00 0.00
$jointconstrain "l_arm2" y limit -18.00 85.00 0.00
$jointconstrain "l_arm2" z limit -35.00 77.00 0.00
$jointconstrain "l_arm3" x limit -50.00 65.00 0.00
$jointconstrain "l_arm3" y limit 0.00 0.00 0.00
$jointconstrain "l_arm3" z limit -65.00 70.00 0.00
$jointconstrain "r_arm1" x limit -48.00 58.00 0.00
$jointconstrain "r_arm1" y limit 0.00 0.00 0.00
$jointconstrain "r_arm1" z limit -35.00 70.00 0.00
$jointconstrain "r_arm2" x limit -10.00 10.00 0.00
$jointconstrain "r_arm2" y limit -18.00 85.00 0.00
$jointconstrain "r_arm2" z limit -35.00 77.00 0.00
$jointconstrain "r_arm3" x limit -50.00 65.00 0.00
$jointconstrain "r_arm3" y limit 0.00 0.00 0.00
$jointconstrain "r_arm3" z limit -65.00 70.00 0.00
$jointconstrain "b_arm1" x limit -30.00 30.00 0.00
$jointconstrain "b_arm1" y limit 0.00 0.00 0.00
$jointconstrain "b_arm1" z limit -40.00 40.00 0.00
$jointconstrain "b_arm2" x limit -60.00 60.00 0.00
$jointconstrain "b_arm2" y limit 0.00 0.00 0.00
$jointconstrain "b_arm2" z limit -60.00 60.00 0.00
$jointconstrain "b_arm3" x limit -20.00 20.00 0.00
$jointconstrain "b_arm3" y limit 0.00 0.00 0.00
$jointconstrain "b_arm3" z limit -20.00 20.00 0.00
$jointconstrain "l_thigh" x limit 0.00 0.00 0.00
$jointconstrain "l_thigh" y limit -25.00 25.00 0.00
$jointconstrain "l_thigh" z limit -39.00 46.00 0.00
$jointconstrain "l_knee" x limit 0.00 0.00 0.00
$jointconstrain "l_knee" y limit 0.00 0.00 0.00
$jointconstrain "l_knee" z limit -20.00 77.00 0.00
$jointconstrain "l_ankle" x limit -52.00 70.00 0.00
$jointconstrain "l_ankle" y limit 0.00 0.00 0.00
$jointconstrain "l_ankle" z limit -44.00 70.00 0.00
$jointconstrain "r_thigh" x limit 0.00 0.00 0.00
$jointconstrain "r_thigh" y limit -25.00 25.00 0.00
$jointconstrain "r_thigh" z limit -46.00 39.00 0.00
$jointconstrain "r_knee" x limit 0.00 0.00 0.00
$jointconstrain "r_knee" y limit 0.00 0.00 0.00
$jointconstrain "r_knee" z limit -77.00 20.00 0.00
$jointconstrain "r_ankle" x limit -52.00 70.00 0.00
$jointconstrain "r_ankle" y limit 0.00 0.00 0.00
$jointconstrain "r_ankle" z limit -44.00 70.00 0.00
$jointconstrain "b_thigh" x limit -46.00 39.00 0.00
$jointconstrain "b_thigh" y limit -25.00 25.00 0.00
$jointconstrain "b_thigh" z limit 0.00 0.00 0.00
$jointconstrain "b_knee" x limit -20.00 77.00 0.00
$jointconstrain "b_knee" y limit 0.00 0.00 0.00
$jointconstrain "b_knee" z limit 0.00 0.00 0.00
$jointconstrain "b_ankle" x limit -52.00 70.00 0.00
$jointconstrain "b_ankle" y limit 0.00 0.00 0.00
$jointconstrain "b_ankle" z limit -44.00 70.00 0.00
$jointconstrain "heatray" x limit -8.00 44.00 0.00
$jointconstrain "heatray" y limit -30.00 30.00 0.00
$jointconstrain "heatray" z limit 0.00 0.00 0.00
}
QC Commands
HL2 - Standard:
$alwayscollapse
About:
Outline of Use:
$alwayscollapse "(joint-name)"
Possible Values:
Examples of Use:
$ambientboost
About:
Outline of Use:
Possible Values:
Examples of Use:
$animation
About:
Outline of Use:
Possible Values:
Examples of Use:
$animblocksize
About:
Outline of Use:
Possible Values:
Examples of Use:
$append
About:
Outline of Use:
Possible Values:
Examples of Use:
$attachment
$autocenter
About:
Outline of Use:
Possible Values:
Examples of Use:
$body
Example #2
$cd "C:\Documents and Settings\Marc\Desktop\decompile"
$modelname "Police.mdl"
$model "police" "Police_reference.smd" {
flexfile "NULL.vta"
flex "NULL" frame 10
flexcontroller "phoneme" "NULL" "range" 0 1
flexfile "right_lid_raiser.vta"
flex "right_lid_raiser" frame 10
flexcontroller "eyelid" "right_lid_raiser" "range" 0 1
flexfile "left_lid_raiser.vta"
flex "left_lid_raiser" frame 10
flexcontroller "eyelid" "left_lid_raiser" "range" 0 1
flexfile "right_lid_tightener.vta"
flex "right_lid_tightener" frame 10
flexcontroller "eyelid" "right_lid_tightener" "range" 0 1
flexfile "left_lid_tightener.vta"
flex "left_lid_tightener" frame 10
flexcontroller "eyelid" "left_lid_tightener" "range" 0 1
flexfile "right_lid_droop.vta"
flex "right_lid_droop" frame 10
flexcontroller "eyelid" "right_lid_droop" "range" 0 1
flexfile "left_lid_droop.vta"
flex "left_lid_droop" frame 10
flexcontroller "eyelid" "left_lid_droop" "range" 0 1
eyeball righteye "ValveBiped.Bip01_Head1" -1.17 -2.15 67.47 "eyeball_r" 1.00 4 "grn_pupil_r" 0.73
eyeball lefteye "ValveBiped.Bip01_Head1" 1.18 -2.15 67.47 "eyeball_l" 1.00 -4 "grn_pupil_l" 0.73
mouth 0 "mouth" ValveBiped.Bip01_Head1 0.000 1.000 0.000
%right_lid_raiser = right_lid_raiser
%left_lid_raiser = left_lid_raiser
%right_lid_tightener = right_lid_tightener
%left_lid_tightener = left_lid_tightener
%right_lid_droop = right_lid_droop
%left_lid_droop = left_lid_droop
}
$body "glasses" "glasses_ref.smd"
$cdmaterials "models\Police\"
$cdmaterials "models\manhack\"
$hboxset "default"
$hbox 1 "ValveBiped.Bip01_Head1" -3.500 -7.710 -3.850 7.500 5.710 3.960
$hbox 4 "ValveBiped.Bip01_L_UpperArm" 0.000 -3.370 -3.700 12.510 3.400 2.410
$hbox 4 "ValveBiped.Bip01_L_Forearm" -0.900 -3.490 -3.170 9.490 3.100 2.410
$hbox 4 "ValveBiped.Bip01_L_Hand" -1.110 -1.890 -2.380 5.720 1.460 2.340
$hbox 5 "ValveBiped.Bip01_R_UpperArm" 0.000 -3.370 -2.370 12.390 3.410 3.800
$hbox 5 "ValveBiped.Bip01_R_Forearm" -0.990 -3.500 -2.370 9.330 3.100 3.270
$hbox 5 "ValveBiped.Bip01_R_Hand" -1.190 -1.860 -2.330 5.310 1.940 2.610
$hbox 6 "ValveBiped.Bip01_L_Thigh" 0.000 -6.000 -3.550 17.850 4.000 4.450
$hbox 6 "ValveBiped.Bip01_L_Calf" 0.000 -3.510 -3.280 15.640 3.490 2.720
$hbox 6 "ValveBiped.Bip01_L_Foot" -1.070 -2.000 -2.840 5.040 5.000 2.160
$hbox 6 "ValveBiped.Bip01_L_Toe0" -0.500 -3.000 -2.190 2.500 0.000 2.460
$hbox 7 "ValveBiped.Bip01_R_Thigh" 0.000 -6.000 -4.550 17.850 4.000 3.400
$hbox 7 "ValveBiped.Bip01_R_Calf" 0.000 -3.510 -2.820 15.640 3.490 3.180
$hbox 7 "ValveBiped.Bip01_R_Foot" -1.060 -2.010 -2.280 5.050 4.990 2.720
$hbox 7 "ValveBiped.Bip01_R_Toe0" -0.500 -3.000 -2.600 2.500 0.000 2.100
$hbox 3 "ValveBiped.Bip01_Pelvis" -7.500 -6.000 -6.000 7.500 6.000 6.000
$hbox 2 "ValveBiped.Bip01_Spine2" -6.500 -2.500 -7.000 10.500 7.500 7.000
$attachment "eyes" "ValveBiped.Bip01_Head1" 3.34 -5.28 -0.00 rotate 0.00 -80.10 -90.00
$attachment "anim_attachment_RH" "ValveBiped.Anim_Attachment_RH" -0.00 -0.00 -0.00 rotate -90.00 -90.00 0.00
$attachment "anim_attachment_LH" "ValveBiped.Anim_Attachment_LH" -0.00 -0.00 0.00 rotate -90.00 -90.00 0.00
$attachment "anim_attachment_head" "ValveBiped.Bip01_Head1" -0.00 0.00 0.00 rotate -90.00 -90.00 0.00
$includemodel "Police_animations.mdl"
$includemodel "Police_ss.mdl"
$surfaceprop "flesh"
$eyeposition 0.000 0.000 72.000
$illumposition -1.866 0.053 36.320
$sequence ragdoll "ragdoll" ACT_DIERAGDOLL 1 fps 30.00
$ikchain rhand ValveBiped.Bip01_R_Hand knee 0.707 0.707 0.000
$ikchain lhand ValveBiped.Bip01_L_Hand knee 0.707 0.707 0.000
$ikchain rfoot ValveBiped.Bip01_R_Foot knee 0.707 -0.707 0.000
$ikchain lfoot ValveBiped.Bip01_L_Foot knee 0.707 -0.707 0.000
$collisionjoints "phymodel.smd" {
$mass 90.0
$inertia 2.00
$damping 0.01
$rotdamping 0.40
$rootbone "valvebiped.bip01_pelvis"
$jointmerge "ValveBiped.Bip01_Pelvis" "ValveBiped.Bip01_Spine1"
$jointconstrain "valvebiped.bip01_spine2" x limit -48.00 48.00 0.20
$jointconstrain "valvebiped.bip01_spine2" y limit -25.00 25.00 0.20
$jointconstrain "valvebiped.bip01_spine2" z limit -25.00 50.00 0.20
$jointconstrain "valvebiped.bip01_r_upperarm" x limit -50.00 57.00 0.20
$jointconstrain "valvebiped.bip01_r_upperarm" y limit -19.00 102.00 0.20
$jointconstrain "valvebiped.bip01_r_upperarm" z limit -93.00 30.00 0.20
$jointconstrain "valvebiped.bip01_l_upperarm" x limit -50.00 57.00 0.20
$jointconstrain "valvebiped.bip01_l_upperarm" y limit -102.00 19.00 0.20
$jointconstrain "valvebiped.bip01_l_upperarm" z limit -93.00 30.00 0.20
$jointmassbias "valvebiped.bip01_l_forearm" 2.00
$jointconstrain "valvebiped.bip01_l_forearm" x limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_l_forearm" y limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_l_forearm" z limit -120.00 4.00 0.20
$jointmassbias "valvebiped.bip01_l_hand" 4.00
$jointconstrain "valvebiped.bip01_l_hand" x limit -60.00 60.00 0.20
$jointconstrain "valvebiped.bip01_l_hand" y limit -30.00 30.00 0.20
$jointconstrain "valvebiped.bip01_l_hand" z limit -57.00 70.00 0.20
$jointmassbias "valvebiped.bip01_r_forearm" 2.00
$jointconstrain "valvebiped.bip01_r_forearm" x limit 0.00 0.00 0.20
$jointconstrain "valvebiped.bip01_r_forearm" y limit 0.00 0.00 0.20
$jointconstrain "valvebiped.bip01_r_forearm" z limit -120.00 4.00 0.20
$jointmassbias "valvebiped.bip01_r_hand" 4.00
$jointconstrain "valvebiped.bip01_r_hand" x limit -60.00 60.00 0.20
$jointconstrain "valvebiped.bip01_r_hand" y limit -30.00 30.00 0.20
$jointconstrain "valvebiped.bip01_r_hand" z limit -57.00 70.00 0.20
$jointmassbias "valvebiped.bip01_head1" 2.00
$jointconstrain "valvebiped.bip01_head1" x limit -20.00 20.00 0.20
$jointconstrain "valvebiped.bip01_head1" y limit -25.00 25.00 0.20
$jointconstrain "valvebiped.bip01_head1" z limit -13.00 30.00 0.20
$animatedfriction 1.000 1000.000 0.800 0.500 0.000
}
$bodygroup
About:
Outline of Use:
Possible Values:
Examples of Use:
$bonemerge
About:
Outline of Use:
Possible Values:
Examples of Use:
$bonesaveframe
About:
Outline of Use:
Possible Values:
Examples of Use:
$calctransitions
About:
Outline of Use:
Possible Values:
Examples of Use:
$cbox
About:
Outline of Use:
Possible Values:
Examples of Use:
$cd
$cdmaterials
$cliptotextures
About:
Outline of Use:
Possible Values:
Examples of Use:
$cmdlist
About:
Outline of Use:
Possible Values:
Examples of Use:
$collapsebones
About:
Collapses/removes all bones in the model.
Outline of Use:
$collapsebones
Possible Values:
Examples of Use:
$collapsebonesaggressive
About:
Collapses/removes all bones in the model.
Outline of Use:
$collapsebones
Possible Values:
Examples of Use:
$collisionjoints
About:
Incompatible With:
"$collisionmodel".
Outline of Use:
$collisionjoints "(collision-smd)" { "(sub-command)" "(sub-command's-value)" }
Possible Values:
reference-smd = an SMD name
sub-command = See "Sub Commands"
sub-command's-value = See "Sub Commands"
Sub Commands:
-
$animatedfriction
About:
Outline of Use:
Possible Values:
Examples of Use:
-
$automass
About:
I'm not a huge fan of this one, as I prefer the flexibility and precision of the $mass command. I don't know much about it, but from what I can tell it works out the volume of your collision model, then adds/subtracts from this value depending on the $surfaceprop/prop_data base type specified.
Outline of Use:
$automass
Possible Values:
N/A (no values are used)
Examples of Use:
-
$concave
About:
This command should be specified if you have made a custom collision model and you want it to be 'concave', rather than convex. (A default convex bounding box would be "made" by the compiler, even if a concave collision was used unless this command is declared.)
If you are unsure of the differences between concave and convex, then see here for an example. (Just imagine the 'hole' in 3D.)
Outline of Use:
$concave
Possible Values:
N/A (no values are used)
Examples of Use:
-
$controller
About:
Outline of Use:
Possible Values:
Examples of Use:
-
$damping
About:
As the word 'damping' suggests, this command affects how the model will react when hitting something. (among other things, probably) For example, a simple mechanical object would likely have a value of around 0 because its surface wouldn't be very bouncy/soft. Whereas something soft and organic like a human or animal, would have a higher value (usually around 1.5), as they wouldn't instantly 'stop' as they hit something, but rather 'squish', then bounce back a bit.
Outline of Use:
$damping "(value)"
Possible Values:
value = 0 to infinite (untested)
Examples of Use:
-
$definemacro
About:
Outline of Use:
Possible Values:
Examples of Use:
-
$drag
About:
Scales the air restistance of the model. 1 is default. Any higher values will be like trying to pull a parachute filled with air.
Outline of Use:
$drag "(value)"
Possible Values:
value = 0 to infinite (untested)
Examples of Use:
-
$inertia
About:
Outline of Use:
$inertia "(value)"
Possible Values:
value = 0 to infinite (untested)
Examples of Use:
-
$jointcollide
-
$jointconstrain
$jointcontents
About:
Outline of Use:
Possible Values:
Examples of Use:
$jointdamping
About:
Outline of Use:
Possible Values:
Examples of Use:
$jointinertia
About:
Outline of Use:
Possible Values:
Examples of Use:
$jointmassbias
$jointmerge
About:
While the command's name implies that it merges joints, it doesn't. It infact merges the collision meshes (objects) that are binded to the specified joints. Joint 2's collision mesh is merged and binded with Joint 1. Remember though, ragdolls can only have one 'convex' collision mesh per joint, this is not a work around for that.
Outline of Use:
$jointmerge "(joint1)" "(joint2)"
Possible Values:
joint-1 = a joint name
joint-2 = a joint name
Examples of Use:
$jointrotdamping
About:
Outline of Use:
Possible Values:
Examples of Use:
$jointskip
About:
Outline of Use:
Possible Values:
Examples of Use:
$mass
About:
Determines how heavy the model will be. Be sure to set this to a realistic value, as if you set it too low, you may get a result similar to moving/dragging a parachute full of air. I.e. Make sure the value is not too low for the size/material of the model, else it'll "float" around when shot/moved etc.
Outline of Use:
$mass "(valueThis value represents weight, measured in Kilograms.)"
Possible Values:
value = real numberA real number is any number. It can be negative, a decimal, or both. So your 'value' should be something like these: -6, 1.2, 0, -3, 4032.405 etc.
Examples of Use:
$masscenter
About:
Outline of Use:
Possible Values:
Examples of Use:
$noselfcollisions
About:
Prevents any of the model's collision model parts colliding with each other. Mainly used to prevent the ragdoll spasming & for performance issues.
Outline of Use:
$noselfcollisions
Possible Values:
N/A (no values are used)
Examples of Use:
$poseparameter
About:
Outline of Use:
Possible Values:
Examples of Use:
$proceduralbones
About:
Outline of Use:
Possible Values:
Examples of Use:
$rootbone
About:
Outline of Use:
$rootbone "(joint-name)"
Possible Values:
N/A (no values are used)
Examples of Use:
$rotdamping
About:
Short for Rotational Damping. As the word 'damping' suggests, this command affects how joints will react when hitting their '$jointconstrain' limits. (among other things, probably) For example, a simple mechanical object would likely have a value of 0 because its joints would have no dampeners. Whereas something soft and organic like a human or animal, would have a higher value (usually around 1.5), as their joints wouldn't instantly 'stop' as they reach their limits, but rather bounce back a bit.
Outline of Use:
$rotdamping "(value)"
Possible Values:
value = 0 to infinite (untested)
Examples of Use:
Examples of Use:
$collisionmodel
About:
To quickly sum this command up; it is used to specify the .smd to be used as the 'collision' model. (The model that isn't seen but rather felt.) Along with this is its many physics-related sub-commands, such as mass, drag etc.
There's three types of "physics" for models; ragdollsRagdolls are created via the $collisionjoints command., propsProps are created via the $collisionmodel command. and effectsEffects are created by not using either of these commands: $collisionjoints and $collisionmodel.. Ragdolls have 'joints/bones' that bend when colliding with other objects, props have a collision model but no rotating parts and effects don't have any collision model which means they can only have movement if welded/parented to something else. By using this command ($collisionmodel) it declares this model as a type of "prop", static or notWhether the model is static or not isn't decided by the .qc file, but rather how the model is chosen to be spawned. This is done via Valve Hammer and/or through coding and thus shouldn't be worried about. However, if the model is intended to be a static prop and has no reason for joints/animations/etc. then $staticprop should be used to make the model load slightly faster..
While unrecommended, as it's unoptimised and not always precise, you don't always need to make a custom collision model. In some cases you can just refer to your 'reference' smd rather than having to make a whole new smd. Due to the difference in the way reference and collision .smds are made, using the reference .smd usually results in a 'convex' collision model. Therefore if you need it to be concave, your collision model must be a single custom .smd which contains many convex "objectsThese "objects" must be separate unrelated meshes. Unrelated in the sense that no faces/edges/vertices are merged/shared between them." that make-up the concave shape.
Incompatible With:
"$collisionjoints".
Outline of Use:
$collisionmodel "(collision-smd)" { "(sub-command)" "(sub-command's-value)" }
Possible Values:
reference-smd = an SMD name
sub-command = See "Sub Commands"
sub-command's-value = See "Sub Commands"
Sub Commands:
-
$animatedfriction
About:
Outline of Use:
Possible Values:
Examples of Use:
-
$automass
About:
I'm not a huge fan of this one, as I prefer the flexibility and precision of the $mass command. I don't know much about it, but from what I can tell it works out the volume of your collision model, then adds/subtracts from this value depending on the $surfaceprop/prop_data base type specified.
Outline of Use:
$automass
Possible Values:
N/A (no values are used)
Examples of Use:
-
$concave
About:
This command should be specified if you have made a custom collision model and you want it to be 'concave', rather than convex. (a default bounding box would be made if a concave collision was used, but this command wasn't declared) If you are unsure of the differences between the two, see here for example. (but imagine the 'hole' in 3D)
Outline of Use:
$concave
Possible Values:
N/A (no values are used)
Examples of Use:
-
$controller
About:
Outline of Use:
Possible Values:
Examples of Use:
-
$damping
About:
As the word 'damping' suggests, this command affects how the model will react when hitting something. (among other things, probably) For example, a simple mechanical object would likely have a value of around 0 because its surface wouldn't be very bouncy/soft. Whereas something soft and organic like a human or animal, would have a higher value (usually around 1.5), as they wouldn't instantly 'stop' as they hit something, but rather 'squish', then bounce back a bit.
Outline of Use:
$damping "(value)"
Possible Values:
value = 0 to infinite (untested)
Examples of Use:
-
$definemacro
About:
Outline of Use:
Possible Values:
Examples of Use:
-
$drag
About:
Scales the air restistance of the model. 1 is default. Any higher values will be like trying to pull a parachute filled with air.
Outline of Use:
$drag "(value)"
Possible Values:
value = 0 to infinite (untested)
Examples of Use:
-
$inertia
About:
Outline of Use:
$inertia "(value)"
Possible Values:
value = 0 to infinite (untested)
Examples of Use:
-
$mass
About:
Determines how heavy the model will be. Be sure to set this to a realistic value, as if you set it too low, you may get a result similar to moving/dragging a parachute full of air. I.e. Make sure the value is not too low for the size/material of the model, else it'll "float" around when shot/moved etc.
Outline of Use:
$mass "(valueThis value represents weight, measured in Kilograms.)"
Possible Values:
value = real numberA real number is any number. It can be negative, a decimal, or both. So your 'value' should be something like these: -6, 1.2, 0, -3, 4032.405 etc.
Examples of Use:
-
$masscenter
About:
Outline of Use:
Possible Values:
Examples of Use:
Examples of Use:
$collisiontext
$constantdirectionallight
About:
Outline of Use:
Possible Values:
Examples of Use:
$contents
About:
Outline of Use:
$contents "(content-types)"
Possible Values:
content-types = grate, ladder, monster, notsolid, solid
Examples of Use:
$continue
About:
Outline of Use:
Possible Values:
Examples of Use:
$controller
About:
Outline of Use:
Possible Values:
Examples of Use:
$declaresequence
About:
Outline of Use:
Possible Values:
Examples of Use:
$declareanimation
About:
Outline of Use:
Possible Values:
Examples of Use:
$defaultweightlist
About:
Outline of Use:
Possible Values:
Examples of Use:
$definebone
$externaltextures
About:
Outline of Use:
Possible Values:
Examples of Use:
$eyeposition
$fakevta
About:
Outline of Use:
Possible Values:
Examples of Use:
$forcephonemecrossfade
About:
Outline of Use:
Possible Values:
Examples of Use:
$forcerealign
About:
Outline of Use:
Possible Values:
Examples of Use:
$gamma
About:
Outline of Use:
Possible Values:
Examples of Use:
$hbox
About:
Outline of Use:
Possible Values:
Examples of Use:
$hboxset
About:
Outline of Use:
$hboxset "(value)"
Possible Values:
value = default, dod, cstrike
Examples of Use:
$hgroup
About:
Outline of Use:
Possible Values:
Examples of Use:
$heirarchy
About:
Outline of Use:
Possible Values:
Examples of Use:
$hierarchy
About:
Outline of Use:
Possible Values:
Examples of Use:
$ikautoplaylock
About:
Outline of Use:
Possible Values:
Examples of Use:
$ikchain
About:
Outline of Use:
Possible Values:
Examples of Use:
$illumposition
$include
$includemodel
About:
Outline of Use:
$includemodel "(filename)"
Possible Values:
Examples of Use:
$insertbone
About:
Outline of Use:
Possible Values:
Examples of Use:
$jointcontents
About:
Outline of Use:
Possible Values:
Examples of Use:
$jointsurfaceprop
$keyvalues
About:
Useful for 'prop_physic' entities. Used to define many characteristics of the model. Such as, health, material type, size (defines mass as far as I know) etc. Some of its more interesting uses are seen on the following Half-Life 2 props: explosive barrelThe explosive barrel's $keyvalue properties cause it to set aflame (and then explode) when half or more of its health is lost, explode instantly on contact when thrown with the gravity gun (physcannon), and it has a few other attributes. (health, explosion radius etc.), sawbladeThe sawblade's $keyvalue properties cause it to 'stick' into the world (brushes made in hammer) and spin on its z-axis when thrown with the Gravity Gun. (physcannon), harpoonThe harpoon's $keyvalue properties cause it to 'impale' living NPCs into the wall, stick into the world (brushes made in hammer) and not revolve at all when thrown with the Gravity Gun. (physcannon) and paint canThe paint can's $keyvalue properties cause it to create a paint decal wherever it first has contact with when thrown with the Gravity Gun. (physcannon).
Common Outline of Use:
$keyvalues { "(sub-command)" { "(sub's-command)" "(command's-value)" } }
Sub Commands:
-
prop_data
About:
Defines some physics-related options on the model, such as: breakability, health, surface type, amount of gibs, damage multipliers, etc.
Outline of Use:
Possible Values:
-
"base"
About:
Used to call an already specified property data class from the propdata.txt (propdata.txt's may differ per mod/game). Specifying any further prop_data commands will 'override' any existing ones called in the selected prop data base. I've uploaded a few of the propdata.txts for you to refer to: Counter-Strike: Source / Half-Life 2 / Garry's Mod 10. They're only there for referential's sake, don't download them.
It should be noted that if you refer to a base type that doesn't exist, your model will not load! So, it is very important to make sure you use a base type that exists in whatever game/mod you are trying to make the model for. This can be done by checking over the mod/game's propdata.txt to see what base types exist. These can be found in two possible places, either in a .gcf file (usually for games sold on Steam), or in the appropriate 'sourcemods' (3rd party mods) subfolder. Here's how to find them:
Outline of Use:
"base" "(type).(size)"
Possible Values:
type = see propdata.txt
size = see propdata.txt
Examples of Use:
-
"blocklos"
About:
Short for 'Block Line of Sight'. Used to define whether this model will block an NPCs vision of what is on the other side. If not declared, it will automatically be calculated depending on the size of the model.
Outline of Use:
"blocklos" "(boolean)"
Possible Values:
boolean = 0, 1
Examples of Use:
-
"aiwalkable"
About:
Outline of Use:
"aiwalkable" "(boolean)"
Possible Values:
boolean = 0, 1
Examples of Use:
-
"health"
About:
Sets the amount of health the model has. Once the health has been to reduced to 0 or less due to damage, the model will break. If set to 0, the model is invincible and will never break.
Outline of Use:
"health" "(value)"
Possible Values:
value = 0 to infinite
Examples of Use:
-
"damage_table"
About:
Outline of Use:
Possible Values:
Examples of Use:
-
"dmg.bullets"
About:
Outline of Use:
Possible Values:
Examples of Use:
-
"dmg.club"
About:
Outline of Use:
Possible Values:
Examples of Use:
-
"dmg.explosive"
About:
Outline of Use:
Possible Values:
Examples of Use:
-
"explosive_damage"
About:
Outline of Use:
Possible Values:
Examples of Use:
-
"explosive_radius"
About:
Outline of Use:
Possible Values:
Examples of Use:
-
"breakable_model"
About:
Outline of Use:
Possible Values:
Examples of Use:
-
"breakable_skin"
About:
Outline of Use:
Possible Values:
Examples of Use:
-
"breakable_count"
About:
Outline of Use:
Possible Values:
Examples of Use:
-
"allowstatic"
About:
Outline of Use:
"allowstatic" "(boolean)"
Possible Values:
boolean = 0, 1
Examples of Use:
-
"physicsmode"
About:
Not certain on this, but I assume this sets whether the model's physics are handled server-side or by each indiviual client. If this is the case, then small unimportant models should have a value of 2 or 3 and important or large models should have a value of 1.
Outline of Use:
"physicsmode" "(value)"
Possible Values:
valueSet multiplayer physics behaviour (0 = auto selection, 1 = full, 2 = non-solid, 3 = client-side) = 0Taken from propdata.txt:
PHYSICS_MULTIPLAYER_AUTODETECT 0, 1Taken from propdata.txt:
PHYSICS_MULTIPLAYER_SOLID 1
server-side, solid (collides with player), 2Taken from propdata.txt:
PHYSICS_MULTIPLAYER_NON_SOLID 2
server-side, non-solid, 3Taken from propdata.txt:
PHYSICS_MULTIPLAYER_CLIENTSIDE 3
client-side, non-solid
Examples of Use:
-
"multiplayer_break"
About:
Outline of Use:
"multiplayer_break" "(type)"
Possible Values:
type = both, client, server
Examples of Use:
-
physgun_interactions
About:
Used to specify what happens to the model when picked up/thrown by the physgunAlso known as: the "Gravity Gun", the "Zero Point Energy Field Manipulator", the "Physcannon" or the "Physics Cannon"..
Outline of Use:
Possible Values:
-
"preferred_carryangles"
About:
Specifies what angles the model should be carried at when picked up with the physgun.
Outline of Use:
"preferred_carryangles" (x-rotate) (y-rotate) (z-rotate)
Possible Values:
x-rotate = -180 to 180
y-rotate = -180 to 180
z-rotate = -180 to 180
Examples of Use:
-
"onworldimpact"
About:
Specifies what should happen to the model when it first collides with the world after being thrown by the physgun. In HL2; the harpoon uses stick.
Outline of Use:
"onworldimpact" "(type)"
Possible Values:
type = stick
Examples of Use:
-
"onfirstimpact"
About:
Sets what happens when the model is thrown by the physgun and it first collides with something. In HL2; the explosive barrel uses break, the harpoon uses impale and the paint can uses paintsplat.
Outline of Use:
"onfirstimpact" "(type)"
Possible Values:
type = break, impale, paintsplat
Examples of Use:
-
"onlaunch"
About:
Sets whether the model will spin when launched by the physgun. In HL2; the harpoon uses spin_none, and the sawblade uses spin_zaxis.
Outline of Use:
"onlaunch" "(type)"
Possible Values:
type = spin_none, spin_zaxis
Examples of Use:
-
"onbreak"
About:
Outline of Use:
"onbreak" "(type)"
Possible Values:
type = explode_fire
Examples of Use:
-
"damage"
About:
When the model is thrown it will not cause any damage to whatever it hits.
Outline of Use:
"damage" "(type)"
Possible Values:
type = none
Examples of Use:
-
fire_interactions
About:
Outline of Use:
Possible Values:
-
"ignite"
About:
Outline of Use:
"ignite" "(type)"
Possible Values:
type = halfhealth
Examples of Use:
-
"explosive_resist"
About:
Outline of Use:
"explosive_resist" "(type)"
Possible Values:
type = yes
Examples of Use:
-
cables
About:
Used to create 'Source-engine' cables/ropes. These ropes do not collide with models, only the world. However, they are affected by gravity and jingle about when their "attachment" points are moved.
Outline of Use:
Possible Values:
-
"cable"
About:
Used to create 'Source-engine' cables/ropes. These rope