[donuts][RELz/BETA/WIPz] FO3Edit

Post » Wed Dec 09, 2009 10:23 pm

Kudos for the great work! Should I be worried about the duplicate formID's in GMST? As far as I know, game settings records are tracked by EDID?

Yes you should. From my understanding the engine first and foremost resolves records using their FormID to find out which one is the "winner" (the engine only "sees" a single version of each record with a specific load order corrected FormID). Only afterwards is the EditorID index build.

But my understanding might be wrong. behippo, any input on how the engine loads GMST records?
User avatar
Jaylene Brower
 
Posts: 3347
Joined: Tue Aug 15, 2006 12:24 pm

Post » Wed Dec 09, 2009 6:27 pm

Yes you should. From my understanding the engine first and foremost resolves records using their FormID to find out which one is the "winner" (the engine only "sees" a single version of each record with a specific load order corrected FormID). Only afterwards is the EditorID index build.

But my understanding might be wrong. behippo, any input on how the engine loads GMST records?


We figured this out in one of the old modding threads - apparently form IDs don't matter so much for GMSTs, it loads them by the EDID, because they match up with internal variables with the same name (or something like that). The thing is that some of the internals don't actually have GMSTs in the .esm -- but you can copy an existing GMST, change the EDID to match the hidden GMST, and even if the form IDs are the same, it will override the proper internal GMST.

(I believe this is also how SetGS and GetGS work, because they lookup the GMST directly by the EDID, without needing to match form ID to GMST.)
User avatar
Emmie Cate
 
Posts: 3372
Joined: Sun Mar 11, 2007 12:01 am

Post » Wed Dec 09, 2009 4:10 pm

The thing is that some of the internals don't actually have GMSTs in the .esm -- but you can copy an existing GMST, change the EDID to match the hidden GMST, and even if the form IDs are the same, it will override the proper internal GMST.


This is exactly what I am doing and just confirmed that things work as expected.

Also, the unknown byte record in WEAP/DATA, right after "weight" is weapon damage. Which reminds me, is there a way to utilize an xml based record description list?

Cheers!
User avatar
Love iz not
 
Posts: 3377
Joined: Sat Aug 25, 2007 8:55 pm

Post » Wed Dec 09, 2009 5:07 pm

This is exactly what I am doing and just confirmed that things work as expected.

Also, the unknown byte record in WEAP/DATA, right after "weight" is weapon damage. Which reminds me, is there a way to utilize an xml based record description list?

Cheers!


FOMM uses a record structure XML in the TESSnip subdirectory. The one included with FOMM is not the latest -- you can find that at:
http://falloutmods.wikia.com/wiki/Record_Structure_XML
User avatar
CSar L
 
Posts: 3404
Joined: Fri Nov 09, 2007 9:36 pm

Post » Wed Dec 09, 2009 2:30 pm

Also, the unknown byte record in WEAP/DATA, right after "weight" is weapon damage.

Thanks, I've updated my record definition for the next release. Please let me know if there are any other "Unknowns" that you know what they mean.

A Base Damage of 10 for the Fatman looks a bit strange though. But I guess that's the damage from being hit on the head by the thing and the explosion damage comes extra through the WEAP -> PROJ -> EXPL linking.

Which reminds me, is there a way to utilize an xml based record description list?

Not at the moment. The record definitions are in source and look like this:

  wbRecord(WEAP, 'Weapon', [    wbEDID,    wbOBND,    wbFULL,    wbMODL,    wbUnknown(MODD),    wbICON,    wbSCRI,    wbDEST,    wbEITM,    wbInteger(EAMT, 'Enchantment Charge Amount', itS16),    wbFormIDCk(NAM0, 'Ammo', [AMMO, FLST]),    wbREPL,    wbETYP,    wbBIPL,    wbYNAM,    wbZNAM,    wbRStruct('Unknown', [      wbString(MOD2, 'Model Filename'),      wbByteArray(MO2T, 'Unknown', 0, cpBenign)    ], []),    wbRStruct('Unknown', [      wbString(MOD3, 'Model Filename'),      wbByteArray(MO3T, 'Unknown', 0, cpBenign)    ], []),    wbRStruct('Unknown', [      wbString(MOD4, 'Model Filename')    ], []),    wbString(NNAM, 'Projectile Node'),    wbFormIDCk(INAM, 'Impact DataSet', [IPDS]),    wbFormIDCk(WNAM, 'World Static', [STAT]),    wbFormIDCk(SNAM, 'Sound - Gun - Shoot 3D', [SOUN]),    wbFormIDCk(XNAM, 'Sound - Gun - Shoot 2D', [SOUN]),    wbFormIDCk(NAM7, 'Sound - Gun - Shoot 3D Looping', [SOUN]),    wbFormIDCk(TNAM, 'Sound - Melee - Swing / Gun - No Ammo', [SOUN]),    wbFormIDCk(NAM6, 'Sound - Block', [SOUN]),    wbFormIDCk(UNAM, 'Sound - Idle', [SOUN]),    wbFormIDCk(NAM9, 'Sound - Equip', [SOUN]),    wbFormIDCk(NAM8, 'Sound - Unequip', [SOUN]),    wbStruct(DATA, 'Weapon Data', [      wbInteger('Value', itS32),      wbInteger('Max Condition', itS32),      wbFloat('Weight'),      wbInteger('Base Damage', itS16),//      wbByteArray('Unknown', 2),      wbInteger('Clip Size', itU8)    ]),    wbStruct(DNAM, 'Damage Data', [      {00} wbInteger('Weapon Type', itU32, wbEnum([             {00} 'Melee - Fist',             {01} 'Melee - Sharp',             {02} 'Melee - Blunt',             {03} '',             {04} 'Ranged - Pistols',             {05} 'Ranged - Shotguns',             {06} 'Ranged - Rifles',             {07} 'Ranged - Laser Rifles',             {08} 'Ranged - Big Guns',             {09} 'Creature',             {10} 'Grenade',             {11} 'Mine',             {12} 'Improvised Mine'           ])),      {04} wbFloat('Animation Timescale'),      {08} wbFloat('Unknown (Animation related?)'),      {12} wbByteArray('Unknown', 4),      {16} wbFloat('Minimum Spread'),      {20} wbFloat('Maximum Spread'),      {24} wbFloat('Unknown'),      {28} wbFloat('Zoom FOV'),      {32} wbByteArray('Unknown', 4),      {36} wbFormIDCk('Projectile', [PROJ, NULL]),      {40} wbByteArray('Unknown', 4),      {44} wbFloat('Projectile Velocity'),      {48} wbFloat('Max Range'),      {52} wbByteArray('Unknown', 8),      {60} wbFloat('Reload Time'),      {64} wbFloat('Ammo per Shot'),      {68} wbFloat('AP per Shot'),      {72} wbFloat('1st Trigger Delay'),      {76} wbFloat('2nd Trigger Delay'),      {80} wbFloat('Rapid Fire Timing ??'),      {84} wbFloat('Unknown'),      {88} wbFloat('Critical Death Effect Chance ??'),      {92} wbByteArray('Unknown', 4),      {96} wbFloat('Damage vs. Defense Modifier ??'),     {100} wbByteArray('Unknown', 4),     {104} wbInteger('Weapon Skill Type', itS32, wbActorValueEnum),     {108} wbByteArray('Unknown', 4),     {112} wbFloat('Unknown'),     {116} wbFloat('Unknown'),     {120} wbInteger('Resist Type', itS32, wbActorValueEnum),     {124} wbFloat('Burst Mode Fire Rate ??'),     {128} wbFloat('Unknown'),     {132} wbFloat('Unknown')    ]),   wbStruct(CRDT, 'Critical Data', [      {00} wbInteger('Damage Bonus ??', itS16),      {09} wbByteArray('Unused', 2),      {04} wbFloat('Chance ??'),      {08} wbByteArray('Unknown', 1),      {09} wbByteArray('Unused', 3),      {12} wbFormIDCk('Spell', [SPEL, NULL])    ]),    wbUnknown(VNAM)  ]);

While I guess i would be possible for me to write code to serialize these object trees that I'm building in code to/from XML, that would take quite a bit of work and it would only be relevant until all fields have been identified. So I'm a bit doubtful about the cost/benefit ratio here.
User avatar
Naomi Ward
 
Posts: 3450
Joined: Fri Jul 14, 2006 8:37 pm

Post » Thu Dec 10, 2009 2:35 am

I've just got a request, could it be possible to edit text in the expanded windows? I'm trying to write a script and it's a bit inconvenient to write it in notepad and copy-paste across.
User avatar
Averielle Garcia
 
Posts: 3491
Joined: Fri Aug 24, 2007 3:41 pm

Post » Wed Dec 09, 2009 1:13 pm

I've just got a request, could it be possible to edit text in the expanded windows? I'm trying to write a script and it's a bit inconvenient to write it in notepad and copy-paste across.


Seconded, although FO3Edit doesn't compile them yet :P. Would still be useful for Perk Descriptions and MESG texts, etc.
User avatar
Sheeva
 
Posts: 3353
Joined: Sat Nov 11, 2006 2:46 am

Post » Thu Dec 10, 2009 2:00 am

Seconded, although FO3Edit doesn't compile them yet :P. Would still be useful for Perk Descriptions and MESG texts, etc.

I'm right now working on improving the edit capabilities (e.g. with an embedded memo, combobox or checklistbox edit)
User avatar
krystal sowten
 
Posts: 3367
Joined: Fri Mar 09, 2007 6:25 pm

Post » Thu Dec 10, 2009 12:50 am

I came across an issue or at least something odd. For days i have been trying to change Clover?s face texture (Tessnip or FO3Edit line : FGTS) The problem is, when i change it in Tessnip, nothing will happen ingame. When i change it with FO3Edit the game will crash whenever clover is loaded (like entering same room etc.) How can i fix that ? Or is it a bug ?
User avatar
мistrєss
 
Posts: 3168
Joined: Thu Dec 14, 2006 3:13 am

Post » Thu Dec 10, 2009 3:55 am

I came across an issue or at least something odd. For days i have been trying to change Clover?s face texture (Tessnip or FO3Edit line : FGTS) The problem is, when i change it in Tessnip, nothing will happen ingame. When i change it with FO3Edit the game will crash whenever clover is loaded (like entering same room etc.) How can i fix that ? Or is it a bug ?

Not enough information. please describe exactly what you have done and how.
User avatar
Rachel Eloise Getoutofmyface
 
Posts: 3445
Joined: Mon Oct 09, 2006 5:20 pm

Post » Thu Dec 10, 2009 4:30 am

I copied over the FGTS data from Cherry to Clover. When i do this in Tessnip it wont show ingame, while FO3EDIT makes it crash. FGGS & FGGA changes show up ingame though.
User avatar
Izzy Coleman
 
Posts: 3336
Joined: Tue Jun 20, 2006 3:34 am

Post » Thu Dec 10, 2009 4:09 am

First of all, fantastic work, Elminster! Just simply awesome! :D

I am a SERIOUS NEWB to modding. NEVER done it before. However, I do have some programming experience from WAY back. Like way back before Windows 3.1 came out.. hehe.. (showing my age now) Anyway, with http://fallout3nexus.com/downloads/file.php?id=637 out, and since I use a few mods, I decided I better check to see what works together with my favorite mod, http://www.fallout3nexus.com/downloads/file.php?id=388, and what doesn't. I want it all to work smoothly. I also don't like bothering people who are busy making wonderful mods, to stop what they are doing, just to fix my silly problem. Figured I would give it a go myself.

The best laid plans of mice and men.. and all that rot.. *sigh*

Pretty much all that I am using works good with it except one I didn't expect to create conflicts. The http://www.fallout3nexus.com/downloads/file.php?id=209 mod. It's due to the author of the Nuka-cola mod, understandably, only changing the names to reflect in game and leaving other settings alone, changes that ARE made by WttW. Such as weight, effect, etc. Loading them in a different order doesn't help, they each change different parts of the same records. So, I chose the simpler route and made the needed edits in the Nuka file to match WttW.

Now I have run into a problem...

When I tried to exit and save the file, it gives me an http://i430.photobucket.com/albums/qq24/WabbitTwaks/Nuka_edit_prob2.jpg.

What did I do wrong or what do I do need to do to correct and save it? Any help at all is greatly appreciated :)
User avatar
louise hamilton
 
Posts: 3412
Joined: Wed Jun 07, 2006 9:16 am

Post » Wed Dec 09, 2009 8:04 pm

When I tried to exit and save the file, it gives me an http://i430.photobucket.com/albums/qq24/WabbitTwaks/Nuka_edit_prob.jpg.

What did I do wrong or what do I do need to do to correct and save it? Any help at all is greatly appreciated :)

In the absence of any formal file format specification the structure of Fallout3.esm becomes the defacto standard by example. FO3Edit (just as TES4Edit from which it derives) are on purpose implemented to be very strict about the structure and contents of the modules it's operating on (as may subtle problems can result when modules to not closely conform to the expectations of the game engine and, if it ever gets released, the CS).

Many files that have been hacked togehter using FOMM or even a Hex Editor are not conforming exactly to this standard structure and FO3Edit will reject saving such a file (or depending on how severe the problem is might even reject loading such a file).

There is not much I can do about this (even if I wanted) because this strictness is a fundamental part of the overall design of the software and not just a switch I can flip on and off.
User avatar
Nicole M
 
Posts: 3501
Joined: Thu Jun 15, 2006 6:31 am

Post » Wed Dec 09, 2009 10:31 pm

There is not much I can do about this (even if I wanted) because this strictness is a fundamental part of the overall design of the software and not just a switch I can flip on and off.


I understand. I was just wondering if it was something I did or could do. Thanks for the help :)
User avatar
Nikki Hype
 
Posts: 3429
Joined: Mon Jan 01, 2007 12:38 pm

Post » Thu Dec 10, 2009 4:41 am

Many files that have been hacked togehter using FOMM or even a Hex Editor are not conforming exactly to this standard structure and FO3Edit will reject saving such a file (or depending on how severe the problem is might even reject loading such a file).

I'd suggest loading it in fomm, running the sanitize spell, resaving it and then try fo3edit on it again. Sanitize will at least fix the missing group problem that fo3edit doesn't like.

Edit: And to back ElminsterEU up on that, the game can show weird effects if you don't get the groups set up correctly. People really shouldn't be releasing mods like that...
User avatar
Kat Lehmann
 
Posts: 3409
Joined: Tue Jun 27, 2006 6:24 am

Post » Wed Dec 09, 2009 11:30 pm

I'd suggest loading it in fomm, running the sanitize spell, resaving it and then try fo3edit on it again. Sanitize will at least fix the missing group problem that fo3edit doesn't like.

I'll give that a shot. Thanks :)
User avatar
Kara Payne
 
Posts: 3415
Joined: Thu Oct 26, 2006 12:47 am

Post » Wed Dec 09, 2009 4:52 pm

I'd suggest loading it in fomm, running the sanitize spell, resaving it and then try fo3edit on it again. Sanitize will at least fix the missing group problem that fo3edit doesn't like.

Edit: And to back ElminsterEU up on that, the game can show weird effects if you don't get the groups set up correctly. People really shouldn't be releasing mods like that...

Well, your suggestion worked and all is grouped properly.. at least in mine :D Thanks so very much, Timeslip :)

Edit: I know what you're thinking.. "Great.. Another newb modder with just enough experience to be dangerous.. wheee." I understand completely.. lol.. No worries though. THIS boy isn't putting out anything for a VERY long time if ever. Anything I do is for myself only :)
User avatar
Mario Alcantar
 
Posts: 3416
Joined: Sat Aug 18, 2007 8:26 am

Post » Thu Dec 10, 2009 2:59 am

Did anybody have a chance to take a look at my problem ? Have been trying to solve this one for hours now..
User avatar
Krystina Proietti
 
Posts: 3388
Joined: Sat Dec 23, 2006 9:02 pm

Post » Wed Dec 09, 2009 1:46 pm

Did anybody have a chance to take a look at my problem ? Have been trying to solve this one for hours now..

I looked at it but I did not find any problem in how FO3Edit writes the resulting file.

I performed the following steps:
- start FO3Edit with just Fallout3.esm loaded
- find the Clover record, "copy as override into...", new file
- multiselect the Clover record in the new file and the Cherry record from Fallout3.esm, "Compare Selected"
- drag'n'drop the facegen data over from Cherry to Clover
- save

As best as I can tell the resulting file is completely valid and correct. If there are any problems inside the game with this then whatever is then it would appear that this facegen data is not valid in combination with some of the other information in that record, e.g. there is that additional field in the record header that I don't know yet what it does and which is different between Cherry and Clover.

But in summary: I can't find any error in what FO3Edit does in this case.
User avatar
Emmi Coolahan
 
Posts: 3335
Joined: Wed Jan 24, 2007 9:14 pm

Post » Thu Dec 10, 2009 4:46 am

Thanks for your efforts :) I tried it the same way and i also got no errors. My crash was probably caused, because i created the esp with Tessnip and then modified it in FO3EDIT.. Seems like that combination doesnt always work^^
As for my results...the texture still doesnt change ingame. So the FGTS setting is kinda useless for now..
Maybe you and other will uncover more functions and then maybe my problem will be solved...or Beth just comes around with the CS.
User avatar
Bambi
 
Posts: 3380
Joined: Tue Jan 30, 2007 1:20 pm

Post » Wed Dec 09, 2009 3:14 pm

As long as you 'sanitize' it in FOMM, FO3Edit doesn't seem to give any problems. I've been cross editing back and forth without issue.
User avatar
laila hassan
 
Posts: 3476
Joined: Mon Oct 09, 2006 2:53 pm

Post » Thu Dec 10, 2009 12:42 am

So the IMAD records are either generally 'corrupt' or FO3Edit doesn't quite understand them yet. I got a string of errors when trying to to a EDID search:

Error: record IMAD contains unexpected (or out of order) subrecord DNAM 4D414E44
Error: record IMAD contains unexpected (or out of order) subrecord BNAM 4D414E42
Error: record IMAD contains unexpected (or out of order) subrecord VNAM 4D414E56
Error: record IMAD contains unexpected (or out of order) subrecord TNAM 4D414E54
...

There's a couple hundred lines like that.

Also (and extremely minor):
Errors where found in: [IMAD:00017908]

where -> were.

I'm an english major, can't help it :P.
User avatar
Jeneene Hunte
 
Posts: 3478
Joined: Mon Sep 11, 2006 3:18 pm

Post » Wed Dec 09, 2009 5:04 pm

Minor bug: It won't let me remove the last PRKE/PRKF block of a PERK, even though perks don't actually need to have effects defined (such as for use in dialogue checks only).

edit: The Referenced By tab is nice, but i'd really like to be able to CTRL+Click to follow to the references!
User avatar
Jaylene Brower
 
Posts: 3347
Joined: Tue Aug 15, 2006 12:24 pm

Post » Thu Dec 10, 2009 3:16 am

Some info on DIAL/INFO:

There seem to be two types of DIALs, one which has the response in the DIAL, and one which has the response in the INFOs. This corresponds to the Flags in the DATA of the DIAL:

Flags = 1) response text is the NAME of the DIAL
Flags = 0) response text is the RNAM of in each INFO.

So, if Flags = 0, then it goes through each INFO and checks the conditionals, then uses the response text from whichever info returned as true. I'm guessing it's intended that they need to be mutually exclusive. Not sure what happens if they;re not -- perhaps only the first valid one is used.

edit: actually no, it allows all response INFOs that return valid
scratch that, didn't understand what I was looking at.
User avatar
Cayal
 
Posts: 3398
Joined: Tue Jan 30, 2007 6:24 pm

Post » Wed Dec 09, 2009 3:09 pm

So the IMAD records are either generally 'corrupt' or FO3Edit doesn't quite understand them yet. I got a string of errors when trying to to a EDID search:

There's a couple hundred lines like that.

Yes, that's expected. I don't handle them at all yet.
These IMAD records are a really nasty piece of work, they contain usually 20-30 subrecords, all with different signatures which contain null bytes and control characters (characters < 32) which is really ugly because up till now all record and subrecord signatures have always been in the A-Z, 0-9, _ range so all my code is written with the assumption that Signatures are strings that can be directly shown in the UI.


where -> were.

Oops. Fixed.

Minor bug: It won't let me remove the last PRKE/PRKF block of a PERK, even though perks don't actually need to have effects defined (such as for use in dialogue checks only).

Yes it does! It's just that you are doing it wrong. You naturally can't delete the last element (by looking for Remove on the "Effect" field) from the Effects array because this array is made up of groups of subrecords and you either have at least one element (sub records present) or or you don't have an array at all. So to remove the "last element" you remove the whole array by using the remove function on the "Effects" field. Same the other way around, if you don't have any Effects and you use the "Add" on the Effects field you will automatically get the first element. You'll see this behavior everywhere where an Array is made up of subrecords (e.g. also with CTDAs).

edit: The Referenced By tab is nice, but i'd really like to be able to CTRL+Click to follow to the references!

Double click works here! (It's a listview control, not the highly modified treeview control I'm using for the detail view, so I can't easily make it work with Ctrl+Click)

Flags = 1) response text is the NAME of the DIAL

You mean the FULL of the DIAL? There is no NAME in it as far as I can tell.

I'll redefine that field as an enum:
	  wbInteger('Response Text', itU8, wbEnum([		'in Topic',		'in Response'	  ]))

User avatar
No Name
 
Posts: 3456
Joined: Mon Dec 03, 2007 2:30 am

PreviousNext

Return to Fallout 3