Project1

标题: 求武器等级脚本,有上限的那种 [打印本页]

作者: 峰星    时间: 2011-1-29 23:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: predecessor    时间: 2011-1-29 23:24
回复 峰星 的帖子
  1. module RPG
  2. class Weapon
  3.   def level
  4.    return 1 if @description.split(/★/)[1] == nil
  5.    return @description.split(/★/)[1]
  6. end
  7.   def description      
  8.     return @description.split(/★/)[0] == nil ? "" : @description.split(/★/)[0]
  9.   end
  10. end
  11. class Armor
  12.   def level
  13.    return 1 if @description.split(/★/)[1] == nil
  14.    return @description.split(/★/)[1]
  15.   end
  16.   def description      
  17.     return @description.split(/★/)[0] == nil ? "" : @description.split(/★/)[0]
  18.   end
  19. end
  20. end



  21. class Game_Actor < Game_Battler
  22. #--------------------------------------------------------------------------
  23. # ● 可以装备判定
  24. #     item : 物品
  25. #--------------------------------------------------------------------------
  26. def equipable?(item)
  27.   
  28. # 武器的情况
  29. if item.is_a?(RPG::Weapon)
  30.    # 包含当前的职业可以装备武器的场合
  31.    if $data_classes[@class_id].weapon_set.include?(item.id) and item.level.to_i<=@level
  32.      return true
  33.    end
  34. end
  35. # 防具的情况
  36. if item.is_a?(RPG::Armor)
  37.    # 不包含当前的职业可以装备武器的场合
  38.    if $data_classes[@class_id].armor_set.include?(item.id)  and item.level.to_i<=@level
  39.      return true
  40.    end
  41. end
  42. return false
  43. end
  44. end
  45. #==============================================================================
  46. # ■ Window_EquipItem
  47. #------------------------------------------------------------------------------
  48. #  装备画面、显示浏览变更装备的候补物品的窗口。
  49. #==============================================================================

  50. class Window_EquipItem < Window_Selectable
  51. #--------------------------------------------------------------------------
  52. # ● 刷新
  53. #--------------------------------------------------------------------------
  54. def refresh
  55.   if self.contents != nil
  56.     self.contents.dispose
  57.     self.contents = nil
  58.   end
  59.   @data = []
  60.   # 添加可以装备的武器
  61.   if @equip_type == 0
  62.     weapon_set = $data_classes[@actor.class_id].weapon_set
  63.     for i in 1...$data_weapons.size
  64.       if $game_party.weapon_number(i) > 0 and weapon_set.include?(i) and @actor.equipable?($data_weapons[i])
  65.         @data.push($data_weapons[i])
  66.       end
  67.     end
  68.   end
  69.   # 添加可以装备的防具
  70.   if @equip_type != 0
  71.     armor_set = $data_classes[@actor.class_id].armor_set
  72.     for i in 1...$data_armors.size
  73.       if $game_party.armor_number(i) > 0 and armor_set.include?(i) and @actor.equipable?($data_armors[i])
  74.         if $data_armors[i].kind == @equip_type-1
  75.           @data.push($data_armors[i])
  76.         end
  77.       end
  78.     end
  79.   end
  80.   # 添加空白
  81.   @data.push(nil)
  82.   # 生成位图、描绘全部项目
  83.   @item_max = @data.size
  84.   self.contents = Bitmap.new(width - 32, row_max * 32)
  85.   for i in 0...@item_max-1
  86.     draw_item(i)
  87.   end
  88. end
  89. end  
复制代码
具体是哪位大虾的代码记不清了,使用方法是在main前插入复制脚本,再在装备说明栏中最后加:比如“★10”代表10级可装备
作者: 峰星    时间: 2011-1-30 13:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: 949801120    时间: 2011-2-1 18:51
很好用,3Q
作者: OWOWOW    时间: 2011-2-1 20:01
2L答非所问吧
LZ指的是装备的效果有波动,即有偏差。
-----------------------
但是这样就很不好了,
比如没有脚本之前,你有2把铁剑,同时占背包一个位置,标注为“铁剑×2”
而有脚本后,每个装备都要单独占一个背包的位置,铁剑的标注方法就变成了“铁剑×1”和“铁剑×1”
而且这种脚本根本没有什么实用性嘛,这种小幅波动有什么使用的价值?没意义啊!
作者: 忧雪の伤    时间: 2011-2-2 15:41
有个脚本叫做武器攻击力波动
  1. class Game_Party

  2. def gain_weapon(weapon_id, n)
  3.    if weapon_id > 0
  4.      # 商店购买 或 装备栏中卸下的武器不进行随机处理~
  5.      if $scene.is_a?(Scene_Shop) or $scene.is_a?(Scene_Equip)
  6.        @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  7.      else
  8.        # 随机浮动范围~★★★★★★★
  9.        add_atk = rand(50)-25
  10.        if add_atk == 0
  11.          @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  12.        else
  13.          now = 0
  14.          # 判断数据库中是否已经有 相同属性的武器~
  15.          for i in weapon_id...$data_weapons.size
  16.            if $data_weapons[i].atk == $data_weapons[weapon_id].atk+add_atk and
  17.             ($data_weapons[i].name.split('+')[0] == $data_weapons[weapon_id].name or $data_weapons[i].name.split('-')[0] == $data_weapons[weapon_id].name)
  18.              now = i
  19.              break
  20.            end         end
  21.          if now == 0
  22.            # 无相同属性时则 重新生成~
  23.            new_weapon = $data_weapons[weapon_id].clone
  24.            new_weapon.id = $data_weapons.size
  25.            if add_atk<0
  26.              new_weapon.name = $data_weapons[weapon_id].name+"-"+add_atk.abs.to_s
  27.            else
  28.              new_weapon.name = $data_weapons[weapon_id].name+"+"+add_atk.abs.to_s
  29.            end
  30.            new_weapon.atk = $data_weapons[weapon_id].atk+add_atk
  31.            $data_weapons.push(new_weapon)
  32.            # 职业可装备武器数组更新~
  33.            for i in 1...$data_classes.size
  34.              if $data_classes[i].weapon_set.include?(weapon_id)
  35.                $data_classes[i].weapon_set.push(new_weapon.id)
  36.              end
  37.            end
  38.            # 增加武器~
  39.            @weapons[new_weapon.id] = [[weapon_number(new_weapon.id) + n, 0].max, 99].min
  40.          else
  41.            # 有相同属性则直接 增加武器~
  42.            @weapons[now] = [[weapon_number(now) + n, 0].max, 99].min
  43.          end
  44.        end
  45.      end
  46.    end
  47. end

  48. def lose_weapon(weapon_id, n)   
  49.    if weapon_id > 0
  50.      @weapons[weapon_id] = [[weapon_number(weapon_id) - n, 0].max, 99].min
  51.    end
  52. end

  53. end
复制代码





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