L4D2 Tutorial

# Custom L4D2 Character

Hey, you! We are one of the oldest mod sites on the Interwebs. Sign up and maximize your browsing experience.

• Subscribe: Get notified of new submissions like this.
• Say Thanks: Show your appreciation by sending da1barker points.
• Post: Give da1barker your thoughts on this Tutorial.
• Vote: Help da1barker win the Monthly Awards.
• Rate: Give this Tutorial a rating out of 10.
• Flag: Alert moderators and warn members of a problem with this Tutorial.
• Watch: Get notified when this Tutorial is updated.

Sound fun?

How to replace a l4d2 character with your own.

The Rigging your model tutorial he posted is awesome. But we need our l4d2 rig to get started on it so save your max file for now and lets move on. Whew ok now we need to get a character out of L4D2 and into 3ds max or whatever to replace their Character Mesh with ours and weight our character to their rig. Now using GCFScape go to your "C:\Program Files (x86)\Steam\steamapps\common\left 4 dead 2\left4dead2" folder and open the pak01_dir. Go to "models\survivors\" and select all the mechanic files should be 6 total. Right click and extract to your working models folder. Close GCFscape and go back to your files. Make 3 copies of the .vtx file and rename the endings to .dx90.vtx and .dx80.vtx and .sw.vtx. You must make these or it will not decompile all the way. Again we are going to open up both .mdl files in Notepad++ and change the beginning to "IDST,". And again we are going to decompile them using the mdldecompiler in your bin folder. :D Open up max and import your mechanic_model_merged.dmx.smd. Now we need to get your character skinned to the l4d2 rig. Position your model as best you can to the bones. Throw on the skin modifier and ad all the bones except these: ValveBiped.attachment_bandage_legL ValveBiped.forward ValveBiped.L_weapon_bone ValveBiped.attachment_bandage_armL ValveBiped.attachment_armL_T ValveBiped.weapon_bone ValveBiped.weapon_bone_Clip ValveBiped.weapon_bone_extra ValveBiped.attachment_armR_T Time to get the materials on this guy. Apply a Multi/Sub-Object material and discard the old one in max. Go back to your me2models folder and copy the garrus materials folder and put it in your working materials folder. Here you will have .vtm and .vtf files. Take your vtf files into VTFedit and export them as .tga files. Save them with the same name as their former vtf file names. Apply your .tga files to garrus... looks awesome ok make sure garrus and his rig are standing on the origin at xyz 0,0,0. Now add all the bones EXCEPT these: ValveBiped.weapon_bone_Clip ValveBiped.weapon_bone_extra ValveBiped.attachment_bandage_legL Now go through the bones you added and edit their envelopes to pull very slightly on the mesh. For example the weapon bones should have 2 or 3 verts selected on their inner hand at a pull of about .25. Doing the rigging this way I have found that it fixes the issue with characters holding axes and bats. Now it's time to export this file as a .smd. Save your max file and close max. Now we are at the home stretch. Now copy the .smd file you made and paste it 4 times in that folder. Name them phymodel.smd, garrus_idle.smd, garrus_phys.SMD, and garrusref.SMD. Now I'm not sure why but to compile this back to a mdl file we need these files in the l4d2 folder. So in common\left 4 dead 2\left4dead2\ make a folder named tools\misc\garrus and throw all your non texture files in there. Now time to edit our .qc file. The one we got when we mdldecompiled the mechanic... well the first time I tried this my qc file never decompiled from the mdl correctly so I was stuck. The way to edit the qc file is best explained here: http://www.l4dmods.com/forums/viewtopic.php?f=81&t=2554 Since I am lazy I'm just going to show you mine. :D $cd "C:\Program Files (x86)\Steam\steamapps\common\left 4 dead 2\left4dead2\tools\misc\garrus"$modelname "survivors/survivor_mechanic.mdl" $model "garrus" "garrus.smd" { //-doesn't work eyeball righteye ValveBiped.Bip01_Head1 -1.152 -1.027 69.740 eyeball_r 1.000 4.000 mechanic_head_color 0.500 //-doesn't work eyeball lefteye ValveBiped.Bip01_Head1 1.152 -1.027 69.740 eyeball_l 1.000 -4.000 mechanic_head_color 0.500 mouth 0 "mouth" ValveBiped.Bip01_Head1 0.000 1.000 0.000 }$poseparameter body_pitch -90.00 90.00 360.00 $poseparameter body_yaw -90.00 90.00 360.00$poseparameter head_pitch -90.00 90.00 360.00 $poseparameter head_yaw -90.00 90.00 360.00$cdmaterials "models\survivors\mechanic\" $cdmaterials "models\survivors\"$cdmaterials "" $texturegroup skinfamilies { {"TUR_ARM_HVYb_Diff_Base.vmt" "TUR_ARM_HVYb_Norm_Base.vmt" "TUR_EYE_Diff.vmt" "TUR_EYE_Iris_Norm.vmt" "TUR_HED_PROGarrus_Damage_Norm.vmt" "TUR_HED_PROGarrus_Diff.vmt" } {"TUR_ARM_HVYb_Diff_Base.vmt" "TUR_ARM_HVYb_Norm_Base.vmt" "TUR_EYE_Diff.vmt" "TUR_EYE_Iris_Norm.vmt" "TUR_HED_PROGarrus_Damage_Norm.vmt" "TUR_HED_PROGarrus_Diff.vmt" } }$attachment "eyes" "ValveBiped.Bip01_Head1" 2.32 -2.55 0.06 rotate 0.00 -89.37 -90.00 $attachment "mouth" "ValveBiped.Bip01_Head1" 0.76 -5.54 -0.14 rotate -0.00 -80.00 -90.00$attachment "survivor_light" "ValveBiped.Bip01_Spine2" 5.73 22.92 -0.00 rotate -0.00 -0.00 -0.00 $attachment "forward" "ValveBiped.forward" -0.00 0.00 0.00 rotate 0.00 -0.00 0.00$attachment "pistol" "ValveBiped.Bip01_R_Thigh" -3.16 1.95 -5.18 rotate -3.66 -0.47 88.48 $attachment "weapon_bone" "ValveBiped.weapon_bone" 0.00 0.00 0.00 rotate 0.00 0.00 -0.00$attachment "medkit" "ValveBiped.Bip01_Spine4" -1.22 -5.31 -1.25 rotate 5.03 77.16 0.00 $attachment "primary" "ValveBiped.Bip01_Spine4" 2.92 -4.69 -2.50 rotate -13.70 170.19 174.29$attachment "attach_R_shoulderBladeAim" "ValveBiped.Bip01_Spine4" -10.07 -1.33 -4.85 rotate -90.00 -102.85 0.00 $attachment "attach_L_shoulderBladeAim" "ValveBiped.Bip01_Spine4" -10.07 -1.33 3.36 rotate -90.00 -102.85 0.00$attachment "melee" "ValveBiped.Bip01_Spine4" 2.61 -5.06 4.98 rotate 24.08 175.37 97.14 $attachment "molotov" "ValveBiped.Bip01_Spine" -3.43 -2.62 7.54 rotate -63.44 -74.67 -101.41$attachment "grenade" "ValveBiped.Bip01_Spine" -0.73 1.26 8.48 rotate -90.00 -175.23 0.00 $attachment "pills" "ValveBiped.Bip01_Spine" -4.48 3.86 -7.36 rotate -39.75 -103.16 -81.96$attachment "lfoot" "ValveBiped.Bip01_L_Foot" 0.00 4.78 -0.00 rotate -0.00 -0.00 -0.00 $attachment "rfoot" "ValveBiped.Bip01_R_Foot" 0.00 4.77 0.00 rotate -0.00 0.00 -0.00$attachment "muzzle_flash" "ValveBiped.Bip01_L_Hand" 0.00 0.00 0.00 rotate 0.00 0.00 -0.00 $attachment "survivor_neck" "ValveBiped.Bip01_Neck1" -0.00 0.00 -0.00 rotate -0.00 0.00 -0.00$attachment "forward" "ValveBiped.forward" -0.00 0.00 0.00 rotate 0.00 -0.00 0.00 $attachment "bleedout" "ValveBiped.Bip01_Pelvis" 9.07 9.55 4.78 rotate -0.00 0.00 0.00$attachment "survivor_light" "ValveBiped.Bip01_Spine2" 5.73 22.92 -0.00 rotate -0.00 -0.00 -0.00 $attachment "legL_B" "ValveBiped.attachment_bandage_legL" 0.00 0.00 0.00 rotate -90.00 -90.00 0.00$attachment "armL_B" "ValveBiped.attachment_bandage_armL" 0.00 0.00 0.00 rotate -90.00 -90.00 0.00 $attachment "armL_T" "ValveBiped.attachment_armL_T" 0.00 0.00 0.00 rotate -90.00 -90.00 0.00$attachment "armR_T" "ValveBiped.attachment_armR_T" -0.00 0.00 0.00 rotate -90.00 -90.00 0.00 $attachment "armL" "ValveBiped.Bip01_L_Forearm" 0.00 0.00 0.00 rotate -0.00 0.00 0.00$attachment "legL" "ValveBiped.Bip01_L_Calf" 0.00 0.00 0.00 rotate -0.00 -0.00 -0.00 $attachment "thighL" "ValveBiped.Bip01_L_Thigh" 0.00 0.00 0.00 rotate -0.00 -0.00 -0.00$attachment "spine" "ValveBiped.Bip01_Spine" 0.00 0.00 0.00 rotate -90.00 -90.00 0.00 $includemodel "survivors/anim_mechanic.mdl"$includemodel "survivors/anim_gestures.mdl" $surfaceprop "flesh"$eyeposition -0.000 0.000 70.000 $illumposition -0.315 -1.427 34.650$sequence garrus "garrus" fps 30.00 $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$ikchain ikclip ValveBiped.weapon_bone_Clip knee 0.707 -0.707 0.000 $collisionjoints "phymodel.smd" { $mass 100.0
$inertia 10.00$damping 0.05
$rotdamping 5.00$rootbone "valvebiped.bip01_pelvis"
$jointrotdamping "valvebiped.bip01_pelvis" 3.00$jointmassbias "valvebiped.bip01_spine1" 8.00
$jointconstrain "valvebiped.bip01_spine1" x limit -10.00 10.00 0.00$jointconstrain "valvebiped.bip01_spine1" y limit -16.00 16.00 0.00
$jointconstrain "valvebiped.bip01_spine1" z limit -20.00 30.00 0.00$jointmassbias "valvebiped.bip01_spine2" 9.00
$jointconstrain "valvebiped.bip01_spine2" x limit -10.00 10.00 0.00$jointconstrain "valvebiped.bip01_spine2" y limit -10.00 10.00 0.00
$jointconstrain "valvebiped.bip01_spine2" z limit -20.00 20.00 0.00$jointmassbias "valvebiped.bip01_r_clavicle" 4.00
$jointrotdamping "valvebiped.bip01_r_clavicle" 6.00$jointconstrain "valvebiped.bip01_r_clavicle" x limit -15.00 15.00 0.00
$jointconstrain "valvebiped.bip01_r_clavicle" y limit -10.00 10.00 0.00$jointconstrain "valvebiped.bip01_r_clavicle" z limit -0.00 45.00 0.00

$jointmassbias "valvebiped.bip01_l_clavicle" 4.00$jointrotdamping "valvebiped.bip01_l_clavicle" 6.00
$jointconstrain "valvebiped.bip01_l_clavicle" x limit -15.00 15.00 0.00$jointconstrain "valvebiped.bip01_l_clavicle" y limit -10.00 10.00 0.00
$jointconstrain "valvebiped.bip01_l_clavicle" z limit -0.00 45.00 0.00$jointmassbias "valvebiped.bip01_l_upperarm" 5.00
$jointrotdamping "valvebiped.bip01_l_upperarm" 2.00$jointconstrain "valvebiped.bip01_l_upperarm" x limit -15.00 20.00 0.00
$jointconstrain "valvebiped.bip01_l_upperarm" y limit -40.00 32.00 0.00$jointconstrain "valvebiped.bip01_l_upperarm" z limit -80.00 25.00 0.00

$jointmassbias "valvebiped.bip01_l_forearm" 4.00$jointrotdamping "valvebiped.bip01_l_forearm" 4.00
$jointconstrain "valvebiped.bip01_l_forearm" x limit -40.00 15.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 10.00 0.00$jointrotdamping "valvebiped.bip01_l_hand" 1.00
$jointconstrain "valvebiped.bip01_l_hand" x limit -25.00 25.00 0.00$jointconstrain "valvebiped.bip01_l_hand" y limit -35.00 35.00 0.00
$jointconstrain "valvebiped.bip01_l_hand" z limit -50.00 50.00 0.00$jointmassbias "valvebiped.bip01_r_upperarm" 5.00
$jointrotdamping "valvebiped.bip01_r_upperarm" 2.00$jointconstrain "valvebiped.bip01_r_upperarm" x limit -15.00 20.00 0.00
$jointconstrain "valvebiped.bip01_r_upperarm" y limit -40.00 32.00 0.00$jointconstrain "valvebiped.bip01_r_upperarm" z limit -80.00 25.00 0.00

$jointmassbias "valvebiped.bip01_r_forearm" 4.00$jointrotdamping "valvebiped.bip01_r_forearm" 4.00
$jointconstrain "valvebiped.bip01_r_forearm" x limit -40.00 15.00 0.00$jointconstrain "valvebiped.bip01_r_forearm" y limit 0.00 0.00 0.00
$jointconstrain "valvebiped.bip01_r_forearm" z limit -120.00 10.00 0.00$jointrotdamping "valvebiped.bip01_r_hand" 1.00
$jointconstrain "valvebiped.bip01_r_hand" x limit -25.00 25.00 0.00$jointconstrain "valvebiped.bip01_r_hand" y limit -35.00 35.00 0.00
$jointconstrain "valvebiped.bip01_r_hand" z limit -50.00 50.00 0.00$jointmassbias "valvebiped.bip01_r_thigh" 7.00
$jointrotdamping "valvebiped.bip01_r_thigh" 7.00$jointconstrain "valvebiped.bip01_r_thigh" x limit -25.00 25.00 0.00
$jointconstrain "valvebiped.bip01_r_thigh" y limit -10.00 15.00 0.00$jointconstrain "valvebiped.bip01_r_thigh" z limit -55.00 25.00 0.00

$jointmassbias "valvebiped.bip01_r_calf" 4.00$jointconstrain "valvebiped.bip01_r_calf" x limit -10.00 25.00 0.00
$jointconstrain "valvebiped.bip01_r_calf" y limit -5.00 5.00 0.00$jointconstrain "valvebiped.bip01_r_calf" z limit -10.00 115.00 0.00

$jointrotdamping "valvebiped.bip01_r_foot" 2.00$jointconstrain "valvebiped.bip01_r_foot" x limit -20.00 30.00 0.00
$jointconstrain "valvebiped.bip01_r_foot" y limit -30.00 20.00 0.00$jointconstrain "valvebiped.bip01_r_foot" z limit -30.00 50.00 0.00

$jointmassbias "valvebiped.bip01_l_thigh" 7.00$jointrotdamping "valvebiped.bip01_l_thigh" 7.00
$jointconstrain "valvebiped.bip01_l_thigh" x limit -25.00 25.00 0.00$jointconstrain "valvebiped.bip01_l_thigh" y limit -10.00 15.00 0.00
$jointconstrain "valvebiped.bip01_l_thigh" z limit -55.00 25.00 0.00$jointmassbias "valvebiped.bip01_l_calf" 4.00
$jointconstrain "valvebiped.bip01_l_calf" x limit -10.00 25.00 0.00$jointconstrain "valvebiped.bip01_l_calf" y limit -5.00 5.00 0.00
$jointconstrain "valvebiped.bip01_l_calf" z limit -10.00 115.00 0.00$jointrotdamping "valvebiped.bip01_l_foot" 2.00
$jointconstrain "valvebiped.bip01_l_foot" x limit -20.00 30.00 0.00$jointconstrain "valvebiped.bip01_l_foot" y limit -30.00 20.00 0.00
$jointconstrain "valvebiped.bip01_l_foot" z limit -30.00 50.00 0.00$jointmassbias "valvebiped.bip01_head1" 4.00
$jointrotdamping "valvebiped.bip01_head1" 3.00$jointconstrain "valvebiped.bip01_head1" x limit -50.00 50.00 0.00
$jointconstrain "valvebiped.bip01_head1" y limit -20.00 20.00 0.00$jointconstrain "valvebiped.bip01_head1" z limit -26.00 30.00 0.00
So you want custom portraits for your character for the lobby, in game mug shot, and the incap survivor portrait. Well lets add that to our character addon. In the garrus mechanic replacement folder in materials make a folder named " VGUI". Now lets jump back into GCFScape and open back up the pak01_dir. In here go to materials/vgui/ and grab the s_panel_lobby_mechanic.vmt and .vtf, the s_panel_mechanic.vmt and .vtf, and the s_panel_mechanic_incap.vmt and vtf. and export them to the vgui folder you made. Open the vtf files in VTFEdit and export them as tgas to edit in photoshop or whatever. Make sure that when you edit the incap image that you export it back out at a 32 bit targa to keep the alpha channel. Over write the original vtf files with your new images and your done. You can drag the garrus mechanic replacement folder onto the vpk shortcut to make a .vpk addon for l4d2.
currently not working -> So you want custom names for your survivors. Well this is a little tricky. "If you have a different mod working with the same character there may be a conflict of interest and the game will only display one of the addons." This applies to this part especially. Make a new folder outside your garrus folder and name it New Names. Inside make a folder named "resource". Now lets jump back into GCFScape and open back up the pak01_dir. In here go inside the resource folder and select " l4d360ui_english.txt" and export it to your resource folder. Open the txt file and go down to "L4D360UI_Mechanic" "Ellis" change ellis to garrus and save the file. That's it! You can drag the New Names folder onto the vpk shortcut to make a .vpk addon for l4d2. Edit this addon for changing the names of other players in your game. FYI: Using this tutorial you will NOT have to edit the pak01_dir.vpk or whitelist.cfg [img]http://i45.photobucket.com/albums/f94/Dabarker/part1.jpg[/img] [img]http://i45.photobucket.com/albums/f94/Dabarker/part2.jpg[/img] [img]http://i45.photobucket.com/albums/f94/Dabarker/part3.jpg[/img] Hmm Ill try to add the youtube vid of my: [L4D2] [MW2 Survivor Models by da1barker] [Modern Warfare 2] [img]http://i45.photobucket.com/albums/f94/Dabarker/blogpromo.png[/img] Visit my Gaming Blog! :D http://timespentgaming.blogspot.com/

• 4 years ago:

## Hey your Tutorial is Really good! Can u Make A video on YouTube About It??

• 4 years ago:
Is this still the way to go when making character mods? I would like to give it a try and the mention of Gary's Mods gives me hope for my next question. Would we be able to use character models from the Program called XNALara?
Bananite
• 5 years ago:
Okay, I've hit a dead end. I've been following this tutorial to try and import Snow Villers from FFXIII to replace Nick, and the farthest I've gotten is the part where you jump from importing the Ellis file into 3DS Max to you saying "make sure you match up the bones." What am I supposed to do inbetween? Is this some character rigging stuff that you've gotta have much more experience 3DS Max to use? Am I just going about this like an idiot and missing the point completely? I've literally hit a dead end here, and could any help I could get right now.
Bananite
• 5 years ago:
EDIT I figured out what my problem was, it was Blender. For future reference to everyone, YOU CANNOT USE BLENDER. You might be able to attach each bone like you need to, but there is not a script or addon in existance yet that exports an SMD correctly. As far as I can see, 3DS Max is our only option. Anyway, I am at the end processes, making a QC file, and compiling it. I think I have a correct QC file made for this, but the compiler won't do anything. It says its creating the command line for it, and it just sits there. I have waited for over an hour for it, and checked the process as well, which showed that it was doing absolutely nothing. Can someone help me?
Bananite
• Anonymous
5 years ago:
editing the l4d360ui_english.txt file continue to this tutorials link http://www.gamebanana.com/tuts/10497
• Anonymous
5 years ago:
fix for modding l4d360uienglish.txt file http://www.gamebanana.com/tuts/10497
• 6 years ago:
FACEPALMS How do you change names without editing the pak? :\ I've tried editing the l4d360ui_english.txt file and the subtitles_english.txt file but nothing :\
• 6 years ago:
i know you don usualy respond to comments but i wouldent ask unless i really need help! The SMD importer and exporter plugins wont work? When i load up 3Ds max it says invalid or something like that and then when it 3ds max i go to plugins and load all the plugins needed but i still cant import my hunter.mdl file? PLEASE HELP ME!
Snee Snee
• 6 years ago:
Hello you will make turtorial how to fix to work with "the sacrifice" or they will fix that?
• 6 years ago:
is there a way to like import skins from other valve games or mods ??i would like to have neotokyo skins :D if there a way easier that creating xD the skins tell me plz :D and i should give u a cookie :D
Bananite

### Share

Shareable Image:
HTML embed code:
BB embed code:
Markdown embed code:

More embeddable images

Key Authors
da1barker

da1barker
Creator

Genre
Other/Misc
Difficulty Level

Posts
40
Views
86,959
6 years ago
Date Modified
4 years ago

9.9 Expert