I've been working on an auto-splitter script for a couple days now. It sort of works, and by sort of I mean it seems to only work on my computer for some reason. Perhaps someone savvy enough could change the pointer values under the state declaration to working values for their system.
The script I made is as follows: [quote]state("MarbleMarcher") { //gameState: an int that describes the state of the gameplay loop //0: In a menu //1: In screen saver mode //2: generate the level and display the name, then go to 3 //3: transition camera to player and countdown, then go to 4 //4: GO! player gains control of movement //5: Player hit the flag, play animation, then go back to 2 //6: final victory screen with final time // int gameState : "MarbleMarcher.exe",0x02012D8,0x48,0x30,0x10,0x38,0x80,0x218;
//timer: an int that represents the ingame timer. It shows as the number of frames that has passed since the game started. The timer stops when the game is paused. The timer only goes back to 0 when Play is pressed again.
int timer : "MarbleMarcher.exe",0x02012D8,0x48,0x30,0x10,0x38,0x80,0x2D0;
} state("MarbleMarcher","1.0.4") { //values that worked for 1.0.4 int gameState : "MarbleMarcher.exe",0x01FCF18,0x38,0x30,0x10,0x38,0x80,0x188; int timer : "MarbleMarcher.exe",0x01FCF18,0x38,0x30,0x10,0x38,0x80,0x240; } update { //debug code, uncomment these to see their values //print("game state:" + current.gameState); //print("game timer:" + current.timer); } start { //state 0 is if you're in a menu, so if the state is no longer 0 then the timer should start. return (old.gameState == 0 && current.gameState > 0); } reset { //whenever the gamestate goes from any other state to 0, reset the timer. return (old.gameState > 0 && current.gameState == 0); } split { //split when the gameState reaches 5, as in when the player reaches the flag. return (old.gameState != 5 && current.gameState == 5); } isLoading { //Pause the timer if it stops running in-game. return current.timer == old.timer; } gameTime { //timer is the number of "jiffies" that has passed since the game started, so multiply this by 1 and 2/3 to get milliseconds, then multiply by 10000 to get nanoseconds. double total_mills = (current.timer)*(16.66666666666); print("game timer:" + total_mills); return new TimeSpan(0,0,0,0,Convert.ToInt32(total_mills)); } [/quote]