Jump to content
OpenRCT2

X7123M3-256

Members
  • Content Count

    755
  • Joined

  • Last visited

Everything posted by X7123M3-256

  1. Found the relevant code. It seems that only angry peeps vandalize, and only when there is no security guard within 7 tiles of the peep. The sprite that is shown in the window is decided here - the angry face is shown if var_F3 is nonzero. var_F3 is set to 16 when the peep vandalizes a path object, and decreases by 1 on each update until it is back to zero. I am not sure if this unsets the angry flag or not. So it seems that the red face is shown only once a peep has actually vandalized an object - angry peeps that have not yet vandalized (or have gone long enough without vandalizing) are not visibly angry. Also interesting is that naming a peep "Eilidh Bell" will instantly make them angry.
  2. Sure there is, they show up with a red face in the peep window:
  3. Hacked rides often mess with the E/I/N ratings and while they are ultimately inconsequential I wouldn't mind having the option to tune it manually. For example, train length factors into excitement rating, so when playing with long trains you can easily get 11+ excitement which is absurd. Also,rating calculation is different for every track type, so putting a train on a different track type from the one it was designed for will often result in an excitement rating that's too high or too low. Worse, while individual objects can increase ratings beyond the hardcoded base, you can't decrease them, so if you make a ride based on giga coaster track the excitement will probably come out higher than you'd like, even without the use of cheats. I think the best way to deal with this problem would be to make it possible to adjust ratings down as well as up in the object file, rather than on a per-ride basis, but I don't think this can be done easily without a new object file format. I'm not sure how easy it would be to implement as a cheat, either, and I don't think it's particularly important, but if it was there, I'd probably use it.
  4. I mean, you're not going to get a new Arrow looper today (a relocated one maybe), so most installations are getting old now, and technology has moved on. It was just meant as an example of an old ride style - I didn't mean to say "guests should not want to ride Arrow loopers". I think rides should get less popular with time - people do get bored of rides they've ridden many times before (at least I do), and new rides attract people to the park (otherwise parks wouldn't build them). Without this mechanic, there'd be no incentive to keep expanding the park.
  5. If such an option is implemented it should be a cheat. People do get tired of older rides- a newly opened ride will almost always have the longest queue, and old rides get rough and unpopular with time. In 1980 an Arrow looping coaster would be new and exciting; today, not so much.
  6. Please be careful with this. The game state may not be deserialized correctly because my version expects an extra byte for the status of the new cheat, which won't be sent by servers running the develop build. Also, without the patch you're limited to 16 cars, and setting more than that will corrupt the memory of other clients. Even if it appears to work, I would recommend against it - it can have all sorts of side effects because you are overwriting memory that is being used for other things. I had various weird bugs occur during testing as a result of this memory corruption - car sprites being drawn where they shouldn't be, menu items being populated with random text, and at one point it thought my coaster was a sign. I am not sure whether this could actually crash the server or other clients - I suspect it could but I'm reluctant to try it.
  7. I am currently working on a cheat to do this. Another option, which I have used in the past, is to modify the DAT file to set the minimum car length to the length you want - this overrides all other limits on the train length. However, the fact that the train length displayed in the window remains unchanged suggests neither method was used here. 8Cars has a similar feature, it's possible that the train length was hacked in 8Cars, and then the resulting savegame loaded in OpenRCT2. It is also theoretically possible to do something like this by directly editing the game's memory (which is essentially what 8Cars does), but I'm not sure how easy this would be. In the vanilla game and current versions of OpenRCT2, there is an absolute limit of 16 cars and setting a length longer than that can result in undefined behaviour/possible crashes. My cheat increases this limit to 255 cars, which I believe is as far as you can go without having to modify the save format. Also see this other discussion on the topic
  8. That's exactly what I've been saying - this is easy enough to do, and I'm not sure how else you'd do it.
  9. There's no need for any changes to OpenRCT2 to implement this - just take the sprites from csg1.dat and create a new DAT file from them (if somebody hasn't done it already, a number of RCT1 rides have been ported). The only tricky part is that the sprites aren't always in the same order, but the go karts don't have many sprites so you can just manually rearrange them if necessary.
  10. I think this is more easily achieved by using a custom path that doesn't have the railings.
  11. This error means you're missing an object file. PTCT2R is a default object (the 6 seater reversed wooden coaster trains), so either you accidentally deleted it or something is wrong with your RCT2 install. You might have to try reinstalling the game. Is that the only file that's missing, or are you getting other missing object errors (the complete list of missing objects should be printed to the terminal).
  12. Oh, sorry, I thought you were asking for OpenRCT2 to be able to load RCT1 resource files directly, which would be difficult. Extracting the RCT1 sprites and turning them into an RCT2 object file is easy - I already did it for the RCT1 mini suspended coaster, and I've seen it done for a couple of other RCT1 rides as well. There is no reason not to do it if that's what you want - it does not require any alteration to the code nor introduce an incompatibility with the vanilla game.
  13. RCT1 doesn't have object .DATs so you can't easily patch in support for loading RCT1 rides. You can't easlily use the RCT1 base graphics in place of the RCT2 base graphics either, because they don't have the same sprites. I think the best option is to extract the go-kart sprites from csg1.dat and repackage them as an object file for RCT2. This doesn't require any changes to the code - it would still work in vanilla. If you then want to replace the existing go-karts with the RCT1 version, you could substitute KART1.DAT with the new file (you have to make sure that the object header is the same though, or the game won't recognize it). If you want to have the RCT1 go karts alongside the standard ones, just give it a different name.
  14. Are you talking about multiplayer? I would not do this on multiplayer. It will probably crash the other clients if not the server because everyone else will still have the original 16 car limit.
  15. 64 does seem to be the limit of the dropdown menu, any more than that causes problems, and I know that the vehicle selection dropdown is limited to 64 items as well. To get 255, I just modified the code to ignore the dropdown and always set the train length to 255. Obviously this is not very practical so I've now changed it back to 64 - I put it up that high partly to see how far it can go, but also to try and detect any remaining buffer overflows (adding this many cars to an array sized for 16 will surely break something, right?).
  16. I've managed to get trains of 255 cars working:
  17. In the ride_entry struct, they're 8 bit values. But during the calculation of the max train length, those two values get copied into a single 8 bit variable, which gives 4 bits each for a maximum of 15. I think that's the issue here, but janisozaur is the better person to answer becasue he implemented the fix. The number of trains and the number of cars per train are not the same thing. All those rides are limited to individual cars. As far as I can tell, yes. This doesn't look like a difficult thing to implement, but it's hard to be sure until I've tried it - I don't know the codebase as well as the developers do.
  18. In the debug menu (which is the icon with the gears near the save icon). You have to click and hold the icon to get the dropdown - if you just click it you get the console. You can select the object selection window from there.
  19. Thanks, it works fine now. I really need to learn how to use git properly.
  20. I'm getting a merge conflict, which I think is because I have local changes (I was messing with the track code again). I've tried running git reset --hard and then pulling the latest version, but it still doesn't work. Is there a way to reset everything back to the current version of the code?
  21. Not surprised 16 is the hard limit after actually looking at the code - I'm not sure why it worked before but now it just hangs the game and I have to kill it. There's no real use for trains this long anyway, so it's not a serious issue.
  22. I set the minimum and maximum train length field to 30. That's all there is to it. An interesting thing is that the game doesn't validate train lengths on load, so you can tweak the DAT, build a ride with absurdly long trains, then restore the original DAT and still load your park - as long as you don't close and reopen the ride, you keep your long trains. Same for friction values - I've thought about implementing it as a cheat to cut out the need to change DAT files entirely. I retested the 30 car trains and they crash now, so something's changed, but possibly not in this part of the code. The 15 car versions still work, so I'm not sure what the new limit is but given that it's getting packed into a 4 bit value at one point I assume it's just coincidence that 30 cars worked before. I'll have to investigate a bit more to see what the root cause of the crash is.
  23. The game takes into account 3 things when determining how long the trains can be, in this order: The max train length set in the file The total friction of all the cars on the track The length of the station The minimum train length The relevant code is here. The key point is that the minimum train length is the last thing calculated, so if the minimum train length is set to 30 then the trains have to be at least that long, even though the game won't allow a station long enough to accomodate them. Strangely, looking through that code again I see that the min and max train lengths are packed into a single 8 bit value with 4 bits each, so I'm not quite sure why a value of 30 worked - has that changed since I did this?
  24. It works fine for me in OpenRCT2 (I haven't even tested in vanilla), but make it one car longer and it crashes. I have not yet looked into why it crashes. It is definitely possible to implement a "remove train length limits" cheat, and I might look into doing that, along with an option to change the friction value used for the ride. The method I use for this at the moment involves making a new .DAT file, but the change need not be permanent - you can restore the original limit and the cars already on the circuit will not be shortened.
  25. Some of that is already in the game. The mini coaster track is very similar to Intamin two-rail track. The width might be slightly different though - depends how pedantic you want to be. Vertical lifts are supported via hacks, but the track doesn't actually show as a lift hill, it just behaves as one
×
×
  • Create New...