Mod Ren'Py Universal Ren'Py Mod / URM [2.2.1] (mod any Ren'Py game yourself)

5.00 star(s) 33 Votes

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,594
6,039
Hi. I ran into an uncaught exception when using this mod.

on this game
https://f95zone.to/threads/the-lewdest-house-v0-1-10-dmf.142759/
v0.1.10-pc

using v1.15.2 of universal renpy mod

start a new game. hit alt+m. go to rename screen and click on "rename a character" and it gives this uncaught exception
Code:
I'm sorry, but an uncaught exception occurred.

While processing text tag {color= #3d5577 } in '{noalt}{color= #3d5577 }Lana{/color}{color=#ffffff} &{/color} {color= #f26491 }Lola{/color} (twins)'.:
  File "game/Script/Chapter1/script-001.rpy", line 43, in script
    ronnie "The other day when we were together.."
Exception: Color string ' #3d5577 ' must be 3, 4, 6, or 8 hex digits long.

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

Full traceback:
  File "game/Script/Chapter1/script-001.rpy", line 43, in script
    ronnie "The other day when we were together.."
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\ast.py", line 921, in execute
    renpy.exports.say(who, what, *args, **kwargs)
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\exports.py", line 1373, in say
    who(what, *args, **kwargs)
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\character.py", line 1266, in __call__
    self.do_display(who, what, cb_args=self.cb_args, dtt=dtt, **display_args)
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\character.py", line 927, in do_display
    display_say(who,
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\character.py", line 666, in display_say
    rv = renpy.ui.interact(mouse='say', type=type, roll_forward=roll_forward)
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\ui.py", line 299, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\core.py", line 3377, 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:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\core.py", line 3912, in interact_core
    self.draw_screen(root_widget, fullscreen_video, (not fullscreen_video) or video_frame_drawn)
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\core.py", line 2602, in draw_screen
    surftree = renpy.display.render.render_screen(
  File "render.pyx", line 495, in renpy.display.render.render_screen
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\layout.py", line 884, in render
    surf = render(child, width, height, cst, cat)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\layout.py", line 884, in render
    surf = render(child, width, height, cst, cat)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\layout.py", line 884, in render
    surf = render(child, width, height, cst, cat)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\screen.py", line 704, in render
    child = renpy.display.render.render(self.child, w, h, st, at)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\layout.py", line 884, in render
    surf = render(child, width, height, cst, cat)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\dragdrop.py", line 474, in render
    cr = render(child, width, height, st, at)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\transform.py", line 747, in render
    return transform_render(self, width, height, st, at)
  File "accelerator.pyx", line 187, in renpy.display.accelerator.transform_render
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\layout.py", line 1334, in render
    surf = render(child,
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\layout.py", line 1105, in render
    surf = render(d, width - x, rh, cst, cat)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\layout.py", line 1105, in render
    surf = render(d, width - x, rh, cst, cat)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\layout.py", line 1847, in render
    cwidth, cheight = sizeit('c', width, height, 0, 0)
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\layout.py", line 1844, in sizeit
    rend = renpy.display.render.render_for_size(pos_d[pos], width, height, st, at)
  File "render.pyx", line 318, in renpy.display.render.render_for_size
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\viewport.py", line 256, in render
    surf = renpy.display.render.render(self.child, child_width, child_height, st, at)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\layout.py", line 1105, in render
    surf = render(d, width - x, rh, cst, cat)
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\behavior.py", line 885, in render
    rv = super(Button, self).render(width, height, st, at)
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\display\layout.py", line 1334, in render
    surf = render(child,
  File "render.pyx", line 170, in renpy.display.render.render
  File "render.pyx", line 266, in renpy.display.render.render
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\text\text.py", line 2109, in render
    virtual_layout = Layout(self, width, height, renders, drawable_res=False, size_only=True)
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\text\text.py", line 627, in __init__
    self.paragraphs = self.segment(text.tokens, style, renders, text)
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\text\text.py", line 1195, in segment
    push().color = renpy.easy.color(value)
  File "D:\games_win\HG\The Lewdest House\thelewdesthouse-0.1.10-pc\renpy\color.py", line 167, in __new__
    raise Exception("Color string {!r} must be 3, 4, 6, or 8 hex digits long.".format(c))
Exception: Color string ' #3d5577 ' must be 3, 4, 6, or 8 hex digits long.

Windows-10-10.0.19045 AMD64
Ren'Py 8.0.3.22090809
The Lewdest House 0.1.10
Thu Oct  5 23:31:40 2023
it is saying
Exception: Color string ' #3d5577 ' must be 3, 4, 6, or 8 hex digits long.
and... it is 6 digits long. it is a valid color:

is it maybe the space before and after?

actually... is this maybe something that would occur in base game too if I reach that point and not just a URM problem?
This is not related to URM. The code causing the error is not URM code.

Not sure if this is the proper forum for enhancement requests for this excellent mod so please excuse if it's not.
I would like to have an option to control the width of the textbox. Here's an example:
View attachment 2984044

The original textbox is fine except for the annoying background gradient. (The purple color behind the text.)

View attachment 2984046

The modified textbox is what I'm looking for but the text is too wide now to read easily and the text runs into the QUICK MENU on the right. I would like to be able to shorten the right left and right margins of the text so it would appear in three or four lines instead of two as it is now.
This is already on my todo list ;)

Universal Ren'Py Mod [1.15.2] How to set the language of other regions, I tried to change it myself but it was garbled
Seems the game forcefully replaces the font. Could be that it's fixed by changing the font through the accessibility menu (press A and select a different font). If that doesn't help I would like to know which game you're trying

Crashed in Corrupted Kingdoms v0.20.1

I'm sorry, but an uncaught exception occurred.

While running game code:
File "game/0x52/classes/main.rpy", line 203, in <module>
File "game/0x52/framework/01loader.rpy", line 34, in load_file
AttributeError: 'str' object has no attribute 'decode'

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

Full traceback:
File "0x52/classes/main.rpyc", line 199, in script
File "D:\COC and stuff\CorruptedKingdoms-0.20.1-pc\renpy\ast.py", line 1138, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "D:\COC and stuff\CorruptedKingdoms-0.20.1-pc\renpy\python.py", line 1122, in py_exec_bytecode
exec(bytecode, globals, locals)
File "game/0x52/classes/main.rpy", line 203, in <module>
File "game/0x52/framework/01loader.rpy", line 34, in load_file
AttributeError: 'str' object has no attribute 'decode'

Windows-10-10.0.22621 AMD64
Ren'Py 8.1.1.23060707
Corrupted Kingdoms 0.20.1
Fri Oct 6 19:06:18 2023
Seems like it's something just for this game. When there are other games causing the same issue I will create a fix.
 

Coin001

New Member
Oct 4, 2023
5
0
No, I want to change the menu language of the mod, but after changing it he has a problem, the second image is the language I want to change, that is, Chinese
 
Last edited:

FaceCrap

Active Member
Oct 1, 2020
882
619
No, I want to change the menu language of the mod, but after changing it he has a problem, the second image is the language I want to change, that is, Chinese
This a wild guess, but could it be that the font which is used to show the text on these buttons, doesn't support your language?
Those blocks are typically displayed if the used font doesn't have the requested characters.
 

Beltian

Newbie
May 27, 2022
31
232
View attachment 587373

Overview:
Easiest installation, open mod by pressing Alt+M (see below for touchscreen devices)

This mod is a great tool to cheat or debug Ren'Py games. See full Features list below for details.

Some features in short:
Find, change, freeze and monitor variables, detect hidden choices, detect paths, rename any character, find/save/replay scenes, watch variables, skip splashscreen, textbox customizing

Updated: 2023-07-25
Game/Creator: Any Ren'Py game using Ren'Py engine 6.99.14 or newer
Modder: 0x52 -
Mod Version: 1.15.2

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

Roadmap:
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.

Touch devices (e.g. Android):
You don't have permission to view the spoiler content. Log in or register now.

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

After developing Ren'Py mods for almost a year now. I thought is was time to create the mod of all mods.
So here is what I call URM (or Universal Ren'Py Mod). The goal of this mod is to enable anyone (even without any programming knowledge) to be able to quickly and easily mod any Ren'Py game.
Just drop the mod file into your favorite game's "game" directory and start modding!

Please let me know what you think. I really appreciate any feedback, so I know I'm not doing this for nothing.
Or maybe consider supporting me or .

WARNING!
You could break your game modifying any variable. Use at your own risk!
Breaking the game depends on the game's programming. You could create set of values the game doesn't expect. Which for example could prevent you to progress in the game or miss certain scenes. I would recommend saving before modifying. So you could always go back if something unexpected happens.


Screenshots:
View attachment 1083993 View attachment 2227883 View attachment 1083995 View attachment 1083998 View attachment 1556197 View attachment 1084000 View attachment 1781739 View attachment 2477575


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

Download:
or Attachment below​

Hello 0x52,

Love the mod, been using it for quite some time.

I have a feature request that I am not sure is able to be done, but figured I would post about it.

Would it be possible to add a feature to the renaming section that allows for a filter of a specific speaker?
i.e. Character A and Character B both say "Hello John"
When modified in the renaming with a filter for Character A it could be changed to "Hello Babe" but Character B will still say "Hello John".

Otherwise, loving the Mod, I use it on damn near every VN that I play.

Keep up the great work!
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,594
6,039
No, I want to change the menu language of the mod, but after changing it he has a problem, the second image is the language I want to change, that is, Chinese
FaceCrap is correct here:
This a wild guess, but could it be that the font which is used to show the text on these buttons, doesn't support your language?
Those blocks are typically displayed if the used font doesn't have the requested characters.

Hello 0x52,

Love the mod, been using it for quite some time.

I have a feature request that I am not sure is able to be done, but figured I would post about it.

Would it be possible to add a feature to the renaming section that allows for a filter of a specific speaker?
i.e. Character A and Character B both say "Hello John"
When modified in the renaming with a filter for Character A it could be changed to "Hello Babe" but Character B will still say "Hello John".

Otherwise, loving the Mod, I use it on damn near every VN that I play.

Keep up the great work!
Thank you for for kind words.
Character specific renaming/text replacement is already on my list for possible future features. (previous post about it)
 

methusalix55

Member
Jun 16, 2021
195
284
  • Like
Reactions: DRinWV

zerozip0

Member
May 23, 2018
380
617
hello
For me, URM is something of a "must have" and I use this tool in almost all games.

Today I wanted to take a quick look at this game:

https://f95zone.to/threads/between-humanity-v0-1-debatingpanda.177547/

I was very surprised that this game does not start when URM is installed.

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

Hopefully there is a fairly simple solution to be able to use URM after all.
thx
I can confirm this issue.
You don't have permission to view the spoiler content. Log in or register now.
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,594
6,039
hello
For me, URM is something of a "must have" and I use this tool in almost all games.

Today I wanted to take a quick look at this game:

https://f95zone.to/threads/between-humanity-v0-1-debatingpanda.177547/

I was very surprised that this game does not start when URM is installed.

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

Hopefully there is a fairly simple solution to be able to use URM after all.
thx
I can confirm this issue.
You don't have permission to view the spoiler content. Log in or register now.
Unfortunately they've modified Ren'Py to prevent it from loading mods.
I've attached a special build that should work.
Small note for this build: I'm not planning on updating this when a new version of URM is released
 

k1bell

Newbie
Sep 15, 2017
70
122
Hi again, seems like the game I previous sought help for had a new sort of sequel, Heads Will Roll - Reforged.
And there's problem with it and URM.
Pressing Enter while searching for variables in URM, trying to save remembered variables will give error and going into snapshots will produce similar error as the one I reported in the prior game.
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,594
6,039
Hi again, seems like the game I previous sought help for had a new sort of sequel, Heads Will Roll - Reforged.
And there's problem with it and URM.
Pressing Enter while searching for variables in URM, trying to save remembered variables will give error and going into snapshots will produce similar error as the one I reported in the prior game.
It's all caused by the same thing as your previous report:
...snip... but it seems like they have assigned something to the "list".

...snip...

But... them using "list" will break other things like sorting and textbox customization. And possibly internal Ren'Py things.
There's nothing I can do... they broke Python (and therefore Ren'Py) doing this.
 

zerozip0

Member
May 23, 2018
380
617
Unfortunately they've modified Ren'Py to prevent it from loading mods.
I've attached a special build that should work.
Small note for this build: I'm not planning on updating this when a new version of URM is released
That is indeed unfortunate. I did proceed without the mod, and found that while not strictly necessary, the mod would have been great to have. There is at least one branching path as well as a number of choices which may or may not provide points for one character or another. It does seem like the developer has put a lot of effort into the code, including the phone aspect as well as customizing the text colour of the mc by hexidecimal colour coding. I am slightly curious if blocking mods is something deliberately done by the developer or simply an accidental occurence due to the coding... What is your take on it?
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,594
6,039
That is indeed unfortunate. I did proceed without the mod, and found that while not strictly necessary, the mod would have been great to have. There is at least one branching path as well as a number of choices which may or may not provide points for one character or another. It does seem like the developer has put a lot of effort into the code, including the phone aspect as well as customizing the text colour of the mc by hexidecimal colour coding. I am slightly curious if blocking mods is something deliberately done by the developer or simply an accidental occurence due to the coding... What is your take on it?
Seems like it was not on purpose. Probably the dev just wanted to prevent decompiling of the game.
This was added to the game's OP:
Extras: (Fixed to work with BH, all credits to URMx52 for this mod)
I'm not sure who "URMx52" is... I guess that's me now :p
 
  • Haha
Reactions: Belzeebub$

methusalix55

Member
Jun 16, 2021
195
284
Seems like it was not on purpose. Probably the dev just wanted to prevent decompiling of the game.
This was added to the game's OP:

I'm not sure who "URMx52" is... I guess that's me now :p
Hello 0x52

Thank you very much for your quick help and correct assessment the compatibility problem.

After many users were upset that Between Humanity [v0.1] [DebatingPanda] was not compatible with URM, the developer released a fix. The developer will probably remove all changes that are intended to prevent the use of MODs.
 
  • Like
  • Haha
Reactions: Belzeebub$ and 0x52

k1bell

Newbie
Sep 15, 2017
70
122
It's all caused by the same thing as your previous report:

There's nothing I can do... they broke Python (and therefore Ren'Py) doing this.
I see.
Then another question, how do URM know which .urm file to load automatically? Is it saved in persistent?
I wanna see if I can get URM to load .urm from Downfall which I renamed to Reforged since the variables names are the same.
 

hsehsing

Member
Jul 11, 2017
307
69
Any chance for adding support for dynamic hotkeys?
Being able to change time/day in a game with +/- will be very useful
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,594
6,039
I see.
Then another question, how do URM know which .urm file to load automatically? Is it saved in persistent?
I wanna see if I can get URM to load .urm from Downfall which I renamed to Reforged since the variables names are the same.
Which .urm file was the latest loaded one is saved in the persistent file.
But from what I understand you want to transfer a file from one game to another? You can just copy the file from the games "game" folder to the other game and open it in URM.

This worked great for me, thank you!
I have a couple questions:
Why does a game tries to connect to the internet after installing this mod?
Can you please make connecting to the internet opt in?
It checks if there's an update available. You can disable this globally/for all games you load on your device through URM's options.

Any chance for adding support for dynamic hotkeys?
Being able to change time/day in a game with +/- will be very useful
Might be added in the future
 

k1bell

Newbie
Sep 15, 2017
70
122
Which .urm file was the latest loaded one is saved in the persistent file.
But from what I understand you want to transfer a file from one game to another? You can just copy the file from the games "game" folder to the other game and open it in URM.
Sadly they broke python so much, clicking on open or save in URM just gives an error.
 
  • Sad
Reactions: 0x52
5.00 star(s) 33 Votes