Project1

标题: 自制的物品,判断个数的问题 [打印本页]

作者: hitlerson    时间: 2008-4-9 22:23
标题: 自制的物品,判断个数的问题
自制的一个背包用来放ITEM的,用$ITEMS 来保存
Marshal.dump($ITEMS, file)
$ITEMS = Marshal.load(file)
能正常的保存和读取数据

想实现的是,所带的物品一样不能超过三个,所以写了这样个脚本
  def same_san(item)
    zu = $ITEMS
    for i in 0...zu.size
      if item == zu
        for j in i+1...zu.size
          if item == zu[j]
            for k in j+1...zu.size
              if item == zu[k]
                return 3    #3个相同
              end
            end
            return 2    #2个相同
          end
        end
        return 1    #1个相同
      end
    end
    return 0    #0个相同
  end

每次往背包里放东西都判断
if $game_party.item_number(@alllist_window.item.id) - same_san(@alllist_window.item) > 0 and same_san(@alllist_window.item) != 3
也就是实际拥有数量大于背包里携带数量并且背包里数量不等于三的时候,才能执行向背包放东西。这段代码在不保存读取的时候能正常执行,但是保存在读取后,即使背包里有相同的三个ITEM,又还能在放入三个ITEM。
测试了下刚读取进度的时候,same_san的所有返回值都是 0
但是背包里物品都是正常显示的,也就是$ITEMS的值是能正常读取的,不为空
帮忙分析下,是什么原因???? [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 精灵使者    时间: 2008-4-9 22:28
自我屏蔽之……
作者: wy29    时间: 2008-4-9 22:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: hitlerson    时间: 2008-4-9 22:41
咋处理来?不懂了
我是学着柳柳的那个音量控制的脚本存数据的。
也是初始化$BGM
然后在SAVE和LOAD里加 Marshal.dump($BGM, file)和$BGM = Marshal.load(file)
好象也没什么别的处理啊?
请教
作者: 精灵使者    时间: 2008-4-9 23:23
理解错了,先自我屏蔽一下……
看来你知道怎么储存$ITEM的了。
循环看着似乎很麻烦,那是个数组么?
我建议你使用p检查一下里面的中间值,看看是否有什么改变。如果有改变,请把中间值也储存起来。
@alllist_window.item

@alllist_window.item.id
你检查一下那个是否有异常。
你的这个算法似乎是正确的。 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 沉影不器    时间: 2008-4-10 00:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: hitlerson    时间: 2008-4-10 02:29
对,是个数组
当我第一次往背包里放3个物品之后,能正确的判断已经有三个了,不能在放了.
按B键退出后,再进去页面,也是正常的
但是惟独保存\读档后,再进到这个页面,same_san的返回就变成0了,又能再放三个物品进去

作者: 精灵使者    时间: 2008-4-10 04:51
那就是某些变量没有保存下来罗?
你放完以后,检查一下各自变量的情况,还有读档以后的变量情况。
没有保存的变量读档以后返回0
作者: 沉影不器    时间: 2008-4-10 05:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: 沉影不器    时间: 2008-4-10 05:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-4-10 07:25
以下引用沉影不器于2008-4-9 21:11:13的发言:

这种情况为啥不用哈希而用数组
哈希:
$ITEMS = {物品1=>背包中物品1的数量, 物品2=>背包中物品2的数量,...}

直接判断:$ITEMS[物品1] < 3 ?
省得三层嵌套

您说的读档后就还原,应该还是$ITEMS未保存或未读取

但是背包里物品都是正常显示的,也就是$ITEMS的值是能正常读取的,不为空
这里的值是正常的耶……估计还有变量没有保存吧。
作者: hitlerson    时间: 2008-4-16 16:52
吼吼 问题还是解决了

原来每次保存后的@alllist_window.item值都不一样的,是什么#RPG::item0x324781 ...之类的




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