House Name after System Name: Let's Solve this Basterd
-
This particular problem has bugged me for going on four years now, and I think it’s high time we put our collective minds together and solve it. I’m talking about putting the house name after the system name that appears when you enter a system. Since people have seemed to always misunderstand what I mean, I’ll show you exactly what I want:
I’ve messed around with IDS numbers to get this result, but it would mean that I’d have to sacrifice this effect for another house. I want to be able to implement this without changing IDS numbers. Let me list what I’ve found in my studies:
1. Only a certain set of IDS numbers give the effect listed above, and all are connected to four IDS numbers in Resources.dll. They are as follows (range of IDS numbers that the effect works for; its given IDS number in Resources.dll):
(196609-196613; 1249) - Liberty in Vanilla
(196614-196619; 1250) - Bretonia in Vanilla
(196620-196625; 1252) - Rheinland in Vanilla; note that 196625 is empty
(196626-196632; 1251) - Kusari in VanillaThe first number (say, for instance, 196609 for New York) is the same number in the strid_name in universe.ini
2. There are two ways to display the system name, which are coded into Resources.dll: %s System. (IDS 1373) and %s System, %s Space. (IDS 1374). The former one seems to display the strid_name in universe.ini for any value outside of the ones listed above, regardless of its number. This leads me to suspect that somewhere in the files of Freelancer, it specifies the relationships listed in point 1 explicitly, and tells it to display the strid_name in the format of %s System, %s Space. I believe that this is probably in one of three places: common.dll, content.dll, or Freelancer.exe. Still, it may yet be in another location, but logic implies that it must be defined somewhere.
Our problem, then, is to find where this is explicitly defined, and then to be able to change it to include other values. My own personal goal is to also include a fifth such line like the one listed in point 1 in order to display this effect for a fifth house. I hope people don’t brush this off; I consider it an important (if aesthetical) effect.
MK
-
Interesting you should bring this up. I just thought about doing this this morning
That is exactly what i’d like to achieve. I’ll have a dig around… and post up if I find anything
EDIT - Well, it’s defo hardcoded (kinda obvious huh :P). I debugged a little and found some routines that deal with putting it all together… it loads the text from the .dlls and then feeds it to ‘NN_ArrivalText’. Other than that though, I dunno
The only way I see it is to replace what is already there with new text. Rheinland has a free entry I see, but the others aren’t so great… hmm…
-
I did a lot of digging with this, and haven’t been able to do much. It’s damn tricky to track down. I’m got to a couple of routines that deal with the actual looping through the text resources and choosing which to spit out, but from there not much more. I’ve got a little offset that will work to patch any system arrival text from showing altgother though, hehe Pointless I hear you say… I know I know. The way I see it, new resources would have to be introduced for the new regions, and then game would need to be pointed to that. But it bases this on an apparent range of known systems, so this would need to be addressed too, so the game knows when to use the that new name, and all that shiz is way above my paygrade There are various calls to system code (to find out what the current system is etc), but again, from there i’m at a loss. It’s not just reversing something, this is going in at the deep end and trying to implement something that wasn’t really there in the beginning. It looks like, at least for the meantime, i’m out. Sorry mate
-
0x5B336 - Change 74 to EB, to force a jump which will prevent the generation and printing of the mission text. If you fire up a debugger at that location you could do some more digging if you wanted. The magic happens in the routine at 0x5AFF0. This is where the system info gets parsed and where the message gets placed together.
Yes, this prevents the whole message. I will, however dig some more. And if I can selectively ‘purge’ the second bit, I will of course post up
It’s like MK put above though Tuni, suppose the system name was altered to relfect the space region as well, this would also effect other places where this name gets used such as on the navmap and so on. I’m not actually sure how this would look, never tried it. It may be ok… hmmm
-
If you don’t mind the system name and region showing up in missions, the navmap and various other places, then just reassign each vanilla system name to a new ids number, and include the region name as Tunicle said above. Then go through the resources .dll and remove the system suffix from each of the variable lines ‘%s’. Then as a final touch, remove the pre-done region names from the system infocards… ‘LIBERTY’, ‘OUTCASTS’ and so on. Looks much better on the info screens on the navmap. It’s a workaround, and a fairly big one at that, with the compromise of having to have the region displayed in more places than you want (due to the system names IDS getting parsed from many locations), but I don’t think it looks to shabby. Give it a go and report back ;D
-
Yes, this prevents the whole message. I will, however dig some more. And if I can selectively ‘purge’ the second bit, I will of course post up
0x77->0xEB in freelancer.exe, 0x5b029 = force "%s System." IDS (1373 in resources.dll) to be used for all system arrival text ```Also, I now pretty much completely understand how the code to determine what region to use works, so I'll post some sort of guide if I figure out a way to add another in (which does seem possible).
-
You’ve just piqued my interest here, M0tah ;D
-
I’ve made two solutions to this problem. The first allows you to specify a custom house for each system (but each system must have a house). The second allows you to specify custom system arrival text for each system. Both of these rely on restructuring system IDSs because the text is stored in the system’s IDS + 1.
Custom house only (requires each system to have a house)
First, do the following hexedit:0x83FFFFFCFF83F8->0xAB01000000EB2F in freelancer.exe, 0x5b021 = Make the house in the system arrival text the system's IDS + 1 ```Then set each system's IDS+1 to what you want the house to be. Obviously, this also requires that you change the existing system IDSs to make room for the house IDSs. Custom system arrival text First, do the following hexedit:
0x83FFFFFCFF83F8->0x9B01000000EB2D in freelancer.exe, 0x5b021 = Make system arrival text the system’s IDS + 1 (be sure to also change IDS 1373 to just “%s”)
Finally, set each system's IDS+1 to what you want the system arrival text to be. As with the custom house method, this requires that you change the existing system IDSs to make room for the arrival text IDSs.
-
He’s clever, lol Good job M0tah
I’m rolling with my ‘workaround’. I actually like the region displayed in more places than just the system jump.
-
Need some help with this. Anyway I did the hex edit correctly for Freelancer.exe.
In resources.dll i changed 1373 to just %s.
Now I wanted to change the arrival text for Leeds system (just as a simple test).
The IDS number of Leeds is 196617.
Instead of Dublin (196618) I replaced it with “System, Bretonia Space”.
Now when I arrive to leeds it only shows LEEDS on top and nothing else. I am testing it on local server.
Im just curious what I did wrong.
(I am using M0tah’s second method).
-
I asked if anyone wanted this on TLR a while ago and got no response. Since it went down, I’ve moved here (and DB; didn’t really like ReactorForge), and obviously came across this post. The method I was thinking of using involved an ini file, specifying the ids of the system you wanted to display as a territory: string_id[-string_id] = faction_id; or as an explicit message: string_id = My New System, My New Territory. It would have been done as a DLL, added to DACOM.ini. No one replied, so I never wrote it.
-
The only problem you might have with storing it in strid_name is with people who would want to use unicode characters in the system name/arrival text. As far as I know, INI_Reader doesn’t support unicode, though I haven’t explicitly tested it.
Sethernis wrote:
…
Now when I arrive to leeds it only shows LEEDS on top and nothing else. I am testing it on local server.Im just curious what I did wrong.
(I am using M0tah’s second method).
There’s two things I can think of that could cause this:
1. You changed the hex to 0x9B00000000EB2D instead of 0x9B01000000EB2D.
2. You changed Leed’s strid_name to 196616. -
Since it’s small enough, I’ve attached the first version of my system name customizer. Copy territory.dll to your EXE directory and add it to DACOM.ini’s [Libraries] section. Then copy territory.ini to the DATA directory and edit it to suit your needs. Look at the start of territory.cpp for what you can do. Note that the names are in UTF-8 format; I don’t test for a failed conversion, so it’ll probably duplicate the previous name, should that happen.
Edit: final version is available here.
-
Well done adoxa, gonna test this, will report back
*** Goes away and tests…. comes back ***
http://i5.photobucket.com/albums/y155/Wargibbon/Galacticum/Customspace.jpgWell i got it working ok, adoxa, i officially want your baby, fine work amigo. Bear in mind i’m not the quickest gibbon on the block but after a few attempts i got this working. Think i have it in my head now so most of you other clever gits should be able to work this out lol
And no comments about the green interface, even i think it sucks :oops:
-
Yup…
Great work adoxa! I have one question though… How do I remove the Space part in the arrival text?
EDIT:
Just to prevent misunderstandings… I would like it to say “Solar System, Solarian Empire”
It’s because I have other systems/smaller zones controlled by smaller factions so they should look like “New Eden System, Unified Pirate League Territory” and it would look kinda stupid ending with the space part after territory!