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

Project1

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

EXP 条 计算公式

 关闭 [复制链接]

Lv1.梦旅人

幻想

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-12-23
帖子
1016
跳转到指定楼层
1
发表于 2008-10-27 00:52:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
现在做个EXP条形图
因为从未接触过此类。。。公式犯了难,那位大侠出来指点一二。
举例 x=获得经验 y=经验总值 i = 条形长度
  条形显示计算公式 x*i/y
显示正常。actor.level>1 就不一样了,这就不用说了,肯定的。
这时x=x将加上角色上级总经验/总经验 --默认显示值
~~帮个忙,给个公式
[url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_love_111006892.jpg]http://rpg.blue/upload_program/d/菜鸟飞呀飞_love_111006892.jpg[/url][FLY][url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_yz_tb_111008420.png]http://rpg.blue/upload_program/d/菜鸟飞呀飞_yz_tb_111008420.png[/url][/FLY][url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_yzs_111008459.png]http://rpg.blue/upload_program/d/菜鸟飞呀飞_yzs_111008459.png[/url]

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

2
发表于 2008-10-27 01:50:17 | 只看该作者
由于经验是累加的,所以当前经验其实等于 当前总经验 - 前一级的经验

显示长度 = 经验条总长 * (当前总经验 - 前一级的经验) / 下一级需要的经验
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

幻想

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-12-23
帖子
1016
3
 楼主| 发表于 2008-10-27 01:57:53 | 只看该作者
前一级经验和下一级经验怎么获取···
exp_list[@level+1]?
[url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_love_111006892.jpg]http://rpg.blue/upload_program/d/菜鸟飞呀飞_love_111006892.jpg[/url][FLY][url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_yz_tb_111008420.png]http://rpg.blue/upload_program/d/菜鸟飞呀飞_yz_tb_111008420.png[/url][/FLY][url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_yzs_111008459.png]http://rpg.blue/upload_program/d/菜鸟飞呀飞_yzs_111008459.png[/url]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
32 小时
注册时间
2008-1-6
帖子
310
4
发表于 2008-10-27 03:54:31 | 只看该作者
这是我前几天自己弄的,你看看吧
  def exp #现在的总经验
    return @exp
  end
  def next_exp #升下一级要的总经验
    return @exp_list[@level+1]
  end
  def now_exp #升当前级要的总经验
    return @exp_list[@level]
  end
  def level #现在的等级
    return @level
  end
  def max_level #最大等级
    return $data_actors[@actor_id].final_level
  end
在Game_Actor里插入以上部分

绘制值条的部分是下面的内容
def EXP(actor, x, y, w=96)
  self.contents.fill_rect(x-2, y+6, w+4, 16, Color.new(255, 150, 150, 255))
  self.contents.fill_rect(x-1, y+7, w+2, 14, Color.new(90, 90, 255, 255))
  if actor.level == actor.max_level
  w6 = w+2
  else
  w6 = w * (actor.exp-actor.now_exp) / (actor.next_exp-actor.now_exp)
  end
  self.contents.fill_rect(x-1, y+7, w6, 14, Color.new(0, 255, 0, 255))
end

系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
看到这一段我笑了
拉登死了!想起一个老段子。
拉登说:中国是唯一不能惹的国家,基地曾派出五名恐怖分子来袭击中国,
一人炸立交桥,转晕了;
一人炸公交,没挤上车;
一人炸超市,炸弹被盗;
一人炸火车,没买到票;
最后一人成功炸矿,死伤数百人。
潜回基地后,半年都没见任何新闻报道,被基地组织以撒谎罪处决。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
3
星屑
50
在线时间
177 小时
注册时间
2008-3-21
帖子
939
5
发表于 2008-10-27 04:00:34 | 只看该作者
看这一段,是脚本中Game_Actor里的

  def make_exp_list
    actor = $data_actors[@actor_id]
    @exp_list[1] = 0

    pow_i = 2.4 + actor.exp_inflation / 100.0
    for i in 2..100
      if i > actor.final_level
        @exp_list = 0
      else
        n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
        @exp_list = @exp_list[i-1] + Integer(n)
      end
    end

  end

关键是这一句

n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)

这个就是角色计算经验值等级的关键公式,其中
n 值的意义就是角色每一等级之间相差多少经验值,
i 值的意义就是角色目前等级。

而乘方数
pow_i = 2.4 + actor.exp_inflation / 100.0

的计算方法就是 2.4 + 角色经验值增长度 / 100

也就是说,

等级间相差的经验值 = 角色基本经验值 * ((目前等级 + 3) ^ 乘方数) / (5 ^ 乘方数)


角色基本经验值 和 角色经验值增长度 都可以在默认界面中设定。

完了,回晚了一步{/dk}
我的个人空间:
http://434986751.qzone.qq.com
回复 支持 反对

使用道具 举报

Lv1.梦旅人

幻想

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-12-23
帖子
1016
6
 楼主| 发表于 2008-10-27 04:21:40 | 只看该作者
谢谢啦……{/gg}
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

7
发表于 2008-10-27 04:32:16 | 只看该作者
我也来提供个方法好了
首先
  1. class Game_Actor
  2.   attr_reader   :exp_list
  3. end
复制代码


接下来在需要画经验条的window里
  1.     self.contents.fill_rect(320, 48, 160, 32, Color.new(0, 0, 0))
  2.     if @actor.exp_list[@actor.level + 1].to_i != 0
  3.       width = 160 * (@actor.exp.to_i - @actor.exp_list[@actor.level].to_i) / (@actor.exp_list[@actor.level + 1].to_i - @actor.exp_list[@actor.level].to_i)
  4.       self.contents.fill_rect(320, 48, width, 32, Color.new(255, 0, 0))
  5.     else
  6.       self.contents.fill_rect(320, 48, 160, 32, Color.new(255, 0, 0))
  7.     end
复制代码
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-22 16:15

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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