# How this scene is implemented:
nvl_narrator "Nighten added Eileen to the group"
n_nvl e2m2 "Hey! Welcome to the demo Eileen!"
e_nvl "who's this?"
n_nvl e2m1 "haha, silly you"
n_nvl e1m2 "We talked about showing off the phone the other day, remember?"
e_nvl "it's today? {image=emoji/fear.png}"

A simple messaging system, built on top of the NVL mode and therefore more intuitive to use :)

Instructions:

  • Add the images and PhoneTexting.rpy to your project folder
  • In this file, change the name of the main character to yours (MC_Name)
  • Edit the nvl screen in screen.rpy as follow:
screen nvl(dialogue, items=None):
 
    #### ADD THIS TO MAKE THE PHONE WORK!! :) ###
    if nvl_mode == "phone":
        use PhoneDialogue(dialogue, items)
    else:
    ####
        ## Indent the rest of the screen
        window:
            style "nvl_window"
            # ...
  • Change gui.nvl_list_length in gui.rpy to None, so that all the message are shown 
  • You'll then have to make a nvl character speak!
  • To use the regular nvl screen again, change the nvl_mode variable to something else, like "classic"
  • To include emojis and pictures, you can simply add use an image tag; make sure they are the right size for the phone screen.

Video tutorial by Matthew Vimislik, aka Vimi

Mirror download on my website

Source code on Github

Credits:

The background is made by Uncle Mugen. All the other art assets are done by me, Nighten, and free to use in your project if you want (the sources file are available).

And if you need more help for your project, you can hire me as a programmer! :) ✨

Have a nice day!

StatusReleased
CategoryAssets
Rating
Rated 5.0 out of 5 stars
(46 total ratings)
AuthorNighten
Made withRen'Py
Tagsasset, Ren'Py, sourcecode
Code licenseMIT License
Asset licenseCreative Commons Zero v1.0 Universal
Average sessionDays or more

Download

Download NowName your own price

Click download now to get access to the following files:

yetanotherphone-1.0-mac.zip 39 MB
yetanotherphone-1.0-pc.zip 74 MB

Comments

Log in with itch.io to leave a comment.

Viewing most recent comments 1 to 40 of 62 · Next page · Last page

This is my first time coding the text massage to try it. I did watch the massage code no matter hard I really try with it but it just gotten failed and now i feeling pretty abit stress out. And I don't know what else can possibly do? 

(+1)

This is great! Way better than what I cooked up on my own. I replaced my system with this fairly easily. 

I've been able to modify just enough that I can have multiple characters texting from different phones. 

Eg. most texts are from husband's phone to other people however there are scenes where the wife is texting someone else. I was able to set it up with a little tinkering.

Inline photos also work great!

(Sorry if you got a ghost notification, I accidentally commented on the other phone template you have!! Also I've apparently commented before, so apologies for asking for your help once again LOL)

I was wondering, I really want to have text conversations with multiple characters, which I *can* do with the names, but for the sender (whoever's chatting on the left), their icons ALL change to whoever the most recent character chatting is. Is there a way to have multiple people in a chat while maintaining everyone's icons as separate from each other?

Hey, I was wondering if you can do ____ is Typing thing that disappears after a text has been sent?

I will try to port it to Godot using my Rakugo project: https://rakugoteam.github.io

i like it very much, but it would be great if you could send images in it

Hi! Thank you so much for the code! Is there a way to keep the phone screen up while still showing the textbox? Currently the phone disappears when I have the main character thinking to herself in the game textbox, and would like the phone screen to stay up while she thinks to herself. Thanks in advance!

Hello, I have been using this phone UI for my game for a little while now, but I was wondering if I could change something when the phone disappears. I was curious if either 1) The phone could reverse its appearance animation when the conversation is done (a downward easing animation), or 2) when the phone fades out, the last element of the text (the final message) still plays the message appear animation. Is it possible to have the message stay still when the phone disappears?

Thank you for your time, and I really appreciate this pack! Just that one little edit to the exit animation would make it perfect for me.

Hello, can someone tell me how I can have a zoom of the photo sent to the smartphone please? Thx

I just realized that I had rated the wrong messenger code, no matter now you get another 5 :)
Regards 

Tom

How do I remove text history? My VN has multiple perspectives, so it wouldn't really make sense for them to have the same text history as each other.

(+2)

nvl clear

(+1)

Hello, I was wondering if it's possible to add videos besides pictures.
I tried with a gif but it shows a static picture, do you know if there's a way? :)

Hi! I'm having a bit of an issue with the Phone on Android builds, the protagonist's messages don't show up on the screen (only the background block color shows up). It works perfectly on the other builds (PC, Linux, and Mac). Could you help me with that? Let me know if you need more details or screenshots to better understand the issue. Thank you!

(11 edits) (+2)

Here is a little "hack" that worked for me:

Find these lines in PhoneTexting.rpy:

if d.who == MC_Name:
    color "#FFF"
    text_align 1.0
    xpos -580
else:
    color "#000"

Replace the xpos -580 with this:

if renpy.variant("small"):
    xpos -1067 # adjust this number as you see fit
else:
    xpos -580

Now the whole code should look like this:

if d.who == MC_Name :
    color "#FFF"
    text_align 1.0
    if renpy.variant("small"):
        xpos -1067
    else:
        xpos -580
else:
    color "#000"

Hi, I was wondering how to keep the phone animation when it pops on screen. The first time it shows the animation of it sliding in but the second and third time it skips the animation all together! Thank you so much!

Hi! The animation is tied to the length of the conversation; basically I made it so it slides in only when there is one message, so either when the game start or after a "novel clear".

In a previous version it was tied to a variable that you would turn on and off to play the slide animation once (or else it would play for every message). It was just way too many repetition since you would need to change the variable a lot throughout the game; but ping me again later and I will give you the instruction to edit the code, so that you can play the animation when you want to (I can't at the moment, but I would be happy to help later)

(-1)

Hey! If you have the time today, could you should me how to do it? I was also wondering if there was a way to clear the phone messages so when the phone pops up next it doesn't show the old texts? Thanks for getting back to me!

Hi, I was wondering if anyone else has issues with using speech bubbles in Ren'py 8.1.1 with the phone and if anyone has found a workaround. Here is the exception:

raise Exception("A speech bubble is being used, but bubble.properties has not been set."

Hello! This code has been published long before Ren'py added the speech bubble feature. 

Games made before the release of Ren'Py 8.1 won't include the default screens and settings required for the speech bubble system. 

You can refer to the documentation here to add support to this project:

https://www.renpy.org/doc/html/bubble.html#adding-bubble-support-to-a-game

(+1)

Used it for https://azurecoffin.itch.io/magicalgirldndzoom! Thank you so much! We couldn't have completed our game without your help!!

In my game phone appears twice. First time for just a moment fixed on the spot, immediately after appears for the 2nd time from the bottom.

(+2)

Is there a way to make the text from the MC align to the left instead?

(+2)

Hi, while I can't give you the answer, I can give hope :) I have done exactly what you asked long ago while messing with the texting. Control f search "align" and it should be located wherever the Players chat box is ran

Phone is not showed in my game. Am I doing something wrong?

(+2)

You have to add the "PhoneTexting.rpy" to your "game" folder. Then you have to replace the nvl screen in the screens.rpy with the nvl section from the asset pack. look for the comment

#### ADD THIS TO MAKE THE PHONE WORK!! :) ###


and then add the phone image files from the asset pack as well.

(3 edits) (+1)

Thank you! 

(+1)

if anyone knows how to change the font and icon sizes please let me know.

(+1)

Hello, thank you for the awesome work! It really helps me but i have a question.

is it possible to change the text size of the dialogue on the phone?

(2 edits)

if you go to the PhoneTexting.rpy file there is a screen called nvl_phonetext. look for vbox about 42 lines down. now find text d.who and simply add the size attribute, like this:

text d.who:
    size 30

this changes the characters name size displayed on the phone, if you liked the size before, simply don't add the code above.

for the text sizes in the messages it's basically the same except it's text d.what. you can find this a little further down. it already has attributes assigned, so just add the size underneath those.

text d.what:
    pos (0,0)
    xsize 350
    slow_cps False
    size 28

the sizes i put in there are just suggestions, you can put in whatever you like best.

hope this helped!

Hey! Awesome work! :)
May I ask how did you manage to create a "chat log"? I mean, how did you manage to make the messages stay on screen and scroll?
Thank you in advance!

(2 edits)

Hello, anyone know why i don't see my MC name  ? 

define nvl_mode = "phone"
define MC_Name = "Me"
init -1 python:
    phone_position_x = 0.3
    phone_position_y = 0.5
    def Phone_ReceiveSound(event, interact=True, **kwargs):
        if event == "show_done":
            renpy.sound.play("audio/sound/002_notifText.ogg")
    def Phone_SendSound(event, interact=True, **kwargs):
        if event == "show_done":
            renpy.sound.play("audio/sound/002_notifText.ogg")
    def print_bonjour():
        print("bonjour")
transform phone_transform(pXalign=0.5, pYalign=0.5):
    xcenter pXalign
    yalign pYalign
transform phone_appear(pXalign=0.5, pYalign=0.5): #Used only when the dialogue have one element
    xcenter pXalign
    yalign pYalign
    on show:
        yoffset 1080
        easein_back 1.0 yoffset 0
transform message_appear(pDirection):
    alpha 0.0
    xoffset 50 * pDirection
    parallel:
        ease 0.5 alpha 1.0
    parallel:
        easein_back 0.5 xoffset 0
transform message_appear_icon():
    zoom 0.0
    easein_back 0.5 zoom 1.0
transform message_narrator:
    alpha 0.0
    yoffset -50
    parallel:
        ease 0.5 alpha 1.0
    parallel:
        easein_back 0.5 yoffset 0
screen PhoneDialogue(dialogue, items=None):
    style_prefix "phoneFrame"
    frame at phone_transform(phone_position_x, phone_position_y):
        if len(dialogue) == 1:
            at phone_appear(phone_position_x, phone_position_y)
        viewport:
            draggable True
            mousewheel True
            # cols 1
            yinitial 1.0
            # scrollbars "vertical"
            vbox:
                null height 20
                use nvl_phonetext(dialogue)
                null height 100
screen nvl_phonetext(dialogue):
    style_prefix None
    $ previous_d_who = None
    for id_d, d in enumerate(dialogue):
        if d.who == None: # Narrator
            text d.what:
                xpos -335
                ypos 0.0
                xsize 330
                text_align 0.0
                #italic True
                size 20
                slow_cps False
                id d.what_id
                if d.current:
                at message_narrator
        else:
            if d.who == MC_Name:
                $ message_frame = "images/(sg)01nvl_phone/004_send_frame.png"
            else:
                $ message_frame = "images/(sg)01nvl_phone/003_received_frame.png"
            hbox:
                spacing 10
                if d.who == MC_Name:
                    box_reverse False
                if previous_d_who != d.who:
                    if d.who == MC_Name:
                        $ message_icon = "images/(sg)01nvl_phone/icon/phone_hero_icon.png"
                    else:
                        $ message_icon = "images/(sg)01nvl_phone/icon/phone_"+d.who+"_icon.png"
                    add message_icon:
                        if d.current:
                            at message_appear_icon()
                else:
                    null width 50
                vbox:
                    yalign 1.0
                    if d.who != MC_Name and previous_d_who != d.who:
                        text d.who :
                            size 25
                    frame:
                        padding (10,2)
                        background Frame(message_frame, 23,23,23,23)
                        xsize 330
                        if d.current:
                            if d.who == MC_Name:
                                at message_appear(1)
                            else:
                                at message_appear(-1)
                        text d.what:
                            pos (0,0)
                            xsize 330
                            slow_cps False
                            if d.who == MC_Name :
                                size 20
                                color "#d3d7da"
                                text_align 0.0
                            #    xpos -580
                            else:
                                size 20
                                color "#d3d7da"
                            id d.what_id
        $ previous_d_who = d.who
style phoneFrame is default
style phoneFrame_frame:
    background Transform("images/(sg)01nvl_phone/002_phone_bkg.png", xcenter=0.5,yalign=0.5)
    foreground Transform("images/(sg)01nvl_phone/001_phone_frg.png", xcenter=0.5,yalign=0.5)
    ysize 815
    xsize 495
style phoneFrame_viewport:
    yfill True
    xfill True
    yoffset 30
    xoffset 40
style phoneFrame_vbox:
    spacing 10
    xfill True
<img src="https://img.itch.zone/aW1nLzEyMjkzNTQzLnBuZw==/original/OphwF2.png" style="background-color: rgb(255, 255, 255); color: inherit; font-family: inherit; font-size: inherit; white-space: normal;">

You would see your Mc's name in the script file,  not in the phone file.
define the mc for the nvl mode
example:
define mc_nvl = Character("Mc_name", kind=nvl, image="me", callback=Phone_ReceiveSound)

something like that...

(-1)

scripthii! could you help me with using a custom name for mc? im kind of familiar with coding but not that good.

Deleted 306 days ago
Deleted 306 days ago
Deleted 307 days ago
Deleted 307 days ago
Deleted 308 days ago
(1 edit)

Hey!

I also want to clean up the messages to change the conversation...

If you find the solution, I want it too please.

@Léa#2516

(+6)

At the end of the conversation, you have to write nvl clear

Thanks lea for the cleaner :)

Hi! Forgive me for being a bit of a noob, but when I tried to download it, the zip file refuses to open as anything but an app. I can't seem to access the files??

Thank you! 

Deleted 307 days ago

if youre using mac, u should be able to open it with "open package contents" not sure how it is on windows tho

I used this in my game! :D It's amazing, simple, and easy to customize. Thanks so much!

https://aquariumaesthetic.itch.io/sunmoon-verse-demo

It fits perfect to my project but the problem is that sending and receiving messages in white color, not like sender-receiver in the video. Any help?

Idk if you figured it out yet, but you have to define who the main character is in the 'PhoneTexting.rpy' file. This is the line you have to edit. 

> define MC_Name = "Nighten" ##The name of the main character, used to place them on the screen

Change this to the name of your main character and make sure it matches what you have in your main script file!

(+2)

I have the same issue as a previous poster but I haven't been able to find an answer.  I am trying to use the system for multiple characters (more than 1 MC).  I have it set up so that each character has a separate image for both the send and receive icons and gave them unique variables to call for each.  The ONLY way the code seems to work is if I manually type the character's name.  For example: 
mc1_nvl = "Steve"  and nvl_mc1 = Character("Steve") -- this works
mc1_nvl = "Steve"  and steve = Character("Steve") and nvl_mc1 = Character("[steve]") -- this works
mc1_nvl = "[steve]"  and steve = Character("Steve") and nvl_mc1 = Character("[steve]") -- this does not work
Essentially, if the name comes from a user-defined name it doesn't work.  It ONLY works if the default name is used.  I've tried using the variable by itself, the variable with quotes and square bracers, but nothing works.  It will show the name properly but shows the default icon and always shows the receive not the send (as that's the default for unknown).  The only way I can seem to get this to work is if I remove the variable names and have all names static, which isn't a good option.

Helloo !

I don't know if this will help you but here's how I did it.

In PhoneTexting : define MC_Name = "Me".

Then in script : define n = Character("[name]", image="mc", color="#0e7a38")

define n_nvl = Character("Me", kind=nvl, image="mc", callback=Phone_SendSound)

It doesn't mark the MC name, but it's on the sender's side.

(+1)

HOW TO ADD THIS TO A PROJECT WITH A SIZE OF 1280x720

(+1)

How can I make it so the text advances when I click on the phone as opposed to outside of it?

in phonetexting.rpy, change "draggable" to false.

Looks really nice! I’m trying it with my own project right now and I need to ask if anyone has implemented side images/character icons in the system? If not, I might have to give it a shot.

OOP I just checked Vimi’s video.

Viewing most recent comments 1 to 40 of 62 · Next page · Last page