找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 29428|回复: 13

[已解决] 关于bar血条的用法求助?

[复制链接]
发表于 2021-7-10 12:01:04 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 qwe3147969113 于 2021-9-23 11:55 编辑

感谢https://www.renpy.cn/home.php?mod=space&uid=3作者提供的bar代码
如果你看到此帖想请教你几个问题
1:你写的源代码只是有Hp血条如果我要加入新的血条,怎么办?我试了一下是报错的,请您过目!如果您能够指正其中的错误我感激不尽
[RenPy] 纯文本查看 复制代码
## 这是你的源代码
screen single_stat(name, hp, hp_max, lv, xalign):

    frame:
        xalign xalign # 位置,注意是相同的,不是常见X和Y。

        vbox:
            spacing 5

            hbox:
                text "[name!t]" min_width 220
                text _(" Lv. [lv]")

            hbox:
                text _("HP"):
                    min_width 40
                    yalign 0.5

                bar:
                    value AnimatedValue(hp, hp_max, 1.0)
                    xmaximum 180
                    ysize 26

                text " [hp]/[hp_max]":
                    yalign 0.5

# 此screen用use 入参方式,一次显示两个信息不同的single_stat。
screen stats():

    use single_stat(_("英雄"), hero_hp, hero_hp_max, hero_lv, 0.0)
    use single_stat(_("魔王"), Devil_hp, Devil_hp_max, Devil_lv, 1.0)

## 英雄 数值。
default hero_hp = 50
default hero_hp_max = 100
default hero_lv = 10

## 魔王 数值。
default Devil_hp = 100
default Devil_hp_max = 100
default Devil_lv = 90

# 游戏在此开始。
label start:

    show screen stats
    with dissolve

    "英雄需要治疗。"
    $ hero_hp = 100
    "治疗完成。"


    "魔王等级太高了?"
    $ Devil_lv = 10

    "现在都是10级了。"

    hide screen stats
    "关闭数值显示界面"

    # 此处为游戏结尾。
    return


[RenPy] 纯文本查看 复制代码
##在作者写的基础上新加的代码
screen single_stat(name, hp, hp_max, lv,ex,xalign):##新加ex选项

    frame:
        xalign xalign # 位置,注意是相同的,不是常见X和Y。

        vbox:
            spacing 5

            hbox:
                text "[name!t]" min_width 220
                text _(" Lv. [lv]")

            hbox:
                text _("HP"):
                    min_width 40
                    yalign 0.5
            hbox:##我不知道这样子会不会和上面的hbox冲突
                text _("ex"):##虽然不知道是什么但是这里我也加了给ex
                    min_width 40
                    yalign 0.5


                bar:##根据我的理解这应该是血条的位置或者数值之类的所以这里我也加入了ex
                    value AnimatedValue(hp, hp_max, ex,1.0)
                    xmaximum 180
                    ysize 26

                text " [hp]/[hp_max]":##这里讲真的确实没看懂是什么
                    yalign 0.5
                text " [ex]/[ex_max]":##所以我在这里新加了
                    yalign 0.5


# 此screen用use 入参方式,一次显示两个信息不同的single_stat。
screen stats():

    use single_stat(_("英雄"), hero_hp, hero_hp_max, hero_lv,hero_ex,0.0)##这个应该就是显示血条的所以我两边都加了ex
    use single_stat(_("魔王"), Devil_hp, Devil_hp_max, Devil_lv,Devil_ex,1.0)

## 英雄 数值。
default hero_hp = 50##这个无非就是最大血量和初始等级的地方所以两边都要定义
default hero_hp_max = 100
default hero_lv = 10
default hero_ex = 10

## 魔王 数值。
default Devil_hp = 100
default Devil_hp_max = 100
default Devil_lv = 90
default Devil_ex = 90

# 游戏在此开始。
label start:

    show screen stats
    with dissolve

    "英雄需要治疗。"
    $ hero_hp = 100
    "治疗完成。"


    "魔王等级太高了?"
    $ Devil_lv = 10

    "现在都是10级了。"

    hide screen stats
    "关闭数值显示界面"

    # 此处为游戏结尾。
    return


这么一套下来,我最终是想要ex血条显示在hp血条的下方,结果。。。。。。游戏直接报错
研究了两天没研究出来,只能在论坛上求助。。。。
希望各位大佬别嘲笑,第一次用bar这个东西
如果有人能够解决感激不尽!!!






发表于 2021-7-11 02:36:50 | 显示全部楼层
[RenPy] 纯文本查看 复制代码
screen single_stat(name, hp, hp_max, lv, ex, ex_max,xalign):
 
    frame:
        xalign xalign
 
        vbox:
            spacing 5
 
            hbox:
                text "[name!t]" min_width 220
                text _(" Lv. [lv]")
 
            hbox:
                text _("HP"):
                    min_width 40
                    yalign 0.5
 
                bar:
                    value AnimatedValue(hp, hp_max, 1.0)
                    xmaximum 180
                    ysize 26

                text " [hp]/[hp_max]":
                    yalign 0.5

            hbox:
                text _("ex"):
                    min_width 40
                    yalign 0.5
 
 
                bar:
                    value AnimatedValue(ex, ex_max,1.0)
                    xmaximum 180
                    ysize 26
 
                text " [ex]/[ex_max]":
                    yalign 0.5
 
 
screen stats():
 
    use single_stat(_("英雄"), hero_hp, hero_hp_max, hero_lv, hero_ex, hero_ex_max, 0.0)
    use single_stat(_("魔王"), Devil_hp, Devil_hp_max, Devil_lv,Devil_ex, Devil_ex_max, 1.0)
 
## 英雄 数值。
default hero_hp = 50
default hero_hp_max = 100
default hero_lv = 10
default hero_ex = 10
default hero_ex_max = 999
 
## 魔王 数值。
default Devil_hp = 100
default Devil_hp_max = 100
default Devil_lv = 90
default Devil_ex = 90
default Devil_ex_max = 999
 
# 游戏在此开始。
label start:
 
    show screen stats
    with dissolve
 
    "英雄需要治疗。"
    $ hero_hp = 100
    "治疗完成。"
 
 
    "魔王等级太高了?"
    $ Devil_lv = 10
 
    "现在都是10级了。"
 
    hide screen stats
    "关闭数值显示界面"
 
    # 此处为游戏结尾。
    return


之前运行会报错的原因是,第31行的:
[RenPy] 纯文本查看 复制代码
text " [ex]/[ex_max]":

你在这里使用了名为“ex_max”的变量,而这个变量既不是screen的入参,也没有定义过,无中生有导致报错。
回复 支持 1 抱歉 0

使用道具 举报

 楼主| 发表于 2021-7-11 19:00:42 | 显示全部楼层
被诅咒的章鱼 发表于 2021-7-11 02:36
[mw_shl_code=renpy,true]screen single_stat(name, hp, hp_max, lv, ex, ex_max,xalign):

    frame:

跪谢!!!大哥的解答!!!!
但是小弟还有一个问题,不知大哥能否解答
就是如果我需要在两个事件中添加两遍血条因该怎么操作?(比如打怪,打完这个怪然后打下个怪的时候下个怪的血条是上个怪遗留下来的,好像是留有上个血条的属性,即使结尾关闭了数值显示,但是依然无法从根源解决此问题!,)
如果大哥你看不懂我说的简明扼要的来讲
就是我一个血条要使用两次或者多次的时候应该怎么办?
这样子就事件冲突了,有办法解决吗?相信大哥你一定有办法,如果你能够解决这个问题,小弟花点钱也是值得的!
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2021-7-11 19:07:08 | 显示全部楼层
这是第二版的源代码
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2021-7-11 19:07:47 | 显示全部楼层
qwe3147969113 发表于 2021-7-11 19:07
这是第二版的源代码

label pk2:##这是第二次打斗

screen single_stat(name, hp, hp_max, lv, ex, ex_max,xalign):
  
    frame:
        xalign xalign
  
        vbox:
            spacing 5
  
            hbox:
                text "[name!t]" min_width 220
                text _(" Lv. [lv]")
  
            hbox:
                text _("HP"):
                    min_width 40
                    yalign 0.5
  
                bar:
                    value AnimatedValue(hp, hp_max, 1.0)
                    xmaximum 180
                    ysize 26

                text " [hp]/[hp_max]":
                    yalign 0.5

            hbox:
                text _("ex"):
                    min_width 40
                    yalign 0.5
  
  
                bar:
                    value AnimatedValue(ex, ex_max,1.0)
                    xmaximum 180
                    ysize 26
  
                text " [ex]/[ex_max]":
                    yalign 0.5
  
  
screen stats():
  
    use single_stat(_("英雄"), hero_hp1, hero_hp_max1, hero_lv1, hero_ex1, hero_ex_max1, 0.0)##目前我是修改了这里引擎可以过自检
    use single_stat(_("魔王"), Devil_hp1, Devil_hp_max1, Devil_lv1,Devil_ex1, Devil_ex_max1, 1.0)##我在前面加了个1防止和上一版冲突的问题
  
## 英雄 数值。
default hero_hp1 = 50
default hero_hp_max1 = 100
default hero_lv1 = 10
default hero_ex1 = 10
default hero_ex_max1 = 999
  
## 魔王 数值。
default Devil_h1p = 100
default Devil_hp_max1 = 100     ##数值这里也是同理都加上了个1防止和上一个血条冲突
default Devil_lv1 = 90
default Devil_ex1 = 90
default Devil_ex_max1 = 999
  
# 游戏在此开始。
label start:
  
    show screen stats
    with dissolve
  
    "英雄需要治疗。"
    $ hero_hp = 100           ##但是当运行到这里的时候数据不会发生改变,也就是说从这里开始数据和上一版的一样
    "治疗完成。"
  
  
    "魔王等级太高了?"
    $ Devil_lv = 10
  
    "现在都是10级了。"     ##但是对话这些是可以正常显示,只是没有数值变动
  
    hide screen stats
    "关闭数值显示界面"
  
    # 此处为游戏结尾。
    return
回复 支持 抱歉

使用道具 举报

发表于 2021-7-12 08:57:35 | 显示全部楼层
qwe3147969113 发表于 2021-7-11 19:00
跪谢!!!大哥的解答!!!!
但是小弟还有一个问题,不知大哥能否解答
就是如果我需要在两个事件中添加 ...

直接修改血量 Devil_hp 和 Devil_hp_max。
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2021-7-12 09:19:24 | 显示全部楼层
被诅咒的章鱼 发表于 2021-7-12 08:57
直接修改血量 Devil_hp 和 Devil_hp_max。

具体要怎么修改?
求大神指导!!!!
从昨天就在等你的回复
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2021-7-12 09:21:25 | 显示全部楼层
本帖最后由 qwe3147969113 于 2021-7-12 10:20 编辑
被诅咒的章鱼 发表于 2021-7-12 08:57
直接修改血量 Devil_hp 和 Devil_hp_max。

能否例举一个之前那种形式的代码,可以有偿答复!
回复 支持 抱歉

使用道具 举报

发表于 2021-7-12 09:35:08 来自手机 | 显示全部楼层
qwe3147969113 发表于 2021-7-12 09:21
能否例举一个完整案例出来,大佬,求求了!

你应该先学习些renpy基础知识。
如看,论坛里的入门教程和中文文档。
再这样问下去,
是人家直接给你写出完整游戏吗?
先不要说人家愿不愿意,你付费了吗?
自己都不去动脑子?
不去思考研究,人家给的脚本吗?
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2021-7-12 10:00:56 | 显示全部楼层
龙氏 发表于 2021-7-12 09:35
你应该先学习些renpy基础知识。
如看,论坛里的入门教程和中文文档。
再这样问下去,

可以付费啊,我又不白嫖,你觉得你能解决发个二维码,多少钱可以转你,
本来就是论坛,乐意回复就回复,觉得自己亏了我给你点解答费用也无所谓,毕竟这是别人的知识
至于你说的我没思考就来问,我个人是研究不出来才问的,我总共就发了一篇帖子,两个问题,你不乐意解答
,不代表别人也不乐意解答,我说过是钱的问题你私聊我,可以有偿解决问题
回复 支持 抱歉

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 09:31 , Processed in 0.069004 second(s), 15 queries , File On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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