设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1804|回复: 1
打印 上一主题 下一主题

发现测试版脚本错误一处,特此上报

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
239
在线时间
2399 小时
注册时间
2008-4-11
帖子
12326

贵宾第6届短篇游戏比赛季军

跳转到指定楼层
1
发表于 2009-6-4 06:34:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
沉影的复杂装备系列的《打孔镶嵌》篇

脚本的332行处

    ## 绑定角色id
    last_item.actor_id = nil
    return if item.nil?
    item.actor_id = self.id### if item.actor_id.nil?
  end
end


nil解除装备时会弹窗。
所以用这个脚本的朋友会无法解除装备,如果装备那处是空的,则不能再装备其它

以下是部分脚本

  1. #==============================================================================
  2. # 复杂装备系统(2)打孔镶嵌 by 沉影不器
  3. #==============================================================================
  4. module Game_Equip
  5.   
  6.   ## 装备升级参数
  7.   ## 能力升级基数(倍数)
  8.   BaseAbility = 0.2
  9.   ## 每级价格提高基数(倍数)
  10.   BasePrice = 0.3
  11.   ## 是否保证成功
  12.   UpGrade_Absoluteness = false
  13.   ## 每级成功率基数(百分比倍数,用于逐级下降)
  14.   BaseSucceed = 80
  15.   ## 最大等级
  16.   MaxLevel = 10
  17.   ## 需金钱基数(与本身价格的倍数)
  18.   GoldNeed = 0.8
  19.   ## 需物品id => 数量
  20.   ItemsNeed = {21=>1, 22=>2}
  21.   
  22.   
  23.   
  24.   ## 打孔价格
  25.   SocketPrice = 1000
  26.   SocketItems = {21=>1}
  27.   
  28.   #--------------------------------------------------------------------------
  29.   # ● 装备重生
  30.   #    equip:  装备
  31.   #--------------------------------------------------------------------------
  32.   def self.reini(equip, sockets_num = 0)
  33.     return if equip.nil?
  34.     result = Marshal.load(Marshal.dump(equip))
  35.     result.base_id = equip.id
  36.     ######result.sockets = []
  37.     sockets_num.times{result.sockets_add}
  38.     case result
  39.     when RPG::Weapon
  40.       result.id = $data_weapons.size
  41.       $data_weapons.push result
  42.     when RPG::Armor
  43.       result.id = $data_armors.size
  44.       $data_armors.push result
  45.     end
  46.     return result
  47.   end  
  48. end

  49. module RPG
  50.   class BaseItem
  51.     def initialize
  52.       @id = 0
  53.       @name = ""
  54.       @icon_index = 0
  55.       @description = ""
  56.       @note = ""
  57.       @base_id = 0
  58.     end
  59.     attr_accessor :id
  60.     attr_accessor :name
  61.     attr_accessor :icon_index
  62.     attr_accessor :description
  63.     attr_accessor :note
  64.     attr_accessor :base_id
  65.   end
  66. end

  67. module RPG
  68.   class Item < UsableItem
  69.     def gem?
  70.       return read_note('gem').to_i > 0
  71.     end
  72.     def socket_gem?
  73.       return read_note('gem').to_i == 1
  74.     end
  75.   end
  76. end

  77. module RPG
  78.   class Weapon < BaseItem
  79.     ## 母版id
  80.     attr_accessor :base_id
  81.     ## 角色id
  82.     attr_reader :actor_id
  83.     ## 孔集合(Array)
  84.     attr_accessor :sockets

  85.    
  86.     def sockets_max
  87.       return read_note('sockets').to_i
  88.     end
  89.    
  90.     def sockets_num
  91.       return 0 if @sockets.nil?
  92.       return @sockets.size
  93.     end
  94.    
  95.     def sockets_add
  96.       @sockets = [] unless @sockets
  97.       if sockets_num < sockets_max
  98.         @sockets.push 0
  99.         @name += "[O]"
  100.       end
  101.     end
  102.    
  103.     def sockets_use(item_id)
  104.       return false unless @sockets
  105.       for i in [email protected]
  106.         if @sockets[i] == 0
  107.           @sockets[i] = item_id
  108.           @name.sub!(/\[O\]/) {"[#{$data_items[item_id].name}]"}
  109.           return true
  110.         end
  111.       end
  112.       return false
  113.     end
  114.    
  115.     def actor_id=(id)
  116.       @actor_id = id
  117.       ## 处理能力变化
  118.       parameter_change
  119.     end
  120.    
  121.     def parameter_change
  122.       @atk = $data_weapons[@base_id].atk
  123.       @def = $data_weapons[@base_id].def
  124.       @spi = $data_weapons[@base_id].spi
  125.       @agi = $data_weapons[@base_id].agi
  126.       @hp_max = 0
  127.       @mp_max = 0
  128.       return unless @sockets
  129.       for id in @sockets
  130.         next if id == 0
  131.         next if actor_id.nil?
  132.         g = Game_Gem.new(id)
  133.         a = $game_actors[actor_id.to_i]
  134.         @atk += g.atk
  135.         @def += g.def
  136.         @spi += g.spi
  137.         @agi += g.agi
  138.         @hp_max += g.hp_max + a.base_maxhp * g.hp_rate / 100
  139.         @mp_max += g.mp_max + a.base_maxmp * g.mp_rate / 100
  140.       end
  141.     end
  142.    
  143.     def hp_max
  144.       return @hp_max.to_i
  145.     end
  146.    
  147.     def mp_max
  148.       return @mp_max.to_i
  149.     end
  150.    
  151.   end
  152. end

  153. module RPG
  154.   class Armor < BaseItem
  155.     ## 母版id
  156.     attr_accessor :base_id
  157.     ## 角色id
  158.     attr_reader :actor_id
  159.     ## 孔集合(Array)
  160.     attr_accessor :sockets


  161.     def sockets_max
  162.       return read_note('sockets').to_i
  163.     end
  164.    
  165.     def sockets_num
  166.       return 0 if @sockets.nil?
  167.       return @sockets.size
  168.     end
  169.    
  170.     def sockets_add
  171.       @sockets = [] unless @sockets
  172.       if sockets_num < sockets_max
  173.         @sockets.push 0
  174.         @name += "[O]"
  175.       end
  176.     end
  177.    
  178.     def sockets_use(item_id)
  179.       return false unless @sockets
  180.       for i in [email protected]
  181.         if @sockets[i] == 0
  182.           @sockets[i] = item_id
  183.           @name.sub!(/\[O\]/) {"[#{$data_items[item_id].name}]"}
  184.           return true
  185.         end
  186.       end
  187.       return false
  188.     end
  189.    
  190.     def actor_id=(id)
  191.       @actor_id = id
  192.       ## 处理能力变化
  193.       parameter_change
  194.     end
  195.    
  196.     def parameter_change
  197.       @atk = $data_armors[@base_id].atk
  198.       @def = $data_armors[@base_id].def
  199.       @spi = $data_armors[@base_id].spi
  200.       @agi = $data_armors[@base_id].agi
  201.       @hp_max = 0
  202.       @mp_max = 0
  203.       return unless @sockets
  204.       for id in @sockets
  205.         next if id == 0
  206.         next if actor_id.nil?
  207.         g = Game_Gem.new(id)
  208.         a = $game_actors[actor_id.to_i]
  209.         @atk += g.atk
  210.         @def += g.def
  211.         @spi += g.spi
  212.         @agi += g.agi
  213.         @hp_max += g.hp_max + a.base_maxhp * g.hp_rate / 100
  214.         @mp_max += g.mp_max + a.base_maxmp * g.mp_rate / 100
  215.       end
  216.     end
  217.    
  218.     def hp_max
  219.       return @hp_max.to_i
  220.     end
  221.    
  222.     def mp_max
  223.       return @mp_max.to_i
  224.     end
  225.    
  226.   end
  227. end

  228. #==============================================================================
  229. # ■ Game_Gem
  230. #==============================================================================
  231. class Game_Gem
  232.   attr_reader :hp_rate
  233.   attr_reader :mp_rate
  234.   attr_reader :hp_max
  235.   attr_reader :mp_max
  236.   attr_reader :atk
  237.   attr_reader :def
  238.   attr_reader :spi
  239.   attr_reader :agi
  240.   #--------------------------------------------------------------------------
  241.   # ● 初始化
  242.   #--------------------------------------------------------------------------
  243.   def initialize(item_id)
  244.     item = $data_items[item_id]
  245.     @hp_rate = item.hp_recovery_rate
  246.     @mp_rate = item.mp_recovery_rate
  247.     @hp_max = item.hp_recovery
  248.     @mp_max = item.mp_recovery
  249.     @atk = 0
  250.     @def = 0
  251.     @spi = 0
  252.     @agi = 0
  253.     n = item.parameter_points
  254.     case item.parameter_type
  255.     when 1 #HP上限
  256.       @hp_max += n
  257.     when 2 #MP上限
  258.       @mp_max += n
  259.     when 3 #攻击力
  260.       @atk = n
  261.     when 4 #防御力
  262.       @def = n
  263.     when 5 #精神
  264.       @spi = n
  265.     when 6 #敏捷
  266.       @agi = n
  267.     end
  268.   end
  269. end

  270. #==============================================================================
  271. # ■ Game_Actor
  272. #==============================================================================
  273. class Game_Actor < Game_Battler
  274.   #--------------------------------------------------------------------------
  275.   # ● 基本 MaxHP の取得
  276.   #--------------------------------------------------------------------------
  277.   def base_maxhp
  278.     n = actor.parameters[0, @level]
  279.     for item in equips.compact do n += item.hp_max end
  280.     return n
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ● 获取基本 MaxHP
  284.   #--------------------------------------------------------------------------
  285.   def base_maxmp
  286.     n = actor.parameters[1, @level]
  287.     for item in equips.compact do n += item.mp_max end
  288.     return n
  289.   end
  290.   #--------------------------------------------------------------------------
  291.   # ● 更改装备 (指定对象)
  292.   #     equip_type : 装备部位 (0..4)
  293.   #     item       : 武器 or 防具 (nil 为解除装备)
  294.   #     test       : 测试标志 (战斗测试、以及装备画面的临时装备)
  295.   #--------------------------------------------------------------------------
  296.   def change_equip(equip_type, item, test = false)
  297.     last_item = equips[equip_type]
  298.     unless test
  299.       return if $game_party.item_number(item) == 0 if item != nil
  300.       $game_party.gain_item(last_item, 1)
  301.       $game_party.lose_item(item, 1)
  302.     end
  303.     item_id = item == nil ? 0 : item.id
  304.     case equip_type
  305.     when 0  # 武器
  306.       @weapon_id = item_id
  307.       unless two_hands_legal?             # 违反双手拿取的情况下
  308.         change_equip(1, nil, test)        # 解除反手的装备
  309.       end
  310.     when 1  # 盾
  311.       @armor1_id = item_id
  312.       unless two_hands_legal?             # 违反双手拿取的情况下
  313.         change_equip(0, nil, test)        # 解除反手的装备
  314.       end
  315.     when 2  # 头
  316.       @armor2_id = item_id
  317.     when 3  # 身体
  318.       @armor3_id = item_id
  319.     when 4  # 装饰品
  320.       @armor4_id = item_id
  321.     end
  322.     ## 绑定角色id
  323.     last_item.actor_id = nil
  324.     return if item.nil?
  325.     item.actor_id = self.id### if item.actor_id.nil?
  326.   end
  327. end

  328. #==============================================================================
  329. # ■ Game_Actor
  330. #==============================================================================
  331. class Game_Actor < Game_Battler
  332.   #--------------------------------------------------------------------------
  333.   # ● 初始化对象
  334.   #     actor_id : 角色 ID
  335.   #--------------------------------------------------------------------------
  336.   def initialize(actor_id)
  337.     super()
  338.     setup(actor_id)
  339.     @last_skill_id = 0
  340.   end
  341.   #--------------------------------------------------------------------------
  342.   # ● 设置
  343.   #     actor_id : 角色 ID
  344.   #--------------------------------------------------------------------------
  345.   def setup(actor_id)
  346.     actor = $data_actors[actor_id]
  347.     @actor_id = actor_id
  348.     @name = actor.name
  349.     @character_name = actor.character_name
  350.     @character_index = actor.character_index
  351.     @face_name = actor.face_name
  352.     @face_index = actor.face_index
  353.     @class_id = actor.class_id
  354.     @weapon_id = actor.weapon_id
  355.     @armor1_id = actor.armor1_id
  356.     @armor2_id = actor.armor2_id
  357.     @armor3_id = actor.armor3_id
  358.     @armor4_id = actor.armor4_id
  359.     @level = actor.initial_level
  360.     @exp_list = Array.new(101)
  361.     make_exp_list
  362.     @exp = @exp_list[@level]
  363.     @skills = []
  364.     for i in self.class.learnings
  365.       learn_skill(i.skill_id) if i.level <= @level
  366.     end
  367.     clear_extra_values
  368.     recover_all
  369.     ## 生成新装备id
  370.     reset_equip_id
  371.   end
  372.   
  373.   #--------------------------------------------------------------------------
  374.   # ● 装备重设
  375.   #--------------------------------------------------------------------------
  376.   def reset_equip_id
  377.     if @weapon_id != 0
  378.       item = Game_Equip.reini($base_weapons[@weapon_id])
  379.       unless item.nil?
  380.         $data_weapons.push item
  381.         @weapon_id = item.id
  382.       end
  383.     end
  384.     if @armor1_id != 0
  385.       if two_swords_style####two_hands_legal?
  386.         item = Game_Equip.reini($base_weapons[@armor1_id])
  387.         unless item.nil?
  388.           $data_weapons.push item
  389.           @armor1_id = item.id
  390.         end
  391.       else
  392.         item = Game_Equip.reini($base_armors[@armor1_id])
  393.         unless item.nil?
  394.           $data_armors.push item
  395.           @armor1_id = item.id
  396.         end
  397.       end
  398.     end
  399.     if @armor2_id != 0
  400.       item = $base_armors[@armor2_id]
  401.       unless item.nil?
  402.         item = Game_Equip.reini(item)
  403.         $data_armors.push item
  404.         @armor2_id = item.id
  405.       end
  406.     end
  407.     if @armor3_id != 0
  408.       item = $base_armors[@armor3_id]
  409.       unless item.nil?
  410.         item = Game_Equip.reini(item)
  411.         $data_armors.push item
  412.         @armor3_id = item.id
  413.       end
  414.     end
  415.     if @armor4_id != 0
  416.       item = $base_armors[@armor4_id]
  417.       unless item.nil?
  418.         item = Game_Equip.reini(item)
  419.         $data_armors.push item
  420.         @armor4_id = item.id
  421.       end
  422.     end
  423.   end
  424.   
  425.   #--------------------------------------------------------------------------
  426.   # ● 判断是否可以装备
  427.   #     item : 物品
  428.   #     base : 是否读取母版数据
  429.   #--------------------------------------------------------------------------
  430.   def equippable?(item, base = true)
  431.     id = base ? item.base_id : item.id
  432.     if item.is_a?(RPG::Weapon)
  433.       return self.class.weapon_set.include?(id)
  434.     elsif item.is_a?(RPG::Armor)
  435.       return false if two_swords_style and item.kind == 0
  436.       return self.class.armor_set.include?(id)
  437.     end
  438.     return false
  439.   end
  440. end

  441. #==============================================================================
  442. # ■ Game_Party
  443. #==============================================================================
  444. class Game_Party < Game_Unit
  445.   #--------------------------------------------------------------------------
  446.   # ● 判断持有的物品(依据base_id)
  447.   #     item          : 物品
  448.   #     include_equip : 包括装备品
  449.   #--------------------------------------------------------------------------
  450.   def has_item_by_base_id?(item, include_equip = false)
  451.     for i in items
  452.       return true if i.base_id == item.id
  453.     end
  454.     if include_equip
  455.       for actor in members
  456.         for e in actor.equips
  457.           return true if e.base_id == item.id
  458.         end
  459.       end
  460.     end
  461.     return false
  462.   end
  463.   #--------------------------------------------------------------------------
  464.   # ● 获得物品
  465.   #     item          : 物品
  466.   #     n             : 个数
  467.   #--------------------------------------------------------------------------
  468.   def gain_reini_item(item, n, include_equip = false)
  469.     if n < 0
  470.       lose_item(item, -n, include_equip = false)
  471.     else
  472.       case item
  473.       when RPG::Item
  474.         number = item_number(item)
  475.         @items[item.id] = [[number + n, 0].max, 99].min
  476.       when RPG::Weapon
  477.         for i in 0...n
  478.           w = Game_Equip.reini(item)
  479.           @weapons[w.id] = 1
  480.         end
  481.       when RPG::Armor
  482.         for i in 0...n
  483.           a = Game_Equip.reini(item)
  484.           @armors[a.id] = 1
  485.         end
  486.       end
  487.     end
  488.   end
  489.   #--------------------------------------------------------------------------
  490.   # ● 减少物品 (减少)
  491.   #     item          : 物品
  492.   #     n             : 个数
  493.   #     include_equip : 包括装备品
  494.   #--------------------------------------------------------------------------
  495.   def lose_reini_item(item, n, include_equip = false)
  496.     number = item_number(item)
  497.     case item
  498.     when RPG::Item
  499.       @items[item.id] = [[number - n, 0].max, 99].min
  500.     when RPG::Weapon
  501.       @weapons[item.id] = [[number - n, 0].max, 99].min
  502.     when RPG::Armor
  503.       @armors[item.id] = [[number - n, 0].max, 99].min
  504.     end
  505.     n -= number
  506.     if include_equip and n > 0
  507.       for actor in members
  508.         while n > 0 and actor.equips.include?(item)
  509.           actor.discard_equip(item)
  510.           n -= 1
  511.         end
  512.       end
  513.     end
  514.   end
  515. end

  516. #==============================================================================
  517. # ■ Game_Troop
  518. #==============================================================================
  519. class Game_Troop < Game_Unit
  520.   #--------------------------------------------------------------------------
  521.   # ● 敌人角色名称后的文字表
  522.   #--------------------------------------------------------------------------
  523.   LETTER_TABLE = [ 'A','B','C','D','E','F','G','H','I','J',
  524.                    'K','L','M','N','O','P','Q','R','S','T',
  525.                    'U','V','W','X','Y','Z']
  526.   #--------------------------------------------------------------------------
  527.   # ● 生成掉落物品队列
  528.   #--------------------------------------------------------------------------
  529.   def make_drop_items
  530.     drop_items = []
  531.     for enemy in dead_members
  532.       for di in [enemy.drop_item1, enemy.drop_item2]
  533.         next if di.kind == 0
  534.         next if rand(di.denominator) != 0
  535.         if di.kind == 1
  536.           drop_items.push($data_items[di.item_id])
  537.         elsif di.kind == 2
  538.           drop_items.push($base_weapons[di.weapon_id])
  539.         elsif di.kind == 3
  540.           drop_items.push($base_armors[di.armor_id])
  541.         end
  542.       end
  543.     end
  544.     return drop_items
  545.   end
  546. end

  547. #==============================================================================
  548. # ■ Game_Interpreter
  549. #==============================================================================
  550. class Game_Interpreter
  551.   #--------------------------------------------------------------------------
  552.   # ● 计算操作的值
  553.   #     operation    : 操作 (0:增加 1:减少)
  554.   #     operand_type : 运算域类型 (0:常量 1:变量)
  555.   #     operand      : 运算域 (数值为变量 ID)
  556.   #--------------------------------------------------------------------------
  557.   def operate_value(operation, operand_type, operand)
  558.     if operand_type == 0
  559.       value = operand
  560.     else
  561.       value = $game_variables[operand]
  562.     end
  563.     if operation == 1
  564.       value = -value
  565.     end
  566.     return value
  567.   end
  568.   #--------------------------------------------------------------------------
  569.   # ● 条件分歧
  570.   #--------------------------------------------------------------------------
  571.   def command_111
  572.     result = false
  573.     case @params[0]
  574.     when 0  # 开关
  575.       result = ($game_switches[@params[1]] == (@params[2] == 0))
  576.     when 1  # 变量
  577.       value1 = $game_variables[@params[1]]
  578.       if @params[2] == 0
  579.         value2 = @params[3]
  580.       else
  581.         value2 = $game_variables[@params[3]]
  582.       end
  583.       case @params[4]
  584.       when 0  # 相等
  585.         result = (value1 == value2)
  586.       when 1  # 大于等于
  587.         result = (value1 >= value2)
  588.       when 2  # 小于等于
  589.         result = (value1 <= value2)
  590.       when 3  # 大于
  591.         result = (value1 > value2)
  592.       when 4  # 小于
  593.         result = (value1 < value2)
  594.       when 5  # 不等于
  595.         result = (value1 != value2)
  596.       end
  597.     when 2  # 自我开关
  598.       if @original_event_id > 0
  599.         key = [@map_id, @original_event_id, @params[1]]
  600.         if @params[2] == 0
  601.           result = ($game_self_switches[key] == true)
  602.         else
  603.           result = ($game_self_switches[key] != true)
  604.         end
  605.       end
  606.     when 3  # 计时器
  607.       if $game_system.timer_working
  608.         sec = $game_system.timer / Graphics.frame_rate
  609.         if @params[2] == 0
  610.           result = (sec >= @params[1])
  611.         else
  612.           result = (sec <= @params[1])
  613.         end
  614.       end
  615.     when 4  # 角色
  616.       actor = $game_actors[@params[1]]
  617.       if actor != nil
  618.         case @params[2]
  619.         when 0  # 是同伴
  620.           result = ($game_party.members.include?(actor))
  621.         when 1  # 姓名
  622.           result = (actor.name == @params[3])
  623.         when 2  # 特技
  624.           result = (actor.skill_learn?($data_skills[@params[3]]))
  625.         when 3  # 武器
  626.           ## 判断是否符合母版id
  627.           actor.weapons.each do |weapon|
  628.             if weapon.base_id == @params[3]
  629.               result = true
  630.               break
  631.             end
  632.           end
  633.         when 4  # 防具
  634.           ## 判断是否符合母版id
  635.           actor.armors.each do |armor|
  636.             if armor.base_id == @params[3]
  637.               result = true
  638.               break
  639.             end
  640.           end
  641.         when 5  # 状态
  642.           result = (actor.state?(@params[3]))
  643.         end
  644.       end
  645.     when 5  # 敌方角色
  646.       enemy = $game_troop.members[@params[1]]
  647.       if enemy != nil
  648.         case @params[2]
  649.         when 0  # 出现
  650.           result = (enemy.exist?)
  651.         when 1  # 状态
  652.           result = (enemy.state?(@params[3]))
  653.         end
  654.       end
  655.     when 6  # 角色
  656.       character = get_character(@params[1])
  657.       if character != nil
  658.         result = (character.direction == @params[2])
  659.       end
  660.     when 7  # 金钱
  661.       if @params[2] == 0
  662.         result = ($game_party.gold >= @params[1])
  663.       else
  664.         result = ($game_party.gold <= @params[1])
  665.       end
  666.     when 8  # 物品
  667.       result = $game_party.has_item?($data_items[@params[1]])
  668.     when 9  # 武器
  669.       result = $game_party.has_item_by_base_id?($base_weapons[@params[1]], @params[2])
  670.     when 10  # 防具
  671.       result = $game_party.has_item_by_base_id?($base_armors[@params[1]], @params[2])
  672.     when 11  # 按钮
  673.       result = Input.press?(@params[1])
  674.     when 12  # 脚本
  675.       result = eval(@params[1])
  676.     when 13  # 交通工具
  677.       result = ($game_player.vehicle_type == @params[1])
  678.     end
  679.     @branch[@indent] = result     # 将判断结果放置在缓存中
  680.     if @branch[@indent] == true
  681.       @branch.delete(@indent)
  682.       return true
  683.     end
  684.     return command_skip
  685.   end
  686.   
  687.   
  688.   #--------------------------------------------------------------------------
  689.   # ● 计算装备操作的值
  690.   #     operand_type : 运算域类型 (0:常量 1:变量)
  691.   #     operand      : 运算域 (数值为变量 ID)
  692.   #--------------------------------------------------------------------------
  693.   def opera_equip_value(operation, operand_type, operand)
  694.     if operand_type == 0
  695.       value = operand
  696.     else
  697.       value = $game_variables[operand]
  698.     end
  699.     return value
  700.   end
  701.   #--------------------------------------------------------------------------
  702.   # ● 增减武器
  703.   #--------------------------------------------------------------------------
  704.   def command_127
  705.     value = operate_value(@params[1], @params[2], @params[3])
  706.     if @params[1] == 0
  707.       $game_party.gain_reini_item($base_weapons[@params[0]], value.abs, @params[4])
  708.     else
  709.       $game_party.lose_reini_item($base_weapons[@params[0]], value.abs, @params[4])
  710.     end
  711.     return true
  712.   end
  713.   #--------------------------------------------------------------------------
  714.   # ● 增减防具
  715.   #--------------------------------------------------------------------------
  716.   def command_128
  717.     value = operate_value(@params[1], @params[2], @params[3])
  718.     if @params[1] == 0
  719.       $game_party.gain_reini_item($base_armors[@params[0]], value.abs, @params[4])
  720.     else
  721.       $game_party.lose_reini_item($base_armors[@params[0]], value.abs, @params[4])
  722.     end
  723.     return true
  724.   end
  725.   #--------------------------------------------------------------------------
  726.   # ● 更改装备
  727.   #--------------------------------------------------------------------------
  728.   def command_319
  729.     actor = $game_actors[@params[0]]
  730.     if actor != nil
  731.       actor.change_equip_by_id(@params[1], @params[2])
  732.     end
  733.     return true
  734.   end
  735. end

  736. #==============================================================================
  737. # ■ Window_ShopBuy
  738. #==============================================================================
  739. class Window_ShopBuy < Window_Selectable
  740.   #--------------------------------------------------------------------------
  741.   # ● 刷新
  742.   #--------------------------------------------------------------------------
  743.   def refresh
  744.     @data = []
  745.     for goods_item in @shop_goods
  746.       case goods_item[0]
  747.       when 0
  748.         item = $base_items[goods_item[1]]
  749.       when 1
  750.         item = $base_weapons[goods_item[1]]
  751.       when 2
  752.         item = $base_armors[goods_item[1]]
  753.       end
  754.       if item != nil
  755.         @data.push(item)
  756.       end
  757.     end
  758.     @item_max = @data.size
  759.     create_contents
  760.     for i in 0...@item_max
  761.       draw_item(i)
  762.     end
  763.   end
  764. end

  765. #==============================================================================
  766. # ■ Window_ShopStatus
  767. #==============================================================================
  768. class Window_ShopStatus < Window_Base
  769.   #--------------------------------------------------------------------------
  770.   # ● 描绘角色现在装备的能力值变化
  771.   #     actor : 角色
  772.   #     x     : 描画目标 X 坐标
  773.   #     y     : 描画目标 Y 坐标
  774.   #--------------------------------------------------------------------------
  775.   def draw_actor_parameter_change(actor, x, y)
  776.     return if @item.is_a?(RPG::Item)
  777.     enabled = actor.equippable?(@item, false)
  778.     self.contents.font.color = normal_color
  779.     self.contents.font.color.alpha = enabled ? 255 : 128
  780.     self.contents.draw_text(x, y, 200, WLH, actor.name)
  781.     if @item.is_a?(RPG::Weapon)
  782.       item1 = weaker_weapon(actor)
  783.     elsif actor.two_swords_style and @item.kind == 0
  784.       item1 = nil
  785.     else
  786.       item1 = actor.equips[1 + @item.kind]
  787.     end
  788.     if enabled
  789.       if @item.is_a?(RPG::Weapon)
  790.         atk1 = item1 == nil ? 0 : item1.atk
  791.         atk2 = @item == nil ? 0 : @item.atk
  792.         change = atk2 - atk1
  793.       else
  794.         def1 = item1 == nil ? 0 : item1.def
  795.         def2 = @item == nil ? 0 : @item.def
  796.         change = def2 - def1
  797.       end
  798.       self.contents.draw_text(x, y, 200, WLH, sprintf("%+d", change), 2)
  799.     end
  800.     draw_item_name(item1, x, y + WLH, enabled)
  801.   end
  802. end

  803. #==============================================================================
  804. # ■ Window_ScrEquip
  805. #==============================================================================
  806. class Window_ScrEquip < Window_Selectable
  807.   attr_accessor :equip_only
  808.   #--------------------------------------------------------------------------
  809.   # ● 初始化对象
  810.   #     x      : 窗口的 X 坐标
  811.   #     y      : 窗口的 Y 坐标
  812.   #     width  : 窗口的宽
  813.   #     height : 窗口的高
  814.   #--------------------------------------------------------------------------
  815.   def initialize(x, y, width, height)
  816.     super(x, y, width, height)
  817.     @column_max = 1
  818.     @equip_only = true
  819.     refresh
  820.   end
  821.   #--------------------------------------------------------------------------
  822.   # ● 取得物品
  823.   #--------------------------------------------------------------------------
  824.   def item
  825.     return @data[self.index]
  826.   end
  827.   #--------------------------------------------------------------------------
  828.   # ● 显示是否可以使用物品
  829.   #     item : 物品
  830.   #--------------------------------------------------------------------------
  831.   def enable?(item)
  832.     return true


复制代码

Lv1.梦旅人

梦石
0
星屑
239
在线时间
2399 小时
注册时间
2008-4-11
帖子
12326

贵宾第6届短篇游戏比赛季军

2
 楼主| 发表于 2009-6-4 06:50:45 | 只看该作者
大发现!!!!

删除332行后会发现无法进入游戏,但是如果删除整句,也就是332~334三行脚本
就可以解决无法接触装备的问题了,但是问题是删除了这三句后,镶嵌就无加成了

目前最好的方法:

    item.actor_id = self.id unless item.nil?
  end
end

将此句前面的两句,也就是332、333行删除,可以解决。
目前没有发现有任何不良后遗症,大家可以试试、
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-11 07:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表