Showing game stats on file slots?
Forum rules
This is the right place for Ren'Py help. Please ask one question per thread, use a descriptive subject like 'NotFound error in option.rpy' , and include all the relevant information - especially any relevant code and traceback messages. Use the code tag to format scripts.
This is the right place for Ren'Py help. Please ask one question per thread, use a descriptive subject like 'NotFound error in option.rpy' , and include all the relevant information - especially any relevant code and traceback messages. Use the code tag to format scripts.
-
- Regular
- Posts: 141
- Joined: Fri Mar 15, 2019 8:46 am
- Completed: Clockwork Poison
- Projects: Melodic Dates, Clockwork Poison: Salvation
- Contact:
Showing game stats on file slots?
Hi again!
I want to change the file_slots screens. I've already made a lot of changes, but I'd like to know if this is possible in Renpy: I want to display some stats (variables and class objects), like MC's name, money, etc of each saved game in its corresponding slot. Can I do that without doing things like setting those variables as persistent or something like that? I'm asking because, since the screen file_slots is accessed outside a saved game (mainly), I'm not sure if I can use normal game variables on it.
EDIT: I was thinking about creating a function that gives the variable save_name a string with changes of lines with \n and changes of font size and even interpolating some images in the text. The problem with that is that I'd like some part of the text to be aligned to the left, others to the right and others to the center, and I don't see how to do this in one string.
I want to change the file_slots screens. I've already made a lot of changes, but I'd like to know if this is possible in Renpy: I want to display some stats (variables and class objects), like MC's name, money, etc of each saved game in its corresponding slot. Can I do that without doing things like setting those variables as persistent or something like that? I'm asking because, since the screen file_slots is accessed outside a saved game (mainly), I'm not sure if I can use normal game variables on it.
EDIT: I was thinking about creating a function that gives the variable save_name a string with changes of lines with \n and changes of font size and even interpolating some images in the text. The problem with that is that I'd like some part of the text to be aligned to the left, others to the right and others to the center, and I don't see how to do this in one string.
- Imperf3kt
- Lemma-Class Veteran
- Posts: 3794
- Joined: Mon Dec 14, 2015 5:05 am
- itch: Imperf3kt
- Location: Your monitor
- Contact:
Re: Showing game stats on file slots?
Yes, I believe that's possible.
I'm not home at the moment, so I'm posting to remind myself to reply later.
I'm not home at the moment, so I'm posting to remind myself to reply later.
Warning: May contain trace amounts of gratuitous plot.
pro·gram·mer (noun) An organism capable of converting caffeine into code.
Current project: GGD Mentor
Twitter
pro·gram·mer (noun) An organism capable of converting caffeine into code.
Current project: GGD Mentor
-
- Miko-Class Veteran
- Posts: 793
- Joined: Fri Feb 09, 2018 12:05 am
- Location: Canada
- Contact:
Re: Showing game stats on file slots?
yes you can
here is a example but not using the save slots
if you have variables line this
how to show up in a sceens or anywhere else is to go like this but you need to know where to put it this how far I can help you... you have to put it somewhere in the screen file_slots(title):
here is a example but not using the save slots
if you have variables line this
Code: Select all
$ love = 0
Code: Select all
[love]
- Imperf3kt
- Lemma-Class Veteran
- Posts: 3794
- Joined: Mon Dec 14, 2015 5:05 am
- itch: Imperf3kt
- Location: Your monitor
- Contact:
Re: Showing game stats on file slots?
Its not quite that simple, as the stats must be save independant.rayminator wrote: ↑Fri May 01, 2020 7:07 pm yes you can
here is a example but not using the save slots
if you have variables line this
how to show up in a sceens or anywhere else is to go like this but you need to know where to put it this how far I can help you... you have to put it somewhere in the screen file_slots(title):Code: Select all
$ love = 0
Code: Select all
[love]
There's a way, I think, but it's not something I can recall from memory and must check my project files for an example.
Warning: May contain trace amounts of gratuitous plot.
pro·gram·mer (noun) An organism capable of converting caffeine into code.
Current project: GGD Mentor
Twitter
pro·gram·mer (noun) An organism capable of converting caffeine into code.
Current project: GGD Mentor
- MaydohMaydoh
- Regular
- Posts: 165
- Joined: Mon Jul 09, 2018 5:49 am
- Projects: Fuwa Fuwa Panic
- Tumblr: maydohmaydoh
- Location: The Satellite of Love
- Contact:
Re: Showing game stats on file slots?
https://www.renpy.org/doc/html/save_loa ... -save_name
You could probably use this somehow
You could probably use this somehow
-
- Regular
- Posts: 141
- Joined: Fri Mar 15, 2019 8:46 am
- Completed: Clockwork Poison
- Projects: Melodic Dates, Clockwork Poison: Salvation
- Contact:
Re: Showing game stats on file slots?
As you said, when I simply do text "[variable]" inside the button, the variable for the last saved slot repeats itself for all the slots, so every slot has the same information. I'm looking for a way to be independent for each saved game. If you say it's possible, though, I'd appreciate a lot to know how!
That's precisely what I tried to do, and it's indeed doable that way. My problem here is that "save_name" takes only one string and, as I said in my original post, I'd like to have some parts of the text aligned to the left, others to the center and others to the right. I've made a concept on Photoshop (it's not a screenshot from the game) and I'd like it to look something like this:MaydohMaydoh wrote: ↑Sat May 02, 2020 12:37 am https://www.renpy.org/doc/html/save_loa ... -save_name
You could probably use this somehow
As you can see, I have squares where each variable goes, so in my case, MC's name and job would be aligned to the left, the money and the other currency to the right, girls met, true lovers and songs made to the center, etc. If I make a function that gives save_name a string with all this info, each variable wouldn't fit in each square, because the name or the job or other variables can take different widths.
- MaydohMaydoh
- Regular
- Posts: 165
- Joined: Mon Jul 09, 2018 5:49 am
- Projects: Fuwa Fuwa Panic
- Tumblr: maydohmaydoh
- Location: The Satellite of Love
- Contact:
Re: Showing game stats on file slots?
Using the JSON will allow you to save things as list or whatever you want.
Something like:
Then retrieve it using
Something like:
Code: Select all
name = "Myaido"
money = 500
love = 0
def save_data(d):
d["save_data"] = [ name, money, love ]
config.save_json_callbacks.append(save_data)
Code: Select all
save_data = FileJson(slot, "save_data")
Re: Showing game stats on file slots?
You could try to make such a system:Adrian_DVL wrote: ↑Sat May 02, 2020 9:01 am ...My problem here is that "save_name" takes only one string and, as I said in my original post, I'd like to have some parts of the text aligned to the left, others to the center and others to the right. ...
- make a screen to dynamicaly set 'save_name' variable
Code: Select all
screen test_save_scr():
tag menu
$ store.save_name = var_1+"|"+var_2 # all the variables you want to use, separated with "|"
timer 0.01 action ShowMenu("save") repeat False
Code: Select all
$ _game_menu_screen = "test_save_scr"
Code: Select all
## The grid of file slots.
grid gui.file_slot_cols gui.file_slot_rows:
style_prefix "slot"
xalign 0.5
yalign 0.5
spacing gui.slot_spacing
for i in range(gui.file_slot_cols * gui.file_slot_rows):
$ slot = i + 1
button:
action FileAction(slot)
has vbox
add FileScreenshot(slot) xalign 0.5
text FileTime(slot, format=_("{#file_time}%A, %B %d %Y, %H:%M"), empty=_("empty slot")):
style "slot_time_text"
#text FileSaveName(slot):
# style "slot_name_text"
$ some_data = FileSaveName(slot).split("|") # the 'save_name' split to parts
if len(some_data) < 2: # if slot is empty there will be only 1 part
text "{}".format(some_data[0]):
style "slot_name_text"
else:
hbox:
xsize 250
text "{}".format(some_data[0]) xalign 0.0
text "{}".format(some_data[1]) xalign 1.0
key "save_delete" action FileDelete(slot)
Code: Select all
label start:
$ _game_menu_screen = "test_save_scr"
$ var_1 = "bob"
$ var_2 = "hp: 100"
"test save/load"
"..."
$ var_1 = "sam"
$ var_2 = "hp: 20"
"test save/load 2"
"?!"
-
- Regular
- Posts: 141
- Joined: Fri Mar 15, 2019 8:46 am
- Completed: Clockwork Poison
- Projects: Melodic Dates, Clockwork Poison: Salvation
- Contact:
Re: Showing game stats on file slots?
I honestly don't know how you have a solution for everything, but you did help me quite a few times. This works so well! I now have to fix a few things to make all the variables and elements to fit and that would be it. Thank you so much!Alex wrote: ↑Sat May 02, 2020 11:45 amYou could try to make such a system:Adrian_DVL wrote: ↑Sat May 02, 2020 9:01 am ...My problem here is that "save_name" takes only one string and, as I said in my original post, I'd like to have some parts of the text aligned to the left, others to the center and others to the right. ...
I've also though about using the JSON but I was not quite sure about how to use it. I messed a bit with it and it's pretty doable like that, too. Thank you!MaydohMaydoh wrote: ↑Sat May 02, 2020 11:07 am Using the JSON will allow you to save things as list or whatever you want.
-
- Regular
- Posts: 141
- Joined: Fri Mar 15, 2019 8:46 am
- Completed: Clockwork Poison
- Projects: Melodic Dates, Clockwork Poison: Salvation
- Contact:
Re: Showing game stats on file slots?
Okay, I positioned all the elements how I wanted to, but a couple things:Alex wrote: ↑Sat May 02, 2020 11:45 amYou could try to make such a system:Adrian_DVL wrote: ↑Sat May 02, 2020 9:01 am ...My problem here is that "save_name" takes only one string and, as I said in my original post, I'd like to have some parts of the text aligned to the left, others to the center and others to the right. ...
First of all, when I try to load a game from the main menu, all the variables are showed as by default, as if Renpy didn't recognize them as stored variables. How do I fix this? I presume that making the variables persistent won't help, as it'd overrate the variables values for the rest of the slots.
Second: even if I fix the above, some of the variables I want to display in the file slot are gotten by a function inside the game. I mean, for instance for the time spent in the game I've made a function that gets the session game and adds it to the persistent.runtime, so I execute these functions before the player click the save button. Shall I expect those variables to be stored the same as the other ones and be displayed properly in the file slot?
Re: Showing game stats on file slots?
Hm, in my sample 'save_name' variable is used as it usually used. So, as long as your 'save_name' variable is stored in save file it should show up in load screen properly.
Check if you set it properly in "test_save_scr" screen (in my sample).
Also, check the "file_slots" screen if you use the value of 'save_name' variable corresponded to the slot
Code: Select all
$ some_data = FileSaveName(slot).split("|")
-
- Regular
- Posts: 141
- Joined: Fri Mar 15, 2019 8:46 am
- Completed: Clockwork Poison
- Projects: Melodic Dates, Clockwork Poison: Salvation
- Contact:
Re: Showing game stats on file slots?
I'm really trying to find the issue but I don't know. I tried your code in a test project and it worked perfectly fine, but that's not the case in my project. I even left your comments on the code, changing just the name of variables and that's it:Alex wrote: ↑Sat May 02, 2020 2:43 pmHm, in my sample 'save_name' variable is used as it usually used. So, as long as your 'save_name' variable is stored in save file it should show up in load screen properly.
Check if you set it properly in "test_save_scr" screen (in my sample).
Also, check the "file_slots" screen if you use the value of 'save_name' variable corresponded to the slotCode: Select all
$ some_data = FileSaveName(slot).split("|")
Code: Select all
screen test_save_scr():
tag menu
$ store.save_name = var_1+"|"+var_2+"|"+var_3+"|"+var_4+"|"+var_5+"|"+var_6+"|"+var_7 # all the variables you want to use, separated with "|"
timer 0.01 action ShowMenu("save") repeat False
Code: Select all
grid 1 5:
style_prefix "slot"
xalign 0.65
ypos -34
spacing 5
for i in range(5):
$ slot = i + 1
button:
action FileAction(slot)
has vbox
$ some_data = FileSaveName(slot).split("|") # the 'save_name' split to parts
if len(some_data) < 7: # if slot is empty there will be only 1 part
text "{}".format(some_data[0]):
style "slot_name_text"
else:
vbox:
xsize 500
ysize 100
hbox:
text "{}".format(some_data[0]) xpos 6 xalign 0.0 ypos 10
text "{}".format(some_data[1]) xpos 160 xalign 1.0 ypos 10
text "{}".format(some_data[2]) xpos 220 xalign 1.0 ypos 10
hbox:
text "{}".format(some_data[3]) xpos 6 xalign 0.0 ypos 76
text "{}".format(some_data[4]) xpos 126 xalign 1.0 ypos 76
text "{}".format(some_data[5]) xpos 184 xalign 1.0 ypos 76
text "{}".format(some_data[6]) xpos 240 xalign 1.0 ypos 76
hbox:
text FileTime(slot, format=_("{#file_time}%A, %B %d %Y, %H:%M"), empty=_("empty slot")):
key "save_delete" action FileDelete(slot)
Code: Select all
label room:
$ metnum = glist.metnum()
$ maxnum = glist.maxnum()
$ calc_total_run()
$ minutes, seconds = divmod(int(persistent.runtime), 60)
$ hours, minutes = divmod(minutes, 60)
$ jobname()
$ var_1 = "{size=16}[name], [job!l]{/size}"
$ var_2 = "{size=16}[money]${/size}"
$ var_3 = "{size=16}[clef]cl.{/size}"
$ var_4 = "{size=12}[hours] h and [minutes] m in town{/size}"
$ var_5 = "{size=12}[metnum] girls met{/size}"
$ var_6 = "{size=12}[maxnum] true lovers{/size}"
$ var_7 = "{size=12}[songs] songs made"
...
Code: Select all
action [Play("sound", "audio/hi.mp3"), ShowMenu('test_save_scr')]
Re: Showing game stats on file slots?
Looks like you ought to move all the sizing and other stuff to the 'save_slot' screen.
In 'test_save_scr' then you can use your own variables, like
Code: Select all
$ store.save_name = name+", "+job+"|"+money+"|"+clef+"|"+hours+" h and "+minutes+" m in town"+"|"+metnum+"|"+maxnum+"|"+songs
Code: Select all
hbox:
text "{size=16}{}{/size}".format(some_data[0]) xpos 6 xalign 0.0 ypos 10
text "{size=16}{}${/size}".format(some_data[1]) xpos 160 xalign 1.0 ypos 10
text "{size=16}{}cl.{/size}".format(some_data[2]) xpos 220 xalign 1.0 ypos 10
hbox:
text "{size=12}{}{/size}".format(some_data[3]) xpos 6 xalign 0.0 ypos 76
text "{size=12}{} girls met{/size}".format(some_data[4]) xpos 126 xalign 1.0 ypos 76
text "{size=12}{} true lovers{/size}".format(some_data[5]) xpos 184 xalign 1.0 ypos 76
text "{size=12}{} songs made{/size}".format(some_data[6]) xpos 240 xalign 1.0 ypos 76
-
- Regular
- Posts: 141
- Joined: Fri Mar 15, 2019 8:46 am
- Completed: Clockwork Poison
- Projects: Melodic Dates, Clockwork Poison: Salvation
- Contact:
Re: Showing game stats on file slots?
That doesn't work either due to two reasons: the first one is that I got a Coercing to Unicode, int found error, probably because I'm using an int in save_name (not like last time, when it was a string with an int inside) and the second reason is that I get a Key Error {size=16}, probably because python is detecting the size tag as the variable instead of the next {}. Any other idea?Alex wrote: ↑Sat May 02, 2020 3:45 pmLooks like you ought to move all the sizing and other stuff to the 'save_slot' screen.
In 'test_save_scr' then you can use your own variables, likeCode: Select all
$ store.save_name = name+", "+job+"|"+money+"|"+clef+"|"+hours+" h and "+minutes+" m in town"+"|"+metnum+"|"+maxnum+"|"+songs
Code: Select all
hbox: text "{size=16}{}{/size}".format(some_data[0]) xpos 6 xalign 0.0 ypos 10 text "{size=16}{}${/size}".format(some_data[1]) xpos 160 xalign 1.0 ypos 10 text "{size=16}{}cl.{/size}".format(some_data[2]) xpos 220 xalign 1.0 ypos 10 hbox: text "{size=12}{}{/size}".format(some_data[3]) xpos 6 xalign 0.0 ypos 76 text "{size=12}{} girls met{/size}".format(some_data[4]) xpos 126 xalign 1.0 ypos 76 text "{size=12}{} true lovers{/size}".format(some_data[5]) xpos 184 xalign 1.0 ypos 76 text "{size=12}{} songs made{/size}".format(some_data[6]) xpos 240 xalign 1.0 ypos 76
EDIT: I checked your previous code again (the one with var_1, var_2, etc) in a test project, but defaulting a variable money to 200 and then changing it in the game before saving the game. When saving the game, the new money value is displayed in the slot, but when I try to load the game from the main menu, the default value is displayed, just like it happens in my main project...
-
- Regular
- Posts: 141
- Joined: Fri Mar 15, 2019 8:46 am
- Completed: Clockwork Poison
- Projects: Melodic Dates, Clockwork Poison: Salvation
- Contact:
Re: Showing game stats on file slots?
Guys, I've tried just by giving the variable save_name a string with all the variables and even a few interpolated images, but the outcome is just about the same as with Alex's code. Seems the problem here are the variables themselves, as they won't be stored and be displayed while in the main menu.
Here's what I got in the save screen inside the game:
Here's what I got in the load screen in the main menu:
Clearly my problem is that I'm not able to access game variables outside the game. If I was, then I'd be able to implement Alex's code, as it's the fanciest and most functional way to do this.
It seems my best choice is to use FileJson somehow as MaydohMaydoh suggested, since I'm sure that way the variables will be accessed outside the game, but I don't know how to use it properly to display different things in a file slot. Can someone help me?
Here's what I got in the save screen inside the game:
Here's what I got in the load screen in the main menu:
Clearly my problem is that I'm not able to access game variables outside the game. If I was, then I'd be able to implement Alex's code, as it's the fanciest and most functional way to do this.
It seems my best choice is to use FileJson somehow as MaydohMaydoh suggested, since I'm sure that way the variables will be accessed outside the game, but I don't know how to use it properly to display different things in a file slot. Can someone help me?
Who is online
Users browsing this forum: Bing [Bot], Google [Bot]