Dev's Limit Breaking 101 Techniques
-
Aha, I knew I’d seen it before but search was being useless, thanks!
-
So I know that this is going a ways off, but I was wondering, from this post:
adoxa wrote:
Oops, I left out a byte; fixed the original post.The unknown value looks to be the minimum in stock - retrieved by pub::Market::GetMinInventory as part of a function in content.dll. That function suggests a dynamic economy was planned, but not fully implemented.
For those unaware of it, bases also have a “price_variance = float” value as part of [BaseInfo]. It picks a random number between (1 - price_variance) and (1 + price_variance) to adjust the cost of each good (equipment and commodities).
That section also contains “ship_repair_cost = float” (default 0.33). This affects the repair value of the ship and its groups, but not equipment. The formula is: repair_cost = (1 - damage) * hit_pts * ship_repair_cost. Damage is the fractional health value (75/100 = 0.75).
Would you know, adoxa, if the hit_pts could be replaced with the price of the ship good instead?
-
freelancer.exe 0B3A15 FC615C0083C4043BC789442410->58615C0091FF1518645C0039F8 = repair cost based on ship cost, not armor PART 1 ~adoxa freelancer.exe 0B3A30 1C->58 = repair cost based on ship cost, not armor PART 2 ~adoxa ```Ship cost is the cost of the hull. I only tested SP, so it's possible it might not work in MP.
-
It works fine in multiplayer. On a default server there are no cheating issues or other problems. Money is calculated based on ship hull price. Repairs are working.
However there are two changes: All ship components now always have a repair price of 1, except for the root ship component, which has the correct pricing. I guess it is because ship components don’t have a price at all via goods.ini?
And second all ship components are now displayed as “Ship Component” instead of their individual name.The latter isn’t a serious problem, but the first one might be: If you don’t repair the main hull and only single components it comes nearly for free.
-
By ship component, you mean like shield generators, weapons and such?
-
Yeah, I see that. I think I see the issue in the code, but there’s not enough space in place to fix it.
Adoxa’s code replaces an assignment to an Archetype::Ship pointer used later on to loop through the ship parts. Unfortunately there’s not enough space around that code to keep the assignment and replace the calculation, so it’d probably have to be performed by a plugin instead.
-
Oops. :oops: I did set a breakpoint on it, but since I only had hull damage, must have missed it. There’s room enough, assuming you have a ship (yes), a ship archetype (yes) and a hull good (players should, but maybe admin ships don’t?).
File: Freelancer.exe 0B3A0E: 50 FF 15 FC 61 5C 00 90 89 44 E4 [ 3B C7 74 2A 50 FF 15 FC 61 5C 00 ] 14 FF 15 58 61 5C 00 89 C1 FF 15 [ 83 C4 04 3B C7 89 44 24 10 74 18 ] 18 64 5C 00 D9 E8 [ D9 05 DC 75 5C 00 ] 0B3A30: 58 [ 1C ]
-
That works great! And in multiplayer, too. On what base do you calculate the cost of repairing a hull component relative to the general hull value?
-
It’s still reusing the repair cost multiplier you can define in the base INI: http://the-starport.net/freelancer/forum/viewtopic.php?topic_id=403&forum=28&post_id=22072#forumpost22072
Also, nicely done adoxa
-
While we’re at it:
default repair price ratio (1) common.dll 57FA 0.33 ~FF default repair price ratio (2) common.dll 4A28 0.33 ~FF
I don’t think the second one is actually used anywhere, but I figured I’d throw it in just in case.
-
…. just an experience thrown in:
If you got very expensive ships + equipment parts,
price variants can make up fantastic trading possibilities.Once I had to wonder, how fast all those pilot suddenly got real rich.
-
Just to make sure to not mess anything up…
Adoxa wrote in the above mentioned post:
That section also contains “ship_repair_cost = float” (default 0.33). This affects the repair value of the ship and its groups, but not equipment…
So I assume the default ratio (your offset FF):
default repair price ratio (1) common.dll 57FA 0.33 ```is used whenever this entry "ship_repair_cost" isn´t present at all in a BaseInfo-Section ? Greets J.R.
-
Just to let you know: I’ve added my findings from http://the-starport.net/freelancer/forum/viewtopic.php?post_id=62352#forumpost62352 to the wiki entry.
In case anyone has the low res texture bug, this fixes it. -
foxUnit01 wrote:
10/25/15: -- Added note to Gold_Sear's multiplier for min cruise speed in formation, as this hack seems to bork up asteroid fields -- Corrected attribution for disable charfile encryption hacks to Adoxa
So I’ve fixed point 3 of my todo list at least partially.
common.dll 8C331 7A 19 -> 90 90 make formation leaders independent of escorts (this will make formation leaders able to flee) PART 1 ~Gold_Sear common.dll 8C35C DC 0D 88 DF 39 06 -> 90 90 90 90 90 90 make formation leaders independent of escorts (this will make formation leaders able to flee) PART 2 ~Gold_Sear common.dll 8C4D3 7A 23 -> 90 90 make formation leaders independent of escorts (this will make formation leaders able to flee) PART 3 ~Gold_Sear common.dll 8C4E4 75 12 -> 90 90 make formation leaders independent of escorts (this will make formation leaders able to flee) PART 4 ~Gold_Sear ```This will prevent formation leaders from waiting for their escorts before fleeing while in combat, making them able to properly flee. More precisely, it will prevent them from waiting for their escorts before engaging cruise. It also has effect in non-combat situations. Todo (concerning engage cruise): - Make a fleeer cruise all the way. Every 20 or so seconds, a fleeer will drop out of cruise and then about 3 seconds later engage cruise again, even when there are enemies. Of course, he should be cruising all the way. This behavior is also shown by tradep_trade_traders. - Prevent formation leaders from standing still in cruise. This sometimes happens when e.g. a transport is fleeing from pirates but its escorts are engaging the pirates, when a formation enters an 'important' zone (such as damage, interference or spacedust), or even when just reaching the next section of the patrol path. - Make traders cruise all the way to the destination. When a trader approaches a jump gate or base to about 3km, he will suddenly drop out of cruise and immediately engage cruise again. Of course, he should be cruising all the way to the destination. I haven't tested this thoroughly yet, but it looks like as if this happens when the convoy switches from goto to dock. Thus, a possible fix is to prevent the formation leader from checking the dock distance and instead either dock immediately or dock within dock acknowledge range.
-
Moonhead wrote:
Here it is, a piece of text that moved me more than any poetry could have done. Copied-and-saved from The Lancer Reactors Modding Forum, preserved from ancient times, copied from harddisk to harddisk: the Holy Planets Visibility Limit Hack!FriendlyFire
Flight Commander
Original posting
posted 10/4/2005 18:31 PST
–------------------------------------------------------------------------------
I was fiddling with a problem I had with scales and I was looking for the mythic 250k draw limit. I found it!Open up your Freelancer.exe with your favorite Hex Editor. I use Hex Workshop.
Search for a 32 bits Float value of “250000” ( Without “” ).
The first and only result is the good one. Change it to, say, 1000000 ( 1000k ) and save, then try to boot the game ( Singleplayer is better for this as it does not have the ship explosion bug when you are too far away from the center of the map ).It will work!
Hope this helps making even greater mods.
FriendlyFireEdited by - FriendlyFire on 10/4/2005 6:32:23 PM
Bring me my bow of burning gold!
Bring me my arrows of desire!
Bring me my spear! O clouds, unfold!
Bring me my chariot of fire!
:worship:Oh that reminds me: nebula’s also get weird when your too far from ’ em… But I can’t remember of the above-mentioned hack also covered that. or if that one even has been solved.
(post 345)
I’m posting this here since there’s a good chance that this will lead to another offset for the list.
@Moonhead, FriendlyFire, adoxa
So I was playing with big planets and large systems, and, to my unpleasant surprise, I stumbled onto another draw limit for planets.You can try it out yourself. First, make a planet that has a large radius, for example 200000 (manhattan will do as well but is not as easy to see); simply pick a planet’s sph file, copy it, rename it, and change the float at the end of the file – that’s the radius. Then add to solararch.ini and put it somewhere (it does not matter where). For testing purposes, increase the cruise speed to something like 30000. Launch FL, go to the system you placed the planet in, and fly away from the planet. Now at about 1200-1400K away from the planet (depending on how big your planet is), it will suddenly disappear from screen!
More thorough testing indicates that the limit seems to be exactly 1428148 units away from the planet’s center (so 1428148-radius away from the surface). This is given the planet is exactly centered at screen, when not in center the above mentioned distance is increased.
In contrast to FF’s limit, which gives some flickering before disappearing, this limit causes sudden disappearance, similar to this.
Unfortunately I didn’t find any offset for the limit (yet) or how to fix it.
PS: On another note, FF’s limit does apply to nebulas and suns, they are rendered just fine from huge distances, but not planets.
-
Hi again,
When making a veritcally oriented trade lane (so it also travels vertically) and setting proper [c]rotate[/c] settings for the rings, travelling in the [c]next[/c] direction works just fine, but in the [c]prev[/c] direction the vertical component is not swapped, causing weird behavior. The following patch fixes it.
common.dll 06191E DD 05 D0 E2 39 06 D9 FF -> D9 E8 D9 E0 D9 EE D9 C1 = swap vertical component of trade lane travel in prev direction (fixes issues with vertically oriented trade lanes) PART 1 ~Gold_Sear common.dll 061941 C7 44 24 24 00 00 00 00 D9 54 24 20 D9 5C 24 30 C7 44 24 2C 00 00 00 00 D9 54 24 24 D9 54 24 28 C7 44 24 30 00 00 80 3F D9 54 24 2C D9 54 24 34 C7 44 24 34 00 00 00 00 -> D9 54 24 3C D9 44 24 54 = swap vertical component of trade lane travel in prev direction (fixes issues with vertically oriented trade lanes) PART 2 ~Gold_Sear C7 44 24 3C 00 00 00 00 D9 E0 D9 5C 24 54 D9 44 DD 05 D0 E2 39 06 D9 FE 24 60 D9 E0 D9 5C 24 60 D9 C1 D9 5C 24 20 D9 54 D9 44 24 48 D9 E0 D9 5C 24 28 24 48
EDIT: indexed to wiki. Also indexed formation leader independency patch to wiki.