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"
$limitrotation
About:
Outline of Use:
Possible Values:
Examples of Use:
$lockbonelengths
About:
Outline of Use:
Possible Values:
Examples of Use:
$lockdefinebones
About:
Outline of Use:
Possible Values:
Examples of Use:
$lod
nofacial
replacematerial
replacebone
replacemodel
Example #2
$cd "C:\Documents and Settings\Marc\Desktop\decompile"
$modelname "Police.mdl"
$model "police" "Police_reference.smd"
$lod 12 { replacemodel "Police_reference" "lod1_Police_reference" }
$lod 18 { replacemodel "Police_reference" "lod2_Police_reference" }
$lod 42 { replacemodel "Police_reference" "lod3_Police_reference" }
$lod 55 { replacemodel "Police_reference" "lod4_Police_reference" }
$lod 80 { replacemodel "Police_reference" "lod5_Police_reference" }
$shadowlod { replacemodel "Police_reference" "lod6_Police_reference" }
$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 "Center" "ValveBiped.Bip01_Spine1" -6.20 2.09 0.00 rotate -0.00 96.62 90.00
$attachment "Chest" "ValveBiped.Bip01_Spine4" -2.70 3.88 -0.00 rotate -0.00 79.75 90.00
$attachment "LHand" "ValveBiped.Bip01_L_Hand" 3.00 -0.00 -0.00 rotate -0.00 0.00 -0.00
$attachment "RHand" "ValveBiped.Bip01_R_Hand" 3.00 0.00 0.00 rotate 0.00 -0.00 -0.00
$attachment "zipline" "ValveBiped.Bip01_Spine4" 2.00 -2.00 -0.00 rotate 0.00 -17.00 -0.00
$attachment "manhack" "ValveBiped.Bip01_Spine" 18.00 -6.00 3.00 rotate -25.00 50.00 0.00
$attachment "forward" "ValveBiped.forward" 0.00 0.00 0.00 rotate 0.00 0.00 -0.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
$jointconstrain "valvebiped.bip01_r_thigh" x limit -25.00 39.00 0.20
$jointconstrain "valvebiped.bip01_r_thigh" y limit -8.00 75.00 0.20
$jointconstrain "valvebiped.bip01_r_thigh" z limit -97.00 32.00 0.20
$jointmassbias "valvebiped.bip01_r_calf" 2.00
$jointconstrain "valvebiped.bip01_r_calf" x limit 0.00 0.00 0.20
$jointconstrain "valvebiped.bip01_r_calf" y limit 0.00 0.00 0.20
$jointconstrain "valvebiped.bip01_r_calf" z limit -12.00 126.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
$jointconstrain "valvebiped.bip01_l_thigh" x limit -25.00 20.00 0.20
$jointconstrain "valvebiped.bip01_l_thigh" y limit -73.00 6.00 0.20
$jointconstrain "valvebiped.bip01_l_thigh" z limit -93.00 30.00 0.20
$jointmassbias "valvebiped.bip01_l_calf" 2.00
$jointconstrain "valvebiped.bip01_l_calf" x limit 0.00 0.00 0.20
$jointconstrain "valvebiped.bip01_l_calf" y limit 0.00 0.00 0.20
$jointconstrain "valvebiped.bip01_l_calf" z limit -8.00 126.00 0.20
$jointmassbias "valvebiped.bip01_l_foot" 2.00
$jointconstrain "valvebiped.bip01_l_foot" x limit -1.00 -1.00 0.20
$jointconstrain "valvebiped.bip01_l_foot" y limit -19.00 19.00 0.20
$jointconstrain "valvebiped.bip01_l_foot" z limit -15.00 35.00 0.20
$jointmassbias "valvebiped.bip01_r_foot" 2.00
$jointconstrain "valvebiped.bip01_r_foot" x limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_r_foot" y limit -21.00 6.00 0.20
$jointconstrain "valvebiped.bip01_r_foot" z limit -15.00 35.00 0.20
$animatedfriction 1.000 1000.000 0.800 0.500 0.000
}
removemodel
removemesh
$minlod
About:
Outline of Use:
Possible Values:
Examples of Use:
$model
$modelname
About:
This command defines what the compiled model will be called, and which directory it will have to be placed in. Placing it in another directory other than the one specified by this command will cause a 'missing vertex file' error in the console and the model will be invisible.
Outline of Use:
$modelname "(compiled-model-directory-goes-here)"
Possible Values:
Examples of Use:
$mostlyopaque
About:
Outline of Use:
$mostlyopaque
Possible Values:
N/A (no values are used)
Examples of Use:
$noforcedfade
About:
Outline of Use:
Possible Values:
Examples of Use:
$obsolete
About:
Outline of Use:
Possible Values:
Examples of Use:
$opaque
About:
Outline of Use:
$opaque
Possible Values:
N/A (no values are used)
Examples of Use:
$origin
About:
Used in v_models. (view models - first person weapons) The 'x' value moves the weapon closer/further away to the camera. The 'y' figure moves the model left & right. 'z' controls moves the model up & down. I recommend tweaking these values with decimals, as these figures don't need to be that high (a value of 10 would be considered extreme).
Outline of Use:
$origin (x) (y) (z)
Possible Values:
x = 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.
y = 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.
z = 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:
$popd
$prepend
About:
Outline of Use:
Possible Values:
Examples of Use:
$proceduralbones
About:
Outline of Use:
Possible Values:
Examples of Use:
$pushd
$realignbones
About:
Outline of Use:
Possible Values:
Examples of Use:
$renamebone
About:
Outline of Use:
Possible Values:
Examples of Use:
$renamematerial
About:
Outline of Use:
Possible Values:
Examples of Use:
$root
About:
Outline of Use:
Possible Values:
Examples of Use:
$scale
About:
Increases/decreases the scale of the reference SMD/physics SMD/ragdoll SMD/hitboxes depending on command placement. To scale everything equally (minus VTAs/eyes), merely place the '$scale' command line below the '$modelname' & '$cd' (if used) command, but before everything else.
Any VTAs (expressions/blendshapes/morphs) made for the model before the scale will have to be remade! Unsure what effects this command has on animations. (although I believe the new enlarged skeleton will be 'squished' to fit the animation) To fix the eyes, multiply each individual value that appears on the 'eyeball' (See $model > eyeball) command line by the '$scale' value. Then input the new figures.
Outline of Use:
$scale (value)
Possible Values:
value = 0 to infinite (untested)
Examples of Use:
$screenalign
About:
Outline of Use:
Possible Values:
Examples of Use:
$sequence
About:
Outline of Use:
Possible Values:
Examples of Use:
$shadowlod
About:
Shadow LODs (Shadow Levels of Detail) are usually used for optimisation purposes.
Outline of Use:
$shadowlod { "(sub-commands)" }
Sub Commands:
-
bonetreecollapse
nofacial
replacematerial
replacebone
replacemodel
removemodel
removemesh
$skipboneinbbox
About:
Outline of Use:
Possible Values:
Examples of Use:
$skiptransition
About:
Outline of Use:
Possible Values:
Examples of Use:
$staticprop
About:
As far as I can remember, this collapses all joints, (so only the joint "static_prop" remains) attachments and anything else related to animations and such. Using this command makes the model load much faster and should be used in collaberation with the '$body' command. Using this command does not force the model to be a "prop_static", it is still capable of being a "prop_physics", "prop_dynamic", etc.
Outline of Use:
$staticprop
Possible Values:
N/A (no values are used)
Examples of Use:
$surfaceprop
$texturegroup
About:
When used, you are able to toggle between multiple skin sets on one modelNot all materials on the model have to be replaced, just don't define it when using the command. (see 'Outline of Use' below). What this command does, is replace the specified material by the one below it.
To change skins while in-game, look at the model, open up console, make sure sv_cheats is set to 1Note that sv_cheats 1 can only be set by an admin/server host. This is fine if you're playing singleplayer as you are the host, but if you're playing on someone elses multiplayer server, chances are sv_cheats will be set to 0 so you will not be able to change skins. Unless you nicely ask an admin/host to do it for you., then type: ent_fire !picker skin (skin-number-here) - otherwise skins can be changed/viewed by using Hammer/HLMV.
Outline of Use:
-
$texturegroup skinfamilies
{
{ "(material-1_sheet1This first line will be used as the default skin. Consider this as line-1, slot-1. This material will be replaced by line-2/3/4/etc. (depending on how many skins are defined), slot-1. (the material directly below this one) Set this to the name of the target .vmt - which then targets your .vtf)","(material-2_sheet1This first line will be used as the default skin. Consider this as line-1, slot-2. This material will be replaced by line-2/3/4/etc. (depending on how many skins are defined), slot-2. (the material directly below this one) Set this to the name of the target .vmt - which then targets your .vtf)","(material-3_sheet1This first line will be used as the default skin. Consider this as line-1, slot-3. This material will be replaced by line-2/3/4/etc. (depending on how many skins are defined), slot-3. (the material directly below this one) Set this to the name of the target .vmt - which then targets your .vtf)" }
{ "(material-1_sheet2Consider this as line-2, slot-1. This material will be replaced by line-1/3/4/etc. (depending on how many skins are defined), slot-1. (the material directly below this one) Set this to the name of the target .vmt - which then targets your .vtf)","(material-2_sheet2Consider this as line-2, slot-2. This material will be replaced by line-1/3/4/etc. (depending on how many skins are defined), slot-2. (the material directly below this one) Set this to the name of the target .vmt - which then targets your .vtf)","(material-3_sheet2Consider this as line-2, slot-3. This material will be replaced by line-1/3/4/etc. (depending on how many skins are defined), slot-3. (the material directly below this one) Set this to the name of the target .vmt - which then targets your .vtf)" }
}
Possible Values:
material-1_sheet1 = a .VMT name only
material-2_sheet1 = a .VMT name only
material-3_sheet1 = a .VMT name only
material-1_sheet2 = a .VMT name only
material-2_sheet2 = a .VMT name only
material-3_sheet2 = a .VMT name only
See '$cdmaterials' if you need to specify a new directory the model needs to look in for the skins.
Examples of Use:
-
Example #1
$cd "C:\Documents and Settings\Marc\Desktop\ViperMk.II"
$modelname "katharsmodels/vipermk2/vipermk2.mdl"
$scale 14
$upaxis "y"
$surfaceprop "metal"
$model "vipermk2" "vipermk2_ref.smd"
$texturegroup skinfamilies
{
{ "vipermk2_sheet1","others1" }
{ "vipermk2_sheet2","others2" }
{ "vipermk2_sheet3","others3" }
{ "vipermk2_sheet4","others4" }
{ "vipermk2_sheet5","others5" }
{ "vipermk2_sheet6","others6" }
}
$cdmaterials "katharsmodels/vipermk2"
$sequence idle "vipermk2_ref" fps 30.00
$collisionmodel "vipermk2_phys.smd" {
$concave
$mass 1300
}
$upaxis
$weightlist
About:
Outline of Use:
Possible Values:
Examples of Use:
$zbrush
About:
Outline of Use:
Possible Values:
Examples of Use:
HL2:EP1These commands only work on games/mods if they were created using the HL2:EP1 SDK code.This means any games/mods created before its release are unlikely to feature its engine additions, unless updated afterwards to include them.
---
HL2:EP2/Orange BoxThese commands only work on games/mods if they were created using the Orange Box SDK code.This means any games/mods created before its release are unlikely to feature its engine additions, unless updated afterwards to include them.
$allowrootlods
About:
Outline of Use:
Possible Values:
Examples of Use:
$casttextureshadows
About:
Outline of Use:
Possible Values:
Examples of Use:
$centerbonesonverts
About:
Outline of Use:
Possible Values:
Examples of Use:
$clampworldspace
About:
Outline of Use:
Possible Values:
Examples of Use:
$collisionmodel (updated)
$donotcastshadows
About:
Outline of Use:
Possible Values:
Examples of Use:
$jigglebone
About:
Outline of Use:
Possible Values:
Examples of Use:
$maxeyedeflection
About:
Outline of Use:
Possible Values:
Examples of Use:
$motionrollback
About:
Outline of Use:
Possible Values:
Examples of Use:
$sectionframes
About:
Outline of Use:
Possible Values:
Examples of Use:
$unlockdefinebones
About:
Outline of Use:
Possible Values:
Examples of Use:
Am I missing something? Have I got my facts wrong? Got something to add? Get in touch!