Mod Cheat Mod Ren'Py Race of Life - Multi Mod [Act 1 v1.03 Steam][scrappy]

4.00 star(s) 1 Vote

Jaim Sandar

Member
Apr 3, 2023
151
27
I'm a programmer, but I haven't had much to do with Renpy, or rather Phyton. So take my tips with a grain of salt.
Your error message could be related to my problem.
The exception “Couldn't find a place to stop rolling back” could mean that a label is missing in the scripts, but is included in the save game. Perhaps it was an additional mod label so that you can play several game branches, which is not intended by the game.
If the scripts are still unmodded, as in my case, this label is missing.

The mod includes an rpa-archive, which contains the modded script files.
I noticed that in the hotfix-v3-mod the file is “zzscripts.rpa”, but in the hotfix-v2-mod it's “zscripts.rpa”. This is probably not a problem, but I would delete “zscripts.rpa” as a precaution.

You can use “unren” to unpack rpa files, among other things. I have used UnRen.bat.
Copy the .bat file into your RoL directory, start it and use option 1 (Extract rpa packages).
I then had the modded scripts (*.rpy) in the game\script subdirectory, which were compiled (*.rpyc) when the game was started.

Good luck!
Thank you for the information, but I started over from the beginning after deleting the original installation of the game and mod, then redownloading/reinstalling/restarting new game, I have nearly completed episode 2 in this new playthrough.
Thank you anyway for trying to help.
Although I understand that those such as scrappy who donate so much of their time and efforts on projects like this must be very busy, I am still disappointed that I could not get this game and mod to work with saves from the previous versions of both.
But don't worry, I will carry on with what I can get LOL

EDIT:
I completed my new playthrough to the end of Episode 3.2 (fix 3) with no more problems. I still can't load the saves from 3.1 with Scrappy mod.
 
Last edited:

xtraax

Member
Mar 9, 2020
112
228
Hey scrappy, just reporting that your mod breaks Steam Achievements on the officiel Steam version. I couldn't get any of them while playing modded, then tried on a clean install without the mod and I could get them then. Is it something you can look at ? Thanks for your work :)
 

MickDee

New Member
Oct 28, 2020
5
12
I don't know if this is an issue with the main game or with the mod, but when I get to the part where the girls want a study session and Nerd Girl is upset because everyone forgot her name, I get an error screen.

It looks like it was a choice, because if I ignore, I say mean stuff and the girls no longer want to do the study session.

I'm sorry, but an uncaught exception occurred.

While running game code:
File "game/script/episode2/ep2_scene1.rpy", line 586, in script
menu:
File "game/screens/choice.rpy", line 1, in execute
File "game/screens/choice.rpy", line 1, in execute
File "game/screens/choice.rpy", line 2, in execute
File "game/screens/say.rpy", line 20, in execute
File "game/screens/say.rpy", line 20, in execute
File "game/screens/say.rpy", line 21, in execute
File "game/screens/say.rpy", line 31, in execute
File "game/screens/say.rpy", line 36, in execute
File "game/screens/choice.rpy", line 2, in execute
File "game/screens/choice.rpy", line 19, in execute
File "game/screens/choice.rpy", line 20, in execute
File "game/screens/choice.rpy", line 26, in execute
Exception: String "I don't care. \n{size=-8}[m_c2][mod_choices[2]][m_c3][mod_choices[3]" ends with an open format operation.

-- Full Traceback ------------------------------------------------------------

Full traceback:
File "game/script/episode2/ep2_scene1.rpy", line 586, in script
menu:
File "D:\Dum\Race of Life - Act 1-steam\renpy\ast.py", line 1922, in execute
choice = renpy.exports.menu(choices, self.set, args, kwargs, item_arguments)
File "D:\Dum\Race of Life - Act 1-steam\renpy\exports.py", line 1106, in menu
rv = renpy.store.menu(new_items)
File "D:\Dum\Race of Life - Act 1-steam\renpy\exports.py", line 1345, in display_menu
rv = renpy.ui.interact(mouse='menu', type=type, roll_forward=roll_forward)
File "D:\Dum\Race of Life - Act 1-steam\renpy\ui.py", line 299, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\core.py", line 3582, in interact
repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, pause_modal=pause_modal, **kwargs) # type: ignore
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\core.py", line 4055, in interact_core
root_widget.visit_all(lambda d : d.per_interact())
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\core.py", line 684, in visit_all
d.visit_all(callback, seen)
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\core.py", line 684, in visit_all
d.visit_all(callback, seen)
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\core.py", line 684, in visit_all
d.visit_all(callback, seen)
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\screen.py", line 476, in visit_all
callback(self)
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\core.py", line 4055, in <lambda>
root_widget.visit_all(lambda d : d.per_interact())
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\screen.py", line 487, in per_interact
self.update()
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\screen.py", line 680, in update
self.screen.function(**self.scope)
File "game/screens/choice.rpy", line 1, in execute
File "game/screens/choice.rpy", line 1, in execute
File "game/screens/choice.rpy", line 2, in execute
File "game/screens/say.rpy", line 20, in execute
File "game/screens/say.rpy", line 20, in execute
File "game/screens/say.rpy", line 21, in execute
File "game/screens/say.rpy", line 31, in execute
File "game/screens/say.rpy", line 36, in execute
File "game/screens/choice.rpy", line 2, in execute
File "game/screens/choice.rpy", line 19, in execute
File "game/screens/choice.rpy", line 20, in execute
File "game/screens/choice.rpy", line 26, in execute
File "D:\Dum\Race of Life - Act 1-steam\renpy\ui.py", line 988, in _textbutton
text = renpy.text.text.Text(label, style=text_style, substitute=substitute, scope=scope, **text_kwargs)
File "D:\Dum\Race of Life - Act 1-steam\renpy\text\text.py", line 1633, in __init__
self.set_text(text, scope, substitute) # type: ignore
File "D:\Dum\Race of Life - Act 1-steam\renpy\text\text.py", line 1763, in set_text
i, did_sub = renpy.substitutions.substitute(i, scope, substitute) # type: ignore
File "D:\Dum\Race of Life - Act 1-steam\renpy\substitutions.py", line 278, in substitute
s = formatter.vformat(s, (), kwargs) # type: ignore
File "/home/tom/ab/renpy-build-fix/tmp/install.linux-x86_64/lib/python3.9/string.py", line 165, in vformat
File "/home/tom/ab/renpy-build-fix/tmp/install.linux-x86_64/lib/python3.9/string.py", line 174, in _vformat
File "D:\Dum\Race of Life - Act 1-steam\renpy\substitutions.py", line 162, in parse
raise Exception("String {0!r} ends with an open format operation.".format(s))
Exception: String "I don't care. \n{size=-8}[m_c2][mod_choices[2]][m_c3][mod_choices[3]" ends with an open format operation.

Windows-10-10.0.22631 AMD64
Ren'Py 8.1.3.23091805
Race of Life Race-of-Life-Act-1
Wed Jan 15 15:19:02 2025
 

scrappy

Well-Known Member
Modder
May 26, 2017
1,077
32,557
I don't know if this is an issue with the main game or with the mod, but when I get to the part where the girls want a study session and Nerd Girl is upset because everyone forgot her name, I get an error screen.

It looks like it was a choice, because if I ignore, I say mean stuff and the girls no longer want to do the study session.

I'm sorry, but an uncaught exception occurred.

While running game code:
File "game/script/episode2/ep2_scene1.rpy", line 586, in script
menu:
File "game/screens/choice.rpy", line 1, in execute
File "game/screens/choice.rpy", line 1, in execute
File "game/screens/choice.rpy", line 2, in execute
File "game/screens/say.rpy", line 20, in execute
File "game/screens/say.rpy", line 20, in execute
File "game/screens/say.rpy", line 21, in execute
File "game/screens/say.rpy", line 31, in execute
File "game/screens/say.rpy", line 36, in execute
File "game/screens/choice.rpy", line 2, in execute
File "game/screens/choice.rpy", line 19, in execute
File "game/screens/choice.rpy", line 20, in execute
File "game/screens/choice.rpy", line 26, in execute
Exception: String "I don't care. \n{size=-8}[m_c2][mod_choices[2]][m_c3][mod_choices[3]" ends with an open format operation.

-- Full Traceback ------------------------------------------------------------

Full traceback:
File "game/script/episode2/ep2_scene1.rpy", line 586, in script
menu:
File "D:\Dum\Race of Life - Act 1-steam\renpy\ast.py", line 1922, in execute
choice = renpy.exports.menu(choices, self.set, args, kwargs, item_arguments)
File "D:\Dum\Race of Life - Act 1-steam\renpy\exports.py", line 1106, in menu
rv = renpy.store.menu(new_items)
File "D:\Dum\Race of Life - Act 1-steam\renpy\exports.py", line 1345, in display_menu
rv = renpy.ui.interact(mouse='menu', type=type, roll_forward=roll_forward)
File "D:\Dum\Race of Life - Act 1-steam\renpy\ui.py", line 299, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\core.py", line 3582, in interact
repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, pause_modal=pause_modal, **kwargs) # type: ignore
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\core.py", line 4055, in interact_core
root_widget.visit_all(lambda d : d.per_interact())
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\core.py", line 684, in visit_all
d.visit_all(callback, seen)
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\core.py", line 684, in visit_all
d.visit_all(callback, seen)
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\core.py", line 684, in visit_all
d.visit_all(callback, seen)
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\screen.py", line 476, in visit_all
callback(self)
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\core.py", line 4055, in <lambda>
root_widget.visit_all(lambda d : d.per_interact())
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\screen.py", line 487, in per_interact
self.update()
File "D:\Dum\Race of Life - Act 1-steam\renpy\display\screen.py", line 680, in update
self.screen.function(**self.scope)
File "game/screens/choice.rpy", line 1, in execute
File "game/screens/choice.rpy", line 1, in execute
File "game/screens/choice.rpy", line 2, in execute
File "game/screens/say.rpy", line 20, in execute
File "game/screens/say.rpy", line 20, in execute
File "game/screens/say.rpy", line 21, in execute
File "game/screens/say.rpy", line 31, in execute
File "game/screens/say.rpy", line 36, in execute
File "game/screens/choice.rpy", line 2, in execute
File "game/screens/choice.rpy", line 19, in execute
File "game/screens/choice.rpy", line 20, in execute
File "game/screens/choice.rpy", line 26, in execute
File "D:\Dum\Race of Life - Act 1-steam\renpy\ui.py", line 988, in _textbutton
text = renpy.text.text.Text(label, style=text_style, substitute=substitute, scope=scope, **text_kwargs)
File "D:\Dum\Race of Life - Act 1-steam\renpy\text\text.py", line 1633, in __init__
self.set_text(text, scope, substitute) # type: ignore
File "D:\Dum\Race of Life - Act 1-steam\renpy\text\text.py", line 1763, in set_text
i, did_sub = renpy.substitutions.substitute(i, scope, substitute) # type: ignore
File "D:\Dum\Race of Life - Act 1-steam\renpy\substitutions.py", line 278, in substitute
s = formatter.vformat(s, (), kwargs) # type: ignore
File "/home/tom/ab/renpy-build-fix/tmp/install.linux-x86_64/lib/python3.9/string.py", line 165, in vformat
File "/home/tom/ab/renpy-build-fix/tmp/install.linux-x86_64/lib/python3.9/string.py", line 174, in _vformat
File "D:\Dum\Race of Life - Act 1-steam\renpy\substitutions.py", line 162, in parse
raise Exception("String {0!r} ends with an open format operation.".format(s))
Exception: String "I don't care. \n{size=-8}[m_c2][mod_choices[2]][m_c3][mod_choices[3]" ends with an open format operation.

Windows-10-10.0.22631 AMD64
Ren'Py 8.1.3.23091805
Race of Life Race-of-Life-Act-1
Wed Jan 15 15:19:02 2025
This was fixed already, download the mod again.
 

mistermwa

Newbie
Oct 20, 2018
55
46
Hi, I don't know if it's just me, but the achievement steam "Working the Stick" (full scene with V in the parking lot) don't work for me, but every other ones works fine with the mod
 

Bella for <3

New Member
May 20, 2024
1
0
View attachment 4337945

Overview:
Mod that shows points gains/path/scenes in dialogue options and
adds a cheats button in top right corner with options to
add money,unlock gallery and change relationship points​

Game/Creator: Race of Life /
Modder:
Game Version: Act 1
Language: English

Features:
You don't have permission to view the spoiler content. Log in or register now.

Installation:
You don't have permission to view the spoiler content. Log in or register now.

Download: -

View attachment 4337947 View attachment 4337959

Is that an Android version?
 

newdawn75

Member
Feb 22, 2023
252
65
when trying to load a save I get this error and I used your mod on 1.02 when I updated to 1.03 this is what I get when I load a save:

I'm sorry, but an uncaught exception occurred.

While running game code:
File "renpy/common/00action_file.rpy", line 479, in __call__
renpy.load(fn)
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

-- Full Traceback ------------------------------------------------------------

Full traceback:
File "renpy/common/_layout/screen_main_menu.rpym", line 28, in script
python hide:
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\ast.py", line 1138, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\python.py", line 1122, in py_exec_bytecode
exec(bytecode, globals, locals)
File "renpy/common/_layout/screen_main_menu.rpym", line 28, in <module>
python hide:
File "renpy/common/_layout/screen_main_menu.rpym", line 35, in _execute_python_hide
ui.interact()
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\ui.py", line 299, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\core.py", line 3582, in interact
repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, pause_modal=pause_modal, **kwargs) # type: ignore
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\core.py", line 4543, in interact_core
rv = root_widget.event(ev, x, y, 0)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1179, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\transition.py", line 53, in event
return self.new_widget.event(ev, x, y, st) # E1101
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1179, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1179, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\screen.py", line 770, in event
rv = self.child.event(ev, x, y, st)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1179, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1403, in event
rv = super(Window, self).event(ev, x, y, st)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 281, in event
rv = d.event(ev, x - xo, y - yo, st)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1179, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1403, in event
rv = super(Window, self).event(ev, x, y, st)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 281, in event
rv = d.event(ev, x - xo, y - yo, st)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1403, in event
rv = super(Window, self).event(ev, x, y, st)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 281, in event
rv = d.event(ev, x - xo, y - yo, st)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1179, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1403, in event
rv = super(Window, self).event(ev, x, y, st)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 281, in event
rv = d.event(ev, x - xo, y - yo, st)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1179, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1179, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 281, in event
rv = d.event(ev, x - xo, y - yo, st)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1403, in event
rv = super(Window, self).event(ev, x, y, st)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 281, in event
rv = d.event(ev, x - xo, y - yo, st)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\layout.py", line 1179, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\behavior.py", line 1142, in event
return handle_click(self.clicked)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\behavior.py", line 1075, in handle_click
rv = run(action)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\display\behavior.py", line 379, in run
return action(*args, **kwargs)
File "renpy/common/00action_file.rpy", line 479, in __call__
renpy.load(fn)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\loadsave.py", line 816, in load
log.unfreeze(roots, label="_after_load")
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\rollback.py", line 1105, in unfreeze
self.rollback(0, force=True, label=label, greedy=greedy, on_load=True)
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\rollback.py", line 905, in rollback
self.load_failed()
File "C:\Games\RaceOfLife-Race-of-Life-Act-1-v1.03-market\renpy\rollback.py", line 823, in load_failed
raise Exception("Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?")
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

Windows-10-10.0.19045 AMD64
Ren'Py 8.1.3.23091805
Race of Life Race-of-Life-Act-1-v1.03
Sat Apr 19 13:44:13 2025
 
Last edited:

Niccolado

Newbie
Mar 4, 2022
59
50
Seems like new version is out: Act 1 - 1.04.5. Tried using your latest mod but got a full traceback error when loading up my latest save and when opening the phone.
 

Baalzie

Member
Aug 18, 2022
226
342
thats because his mod current version is only for Act-1-v1.03
Here's an idea for Scrappy: Instead of just saying the game version is "Act1" how about the ACTUAL version it works for being listed?
That'd make less people ask questions repeatedly about the same or similar issues... :)
Especially when the OP has been updated very recently, as now just on Friday...
Thanks for the great work and effort^^
 

Chrisdarock19

Well-Known Member
Oct 15, 2018
1,280
1,834
Here's an idea for Scrappy: Instead of just saying the game version is "Act1" how about the ACTUAL version it works for being listed?
That'd make less people ask questions repeatedly about the same or similar issues... :)
Especially when the OP has been updated very recently, as now just on Friday...
Thanks for the great work and effort^^
WTF are you talking about??? The last update to this mod shows it as Act 1-v1.03 on Friday 18th... How much clearer could he have been??

The game then received ANOTHER bug fix YESTERDAY 20th to the current version v1.04.5. What was scrappy suppose to do??? Immediately pull the links so people that CAN'T/WON'T read don't download an outdated mod?? Then complain that it doesn't work? Should he also remind us all to wipe our asses after using the toilet, even though that should go without saying??

The way this forum is suppose to work is people read and UNDERSTAND, before they download or comment. But I guess using your brain is harder than writing nonsense.

I agree with your last comment that we appreciate the great work and look forward to the updated mod.
 
4.00 star(s) 1 Vote