[RenPy] 纯文本查看 复制代码
init python:
import random
# 角色池
role_data = {}#{id:存储数据的角色类}
# 属性池
sexes = [_("男"), _("女"), _("沃尔玛购物袋")]
first_names_boy = [
_("诺亚"), _("利亚姆"), _("奥利弗"), _("以利亚"), _("卢卡斯"),
_("马特奥"), _("利维"), _("阿瑟"), _("西奥多"), _("亨利"),
_("亚历山大"), _("塞巴斯蒂安"), _("本杰明"), _("伊桑"), _("丹尼尔")]
first_names_girl = [
_("艾玛"), _("奥利维亚"), _("夏洛特"), _("索菲亚"), _("阿米莉亚"),
_("伊莎贝拉"), _("米娅"), _("埃维莉娜"), _("卢娜"), _("艾娃"),
_("哈珀"), _("吉安娜"), _("伊丽莎白"), _("埃莉诺"), _("斯卡利特")]
last_names = [
_("史密斯"), _("约翰逊"), _("威廉姆斯"), _("布朗"), _("琼斯"),
_("米勒"), _("戴维斯"), _("加西亚"), _("罗德里格斯"), _("威尔逊"),
_("马丁内斯"), _("安德森"), _("泰勒"), _("托马斯"), _("杰克逊")]
# 测试用的临时角色类
class testrole:
def __init__(self, id, first_name, last_name, sex):
self.id = id
self.first_name = first_name
self.last_name = last_name
self.sex = sex
#只是临时的,这里未来会写成完善的管理系统,此处仅测试名称引用以及多语言的问题
# 调用或生成角色数据
def generate_role_name(role_id):
# 懒加载
if role_id not in role_data:
sex = random.choice(sexes)
if sex == _("男"):
first_name = random.choice(first_names_boy)
elif sex == _("女"):
first_name = random.choice(first_names_girl)
else:
first_name = random.choice(first_names_boy+first_names_girl)
last_name = random.choice(last_names)
role_data[role_id] = testrole(role_id,first_name,last_name,sex)
#实际就是保持了引用的指向,在显示时才会延迟计算出角色名字,以适配多语言
#真实的角色是testrole(),Character()相当于screen say(bushi
return role_id
default rc_id = 0
default randomchar = Character("renpy.translate_string(role_data[rc_id].first_name) + renpy.translate_string(role_data[rc_id].last_name)", dynamic=True)
# 使用预生成的角色
label start:
$ rc_id = generate_role_name(0)
randomchar "你好,我是角色0"
$ rc_id = generate_role_name(1)
randomchar "我是角色1"
$ rc_id = generate_role_name(2)
randomchar "我是新生成的角色2"
return