Auto-splitter Script WIP
5 years ago
United States

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]

편집한 사람 작성자 5 years ago
Permamiss, Stimich 그리고 2 기타 이것을 좋아함
California, USA

Hey, late to the party here, but I just wanted to ask if this ever got sorted out? If not, I would not mind taking a crack at fixing this.

I made the Human: Fall Flat autosplitter and have experience with finding working pointer values. It works best if 2+ people are sharing their pointer-scan folders with one another.

Let me know if it's already working or not!

Germany

We currently have a working autosplitter by @KaMa2 for the Marble Marcher Community Edition that is working at least for version 1.4.2. For the original MM we currently have only what @Firestix prepared, this post and this guide: https://www.speedrun.com/marblemarcher/guide/ulo3h . Feel free to tinker with it, having an autosplitter for both versions would be great! There are probably a couple of people in the discord to share pointer-scans with

Permamiss 이것을 좋아함
게임 통계
팔로워
64
런들
543
플레이어
80
최근 쓰레드
게시 일자 2 years ago
3 개의 답글
게시 일자 4 years ago
1 개의 답글
게시 일자 4 years ago
2 개의 답글
게시 일자 4 years ago
2 개의 답글
게시 일자 5 years ago
2 개의 답글
모더레이터