Project1

标题: 新人腳本問題 [打印本页]

作者: eheroboy    时间: 2008-7-17 18:52
标题: 新人腳本問題
#--------------------------------------------------------------------------
  # ● 获取 MaxHP
  #--------------------------------------------------------------------------
  def maxhp
    n = [[base_maxhp + @maxhp_plus, 1].max, 999999].min
    for i in @states
      n *= $data_states.maxhp_rate / 100.0
    end
    n = [[Integer(n), 1].max, 999999].min
    return n
  end

這個是遊戲本身自帶庫的戰鬥用腳本,首先就卡殼在那個 n = [[base_maxhp + @maxhp_plus, 1].max, 999999].min沒看懂什麽意思,請幫忙解答 [LINE]1,#dddddd[/LINE]版务信息:版主帮忙结贴~
作者: 轮回者    时间: 2008-7-17 19:00
有問題以後就在這個帖子里更新

若果你这么做,大概没人会继续解答

n = [[base_maxhp + @maxhp_plus, 1].max, 999999].min


n = base_maxhp + @maxhp_plus
if n < 1
  n = 1
elsif n > 999999
  n = 999999
end
return n
作者: 轮回者    时间: 2008-7-17 19:00
重复了……自屏蔽
作者: 荆芥    时间: 2008-7-17 19:02
base_maxhp + @maxhp_plus 是角色HP上限
[base_maxhp + @maxhp_plus, 1].max是在1和base_maxhp + @maxhp_plus中间取较大值
同理[[base_maxhp + @maxhp_plus, 1].max, 999999].min 就是在所取出的最大值与999999之间取较小值

这句其实就是给n赋值为base_maxhp + @maxhp_plus  只不过限定了大小在1~999999之间



[LINE]1,#dddddd[/LINE]系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
作者: eheroboy    时间: 2008-7-17 19:03
看過了LS的解答,完全理解了,原來是比較指令啊= =
作者: 荆芥    时间: 2008-7-17 19:11
说是比较指令不太准确 虽然过程是进行大小比较 但是给出的结果里是没有大小顺序的 只有最值 如果你在[].max里放3个数它只会把最大值找出来 其他两个数的大小比较是不会给出滴~

n = [[Integer(n), 1].max, 999999].min也是同样的意思
不过多了一个取整过程
Integer(n)是对之前所赋的n取整

作者: eheroboy    时间: 2008-7-17 19:28
因為RGSS太注重屬性系統的使用,我還不是怎么適應,這段整體的意思大概明白了,你幫我看看我這么理解對不對
首先取N並且給其規定一個1~999999的範圍,然後將N與屬性數據中每一個最大HP率比較,然後再對N取一次整,并確定一次其範圍,那么基本可以理解為:MAXHP=(BASE MAXHP+MAXHP_PLUS)*MAXHP調整比率
作者: 荆芥    时间: 2008-7-17 20:30
  for i in @states
     n *= $data_states.maxhp_rate / 100.0
   end
这个循环节泥~是附加状态属性的运算~
在数据库里是设定了某状态对HP上限的影响比率(状态下MAXHP是基本MAXHP的百分之多少)
在读取了此比率后乘在n上 就得到了战斗中角色该状态下的HP上限
因为进行了乘法运算可能出现小数点 所以就进行了取整 并再次限定范围




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1