Project1

标题: command_window的写法问题 $data_classes出错? [打印本页]

作者: wangswz    时间: 2010-8-25 14:46
标题: command_window的写法问题 $data_classes出错?
本帖最后由 wangswz 于 2010-8-25 15:14 编辑

  1. com = []
  2.     for i in 1..$data_classes.size-1
  3.       com << $data_classes[$data_classes[i].id].name# if $data_classes[i].name != ""
  4.     end
  5.     @command_window = Window_Command.new(544, com, 6)
复制代码
为何 $data_classes.size 不减1 就会在最后多处一个重复职业?

哈希表.keys 在command_window 如何写?f1里说哈希表没有顺序 那么每次生成command_window是否都是重新打乱的?

。。表述有限 不吝赐教

作者: DeathKing    时间: 2010-8-25 15:36
$data_classes[$data_classes[ i ].id] 不明白。
还有,如果要有序的输出hash的话,有一个很容易想到的办法

  1. ary_sort = []
  2. a_hash = {}
  3. new_ary = []
  4. a_hash.each_key do |key|
  5.   ary_sort << key
  6. end
  7. ary_sort.sort!
  8. ary_sort.each do |e|
  9.   new_ary << a_hash[e]
  10. end
复制代码
很明显,把key取出来先排序{:nm_3:}
作者: wangswz    时间: 2010-8-25 15:49
$data_classes[ i ].name出错
$data_classes[ i ].id返回的是一个代码。。
$data_classes[$data_classes[ i ].id].name只有这样才能返回中文的名称
我也不清楚为什么会这样。。
作者: DeathKing    时间: 2010-8-25 16:21
回复 wangswz 的帖子


   p   $data_classes[ i ].id.class
作者: wangswz    时间: 2010-8-25 18:45
本帖最后由 wangswz 于 2010-8-25 19:20 编辑
DeathKing 发表于 2010-8-25 15:36
  1.   job = FSL::JOB::JOB_Default
  2.       job.each do |a, b|
  3.         case a
  4.         when "hp"
  5.           hplv = b
  6.         when "mp"
  7.           mplv = b
  8.         when "atk"
  9.           atklv = b
  10.         when "def"
  11.           deflv = b
  12.         when "spi"
  13.           spilv = b
  14.         when "agi"
  15.           agilv = b
  16.         end
  17.       end
复制代码
我想获取一个哈希表的值并赋值 这样写 draw_text时出错. 何解?

[line]1[/line]     
这是一段循环里的语句
数组的设置是
    #职业成长系数
    JOB_MAX = []
    #设置  hp,mp,atk,def,spi,agi
    JOB_MAX[1] = [13,3,5,7,9,4]
判断1号职业的角色include却返回false...
if FSL::JOB::JOB_MAX.include?(@actor.class_id)
        self.contents.draw_text(x+270, y, 100, WLH * i*2, FSL::JOB::JOB_MAX[@actor.class_id][i-1])
还有想问一下 FSL::JOB::JOB_MAX[@actor.class_id][i-1]引用数组元素有问题么?类似二维数组
作者: 小幽的马甲    时间: 2010-8-25 19:24
for i in 1..$data_classes.size-1
直接写成for i in 1...$data_classes.size吧
$data_classes[0]是nil
p $data_classes[1].name=>“勇者"为啥我可以……
哈希顺序真不知道……OI里的哈希数据结构是模一个大质数存放的,不知道Ruby是怎么建的= =
draw_text时发生什么错误?变量赋值了吗?
JOB_MAX到底是数组还是哈希啊= =
作者: wangswz    时间: 2010-8-25 19:29
本帖最后由 wangswz 于 2010-8-25 19:32 编辑

回复 小幽的马甲 的帖子
JOB_MAX[1] = [13,3,5,7,9,4]
这样的写法不行么...

之前用哈希表写的是返回未定义
换成数组又不会引用数组元素了..

越写越发现自己2的心碎..
[line]1[/line]
  1. $data_classes[1].name
复制代码
...
刚才试怎么又有用了...
作者: 小幽的马甲    时间: 2010-8-25 19:34
本帖最后由 小幽的马甲 于 2010-8-25 19:36 编辑

应该是unless FSL::JOB::JOB_MAX[@actor.class_id] == nil
include是对数组里的元素用的
a = []
a[1] = 2
p a.include?(1)#=>false
p a.include?(2)#=>true
作者: wangswz    时间: 2010-8-25 19:39
突然反映过来.... 真丢人..




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