Alright, a biggie for y'all.
I first wanted to do a post on Script Zones (I still have a tab open for that), but then I discovered an exploit in the game.
The Game Manager (the uncompiled Lua script which initializes a bunch of stuff for the game) has some print commands and comments scattered around.
I noticed the function "RunLuaFile" in my ELF string output.
So I replaced a print command with NewOS("Infraworld", 4216, 0):RunLuaFile("EXECUTE_ME.lua") (NewOS gets the Game Manager instance) and I was shocked to see that the game was then indeed trying to open the file EXECUTE_ME.lua.
Then I created that file in the file serving directory, and sure enough, the game runs the fucking file.
So what can I do now?
I can swap models, set their position, unload them, unload graphics, remove motion kits, call script functions, trigger events (also FX events for characters), remove triggers (thus remove things like restrictions where you can walk), enable wireframe, remove objects, change audio, open the PSN store (lolwut), force low / high def LODs, and the list goes on and on. I basically have direct access and control over the kernel and engine. I wrote a script that launches another RunLuaFile when the user clicks square on the controller. This means I can modify my code on the go and do some fun shit!
List of all "instances" in the "The Party" scene:
Jodie's character model swapped with Matt's:
Matt's character model set to null:
Jodie's char.. this should explain itself:
And this might:
Havok doesn't like it when I lock the FPS to 400000:
The game has LOADS of print() functions everywhere, so I made a function that overrides the print() and made my own:
Will you release a patch?
Possibly, I'm a person that only likes to release finished things, so when I have time to finish it, I probably will.
Will this work with Heavy Rain too?
A little snip from my custom code to launch the RunLuaFile when the square button is pressed:
More stuff soon!