News:

One Minute Game Review by The Happy Friar: https://ugetube.com/@OneMinteGameReviews
Also on Rumble: https://rumble.com/c/c-1115371

idTech 4 (aka Doom 3 tech) Discord Server! https://discord.gg/9wtCGHa

Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - deadite4

#1
Zeroth's work on the HUBs for Hexen was really more of the initial stuff.  Since release, Solarsplace really did a lot more to it with fixing the bugs we had and adding in a lot more data that's now saved.  He'd be one to ask if he recalls the overview of it.
#2
Also, are you just making a mod for Doom 3 or compile the GPL code?  If just the SDK for a Doom 3 mod, you can do that with free tools.
#3
id Tech 4 Needs Help / Re: All the basics
July 30, 2014, 07:10:42 AM
yes, I was on the team.  Our method is below, we also did this for the healthvial and armorbonus as those allow you to go over max as well.  You need to know how to compile though for any SDK work so before you go modifying these files, you should work on getting set up just to compile the vanilla SDK.

what we did:

In player.h:
enum {
BERSERK = 0,
INVISIBILITY,
MEGAHEALTH,
ADRENALINE,
HEALTHVIAL, // SnoopJeDi
ARMORBONUS, // SnoopJeDi
MEGAARMOR, // SnoopJeDi
MAX_POWERUPS
};


In player.cpp within idPlayer::GivePowerUp:

case MEGAARMOR: {   //SnoopJeDi
inventory.AddPickupName("Mega Armor", "");
def = gameLocal.FindEntityDef( "item_mega_armor", false );
if ( def && inventory.armor < spawnArgs.GetInt ( "maxbonusarmor" ) ) {
inventory.armor += def->dict.GetInt( "inv_armor" );
if ( inventory.armor > spawnArgs.GetInt ( "maxbonusarmor" ) ) {
inventory.armor = spawnArgs.GetInt ( "maxbonusarmor" );
}
}
break;
}


In items.def:
entityDef item_mega_armor {
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 0"
"editor_maxs" "16 16 32"
"editor_usage" "Mega Armor"

"spawnclass" "idItemPowerup"
"model" "models/items/armor/megaarmor.lwo"
"snd_acquire" "armor_bonus"
"size" "32 32 32"
"inv_name" "Mega Armor"
"inv_armor" "200"
  "respawn"            "0"
  "time"                "30"
"spin"       "0"
  "type"                "6"   // MUST MATCH ONE OF THE DEFINES IN PLAYER.H
}
#4
id Tech 4 Scripting / Re: Tutorial: FX System
July 29, 2014, 07:28:01 AM
I've never used a func_fx in a map before so was unaware.  I've always specifically used them as part of some type of entity/script/etc.

If you can list any other use cases, I can update my initial post to make the tutorial more thorough to cover more scenarios.  I'll also revise the attached PDF of the thread as well(which hopefully people will save as the backup to ever loosing the thread).

Never spent any time trying to work with Q4/ETQW though.  Feel free to move this thread to the scripting forum if you want.  Should we post all tutorials over there?  I'll try to put a few others together that have been asked for over the next week.
#5
id Tech 4 Scripting / Tutorial: FX System
July 28, 2014, 10:01:49 PM
The FX system in id tech 4 is a great way to create an effect that is essentially a multi-layered effect using any combination of media types you'd like.  While you can typically create the same type of effect using various scripting methods, it's often easier and more efficient to create an FX declaration.

The types of actions you can call within a single FX decl. are lights, particles, models, entities, sounds, decals, and projectiles.

You can set these in DEF entries as well as call them directly in scripts.  An FX declaration is contained within a .fx file placed in your /base/fx directory.

Keywords include(table from iddevnet.com):



























delay <time>How long (in seconds) after starting the effect before this action happens
shake <time> <amplitude> <distance> <falloff> <impulse>Shake the player around a bit.
ignoreMasterDon't shake the entity this effect is attached to
random <min>, <max>A random time added to the delay.
fire <sibling>Causes the sibling action to happen when this action does. This is a way of synching two random actions.
duration <time>How long the action lasts before it is killed or restarted
restart <bool>Set to 1 if the action starts again after the 'duration' has run out
fadeIn <time>Fade in the RGB of the light or model over <time> seconds
fadeOut <time>Fade out the light/model. Ignored if fadeIn is set, you can use 2 separate actions (tied together with uselight) if you want a light to fade in and out.
offset <x>, <y>, <z>Offset from the origin of the entity (or bind point) this action is located at
axis <x>, <y>, <z>Axis of the model, mutually exclusive with angle
angle <pitch>, <yaw>, <roll>Alternate way of setting the axis of the model
light <material>, <red>, <green>, <blue>, <radius>Create a light
noshadowsThe light in this effect doesn't cast shadows
attachlight <light>Attach to external light (a light not defined in the effect) for fading.
attachentity <entity>Attach to an external entity.
launch <entity>Launches a projectile.
uselight <sibling>Modify the light values in a sibling action. Can be used to fade out a light that faded in earlier.
useModel <model>Modify the model in a sibling action. Can be used to fade out a particle in a sibling.
model <model>Creates (or fades in) a model
particle <model>Creates (or fades in) a particle
decal <material>Applies the specified decal to the ground (and anything else in the area)
size <int>Size of the decal
trackorigin <bool>Move around with the entity (vs stationary after spawning)
sound <sndshader>Start a sound (on any channel)

Example FX entry:

fx fx/velch_death
{

     {
      name "gibpart1"
      delay 0
      duration 3.0
      particle "hex_gib_eoc_01.prt"     
   }
   
     {
      name "velchdecal"
      delay 0
      duration 25
      decal "textures/decals/dsplat2"
      size 96
   }     
}


This a basic 2 part FX used when monster_velch dies.  When the decl is called it spawns two different entities.  The first named "gibpart1" is the dense blood particle you see in the image.  With a 0 delay and 3.0 duration the particle spawns the specified particle immediately and is removed after 3 seconds.

The second part named "velchdecal" is the splatter you see on the floor.  Again we spawn it immediately using a 0 delay but we leave the decal on the ground for a duration of 25 seconds.  We use the material declaration "textures/decals/dsplat2" scaled at 96x96.

In ai_monster_velch.script, we simply call it during "state_killed":

void monster_velch::state_Killed() {
     startFx("fx/velch_death");

   animState( ANIMCHANNEL_TORSO, "Torso_Death", 0 );
   animState( ANIMCHANNEL_LEGS, "Legs_Death", 0 );
   
   waitAction( "dead" );
   hide();
   
   sys.wait( 4 );      //give sounds time to fade out
   stopMove();
   stopSound( SND_CHANNEL_ANY, 0 );
   setState( "state_Dead" );
}
#6
id Tech 4 Mods / Re: Tutorial requests
July 28, 2014, 08:04:42 AM
QuoteI don't really know much about how blood decals are generated, but I know a way to prevent all decals from fading.

Be careful with that.  Id tech 4 has an entity limit per map and each decal counts as an entity. If they don't fade/get removed after a period of time then you will be constantly growing your entity count for any given map as you play.  If you reach the predefined entity limit of the engine, you're map will crash out.

I can write up an explanation on FX/Gib system in the next day or so.  At least the specifics on how we utilize it in Hexen.
#7
id Tech 4 Needs Help / Re: All the basics
July 27, 2014, 07:45:37 PM
It depends on what you are trying to do.  The types based in order starting with 0 are:

enum {
BERSERK = 0,
INVISIBILITY,
MEGAHEALTH,
ADRENALINE,


As you see megahealth uses a 'type' however standard combat armor does not.  The standard armor value can easily be modified in the .def file:

entityDef item_armor_security {
"inherit" "item_default"
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 0"
"editor_maxs" "16 16 32"
"editor_usage" "Armor"

"spawnclass" "idItem"
"model" "models/items/armor/armor.lwo"
"snd_acquire" "sound_vest_acquire"
"size" "32 32 32"
"inv_name" "Armor"
"inv_armor" "100"
}


Just change "100" to whatever you want.  You will most likely need to do some SDK work if you want it to go over the max to my knowledge.  We did for the mega armor in cdoom years back to take you to 200.
#8
Welcome! / Re: Welcome to the id Tech Forums!
July 27, 2014, 09:13:24 AM
Yeah, that works a lot better(at least for me!).  I wouldn't mind going to the smaller text that you had at the bottom if it helps keep things more neat and tidy.

I'd also be completely fine with the sidebar at tastyspleen.  Really just a quick way for a visitor to see the last X amount of recent posts.  Besides being useful to myself, a new visitor could at least see kind of what's immediately trending and that the board has activity in general going on.

QuoteBTW, why don't you stay signed in?

Basically a habit since I was a kid sharing a family computer.
#9
Welcome! / Re: Welcome to the id Tech Forums!
July 26, 2014, 08:04:13 AM
My issue is I typically only sign in if I plan to post something.  So without signing in, you don't get those features of minimizing subforums, unread posts, etc.  When you come here as just a visitor, all you get is this wall of unposted in forums/subforums and to see what recent activity there is it's a long scroll down to see what's going on.

The main portal on D3W was great because you could see right before you went into the forum, what was currently going on.  It's tough to know what's going on here without signing in.
#10
Welcome! / Re: Welcome to the id Tech Forums!
July 25, 2014, 08:07:39 AM
How large of a banner?  I ask because really my only current complaint on the overall look of the forum is just how many forums there actually are.  When I'm not logged in it's a long scroll to get all the way to the recent posts section, especially when I have zero interest in tech 1, 2 or 3 discussions.

I wouldn't mind the idea, but I'd hate to add more to an already lengthy forum main page.  Is there a way to more efficiently make them into subforums so they aren't their own lines?
#11
id Tech 4 Mods / Re: Tutorial requests
July 23, 2014, 06:03:31 PM
alright, so the decals get thrown on the wall/floor when hitting an enemy using the weapons damage entity_def.  so in our weapon_mace.def, we have:

entityDef damage_mace {
"damage" "32"
..
..
        ..
"mtr_splat_flesh" "textures/decals/dsplat2"
"mtr_splat_flesh2" "textures/decals/dsplat5"
"mtr_splat_flesh3" "textures/decals/dsplat7"
"mtr_splat_flesh4" "textures/decals/dsplat11"


so maybe distance can't be controlled easily.  We do use the FX system for gibs though, I just looked and confirmed that.  you can also use "smoke_wound_flesh" in the damage entry too, that spawns a particle from the location you hit.  We use it for a little blood drip particle that comes out for a few seconds after a hit.
#12
Mesh sent.  This thing was completely made in Blender so even if I could track down the source file it wouldn't be Max format.
#13
I don't have the max file, but if you want it I can send the md5mesh?  Do you have an importer?
#14
here's how our Roden NPC is set up, if it helps to your fingers question:

numJoints 112
numMeshes 9

joints {
"origin" -1 ( 0.000000 0.000000 0.000000 ) ( -0.500000 -0.500000 -0.500000 ) //
"hips" 0 ( -2.441581 -0.000002 66.859856 ) ( -0.338746 0.338745 0.620686 ) // origin
"spine" 1 ( -3.394388 -0.000002 73.297157 ) ( 0.705199 0.051907 0.051907 ) // hips
"lwrobes1_front" 2 ( 6.022651 0.619565 64.566200 ) ( 0.698326 0.028608 0.026686 ) // spine
"lwrobes2_front" 3 ( 7.458486 1.047138 46.242867 ) ( 0.723856 -0.021213 0.015586 ) // lwrobes1_front
"lwrobes3_front" 4 ( 7.229933 -0.153314 21.481441 ) ( 0.722083 -0.002598 0.008855 ) // lwrobes2_front
"lwrobes1_left" 2 ( -1.945115 7.244762 65.679848 ) ( 0.043424 0.754587 -0.654751 ) // spine
"lwrobes2_left" 6 ( -0.949212 9.521703 49.465508 ) ( -0.020418 0.739116 -0.672496 ) // lwrobes1_left
"lwrobes3_left" 7 ( -2.279218 11.233120 31.516857 ) ( 0.665625 0.012324 0.017727 ) // lwrobes2_left
"lwrobes3_left.001" 8 ( -2.279218 11.233123 31.516846 ) ( 0.637829 -0.025714 0.003344 ) // lwrobes3_left
"lwrobes1_right" 2 ( -1.945105 -7.244766 65.679855 ) ( 0.754579 0.043426 -0.003684 ) // spine
"bigbag" 10 ( -1.090523 -9.488633 52.261459 ) ( 0.833807 -0.000689 0.000049 ) // lwrobes1_right
"lwrobes2_right" 10 ( -0.949199 -9.521699 49.465511 ) ( 0.739115 -0.020418 -0.032256 ) // lwrobes1_right
"lwrobes3_right" 12 ( -2.279202 -11.233110 31.516859 ) ( -0.012325 -0.665623 0.745976 ) // lwrobes2_right
"lwrobes1_back" 2 ( -7.879509 0.119820 67.426674 ) ( 0.713243 -0.012000 -0.013793 ) // spine
"lwrobes2_back" 14 ( -8.838302 -0.348775 41.141113 ) ( 0.711118 -0.045442 -0.001956 ) // lwrobes1_back
"lwrobes3_back" 15 ( -10.018746 -0.548238 23.661034 ) ( 0.717375 -0.054415 -0.042806 ) // lwrobes2_back
"waist" 1 ( -3.394388 -0.000002 73.297157 ) ( 0.010772 -0.707022 -0.707028 ) // hips
"ribs" 17 ( -3.580053 -0.000002 79.388367 ) ( 0.111186 -0.698310 -0.698311 ) // waist
"clavicle_l" 18 ( 0.685534 0.745040 89.168274 ) ( 0.084654 -0.625688 -0.250583 ) // ribs
"upperarm_l" 19 ( -4.233539 7.984430 89.706436 ) ( 0.237966 0.008863 0.088133 ) // clavicle_l
"forearm_l" 20 ( -1.347315 22.377129 82.127365 ) ( 0.264074 0.652674 0.130335 ) // upperarm_l
"hand_l" 21 ( 5.845336 33.665165 79.415840 ) ( 0.319195 0.616453 0.210267 ) // forearm_l
"finger_index1_l" 22 ( 8.957327 37.005531 79.550407 ) ( 0.197038 0.633780 0.200214 ) // hand_l
"finger_index2_l" 23 ( 9.799080 38.322353 79.503143 ) ( 0.261959 0.638058 0.236223 ) // finger_index1_l
"finger_index3_l" 24 ( 10.446131 39.061398 79.446922 ) ( 0.231331 0.603198 0.270569 ) // finger_index2_l
"finger_middle1_l" 22 ( 8.911466 37.078869 78.619682 ) ( 0.250103 0.621174 0.126335 ) // hand_l
"finger_middle2_l" 26 ( 9.801197 38.592125 78.244263 ) ( 0.341613 0.624562 0.208809 ) // finger_middle1_l
"finger_middle3_l" 27 ( 10.414077 39.181290 78.073166 ) ( 0.318256 0.584791 0.263226 ) // finger_middle2_l
"finger_ring1_l" 22 ( 8.819520 36.846760 77.657959 ) ( 0.305080 0.608260 0.137373 ) // hand_l
"finger_ring2_l" 29 ( 9.772655 38.147076 77.202141 ) ( 0.323285 0.648693 0.061152 ) // finger_ring1_l
"finger_ring3_l" 30 ( 10.096028 38.650417 76.968056 ) ( 0.346411 0.615420 0.170419 ) // finger_ring2_l
"finger_pinky1_l" 22 ( 8.669971 36.576477 77.029320 ) ( 0.336536 0.577708 0.077026 ) // hand_l
"finger_pinky2_l" 32 ( 9.433249 37.732700 76.408669 ) ( 0.407961 0.631928 0.042267 ) // finger_pinky1_l
"finger_pinky3_l" 33 ( 9.812661 38.173470 76.087746 ) ( 0.385289 0.604356 0.089684 ) // finger_pinky2_l
"thumb1_l" 22 ( 7.693716 34.562462 80.661644 ) ( 0.235293 0.687491 0.253293 ) // hand_l
"thumb2_l" 35 ( 8.516370 35.529953 80.722351 ) ( 0.253145 0.702450 0.299362 ) // thumb1_l
"thumb3_l" 36 ( 9.410604 36.400681 80.872993 ) ( 0.238416 0.632907 0.214089 ) // thumb2_l
"finger_middle1_l.001" 22 ( 8.306764 36.332298 78.772217 ) ( 0.273924 0.595325 0.203065 ) // hand_l
"finger_index1_l.001" 22 ( 8.436560 36.371494 79.622360 ) ( 0.268283 0.658069 0.207665 ) // hand_l
"finger_ring1_l.001" 22 ( 8.249817 36.179855 77.907219 ) ( 0.332162 0.615007 0.154844 ) // hand_l
"finger_pinky1_l.001" 22 ( 8.197562 36.051353 77.414185 ) ( 0.413840 0.633563 0.048243 ) // hand_l
"tprobes2main_l" 21 ( 0.545042 27.140177 79.088959 ) ( 0.751626 -0.131676 0.087303 ) // forearm_l
"tprobes2.1_l" 42 ( -1.236726 20.825157 73.466301 ) ( 0.308956 0.060639 0.129613 ) // tprobes2main_l
"tprobes3.1_l" 42 ( 0.448107 21.196642 75.988464 ) ( 0.308956 0.060640 0.129613 ) // tprobes2main_l
"tprobes1.1_l" 42 ( -5.875816 22.161150 74.970741 ) ( 0.308954 0.060638 0.129613 ) // tprobes2main_l
"tprobes1controler1_l" 21 ( 1.115623 26.446686 84.221458 ) ( 0.144327 -0.066856 0.295615 ) // forearm_l
"tprobes1main_l" 20 ( -2.519182 15.523667 82.834702 ) ( 0.749164 0.032488 0.182859 ) // upperarm_l
"tprobes2_l" 47 ( -2.034637 10.676375 79.283836 ) ( 0.308956 0.060640 0.129613 ) // tprobes1main_l
"tprobes3_l" 47 ( -0.349805 11.047863 81.805992 ) ( 0.308956 0.060640 0.129612 ) // tprobes1main_l
"tprobes1_l" 47 ( -6.673727 12.012368 80.788292 ) ( 0.308956 0.060640 0.129613 ) // tprobes1main_l
"tprobes1controler_l" 20 ( -2.637823 16.447449 87.717415 ) ( 0.162590 -0.021689 0.075426 ) // upperarm_l
"clavicle2_l" 20 ( -4.118257 11.183619 90.908325 ) ( 0.123194 -0.556837 0.204467 ) // upperarm_l
"clavicle2b_l" 19 ( -9.132840 7.938765 88.351295 ) ( -0.120959 -0.677488 -0.073611 ) // clavicle_l
"xbelt_l" 19 ( -3.561391 7.883228 92.250893 ) ( 0.616541 -0.333081 -0.547760 ) // clavicle_l
"clavicle_r" 18 ( 0.685535 -0.745038 89.168274 ) ( -0.625688 0.084654 -0.733864 ) // ribs
"upperarm_r" 55 ( -4.233528 -7.984435 89.706436 ) ( -0.008863 -0.237965 0.967226 ) // clavicle_r
"forearm_r" 56 ( -1.347285 -22.377127 82.127365 ) ( -0.652674 -0.264075 0.698064 ) // upperarm_r
"hand_r" 57 ( 5.845382 -33.665154 79.415840 ) ( -0.616452 -0.319195 0.688396 ) // forearm_r
"finger_index1_r" 58 ( 8.957378 -37.005512 79.550407 ) ( -0.633780 -0.197039 0.720703 ) // hand_r
"finger_index2_r" 59 ( 9.799133 -38.322334 79.503143 ) ( -0.638058 -0.261959 0.684440 ) // finger_index1_r
"finger_index3_r" 60 ( 10.446184 -39.061378 79.446922 ) ( -0.603198 -0.231332 0.713743 ) // finger_index2_r
"finger_middle1_r" 58 ( 8.911516 -37.078857 78.619682 ) ( -0.621174 -0.250103 0.731868 ) // hand_r
"finger_middle2_r" 62 ( 9.801250 -38.592106 78.244263 ) ( -0.624561 -0.341613 0.670539 ) // finger_middle1_r
"finger_middle3_r" 63 ( 10.414129 -39.181271 78.073166 ) ( -0.584791 -0.318257 0.698172 ) // finger_middle2_r
"finger_ring1_r" 58 ( 8.819571 -36.846748 77.657959 ) ( -0.608259 -0.305081 0.719774 ) // hand_r
"finger_ring2_r" 65 ( 9.772707 -38.147057 77.202141 ) ( -0.648693 -0.323286 0.686254 ) // finger_ring1_r
"finger_ring3_r" 66 ( 10.096081 -38.650398 76.968056 ) ( -0.615419 -0.346411 0.687179 ) // finger_ring2_r
"finger_pinky1_r" 58 ( 8.670022 -36.576466 77.029320 ) ( -0.577707 -0.336536 0.739638 ) // hand_r
"finger_pinky2_r" 68 ( 9.433299 -37.732681 76.408669 ) ( -0.631927 -0.407961 0.657609 ) // finger_pinky1_r
"finger_pinky3_r" 69 ( 9.812714 -38.173450 76.087746 ) ( -0.604356 -0.385289 0.691566 ) // finger_pinky2_r
"thumb1_r" 58 ( 7.693762 -34.562450 80.661644 ) ( -0.687491 -0.235294 0.638620 ) // hand_r
"thumb2_r" 71 ( 8.516418 -35.529942 80.722351 ) ( -0.702450 -0.253146 0.594023 ) // thumb1_r
"thumb3_r" 72 ( 9.410653 -36.400661 80.872993 ) ( -0.632907 -0.238416 0.704807 ) // thumb2_r
"finger_middle1_r.001" 58 ( 8.306813 -36.332287 78.772217 ) ( -0.595324 -0.273924 0.727543 ) // hand_r
"finger_index1_r.001" 58 ( 8.436608 -36.371483 79.622360 ) ( -0.658069 -0.268283 0.672194 ) // hand_r
"finger_ring1_r.001" 58 ( 8.249866 -36.179844 77.907219 ) ( -0.615006 -0.332163 0.698182 ) // hand_r
"finger_pinky1_r.001" 58 ( 8.197611 -36.051342 77.414185 ) ( -0.633562 -0.413840 0.651927 ) // hand_r
"tprobes2main_r" 57 ( 0.545079 -27.140175 79.088959 ) ( 0.131677 -0.751625 0.640390 ) // forearm_r
"tprobes2.1_r" 78 ( -1.236696 -20.825155 73.466309 ) ( -0.060639 -0.308955 0.940250 ) // tprobes2main_r
"tprobes3.1_r" 78 ( 0.448137 -21.196640 75.988464 ) ( -0.060639 -0.308955 0.940250 ) // tprobes2main_r
"tprobes1.1_r" 78 ( -5.875785 -22.161158 74.970741 ) ( -0.060638 -0.308954 0.940250 ) // tprobes2main_r
"tprobes1controler1_r" 57 ( 1.115659 -26.446684 84.221458 ) ( 0.066856 -0.144327 0.941972 ) // forearm_r
"tprobes1main_r" 56 ( -2.519160 -15.523670 82.834702 ) ( -0.032487 -0.749164 0.635815 ) // upperarm_r
"tprobes2_r" 83 ( -2.034621 -10.676376 79.283836 ) ( -0.060640 -0.308955 0.940250 ) // tprobes1main_r
"tprobes3_r" 83 ( -0.349789 -11.047862 81.805992 ) ( -0.060640 -0.308955 0.940250 ) // tprobes1main_r
"tprobes1_r" 83 ( -6.673709 -12.012375 80.788292 ) ( -0.060640 -0.308955 0.940250 ) // tprobes1main_r
"tprobes1controler_r" 56 ( -2.637800 -16.447453 87.717407 ) ( 0.021688 -0.162590 0.983568 ) // upperarm_r
"clavicle2_r" 56 ( -4.118241 -11.183623 90.908325 ) ( 0.556837 -0.123194 0.795581 ) // upperarm_r
"clavicle2b_r" 55 ( -9.132830 -7.938776 88.351295 ) ( -0.677487 -0.120960 -0.721776 ) // clavicle_r
"xbelt_r" 55 ( -3.561380 -7.883232 92.250893 ) ( -0.333081 0.616541 -0.457048 ) // clavicle_r
"clavicle1_l" 18 ( 2.993286 8.002431 83.273651 ) ( 0.044216 -0.650735 -0.174383 ) // ribs
"clavicle1_r" 18 ( 2.993297 -8.002423 83.273643 ) ( -0.650735 0.044215 -0.737685 ) // ribs
"clavicle1.1_l" 18 ( 4.668050 3.010785 81.513664 ) ( 0.044215 -0.650736 -0.174384 ) // ribs
"clavicle1.1_r" 18 ( 4.668054 -3.010777 81.513657 ) ( -0.650736 0.044214 -0.737684 ) // ribs
"clavicle1b_l" 18 ( -10.319237 10.302326 84.166084 ) ( -0.178052 -0.681649 -0.016307 ) // ribs
"clavicle1b_r" 18 ( -10.319224 -10.302338 84.166092 ) ( -0.681647 -0.178053 -0.709499 ) // ribs
"chest" 18 ( 9.027701 0.000007 81.948296 ) ( 0.054434 -0.705008 -0.705009 ) // ribs
"back" 18 ( -12.111722 -0.000010 76.781860 ) ( 0.123973 -0.696154 -0.696155 ) // ribs
"Shoulders" 18 ( -5.795223 -0.000004 86.168304 ) ( 0.000000 -0.707107 -0.707107 ) // ribs
"xbelt1_r" 17 ( -1.284388 -7.958091 74.759613 ) ( -0.446981 0.521582 -0.551167 ) // waist
"smallbag" 100 ( -1.284388 -7.958091 74.759613 ) ( 0.795355 0.011183 0.023620 ) // xbelt1_r
"xbelt1_l" 17 ( -1.284398 7.958090 74.759613 ) ( 0.521582 -0.446981 -0.473684 ) // waist
"ongbholder6" 102 ( -7.189560 7.031372 73.392593 ) ( 0.324028 -0.203680 -0.289673 ) // xbelt1_l
"ongbholder5" 103 ( -9.527071 9.302979 71.747749 ) ( 0.320698 -0.094767 -0.379939 ) // ongbholder6
"ongbholder4" 104 ( -12.310373 11.268002 69.877701 ) ( 0.293840 0.304330 0.701738 ) // ongbholder5
"ongbholder3" 105 ( -5.834027 10.230372 70.471992 ) ( 0.412031 0.388379 0.674441 ) // ongbholder4
"ongbholder2" 106 ( 1.174713 8.408926 71.446762 ) ( 0.380277 0.412143 0.688187 ) // ongbholder3
"longbholder1" 107 ( 7.372104 6.861843 72.867645 ) ( 0.123555 -0.553446 -0.749340 ) // ongbholder2
"book" 106 ( -2.044874 10.045159 70.980164 ) ( 0.567312 -0.018124 0.127740 ) // ongbholder3
"bholder1" 102 ( 4.710008 5.915873 76.026497 ) ( 0.581219 0.252401 0.196028 ) // xbelt1_l
"bholder2" 110 ( 5.642291 6.309113 74.801613 ) ( 0.627421 0.242307 0.214669 ) // bholder1
}
#15
does your hierarchy look different before/after you export?  I don't know modeling specifics but the overall format of the code looks off from my memory.  From modwiki:

Joints

Each element of the joints ordered list is structured like so ...

"[boneName]"   [parentIndex] ( [xPos] [yPos] [zPos] ) ( [xOrient] [yOrient] [zOrient] )

    boneName - The name of this bone.
    parentIndex - The index of this bone's parent.
    xPos - The X component of this bone's XYZ position.
    yPos - The Y component of this bone's XYZ position.
    zPos - The Z component of this bone's XYZ position.
    xOrient - The X component of this bone's XYZ orentation quaternion.
    yOrient - The Y component of this bone's XYZ orentation quaternion.
    zOrient - The Z component of this bone's XYZ orentation quaternion.

The number of elements is dependant on the number of joints.

For instance, if there are five joints, there should be five joint descriptors listed.