CREATE and FUCK your own AI GIRLFRIEND TRY FOR FREE
x

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

5.00 star(s) 36 Votes

vayora5984

New Member
May 26, 2023
13
31
Thank you for your kind words.
I might change the behavior to have URM list all variables when you search an empty string.
That would be awesome!

There shouldn't be much. Do you mean URM's settings?
I think when people are asking to filter out renpy / mod variables, they mean to "make it more like the developer mode variable viewer". I believe this is the logic they are looking for:

All the places where it skips variables for various reasons, would make it much like what they are expecting
 
  • Like
Reactions: 0x52

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,669
6,471
Just got an exception after tried to report an error during update.

OS: Devuan 5 (stable) on ext4 file system
Game: The Spinney 0.20
URM-Version: 2.3.1 (I'm lazy as f*** with manual updates)

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

The error before was Failed to extract update. 'module' object has no attribute 'O_BINARY' and it happens always if i try to use URM's update-function (never got to report that, mind was somewhere else :sneaky:). I should mention the game-folder has a new, unzippable 0x52_URM.rpa.tmp-file (MD5:658485c37404cb75f1347652e644c0d1) with r/w permissions and my user as owner.
Thanks. Will be fixed in the next update.
But you would have to update manually first :D

A quality of life function I would love to have, would be to to have a choice/checkbox to exclude internal/standart Renpy variables from the search, but I'm not sure if that's even possible. Or an option to just list the newly defined variables. Anyway I'm loving this mod so much that I'm even adding it to games where I wouldn't even need it :ROFLMAO:
It's on my todo list ;)
 
Feb 24, 2020
199
64
Just encountered a game that is unaffected by URM's renaming function. Game is [Breeze of Passion], and it might be something to do with the way dialogues are handed. There's a tl folder (translation) with a .json file inside to handle dialogues, but I am programming-illiterate and this is just my 2-cents worth of thought on why the renaming function does not work in this game.

Also, the variables listed in the game are all in Russian.
You don't have permission to view the spoiler content. Log in or register now.
 
Last edited:

latrop16

Member
May 12, 2018
318
787
I want to report an error in game MILF's Plaza version Steam_15a.
Searching for Values with Search in objects/list/dicts enabled throws error.
From what I can tell they upgraded their RenPy version, but you can see it in the log anyway.
I'm using URM v2.4.1 but have tried v2.3.1 as well.

Code:
I'm sorry, but an uncaught exception occurred.

While loading <renpy.display.im.Image object ('images/cg/igor_activities/None.png') at 0x0000000027e9b490>:
  File "renpy/common/000statements.rpy", line 671, in execute_call_screen
    store._return = renpy.call_screen(name, *args, **kwargs)
  File "renpy/common/00action_other.rpy", line 578, in __call__
    rv = self.callable(*self.args, **self.kwargs)
  File "0x52-URM/classes/search.rpy", line 386, in doSearch
  File "0x52-URM/classes/search.rpy", line 386, in matchVarValue
  File "0x52-URM/classes/search.rpy", line 386, in matchVarValue
  File "0x52-URM/classes/search.rpy", line 225, in _m1_search__matchStringValue
TypeError: a bytes-like object is required, not 'str'

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

Full traceback:
  File "events/ep1/ep1_3_mother.rpyc", line 187, in script call
  File "core/main_interface.rpyc", line 1381, in script
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\ast.py", line 1971, in execute
    self.call("execute")
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\ast.py", line 1950, in call
    return renpy.statements.call(method, parsed, *args, **kwargs)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\statements.py", line 374, in call
    return method(parsed, *args, **kwargs)
  File "renpy/common/000statements.rpy", line 671, in execute_call_screen
    store._return = renpy.call_screen(name, *args, **kwargs)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\exports\statementexports.py", line 345, in call_screen
    rv = renpy.ui.interact(mouse="screen", type="screen", roll_forward=roll_forward)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\ui.py", line 301, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\core.py", line 2201, 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 "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\core.py", line 3272, in interact_core
    rv = root_widget.event(ev, x, y, 0)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\screen.py", line 793, in event
    rv = self.child.event(ev, x, y, st)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\transform.py", line 1083, in event
    rv = d.event(ev, cx, cy, st)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1516, in event
    rv = super(Window, self).event(ev, x, y, st)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 281, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  [Previous line repeated 3 more times]
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\behavior.py", line 1182, in event
    return handle_click(self.clicked)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\behavior.py", line 1103, in handle_click
    rv = run(action)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\behavior.py", line 401, in run
    return action(*args, **kwargs)
  File "renpy/common/00action_other.rpy", line 578, in __call__
    rv = self.callable(*self.args, **self.kwargs)
  File "0x52-URM/classes/search.rpy", line 386, in doSearch
  File "0x52-URM/classes/search.rpy", line 386, in matchVarValue
  File "0x52-URM/classes/search.rpy", line 386, in matchVarValue
  File "0x52-URM/classes/search.rpy", line 225, in _m1_search__matchStringValue
TypeError: a bytes-like object is required, not 'str'

Windows-10-10.0.22631-SP0 AMD64
Ren'Py 8.4.0.24101101+nightly
MilfsPlaza 15a3
Wed Oct 23 11:50:10 2024
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,669
6,471
Just encountered a game that is unaffected by URM's renaming function. Game is [Breeze of Passion], and it might be something to do with the way dialogues are handed. There's a tl folder (translation) with a .json file inside to handle dialogues, but I am programming-illiterate and this is just my 2-cents worth of thought on why the renaming function does not work in this game.

Also, the variables listed in the game are all in Russian.
You don't have permission to view the spoiler content. Log in or register now.
So, they use some custom translation method. URM can't support that

I want to report an error in game MILF's Plaza version Steam_15a.
Searching for Values with Search in objects/list/dicts enabled throws error.
From what I can tell they upgraded their RenPy version, but you can see it in the log anyway.
I'm using URM v2.4.1 but have tried v2.3.1 as well.

Code:
I'm sorry, but an uncaught exception occurred.

While loading <renpy.display.im.Image object ('images/cg/igor_activities/None.png') at 0x0000000027e9b490>:
  File "renpy/common/000statements.rpy", line 671, in execute_call_screen
    store._return = renpy.call_screen(name, *args, **kwargs)
  File "renpy/common/00action_other.rpy", line 578, in __call__
    rv = self.callable(*self.args, **self.kwargs)
  File "0x52-URM/classes/search.rpy", line 386, in doSearch
  File "0x52-URM/classes/search.rpy", line 386, in matchVarValue
  File "0x52-URM/classes/search.rpy", line 386, in matchVarValue
  File "0x52-URM/classes/search.rpy", line 225, in _m1_search__matchStringValue
TypeError: a bytes-like object is required, not 'str'

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

Full traceback:
  File "events/ep1/ep1_3_mother.rpyc", line 187, in script call
  File "core/main_interface.rpyc", line 1381, in script
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\ast.py", line 1971, in execute
    self.call("execute")
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\ast.py", line 1950, in call
    return renpy.statements.call(method, parsed, *args, **kwargs)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\statements.py", line 374, in call
    return method(parsed, *args, **kwargs)
  File "renpy/common/000statements.rpy", line 671, in execute_call_screen
    store._return = renpy.call_screen(name, *args, **kwargs)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\exports\statementexports.py", line 345, in call_screen
    rv = renpy.ui.interact(mouse="screen", type="screen", roll_forward=roll_forward)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\ui.py", line 301, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\core.py", line 2201, 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 "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\core.py", line 3272, in interact_core
    rv = root_widget.event(ev, x, y, 0)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\screen.py", line 793, in event
    rv = self.child.event(ev, x, y, st)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\transform.py", line 1083, in event
    rv = d.event(ev, cx, cy, st)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1516, in event
    rv = super(Window, self).event(ev, x, y, st)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 281, in event
    rv = d.event(ev, x - xo, y - yo, st)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\layout.py", line 1287, in event
    rv = i.event(ev, x - xo, y - yo, cst)
  [Previous line repeated 3 more times]
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\behavior.py", line 1182, in event
    return handle_click(self.clicked)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\behavior.py", line 1103, in handle_click
    rv = run(action)
  File "M:\Play\MilfsPlaza-15a3_dlc-pc\renpy\display\behavior.py", line 401, in run
    return action(*args, **kwargs)
  File "renpy/common/00action_other.rpy", line 578, in __call__
    rv = self.callable(*self.args, **self.kwargs)
  File "0x52-URM/classes/search.rpy", line 386, in doSearch
  File "0x52-URM/classes/search.rpy", line 386, in matchVarValue
  File "0x52-URM/classes/search.rpy", line 386, in matchVarValue
  File "0x52-URM/classes/search.rpy", line 225, in _m1_search__matchStringValue
TypeError: a bytes-like object is required, not 'str'

Windows-10-10.0.22631-SP0 AMD64
Ren'Py 8.4.0.24101101+nightly
MilfsPlaza 15a3
Wed Oct 23 11:50:10 2024
It's using a nightly build of Ren'Py. Those are not meant for production and will contain bugs. So URM will not support those.
 

performant

Newbie
Aug 21, 2022
19
23
Light mode can be tricky, because it relies on the game's dialogue design.
I would recommend using the full mode.
Confirmed. Switching to the full mode did resolve the issue. Thank you! (y)

... but you should be able to align the text any way you like in full mode
Gosh, it took me an ungodly amount of time and hair pulled out to figure out it's "Width" that I just need to change. Stupid of me. :FacePalm:

I did think about this, but it's not possible to implement this reliably
Just as I suspected.

Can you, though, make it possible to use external fonts, then? Either by using a dialog box or better yet, adding fonts stored in a folder such as \game\0x52_URM\fonts to the "Pick a font" dialog box.
 
Last edited:

Blakmoon

Member
Dec 12, 2019
111
244
I just discovered your mod and tried it. Great mod and great work. Everything is very usefull.

I have just a little problem when I'm rollbacking, the shortcut alt+m doesn't wotk anymore. I have to load a save or close and reopen the game. Not really a bug I think, it's just annoying.

I've seen also that you plan to add other languages. I understand it that it will be a hard work to managed that. It will be great to have the possibility to have your mod in a language different from the game. I often play in english because of awful translation... and having the mod in french at the same time will be great!
I myself translated in french some games, and maybe I can help to translate or make proofreading.

Once again, great work!
 
  • Like
Reactions: 0x52

MiltonPowers

Twins Basil! Twins!
Donor
Jul 26, 2023
7,184
13,909
I just discovered your mod and tried it. Great mod and great work. Everything is very usefull.

I have just a little problem when I'm rollbacking, the shortcut alt+m doesn't wotk anymore. I have to load a save or close and reopen the game. Not really a bug I think, it's just annoying.

I've seen also that you plan to add other languages. I understand it that it will be a hard work to managed that. It will be great to have the possibility to have your mod in a language different from the game. I often play in english because of awful translation... and having the mod in french at the same time will be great!
I myself translated in french some games, and maybe I can help to translate or make proofreading.

Once again, great work!
That can be annoying, I solved it by going into options/Quickmenu and turning Global Quickmenu on and Global URM button on. Then it gives me a URM button at the top of the screen in every game. (I turned everything else off, but you can do whatever suits you).

Screenshot 2024-10-25 204733.png
 

WeskerSpeed00

New Member
Dec 2, 2021
12
2
There are quite a few ways how a loop is formed. Without further information, i can only say if the cause is an unmet condition, it can be quite easy to solve but if the developer made an error there could be more needed to work it out. But mostly one would need too look at the code to determine what went wrong...
ok thanks
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,669
6,471
Can you, though, make it possible to use external fonts, then? Either by using a dialog box or better yet, adding fonts stored in a folder such as \game\0x52_URM\fonts to the "Pick a font" dialog box.
I'll look into this ;)

I have just a little problem when I'm rollbacking, the shortcut alt+m doesn't wotk anymore. I have to load a save or close and reopen the game. Not really a bug I think, it's just annoying.
Yeah. This can happen if you load a save that was created before you installed URM and rollback to the point where URM wasn't installed.

I've seen also that you plan to add other languages. I understand it that it will be a hard work to managed that. It will be great to have the possibility to have your mod in a language different from the game. I often play in english because of awful translation... and having the mod in french at the same time will be great!
I myself translated in french some games, and maybe I can help to translate or make proofreading.
I'm not going to say URM will not support multiple languages in the future, but it has a very, very low priority
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,669
6,471
Is it possible for an URM for Renpy 6.99.13?
See the second post in this thread:
Workaround
There's a workaround for this where you upgrade the Ren'Py version used by the game yourself. But this is not guaranteed to work.
  1. Download the Ren'Py SDK (I would recommend and use the "Download SDK zip" below the buttons)
  2. From the game's folder, remove the folders lib and renpy. Also remove the .exe, .py and .sh files
  3. From the downloaded SDK, put the folders lib and renpy and the files renpy.exe, renpy.py and renpy.sh into the game's folder
  4. Now run the game by starting renpy.exe (on Windows) or renpy.sh (on Linux)
 
  • Like
Reactions: Feyd

pds72

Active Member
Sep 25, 2019
917
806
Request: (if possible)

Adding a paste button to the text replacement window. Then you could input characters not on your keyboard.
 
5.00 star(s) 36 Votes