Dev's Limit Breaking 101 Techniques
-
What I’m trying to do is take the second scanner in the files and dedicate it for use by admins. I’d like it to have a range of at least 50k, but just changing the range of the scanner didn’t make it see any farther.
I thought the edits to freelancer.exe and server.dll would make it so that the scanner range could be increased and then the edits to the scanner would take advantage of that range increase.
I suppose I might expect the ge_s_scanner_01 to need an edit to reduce its range, but even though it’s significantly lower than scanner_02, it still sees the same distance, so reducing its scan range won’t help.
-
robo, did you read what I said? Player visibility ranges are universal, no matter what scanner you use or what’s the range given. As long as the player is within the range, he’ll be visible. Whether he is selectable depends on I think object visibility ranges, but again scanners do NOT affect players in any way.
-
Yeah, I read what you said, but due to its limited content I didn’t understand its meaning.
It looks to me like it’s a dirty fix, but it really doesn’t tell the player anything they wouldn’t see by looking at the chat list to see who’s in the system with them, so I guess it would work. They can’t select the person so they don’t really know where he or she is, they just know they’re in there somewhere.
-
Well, I know from SWWT that people would use the distance in the radar list to quickly home in. Just move by a few Ks and as long as your target is stationary and/or moving in a stable pattern you’ll know where to look for him. Sure, it’s not as easy as selecting the target and hitting F2, but you really shouldn’t assume that just because people can’t select a target, they can’t know where he is.
-
I can see that…
I don’t really like how it’s not working as intended. I don’t believe I’ll be incorporating it in the mod after all.Thanks for the advice and input.
-
Here’s a plugin to do what you want; install to dacomsrv.ini. If a player has ge_s_scanner_02, they will see other players at 50k and group members at 100k. Haven’t done any configuration, but search for the nickname and you’ll find the square of the distances before it. Let me know how configurable it should be…
-
Nice 1.
Any chance to get cloaked players @ that admin scanner? -
Awesome. And it works just as I had hoped.
Now, let’s say I wanted to increase the range of the scanner. Let’s say I wanted to be able to see where a player was in the system, no matter how far out. Is that possible?I see you (Adoxa) say to “search for the nickname and you’ll find the square of the distances before it.” Are you speaking of the plugin? I searched the plugin using tiny hexer but it didn’t come up with anything for ge_s_scanner_02.
edit: And that’s because I was doing it wrong… Now I find it and am experimenting with distances.
All hail Adoxa!
-
This is truly amazing, Adoxa.
I haven’t checked out the source just yet, but tell me: do you know whether this will be affected by interference values on zones? If so, it could add an entire new layer of gameplay to the game and make scout-type ships truly have a purpose.
-
I’m looking at cloak now, but I’m gonna have to stop and go to bed. Looks like cloak has to be done client-side, so if I find a solution, I’ll put it in the private section.
I didn’t include source this time (I was just going to attach, but decided to put it on my site, anyway), but all the plugin does is dynamically change the server offsets, so any interference will remain. Should be able to hook that too, although I’m not sure if it’ll be client or server.
I was almost going to make the ranges based on the scanner, but robocop wanted different values (range & cargo were both 50k, players at 50k, but groups at 100k). I could use range for player and cargo for group, or just add a ‘command line’ or ini setting. What about the scanner itself? Different values for different scanners?
-
The logical thing would be to make a multiplier, so that group range is X times player range, with X being a float. Could be per-scanner or global, depending on how hard it is to implement.
If I get it right, at the moment the plugin makes player/group ranges 50k/100k if you have ge_s_scanner_02 mounted and uses the default values otherwise?
-
actually, as i’m only planning on using it as an admin-only item, the group settings aren’t that important to me. I just knew they were typically twice that of the ungrouped player.
I set the plugin to detect at 500k atm. We’ll see how that works.
-
The setting has nothing to do with the scanner, so not only doesn’t it need to be mounted, it could be any piece of equipment. Or even a ship in general. And if you really want no range, I’ll do a different hack to bypass the test altogether.
Interference is client-side (at least as far as the Contact List goes). If that doesn’t bother you, let me know how you’d like it to work and I’ll whip something up.
Showing cloaked ships has been added to the private section.
-
Isn’t interference already just a multiplier of the scanner range? If the same behavior can be kept, it would be ideal.
-
As it works now, real_scanner_range = scanner_range * (1 - interference). For example, if scanner_range is 5000 and interference is 0.4, then real_scanner_range = 5000 * 0.6 = 3000. The way I was thinking was to add something like a sensitivity setting: real_scanner_range = scanner_range * (1 - interference * (1 - sensitivity)); thus a sensitivity of 1 (forced max value) sees through all interference. For example, if sensitivity = 0.3, then real_scanner_range = 5000 * (1 - 0.4 * 0.7) = 5000 * 0.72 = 3600; if sensitivity = 0.7, then real_scanner_range = 5000 * (1 - 0.4 * 0.3) = 5000 * 0.88 = 4400.
-
Thanks to the wonderful tutorial on this, I was already able to change quite some nice stuff in the mod. But now, when attempting to remove the cruise speed display limit of 300, I came across something strange.
Looking at the relevant part from the Limit Breaking 101 offsets file:
freelancer.exe 0D5936 0F85->90E9 = remove cruise speed display limit of 300 ~Unknown
Now, if I have a look at offset 0D5936, I see this:
(Decoding Hexadecimal)
byte = f signed byte = f word = 850f signed word = fff,850f double word = ff75,850f signed double word = ff75,850f quad = d8dd,ffff,ff75,850f float = -3.26351738686e+038 double = -1.21042962905e+120 word motorola = f85 double word motorola = f85,75ff quad motorola = f85,75ff,ffff,ddd8
Note that there is no ‘0F85’ in there to be found. There are a lot of similar values, but nothing identical. Changing any one of these ‘similar’ values causes the game to ctd as soon as I charge cruise engines, so obviously something’s wrong.
All other edits I did went fine and without any hitch.
I am doing exactly what the tutorial says, and tried it several times. Why can I not see ‘0F85’, like the tutorial and the offsets list describes? I’m obviously overlooking something here… Any help?
-
(Decoding Hexadecimal)…
Note that there is no ‘0F85’ in there to be found.
It appears that you are looking at the “Simple Data Types” converter built into Hexplorer, Maverick. In this case, you do not want to decode the hex values – you want to modify the hex values directly.
Go to the address and just look at the bytes there. If you see “0F85”, then you are in the right place. If not, then something is wrong – either in your technique, or in your version of Freelancer.exe.
Note that there are several common Freelancer.exe’s floating around. There is the original, from the Freelancer CD. There is also a “no-CD” version that many players use for convenience (with our purchased Freelancer CDs safely stored somewhere). Also, many mods modify Freelancer.exe. So it is important that your version matches whatever instructions you follow.
If you modify the wrong byte, then the results will be unpredictable, as you have already discovered. And, by “unpredictable”, I mean that Freelancer will probably crash.
Does that help?
B
-
Yup, that did it. Thanks a lot for the info m8.
In the example used in the tutorial it doesn’t mention to just look at the hex, but tells you to use the Simple Data types modifier. So I was automatically assuming that this was the way to do it with any offset. Never occurred to me thought to just look at the code.Goes to show, most problems that seem complicated are quite simple to solve most of the times. (if you know where to look that is lol)
Cheers m8.