找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 43|回复: 2

[求助] 如何实现在游戏中记录玩家SL的情况

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我现在在制作的游戏中,我想要实现通过记录玩家存档/读档的次数而达到不同结局,请问这样的效果用renpy如何实现呢
比如存档10次会直接进入某个结局或者强制游戏结束,能实现这样的效果吗?
发表于 前天 20:02 | 显示全部楼层
简单说下个人理解:存档次数是可以精确记录的,但读档次数则比较麻烦。玩家可以对同一个存档读取多次,不影响存档次数的计数。(虽然不是完全没办法,后面再说。)

样例:
[RenPy] 纯文本查看 复制代码
define config.log = "Debug.log"
define config.clear_log = True
default save_counter = 0

init python:

    def jsoncallback(d):
        global save_counter
        save_counter += 1
        # d["save_counter"] = save_counter

    config.save_json_callbacks.append(jsoncallback)

init python:

    def load_save_counter():
        global save_counter
        save_counter += 1
        renpy.log("save_count: " + str(save_counter))

define config.after_load_callbacks = [load_save_counter]

label main_menu:
    return

label start():

    "1. 当前存档次数为 [save_counter] 次。"
    "2. 当前存档次数为 [save_counter] 次。"
    "3. 当前存档次数为 [save_counter] 次。"
    "4. 当前存档次数为 [save_counter] 次。"
    "5. 当前存档次数为 [save_counter] 次。"
    "6. 当前存档次数为 [save_counter] 次。"
    "7. 当前存档次数为 [save_counter] 次。"
    "8. 当前存档次数为 [save_counter] 次。"
    "9. 当前存档次数为 [save_counter] 次。"
    "10. 当前存档次数为 [save_counter] 次。"

    return


可能比较奇怪的是,load_save_counter函数在加载存档后还要对save_counter加1。这个只能说Ren'Py为了实现回滚,某些数据机制比较……特殊。

如果需要在读档次数达到某个值时跳转到某个结局,那就把 renpy.log 的代码替换为 renpy.jump(label),label即对应结局的脚本标签名。
回复 支持 抱歉

使用道具 举报

发表于 前天 20:14 | 显示全部楼层
再说下读档次数的计算。如果反复读取同一个存档都只计一次读档的话,那读档次数跟存档次数就是一样的。

如果要同一个存档反复读取都要记录的话,那就需要使用全局的持久化数据,并且将持久化数据也加入到存档文件中。
对之前的脚本略作修改:
[RenPy] 纯文本查看 复制代码
default persistent.load_counter = 0
define config.save_persistent = True

init python:

    def load_save_counter():
        global save_counter
        save_counter += 1
        persistent.load_counter += 1


由于持久化数据是全局的,如果存在多个存档,无论读取哪个都会改变这个计数器。
这就需要在更高的设计层面考量,比如只允许存在一个存档,以及在某些情况下可以将读档计数器归零,等等。
回复 支持 抱歉

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号|苏公网安备 32092302000068号 )

GMT+8, 2025-2-5 14:54 , Processed in 0.192414 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表