找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 23298|回复: 6

[已解决] 关于list重启游戏读档就清空的问题

[复制链接]
发表于 2020-12-26 21:21:59 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 月与橘子叶 于 2021-1-23 20:39 编辑

没错这个问题描述起来非常简单,简单到我非常困惑
玩家游玩中遇到NPC,可以选择是否收入队伍,选择是的话用append将角色加入专门的list。然后我发现如果关闭游戏重启读档,NPC数据会消失(其他数据不会),不关闭游戏反复存档读档则不会消失
测试时将角色list的长度放在屏幕上,结果发现收入角色后len不会增加,但不关闭游戏的话NPC会出现在小屋中,说明数据是正常保存了的(可是这个数据是遍历list读取的啊)
我直接?????
因为涉及的代码太混乱有点没办法放上来,就真的只是个普通的append,我麻了
 楼主| 发表于 2020-12-27 17:55:00 | 显示全部楼层
本帖最后由 月与橘子叶 于 2020-12-27 17:58 编辑
BuErShen 发表于 2020-12-27 17:05
记得哪里看到过,python 代码产生的数值,参数是不保存的,就是游戏关闭就没了。
不太清楚,看看你脚本里有 ...

原来如此吗,想实现的功能是概率触发剧情遇到随机NPC,可以选择是否收入队伍,选择是的话把他安排进空房间。其中角色用list保存,因为不确定NPC的数量,这取决于玩家是否触发剧情,而房间是固定的(可以自由建造),所以用dict保存。
代码大概这样(角色class类这里就不列出了):
[RenPy] 纯文本查看 复制代码
python:
        men = Men(30,50,mid)
        men.men_random()
        glasses_random =  men.glasses # 【眼镜】
        hair_random =  men.hair ## 【头发】
        shirt_random =  men.shirt ## 【衬衫】
        pants_random =  men.pants ## 【裤子】
        tie_random =  men.tie # 【领带】
    image man = LayeredImageProxy("someone_random")
    image half_man = LayeredImageProxy("someone_random",Transform(crop=(20, 0, 290, 500), xoffset=0)) #(x, y, width, height)
    show man


[RenPy] 纯文本查看 复制代码
menu:
        "带回家!":
            python:
                listMen.append(men)
                mid += 1
                tea_flag = True
            if blue_num == 2 and red_num == 2 and special_num == 10:
                m "房间不够了"
                if bout==2 or bout==4 or bout==6:
                    m "天色晚了,该回家了。"
                    jump home
                jump goout
            jump choose_house
        "告辞":
            python:
                del men
                tea_flag = True
    hide man
    if bout==2 or bout==4 or bout==6:
        m "天色晚了,该回家了。"
        jump home
    jump goout


房间界面显示角色代码大概这样:
[RenPy] 纯文本查看 复制代码
def red1_show():
        for i in red_house1_list:
            for j in listMen:
                if i['位置'] == '1号房' and i['mid'] == j.mid:
                    body1 = 1
                    glasses_random1 = j.glasses  # 【眼镜】
                    hair_random1 = j.hair  # 【头发】
                    shirt_random1 = j.shirt  # 【衬衫】
                    pants_random1 = j.pants  # 【裤子】
                    tie_random1 = j.tie  # 【领带】
                elif i['位置'] == '2号房' and i['mid'] == j.mid:
                    body2 = 1
                    glasses_random2 = j.glasses
                    hair_random2 = j.hair
                    shirt_random2 = j.shirt
                    pants_random2 = j.pants
                    tie_random2 = j.tie
                elif i['位置'] == '3号房' and i['mid'] == j.mid:
                    body3 = 1
                    glasses_random3 = j.glasses
                    hair_random3 = j.hair
                    shirt_random3 = j.shirt
                    pants_random3 = j.pants
                    tie_random3 = j.tie


然后重启游戏读档房间里的角色就统统不见了,不知道大佬能不能给点建议,十分感谢如果不用list保存也可以,但我不知道怎么解决NPC数量无上限的保存问题,请大佬指教
回复 支持 1 抱歉 0

使用道具 举报

 楼主| 发表于 2020-12-26 21:50:03 | 显示全部楼层
啊更正一下,角色是可以加入list的,但是关闭重开读档list就被清空了,dict没有问题还在
但是存档不是可以保存list的吗?很确定没有写del list
回复 支持 抱歉

使用道具 举报

发表于 2020-12-27 17:05:40 | 显示全部楼层
记得哪里看到过,python 代码产生的数值,参数是不保存的,就是游戏关闭就没了。
不太清楚,看看你脚本里有没有写的犯冲了,有看不到你写的什么。
或许在这里,https://doc.renpy.cn/zh-CN/python.html

还有你需要的功能,一定要用列表和字典实现吗?
回复 支持 抱歉

使用道具 举报

发表于 2020-12-29 17:47:24 | 显示全部楼层
用·default保存,不要用define,
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2020-12-30 21:02:39 | 显示全部楼层
本帖最后由 月与橘子叶 于 2020-12-30 21:21 编辑
13390163901 发表于 2020-12-29 17:47
用·default保存,不要用define,

感谢解答!居然真的可以default和define什么的,具体应用里到底有什么重要区分呢
回复 支持 抱歉

使用道具 举报

发表于 2021-1-1 14:34:58 | 显示全部楼层
月与橘子叶 发表于 2020-12-30 21:02
感谢解答!居然真的可以default和define什么的,具体应用里到底有什么重要区分呢
...

参见 https://doc.renpy.cn/zh-CN/python.html?t#define 的define与default部分
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 07:57 , Processed in 0.124787 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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