找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3847|回复: 11

[已解决] 关于label

[复制链接]
发表于 2022-8-7 19:06:41 | 显示全部楼层 |阅读模式

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

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

×
label是进入剧情的标签,但是我在看见可以用来写入一些简单逻辑。但是实际尝试后又产生了如下错误
U_W)M3YR$YXWVKH9OSXLFPQ.png [G`Z31%E))QEBLVY$CP`6.png

这一段的相关代码是:

[RenPy] 纯文本查看 复制代码
label tradeup(item,shopitem):
    if Dorise.gold < item.spr:
        $shop_say = "你带的钱好像买不起这个呢。"

    python:
        mybag.replace(item,shopitem)
        Dorise.gold -= item.spr
        shop_say = "购买成功,欢迎再次光临。"
    

label tradout(item,shopitem):
    python:
        shopitem.replace(item,mybag)
        Dorise.gold += item.bpr
        shop_say = "很不错的东西,下次欢迎再卖给我"


在我确认过我的类是有实例对象
这些是关于类和方法的写法:
[RenPy] 纯文本查看 复制代码
    class Objects(Item):
        def __init__(self,name,catejory,intr,user,bpr,spr):
            super().__init__(name,'images/objects/'+name+'.png')
            self.catejory = catejory
            self.intr = intr
            self.user = user
            self.bpr = bpr
            self.spr = spr
#使用物品
        def use(self,player):
            for attribute in self.user:
                player.changed_by(attribute,self.user[attribute])



    class Inventory:
        def __init__(self,name):
            self.name = defaultdict(int)
#添加物品
        def add(self,object,number=1):
            if object not in self.name:
                self.name[object] = number
            else:
                self.name[object] += number
#移除物品
        def remove(self,object,number=1):
            if self.name[object] > number:
                return object
            else:
                self.name[object] -= numbeer

#移动物品,把object从bgname库中转移到name库中
        def replace(self,object,bagname,number=1):
            self.add(object,number)
            bagname.remove(object,number)


令人鼓舞的是商店已经有了雏形
能够显示物品和功能
其次是这个令人疑惑的bug,总是随着其他bug出现,在其他bug解决后也就不再弹出(?),但是对问题没有什么头绪,像是在说剧情里的回滚操作

                               
登录/注册后可看大图

_2({EW3RJZJ2B6BCM9[DU~7.png
发表于 2022-8-9 08:57:25 | 显示全部楼层
本帖最后由 被诅咒的章鱼 于 2022-8-9 08:59 编辑

那一堆 trade 相关的label结尾,每个都要加一句 return ……
回复 支持 1 抱歉 0

使用道具 举报

发表于 2022-8-7 21:26:05 | 显示全部楼层
你没有展示怎么调用label的,看样子是少给参数了
至少在`renpy 7.4.0`上这样写可以:
[RenPy] 纯文本查看 复制代码
label test(x, y):
    $ x += 1
    '[x]'
    $ y *= 2
    '[y]'
    return 

label start:

    call test(1, 6)
    #$ renpy.call('test', 1, 6)
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2022-8-7 22:50:57 | 显示全部楼层
[quote]Lost 发表于 2022-8-7 21:26
你没有展示怎么调用label的,看样子是少给参数了
至少在`renpy 7.4.0`上这样写可以:
[RenPy] 纯文本查看 复制代码

[mw_shl_code=renpy,true]   vbox:
            if shopitem == mybag:
                button:
                    text "使用":
                        color"#000000"
                    action[Play("sound","audio/button/objectbutton.mav"),Call('useup',item=item)]
                
                button:
                    text "丢弃":
                        color"#000000"
                    action[Play("sound","audio/button/objectbutton.mav"),Call('discord',item=item,shopitem=shopitem)]

                button:
                    text"全部丢弃":
                        color"#000000"
                    action[Play("sound","audio/button/objectbutton.mav"),Call('discord',item=item,shopitem=shopitem)]
                
                button:
                    text "售出":
                        color"#000000"
                    action [Play("sound","audio/button/objectbutton.wav"),Call('tradeout',item=item,shopitem=shopitem)]

            else:
                button:
                    text "购买":
                        color"#000000"
                    action [Play("sound","audio/button/objectbutton.wav"),Call('tradeup',item=item,shopitem=shopitem)]
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2022-8-7 22:51:31 | 显示全部楼层
alicia 发表于 2022-8-7 22:50
[mw_shl_code=renpy,true]   vbox:
            if shopitem == mybag:
                button:

忘了这个了
回复 支持 抱歉

使用道具 举报

发表于 2022-8-8 18:50:33 | 显示全部楼层
我没看出什么原则性问题,我猜……那个……您应该检查一下拼写的
以后`tradeout`建议写成`trade_out`,单词之间没分隔符,还挺难看出来的()
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2022-8-8 21:37:27 | 显示全部楼层
Lost 发表于 2022-8-8 18:50
我没看出什么原则性问题,我猜……那个……您应该检查一下拼写的
以后`tradeout`建议写成`trade_out`,单词 ...

az,那里确实有点疏忽了,但是改了拼写以后问题还是在
回复 支持 抱歉

使用道具 举报

发表于 2022-8-8 22:05:47 | 显示全部楼层
呃,有个很奇怪的一点你可能没有发现,报错信息里也是拼错的,说明调用语句也拼错了才对,所以你展示的调用并不全,而且也不是引发问题的地方
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2022-8-8 22:49:53 | 显示全部楼层
[RenPy] 纯文本查看 复制代码
screen objectactive(item,shopitem):

    frame id "objectactive":
        style "objectactive"
        vbox:
            if shopitem == mybag:
                button:
                    text "使用":
                        color"#000000"
                    action[Play("sound","audio/button/objectbutton.mav"),Call('useup',item=item)]
                
                button:
                    text "丢弃":
                        color"#000000"
                    action[Play("sound","audio/button/objectbutton.mav"),Call('discord',item=item,shopitem=shopitem)]

                button:
                    text"全部丢弃":
                        color"#000000"
                    action[Play("sound","audio/button/objectbutton.mav"),Call('discordall',item=item,shopitem=shopitem)]
                
                button:
                    text "售出":
                        color"#000000"
                    action [Play("sound","audio/button/objectbutton.wav"),Call('tradeout',item=item,shopitem=shopitem)]

            else:
                button:
                    text "购买":
                        color"#000000"
                    action [Play("sound","audio/button/objectbutton.wav"),Call('tradeup',item=item,shopitem=shopitem)]


label tradeup(item,shopitem):
    if Dorise.gold < item.spr:
        $shop_say = "你带的钱好像买不起这个呢。"

    python:
        mybag.replace(item,shopitem)
        Dorise.gold -= item.spr
        shop_say = "购买成功,欢迎再次光临。"
    

label tradeout(item,shopitem):
    python:
        shopitem.replace(item,mybag)
        Dorise.gold += item.bpr
        shop_say = "很不错的东西,下次欢迎再卖给我"
    

label useup(item):
    python:
        item.use(Dorise)
    

label discord(item,shopitem):
    python:
        shopitem.remove(item)
    

label discordall(item,shopitem):
    python:
        shopitem.remove(item,number=shopitem.name[item])
    

这是完整调用了
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2022-8-9 18:33:54 | 显示全部楼层
被诅咒的章鱼 发表于 2022-8-9 08:57
那一堆 trade 相关的label结尾,每个都要加一句 return ……

谢谢大佬,是这个原因,因为我没加return让值传不到下一个按钮
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 06:15 , Processed in 0.126824 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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