I love the smell of UnrealEd crashing in the morning. – tarquin
Legacy:Linking Karma Ragdolls
Update October 23rd - by SkullboX (Email addresses: SkullboX@planetquake.com)
This info will apply when the first UT2003 patch has been released. For mod developers the info below is still relevant. However, for those making custom UT2003 player models that require custom ragdoll skeletons, it will be easier when the new patch is released. The info has been posted on the this Unreal Developer Network page.
{{{1}}}
October 15th
This tutorial briefly explains how to get a custom ragdoll linked to a custom model. The tutorial isn't very detailed and written rather fast, so if you come across any problems or if it still doesn't work after having done all this, please leave me a note.
If you've got a model set up using one of the existing UT2003 skeletons, it *should* work when using one of the existing karma collision models. Make sure the Skeleton setup you chose for your model (for example, Jugg) matches the Species (Species=xGame.SPECIES_Jugg). If you've got one of the human skeletons, you should probably use SPECIES_Egypt, _Merc or _Night.
The subject model in this case is named MoP, and MoP's been imported into UnrealEd and has all the sockets set up as they should. If you need info on getting the model working in UT, go to this post by Praetorius.
It also has a custom ragdoll created for it, if you don't know how to make one take this tutorial.
Start by putting the MoP.ka file in the UT2003\KarmaData folder.
Start UnrealEd, and go to the Actor Classes tab (if you do not have that window, go to View -> Show Actor Class Browser. This should bring up a list of Unreal scripts.
Start by unchecking the two options on top of that list, 'Use 'Actor' as Parent?' and 'Placeable classes Only?'.
Once you've done that, the list of scripts should be noticeably longer. Scroll down and look for a subtree called SpeciesType, expand it. Four scripts should be there; SPECIES_Alien, SPECIES_Bot, SPECIES_Human and SPECIES_Jugg.
Now select the SpeciesType subtree, and click the new script icon on top of the browser. Behind Package, fill in something related to you model, in this case I would name it MoPScripts (Calling it just MoP will cause confusion and effors when making the .UPL file.) For name fill in SPECIES_MoP. (see Create a subclass)
Now the new script will come up, and you should see something like:
//============================================================================= // SPECIES_MoP. //============================================================================= class SPECIES_MoP extends SpeciesType placeable;
Now Open one of the other Species scripts, SPECIES_Alien for example, and copy the info from 'abstract;' to the bottom. Then go back to your own script and paste it over 'placeable'. Finally, rename "Alien2" to "MoP". Your script should look liek this by now:
//============================================================================= // SPECIES_MoP. //============================================================================= class SPECIES_MoP extends SpeciesType abstract; static function string GetRagSkelName(String MeshName) { return "MoP"; }
To finish the scripting part, chose from the class window, Tools -> Compile Changed. Then finally press View in the Actor Class Browser and check Show Packages. Select your newly created script and choose to Save Selected Packages. The created file, MoPScripts.u, shouldn't be bigger than 1 kb, if it's larger you've probably saved all the scripts together.
You're now done with the Unreal Scripting, the last step in Linking the Ragdoll to the model is to alter the UPL file of your model. Look for the part with 'species=' and change the stuff behind it to match the location of your newly created script. In my case it would look like this:
Species=MoPScripts.SPECIES_MoP
Save the UPL file, and it should work.