Costume viewer / editor utility.

Started by HugoLuman, December 02, 2012, 02:01:50 AM

Artillerie

Quote from: healix on December 02, 2012, 06:37:07 AM
I believe this is it

To get it to run in english:
start>run>regedt32

HKey_Current_User\Software\Cryptic\KRCOH
Change the Locale entry to 0

After that, right-click on the KRCOH key, select permissions.
Pick the user account that you use normally.
DENY that account Full Control.

Accept the message.

This changes the locale to english, and prevents the application from resetting it to Korean when you launch the application.

Worked like a charm - thank you :)

The Fifth Horseman

The good news is that the .bin file from COHGuru unlocks some stuff when combined with the beta's .piggs .
The bad news is that the .bin file from the beta simply freezes the creator on load.
We were heroes. We were villains. At the end of the world we all fought as one. It's what we did that defines us.
The end occurred pretty much as we predicted: all servers redlining until midnight... and then no servers to go around.

Somewhere beyond time and space, if you look hard you might find a flash of silver trailing crimson: a lone lost Spartan on his way home.

Arachnion

Quote from: The Fifth Horseman on December 03, 2012, 08:43:25 PM
The good news is that the .bin file from COHGuru unlocks some stuff when combined with the beta's .piggs .
The bad news is that the .bin file from the beta simply freezes the creator on load.

What kind of "stuff", exactly?

Care to elaborate?
I'm all dressed up with nowhere to go
Walkin' with a dead man over my shoulder

Waiting for an invitation to arrive
Goin' to a party where no one's still alive

djonehitwonder

Quote from: Arachnion on December 03, 2012, 08:47:23 PM
What kind of "stuff", exactly?

Care to elaborate?

I haven't gone through everything yet, but I know there's some NPC pieces like for Statesman and Silver Mantis.

The Fifth Horseman

NPC parts, both hero and villain. As noted before, not all of them match the model, are available on all models nor are even textured anymore either (probably new textures added in later content, with new names attached; this affects the Arachnos helmets in particular)
We were heroes. We were villains. At the end of the world we all fought as one. It's what we did that defines us.
The end occurred pretty much as we predicted: all servers redlining until midnight... and then no servers to go around.

Somewhere beyond time and space, if you look hard you might find a flash of silver trailing crimson: a lone lost Spartan on his way home.

Little David

#65
Oh man, this is awesome. It lets us mess with capes and auras! Here I thought it'd only let you make the appearance of your character as if it were new.

I'm kind of bummed that the format for the costume file is different from that of the actual game's, though. It would've been cool to be capable of importing costumes we made in the game to this, issues with newer content aside.

The Fifth Horseman

It's not too different. Actually it looks pretty darn similar to what we get in the demo records.
We were heroes. We were villains. At the end of the world we all fought as one. It's what we did that defines us.
The end occurred pretty much as we predicted: all servers redlining until midnight... and then no servers to go around.

Somewhere beyond time and space, if you look hard you might find a flash of silver trailing crimson: a lone lost Spartan on his way home.

Arachnion

Quote from: The Fifth Horseman on December 03, 2012, 10:39:24 PM
It's not too different. Actually it looks pretty darn similar to what we get in the demo records.

Could I see one of these costume files from the korean creator?

I'm interested, and don't have it currently installed, nor do I feel like doing so and investigating it myself..

Please?  ;D
I'm all dressed up with nowhere to go
Walkin' with a dead man over my shoulder

Waiting for an invitation to arrive
Goin' to a party where no one's still alive

The Fifth Horseman

Sure: "Pants_Loose","Pants_Baggy_01","none","Pants",-16777216,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,0,"Lower_Body","Pants"
"Jackets","skin_bare","none","Chest",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,0,"Upper_Body","Jackets"
"Masked_Bald","skin_head_13","none","Head",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,0,"Head","Hats"
"Smooth","skin_bare","None","Gloves",-1,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,0,"Upper_Body","Jackets"
"Sneakers","sneakers_01a","sneakers_01b","Boots",-16777216,-1,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,0,"Lower_Body","Pants"
"None","None","None","Belt",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,0,"Upper_Body","Jackets"
"Student_01","Student_01a","Student_01b","Hair",-16777216,-16777216,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,0,"Head","Hats"
"None","None","None","Face",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,"None",-65285,-16606976,0,0
"None","None","None","EyeDetail",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,0,"Head","Hats"
"None","None","None","ChestDetail",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,0,"Upper_Body","Jackets"
"None","None","None","Shoulders",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,0,"Upper_Body","Jackets"
"None","None","None","Back",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,"None",-65285,-16606976,0,0
"None","None","None","WepR",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,"None",-65285,-16606976,0,0
"None","None","None","Neck",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,0,"Head","Hats"
"None","None","None","UarmR",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,"None",-65285,-16606976,0,0
"None","None","None","Collar",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,"None",-65285,-16606976,0,0
"None","None","None","Broach",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,"None",-65285,-16606976,0,0
"None","None","None","Cape",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,"None",-65285,-16606976,0,0
"none","none","none","Aura",-1,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,"Auras/Male/Sparkle/SparkleBodyLight.fx",-10092442,-6750105,"Special","Sparkles"
"None","None","None","Skirt",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,"None",-65285,-16606976,0,0
"Student","Student_01a","Student_01b","Top",-16777216,-1842205,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,0,"Upper_Body","Jackets"
"Student_Long","Student_01a","Student_01b","Sleeves",-16777216,-1,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0,0,0,"Upper_Body","Jackets"
"None","None","None","Cranium",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,"None",-65285,-16606976,0,0
"None","None","None","Jaw",-65285,-16606976,0,-6573313,0.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000,-1.000000,0.020000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,"None",-65285,-16606976,0,0
We were heroes. We were villains. At the end of the world we all fought as one. It's what we did that defines us.
The end occurred pretty much as we predicted: all servers redlining until midnight... and then no servers to go around.

Somewhere beyond time and space, if you look hard you might find a flash of silver trailing crimson: a lone lost Spartan on his way home.

Arachnion

Judging from that code, the categories appear to be thus:

Pants
Chest
Head
Gloves
Boots
Belt
Hair
Face
EyeDetail
ChestDetail
Shoulders
Back
WepR
Neck
UarmR
Collar
Broach
Cape
Aura
Skirt
Top
Sleeves
Cranium
Jaw
Lower_Body
Upper_Body
--------------

Hmm... "Sneakers","sneakers_01a","sneakers_01b","Boots" "Lower_Body","Pants"

From my limited experience editing real game costume files, sneakers_01a and 01b are textures, while the other stuff there is self explanatory.

All the numbers are either scales or coordinates. Or both. We should probably compare this to a real costume file.

I'll either add what I find to this post or make a new one here later, most likely.

:D
I'm all dressed up with nowhere to go
Walkin' with a dead man over my shoulder

Waiting for an invitation to arrive
Goin' to a party where no one's still alive

The Fifth Horseman

I think the integer values at the start are the colors. The encoding is nonsensical, but converted into hexadecimal they start making sense.

here's what we have in a current costume file:

{
Scale 5.209
BoneScale -0.6255
ShoulderScale -0.9064
ChestScale -1
WaistScale -0.2123
HipScale -0.8128
LegScale 6.9e-005
HeadScales  0,  0,  0
BrowScales  0,  0,  0
CheekScales  0,  0,  0
ChinScales  0,  0,  0
CraniumScales  0,  0,  0
JawScales  0,  0,  0
NoseScales  0,  0,  0
SkinColor  0,  0,  0
NumParts 28
BodyType 1
CostumePart ""
{
Geometry Armored
Texture1 CREY_RECOVERY
Texture2 !Hips_Stripe_1
DisplayName P3237373182
RegionName "Lower Body"
BodySetName Armored
Color1  1,  255,  0
Color2  0,  0,  0
Color3  0,  0,  0
Color4  0,  0,  0
}


CostumePart ""
{
Geometry Armored
Texture1 Tech_Modern_01
Texture2 !CHEST_Stripe_3
DisplayName P566009771
RegionName "Upper Body"
BodySetName Armored
Color1  1,  255,  0
Color2  0,  0,  0
Color3  0,  0,  0
Color4  0,  0,  0
}


CostumePart ""
{
Geometry Helmet
Texture1 helmet_modern_02
Texture2 helmet_modern_02b
DisplayName P3020775162
RegionName Head
BodySetName FullHelmets
Color1  1,  255,  0
Color2  1,  255,  0
Color3  0,  0,  0
Color4  0,  0,  0
}


CostumePart ""
{
Geometry N_Fem_OlympianGuard_01.GEO/GEO_Larm*_OlympianGuard_01
Texture1 !X_Olympian_Glove_01
Texture2 !Glove_Olympian_01_Mask
DisplayName P3937616722
RegionName "Upper Body"
BodySetName Armored
Color1  1,  204,  0
Color2  1,  204,  0
Color3  0,  0,  0
Color4  0,  0,  0
}


CostumePart ""
{
Geometry Smooth
Texture1 Tech_Modern_01
Texture2 !BOOT_Stripe
DisplayName P2104750136
RegionName "Lower Body"
BodySetName Armored
Color1  1,  204,  0
Color2  0,  0,  0
Color3  0,  0,  0
Color4  0,  0,  0
}


CostumePart ""
{
Geometry none
Texture1 none
Texture2 none
DisplayName P177456852
RegionName "Upper Body"
BodySetName Armored
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Geometry HD_Comm_03
Texture1 HD_Side_Comm_02
Texture2 HD_Side_Comm_02b
DisplayName P2793026233
RegionName Head
BodySetName FullHelmets
Color1  1,  204,  0
Color2  143,  143,  143
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Fx none
Geometry none
Texture1 none
Texture2 none
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Geometry V_FEM_Eyes.GEO/GEO_Eyes_V_HD_Visor_02
Texture1 !X_FullHelm_Visor_01
Texture2 none
DisplayName P2371314042
RegionName Head
BodySetName FullHelmets
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Geometry none
Texture1 none
Texture2 none
DisplayName P2281134661
RegionName "Upper Body"
BodySetName Armored
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Geometry V_FEM_SPADR.GEO/GEO_SpadR_ImperialDefense_03
Texture1 !X_ImperialDefense_SpadR_02
Texture2 !Spadr_ImperialDefense_02_Mask
DisplayName P772741860
RegionName "Upper Body"
BodySetName Armored
Color1  31,  31,  31
Color2  1,  204,  0
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Geometry n_fem_backpack_cyberpunk_01.geo/geo_back_cyberpunk_01
Texture1 !x_back_cyberpunk_01
Texture2 none
DisplayName P213071247
RegionName Capes
BodySetName "Back Packs"
Color1  1,  255,  0
Color2  199,  199,  199
Color3  0,  0,  0
Color4  0,  0,  0
}


CostumePart ""
{
Fx WEAPONS/Custom_BeamRifle/Fem_BeamRifle_Shock_Rifle_01.fx
Geometry none
Texture1 none
Texture2 none
DisplayName P3195014494
RegionName Weapons
BodySetName Weapons
Color1  1,  255,  0
Color2  199,  199,  199
Color3  0,  0,  61
Color4  126,  241,  238
}


CostumePart ""
{
Geometry none
Texture1 none
Texture2 none
DisplayName P2488029243
RegionName Head
BodySetName FullHelmets
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Fx none
Geometry none
Texture1 none
Texture2 none
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Fx none
Geometry none
Texture1 none
Texture2 none
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Fx none
Geometry none
Texture1 none
Texture2 none
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Fx none
Geometry none
Texture1 none
Texture2 none
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Fx Auras/Female/CombatAura/CyborgCombatHUD.fx
Geometry none
Texture1 none
Texture2 none
DisplayName P3636920680
RegionName Special
BodySetName "Cyborg Auras"
Color1  76,  197,  255
Color2  76,  255,  184
Color3  0,  0,  61
Color4  126,  241,  238
}


CostumePart ""
{
Fx none
Geometry none
Texture1 none
Texture2 none
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Fx none
Geometry none
Texture1 none
Texture2 none
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Fx none
Geometry none
Texture1 none
Texture2 none
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Fx none
Geometry none
Texture1 none
Texture2 none
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Fx none
Geometry none
Texture1 none
Texture2 none
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Fx none
Geometry none
Texture1 none
Texture2 none
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Fx none
Geometry none
Texture1 none
Texture2 none
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Fx none
Geometry none
Texture1 none
Texture2 none
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Geometry none
Texture1 none
Texture2 none
DisplayName P546439883
RegionName "Lower Body"
BodySetName Armored
Color1  31,  31,  31
Color2  227,  227,  227
Color3  31,  31,  31
Color4  227,  227,  227
}


CostumePart ""
{
Color1  0,  0,  0
Color2  0,  0,  0
Color3  0,  0,  0
Color4  0,  0,  0
}


CostumePart ""
{
Color1  0,  0,  0
Color2  0,  0,  0
Color3  0,  0,  0
Color4  0,  0,  0
}


}

And in a modern demo file:
0   1759 COSTUME 0 7289d4 10.315901 -0.588102 0.000000 -0.203075 -0.579521 -0.725710 -0.384814 0.001612 0.000000 -0.420000 0.720000 0.000000 -0.470000 0.040000 -0.620000 -0.440000 -0.370000 0.440000 -1.000000 0.560000 -1.000000 -0.290000 0.700000 0.020000 -1.000000 -1.000000 -1.000000 -1.000000 0.080000 0.060000
0   1759 PARTSNAME Armored Tech_Modern_01 !Hips_Blend 00ababab 00737373
0   1759 PARTSNAME Armored Tech_Modern_01 !Chest_Blend 00c7c7c7 00737373
0   1759 PARTSNAME V_Male_Head.GEO/GEO_Head_V_Asym_Robot !X_Face_Robot_Mask V_Robotic_01_Dual 00c7c7c7 008f8f8f
0   1759 PARTSNAME Armored Crey_Recovery !glove_Blend 00c7c7c7 00737373
0   1759 PARTSNAME Smooth Tech_Modern_01 !Boot_Blend 00c7c7c7 00737373
0   1759 PARTSNAME Tech_05 tech_02a tech_02b 008f8f8f 00c7c7c7
0   1759 PARTSNAME Mohawk_NoSkin_01 skin_01a skin_01b 00ababab 00000055
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME V_MALE_EYES.GEO/GEO_Eyes_Enforcer_01 !X_Enforcer_Hair none 00c7c7c7 009aff00
0   1759 PARTSNAME none none none 00c7c7c7 008f8f8f
0   1759 PARTSNAME Smooth spiked_01a spiked_01b 00c7c7c7 003b3b3b
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME V_MALE_NECK.GEO/GEO_Neck_Enforcer_02 !X_Enforcer_Hair none 00c7c7c7 00575757
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00006600
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00006600
We were heroes. We were villains. At the end of the world we all fought as one. It's what we did that defines us.
The end occurred pretty much as we predicted: all servers redlining until midnight... and then no servers to go around.

Somewhere beyond time and space, if you look hard you might find a flash of silver trailing crimson: a lone lost Spartan on his way home.

Arachnion

#71
So I compiled some stuff after looking at a "real" costume file.



They have:

CostumeFilePrefix (Male, Female, or Huge, presumably)
Scale
BoneScale
ShoulderScale
ChestScale
WaistScale
HipScale
LegScale
HeadScales
BrowScales
CheekScales
ChinScales
CraniumScales
JawScales
NoseScales
SkinColor
NumParts (Number of parts?)
CostumePart
Geometry
Texture1
Texture2
DisplayName
RegionName
BodySetName
Color1
Color2
Color3
Color4
Fx (For stuff like... sleeves?) [Fx Costumes/SuperPack2/Male_Sleeves_06.fx]

------------------------
Costume Part Area Diagnosis/Breakdown

CostumePart ""
{
Geometry N_Male_Superpack2_01.GEO/GEO_Hips_SuperPack2_01
Texture1 !X_Hips_SuperPack2_02
Texture2 none
DisplayName P887196332
RegionName "Lower Body"
BodySetName TuckedIn
Color1  88,  68,  57
Color2  0,  0,  0
Color3  88,  68,  57
Color4  0,  0,  0
}


Demo costume file stuff below.

------------------------------
Demo file costume terms:

COSTUME
PARTSNAME

-----------------------------------
Demo file costume area diagnosis/breakdown

0   1759 COSTUME 0 7289d4 10.315901 -0.588102 0.000000 -0.203075 -0.579521

-0.725710 -0.384814 0.001612 0.000000 -0.420000 0.720000 0.000000 -0.470000

0.040000 -0.620000 -0.440000 -0.370000 0.440000 -1.000000 0.560000 -1.000000

-0.290000 0.700000 0.020000 -1.000000 -1.000000 -1.000000 -1.000000 0.080000

0.060000
0   1759 PARTSNAME Hips 00ababab 00737373
0   1759 PARTSNAME Chest 00c7c7c7 00737373
0   1759 PARTSNAME Head/Head Shape?/Asymetry? Texture01 Texture0200c7c7c7

008f8f8
0   1759 PARTSNAME Gloves 00c7c7c7 00737373
0   1759 PARTSNAME Boots 00c7c7c7 00737373
0   1759 PARTSNAME Texture01 Texture02 Texture03 008f8f8f 00c7c7c7
0   1759 PARTSNAME Hair 00ababab 00000055
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME Eyes/Eyes Shape? Texture01 none 00c7c7c7 009aff00
0   1759 PARTSNAME none none none 00c7c7c7 008f8f8f
0   1759 PARTSNAME Chest Detail? Texture01 Texture02 00c7c7c7 003b3b3b
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME Neck/Neck Shape? Texture01 none 00c7c7c7 00575757
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00006600
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00000000
0   1759 PARTSNAME none none none 00000000 00006600
I'm all dressed up with nowhere to go
Walkin' with a dead man over my shoulder

Waiting for an invitation to arrive
Goin' to a party where no one's still alive

Little David

Have you tried running the creator once already, Hugo? I had the same problem; the character creator doesn't seem to create registry keys upon installation, but it will once you run it.

HugoLuman

Ah yes, that worked. Now, where was that link to hacking for new parts?

Oh, and that is some ooooooooooooold music in the menu XD this is from waaay back in 2004

redgiant

#74
The Codex is still around, but all the CoH forum links (such as on its Demo Guides & Tools page) are now deadends. Using wayback on them generally gives results you can save off.

Some of Zloth's demo format info I will paste below, which I can only find via wayback now (here's a couple waybacks on demo format):

Demo File Format FAQ - Zloth 07/07/04
DEMO File Format: Addendum (character parts) - Djeannie 07/16/06

(btw, Titan should start a subforum for posting captured info like this, since relying on wayback or other cached means is iffy. It would be nice to have a reliable known spot to call home for any recovered info like this.)
-----------------------------------

Demo File Format FAQ

Demo files are remarkably easy to read, yet I still have many questions about them. Consequently, this FAQ file still has much work to be done on it. Still, I believe I can save a lot of future demo editors some time by imparting what I've learned dinking around with the .cohdemo files.

Each line of a demo file has the following format: Timing, Object ID, Command, and Data.

Timing is easy, that's just how much time has passed (in milliseconds?) since the last command. Many will start with 0, particularly at the start of a demo, indicating the command should happen immediately.

Object ID is also easy, it is simply a number the demo uses to identify each object in the demo. Each object is initialized with a NEW command to indicate what it is. Object numbers can be re-used so just because object 35 is a Reaper at the start of your demo doesn't mean it is at the end of your demo. There is one special object called "CAM" to indicate changes in the camera's point of view.

Commands and data tell CoH what is actually being done.....

Commands

Version – this has always been version 2 as long as I've been watching. If this ever changes, watch out. This whole FAQ file could become a waste of bits! I've never tried changing this number.

Map – the map that's being used for the demo. Again, I've never fiddled with this. Changing it would probably result in most of the action happening inside walls. Note that using an elevator does not change maps! It just moves you far enough away that the areas you have already explored are off the edge of your map display in the game.

Time – how many hours past midnight the demo starts at. This is pretty irrelevant for indoor missions but you can change this to switch the action from night to day on an outdoor mission. Set it to 18 or 19 for a sunset, for instance.

POS – the object has changed to this new absolute position on the map. Changing it puts the object in a different position. The second number is the Z coordinate. One unit looks to be about one foot.

PYR – (pitch yaw roll) the object has changed orientation. Numbers range from positive to negative pi. The first number describes how much the object is leaning forward/backward, the second describes how the object is turned right/left, and the third describes how the object has tilted (so 0,0,1.5 would put the object on its right side). These are almost always "0,number,0."

NEW – makes a new object of the given type. These commands are followed by other commands describing the properties of the object. Objects can be anything that isn't static including MOBs, doors, players, and some lingering spell effects like rains. (Mission objective objects currently do not appear in demos.) For NPCs, the New command gives the NPC's name.

DEL – destroys the object. The object number can then be re-used.

MOV – what animation the object is currently doing. Not all objects have all animations. For instance, you can't make a door do a FEAR_A move. If you try to make an object do something for which there is no animation, your demo will give you a message box saying so then continue after you click OK. I believe all objects do have a READY move.

SEQ – I haven't fiddled with this but I believe some objects (like computers) go through a sequence of animations. This starts that sequence and the game engine takes it from there.

CHAT – Tells who said what. Several system messages are included here, too, like who defeated a MOB and people joining the team. (Object numbers for the latter can be quite huge!) I think the first number after the chat is what channel is being used and the second is whether a player or the game itself made the chat.

Float/floatdmg – little numbers or words above an object. The first number is the object number and the second is a string of what will be there. Float shows specific messages like FloatMiss for a miss and FloatRecharging when you try to use a power that isn't ready yet. Unfortunately, these don't appear in demo playback right now. Floatdmg is used to float a number over the character. If you give it a positive number then the game will put a minus on the front and float it up as a red number. If you give it a negative number, it will get rid of the minus sign and float it up as a green number. (Yes, it's a little backwards, but there it is.)

FX – A power effect is starting! This can be the power getting launched or a target undergoing an effect from the power. The name of the power is easy enough to figure out. The first number is an ID number for the effect but I have no idea what the last number is.
FXSCALE – Always 10 and 10. Making the last number too big makes the power go away but I can't figure out what the numbers are really supposed to do.
ORIGIN ENT – The first number is the object that will be the origin of the effect. I don't know what the second number does. If the first number is 0 then the origin is the object itself (which is pretty common).
TARGET ENT – Same as origin but this gives the target's object number.
FXDESTROY – occurs further down in the demo when a repeating effect ends. Number is the ID number of the effect.

COSTUME – Now we're having fun! This describes exactly how a character looks in the game. First it describes the basics of a character then it gives each part. The numbers are as follows:



The first number on the Costume line is the basic model. 0 is basic male, 1 basic female, and 4 huge male. (I'm guessing 2 and 3 are big male and big female but setting this makes most of the character invisible and gives lots of move animation errors.) Note that many costume options do not exist for all models, meaning that you can not put a bikini on your huge male. (THANK YOU Devs!!!)

The second number is the skin color. Colors are done in hexadecimal as BBGGRR so 00ff00 is pure green and white is ffffff.

The third is height. 0 is average height and values can range pretty far. –99 makes the character no more than a dot and at +1000 you'll have to zoom back to see higher than the kneecap. Graphics don't scale up too well so don't expect a lot from the huge characters.

The fourth is the athletic/muscle scale. –1 is as skinny as possible and 1 is as muscular. If you go outside this range the demo will crash.


PARTSNAME – next follows a list of several parts names describing the costume the character is wearing. Each line has three strings and two colors. The strings give exactly what costume piece is being used for this part. Early on I tried to collect all these so I could list them off in this FAQ but there are just too many. Here's the order they come in:
1. Pants
2. Top
3. Head/Face
4. Gloves
5. Boots
6. Belt
7. Hair
8. ?
9. Upper face decoration (glasses, tiaras, and so on)
10. Chest Emblem
11. Shoulder Detail
12. ?
13. ?
14. Lower Face decoration (breathers, beards, veils....)
15. Special robot arms

Costume gets re-saved when the costume changes or the character goes into/out of supergroup mode.

There's a mission in the game that gives you a Freakshow disguise. This is a power, not a costume change. (It used to be "FX Maintained 3 POWERS/ITEMSANDTEMPPOWERS/FREAKSHOWPARTS.FX 0" but this no longer works and my old demo now just has me running around without the disguise.)

Player - This comes before the NEW statement for the charcter recording the demo.

XLU – I have no clue what this is. These commands started up some time before launch and now no longer appear in demos.


Character Swapping

The thing folks seemed to find the most fun early on was swapping characters. You can alter a demo to, say, put all your alts into one demo then take a screenshot.

To do this, take a character you want to paste from one of your demos. Only copy the COSTUME and PARTSNAME commands and the initial NEW command. It should look something like this:

0 1 NEW Zloth
0 1 COSTUME 4 ffffff 23.945047 0.863297
0 1 PARTSNAME Armored armored_medieval_01 Blend 666600 00663b
0 1 PARTSNAME Armored Armor_Medieval_01 Blend 00007f 008cd4
0 1 PARTSNAME Great_Helm Great_Helm_01 None 00007f 0000d4
0 1 PARTSNAME Armored armored_medieval_01 Blend 006666 006600
0 1 PARTSNAME Big armored_medieval_01 Blend 3d3d00 990002
0 1 PARTSNAME None None None 009957 006666
0 1 PARTSNAME None None None 737373 3d0000
0 1 PARTSNAME None None None 737373 3d0000
0 1 PARTSNAME Wings_01 Wing_01a Wing_01b 3535fd 000055
0 1 PARTSNAME Armored base Scales 990002 990002
0 1 PARTSNAME Spiked spiked_01a spiked_01b 0000d4 000055
0 1 PARTSNAME None None None 737373 3d0000
0 1 PARTSNAME None None None 737373 3d0000
0 1 PARTSNAME None None None 737373 3d0000
0 1 PARTSNAME None None None 737373 3d0000

Now open the demo you want to put this character into and find the New statement for who you want to replace. Select all the costume and partsname commands (but not the NEW command) and paste over them with your character. Change the object number in each line (1 in the example) to the old character's object number, which will still be up in the NEW command. Finally, erase the old NEW command.

Normally, that's all there is to it. However, if the character in the demo changes costume or switches to/from supergroup mode, the character will revert.


Splicing

Cutting out parts of a demo is risky but it can be done. What gets you in trouble is when you miss NEW and DEL commands. For instance, if you cut out part of a demo and half a dozen monsters' NEW commands along with it, your party may start fighting empty air. So when you do your cuts try to avoid cutting out NEW and DEL commands.

The easiest thing to do is cut off the end of a demo. At the end of a demo everything restarts anyway so you don't care what commands are getting removed. Hack away!

Cutting out of the middle is harder. If your group is just standing around waiting for somebody who's away from keyboard, though, you shouldn't have any NEW or DEL commands. If you need to hack a lot out of the middle, try cutting until just before the main player goes into an elevator. (You can save yourself quite a bit of grief in searching for that point if somebody said something right before the player goes in. Just search for the chat message.)

Cutting out the very start can't happen because it's full of NEW statements. However, once those are all done you can cut just like the middle sections. Very handy if you start the demo then end up waiting around for somebody to enter. (Make sure you don't cut out their entrance, though!)


Chats

It's real easy to change what people say. You can fix spelling errors or, if their chat bubble is blocking out a nice view, get rid of it completely. You can cut out the line completely or, if you want to make sure you don't mess the timing up, just make the text string empty and no text will appear. The line would look something like this:

22 4026 Chat 8 1 ""

Colors also appear right in the chat text and are easy to change or remove.

It's also easy to add chat messages in, just follow the format of the other chat messages you see in the demo. This makes it easy to do a tutorial demo without having to pause the action to type in your informative messages. Just do what you want to do while you record then insert the chat info later.


Look! Up in the sky!!

Want to see what you missed at the end of beta? Take a demo in Atlas and replace the blimp with:

0 3248 NEW "Rikti Destroyer"
0 3248 NPC Rikti_Destroyer
(position data)
0 3248 MOV FLY_MID_POST

correcting the object number, of course.

redgiant

#75
Quote from: Arachnion on December 02, 2012, 11:54:09 PM
On another note, you could possibly replace an enemy NPC on the map with a model you want.

Then you can use the free camera mode to look at it.

If you feel like editing the demo costume code, sure, why not. Impromptu, dirty, costume editor.

You still have to restart cityofheroes.exe -demoplay xxx everytime you want to see a different .cohdemo file (let's say you make some changes to a costume, or switch costumes and just want to see the difference now).

Replacing the PLAYER portion is easy (I can take any of my Sentinel+ characters and throw them into any .cohdemo I have automatically). But you can't really get around the static one-time load-and-sequence manner in which they made .cohdemo work.

Better of course would be to just use the client tailors, but that means enabling the full client pipeline.

And ... if you sublime down to the full client pipeline that does everything, then you are talking about being fed off the server messaging handshaking and its stack, which is what a true server emulator would be doing. You could stop at simple emulation with the goal of just enabling things like true client character creation and tailor/editing, but not necessarily full-on gameplay. It is debatable how easy this partial client-enabling approach would be than just the full-on one (i.e. if you know enough to even start cityofheroes.exe and have it settle down on a map with a character, then you have done the hard part; the rest is incremental improvements).

But the Holy Grail taken all the way of course is full-on gameplay. And a proper job of THAT means reverse engineering the server schema to hold all the data and state that the messaging protocols indicate must persist, the gameplay and calculation systems that figure out all the right data, etc.

That is the only way you would ever see City of Heroes run again as an actual playable game.

I am certain there are people looking into various degrees of all this, but you won't see it talked about publicly much. The best time to have started this was obviously while the servers were still operating to capture and analyze message traffic, and its effects on the client. Imagine cracking the .cohdemo format but with no help docs , bi-directionally, in binary compressed streams, and encrypted. Okay, I lied a little there, anyone seriously doing this also decompiles code via IDA or similar tools which would qualify as "help".

Not sayin' I or anyone I know is doing this, just explaining how it fits together ...

Glass Goblin

Given that a bunch of people have been flailing around trying to organize the demo-related resources, a couple of us are trying to gather together what we can on a custom PHP/MySQL app. If it works out — and I don't see any reason it won't — then it should clearly be part of the Titan Network.

I'd looked at adding it to the wiki, but that gets awkward when you're talking about tables containing hundreds of models, maps, and actions.

Vasarto

Just an idea but if ALMOST all of the files are available then would it not be possible to open a mini Server with a program that could open up as far as your characters?

Like an Isolated closed Server that kind of acts like a containment box sort of speak and opens the files and the game contained so that it mimics as though you were opening the freedom or whatever servers and allows you access to your characters and the costumes?


HugoLuman

But how to get the new parts into the costume editor?

wei yau

I think I'm right on the edge of understanding something here.

See, the problem is I don't have demos of the majority of my guys, but I do have .costume files for all of them.

So, I'm thinking if I convert .costume into something that the demo file can read, then I can effectively place any one of my characters into a demo file.

Does this make sense?