A downloadable asset pack

Download NowName your own price

A more advanced Ren'py phone project than the previous Phone message system for Ren'py.

The file you download is a complete project with instructions and a demonstration of the phone use the renpy launcher to launch the project and see what it can do.

Changes made from the first version:

  •  9 possible background screens that can be locked and unlocked
  •  A progress bar in the music player for the song being played
  •  Complete rework of the message screen for easier messages and how they are displayed
  •  Fixed the "VPGrid not full" error for renpy 8 (you do NOT need to add define config.allow_underfull_grids = True anymore to make it work)
  • turning off the phone now stops the music that it is playing
  • an extremely simple choice menu for 2-3 items only
  • icons on the main and relationship screen will now display what they are for or the persons name when the mouse is on an icon

Now all the messages are saved and can be scrolled through. Music screen play your favorite tunes while you're playing. Keep track of your in game money on your phone. Get stat on the people in your game. Change the background (up to 9 different background images available). Send and receive images that can be clicked to make them full-screen. Optional to turn the phone off if they don't charge the battery or when they really need to make a call

Photoshop .psd files included to make icons, backgrounds and other things needed.

  • mobile.rpy does most of the work
  • all-phone-images.rpy takes care of the images that are sent and received
  • all-messages.rpy is where the messages are stored at
  • copy the above three (3)  rpy files as well as the images/mobile folder inside the images folder into your game directory to use
  • Should work with any renpy project, maybe? (up to at least 8.1...)
  • Look over the scripts for examples and instructions
  • functional icons on the main screen for
    • Patreon
    • discord
    • subscribestar
    • buy me a coffee
    • you can add your own as needed or remove them if you want

You will need the Ren'py SDK to run this, it is un-compiled.

This was originally made by Cr8tive M3dia for his game https://cr8tive-m3dia.itch.io    He asked me to help make some changes and I got a little carried away.   

Enjoy and Stay safe out there.

-->ERROR ALERT<--

with the new versions of renpy 8.2 and higher, an error occurs when you move the scripts to the newer version of renpy (as pointed out to me by a Reddit user) and commenting out line 398 will fix this error (I'm not going to publish an update till i get all the other thing implemented

    bar:
        value AudioPositionValue(channel='music')
        xpos 1620
        ypos 400
        ysize 20
        xsize 250
        # xmaximum 250  <--this line here


StatusReleased
CategoryAssets
Rating
Rated 4.7 out of 5 stars
(3 total ratings)
AuthorBadMustard

Download

Download NowName your own price

Click download now to get access to the following files:

advanced phone project8 v1.2.rar 22 MB

Development log

Comments

Log in with itch.io to leave a comment.

Hey, there is no information regarding usage and licencing? As an asset pack I'm assuming It's made for other people to use, but I see no information regarding this.

use it, abuse it, confuse it, don't claim it as your own, add me in your credits if you want, same licensing as Ren'Py

Great job! Is there a way to have the messages appear one after the other with a mouse click?

no the only way to update the messages is to close the message screen and re-open it

ok, thanks. Last thing and i don t bother you anymore :

Is there a way to create a line of script that would block the progress of the scenario until the player hasn t looked at the phone?

(3 edits)

In the message system how do I keep the messages going without closing the phone. I want to send and receive messages but I can only get it to work when I have to open and close the phone

yes the only way to get it to update is to close the phone as that was how it was originally setup to be used

II love this.

This looks so cool

Just a question.

Can I use this in a commercial project?

yes you can

(1 edit)

Thank you

you're welcome
good luck with your project

(1 edit)

Not sure if this is a version specific issue, or a problem with some tweaks I made, but on my current renpy version, 8.2.3.24061702, the phone steps dialogue forward a step between the relationships screen, and the phonePal screen, despite both being modal.


Quick hacked together fix I've managed, change all numbered instances of

Call("phonePal", 1, girl1_name, girl1_love, girl1_lust, girl1_dominance, girl1_submissive, girl1_pregnant)

to

Show("central_stats", girl=1, name=girl1_name, love=)girl1_love, lust=girl1_lust, dominance=girl1_dominance, submissive=girl1_submissive, pregnant=girl1_pregnant)

It's a bit messy, but I believe that should work nearly as well as your the current implementation and it gets rid of the problem for me.

Is this free to use and distribute?

it is free to use in a project that you distribute

Great help, but any chance you could make the phone positioning programmatic? (I admit I'm completely new to Python.. but I've tried everything to move the phonepos and none of the contents appear anchored to the phone frame.) Sorry if I'm just an idiot.. this Python/RenPy is completely foreign, unlike C# or Java. lol

no it's not set up like that and would probably be need to full re-write to be able to do that

Thank you for the response.

you're welcome

good luck with your project

Is there anyway to use this where the messages don't all show up at once? I've tried using the msg_count option but that doesn't change anything if the player isn't looking at the phone when that happens, and if they are in the phone and want to go to the next message they have to close the phone, click to go to the next line, and then go back into the phone to see the next message.

provided you are using the correct _msg_count it will change for that particular (message sender)/person and the only way to update that screen is to open/show it so you have to close it

Hi , newbie coder here, how do you only make the phone show select messages, for example i have an if statement that triggers says message 1 and 5 but it also shows the messages in between .

hope that makes sense, this was an amazing asset and thanks

you can NOT show a message out of sequence from the list 

i.e. you can NOT show #1 then #5, you would have to show #1-5 

or re-organize the list

ok thanks i had hoped there was a way with .pop or remove but no such joy .

thanks for the quick reply

I don't have anything set in place to do, but you can do it manually like this

$ girl1_message.pop(0)   # that would remove the first message in the list for girl1

if you do, keep in mind that since you removed the first message number (0) zero, now message (1) one is the new message (0) zero

it shifts everything below it to fill in the empty space and it can NOT be reversed or put back (the message is burned forever (unless you restart the game)), good way to gaslight your character i guess

Thanks i did try that before but i then run into an empty list error attempting a work around .

amazing  coding btw and thanks for showing what it all does.

yes the list must have something in it before you pop it. (and being python zero (0) is the first entry and number 1 is the second.

as long as you follow the format $ nameOfTheList.pop(entryNumber)

I can't take all the credit Cr8tiveM3dia did some of the coding to.

(1 edit)

I know this is years after the fact, but for anyone here in the future, you can just implement the messages via the label and dialogue system rather than placing them in the messages section of the script and trying to pop out the ones you don't want, this allows for modular dialogue to play out, which I think is what the asker was going for here. For example I'm using a hacked together copy of the message system to pop up a fake text screen in the center of the screen, and implement the messages like this : 

$ girl3_message = girl3_message + [messageitem("Hey new guy, asked Liv to grab your number for me.", False, 0)]
$ girl3_msg_count += 1
show screen chat_message(count=girl3_msg_count, girl=3, messageholder=girl3_message, gname=girl3_name)
pause
$ girl3_message = girl3_message + [messageitem("Mind coming to meet me out in the woods? Got a surprise for you.", False, 0)]
$ girl3_msg_count += 1
show screen chat_message(count=girl3_msg_count, girl=3, messageholder=girl3_message, gname=girl3_name)
pause

Adding new messages in that method makes filling out the array rollback safe, and the message isn't added to the chat system until that section of the label is reached, so if you talk to her about something else sooner, or choose to not have this conversation, it won't go into the chat history. 

So are you able to play out the messages sequentially WITHOUT closing and opening the text window? Because thats my only issue with this phone system...

I want to be able to have the text convos live like they are immersive building tension/delivering story with the app staying open.

If you are doing that with this system without having to use nvl or something that would be awesome to know

(1 edit)

Yes and no, technically I am using a fake message screen, one I have set up to show up in the center of the screen. It's in the normal label system, so each click takes you a step forward, and it's rollback safe. You get the texts at set periods of time (It'd be doable to choose to do them at any time, but a bit messy) so you're never actually in the "real" text window.

Here's an imgur gallery of what's happening, between each image is a single click, no phone navigation (Please ignore the separate font on image 3, these were wip images and I fixed up the menu options later, and had decided to swap to the default font for the phone because it's easier to read the smaller text)

To do that I added this to the bottom of mobile.rpy

####################################################
    ########## MESSAGE CHAT ###########
####################################################
transform chatpos:
    xalign .5
    yalign 0.5
screen chat_message(count, girl, messageholder, gname):
    zorder 0
    modal False
    add "Mobile/Backgrounds/phone_msg_bg2.webp" at chatpos
    add "Mobile/Icons/girl[girl]_msg_icon_sign.webp":
        xalign 0.5
        yalign 0.275
    text "[gname]":
        color "#000000"
        xalign 0.55
        yalign 0.275
    vpgrid:
        cols 1
        rows 1
        ymaximum 445
        xmaximum 285
        mousewheel True
        scrollbars "vertical"
        side_xalign 0.5
        side_yalign 0.565
        yfill False
        xfill False
        yinitial 1.0
        hbox:
            style_prefix "msg_style"
            vbox:
                spacing 5
                for i in range(0, count):
                    frame:
                        if messageholder[i].fromMC:
                            background Frame("images/mobile/backgrounds/sent_background.webp", 0,0,0,0)
                        else:
                            background Frame("images/mobile/backgrounds/received_background.webp", 0,0,0,0)
                        vbox:
                            xsize 250
                            if messageholder[i].fromMC:
                                add "images/mobile/backgrounds/nuggetR.webp" size (16, 16) xalign 1.0 yalign 0.0
                            else:
                                add "images/mobile/backgrounds/nuggetL.webp" size (16, 16) xalign 0.0 yalign 0.0
                            text messageholder[i].message
                            if messageholder[i].selfie > 0:
                            #BadMustard 0 = no image 1 - 1million = an image from the list
                                #use the thumb for the button
                                imagebutton idle phone_images[messageholder[i].selfie].thumb:
                                    action Show("phone_closeup", dissolve, phone_images[messageholder[i].selfie].images)
                                    xalign 0.5
                                    yalign 0
########## MESSAGE CHAT STOP ###########


I also added this to screens.rpy, under the choice screen section, which you can find with ctrl+f "screen choice(items):"


screen choice(items):
    if isTexting:
      vpgrid:
       cols 1
       rows 1
       xmaximum 300
       xalign .7
       yalign .6
       hbox:
        style_prefix "msg_style"
        vbox:
            xsize 300
            spacing 10
            for i in items:
                frame: 
                    xalign 1.0
                    background Frame("images/mobile/backgrounds/sent_background.webp", 0,0,0,0)
                    textbutton i.caption action i.action
    else:
        style_prefix "choice"
        vbox:
            for i in items:
                textbutton i.caption action i.action

When you want to use the text message choice screen for menus, you simply add "$ isTexting = True" before the menu choice, and then "$ isTexting = False" when you are done texting.

A full example dialogue (The one in the imgur gallery) looks like this

#Hides the sidebar phone screen
hide screen phoneaway
#Enables Texting Menu Options
$ isTexting = True
#Enables contact info for girl3 on the phone, you only should do this the first time, if you don't enable contact info by default
$ girl3_phone = True
#Adds the message to her text queue
$ girl3_message = girl3_message + [messageitem("Hey new guy, asked Liv to grab your number for me.", False, 0)]
#Makes the message appear in her text screen
$ girl3_msg_count += 1
#Calls my fake phone chat screen
show screen chat_message(count=girl3_msg_count, girl=3, messageholder=girl3_message, gname=girl3_name)
#Makes you need to click to continue
pause
#Adds the second message
$ girl3_message = girl3_message + [messageitem("Mind coming to meet me out in the woods? Got a surprise for you.", False, 0)]
#And makes it appear in her text screen
$ girl3_msg_count += 1
#Hides the old screen to prevent cluttering a bunch of layers
hide screen chat_message
#Brings up the new screen
show screen chat_message(count=girl3_msg_count, girl=3, messageholder=girl3_message, gname=girl3_name)
pause
menu:
    "Jane?":
        $ girl3_message = girl3_message + [messageitem("Is this Jane?", True, 0)]
        $ girl3_msg_count += 1
        hide screen chat_message
        show screen chat_message(count=girl3_msg_count, girl=3, messageholder=girl3_message, gname=girl3_name)
        pause
        $ girl3_message = girl3_message + [messageitem("No it's Santa Claus, now get your butt out here! It's fucking cold away from the fire.", False, 0)]
        $ girl3_msg_count += 1
        hide screen chat_message
        show screen chat_message(count=girl3_msg_count, girl=3, messageholder=girl3_message, gname=girl3_name)
        pause
    "New Phone Who Dis?":
        $ girl3_message = girl3_message + [messageitem("New phone, who dis?", True, 0)]
        $ girl3_msg_count += 1
        hide screen chat_message
        show screen chat_message(count=girl3_msg_count, girl=3, messageholder=girl3_message, gname=girl3_name)
        pause
        $ girl3_message = girl3_message + [messageitem("You've got two minutes to get out here before I start rethinking this idea.", False, 0)]
        $ girl3_msg_count += 1
        show screen chat_message(count=girl3_msg_count, girl=3, messageholder=girl3_message, gname=girl3_name)
hide screen chat_message
#Shows the sidebar phone again
show screen phoneaway
$ isTexting = False

I believe this would be tweakable to work in the "real" phone, but imo I think having the conversation brought up to the center of the screen works better than hiding it off in the corner.

If you want to make it so that you can jump to the conversations from the phone at any time, you'd have to create a label specifically for the conversation, and then some various if statement checks to figure out which label to go to every time you interact with the texting system on the phone. I considered that when I started working on things, but this just ended up being easier for me. You can still open the conversation history on the phone when you want to look back at things. 

Deleted 244 days ago

by setting bg1-9 to True like this

$ bg2 = True

I had bg1 as True by default in the script.rpy and it was the default background on the phone