I saw the update and looks good. Thank you!
Brunoais
Creator of
Recent community posts
Thank you. That helps and should help others too.
I think the rest is fine. It shouldn't clash with existing content from other people. I just have the habit of namespacing everything to make sure that it doesn't clash with anything else but that's just a personal preference.
Right now, it's not clashing with anything I have so it's working ok for me.
I like this concept! This can be quite useful, specially when one has a story with lore! Oh and in those fantasy where there's flavor language to give the impression of a completely different culture. Many fantasy books do that. This is a good way to provide the meaning of some words without the need to click to go to a dictionary screen (although the dictionary screen is still needed for platforms without a pointer).
I have a few questions:
- Is it possible to add footnote inline instead of placing in a global variable FOOTNOTES?
- Is it possible to add tags to the footnote text (E.g. bold or underline)?
- I tried to make it so previous code I used for the VN I'm trying this in to cooperate with this (a link to the "glossary menu" screen). Only one of the link types work at a time depending on the init number I set. How to have both co-existing? I wonder how to make it so more than one hyperlink type in dialogs work at the same time.
Thank you for making this. It's the "small, but useful" kind. Another good one to add to my arsenal.
Initially, I was seeing the wrong image because in the project I tested it on already had a "focus" image.
Jumping to focus_test is straightforward to see it in action. I intent to use it but for different purpose (likely, with tweaks).
I just wish I didn't have to edit variable variable names and image names for it (in my case, the "focus" image and the "focusing" variable).
Thank you for making this. It's the "small, but useful" kind. Another good one to add to my arsenal.
Initially, I was seeing the wrong image because in the project I tested it on already had a "focus" image.
Jumping to focus_test is straightforward to see it in action. I intent to use it but for different purpose (likely, with tweaks).
I just wish I didn't have to edit variable variable names and image names for it (in my case, the "focus" image and the "focusing" variable).
Small background: I'm checking out different snippets and experimenting with different content both from this Asset Jam and a commission I'm currently on.
This particle set is Great, by the way. I like it and I will certainly suggest it to commissioners who want particles in their Ren'Py VN.
Main issue explanation:
However, at the same time, I was testing a code excerpt which ended up in the same project by mistake. It was running just fine until I removed the Particle VFX from the libs to continue to the next. When it autoreloaded and got error screen. In it, it was:
NameError: name 'math' is not defined
Long story short. I wasn't importing math. But wait. It was working before!
I install again the Particle VFX and it works again.
Then I found that random and math where being imported globally.
init -990 python:
import random, math
This explained why I had that unexpected behavior.
May I ask that no additional modules are imported to the global namespace?
I'm open for discussion and options for this, to avoid causing unexpected behavior. It is rather arguable that random and math are mostly innocuous but it still caught me of-guard for a couple of minutes.
Thank you
I wish it had live code samples/snipets like Ren'Py tutorial has. Code I could just copy and try by myself immediately, to replicate what I see. Just like how the Ren'Py tutorial does.
Without it one had to work around it to get to the code he's seeing.
I'm open to help you implementing it, if you are open for it.
Bug:
If LayeredImage is defined with spaces, the code doesn't trigger.
Suggested fix:
-> I uploaded all these changes to pastebin, if you prefer: https://pastebin.com/fBpRBPaR
After
init python in director:
Create:
def get_registered_image():
import itertools
reg = state.tag and renpy.get_registered_image(state.tag)
if state.tag and reg is None:
for attr_choice in itertools.product(state.attributes):
reg = renpy.get_registered_image(' '.join((state.tag,) + attr_choice))
if reg is not None:
return reg
In:
def get_ordered_layeredimage_attributes():
Assign:
reg = get_registered_image()
Replace both for with:
for group_att in reg.attributes:
At:
if isinstance(renpy.get_registered_image(state.tag), LayeredImage):
Replace with:
if isinstance(director.get_registered_image(), LayeredImage):Thank you for the attention
Bug:
It's possible for state.tag to be None.
`if isinstance(renpy.get_registered_image(state.tag), LayeredImage):`
When that happens, it causes an exception inside renpy when calling renpy.get_registered_image()
File "renpy/python.py", line 1375, in py_eval_bytecode
return eval(bytecode, globals, locals)
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "game/layeredimage-visual-editor-v3/01cute_layeredimage_editor.rpy", line 86, in <module>
if isinstance(renpy.get_registered_image(state.tag), LayeredImage):
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
File "renpy/display/image.py", line 310, in get_registered_image
name = tuple(name.split())
^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'split'
Reproduction steps:
- Open director mode
- Click + to add in between a line
- click "show"
- Without selecting a tag, click "(properties)" (at top)
- exception happens.
I can't reproduce that, so I need more information which may help me knowing what's wrong.
What are you doing when you place the rpe file? Are you only reloading? Are you restarting renpy? Does this happen when you remove the rpe and only reload renpy without restarting renpy?
Do you have any code that tries to do something with layers which runs before init -5?
Do you have a non-updated version of ActionEditor3 (it had a bug which caused issues).
If you can send me a simplified version of the VN which also fails, that works too (you can replace all images with the same image as placeholder, if you prefer)
I didn't test this but I'd assume it works:
A workaround you can try is making a new function that does that for you.
def says(who, what):
return renpy.say(who, speechPauses.add_speech_pauses(what))
If you are using tooling that is calling renpy.say directly, you can consider replacing renpy.say() function but renpy also uses that function, so that can lead to duplicated pauses.
If you tell me the specific situation you are dealing with, I may come up with a compromise for you that won't be as hard to work with.
Didn't I? WOW it's been so long!
It's been my main job and I'm doing commissions as my 2nd job and this time they haven't been ren'py commissions. Then I'm KO but I had opportunities but I didn't remember. Sorry. I'll try to do Monday or Tuesday. I have a commission finishing this weekend.
Sorry I didn't write anything. I genuinely forgot.
I'm hopping to have another ren'py commission so I have an excuse to continue my GuiManipulate too.
Ok. So,
- Where is the best place for a newcomer? I've used the file too much already and I'm already fully biased...
- OK. I'll do that next week (busy with a commission right now).
- I think that would be too intrusive to the user I much rather do some sort of default behavior in my code than changing settings for the user. Even worse when my code is more of a "appliance in the VN dev's house". I would be displeased if my fridge started messing with my AC thermostat, even if for my own good.
Relative pauses requires the text speed to not be maxed out. It's relative to the pause between each character. If the pause is 0 (the text speed is maxed out), then there's no possible pause because the multiplication to make it relative results in 0.
Try reducing the text speed in the preferences. You can see at 0:56 on the bottom left of the preferences screen.
I consider this is a UX problem and not a bug. What do you suggest for me to fix it? Maybe a message that appears under the "Sentences" bar when the Text Speed is maxed out warning just that? Or maybe nearby the "Relative pauses" radio button? Or maybe you have a better idea? For ease of install, I don't want to require more than the use for integration in settings.
Thank you.
I used what you wrote there, I've made the change and I've place it here: https://gitlab.com/brunoais/renpy-speech-pauses/-/snippets/4833299
Please test whether it's working right because I don't have any Indonesian VN to test on.
I've tried making changes so the inspect adapts to the GUI size.
The direct download link is here: https://gitlab.com/brunoais/renpy-guiInspect/-/raw/dist/renpy-guiInspectv0.3.1-pre.rpe
Let me know if this works for you. If the issue is solved for you, I'll release it as a new fix version.
Thank you for reporting
Export doesn't work.
I tried converting a .rpy file translation I have for one of my previous commissions and the file comes out with just a line as the header with the correct language set but and all the already translated and not translated yet strings aren't there. It's only the single header line.
By the way, I had to run it through Proton because this is a windows executable.
Sounds good. 👍
There's some things I really would want to implement such as the concept of namespacing the variables, functions, transforms, etc... so it doesn't clash with other stuff. The rest, that's not as important.
I'm open for discussion or comments, if you want. You can contact me. I'm also on Discord and other discussion forums.