设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1445|回复: 9
打印 上一主题 下一主题

[已经解决] 关于战斗状态栏的EXP与等级扩展

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2008-7-10
帖子
15
跳转到指定楼层
1
发表于 2009-10-31 01:25:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 牧歌 于 2009-11-8 14:03 编辑

饿.....托以前教程的福终于自己吧HP位置写好了 但是自己尝试添加了EXP的扩展 发现这貌似是我无法解决的了 所以特来寻求指点
如图一样 我知道是写错数据了 没办法 我没有相关的资料比对 所以在此寻求答案 顺便说下 等级的扩展怎么写呢 请各位大大也在指点一二 就像图二如此般

图二

以下是我用的脚本的剧本 请务必给与指点 要不偶本来就很没头绪了 会弄得更没头绪 看来在还没彻底理清脚本数据算法概念前依然迷茫.................

  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    super(0, 320, 640, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    #........................................................................
    self.windowskin = nil
    @sta_back = []
    @sta_output = []
    @states_icons = []
    @state_icon_p = []
    @hp_bitmap = loadbitmap("Graphics/CP/hp.png")#// HP條
    @mp_bitmap = loadbitmap("Graphics/CP/mp.png")#// MP條
    @ap_bitmap = loadbitmap("Graphics/CP/AP.png")#// AP條
    @exp_bitmap = loadbitmap("Graphics/CP/EXP.png")#// EXP條
    for i in 0...$game_party.actors.size
      actor = $game_party.actors
      #//Background
      @sta_back = Sprite.new
      @sta_back.bitmap = loadbitmap("Graphics/CP/" +actor.name+"_平时.png")
      @sta_back.x = 80 + i * 165
      @sta_back.y = 320
      @sta_back.z = self.z + 1
      #//State
      @states_icons = Sprite.new
      @state_icon_p = 0
      @states_icons.x = i * 165 + 180
      @states_icons.y = 383
      @states_icons.z = 999
      st = $game_party.actors.states[@state_icon_p]
      unless st.nil?
        path = "Graphics/States/#{st}.png"
        @states_icons.bitmap = loadbitmap(path)
      end
      #//Bars
      @sta_output = Sprite.new
      @sta_output.bitmap = Bitmap.new(150, 78)
      @sta_output.x = 99 + i * 165
      @sta_output.y = 480 - 105
      @sta_output.z = self.z + 2
      @sta_output.bitmap.font.name = "黑体"
    end
    @level_up_flags = [false, false, false, false]
    #........................................................................
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
      actor = $game_party.actors
      #......................................................................
      actor_x = i * 155 + 5
      @sta_output.bitmap.clear
      hp_width = $game_party.actors.hp * @hp_bitmap.width/$game_party.actors.maxhp
      mp_width = $game_party.actors.sp * @mp_bitmap.width/$game_party.actors.maxsp
      ap_width = $game_party.actors.mp * @ap_bitmap.width/$game_party.actors.maxmp
      exp_width = $game_party.actors.exp * @exp_bitmap.width/$game_party.actors.next_exp
      hp_rect = Rect.new(0, 0, hp_width, 8)
      mp_rect = Rect.new(0, 0, mp_width, 8)
      ap_rect = Rect.new(0, 0, ap_width, 8)
      exp_rect = Rect.new(0, 0, exp_width, 8)      
      @sta_output.bitmap.font.size = 12
      @sta_output.bitmap.blt(81, 28, @hp_bitmap, hp_rect)
      @sta_output.bitmap.blt(82, 39, @mp_bitmap, mp_rect)
      @sta_output.bitmap.blt(87, 50, @ap_bitmap, ap_rect)
      @sta_output.bitmap.blt(87, 63, @exp_bitmap, exp_rect)
      @sta_output.bitmap.font.color.set(255, 255, 255,255)
      @sta_output.bitmap.draw_text1(86, 25, 77, 11,$game_party.actors.hp.to_s + "/" + $game_party.actors.maxhp.to_s)
      @sta_output.bitmap.draw_text1(86, 35, 77, 11,$game_party.actors.sp.to_s + "/" + $game_party.actors.maxsp.to_s)      
      @sta_output.bitmap.draw_text1(98, 46, 77, 11,$game_party.actors.mp.to_s + "/" + $game_party.actors.maxmp.to_s)
      @sta_output.bitmap.draw_text1(98, 60, 77, 11,$game_party.actors.next_exp_s + "/" + $game_party.actors.next_exp.to_s)
      #......................................................................

      #......................................................................
      if @level_up_flags
        self.contents.font.color = Color.new(255, 255, 255, 255)
        self.contents.font.size = 14
        self.contents.draw_text1(actor_x+60, 58, 120, 32, "levelup")
      end
    end
  end

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9418
在线时间
2749 小时
注册时间
2008-9-5
帖子
3544

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

2
发表于 2009-11-1 19:37:17 | 只看该作者
这句:
      exp_width = $game_party.actors.exp * @exp_bitmap.width/$game_party.actors.next_exp
大概就是万恶的元首了,貌似RPG的角色经验是一直积累的,就是说经验会从1开始就不断增加,直到99级,
至于next_exp这块是在已经拥有的经验的基础上升下一级所需要的经验值,所以不应该用next_exp作为
算式的分母,这样会出现假分数,所以将原式改为:      
Ciella = $game_party.actors.next_exp + $game_party.actors.exp
exp_width = $game_party.actors.exp * @exp_bitmap.width / Ciella
看看效果怎么样。。。
解释一下,明尼也是临时看了脚本得到的结论,如果有不对的地方,请再找我看看哪里不对。。。
还有,诸如这种条的算式最好的格式是:(MP为例)
mp_width = @mp_bitmap.width * $game_party.actors.sp / $game_party.actors.maxsp
因为这样才是正常顺序:用图片的宽度*现有HP/总HP 这样既表示现有HP总HP的商(一个分数)
再乘以图片宽。。。。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2008-7-10
帖子
15
3
 楼主| 发表于 2009-11-2 01:01:05 | 只看该作者
恩 不行
这个公式有误.........
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9418
在线时间
2749 小时
注册时间
2008-9-5
帖子
3544

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

4
发表于 2009-11-4 18:49:47 | 只看该作者
不好意思,之前仓促有误,原谅明尼吧...
那么,有一个很好的办法:
先在脚本"Game_Actor"里找到 def initialize  然后在这段的结束(end)下面加上这两段:
def now_exp
  return @exp - @exp_list[@level]
end
def next_exp
  return @exp_list[@level + 1] > 0 ? @exp_list[@level + 1] - @exp_list[@level] : 0
end
这是定义两个有关经验的代数,然后把:      
exp_width = $game_party.actors.exp * @exp_bitmap.width/$game_party.actors.next_exp
这句换成:
if actor.next_exp != 0
  minny = actor.now_exp.to_f / actor.next_exp
else
  minny = 1
end
if actor.level < 99
  exp_width = @exp_bitmap.width * minny
else
  exp_width = @exp_bitmap.width
end
然后就可以了,如果会出错,请再联系明尼吧...因为这次明尼有测试过,应该不会出错了吧...
(还有最近明尼会很忙,所以可能很久才会来看看,所以有什么问题需要非明尼看的话可以先放在一边,明尼会在上线时看看的...或者在明尼的屋子留言...谢谢.)
希艾拉●明尼de屋子:http://hi.baidu.com/cinderelmini
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2008-7-10
帖子
15
5
 楼主| 发表于 2009-11-4 22:31:51 | 只看该作者
OK行了 经验条的涨幅正常了
谢谢明尼的帮忙 恩 我也没什么太多问题了 接下来就是关于添加多一个等级追加描述的了 这个也没对比脚本我也不知道怎么写就像标题里的第二张图一般
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9418
在线时间
2749 小时
注册时间
2008-9-5
帖子
3544

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

6
发表于 2009-11-7 19:24:38 | 只看该作者
饿。。。回来了。。。
“等级追加描述”这个可以用一句“draw_actor_level(actor , x, y)”然后坐标自己调过来,字体是自己选的
这样就解决了。。貌似这个在原自带脚本里就有方法了哦。。。看来 牧歌 你要多自己看脚本才行呀。。。
自己看懂了脚本对你自己很有帮助的,那样就用不着老是在这里发问了呀。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
帖子
2129
7
发表于 2009-11-7 19:43:36 | 只看该作者
本帖最后由 dbshy 于 2009-11-7 19:47 编辑

LZ跟我刚学脚本时好像 =。=
当时我也是对默认rgss不熟,导致写了个相当NC的怒气槽脚本

有时间的话,可以看下默认脚本

ps:佩服明尼同学,提问区就需要这样有耐心的同学
来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
帖子
2129
8
发表于 2009-11-7 19:43:53 | 只看该作者
本帖最后由 dbshy 于 2009-11-7 19:46 编辑

网络问题,屏蔽之
来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2008-7-10
帖子
15
9
 楼主| 发表于 2009-11-8 14:04:05 | 只看该作者

恩 谢谢明尼的指导基本以写完了 接下来就是做下调整就行了
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9418
在线时间
2749 小时
注册时间
2008-9-5
帖子
3544

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

10
发表于 2009-11-8 19:04:21 | 只看该作者
努力学好脚本呀。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-28 03:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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