Problem - "IDS?"
-
Thanks all, will check over coding and get back with results.
Gypsy
-
Hey guys. Sorry taking me so long, busy with work and having problems with exporting my ships from MilkShape to CMP.
As for IDS problem…No luck.
I completely replaced my editied InfoCard.dll file with an original unedited one and began again.
Will try a few more things, such as editing a different ship IDS.
For reference the first screenshot, I edited:
Defender
ids_info: 66567second screenshot below:
Defender
ids_info3: 66569Im going to start again and will try ids_info2: 66608
Will get back to you a.s.a.p
Gypsy
-
Just re-read StarTraders comment so wont try 66608.
I dont delete or type in coding myself. I directly edit the original file and then save it, so i cant be missing a / or a <text>part, i only edit the numbers, which is why im confused.</text>
-
Ok well im not sure where the problem lies now, i just did the exact same thing for the Rhino with perfect results.
Will continue to work on this problem and keep all updated.
Below is screenshot for the Rhino. Showing updated information.
Yes thats right… 10 Turrets… cause i can lol
Gypsy
-
Well, there you are then, you big twit! You’ve edited the name entry which is a plain-text StringTable entry (the number is given in ids_name = ) and put in InfoCard xml data!
That’s what we’ve been telling you all along.
The dlls contain both kinds of resources. You need to be careful to ensure you put in the right type of data into each type.
You should use ResHack or FLDev for editing StringTables, and FLDev or FLID-Referrer for editing InfoCards.
I can’t use FL-Dev because it runs at dead-not-breathing pace on my single core processor, FF modified it for duals and left me stranded.
Don’t forget when using ResHack (and any other) to make regular backups in between changes, because it can sometimes mess up, just like many other editors.
-
I hate to bring this up as it’s a really old chestnut and there will always be two distinct shools regarding this, but scripting it is also another method to do all this.
I must admit, i prefer scripting as it’s easier, least from my point of view because you can have all the files related to a ship/weapon/whatever in one file, no need to find messy ids numbers as it’s all done for you, much easier to find errors as well.
-
Continuing from my previous post (my PC died on me while I was editing it)…
Here’s how to fix it…
If you have not changed the ids_name in shiparch.ini, the Defender (li_elite and li_elite2) both have ids_name = 237033.
Using FL ID Referrer, 237033 =
DLL: NameResources.dll (3)
Res Name: 40425 (table 2527)
Res Text: Defender (in your case it will probably show …etc… )Go to your Freelancer\EXE folder and find nameresources.dll, and make a backup copy of it (select it, Ctrl-C, then Ctrl-V for the fastest way).
Open nameresources.dll with ResHacker. You will see two folders - these are resource table nodes, String Table and Version Info. Some dlls will also have other nodes, e.g. 23 which is Infocards.
Open the String Table node and you will see many more nodes - these are the String Tables. Look for and open the one numbered 2527. There is a subnode in it numbered 1033 - this is the code for US English language. A table can have several Language nodes. But for FL it should have only 1. This can be 1033 ( US English ) or 0 ( “language Neutral” ). If there are more than one then the first one, Language 0, will be used and since our dll editors write a 1033 node and do not see the language 0 node, any changes you save wll be in a 1033 node and that will not be seen!
Anyway - open the 1033 node and you will see up to 16 entries, numbered 40416-40431.
Look at entry 40425. It should be “Defender” - but I’ll bet yours isn’t, if you did not change the ids_name number, it will have your "
Fix it by overtyping the bad data with the ship name you want, keeping the quotation marks, so it will be “Defender”.Then click Compile Script.
Click File… Save As…, go and find nameresources.dll, click DEL to DELETE it, and save the changes as the same name, nameresources.dll. If the original does not delete, you can rename it instead - I put a ‘-1’ at the end of the filename so it becomes nameresources.dll-1, then -2 etc. It’s up to you what you do, you already have a backup made if you followed my instructions.
Now go and try it in-game.
Remember - ResHack can write a corrupt file just like any other resource editor that I have used, and several have done that including FL ID Referrer, so be careful to keep your last good dll file copied.
In String Tables entries you should have plain text inside quotation marks. I don’t know how may characters a String Table entry can have, it could be 80 but I have not experimented. FL will not display that many because the display fields are small.
The Infocards belong in Infocard nodes, the ones that are under the node numbered 23 in dll files like infocards.ini and equipresources.ini and others. Those entries are in XML and commence with **. ResHack will show you the first 2 characters are FFFE - this means “UTF-16 Big-Endian” encoding.
Over to you, now you know the problem you won’t make it again. :)**
-
I almost added .rc export to ResID, but no one seems to be interested in using those files (at least, until now no one’s replied whenever I mentioned them). You can find the vanilla (JFLP) resource files here. I created the string tables from ResHacker, but I think I did the infocards straight from the dlls.
-
adoxa wrote:
I almost added .rc export to ResID, but no one seems to be interestedProbably only because they did not fully understand your suggestion.
A tool that would extract a .rc script that could be diffed, edited, and re-compiled back into a DLL would be a big help to a lot of modders. ResHacker scripts the string table but does not conveniently handle the xml resources.
So here is one “yes” vote!
-
StarTrader, would appear something is actually wrong with my original file, as i replaced my edited one with it and the problem is still there. Will reinstall FL to a different folder and get the files from there.
Gypsy
-
Oh dear.
OK - before you do that, get the ids_name = number for the ship from your shiparch.ini and put it here, and also follow my guide and paste the contents of the correct String Table here too so we can see?
-
adoxa wrote:
@Bullwinkle, Gisteron: Res2RC.VERY cool, adoxa!
I did a test run to confirm that I could diff two versions of a DLL, edit the results, and re-compile back into DLL form. It worked quite well.
In my brief test, something seemed to change some of the line breaks. I am not sure what does that, since I used Res2RC to extract both versions. I am thinking that it must be one of the other FL DLL editors that introduced different line breaks, but I have not yet investigated this very far.
It is amazing to me that nobody expressed interest in this before. The Resource DLLs are one of the weakest areas of Freelancer modding, and you just created a powerful new tool for the job!
Of course, the tool will have broader appeal if you add a switch to recompile a script. I have heard that there are some people in the world who do not have C++ compilers.
Go figure.
-
ResHack can do this too, that’s what I used until now…
Well I thought I would try it…
Adoxa, as usual no guide?
This one took off like a bat out of the Batcave, no info to me, just a quick flash of a black DOS box that disappeared immediately, then it took over my laptop - and its still running!
… it just ended.
WHAT the HECK did it do, and WHERE did it DO IT?!
Can’t find any output! Blurryellfire!!
At least the others did something I could see or work out, dammit!
Get to be technical writers too, not just deep-sea nerds!
Put some &^ destructions in your work!
I’ve just knocked your rating down 2 points to 7/10!
Bullwinkle wrote:
…I have heard that there are some people in the world who do not have C++ compilers.
Go figure.
Yeh, lots of us… waiting for Babbage version C - codenamed “Cabbage” - haven’t you learned about it?
It’s going to make evey other programming language obsolete! - it’s going to write USER INSTRUCTIONS BY ITSELF!
Ha! rofl!
-
StarTrader wrote:
ResHack can do this tooI wish it could, but it cannot.
The magic of Res2RC is that it handles the xml resources (IDS_Info) that ResHacker does not.
Also, ResHacker cannot read or create full string tables. It bastardizes them when it creates a .rc script.
As for a tutorial, I believe that the standard assumption is that “everybody is a programmer”.
Standard Hint #1: If it does not have a Windows interface, then it is probably a console app. Run it in a Command Window.
Standard Hint #2: If the default Help is insufficient, then read the header in the .cpp file.
-
@StarTrader: I’m predominately a command line user, so as Bullwinkle suggests, you should run it through a Command Prompt. You should also visit my site, which is where I say there are no docs, just run it for usage. But of course, you don’t know about the command line, so just running it apparently does nothing. I don’t really want to explain the command line, but if you want to know what it generates, grab the resource sources from my site. A little sample:
STRINGTABLE { 1002, "Javelin Missile" // RTC 1003, "Javelin Missile" 1004, "Slingshot Missile" 1005, "Catapult Missile" ... 3609, "Countermeasure Flare" 3610, "Imp. Countermeasure Flare" 3611, "Adv. Countermeasure Flare" } 2002 23 { L"<rdl><push>\ <tra bold="" true""=""><just loc="" center""="">\ <text>J63 ""Javelin"" Missile Launcher</text><para>\ <para><tra bold="" false""=""><just loc="" left""="">\ <text>The Javelin Missile LauncherÆs main attribute is its stalwart \ reliability, delivering a punishing payload accurately and effectively. This \ and its relatively inexpensive cost make the Javelin a welcome addition to any \ arsenal.</text><para>\ <para>\ <text>* Requires Javelin Missile.</text><para>\ <para>\</para></para></para></para></just></tra></para></para></just></tra></push></rdl> " } ... 4611 23 { L"<rdl><push>\ <tra bold="" true""=""><just loc="" center""="">\ <text>Advanced Countermeasure Flare</text><para>\ <para><tra bold="" false""=""><just loc="" left""="">\ <text>Based on the same technology as the rest of the CM series, however the \ CM-3 has a greater effective range against a wider array of ordinance.</text>\ <para><para>\ <text>* Fired by Adv. Countermeasure Dropper.</text><para>\ <para>\</para></para></para></para></just></tra></para></para></just></tra></push></rdl> " }
@Bullwinkle: I didn’t really want to write a compiler/linker, since they are freely available (for example, the 2003 Toolkit; I meant to mention that, but forgot). Besides, if I write a compiler, there’d really be no need to write it as .rc, which actually might not be a bad idea…