You've reached a page on the Ren'Py wiki. Due to massive spam, the wiki hasn't been updated in over 5 years, and much of the information here is very out of date. We've kept it because some of it is of historic interest, but all the information relevant to modern versions of Ren'Py has been moved elsewhere.
Some places to look are:
Please do not create new links to this page.
If you want to have an in-game messages system - perhaps email, or a collection of letters, or something like that - then the following code provides a base to work from, or can be used as-is.
To use the system, copy and paste the following into a new .rpy file in your game directory:
init python:
# Message Styles
style.messageWindow = Style(style.window)
style.messageColumns = Style(style.hbox)
style.messageListBox = Style(style.vbox)
style.messageListViewport = Style(style.viewport)
style.messageButton = Style(style.button)
style.messageButtonText = Style(style.button_text)
style.messageScrollBar = Style(style.vscrollbar)
style.messageBodyScrollBar = Style(style.vscrollbar)
style.messageBodyBox = Style(style.vbox)
style.messageBodyViewport = Style(style.viewport)
style.messageText = Style(style.say_dialogue)
style.messageControls = Style(style.hbox)
# Default style values...
style.messageWindow.ymaximum = 600
style.messageColumns.spacing = 10
style.messageListViewport.xminimum = 280
style.messageListViewport.xmaximum = 280
style.messageListBox.yalign = 0.0
style.messageButton["Message"].xfill = True
style.messageButton["CurrentMessage"].xfill = True
style.messageButtonText["Message"].color="#99A"
style.messageButtonText["CurrentMessage"].color="#FFF"
style.messageBodyViewport.xminimum = 460
style.messageBodyViewport.xmaximum = 460
style.messageBodyViewport.ymaximum = 550
style.messageBodyScrollBar.ymaximum=550
style.messageControls.spacing = 10
def init_messages():
if hasattr(store, "messages") == False:
store.messages = []
def add_message(subject, sender, message, condition=None):
init_messages()
store.messages.append( (subject, sender, message, condition) )
def show_messages():
message = None
while message != -1:
message = show_message_ui(message)
def show_message_ui(currentMessage):
init_messages()
messageCount = count_messages()
ui.window(style=style.messageWindow)
ui.hbox(style=style.messageColumns) # For the three columns of controls
vp = ui.viewport(style=style.messageListViewport)
ui.window(style=style.messageListBox)
ui.vbox() # For the mail list
index = 0
for message in store.messages:
if (message[3] == None or eval(message[3]) == True):
styleIndex = "Message"
if (index == currentMessage):
styleIndex = "CurrentMessage"
ui.button(clicked=ui.returns(index),
style=style.messageButton[styleIndex])
ui.text(message[0] + " - " + message[1], style=style.messageButtonText[styleIndex])
index = index + 1
ui.close() # mail list vbox
ui.bar(adjustment=vp.yadjustment, style=style.messageScrollBar)
ui.window(style=style.messageBodyBox)
ui.vbox() # For the right-hand stuff; message and buttons
ui.hbox()
vp2 = ui.viewport(style=style.messageBodyViewport)
if (currentMessage >= 0) and (currentMessage < messageCount):
hasMessage = True
ui.text(store.messages[currentMessage][2], style=style.messageText)
else:
hasMessage = False
ui.null()
ui.bar(adjustment=vp2.yadjustment, style=style.messageBodyScrollBar)
ui.close()
ui.hbox(style=style.messageControls) # For the buttons
ui.button(clicked=ui.returns(-1),
style=style.messageButton["Close Messages"])
ui.text("Close Messages", style = style.messageButtonText["Close Messages"])
if hasMessage:
ui.button(clicked=ui.returns(-2),
style=style.messageButton["Delete Message"])
t = ui.text("Delete Message", style = style.messageButtonText["Delete Message"])
ui.close() # buttons hbox
ui.close() # right-hand column vbox
ui.close() # columns hbox
result = ui.interact()
if result == -2: #(delete current message)
del store.messages[currentMessage]
return None
else:
return result
def count_messages():
init_messages()
return len(store.messages)
def count_visible_messages():
init_messages()
count = 0
for message in store.messages:
if (message[3] == None or eval(message[3]) == True):
count = count + 1
return count
init:
$ e = Character('Eileen', color="#c8ffc8")
# The game starts here.
label start:
e "Welcome to messages! Right now you don't have any messages."
$ show_messages()
e "See?"
$ add_message("Welcome to messages", "Message System",
"Now you have your first message!")
e "Now we've added a message for you."
$ show_messages()
e "Next, we'll add a few more..."
$ add_message("My Holiday Photos", "Bob", "Drone drone drone drone drone drone drone " +
"drone drone drone drone drone drone drone drone drone drone drone drone drone drone " +
"drone drone drone drone drone drone drone drone drone drone drone drone drone drone " +
"drone drone drone drone drone drone drone drone drone drone drone drone drone drone " +
"drone drone drone drone drone drone drone drone drone drone drone drone drone drone " +
"drone drone drone drone drone drone drone drone drone drone drone drone drone drone " +
"drone drone drone drone drone drone drone drone drone drone drone drone drone drone " +
"drone drone drone drone drone drone drone drone drone drone drone drone drone drone " +
"drone drone drone drone drone drone drone drone drone drone drone drone drone drone " +
"drone drone drone drone drone drone drone drone drone drone drone drone drone drone " +
"drone drone drone drone drone drone drone drone drone drone drone drone drone drone...")
$ add_message("Where are you?", "Simon", "You've not been on FaceSpace for years! I mean,"
" like, {i}ten minutes{/i}, dude! Where are you?!")
$ add_message("Buy Stuff", "Mississippi", "Did you know that people who bought books in the"+
" past also bought books? How about you buy some books?\n"+
"Here are some books you might like:\n- {i}To Murder A Coot{/i}\n"+
"- {i}The Girl with the Pirate Tattoo{/i}\n- {i}9Tail Cat{/i}")
$ add_message("Tuesday", "Mum", "Did you remember you were coming to visit on Tuesday?" +
" I hope you didn't forget.")
$ add_message("Re: Tuesday", "Mum", "You haven't called. Are you still coming?"+
" I'm making pie.")
$ add_message("Re: Re: Tuesday", "Mum", "Why don't you let us know whether you're coming?" +
" Have you checked your mail? Are you OK? I hope you haven't got into a car crash or" +
" something. You see them on the news all the time. Are you really OK?" +
" Please, let us know!")
$ show_messages()
e "Now we'll add some spam..."
python:
spam_filter = False
#spam...
for x in range(20):
add_message("Billions of dollars!", "Prince Terence of Nigeria", "I am the" +
" custodian of the Nigerian Central Bank, and I need a foreign account to" +
" place billions of dollars in for a period of two (2) months for no apparent" +
" reason. You could earn millions in interest, just mail me your credit card" +
" and PIN today!",
condition="spam_filter == False")
$ show_messages()
e "Eep! OK, let's turn the spam filter on..."
$ spam_filter = True
$ show_messages()
$ message_count = count_messages()
$ visible_count = count_visible_messages()
e "And after all that, you now have %(message_count)s messages,
of which you can see %(visible_count)s."