make ragdoll into player model

ive found some models that are just ragdolls and i want to make them into player models to use on my server. could someone give me a hint on how to do this?

It requires you to decompile the model and put the proper animations in the .qc. I can do it if you want.

If it’s on the Valve Biped. Otherwise, you’ll have to put it into 3DS Max and redo the bone structure.

If the ragdolls are reskins of HL2 characters, or have same bone structure as HL2 characters, then you’ll have to recompile the ragdolls to use player model animations.

[editline]4th March 2014[/editline]

Ninjad.

thanx :slight_smile: but i wanna try and figured it out my self.so all i have to use is 3DS MAX?

It depends if it’s on the Valve Biped or not. You’ll have to decompile the model first to check if it is.

whats a good decompile program?

Crowbar hasn’t failed me yet.

Crowbar or MDL Decompile.

[editline]4th March 2014[/editline]

Ninja’d

awesome! thanx for the helpe ill give it a shot!

im using crowbar and i got everything working except compiling it back together. it says modelname_reference.smd doesnt exist

Post the .qc in


 tags. Also, where is your modelname_reference.smd located? I know crowbar does something weird with folder separation.

the .smd file is located in the decompiled 0.19 subfolder it creates



// Created by Crowbar 0.19.0.0

$modelname "characters/l_c/lollipop_chainsaw.mdl"

$model "l_c" "lollipop_chainsaw_reference.smd" {

	eyeball "eye_right" "headJT" -1.130000 -3.000001 69.615022 "eyeball_r" 1.8 3 "iris_unused" 0.5
	eyeball "eye_left" "headJT" 1.130000 -3.000001 69.615022 "eyeball_l" 1.8 -3 "iris_unused" 0.5

	flexfile "lollipop_chainsaw.vta" 
	{
		defaultflex frame 0
		flex "l_upperlid_lower" frame 1
		flex "r_upperlid_lower" frame 2
		flex "l_upperlid_upper" frame 3
		flex "r_upperlid_upper" frame 4
		flex "l_lowerlid_upper" frame 5
		flex "r_lowerlid_upper" frame 6
		flex "l_bang_action" frame 7
		flex "r_bang_action" frame 8
		flex "l_brow_lower" frame 9
		flex "r_brow_lower" frame 10
		flex "l_brow_upper" frame 11
		flex "r_brow_upper" frame 12
		flex "l_mouth_part" frame 13
		flex "r_mouth_part" frame 14
		flex "upperlip_raise" frame 15
		flex "lowerlips_lower" frame 16
		flex "mouth_open" frame 17
		flex "lips_pucker" frame 18
		flex "tongue_out" frame 19
		flex "l_lip_puller" frame 20
		flex "r_lip_puller" frame 21
		flex "l_mouth_depressor" frame 22
		flex "r_mouth_depressor" frame 23
	}

	flexcontroller phoneme range 0 1 blink
	flexcontroller phoneme range 0 1 l_brow_lower
	flexcontroller phoneme range 0 1 r_brow_lower
	flexcontroller phoneme range 0 1 l_brow_upper
	flexcontroller phoneme range 0 1 r_brow_upper
	flexcontroller phoneme range 0 1 l_upperlid_lower
	flexcontroller phoneme range 0 1 r_upperlid_lower
	flexcontroller phoneme range 0 1 l_upperlid_upper
	flexcontroller phoneme range 0 1 r_upperlid_upper
	flexcontroller phoneme range 0 1 l_lowerlid_upper
	flexcontroller phoneme range 0 1 r_lowerlid_upper
	flexcontroller phoneme range 0 1 l_mouth_part
	flexcontroller phoneme range 0 1 r_mouth_part
	flexcontroller phoneme range 0 1 upperlip_raise
	flexcontroller phoneme range 0 1 lowerlips_lower
	flexcontroller phoneme range 0 1 mouth_open
	flexcontroller phoneme range 0 1 lips_pucker
	flexcontroller phoneme range 0 1 tongue_out
	flexcontroller phoneme range 0 1 l_lip_puller
	flexcontroller phoneme range 0 1 r_lip_puller
	flexcontroller phoneme range 0 1 l_bang_action
	flexcontroller phoneme range 0 1 r_bang_action
	flexcontroller phoneme range 0 1 l_mouth_depressor
	flexcontroller phoneme range 0 1 r_mouth_depressor
	flexcontroller phoneme range 0 1 blank

	%blink = blink
	%l_brow_lower = l_brow_lower
	%r_brow_lower = r_brow_lower
	%l_brow_upper = l_brow_upper
	%r_brow_upper = r_brow_upper
	%l_upperlid_lower = l_upperlid_lower
	%r_upperlid_lower = r_upperlid_lower
	%l_upperlid_upper = l_upperlid_upper
	%r_upperlid_upper = r_upperlid_upper
	%l_lowerlid_upper = l_lowerlid_upper
	%r_lowerlid_upper = r_lowerlid_upper
	%l_mouth_part = l_mouth_part
	%r_mouth_part = r_mouth_part
	%upperlip_raise = upperlip_raise
	%lowerlips_lower = lowerlips_lower
	%mouth_open = mouth_open
	%lips_pucker = lips_pucker
	%tongue_out = tongue_out
	%l_lip_puller = l_lip_puller
	%r_lip_puller = r_lip_puller
	%l_bang_action = l_bang_action
	%r_bang_action = r_bang_action
	%l_mouth_depressor = l_mouth_depressor
	%r_mouth_depressor = r_mouth_depressor
	%blank = blank
}


$cdmaterials "models\characters\l_c\lollipop_chainsaw\"

$texturegroup "skinfamilies"
{
	{
		"TX_CH_Main_Juliet_Hair_D.vmt"
	}
	{
		"TX_CH_Main_Juliet_Hair_D2.vmt"
	}
	{
		"TX_CH_Main_Juliet_Hair_D3.vmt"
	}
	{
		"TX_CH_Main_Juliet_Hair_D4.vmt"
	}
}

$attachment "eyes" "headJT" 2.2 0 2.84 rotate -81.11 0 -180
$attachment "mouth" "headJT" 0.8 -5.8 -0.15 rotate 0 -80 -90

$surfaceprop "flesh"

$contents "solid"

$eyeposition 0 0 70





$sequence "ragdoll" "lollipop_chainsaw_anims\ragdoll.smd" {
	fps 30
	"ACT_DIERAGDOLL" 1
}

$collisionjoints "lollipop_chainsaw_physics.smd"
{
	$mass 90
	$inertia 10
	$damping 0.01
	$rotdamping 1.5
	$rootbone "hips"


	$jointconstrain "skirtBAJTL" x limit 0 0 0
	$jointconstrain "skirtBAJTL" y limit -55 17 0
	$jointconstrain "skirtBAJTL" z limit 0 0 0

	$jointconstrain "skirtBAJT" x limit 0 0 0
	$jointconstrain "skirtBAJT" y limit -57 21 0
	$jointconstrain "skirtBAJT" z limit 0 0 0

	$jointconstrain "skirtSAJTR" x limit 0 0 0
	$jointconstrain "skirtSAJTR" y limit -50 12 0
	$jointconstrain "skirtSAJTR" z limit 0 0 0

	$jointconstrain "skirtSAJTL" x limit 0 0 0
	$jointconstrain "skirtSAJTL" y limit -37 12 0
	$jointconstrain "skirtSAJTL" z limit 0 0 0

	$jointconstrain "skirtFAJTR" x limit 0 0 0
	$jointconstrain "skirtFAJTR" y limit -61 17 0
	$jointconstrain "skirtFAJTR" z limit 0 0 0

	$jointconstrain "skirtFAJTL" x limit 0 0 0
	$jointconstrain "skirtFAJTL" y limit -46 17 0
	$jointconstrain "skirtFAJTL" z limit 0 0 0

	$jointconstrain "skirtFAJT" x limit 0 0 0
	$jointconstrain "skirtFAJT" y limit -61 26 0
	$jointconstrain "skirtFAJT" z limit 0 0 0

	$jointconstrain "legJTR" x limit -41 41 0
	$jointconstrain "legJTR" y limit -48 77 0
	$jointconstrain "legJTR" z limit -95 79 0

	$jointconstrain "KneeJTR" x limit -32 41 0
	$jointconstrain "KneeJTR" y limit -15 17 0
	$jointconstrain "KneeJTR" z limit -17 131 0

	$jointconstrain "ankleJTR" x limit -50 57 0
	$jointconstrain "ankleJTR" y limit -53 50 0
	$jointconstrain "ankleJTR" z limit -55 55 0

	$jointconstrain "legJTL" x limit -41 41 0
	$jointconstrain "legJTL" y limit -77 48 0
	$jointconstrain "legJTL" z limit -95 79 0

	$jointconstrain "KneeJTL" x limit -32 41 0
	$jointconstrain "KneeJTL" y limit -17 15 0
	$jointconstrain "KneeJTL" z limit -131 17 0

	$jointconstrain "ankleJTL" x limit -50 57 0
	$jointconstrain "ankleJTL" y limit -50 53 0
	$jointconstrain "ankleJTL" z limit -55 55 0

	$jointconstrain "spineAJT" x limit -73 73 0
	$jointconstrain "spineAJT" y limit -45 46 0
	$jointconstrain "spineAJT" z limit -44 44 0

	$jointconstrain "spineCJT" x limit -53 53 0
	$jointconstrain "spineCJT" y limit -35 39 0
	$jointconstrain "spineCJT" z limit -26 26 0

	$jointconstrain "clavicleJTR" x limit -19 41 0
	$jointconstrain "clavicleJTR" y limit -23 23 0
	$jointconstrain "clavicleJTR" z limit -26 35 0

	$jointconstrain "armJTR" x limit -44 44 0
	$jointconstrain "armJTR" y limit -53 131 0
	$jointconstrain "armJTR" z limit -102 70 0

	$jointconstrain "elbowJTR" x limit -61 44 0
	$jointconstrain "elbowJTR" y limit -30 135 0
	$jointconstrain "elbowJTR" z limit -23 23 0

	$jointconstrain "valvebiped.bip01_r_hand" x limit -41 66 0
	$jointconstrain "valvebiped.bip01_r_hand" y limit -48 37 0
	$jointconstrain "valvebiped.bip01_r_hand" z limit -48 70 0

	$jointconstrain "clavicleJTL" x limit -19 41 0
	$jointconstrain "clavicleJTL" y limit -23 23 0
	$jointconstrain "clavicleJTL" z limit -26 35 0

	$jointconstrain "armJTL" x limit -44 44 0
	$jointconstrain "armJTL" y limit -131 53 0
	$jointconstrain "armJTL" z limit -102 70 0

	$jointconstrain "elbowJTL" x limit -61 44 0
	$jointconstrain "elbowJTL" y limit -135 30 0
	$jointconstrain "elbowJTL" z limit -23 23 0

	$jointconstrain "valvebiped.bip01_l_hand" x limit -41 66 0
	$jointconstrain "valvebiped.bip01_l_hand" y limit -37 48 0
	$jointconstrain "valvebiped.bip01_l_hand" z limit -48 70 0

	$jointconstrain "neckJT" x limit -37 38 0
	$jointconstrain "neckJT" y limit -48 41 0
	$jointconstrain "neckJT" z limit -28 28 0

	$jointconstrain "headJT" x limit -66 67 0
	$jointconstrain "headJT" y limit -39 66 0
	$jointconstrain "headJT" z limit -46 46 0

	$jointconstrain "hairCJTR" x limit -35 35 0
	$jointconstrain "hairCJTR" y limit -66 50 0
	$jointconstrain "hairCJTR" z limit -46 68 0

	$jointconstrain "hairCJTL" x limit -35 35 0
	$jointconstrain "hairCJTL" y limit -50 66 0
	$jointconstrain "hairCJTL" z limit -46 68 0

	$jointconstrain "bustAJTR" x limit -12 15 0
	$jointconstrain "bustAJTR" y limit -32 35 0
	$jointconstrain "bustAJTR" z limit -39 17 0

	$jointconstrain "bustAJTL" x limit -12 15 0
	$jointconstrain "bustAJTL" y limit -35 32 0
	$jointconstrain "bustAJTL" z limit -39 17 0

	$jointconstrain "skirtBAJTR" x limit 0 0 0
	$jointconstrain "skirtBAJTR" y limit -44 15 0
	$jointconstrain "skirtBAJTR" z limit 0 0 0
	$noselfcollisions
}


Move the .smd to the same directory as the .qc. Also, I don’t know if you just haven’t gotten to it yet, but you haven’t included any animations with the ragdoll.

i have the .smd in the same folder as the qc. does this look better



// Created by Crowbar 0.19.0.0

$modelname "characters/l_c/lollipop_chainsaw.mdl"

$model "l_c" "lollipop_chainsaw_reference.smd" {

	eyeball "eye_right" "headJT" -1.130000 -3.000001 69.615022 "eyeball_r" 1.8 3 "iris_unused" 0.5
	eyeball "eye_left" "headJT" 1.130000 -3.000001 69.615022 "eyeball_l" 1.8 -3 "iris_unused" 0.5

	flexfile "lollipop_chainsaw.vta" 
	{
		defaultflex frame 0
		flex "l_upperlid_lower" frame 1
		flex "r_upperlid_lower" frame 2
		flex "l_upperlid_upper" frame 3
		flex "r_upperlid_upper" frame 4
		flex "l_lowerlid_upper" frame 5
		flex "r_lowerlid_upper" frame 6
		flex "l_bang_action" frame 7
		flex "r_bang_action" frame 8
		flex "l_brow_lower" frame 9
		flex "r_brow_lower" frame 10
		flex "l_brow_upper" frame 11
		flex "r_brow_upper" frame 12
		flex "l_mouth_part" frame 13
		flex "r_mouth_part" frame 14
		flex "upperlip_raise" frame 15
		flex "lowerlips_lower" frame 16
		flex "mouth_open" frame 17
		flex "lips_pucker" frame 18
		flex "tongue_out" frame 19
		flex "l_lip_puller" frame 20
		flex "r_lip_puller" frame 21
		flex "l_mouth_depressor" frame 22
		flex "r_mouth_depressor" frame 23
	}

	flexcontroller phoneme range 0 1 blink
	flexcontroller phoneme range 0 1 l_brow_lower
	flexcontroller phoneme range 0 1 r_brow_lower
	flexcontroller phoneme range 0 1 l_brow_upper
	flexcontroller phoneme range 0 1 r_brow_upper
	flexcontroller phoneme range 0 1 l_upperlid_lower
	flexcontroller phoneme range 0 1 r_upperlid_lower
	flexcontroller phoneme range 0 1 l_upperlid_upper
	flexcontroller phoneme range 0 1 r_upperlid_upper
	flexcontroller phoneme range 0 1 l_lowerlid_upper
	flexcontroller phoneme range 0 1 r_lowerlid_upper
	flexcontroller phoneme range 0 1 l_mouth_part
	flexcontroller phoneme range 0 1 r_mouth_part
	flexcontroller phoneme range 0 1 upperlip_raise
	flexcontroller phoneme range 0 1 lowerlips_lower
	flexcontroller phoneme range 0 1 mouth_open
	flexcontroller phoneme range 0 1 lips_pucker
	flexcontroller phoneme range 0 1 tongue_out
	flexcontroller phoneme range 0 1 l_lip_puller
	flexcontroller phoneme range 0 1 r_lip_puller
	flexcontroller phoneme range 0 1 l_bang_action
	flexcontroller phoneme range 0 1 r_bang_action
	flexcontroller phoneme range 0 1 l_mouth_depressor
	flexcontroller phoneme range 0 1 r_mouth_depressor
	flexcontroller phoneme range 0 1 blank

	%blink = blink
	%l_brow_lower = l_brow_lower
	%r_brow_lower = r_brow_lower
	%l_brow_upper = l_brow_upper
	%r_brow_upper = r_brow_upper
	%l_upperlid_lower = l_upperlid_lower
	%r_upperlid_lower = r_upperlid_lower
	%l_upperlid_upper = l_upperlid_upper
	%r_upperlid_upper = r_upperlid_upper
	%l_lowerlid_upper = l_lowerlid_upper
	%r_lowerlid_upper = r_lowerlid_upper
	%l_mouth_part = l_mouth_part
	%r_mouth_part = r_mouth_part
	%upperlip_raise = upperlip_raise
	%lowerlips_lower = lowerlips_lower
	%mouth_open = mouth_open
	%lips_pucker = lips_pucker
	%tongue_out = tongue_out
	%l_lip_puller = l_lip_puller
	%r_lip_puller = r_lip_puller
	%l_bang_action = l_bang_action
	%r_bang_action = r_bang_action
	%l_mouth_depressor = l_mouth_depressor
	%r_mouth_depressor = r_mouth_depressor
	%blank = blank
}


$cdmaterials "models\characters\l_c\lollipop_chainsaw\"

$texturegroup "skinfamilies"
{
	{
		"TX_CH_Main_Juliet_Hair_D.vmt"
	}
	{
		"TX_CH_Main_Juliet_Hair_D2.vmt"
	}
	{
		"TX_CH_Main_Juliet_Hair_D3.vmt"
	}
	{
		"TX_CH_Main_Juliet_Hair_D4.vmt"
	}
}

$attachment "eyes" "headJT" 2.2 0 2.84 rotate -81.11 0 -180
$attachment "mouth" "headJT" 0.8 -5.8 -0.15 rotate 0 -80 -90

$surfaceprop "flesh"

$contents "solid"

$eyeposition 0 0 70





$sequence "ragdoll" "lollipop_chainsaw_anims\ragdoll.smd" {
	fps 30
	"ACT_DIERAGDOLL" 1
}

$includemodel "m_anm.mdl"

$ikchain "rhand" "ValveBiped.Bip01_R_Hand" knee 0.707 0.707 0
$ikchain "lhand" "ValveBiped.Bip01_L_Hand" knee 0.707 0.707 0
$ikchain "rfoot" "ValveBiped.Bip01_R_Foot" knee 0.707 -0.707 0
$ikchain "lfoot" "ValveBiped.Bip01_L_Foot" knee 0.707 -0.707 0

$collisionjoints "lollipop_chainsaw_physics.smd"
{
	$mass 90
	$inertia 10
	$damping 0.01
	$rotdamping 1.5
	$rootbone "hips"


	$jointconstrain "skirtBAJTL" x limit 0 0 0
	$jointconstrain "skirtBAJTL" y limit -55 17 0
	$jointconstrain "skirtBAJTL" z limit 0 0 0

	$jointconstrain "skirtBAJT" x limit 0 0 0
	$jointconstrain "skirtBAJT" y limit -57 21 0
	$jointconstrain "skirtBAJT" z limit 0 0 0

	$jointconstrain "skirtSAJTR" x limit 0 0 0
	$jointconstrain "skirtSAJTR" y limit -50 12 0
	$jointconstrain "skirtSAJTR" z limit 0 0 0

	$jointconstrain "skirtSAJTL" x limit 0 0 0
	$jointconstrain "skirtSAJTL" y limit -37 12 0
	$jointconstrain "skirtSAJTL" z limit 0 0 0

	$jointconstrain "skirtFAJTR" x limit 0 0 0
	$jointconstrain "skirtFAJTR" y limit -61 17 0
	$jointconstrain "skirtFAJTR" z limit 0 0 0

	$jointconstrain "skirtFAJTL" x limit 0 0 0
	$jointconstrain "skirtFAJTL" y limit -46 17 0
	$jointconstrain "skirtFAJTL" z limit 0 0 0

	$jointconstrain "skirtFAJT" x limit 0 0 0
	$jointconstrain "skirtFAJT" y limit -61 26 0
	$jointconstrain "skirtFAJT" z limit 0 0 0

	$jointconstrain "legJTR" x limit -41 41 0
	$jointconstrain "legJTR" y limit -48 77 0
	$jointconstrain "legJTR" z limit -95 79 0

	$jointconstrain "KneeJTR" x limit -32 41 0
	$jointconstrain "KneeJTR" y limit -15 17 0
	$jointconstrain "KneeJTR" z limit -17 131 0

	$jointconstrain "ankleJTR" x limit -50 57 0
	$jointconstrain "ankleJTR" y limit -53 50 0
	$jointconstrain "ankleJTR" z limit -55 55 0

	$jointconstrain "legJTL" x limit -41 41 0
	$jointconstrain "legJTL" y limit -77 48 0
	$jointconstrain "legJTL" z limit -95 79 0

	$jointconstrain "KneeJTL" x limit -32 41 0
	$jointconstrain "KneeJTL" y limit -17 15 0
	$jointconstrain "KneeJTL" z limit -131 17 0

	$jointconstrain "ankleJTL" x limit -50 57 0
	$jointconstrain "ankleJTL" y limit -50 53 0
	$jointconstrain "ankleJTL" z limit -55 55 0

	$jointconstrain "spineAJT" x limit -73 73 0
	$jointconstrain "spineAJT" y limit -45 46 0
	$jointconstrain "spineAJT" z limit -44 44 0

	$jointconstrain "spineCJT" x limit -53 53 0
	$jointconstrain "spineCJT" y limit -35 39 0
	$jointconstrain "spineCJT" z limit -26 26 0

	$jointconstrain "clavicleJTR" x limit -19 41 0
	$jointconstrain "clavicleJTR" y limit -23 23 0
	$jointconstrain "clavicleJTR" z limit -26 35 0

	$jointconstrain "armJTR" x limit -44 44 0
	$jointconstrain "armJTR" y limit -53 131 0
	$jointconstrain "armJTR" z limit -102 70 0

	$jointconstrain "elbowJTR" x limit -61 44 0
	$jointconstrain "elbowJTR" y limit -30 135 0
	$jointconstrain "elbowJTR" z limit -23 23 0

	$jointconstrain "valvebiped.bip01_r_hand" x limit -41 66 0
	$jointconstrain "valvebiped.bip01_r_hand" y limit -48 37 0
	$jointconstrain "valvebiped.bip01_r_hand" z limit -48 70 0

	$jointconstrain "clavicleJTL" x limit -19 41 0
	$jointconstrain "clavicleJTL" y limit -23 23 0
	$jointconstrain "clavicleJTL" z limit -26 35 0

	$jointconstrain "armJTL" x limit -44 44 0
	$jointconstrain "armJTL" y limit -131 53 0
	$jointconstrain "armJTL" z limit -102 70 0

	$jointconstrain "elbowJTL" x limit -61 44 0
	$jointconstrain "elbowJTL" y limit -135 30 0
	$jointconstrain "elbowJTL" z limit -23 23 0

	$jointconstrain "valvebiped.bip01_l_hand" x limit -41 66 0
	$jointconstrain "valvebiped.bip01_l_hand" y limit -37 48 0
	$jointconstrain "valvebiped.bip01_l_hand" z limit -48 70 0

	$jointconstrain "neckJT" x limit -37 38 0
	$jointconstrain "neckJT" y limit -48 41 0
	$jointconstrain "neckJT" z limit -28 28 0

	$jointconstrain "headJT" x limit -66 67 0
	$jointconstrain "headJT" y limit -39 66 0
	$jointconstrain "headJT" z limit -46 46 0

	$jointconstrain "hairCJTR" x limit -35 35 0
	$jointconstrain "hairCJTR" y limit -66 50 0
	$jointconstrain "hairCJTR" z limit -46 68 0

	$jointconstrain "hairCJTL" x limit -35 35 0
	$jointconstrain "hairCJTL" y limit -50 66 0
	$jointconstrain "hairCJTL" z limit -46 68 0

	$jointconstrain "bustAJTR" x limit -12 15 0
	$jointconstrain "bustAJTR" y limit -32 35 0
	$jointconstrain "bustAJTR" z limit -39 17 0

	$jointconstrain "bustAJTL" x limit -12 15 0
	$jointconstrain "bustAJTL" y limit -35 32 0
	$jointconstrain "bustAJTL" z limit -39 17 0

	$jointconstrain "skirtBAJTR" x limit 0 0 0
	$jointconstrain "skirtBAJTR" y limit -44 15 0
	$jointconstrain "skirtBAJTR" z limit 0 0 0
	$noselfcollisions
}



Yes. Just move any .smds from other folders into the same folder as the .qc.

now i get a bad command %model

You don’t have %model anywhere in your .qc. Is the error coming from the .smd?

is comming from the .qc file

Can you post the exact error?

i got it to work i was using the wrong studiomdl file and gameinfo.txt. after its done compiling is it support to go back to a single mdl file?