Project1

标题: 物品种类限制数量(负重限制) [打印本页]

作者: westbugs    时间: 2008-7-2 22:07
标题: 物品种类限制数量(负重限制)
按物品种类限制数量的修改方法.

    例: 只许带四种药品的情况下,如负重限制
         
    药品 = {"小回复药","中回复药","大回复药","特大回复药"}
      
    组合任挑,限带三瓶.

    那以下的脚本可能帮得上.

注: 回应yangli2005的帖子

  1. #==============================================================================
  2. # 作者: westbugs
  3. #------------------------------------------------------------------------------
  4. #  回应yangli2005
  5. #
  6. #    按物品种类限制数量的修改方法.
  7. #    例: 只许带四种药品的情况下
  8. #          药品 = {"A","B","C","D"}
  9. #    组合任挑
  10. #==============================================================================

  11. class Game_Party < Game_Unit
  12.   

  13.   #--------------------------------------------------------------------------
  14.   # ● 增加物品(减少)
  15.   #     item          : 物品
  16.   #     n             : 个数
  17.   #     include_equip : 包括装备
  18.   #--------------------------------------------------------------------------
  19.   def gain_item(item, n, include_equip = false)
  20.     number = item_number(item)
  21.     case item
  22.     when RPG::Item  
  23.         @items[item.id] = [[number + n, 0].max, 99].min
  24.     when RPG::Weapon
  25.       @weapons[item.id] = [[number + n, 0].max, 99].min
  26.     when RPG::Armor
  27.       @armors[item.id] = [[number + n, 0].max, 99].min
  28.     end
  29.     n += number
  30.     if include_equip and n < 0
  31.       for actor in members
  32.         while n < 0 and actor.equips.include?(item)
  33.           actor.discard_equip(item)
  34.           n += 1
  35.         end
  36.       end
  37.     end



  38.     #插入处, 道具种类 = {"1","2","3","4"}        
  39.          temp = $game_party.item_no(1)  +     $game_party.item_no(2) +     $game_party.item_no(3) +     $game_party.item_no(4)
  40.     if temp >3
  41.       $game_party.lose_item(item,1)
  42.     end
  43.     #插入处, 道具种类 = {"1","2","3","4"}

  44.     end
  45. end

  46. class Game_Party < Game_Unit
  47. def item_no(n)
  48.    return item_number($data_items[n])
  49. end
  50. end
复制代码


改中间描述那一段就好了

作者: 越前リョーマ    时间: 2008-7-2 23:13
感觉用途不明确……
作者: westbugs    时间: 2008-7-2 23:49
恩, 其实是回应yangli2005的帖子.感觉上yangli2005的构想是如下:

角色最大负重是3KG,总共有四个瓶子,一个瓶子重1KG, 载满3瓶后就不能再拿多余的瓶子了.

只是KG换成药品, 武器和 素材.

如盗墓游戏里, 玩者只能拿三颗夜光珠, 六枚玛瑙石,否则被诅咒.

这构想蛮有趣, 虽然我的游戏暂时不会用到(所以之前都是废话{/ll}).
作者: 越前リョーマ    时间: 2008-7-2 23:53
那怎么不直接开发一个负重系统呢……
作者: westbugs    时间: 2008-7-3 00:35
写完, 测好后要更改. 感觉自由度太弱

  1. #==============================================================================
  2. # 作者: westbugs
  3. #------------------------------------------------------------------------------
  4. #  回应越前リョーマ
  5. #
  6. #    更改重量,预设值=10
  7. #==============================================================================

  8. class Game_Party < Game_Unit
  9.   #更改重量,预设值=10
  10.   def weight
  11.     return 10
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 增加物品(减少)
  15.   #     item          : 物品
  16.   #     n             : 个数
  17.   #     include_equip : 包括装备
  18.   #--------------------------------------------------------------------------
  19.   def gain_item(item, n, include_equip = false)
  20.     number = item_number(item)
  21.     case item
  22.     when RPG::Item  
  23.         @items[item.id] = [[number + n, 0].max, 99].min
  24.     when RPG::Weapon
  25.       @weapons[item.id] = [[number + n, 0].max, 99].min
  26.     when RPG::Armor
  27.       @armors[item.id] = [[number + n, 0].max, 99].min
  28.     end
  29.     n += number
  30.     if include_equip and n < 0
  31.       for actor in members
  32.         while n < 0 and actor.equips.include?(item)
  33.           actor.discard_equip(item)
  34.           n += 1
  35.         end
  36.       end
  37.     end

  38.     temp = 0
  39.     for i in 1..99
  40.          temp += $game_party.item_no(i)  
  41.     end
  42.     if temp >weight
  43.       $game_party.lose_item(item,1)
  44.     end

  45.     end
  46. end

  47. class Game_Party < Game_Unit
  48. def item_no(n)
  49.    return item_number($data_items[n])
  50. end
  51. end
复制代码

作者: 越前リョーマ    时间: 2008-7-3 02:34
……
话说负重系统应该是一个变量当作负重最大数值……
然后每个物品拥有一个重量吧……
作者: hide秀    时间: 2008-7-6 05:14
{/cy}每个物品一个重量~有意思

回头去写个负重系统XP版的~{/wx}




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