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

5.00 star(s) 33 Votes

theMickey_

Engaged Member
Mar 19, 2020
2,113
2,652
Hello, could someone help me?
So, I've just tested this (after I figured out which version of the game I had to download), and it still works:

1) It seems like every character in this game has it's on variable with the image_tag property:
1695924241586.png
For Tony it's t.image_tag, for Anne it's a.image_tag, for Ryan it's r.image_tag and so on -- there are roughly about 110 different image_tag variables. If you search for them (like in the screenshot above), you can also see all the usable values for those, like "Tony", "Anne" and "Ryan" for example.

2) If you want to change someones image, you just have to change its personal image_tag variable to the character you want to have displayed instead, like:
1695924370937.png
In this example I have replace the images for Tony, Anne and Ryan to "Deilvery guy".

3) The result looks like this:
1695925268084.png --> 1695924068031.png
1695925283819.png --> 1695924098771.png


In the screenshot you posted, you have replace t.image_tag (that's Tony's image!) with "Anne", so whenever Tony is talking, you should see Anne's picture. But your second screenshot shows a dialogue line from Anne herself, which (according to your first screenshot) shouldn't have changed at all.

Hope that helps!
 
Last edited:
Apr 26, 2022
38
8
So, I've just tested this (after I figured out which version of the game I had to download), and it still works:

1) It seems like every character in this game has it's on variable with the image_tag property:
For Tony it's t.image_tag, for Anne it's a.image_tag, for Ryan it's r.image_tag and so on -- there are roughly about 110 different image_tag variables. If you search for them (like in the screenshot above), you can also see all the usable values for those, like "Tony", "Anne" and "Ryan" for example.

2) If you want to change someones image, you just have to change its personal image_tag variable to the character you want to have displayed instead, like:
In this example I have replace the images for Tony, Anne and Ryan to "Deilvery guy".

3) The result looks like this:


In the screenshot you posted, you have replace t.image_tag (that's Tony's image!) with "Anne", so whenever Tony is talking, you should see Anne's picture. But your second screenshot shows a dialogue line from Anne herself, which (according to your first screenshot) shouldn't have changed at all.

Hope that helps!
Thank you, even so it is not the same as the first time that option appeared since before, in a dialogue I changed the image of x character for that of x character but in the next dialogue the image returned to the original, it is as if only It was changed for a single scene or a single dialogue
 

theMickey_

Engaged Member
Mar 19, 2020
2,113
2,652
but in the next dialogue the image returned to the original
Can't reproduce that. If you follow my previous post, once you change a picture, it does not automatically switch back to the original -- I've just skipped through multiple days, and both Anne's and Tony's pictures are still that of a Delivery guy ;-)
 

Daddy-S

Member
Aug 27, 2022
205
810
I get this error with urm + 3rd party I-patch. Not sure if its interesting or helpful info but there it is.
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,594
6,039
I get this error with urm + 3rd party I-patch. Not sure if its interesting or helpful info but there it is.
Seems like this occurs because you have the "Skip splashscreen" option enabled.
Assuming you've enabled this option globally through another game, you could disabled it again that way and try again.
 
  • Like
Reactions: "CJ"

RabidSloth

Well-Known Member
Dec 4, 2018
1,084
1,391
Hi, I have a quick question. I'm thinking of expanding my currently limited Ren'Py modding knowledge and modding some games just for personal use. So far I (mostly) just know how to do things like edit dialogue and images.

But some of the things that I would specifically like to learn how to do involve things like:

1) Creating different dialogue branches for certain scenes. For example; "Do you want to be more [Dominant] or [Submissive]?". Writing the branches separately and then adding a way in-game to choose which one gets used for the scene.

2) Create a new modded ending for a game using assets from other alternate endings.

Would this mod and its tutorials help me achieve those specific goals, or no? Thank you for any info or tips btw =)

Just to clarify: I'm talking about modding already completed games, not making my own (not yet anyway).
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,594
6,039
If it comes to that, I want to ask, is it possible to do something with my patch that it would work with your mod (if I install both your mod and my patch, my patch does not work, no bugs)?
p.s. I have zero coding knowledge, just know this function(text.replace), and a few others.
The piece of code you've attached is not related to the issue, it's this part:
Python:
class LabelOverridesSwitch(object):
    def __init__(self, passthru):
        self.ipatch = set()
        self.passthru = passthru
    def get(self, key, default=None):
        return key + "_i" if key in self.ipatch else self.passthru.get(key, default)

if not isinstance(config.label_overrides, LabelOverridesSwitch):
    config.label_overrides = LabelOverridesSwitch(config.label_overrides)
This partially breaks Ren'Py's label override mechanism.
You could change it to something like this to have at least some compatibility with Ren'Py's implementation, but it's still not perfect.
Python:
class LabelOverridesSwitch(object):
    def __init__(self, passthru):
        self.ipatch = set()
        self.passthru = passthru
    def get(self, key, default=None):
        return key + "_i" if key in self.ipatch else self.passthru.get(key, default)
    def __getitem__(self, key):
        return self.get(key)
    def __setitem__(self, key, value):
        self.passthru[key] = value
    def __delitem__(self, key):
        if key in self.passthru:
            del self.passthru[key]
        elif key in self.ipatch:
            self.ipatch.remove(key)

if not isinstance(config.label_overrides, LabelOverridesSwitch):
    config.label_overrides = LabelOverridesSwitch(config.label_overrides)
But I don't see why you need this LabelOverridesSwitch. You could just use the config.label_overrides as intended. This would be all the code you need in the first init block:
Python:
config.label_overrides['Fish1'] = 'Fish1_i'
config.label_overrides['Day9'] = 'Day9_i'
config.label_overrides['Acryroom'] = 'Acryroom_i'
config.label_overrides['VisitM26'] = 'VisitM26_i'
config.label_overrides['cel34V'] = 'VisitM26_i'

Hi, I have a quick question. I'm thinking of expanding my currently limited Ren'Py modding knowledge and modding some games just for personal use. So far I (mostly) just know how to do things like edit dialogue and images.

But some of the things that I would specifically like to learn how to do involve things like:

1) Creating different dialogue branches for certain scenes. For example; "Do you want to be more [Dominant] or [Submissive]?". Writing the branches separately and then adding a way in-game to choose which one gets used for the scene.

2) Create a new modded ending for a game using assets from other alternate endings.

Would this mod and its tutorials help me achieve those specific goals, or no? Thank you for any info or tips btw =)

Just to clarify: I'm talking about modding already completed games, not making my own (not yet anyway).
You cannot use URM do add scenes, if that's what you're asking.
 

Paranoiaaaaaa

Newbie
Jul 13, 2018
97
73
Hi, is it possible to add a “choose both” button when players need make dicisions.
Like when choose to visit which girl, we can “choose both” to get all the points and flags.
Its a basic feature for many mods.
Of course I know there is chance to broken the game, maybe you can have it disabled by default or add some notice.
 
  • Thinking Face
Reactions: Belzeebub$

Tiur

Well-Known Member
Nov 13, 2021
1,091
2,969
Hi, is it possible to add a “choose both” button when players need make dicisions.
Like when choose to visit which girl, we can “choose both” to get all the points and flags.
Its a basic feature for many mods.
Of course I know there is chance to broken the game, maybe you can have it disabled by default or add some notice.
No, that involves rewriting the jump and label code in ways specific to each individual game.
 
  • Like
Reactions: 0x52

k1bell

Newbie
Sep 15, 2017
70
122
Hey there, was using the mod with Heads will Roll - Downfall.
Stuff was working all fine, until I decided to click on Snapshots in the URM which gave me errors.
And now I can't access URM with Alt-M as it will try to access the Snapshot tab directly which will give errors again.
Is there a way to open URM at another page?
 
Last edited:

WeAreChecking

Newbie
Nov 29, 2020
94
65
Hi there, I was playing Misfits part 1 on android without any mods (because there aren't any) and whenever I click on search bar I get this error and It's the first time I got an error while using URM. Screenshot_2023-10-05-19-00-15-88_87e33e71e2d0cc351172f64a029bb9ee.jpg
Python:
```
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "renpy/common/00action_other.rpy", line 540, in __eq__
TypeError: 'unicode' object is not callable

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

Full traceback:
  File "script.rpyc", line 144, in script call
  File "CH 1.rpyc", line 923, in script
  File "renpy/ast.py", line 921, in execute
  File "renpy/exports.py", line 1373, in say
  File "renpy/character.py", line 1266, in __call__
  File "renpy/character.py", line 930, in do_display
  File "renpy/character.py", line 666, in display_say
  File "renpy/ui.py", line 299, in interact
  File "renpy/display\core.py", line 3377, in interact
  File "renpy/display\core.py", line 3804, in interact_core
  File "renpy/display\core.py", line 582, in visit_all
  File "renpy/display\core.py", line 582, in visit_all
  File "renpy/display\core.py", line 582, in visit_all
  File "renpy/display\screen.py", line 451, in visit_all
  File "renpy/display\core.py", line 3804, in <lambda>
  File "renpy/display\screen.py", line 462, in per_interact
  File "renpy/display\screen.py", line 653, in update
  File "0x52/screens/main.rpy.x52", line 54, in execute
  File "0x52/screens/main.rpy.x52", line 54, in execute
  File "0x52/screens/main.rpy.x52", line 60, in execute
  File "renpy/common/00action_other.rpy", line 540, in __eq__
TypeError: 'unicode' object is not callable

```
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,594
6,039
Hey there, was using the mod with Heads will Fall - Downfall.
Stuff was working all fine, until I decided to click on Snapshots in the URM which gave me errors.
And now I can't access URM with Alt-M as it will try to access the Snapshot tab directly which will give errors again.
Is there a way to open URM at another page?
I'm unable to find "Heads will roll - Downfall" on this site, but it seems like they have assigned something to the "list".
You could delete the persistent file (or rename it to not lose it) in both the game/saves folder and in the Appdata and start the game again. URM will revert back to the "Search" tab.

But... them using "list" will break other things like sorting and textbox customization. And possibly internal Ren'Py things.

Hi there, I was playing Misfits part 1 on android without any mods (because there aren't any) and whenever I click on search bar I get this error and It's the first time I got an error while using URM. View attachment 2982109
Python:
```
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "renpy/common/00action_other.rpy", line 540, in __eq__
TypeError: 'unicode' object is not callable

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

Full traceback:
  File "script.rpyc", line 144, in script call
  File "CH 1.rpyc", line 923, in script
  File "renpy/ast.py", line 921, in execute
  File "renpy/exports.py", line 1373, in say
  File "renpy/character.py", line 1266, in __call__
  File "renpy/character.py", line 930, in do_display
  File "renpy/character.py", line 666, in display_say
  File "renpy/ui.py", line 299, in interact
  File "renpy/display\core.py", line 3377, in interact
  File "renpy/display\core.py", line 3804, in interact_core
  File "renpy/display\core.py", line 582, in visit_all
  File "renpy/display\core.py", line 582, in visit_all
  File "renpy/display\core.py", line 582, in visit_all
  File "renpy/display\screen.py", line 451, in visit_all
  File "renpy/display\core.py", line 3804, in <lambda>
  File "renpy/display\screen.py", line 462, in per_interact
  File "renpy/display\screen.py", line 653, in update
  File "0x52/screens/main.rpy.x52", line 54, in execute
  File "0x52/screens/main.rpy.x52", line 54, in execute
  File "0x52/screens/main.rpy.x52", line 60, in execute
  File "renpy/common/00action_other.rpy", line 540, in __eq__
TypeError: 'unicode' object is not callable

```
Sorry, I can't explain this issue and it would be a lot of work to investigate.
 

k1bell

Newbie
Sep 15, 2017
70
122
I'm unable to find "Heads will roll - Downfall" on this site, but it seems like they have assigned something to the "list".
You could delete the persistent file (or rename it to not lose it) in both the game/saves folder and in the Appdata and start the game again. URM will revert back to the "Search" tab.

But... them using "list" will break other things like sorting and textbox customization. And possibly internal Ren'Py things.


Sorry, I can't explain this issue and it would be a lot of work to investigate.
Thanks, will give it a try.
You probably can't find it since
  1. I had a brainfart and wrote Heads will fall instead of Heads will roll.:eek:
  2. There isn't much sex in it
  3. It's free on Steam
 
Apr 1, 2018
224
124
Has anyone found a useful variable that can be manipulated in every renpy game? I have been curiously searching for something that exists in every renpy game that can changed to be of good use and ik some game devs have put dev panels in theirs I can't recall specific game examples but there was one where I found a variable name something along the line of "dev_tool" or "dev_menu" I know URM as is can easily replace and beat any "dev" menu but I'm just curious to see what possibly developers actually put in their dev menus. And than another where I had to type in a code to progress in game and I was trying to find the code through URM I mean is there such a way? To instead of looking for variables to manipulate or labels to play you find the answer or code that would let you progress?
 

Shiva11

Newbie
Feb 8, 2018
48
63
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:
screenshot0001.png

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

screenshot0002.png

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.
 

Coin001

New Member
Oct 4, 2023
5
0
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
 

FiendPawPaw

New Member
Oct 7, 2023
1
0
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
 
5.00 star(s) 33 Votes