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

Project1

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

[已经过期] 关于脚本问题 两个

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
204 小时
注册时间
2010-8-22
帖子
43
跳转到指定楼层
1
发表于 2011-6-15 09:34:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
问题一:
hit = self.damage < 0 ? 100 : 100 - eva
        hit = self.cant_evade? ? 100 : hit
这两句是什么意思?我看不懂

hit是命中率,“?”是什么意思,两个“?”是什么意思,“:”是什么意思,self.cant_evade是什么意思
整句是什么顺序,怎么看

问题二:
假如:lv1-lv2需要10,lv2-lv3需要15,lv3-lv4需要20,我的人物是3级
游戏里状态界面显示的exp是这样的25/45,就是累计获得经验值/下一等级所需累计经验值
我怎么样能把它的显示改为0/20,就是本等级获得经验值/本等级到下一等级所需经验值?

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

2
发表于 2011-6-15 12:11:00 | 只看该作者
http://www.diyrpg.net/thread-4456-1-1.html

      # 第二命中判定
      这个第二命中是在第一命中成立的基础上进行判定的
      eva 是局部变量
      self.agi 是 被攻击者 的速度
      attacker.dex 是攻击者的灵巧
      self.eva 是 被攻击者的躲避
      局部变量 eva 被赋值为后面的计算结果
      eva = 8 * self.agi / attacker.dex + self.eva
      下面这一行先是在进行判断.判断 被攻击者 被造成的伤害是大于0 还是小于0
      如果是小于0则局部变量 hit 被赋值为 100
      反之 局部变量 hit 则被赋值为 100 - eva
      hit = self.damage < 0 ? 100 : 100 - eva
      这一行是对 hit 的修正
      状态里不是有一个选项是 不能躲避攻击 吗!
      如果 被攻击者 有这样的一个状态的话 则 hit 被赋值为 100
      hit = self.cant_evade? ? 100 : hit
      下面这行就是在进行第二命中的最后计算了
      hit_result = (rand(100) < hit)
    end











你知道得太多了

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-7-25
帖子
411
3
发表于 2011-6-15 16:20:43 | 只看该作者
hit = self.damage < 0 ? 100 : 100 - eva
问号表达式,RUBY是否这么叫我不知道
简单的来说这是个简化的if语句
就是说 self.damage 小于0是真的话hit =100,否则等于100 - eva
其他楼上都有了
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
204 小时
注册时间
2010-8-22
帖子
43
4
 楼主| 发表于 2011-6-15 17:03:52 | 只看该作者
本帖最后由 uoyllik 于 2011-6-15 17:44 编辑
flzt5354 发表于 2011-6-15 16:20
hit = self.damage < 0 ? 100 : 100 - eva
问号表达式,RUBY是否这么叫我不知道
简单的来说这是个简化的if ...




1、在第一命中判定hit_result = (rand(100) < attacker.hit)里
attacker.hit的数值是从哪里来的呢?之前没有赋值啊,我怎么知道自己的命中率是什么呢

2、我的问题二呢

其他我觉着自己懂了

回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

5
发表于 2011-6-15 22:11:43 | 只看该作者
attacker 是在 方法 被调用的时候被赋值的.
他有可能是 Game_Actor 对象 也有可能是 Game_Enemy 对象.
attacker.hit 是在调用 hit 方法.
具体可以全局搜索 def hit











你知道得太多了

回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
255
在线时间
227 小时
注册时间
2009-7-26
帖子
216
6
发表于 2011-6-16 00:56:09 | 只看该作者
uoyllik 发表于 2011-6-15 17:03
1、在第一命中判定hit_result = (rand(100) < attacker.hit)里
attacker.hit的数值是从哪里来的呢?之 ...

这里头全是变量,attacker.hit 这个命中率是每个人都不一样的。
计算方法就和 后知后觉 说的,搜索 def hit,某处脚本有详细定义
默认的脚本记得是算上人物初始定义的命中加上武器防具等赋予的额外命中
不要吐槽我⋯⋯
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-7-25
帖子
411
7
发表于 2011-6-16 01:15:44 | 只看该作者
本帖最后由 flzt5354 于 2011-6-16 03:00 编辑

唉。帮人帮到底吧。写这代码实在是痛苦
这RUBY。。简直是要什么没什么。。
可能是我没学过吧。看了几眼语法,多重嵌套都弄不出来
。。。。实在是拿不出手的代码。。
------------------无意中又学了点语法,,然后。。那丑陋的代码都删了~剩下个精简的
效果就这样咯。。




Game_Actor ★
  1.   #--------------------------------------------------------------------------
  2.   # ● 获取 EXP 字符串
  3.   #--------------------------------------------------------------------------
  4.   def exp_s
  5.     return @exp_list[@level+1] > 0 ? @exp.to_s : "-------"
  6.   end
  7.    #--------------------------------------------------------------------------
  8.   # ● 获取 EXP 数字
  9.   #--------------------------------------------------------------------------
  10.   def exp_i
  11.     return @exp_list[@level+1] > 0 ? @exp.to_i: "-------"
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 获取下一等级的 EXP 字符串
  15.   #--------------------------------------------------------------------------
  16.   def next_exp_s
  17.     return @exp_list[@level+1] > 0 ? @exp_list[@level+1].to_s : "-------"
  18.   end

  19.   #--------------------------------------------------------------------------
  20.   # ● 获取本等级的 EXP 数字
  21.   #--------------------------------------------------------------------------
  22.   def ben_exp_i
  23.     return  @exp_list[@level].to_i
  24.   end
  25.     #--------------------------------------------------------------------------
  26.   # ● 获取下一等级的 EXP 数字
  27.   #--------------------------------------------------------------------------
  28.   def next_exp_i
  29.     return @exp_list[@level+1] > 0 ? @exp_list[@level+1].to_i : "-------"
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 获取离下一等级还需的 EXP 字符串
  33.   #--------------------------------------------------------------------------
  34.   def next_rest_exp_s
  35.     return @exp_list[@level+1] > 0 ?
  36.       (@exp_list[@level+1] - @exp).to_s : "-------"
  37.   end
  38. [/code


  39. ]Window_Base ★

  40. [code]#--------------------------------------------------------------------------
  41.   # ● 描绘 EXP
  42.   #     actor : 角色
  43.   #     x     : 描画目标 X 坐标
  44.   #     y     : 描画目标 Y 坐标
  45.   #--------------------------------------------------------------------------
  46.   def draw_actor_exp(actor, x, y)
  47.     self.contents.font.color = system_color
  48.     self.contents.draw_text(x, y, 24, 32, "E")
  49.     self.contents.font.color = normal_color

  50.       al=actor.ben_exp_i
  51.       ab=actor.exp_i
  52.       a=ab-al

  53.     an=actor.next_exp_i
  54.     bn=an-al

  55.     self.contents.draw_text(x + 24, y, 84, 32, a.to_s, 2)
  56.     self.contents.draw_text(x + 108, y, 12, 32, "/", 1)
  57.     self.contents.draw_text(x + 120, y, 84, 32, bn.to_s)
  58.   end   
复制代码
flzt5354于2011-6-16 01:31补充以下内容:
  hit_result = (rand(100) < attacker.hit)
。这东西初始化就有啦
你打开RM的帮助文档
搜索hit
嗯。出现3个文档
分别是物品,特技,精灵
3个类
他们都设定为100 - -。人物的我猜是不知道哪里设置了,
  1. module RPG
  2.   class Item
  3.     def initialize
  4.       @id = 0
  5.       @name = ""
  6.       @icon_name = ""
  7.       @description = ""
  8.       @scope = 0
  9.       @occasion = 0
  10.       @animation1_id = 0
  11.       @animation2_id = 0
  12.       @menu_se = RPG::AudioFile.new("", 80)
  13.       @common_event_id = 0
  14.       @price = 0
  15.       @consumable = true
  16.       @parameter_type = 0
  17.       @parameter_points = 0
  18.       @recover_hp_rate = 0
  19.       @recover_hp = 0
  20.       @recover_sp_rate = 0
  21.       @recover_sp = 0
  22. #-----------------------------------------------------------

  23.       @hit = 100
  24. #-----------------------------------------------------------

  25.       @pdef_f = 0
  26.       @mdef_f = 0
  27.       @variance = 0
  28.       @element_set = []
  29.       @plus_state_set = []
  30.       @minus_state_set = []
  31.     end
  32.     attr_accessor :id
  33.     attr_accessor :name
  34.     attr_accessor :icon_name
  35.     attr_accessor :description
  36.     attr_accessor :scope
  37.     attr_accessor :occasion
  38.     attr_accessor :animation1_id
  39.     attr_accessor :animation2_id
  40.     attr_accessor :menu_se
  41.     attr_accessor :common_event_id
  42.     attr_accessor :price
  43.     attr_accessor :consumable
  44.     attr_accessor :parameter_type
  45.     attr_accessor :parameter_points
  46.     attr_accessor :recover_hp_rate
  47.     attr_accessor :recover_hp
  48.     attr_accessor :recover_sp_rate
  49.     attr_accessor :recover_sp
  50.     attr_accessor :hit
  51.     attr_accessor :pdef_f
  52.     attr_accessor :mdef_f
  53.     attr_accessor :variance
  54.     attr_accessor :element_set
  55.     attr_accessor :plus_state_set
  56.     attr_accessor :minus_state_set
  57.   end
  58. end
复制代码
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
204 小时
注册时间
2010-8-22
帖子
43
8
 楼主| 发表于 2011-6-16 19:52:22 | 只看该作者
本帖最后由 uoyllik 于 2011-6-16 19:54 编辑
flzt5354 发表于 2011-6-16 01:15
唉。帮人帮到底吧。写这代码实在是痛苦
这RUBY。。简直是要什么没什么。。
可能是我没学过吧。看了几眼语法 ...


exp的显示问题解决了,但是lv99会出现错误,再帮我改一下吧。。。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2009-7-25
帖子
411
9
发表于 2011-6-16 20:29:22 | 只看该作者
uoyllik 发表于 2011-6-16 19:52
exp的显示问题解决了,但是lv99会出现错误,再帮我改一下吧。。。

貌似本来就只有98级吧。你看我图片
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
204 小时
注册时间
2010-8-22
帖子
43
10
 楼主| 发表于 2011-6-17 10:34:11 | 只看该作者
本帖最后由 uoyllik 于 2011-6-17 10:35 编辑
flzt5354 发表于 2011-6-16 20:29
貌似本来就只有98级吧。你看我图片


升到lv99的一霎那,就是等级封顶的时候会出错误提示,你能不能自己试验一下,
你的图片也不妨碍最大等级是99,而恰能说明这一点。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 05:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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