Go Back   EQEmulator Home > EQEmulator Forums > General > General::General Discussion

General::General Discussion General discussion about EverQuest(tm), EQEMu, and related topics.
Do not post support topics here.

Reply
 
Thread Tools Display Modes
  #1  
Old 07-10-2013, 05:48 PM
Gnomish1987
Fire Beetle
 
Join Date: Dec 2010
Posts: 9
Default Still no way to create new textures *without* overwriting old ones?

I have become very interested in revisiting the possibility of customizing NPC model textures. The process of coming up with a variation on a current texture is not hard in itself (for example, recoloring a green drake to yellow), but the main problem--as some here already know--is that it seems the only way of adding in, say, that yellow drake would be to overwrite an existing texture set.

Texture sets for each model, which are stored in _chr.s3d files, follow a predictable numbering scheme along these lines:
  • drkch0001.bmp -- drk = drake model, ch = chest region, 00 = texture set 00, 01 = first piece in texture set 00
  • drkch0101.bmp -- drk = drake model, ch = chest region, 00 = texture set 01, 01 = first piece in texture set 01
  • drkch0201.bmp -- drk = drake model, ch = chest region, 00 = texture set 01, 01 = first piece in texture set 01
  • etc.

It seems like it would be so simple just to create an extra texture set with this info. For example, there are four drake texture sets (00 through 03), and you might think that creating a set of yellow drake textures all titled next in line with the file naming convention (drkch0401.bmp and such) and then dropping these into the appropxiate _chr.s3d file would instantly create a brand new texture set, but once I attempt to call up a drake in this fifth texture, it simply employs texture zero, the black base texture set. Thus, the only way to include that yellow drake would be to replace all the files for either the black drake, the green drake, the red drake, or the blue drake.

I believe the root of the problem lies in the .wld (world) files found within the _chr.s3d files. To the best of my understanding, these hold all the so-called georeferencing data that models rely on, and if the drake in, say, lavastorm_chr.s3d only has four textures (00 through 03), creating a fifth texture set is useless unless there is a way to access the .wld file and, whatever it looks like, attempt to copy + paste the data relating to one of those four working drake models and designate that new copied + pasted wireframe (or whatever it is) to correspond to the new, fifth texture set.

Is there no way of doing something like this? I spent eight hours straight last night combing through countless EQEmu posts and other Google results relating to .wld files, custom textures, all that jazz. I downloaded a number of tools such as Zone Converter and Model Viewer, hoping in vain that something along the way would let me tinker with these elusive files. What a brain drain!

Any helpful feedback would be much appreciated!

P.S.: Apologies if this might have been better posted in another of the forum sections. Here seemed more appropriate than elsewhere.
Reply With Quote
  #2  
Old 07-12-2013, 09:51 AM
PiB
Fire Beetle
 
Join Date: Aug 2012
Posts: 15
Default

I don't think just adding the texture files to the .s3d archive is enough, you need to reference them in the .wld file as well as you mention. I think you can do this by creating extra 0x03 fragments that reference the texture file names and 0x04 fragments that reference the 0x03 fragments. If you haven't already you should have a look at this document written by Windcatcher.

This is just a guess as I don't know how the official client deals with this. As far as I know there is nothing in the .wld files that says how many texture sets there are for a given character model.

If you want to try out your changes quickly and not have to fire up the game every time you could try out the character viewer I have been working on. This should give you an idea of how a drake would look with your new textures in game, though of course it doesn't work exactly the same than the official client.
Reply With Quote
  #3  
Old 07-12-2013, 10:17 AM
Gnomish1987
Fire Beetle
 
Join Date: Dec 2010
Posts: 9
Default

Quote:
Originally Posted by PiB View Post
I don't think just adding the texture files to the .s3d archive is enough, you need to reference them in the .wld file as well as you mention. I think you can do this by creating extra 0x03 fragments that reference the texture file names and 0x04 fragments that reference the 0x03 fragments. If you haven't already you should have a look at this document written by Windcatcher.

This is just a guess as I don't know how the official client deals with this. As far as I know there is nothing in the .wld files that says how many texture sets there are for a given character model.

If you want to try out your changes quickly and not have to fire up the game every time you could try out the character viewer I have been working on. This should give you an idea of how a drake would look with your new textures in game, though of course it doesn't work exactly the same than the official client.
Thanks for the reply. Oddly enough, I *just* scrounged up Windcatcher's .WLD File Reference doc just about 30 minutes ago!

You make it sound so simple, yet my main problem is an inability to fiddle with the contents of the .wld. I have managed to dump .wld files into text with Zone Converter to try to sneak a gander at it, but the resulting text document is enormous and verging on the unreadable, really--not to mention it is not useful for actually editing any values found therein. What sort of program(s) would I need to be able to view (and edit!) the actual referencing data of the .wld files in an organized way?

Apologies if I garble the jargon a bit. I'm a bit new to this.
Reply With Quote
  #4  
Old 07-12-2013, 10:38 AM
PiB
Fire Beetle
 
Join Date: Aug 2012
Posts: 15
Default

That's true, saying 'you have to do this' ir much easier than doing it

What makes doing this tricky without a tool is that general format for WLD files is like this:

[header]
[string table]
[fragment 1]
[fragment 2]
...
[fragment n]

In theory you could just add the new fragments at the end of the file using a hex editor and edit the fragment count in the header (sounds tedious an error prone though). The problem is that you need to add the texture file names to the string table which forces you to shift all of the fragment data that follows. I'm not sure if hex editors let you do this.

This is probably doable by writing a script that loads the WLD file, adds the fragments, update the string table and write everything to a new file. I'm afraid that doing this by hand is not feasible.
Reply With Quote
  #5  
Old 07-12-2013, 10:48 AM
Secrets's Avatar
Secrets
Demi-God
 
Join Date: May 2007
Location: b
Posts: 1,450
Default

Quote:
Originally Posted by PiB View Post
That's true, saying 'you have to do this' ir much easier than doing it

What makes doing this tricky without a tool is that general format for WLD files is like this:

[header]
[string table]
[fragment 1]
[fragment 2]
...
[fragment n]

In theory you could just add the new fragments at the end of the file using a hex editor and edit the fragment count in the header (sounds tedious an error prone though). The problem is that you need to add the texture file names to the string table which forces you to shift all of the fragment data that follows. I'm not sure if hex editors let you do this.

This is probably doable by writing a script that loads the WLD file, adds the fragments, update the string table and write everything to a new file. I'm afraid that doing this by hand is not feasible.
010 editor allows making scripts like this for mass-editing, but it's not free.

I agree making a program would be the easiest way.
Reply With Quote
  #6  
Old 07-12-2013, 08:44 PM
Gnomish1987
Fire Beetle
 
Join Date: Dec 2010
Posts: 9
Default

That kind of thing sounds complicated. And yes, I noticed right away how problematic it would be for the string thread. Ugh, all these files Verant were cranking out were full of so many counterintuitive and downright inefficient quirks! Then again, there code dates back to 1999 in a lot of instances, if not further back! I've thought of a potential workaround for my problem that wouldn't entail having to attempt to mess with string tables or any of that, though of course it also has a snag. :(

It is, in theory, possible to edit the _chr.txt file for a zone so that it loads the rat model both from qcat (Qeynos Catacombs) and Ak`Anon. Since both the ncat and Ak`Anon models are being imported in the zone's _chr.txt file as "rat", this is a redundancy. But in theory, a person could replace/overwrite all three rat textures from Ak`Anon without touching those from Qeynos Catacombs and thus have six unique rat textures for use in a single zone without losing any of the old stuff! However, I guess there's still a major catch that might prevent this from being possible, which I'll explain at the end.

My idea is as follows. Let's say I want to create three custom rat textures (gray rat, black rat, albino rat) without losing the three originals (brown rat, clockwork rat, diseased rat). I duplicate qcat_chr.s3d and rename it something like CUSTOMqcat_chr.s3d. Then I go into that .s3d including getting into and fiddling with the actual .wld and renaming ALL instances referencing the rat textures (such as ratft0001.bmp, which handles a rat's foot, to something like Craft0001.bmp -- keep the first two letters of the NPC abbreviation and throw a C for custom or maybe low-incidence character like X or non-alphanumeric like * if it's even possible...). Afterward, I go into the _chr.txt file of the zone I want six rat textures in and add in a line to import Cra,CUSTOMncat_chr alongside rat,qcat_chr so that it pulls up that cloned rat alongside rat,qcat_chr? The mesh/model data would be 100% identical for this custom rat, it's just that the textures being referred to in the .wld would have been updated in the clone to point to new ones that, in theory, ought to function 100%.

And now for the catch. If I do all this, presumably the copied+pasted custom rat would somehow still be handled as Race 36, Giant Rat, which would be identical to the race ID # of the non-custom rat, so again this might put me at square one and thus be entirely useless brainstorming! Ugh.
Reply With Quote
  #7  
Old 04-24-2014, 07:15 PM
Zaela_S
Hill Giant
 
Join Date: Jun 2012
Posts: 216
Default

/rez

/buff: http://www.eqemulator.org/forums/sho...961#post229961
Reply With Quote
  #8  
Old 04-26-2014, 04:43 AM
Tyen05
Discordant
 
Join Date: Mar 2009
Location: eqbrowser.com
Posts: 309
Default

Quote:
Originally Posted by Zaela_S View Post
Badass link, thanks for this.

This really is such a great tool to have in the Everquest Developers arsenal. It's 1/3 of having the complete ability to customize Everquest npcs/pc (textures, animations, models).
__________________
Browser based EQ project
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 08:25 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3