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

Project1

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

[已经过期] 能不能整合耐久度脚本

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
70
在线时间
275 小时
注册时间
2008-10-22
帖子
205
跳转到指定楼层
1
发表于 2011-3-5 11:00:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
能不能把沉影不器前辈的耐久度脚本和新的帮助窗口整合一下(主要是修复界面)
顺便问一句,武器攻击力随机和耐久度脚本能否整合?
贴上脚本
  1. #==============================================================================
  2. # 装备耐久度
  3. # by 沉影不器
  4. #==============================================================================
  5. #主要更改:
  6. #
  7. # ① 角色的每件装备都是原数据库的克隆品,使每件装备都有唯一id
  8. # ② 角色物品窗口中所有装备单独一格
  9. # ③ 更改了商店中对装备的买卖方式,跳过输入数量,只能一件一件买卖
  10. # ④ 战斗中,打人消耗武器耐久度(非物理攻击的技能不消耗),被打消耗防具耐久度,有一定机率
  11. # ⑤ 装备耐久度降为 0 时即是装备损坏,装备能力消失,可修复
  12. # ⑥ 损坏的装备将在地图上显示
  13. # ⑦ 装备卖出价格随耐久度打折
  14. #------------------------------------------------------------------------------
  15. #使用说明
  16. #
  17. # ① 武器耐久度在[数据库-武器]一栏的武器名称后输入,格式为"武器名,耐久度最大值"
  18. #    例如"铜剑,12"表示铜剑最大耐久度为12
  19. #    防具设定同上
  20. # ② 脚本第31行设定原数据库武器最大id
  21. #    例如:默认数据库里最后一个武器是密斯利尔杖,id是32
  22. # ③ 脚本第32行设定原数据库防具最大id,同上
  23. #    ●注意! 以上两个常量为必设,须根据您自己的数据库更改,否则出错
  24. # ④ 脚本第33行设定最大耐久度
  25. #    脚本第34行设定修复装备时的音效
  26. # ⑤ 角色初期装备最好没有重复id的装备,比如默认数据库中几个人物都用了铜盾(id:1)
  27. #    这将使几个人物的该铜盾共享一个耐久度
  28. # ⑥ 使用$scene = Scene_Dur_Equip.new调出修复装备画面
  29. #==============================================================================
  30. module DUR
  31.   DATA_WEAPON_SIZE = 32                 # 原数据库武器最大id
  32.   DATA_ARMOR_SIZE = 32                  # 原数据库防具最大id
  33.   DUR_SET_MAX = 2000                     # 最大耐久度
  34.   REP_SE = "055-Right01"                # 修复装备时的音效文件名
  35. end
  36. #==============================================================================

  37. class Game_Actor < Game_Battler
  38.   #--------------------------------------------------------------------------
  39.   def base_str
  40.     n = $data_actors[@actor_id].parameters[2, @level]
  41.     weapon = $data_weapons[@weapon_id]
  42.     armor1 = $data_armors[@armor1_id]
  43.     armor2 = $data_armors[@armor2_id]
  44.     armor3 = $data_armors[@armor3_id]
  45.     armor4 = $data_armors[@armor4_id]
  46.     n += (weapon != nil ) ? weapon.str_plus : 0
  47.     n += (armor1 != nil ) ? armor1.str_plus : 0
  48.     n += (armor2 != nil ) ? armor2.str_plus : 0
  49.     n += (armor3 != nil ) ? armor3.str_plus : 0
  50.     n += (armor4 != nil ) ? armor4.str_plus : 0
  51.     return [[n, 1].max, 999].min
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   def base_dex
  55.     n = $data_actors[@actor_id].parameters[3, @level]
  56.     weapon = $data_weapons[@weapon_id]
  57.     armor1 = $data_armors[@armor1_id]
  58.     armor2 = $data_armors[@armor2_id]
  59.     armor3 = $data_armors[@armor3_id]
  60.     armor4 = $data_armors[@armor4_id]
  61.     n += (weapon != nil ) ? weapon.dex_plus : 0
  62.     n += (armor1 != nil ) ? armor1.dex_plus : 0
  63.     n += (armor2 != nil ) ? armor2.dex_plus : 0
  64.     n += (armor3 != nil ) ? armor3.dex_plus : 0
  65.     n += (armor4 != nil ) ? armor4.dex_plus : 0
  66.     return [[n, 1].max, 999].min
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   def base_agi
  70.     n = $data_actors[@actor_id].parameters[4, @level]
  71.     weapon = $data_weapons[@weapon_id]
  72.     armor1 = $data_armors[@armor1_id]
  73.     armor2 = $data_armors[@armor2_id]
  74.     armor3 = $data_armors[@armor3_id]
  75.     armor4 = $data_armors[@armor4_id]
  76.     n += (weapon != nil ) ? weapon.agi_plus : 0
  77.     n += (armor1 != nil ) ? armor1.agi_plus : 0
  78.     n += (armor2 != nil ) ? armor2.agi_plus : 0
  79.     n += (armor3 != nil ) ? armor3.agi_plus : 0
  80.     n += (armor4 != nil ) ? armor4.agi_plus : 0
  81.     return [[n, 1].max, 999].min
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   def base_int
  85.     n = $data_actors[@actor_id].parameters[5, @level]
  86.     weapon = $data_weapons[@weapon_id]
  87.     armor1 = $data_armors[@armor1_id]
  88.     armor2 = $data_armors[@armor2_id]
  89.     armor3 = $data_armors[@armor3_id]
  90.     armor4 = $data_armors[@armor4_id]
  91.     n += (weapon != nil ) ? weapon.int_plus : 0
  92.     n += (armor1 != nil ) ? armor1.int_plus : 0
  93.     n += (armor2 != nil ) ? armor2.int_plus : 0
  94.     n += (armor3 != nil ) ? armor3.int_plus : 0
  95.     n += (armor4 != nil ) ? armor4.int_plus : 0
  96.     return [[n, 1].max, 999].min
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   def base_atk
  100.     weapon = $data_weapons[@weapon_id]
  101.     return (weapon != nil ) ? weapon.atk : 0
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   def base_pdef
  105.     weapon = $data_weapons[@weapon_id]
  106.     armor1 = $data_armors[@armor1_id]
  107.     armor2 = $data_armors[@armor2_id]
  108.     armor3 = $data_armors[@armor3_id]
  109.     armor4 = $data_armors[@armor4_id]
  110.     pdef1 = (weapon != nil ) ? weapon.pdef : 0
  111.     pdef2 = (armor1 != nil ) ? armor1.pdef : 0
  112.     pdef3 = (armor2 != nil ) ? armor2.pdef : 0
  113.     pdef4 = (armor3 != nil ) ? armor3.pdef : 0
  114.     pdef5 = (armor4 != nil ) ? armor4.pdef : 0
  115.     return pdef1 + pdef2 + pdef3 + pdef4 + pdef5
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   def base_mdef
  119.     weapon = $data_weapons[@weapon_id]
  120.     armor1 = $data_armors[@armor1_id]
  121.     armor2 = $data_armors[@armor2_id]
  122.     armor3 = $data_armors[@armor3_id]
  123.     armor4 = $data_armors[@armor4_id]
  124.     mdef1 = (weapon != nil ) ? weapon.mdef : 0
  125.     mdef2 = (armor1 != nil ) ? armor1.mdef : 0
  126.     mdef3 = (armor2 != nil ) ? armor2.mdef : 0
  127.     mdef4 = (armor3 != nil ) ? armor3.mdef : 0
  128.     mdef5 = (armor4 != nil ) ? armor4.mdef : 0
  129.     return mdef1 + mdef2 + mdef3 + mdef4 + mdef5
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   def base_eva
  133.     armor1 = $data_armors[@armor1_id]
  134.     armor2 = $data_armors[@armor2_id]
  135.     armor3 = $data_armors[@armor3_id]
  136.     armor4 = $data_armors[@armor4_id]
  137.     eva1 = (armor1 != nil ) ? armor1.eva : 0
  138.     eva2 = (armor2 != nil ) ? armor2.eva : 0
  139.     eva3 = (armor3 != nil ) ? armor3.eva : 0
  140.     eva4 = (armor4 != nil ) ? armor4.eva : 0
  141.     return eva1 + eva2 + eva3 + eva4
  142.   end
  143. end
  144. #==============================================================================

  145. class Game_Party
  146.   #--------------------------------------------------------------------------
  147.   attr_accessor   :weapons
  148.   attr_accessor   :armors
  149.   #--------------------------------------------------------------------------
  150.   def weapon_number(weapon_id)
  151.     return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # 以下修改于<<武器攻击力波动>>(灼眼的夏娜)
  155.   def gain_weapon(weapon_id, n)
  156.     if weapon_id > 0
  157.       if n > 0 # 增加武器的情况
  158.         n = 1
  159.         # 装备栏中使用的武器不处理~
  160.         if $scene.is_a?(Scene_Equip)
  161.           @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  162.         else
  163.           new_weapon = $data_weapons[weapon_id].clone
  164.           new_weapon.dur_set = $data_weapons[weapon_id].dur_set
  165.           new_weapon.dur = $data_weapons[weapon_id].dur_set
  166.           new_weapon.id = $data_weapons.size
  167.           #数据库扩容
  168.           $data_weapons.push(new_weapon)
  169.           # 职业可装备武器数组更新~
  170.           for i in 1...$data_classes.size
  171.             if $data_classes[i].weapon_set.include?(weapon_id)
  172.               $data_classes[i].weapon_set.push(new_weapon.id)
  173.             end
  174.           end
  175.           # 增加武器~
  176.           @weapons[new_weapon.id] = [[weapon_number(new_weapon.id) + n, 0].max, 99].min
  177.         end
  178.       else # n < 0 减少武器的情况(未定的情况: n = 0)
  179.         n = -1
  180.         # 装备栏中卸下的武器不处理~
  181.         if $scene.is_a?(Scene_Equip)
  182.           @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  183.         else
  184.           lose_name = $data_weapons[weapon_id].name
  185.           dur_min = DUR::DUR_SET_MAX
  186.           for i in DUR::DATA_WEAPON_SIZE+1...$data_weapons.size
  187.             # 重新确定weapon_id,必定在原武器数据库之外
  188.             # 减少同名武器中耐久度最低的
  189.             if $data_weapons[i].name == lose_name and $data_weapons[i].dur < dur_min
  190.               weapon_id = i
  191.             end
  192.           end
  193.           # 已不存在的不做操作
  194.           if weapon_number(weapon_id) <= 0
  195.             return
  196.           end
  197.           # 减少武器
  198.           @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  199.           # 删除行囊拥有的武器id,后id补进
  200.           @weapons.delete(weapon_id)
  201.           weapon_keys = @weapons.keys.sort!
  202.           for i in weapon_keys
  203.             if i > weapon_id
  204.               @weapons[i-1] = @weapons[i]
  205.               @weapons.delete(i)
  206.             end
  207.           end
  208.           # 更改角色使用中的武器id
  209.           for i in [email protected]
  210.             if @actors[i].weapon_id != nil and @actors[i].weapon_id > weapon_id
  211.               @actors[i].weapon_id -= 1
  212.             end
  213.           end
  214.           if weapon_id > DUR::DATA_WEAPON_SIZE
  215.             # 删除数据库武器id,后补进
  216.             for i in weapon_id+1...$data_weapons.size
  217.               $data_weapons[i].id -= 1
  218.             end
  219.             $data_weapons.delete_at(weapon_id)
  220.             # 职业可装备武器数组更新
  221.             for i in 1...$data_classes.size
  222.               if $data_classes[i].weapon_set.include?(weapon_id)
  223.                 $data_classes[i].weapon_set.delete(weapon_id)
  224.               end
  225.               for j in $data_classes[i].weapon_set
  226.                 if j > weapon_id
  227.                   $data_classes[i].weapon_set.delete(j)
  228.                   j -= 1
  229.                   $data_classes[i].weapon_set.push(j)
  230.                 end
  231.               end
  232.             end
  233.           end
  234.         end
  235.       end
  236.     end
  237.   end
  238.   #--------------------------------------------------------------------------
  239.   def gain_armor(armor_id, n)
  240.     if armor_id > 0
  241.       if n > 0 # 增加防具的情况
  242.         n = 1
  243.         # 装备栏中使用的防具不处理~
  244.         if $scene.is_a?(Scene_Equip)
  245.           @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  246.         else
  247.           new_armor = $data_armors[armor_id].clone
  248.           new_armor.dur_set = $data_armors[armor_id].dur_set
  249.           new_armor.dur = $data_armors[armor_id].dur_set
  250.           new_armor.id = $data_armors.size
  251.           #数据库扩容
  252.           $data_armors.push(new_armor)
  253.           # 职业可装备防具数组更新~
  254.           for i in 1...$data_classes.size
  255.             if $data_classes[i].armor_set.include?(armor_id)
  256.               $data_classes[i].armor_set.push(new_armor.id)
  257.             end
  258.           end
  259.           # 增加防具
  260.           @armors[new_armor.id] = [[armor_number(new_armor.id) + n, 0].max, 99].min
  261.         end
  262.       else # n < 0 减少防具的情况(未定的情况: n = 0)
  263.         n = -1
  264.         # 装备栏中卸下的防具不处理
  265.         if $scene.is_a?(Scene_Equip)
  266.           @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  267.         else
  268.           lose_name = $data_armors[armor_id].name
  269.           dur_min = DUR::DUR_SET_MAX
  270.           for i in DUR::DATA_ARMOR_SIZE+1...$data_armors.size
  271.             # 重新确定armor_id,必定在原防具数据库之外
  272.             # 减少同名防具中耐久度最低的
  273.             if $data_armors[i].name == lose_name and $data_armors[i].dur < dur_min
  274.               armor_id = i
  275.             end
  276.           end
  277.           # 已不存在的不做操作
  278.           if armor_number(armor_id) <= 0
  279.             return
  280.           end
  281.           # 减少防具
  282.           @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  283.           # 删除行囊拥有的防具id,后id补进
  284.           @weapons.delete(armor_id)
  285.           armor_keys = @armors.keys.sort!
  286.           for i in armor_keys
  287.             if i > armor_id
  288.               @armors[i-1] = @armors[i]
  289.               @armors.delete(i)
  290.             end
  291.           end
  292.           # 更改角色使用中的防具id
  293.           for i in [email protected]
  294.             if @actors[i].armor1_id != nil and @actors[i].armor1_id > armor_id
  295.               @actors[i].armor1_id -= 1
  296.             end
  297.             if @actors[i].armor2_id != nil and @actors[i].armor2_id > armor_id
  298.               @actors[i].armor2_id -= 1
  299.             end
  300.             if @actors[i].armor3_id != nil and @actors[i].armor3_id > armor_id
  301.               @actors[i].armor3_id -= 1
  302.             end
  303.             if @actors[i].armor4_id != nil and @actors[i].armor4_id > armor_id
  304.               @actors[i].armor4_id -= 1
  305.             end
  306.           end
  307.           if armor_id > DUR::DATA_ARMOR_SIZE
  308.             # 删除数据库防具id,后补进
  309.             for i in armor_id+1...$data_armors.size
  310.               $data_armors[i].id -= 1
  311.             end
  312.             $data_armors.delete_at(armor_id)
  313.             # 职业可装备防具数组更新
  314.             for i in 1...$data_classes.size
  315.               if $data_classes[i].armor_set.include?(armor_id)
  316.                 $data_classes[i].armor_set.delete(armor_id)
  317.               end
  318.               for j in $data_classes[i].armor_set
  319.                 if j > armor_id
  320.                   $data_classes[i].armor_set.delete(j)
  321.                   j -= 1
  322.                   $data_classes[i].armor_set.push(j)
  323.                 end
  324.               end
  325.             end
  326.           end
  327.         end
  328.       end
  329.     end
  330.   end
  331. end
  332. # ===========================================================================

  333. class Window_Item < Window_Selectable
  334.   #--------------------------------------------------------------------------
  335.   def update_help
  336.     description = ""
  337.     if self.item != nil
  338.       description = self.item.description
  339.       if !self.item.is_a? RPG::Item
  340.         dur_set = item.dur_set
  341.         dur = item.dur
  342.         description = description + " 耐久度: #{dur}/#{dur_set}"
  343.       end
  344.     end
  345.     @help_window.set_text(description)
  346.   end
  347. end
  348. # ===========================================================================

  349. class Window_EquipItem < Window_Selectable
  350.   #--------------------------------------------------------------------------
  351.   def update_help
  352.     description = ""
  353.     if self.item != nil
  354.       description = self.item.description
  355.       dur_set = item.dur_set
  356.       dur = item.dur
  357.       description = description + " 耐久度: #{dur}/#{dur_set}"
  358.     end
  359.     @help_window.set_text(description)
  360.   end
  361. end


  362. class Scene_Title
  363.   #--------------------------------------------------------------------------
  364.   alias main_add_dur main
  365.   def main
  366.     main_add_dur
  367.     # 战斗测试的情况下
  368.     if $BTEST
  369.       battle_test
  370.       return
  371.     end
  372.     $data_weapons = load_data("Data/Weapons.rxdata")
  373.     $data_armors = load_data("Data/Armors.rxdata")
  374.     # 初始化耐久度
  375.     for i in 1...$data_weapons.size
  376.       $data_weapons[i].dur = $data_weapons[i].dur_set
  377.     end
  378.     for i in 1...$data_armors.size
  379.       $data_armors[i].dur = $data_armors[i].dur_set
  380.     end
  381.   end
  382. end
  383. #==============================================================================

  384. class Scene_Shop
  385.   #--------------------------------------------------------------------------
  386.   def update_buy
  387.     @status_window.item = @buy_window.item
  388.     if Input.trigger?(Input::B)
  389.       $game_system.se_play($data_system.cancel_se)
  390.       # 窗口状态转向初期模式
  391.       @command_window.active = true
  392.       @dummy_window.visible = true
  393.       @buy_window.active = false
  394.       @buy_window.visible = false
  395.       @status_window.visible = false
  396.       @status_window.item = nil
  397.       @help_window.set_text("")
  398.       return
  399.     end
  400.     if Input.trigger?(Input::C)
  401.       @item = @buy_window.item
  402.       if @item == nil or @item.price > $game_party.gold
  403.         $game_system.se_play($data_system.buzzer_se)
  404.         return
  405.       end
  406.       case @item
  407.       when RPG::Item
  408.         number = $game_party.item_number(@item.id)
  409.       when RPG::Weapon
  410.         number = $game_party.weapon_number(@item.id)
  411.       when RPG::Armor
  412.         number = $game_party.armor_number(@item.id)
  413.       end
  414.       if number == 99
  415.         $game_system.se_play($data_system.buzzer_se)
  416.         return
  417.       end
  418.       $game_system.se_play($data_system.decision_se)
  419.       max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  420.       max = [max, 99 - number].min
  421.       if @item.is_a? RPG::Item # 除物品外直接买进1件
  422.         @buy_window.active = false
  423.         @buy_window.visible = false
  424.         @number_window.set(@item, max, @item.price)
  425.         @number_window.active = true
  426.         @number_window.visible = true
  427.       else
  428.         update_number
  429.       end
  430.     end
  431.   end
  432.   #--------------------------------------------------------------------------
  433.   def update_sell
  434.     if Input.trigger?(Input::B)
  435.       $game_system.se_play($data_system.cancel_se)
  436.       @command_window.active = true
  437.       @dummy_window.visible = true
  438.       @sell_window.active = false
  439.       @sell_window.visible = false
  440.       @status_window.item = nil
  441.       @help_window.set_text("")
  442.       return
  443.     end
  444.     if Input.trigger?(Input::C)
  445.       @item = @sell_window.item
  446.       @status_window.item = @item
  447.       if @item == nil or @item.price == 0
  448.         $game_system.se_play($data_system.buzzer_se)
  449.         return
  450.       end
  451.       $game_system.se_play($data_system.decision_se)
  452.       case @item
  453.       when RPG::Item
  454.         number = $game_party.item_number(@item.id)
  455.       when RPG::Weapon
  456.         number = $game_party.weapon_number(@item.id)
  457.       when RPG::Armor
  458.         number = $game_party.armor_number(@item.id)
  459.       end
  460.       max = number
  461.       if @item.is_a? RPG::Item # 除物品外直接卖出1件
  462.         @sell_window.active = false
  463.         @sell_window.visible = false
  464.         @number_window.set(@item, max, @item.price / 2)
  465.         @number_window.active = true
  466.         @number_window.visible = true
  467.         @status_window.visible = true
  468.       else
  469.         update_number
  470.       end
  471.     end
  472.   end
  473.   #--------------------------------------------------------------------------
  474.   def update_number
  475.     # 按下 B 键的情况下
  476.     if Input.trigger?(Input::B)
  477.       $game_system.se_play($data_system.cancel_se)
  478.       @number_window.active = false
  479.       @number_window.visible = false
  480.       case @command_window.index
  481.       when 0  # 购买
  482.         @buy_window.active = true
  483.         @buy_window.visible = true
  484.       when 1  # 卖出
  485.         @sell_window.active = true
  486.         @sell_window.visible = true
  487.         @status_window.visible = false
  488.       end
  489.       return
  490.     end
  491.     # 按下 C 键的情况下
  492.     if Input.trigger?(Input::C)
  493.       $game_system.se_play($data_system.shop_se)
  494.       @number_window.active = false
  495.       @number_window.visible = false
  496.       case @command_window.index
  497.       when 0  # 购买
  498.         $game_party.lose_gold(@number_window.number * @item.price)
  499.         case @item
  500.         when RPG::Item
  501.           $game_party.gain_item(@item.id, @number_window.number)
  502.         when RPG::Weapon
  503.           $game_party.gain_weapon(@item.id, @number_window.number)
  504.         when RPG::Armor
  505.           $game_party.gain_armor(@item.id, @number_window.number)
  506.         end
  507.         @gold_window.refresh
  508.         @buy_window.refresh
  509.         @status_window.refresh
  510.         @buy_window.active = true
  511.         @buy_window.visible = true
  512.       when 1  # 卖出
  513.         $game_party.gain_gold(@number_window.number * rep_cost(@item) / 2)
  514.         case @item
  515.         when RPG::Item
  516.           $game_party.lose_item(@item.id, @number_window.number)
  517.         when RPG::Weapon
  518.           $game_party.lose_weapon(@item.id, @number_window.number)
  519.         when RPG::Armor
  520.           $game_party.lose_armor(@item.id, @number_window.number)
  521.         end
  522.         @gold_window.refresh
  523.         @sell_window.refresh
  524.         @status_window.refresh
  525.         @sell_window.active = true
  526.         @sell_window.visible = true
  527.         @status_window.visible = false
  528.       end
  529.       return
  530.     end
  531.   end
  532. end
  533. #==============================================================================

  534. class Game_Battler
  535.   #--------------------------------------------------------------------------
  536.   def attack_effect(attacker)
  537.     self.critical = false
  538.     hit_result = (rand(100) < attacker.hit)
  539.     if hit_result == true
  540.       atk = [attacker.atk - self.pdef / 2, 0].max
  541.       self.damage = atk * (20 + attacker.str) / 20
  542.       self.damage *= elements_correct(attacker.element_set)
  543.       self.damage /= 100
  544.       if self.damage > 0
  545.         if rand(100) < 4 * attacker.dex / self.agi
  546.           self.damage *= 2
  547.           self.critical = true
  548.         end
  549.         if self.guarding?
  550.           self.damage /= 2
  551.         end
  552.       end
  553.       if self.damage.abs > 0
  554.         amp = [self.damage.abs * 15 / 100, 1].max
  555.         self.damage += rand(amp+1) + rand(amp+1) - amp
  556.       end
  557.       eva = 8 * self.agi / attacker.dex + self.eva
  558.       hit = self.damage < 0 ? 100 : 100 - eva
  559.       hit = self.cant_evade? ? 100 : hit
  560.       hit_result = (rand(100) < hit)
  561.     end
  562.     if hit_result == true
  563.       remove_states_shock
  564.       self.hp -= self.damage
  565.       @state_changed = false
  566.       states_plus(attacker.plus_state_set)
  567.       states_minus(attacker.minus_state_set)
  568.     else
  569.       self.damage = "Miss"
  570.       self.critical = false
  571.     end
  572.     # 耐久度判断
  573.     if hit_result == true
  574.       if self.is_a?(Game_Actor) # 如果挨打的是角色,减防具耐久度
  575.         armor_kind =  1 + rand(4)
  576.         case armor_kind
  577.         when 1
  578.           if self.armor1_id != nil and self.armor1_id > 0
  579.             if rand(2) == 0 and $data_armors[self.armor1_id].dur >= 0
  580.               $data_armors[self.armor1_id].dur -= 1
  581.             end
  582.           end
  583.         when 2
  584.           if self.armor2_id != nil and self.armor2_id > 0
  585.             if rand(2) == 0 and $data_armors[self.armor2_id].dur >= 0
  586.               $data_armors[self.armor2_id].dur -= 1
  587.             end
  588.           end
  589.         when 3
  590.           if self.armor3_id != nil and self.armor3_id > 0
  591.             if rand(2) == 0 and $data_armors[self.armor3_id].dur >= 0
  592.               $data_armors[self.armor3_id].dur -= 1
  593.             end
  594.           end
  595.         when 4
  596.           if self.armor4_id != nil and self.armor4_id > 0
  597.             if rand(2) == 0 and $data_armors[self.armor4_id].dur >= 0
  598.               $data_armors[self.armor4_id].dur -= 1
  599.             end
  600.           end
  601.         end
  602.       else  # 角色打人,减武器耐久度
  603.         if attacker.weapon_id != nil and attacker.weapon_id > 0
  604.           if rand(8) == 0 and $data_weapons[attacker.weapon_id].dur > 0
  605.             $data_weapons[attacker.weapon_id].dur -= 1
  606.           end
  607.         end
  608.       end
  609.     end
  610.     # 过程结束
  611.     return true
  612.   end
  613.   #--------------------------------------------------------------------------
  614.   def skill_effect(user, skill)
  615.     self.critical = false
  616.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  617.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  618.       return false
  619.     end
  620.     effective = false
  621.     effective |= skill.common_event_id > 0
  622.     hit = skill.hit
  623.     if skill.atk_f > 0
  624.       hit *= user.hit / 100
  625.     end
  626.     hit_result = (rand(100) < hit)
  627.     effective |= hit < 100
  628.     if hit_result == true
  629.       power = skill.power + user.atk * skill.atk_f / 100
  630.       if power > 0
  631.         power -= self.pdef * skill.pdef_f / 200
  632.         power -= self.mdef * skill.mdef_f / 200
  633.         power = [power, 0].max
  634.       end
  635.       rate = 20
  636.       rate += (user.str * skill.str_f / 100)
  637.       rate += (user.dex * skill.dex_f / 100)
  638.       rate += (user.agi * skill.agi_f / 100)
  639.       rate += (user.int * skill.int_f / 100)
  640.       self.damage = power * rate / 20
  641.       self.damage *= elements_correct(skill.element_set)
  642.       self.damage /= 100
  643.       if self.damage > 0
  644.         if self.guarding?
  645.           self.damage /= 2
  646.         end
  647.       end
  648.       if skill.variance > 0 and self.damage.abs > 0
  649.         amp = [self.damage.abs * skill.variance / 100, 1].max
  650.         self.damage += rand(amp+1) + rand(amp+1) - amp
  651.       end
  652.       eva = 8 * self.agi / user.dex + self.eva
  653.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  654.       hit = self.cant_evade? ? 100 : hit
  655.       hit_result = (rand(100) < hit)
  656.       effective |= hit < 100
  657.     end
  658.     if hit_result == true
  659.       if skill.power != 0 and skill.atk_f > 0
  660.         remove_states_shock
  661.         effective = true
  662.       end
  663.       last_hp = self.hp
  664.       self.hp -= self.damage
  665.       effective |= self.hp != last_hp
  666.       @state_changed = false
  667.       effective |= states_plus(skill.plus_state_set)
  668.       effective |= states_minus(skill.minus_state_set)
  669.       if skill.power == 0
  670.         self.damage = ""
  671.         unless @state_changed
  672.           self.damage = "Miss"
  673.         end
  674.       end
  675.     else
  676.       self.damage = "Miss"
  677.     end
  678.     unless $game_temp.in_battle
  679.       self.damage = nil
  680.     end
  681.     # 耐久度判断
  682.     if hit_result == true
  683.       if self.is_a?(Game_Actor) # 如果挨打的是角色,减防具耐久度
  684.         armor_kind =  1 + rand(4)
  685.         case armor_kind
  686.         when 1
  687.           if self.armor1_id != nil and self.armor1_id > 0
  688.             if rand(2) == 0 and $data_armors[self.armor1_id].dur > 0
  689.               $data_armors[self.armor1_id].dur -= 1
  690.             end
  691.           end
  692.         when 2
  693.           if self.armor2_id != nil and self.armor2_id >= 0
  694.             if rand(2) == 0 and $data_armors[self.armor2_id].dur >= 0
  695.               $data_armors[self.armor2_id].dur -= 1
  696.             end
  697.           end
  698.         when 3
  699.           if self.armor3_id != nil and self.armor3_id > 0
  700.             if rand(2) == 0 and $data_armors[self.armor3_id].dur >= 0
  701.               $data_armors[self.armor3_id].dur -= 1
  702.             end
  703.           end
  704.         when 4
  705.           if self.armor4_id != nil and self.armor4_id > 0
  706.             if rand(2) == 0 and $data_armors[self.armor4_id].dur >= 0
  707.               $data_armors[self.armor4_id].dur -= 1
  708.             end
  709.           end
  710.         end
  711.       else  # 角色打人,减武器耐久度
  712.         if user.weapon_id != nil and user.weapon_id > 0
  713.           if rand(8) == 0 and $data_weapons[user.weapon_id].dur >= 0
  714.             if skill.atk_f == 0 # 非物理技能不损武器耐久度
  715.               $data_weapons[user.weapon_id].dur -= 1
  716.             end
  717.           end
  718.         end
  719.       end
  720.     end
  721.     # 过程结束
  722.     return effective
  723.   end
  724. end
  725. #==============================================================================

  726. class Window_Dur < Window_Base
  727.   #--------------------------------------------------------------------------
  728.   def initialize
  729.     super(0,0,320,480)
  730.     self.opacity = 0
  731.     self.contents = Bitmap.new(width - 32, height - 32)
  732.     @text_dur_old = [0]
  733.     @text_dur = []
  734.     refresh
  735.   end
  736.   #--------------------------------------------------------------------------
  737.   def draw_text_dur(index,y)
  738.     text = @text_dur[index]
  739.     tx = 0
  740.     ty = index * 24 + y
  741.     self.contents.font.color = normal_color
  742.     self.contents.draw_text(tx, ty, 320-32, 24, text)
  743.   end
  744.   #--------------------------------------------------------------------------
  745.   def refresh
  746.     # 节省内存
  747.     if @text_dur_old == @text_dur
  748.       return
  749.     end
  750.     @text_dur.clear
  751.     # 取得空耐久度的装备名
  752.     for i in $game_party.actors
  753.       if $data_weapons[i.weapon_id] != nil and $data_weapons[i.weapon_id].dur == 0
  754.         @text_dur.push(i.name + "-" + $data_weapons[i.weapon_id].name)
  755.       end
  756.       if $data_armors[i.armor1_id] != nil and $data_armors[i.armor1_id].dur == 0
  757.         @text_dur.push(i.name + "-" + $data_armors[i.armor1_id].name)
  758.       end
  759.       if $data_armors[i.armor2_id] != nil and $data_armors[i.armor2_id].dur == 0
  760.         @text_dur.push(i.name + "-" + $data_armors[i.armor2_id].name)
  761.       end
  762.       if $data_armors[i.armor3_id] != nil and $data_armors[i.armor3_id].dur == 0
  763.         @text_dur.push(i.name + "-" + $data_armors[i.armor3_id].name)
  764.       end
  765.       if $data_armors[i.armor4_id] != nil and $data_armors[i.armor4_id].dur == 0
  766.         @text_dur.push(i.name + "-" + $data_armors[i.armor4_id].name)
  767.       end
  768.     end
  769.     @text_dur_old = @text_dur
  770.     y = 448 - @text_dur.size * 24
  771.     self.contents.clear
  772.     self.contents.font.size = 14
  773.     if @text_dur != []
  774.       self.contents.font.color = Color.new(255, 0, 0) # 红色显示
  775.       self.contents.draw_text(0, y - 24, 320 - 32, 24, "装备损坏:")
  776.     end
  777.     for i in 0... @text_dur.size
  778.       draw_text_dur(i,y)
  779.     end
  780.     self.contents.font.size = Font.default_size
  781.   end
  782. end
  783. #==============================================================================

  784. class Window_Dur_Equip < Window_Selectable
  785.   #--------------------------------------------------------------------------
  786.   def initialize
  787.     super(0, 128, 640, 352)
  788.     @column_max = 2
  789.     refresh
  790.     self.index = 0
  791.   end
  792.   #--------------------------------------------------------------------------
  793.   def item
  794.     return @data[self.index]
  795.   end
  796.   #--------------------------------------------------------------------------
  797.   def refresh
  798.     if self.contents != nil
  799.       self.contents.dispose
  800.       self.contents = nil
  801.     end
  802.     @data = []
  803.     # 添加武器、防具
  804.     for i in 1...$data_weapons.size
  805.       if $game_party.weapon_number(i) > 0
  806.         @data.push($data_weapons[i])
  807.       end
  808.     end
  809.     for i in 1...$data_armors.size
  810.       if $game_party.armor_number(i) > 0
  811.         @data.push($data_armors[i])
  812.       end
  813.     end
  814.     @item_max = @data.size
  815.     # 有项目时再描绘
  816.     if @item_max > 0
  817.       self.contents = Bitmap.new(width - 32, row_max * 32)
  818.       for i in 0...@item_max
  819.         draw_item(i)
  820.       end
  821.     end
  822.   end
  823.   #--------------------------------------------------------------------------
  824.   def draw_item(index)
  825.     item = @data[index]
  826.     case item
  827.     when RPG::Weapon
  828.       number = $game_party.weapon_number(item.id)
  829.     when RPG::Armor
  830.       number = $game_party.armor_number(item.id)
  831.     end
  832.     # 有没钱修复 是否需要修复
  833.     if $game_party.gold > rep_cost(item) and rep_cost(item) != 0
  834.       self.contents.font.color = normal_color
  835.     else
  836.       self.contents.font.color = disabled_color
  837.     end
  838.     x = 4 + index % 2 * (288 + 32)
  839.     y = index / 2 * 32
  840.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  841.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  842.     bitmap = RPG::Cache.icon(item.icon_name)
  843.     opacity = self.contents.font.color == normal_color ? 255 : 128
  844.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  845.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  846.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  847.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  848.   end
  849.   #--------------------------------------------------------------------------
  850.   def update_help
  851.     description = ""
  852.     if self.item != nil
  853.       description = self.item.description
  854.       if !self.item.is_a? RPG::Item
  855.         dur_set = item.dur_set
  856.         dur = item.dur
  857.         description = description + " 耐久度: #{dur}/#{dur_set}"
  858.       end
  859.     end
  860.     @help_window.set_text(description)
  861.   end
  862. end
  863. #==============================================================================

  864. class Window_RepMes < Window_Base
  865.   #--------------------------------------------------------------------------
  866.   def initialize
  867.     super(0, 64, 480, 64)
  868.     self.contents = Bitmap.new(width - 32, height - 32)
  869.   end
  870.   #--------------------------------------------------------------------------
  871.   def set(rep_cost)
  872.     if rep_cost != @rep_cost
  873.       # 再描绘文本
  874.       self.contents.clear
  875.       self.contents.font.color = normal_color
  876.       if rep_cost == 0
  877.         self.contents.draw_text(4, 0, self.width - 40, 32, "无需修复!")
  878.       else
  879.         text = "修复费用:#{rep_cost}"
  880.         cx = contents.text_size(text).width
  881.         self.contents.draw_text(4, 0, self.width - 40, 32, text)
  882.         self.contents.font.color = system_color
  883.         self.contents.draw_text(8 + cx, 0, self.width - 40, 32, $data_system.words.gold)
  884.       end
  885.       @rep_cost = rep_cost
  886.     end
  887.     self.visible = true
  888.   end
  889. end
  890. #==============================================================================

  891. class Scene_Map
  892.   #--------------------------------------------------------------------------
  893.   def main
  894.     @spriteset = Spriteset_Map.new
  895.     @message_window = Window_Message.new
  896.     @dur_window = Window_Dur.new
  897.     Graphics.transition
  898.     loop do
  899.       Graphics.update
  900.       Input.update
  901.       update
  902.       if $scene != self
  903.         break
  904.       end
  905.     end
  906.     Graphics.freeze
  907.     @spriteset.dispose
  908.     @message_window.dispose
  909.     @dur_window.dispose
  910.     if $scene.is_a?(Scene_Title)
  911.       Graphics.transition
  912.       Graphics.freeze
  913.     end
  914.   end
  915.   #--------------------------------------------------------------------------
  916.   def update
  917.     loop do
  918.       $game_map.update
  919.       $game_system.map_interpreter.update
  920.       $game_player.update
  921.       $game_system.update
  922.       $game_screen.update
  923.       unless $game_temp.player_transferring
  924.         break
  925.       end
  926.       transfer_player
  927.       if $game_temp.transition_processing
  928.         break
  929.       end
  930.     end
  931.     @spriteset.update
  932.     @message_window.update
  933.     @dur_window.update
  934.     if $game_temp.gameover
  935.       $scene = Scene_Gameover.new
  936.       return
  937.     end
  938.     if $game_temp.to_title
  939.       $scene = Scene_Title.new
  940.       return
  941.     end
  942.     if $game_temp.transition_processing
  943.       $game_temp.transition_processing = false
  944.       if $game_temp.transition_name == ""
  945.         Graphics.transition(20)
  946.       else
  947.         Graphics.transition(40, "Graphics/Transitions/" +
  948.           $game_temp.transition_name)
  949.       end
  950.     end
  951.     if $game_temp.message_window_showing
  952.       return
  953.     end
  954.     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  955.       unless $game_system.map_interpreter.running? or
  956.              $game_system.encounter_disabled
  957.         n = rand($game_map.encounter_list.size)
  958.         troop_id = $game_map.encounter_list[n]
  959.         if $data_troops[troop_id] != nil
  960.           $game_temp.battle_calling = true
  961.           $game_temp.battle_troop_id = troop_id
  962.           $game_temp.battle_can_escape = true
  963.           $game_temp.battle_can_lose = false
  964.           $game_temp.battle_proc = nil
  965.         end
  966.       end
  967.     end
  968.     if Input.trigger?(Input::B)
  969.       unless $game_system.map_interpreter.running? or
  970.              $game_system.menu_disabled
  971.         $game_temp.menu_calling = true
  972.         $game_temp.menu_beep = true
  973.       end
  974.     end
  975.     if $DEBUG and Input.press?(Input::F9)
  976.       $game_temp.debug_calling = true
  977.     end
  978.     unless $game_player.moving?
  979.       if $game_temp.battle_calling
  980.         call_battle
  981.       elsif $game_temp.shop_calling
  982.         call_shop
  983.       elsif $game_temp.name_calling
  984.         call_name
  985.       elsif $game_temp.menu_calling
  986.         call_menu
  987.       elsif $game_temp.save_calling
  988.         call_save
  989.       elsif $game_temp.debug_calling
  990.         call_debug
  991.       end
  992.     end
  993.   end
  994. end
  995. #==============================================================================

  996. class Scene_Dur_Equip
  997.   #--------------------------------------------------------------------------
  998.   def main
  999.     @help_window = Window_Help.new
  1000.     @item_window = Window_Dur_Equip.new
  1001.     @gold_window = Window_Gold.new
  1002.     @gold_window.x = 480
  1003.     @gold_window.y = 64
  1004.     @repmes_window = Window_RepMes.new
  1005.     @item_window.help_window = @help_window
  1006.     Graphics.transition
  1007.     loop do
  1008.       Graphics.update
  1009.       Input.update
  1010.       update
  1011.       if $scene != self
  1012.         break
  1013.       end
  1014.     end
  1015.     # 装备过渡
  1016.     Graphics.freeze
  1017.     @help_window.dispose
  1018.     @item_window.dispose
  1019.     @gold_window.dispose
  1020.     @repmes_window.dispose
  1021.   end
  1022.   #--------------------------------------------------------------------------
  1023.   def update
  1024.     @help_window.update
  1025.     @item_window.update
  1026.     @gold_window.update
  1027.     # 按下 B 键的情况下
  1028.     if Input.trigger?(Input::B)
  1029.       $game_system.se_play($data_system.cancel_se)
  1030.       # 切换到地图
  1031.       $scene = Scene_Map.new
  1032.       return
  1033.     end
  1034.     # 获取装备
  1035.     @item = @item_window.item
  1036.     # 为空时
  1037.     if @item == nil
  1038.       return
  1039.     end
  1040.     @rep_cost = rep_cost(@item)
  1041.     @repmes_window.set(@rep_cost)
  1042.     # 按下 C 键的情况下
  1043.     if Input.trigger?(Input::C)
  1044.       # 不能使用的情况下
  1045.       if $game_party.gold < @rep_cost or @rep_cost == 0
  1046.         $game_system.se_play($data_system.buzzer_se)
  1047.         return
  1048.       end
  1049.       # 音效
  1050.       Audio.se_play("Audio/SE/#{DUR::REP_SE}", 100, 100)
  1051.       # 修复
  1052.       if @item.is_a?(RPG::Weapon)
  1053.         $data_weapons[@item.id].dur = $data_weapons[@item.id].dur_set
  1054.       else
  1055.         $data_armors[@item.id].dur = $data_armors[@item.id].dur_set
  1056.       end
  1057.       $game_party.gain_gold(-@rep_cost)
  1058.       @item_window.refresh
  1059.       @gold_window.refresh
  1060.       return
  1061.     end
  1062.   end
  1063. end
  1064. #==============================================================================

  1065. class Scene_Save < Scene_File
  1066.   #--------------------------------------------------------------------------
  1067.   def write_save_data(file)
  1068.     characters = []
  1069.     for i in 0...$game_party.actors.size
  1070.       actor = $game_party.actors[i]
  1071.       characters.push([actor.character_name, actor.character_hue])
  1072.     end
  1073.     Marshal.dump(characters, file)
  1074.     Marshal.dump(Graphics.frame_count, file)
  1075.     $game_system.save_count += 1
  1076.     $game_system.magic_number = $data_system.magic_number
  1077.     Marshal.dump($game_system, file)
  1078.     Marshal.dump($game_switches, file)
  1079.     Marshal.dump($game_variables, file)
  1080.     Marshal.dump($game_self_switches, file)
  1081.     Marshal.dump($game_screen, file)
  1082.     Marshal.dump($game_actors, file)
  1083.     Marshal.dump($game_party, file)
  1084.     Marshal.dump($game_troop, file)
  1085.     Marshal.dump($game_map, file)
  1086.     Marshal.dump($game_player, file)
  1087.     Marshal.dump($data_weapons, file)
  1088.     Marshal.dump($data_armors, file)
  1089.     Marshal.dump($data_classes, file)
  1090.   end
  1091. end
  1092. #==============================================================================

  1093. def rep_cost(item)
  1094.   if item.is_a?(RPG::Item)
  1095.     item.price
  1096.   else
  1097.     rep_cost = item.dur == 0 ? item.price : item.price * (item.dur_set-item.dur)/item.dur_set
  1098.   end
  1099. end
  1100. #==============================================================================

  1101. module RPG
  1102.   class Weapon
  1103.     attr_accessor :dur_set
  1104.     attr_accessor :dur
  1105.     def name
  1106.       name = @name.split(/,/)[0]
  1107.       return name != nil ? name : ''
  1108.     end
  1109.     def dur_set
  1110.       dur_set = @name.split(/,/)[1]
  1111.       return dur_set != nil ? dur_set.to_i : 0
  1112.     end
  1113.   end
  1114.   class Armor
  1115.     attr_accessor :dur_set
  1116.     attr_accessor :dur
  1117.     def name
  1118.       name = @name.split(/,/)[0]
  1119.       return name != nil ? name : ''
  1120.     end
  1121.     def dur_set
  1122.       dur_set = @name.split(/,/)[1]
  1123.       return dur_set != nil ? dur_set.to_i : 0
  1124.     end
  1125.   end
  1126. end
复制代码
  1. #==============================================================================
  2. # ■ Window_Help
  3. #------------------------------------------------------------------------------
  4. #  特技及物品的说明、角色的状态显示的窗口。
  5. #   若要更改属性,请搜索element_set={1=>"火",2=>"冰",3=>"光",4=>"暗"} 改成对应属性即可
  6. #==============================================================================

  7. UNSHOW_STATE=[1,2,3,4,5]#记录不显示的状态数组
  8. UNSHOW_ELEMENT=[1,2,3,4,5]#记录不显示的属性数组

  9. class Window_Help < Window_Base
  10.   #--------------------------------------------------------------------------
  11.   # ● 初始化对像
  12.   #--------------------------------------------------------------------------
  13.   def initialize
  14.     super(150,200, 180, 480)
  15.     self.opacity = 150
  16.     self.z = 150
  17.     self.visible = false
  18.     self.contents = Bitmap.new(width - 32, height - 32)
  19.     description=""
  20.     @item=nil
  21.     @armor=nil
  22.     @weapon=nil
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 设置文本
  26.   #     text  : 窗口显示的字符串
  27.   #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  28.   #--------------------------------------------------------------------------
  29.   def set_text(data, align=nil)
  30.     # 如果文本和对齐方式的至少一方与上次的不同
  31.     if align != nil
  32.         # 再描绘窗口和文本
  33.       self.width = 640
  34.       self.height = 64
  35.       self.x=0
  36.       self.y=0
  37.       self.contents = Bitmap.new(width - 32, height - 32)
  38.       self.contents.clear
  39.       self.contents.font.color = normal_color
  40.       self.contents.font.size = 20
  41.       self.contents.draw_text(4, 0, self.width - 48, 32, data, align)
  42.       self.visible = true
  43.       return
  44.     end
  45.     if data == nil
  46.       self.visible = false
  47.       @data = nil
  48.     end
  49.     if data != nil && @data != data
  50.       @data=data
  51.       self.visible = true
  52.       self.width = 180
  53.       self.height = 200
  54.       self.x=180
  55.       self.y=430
  56.       self.contents = Bitmap.new(width - 32, height - 32)
  57.       case @data
  58.       when RPG::Item
  59.         set_item_text(@data)
  60.       when RPG::Weapon
  61.         set_weapon_text(@data)
  62.       when RPG::Armor
  63.         set_armor_text(@data)
  64.       when RPG::Skill
  65.         set_skill_text(@data)
  66.       end
  67.     else
  68.       return
  69.     end
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 设置敌人
  73.   #     enemy : 要显示名字和状态的敌人
  74.   #--------------------------------------------------------------------------
  75.   def set_enemy(enemy)
  76.     text = enemy.name
  77.     state_text = make_battler_state_text(enemy, 0, false)
  78.     if state_text != ""
  79.       text += "  " + state_text
  80.     end
  81.     set_text(text, 1)
  82.     @data=nil
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 设置角色
  86.   #     actor : 要显示状态的角色
  87.   #--------------------------------------------------------------------------
  88.   def set_actor(actor)
  89.     if actor != @actor
  90.         self.width = 640
  91.         self.height = 64
  92.         self.x=0
  93.         self.y=0
  94.         self.contents = Bitmap.new(width - 32, height - 32)
  95.         self.contents.clear
  96.         self.contents.font.size=20
  97.         self.contents.font.color = normal_color
  98.       draw_actor_name(actor, 4, 0)
  99.       draw_actor_state(actor, 140, 0)
  100.       draw_actor_hp(actor, 284, 0)
  101.       draw_actor_sp(actor, 460, 0)
  102.       @actor = actor
  103.       @text = nil
  104.       self.visible = true
  105.     end
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 校正帮助窗口位置
  109.   #--------------------------------------------------------------------------
  110.   def set_pos(x,y,width,oy,index,column_max)
  111.     #光标坐标
  112.     cursor_width = width / column_max - 32
  113.     xx = index % column_max * (cursor_width + 32)
  114.     yy = index / column_max * 32 - oy
  115.     self.x=xx+x+150
  116.     self.y=yy+y+30
  117.     if self.x+self.width>640
  118.       self.x=640-self.width
  119.     end
  120.     if self.y+self.height>480
  121.       self.y=480-self.height
  122.     end  
  123.   end
  124. end


  125. class Window_Help < Window_Base
  126.   #--------------------------------------------------------------------------
  127.   # ● 物品帮助窗口
  128.   #--------------------------------------------------------------------------
  129.   def set_item_text(item)
  130.     @item=item
  131.     description=""
  132.     [email protected]
  133.     x=0
  134.     y=0
  135.        # 取得屬性、附加狀態、解除狀態之副本
  136.    element_set = @item.element_set.clone
  137.    plus_state_set = @item.plus_state_set.clone
  138.    minus_state_set = @item.minus_state_set.clone
  139.    # 過濾不顯示的描述
  140.    element_set -= UNSHOW_ELEMENT
  141.    plus_state_set -= UNSHOW_STATE
  142.    minus_state_set -= UNSHOW_STATE
  143.     height=1     #依要显示的内容确定高
  144.     #由描叙确定高
  145.     height+=description.size/3/10
  146.     if description.size%10!=0
  147.       height+=1
  148.     end
  149.     height+=3  #空行,效果范围,价格
  150.     if @item.recover_hp_rate!=0 #HP 回复率。
  151.       height+=1
  152.     end   
  153.     if @item.recover_hp!=0 #HP 回复量。
  154.       height+=1
  155.     end
  156.     if @item.recover_sp_rate!=0 #SP 回复率。
  157.       height+=1
  158.     end
  159.     if @item.recover_sp!=0 #SP 回复量。
  160.       height+=1
  161.     end
  162.     if @item.parameter_type!=0 #增加能力值
  163.       height+=1
  164.     end      
  165.     if element_set.empty?!=true  #属性。为属性 ID 的数组
  166.       height+=1
  167.     end
  168.     if plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  169.       height+=plus_state_set.size  
  170.     end
  171.     if minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  172.       height+=minus_state_set.size   
  173.     end     
  174.     self.height=height*15+40+15   
  175.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  176.     self.contents.clear
  177.     #描绘名字
  178.     [email protected]
  179.     self.contents.font.color =text_color(3)
  180.     self.contents.font.size=18
  181.     if text!=nil
  182.       self.visible = true
  183.       self.contents.draw_text(0,0, @item.name.size*7, 20, text, 0)
  184.     else
  185.       self.visible = false
  186.     end
  187.     x=0
  188.     y+=1
  189.     text=description
  190.     #描绘描叙
  191.     while ((text = description.slice!(/./m)) != nil)
  192.       self.contents.font.color = normal_color
  193.       self.contents.font.size=14
  194.       self.contents.draw_text(x*15, y*15+5, 14, 14, text, 0)
  195.       x+=1
  196.       if x==10#每行10个字
  197.         x=0
  198.         y+=1      
  199.       end
  200.     end
  201.     #由特技属性确定高
  202.     #效果范围
  203.     scope = {0=>"特殊物品",1=>"敌单体",2=>"敌全体",3=>"己方单体",4=>"己方全体",5=>"己方昏死单体",6=>"己方昏死全体",7=>"使用者"}#HASH表
  204.     text="范围:"+scope[@item.scope]
  205.     x=0
  206.     y+=2  #空一行
  207.     self.contents.font.color = normal_color
  208.     self.contents.font.size=14
  209.     self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  210.     #价格
  211.       x=0
  212.       y+=1      
  213.       text="价格:"[email protected]_s
  214.       self.contents.font.color = normal_color
  215.       self.contents.font.size=14   
  216.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  217.    
  218.     #HP 回复率   
  219.     if @item.recover_hp_rate!=0
  220.       x=0
  221.       y+=1      
  222.       text="回复气血:"[email protected]_hp_rate.to_s+"%"
  223.       self.contents.font.color = normal_color
  224.       self.contents.font.size=14   
  225.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)      
  226.     end
  227.     #HP回复量
  228.     if @item.recover_hp!=0
  229.       x=0
  230.       y+=1      
  231.       text="回复气血:"[email protected]_hp.to_s
  232.       self.contents.font.color = normal_color
  233.       self.contents.font.size=14   
  234.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  235.     end
  236.      #SP 回复率
  237.     if @item.recover_sp_rate!=0
  238.       x=0
  239.       y+=1      
  240.       text="回复魔法:"[email protected]_sp_rate.to_s+"%"
  241.       self.contents.font.color = normal_color
  242.       self.contents.font.size=14   
  243.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  244.     end
  245.     #SP 回复量
  246.     if @item.recover_sp!=0
  247.       x=0
  248.       y+=1      
  249.       text="回复魔法:"[email protected]_sp.to_s
  250.       self.contents.font.color = normal_color
  251.       self.contents.font.size=14   
  252.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  253.     end
  254.     #增加能力值
  255.     if @item.parameter_type!=0
  256.       parameter_type={1=>"最大气血",2=>"最大魔法",3=>$data_system.words.str,4=>$data_system.words.dex,5=>$data_system.words.agi,6=>$data_system.words.int}
  257.       x=0
  258.       y+=1
  259.       if @item.parameter_points>0
  260.         text="增加:"+parameter_type[@item.parameter_type]+" +"[email protected]_points.to_s
  261.       else
  262.         text="减少:"+parameter_type[@item.parameter_type][email protected]_points.to_s
  263.       end
  264.       self.contents.font.color = normal_color
  265.       self.contents.font.size=14   
  266.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  267.     end      
  268.    
  269.     #物品属性   
  270.     if element_set.empty?!=true  #属性。为属性 ID 的数组
  271.       text="属性:"
  272.       for i in 0...element_set.size
  273.         text+=$data_system.elements[element_set[i]]+" "
  274.       end
  275.       x=0
  276.       y+=1
  277.       self.contents.font.color = normal_color
  278.       self.contents.font.size=14
  279.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  280.     end
  281.     #附加状态
  282.     if plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  283.       text="附加状态:"
  284.       x=0
  285.       y+=1
  286.       self.contents.font.color = normal_color
  287.       self.contents.font.size=14
  288.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  289.       y-=1
  290.       x+=text.size*5      
  291.       for i in 0...plus_state_set.size
  292.         y+=1
  293.         text=$data_states[plus_state_set[i]].name        
  294.         self.contents.font.color = normal_color
  295.         self.contents.font.size=14
  296.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  297.       end  
  298.     end
  299.     #解除状态
  300.     if minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  301.       text="解除状态:"
  302.       x=0
  303.       y+=1
  304.       self.contents.font.color = normal_color
  305.       self.contents.font.size=14
  306.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  307.       y-=1
  308.       x+=text.size*5      
  309.       for i in 0...minus_state_set.size
  310.         y+=1
  311.         text=$data_states[minus_state_set[i]].name        
  312.         self.contents.font.color = normal_color
  313.         self.contents.font.size=14
  314.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  315.       end  
  316.     end     
  317.   end
  318. end

  319. class Window_Help < Window_Base
  320.   #--------------------------------------------------------------------------
  321.   # ● 武器帮助窗口
  322.   #--------------------------------------------------------------------------
  323.   
  324.   def set_weapon_text(weapon)
  325.     @weapon=weapon
  326.     description=""
  327.     [email protected]
  328.    # 取得屬性、附加狀態、解除狀態之副本
  329.    element_set = @weapon.element_set.clone
  330.    plus_state_set = @weapon.plus_state_set.clone
  331.    minus_state_set = @weapon.minus_state_set.clone
  332.    # 過濾不顯示的描述
  333.    element_set -= UNSHOW_ELEMENT
  334.    plus_state_set -= UNSHOW_STATE
  335.    minus_state_set -= UNSHOW_STATE
  336.    
  337.    

  338.     x=0
  339.     y=0
  340.     height=1     #依要显示的内容确定高
  341.     #由描叙确定高
  342.     height+=description.size/3/10
  343.     if description.size%10!=0
  344.       height+=1
  345.     end
  346.     height+=4  #2个空行,攻击,价格
  347.     if @weapon.pdef!=0 #物理防御
  348.       height+=1
  349.     end      
  350.     if @weapon.mdef!=0 #魔法防御
  351.       height+=1
  352.     end
  353.     if @weapon.str_plus!=0 #力量
  354.       height+=1
  355.     end
  356.     if @weapon.dex_plus!=0#体质
  357.       height+=1
  358.     end
  359.     if @weapon.agi_plus!=0#敏捷
  360.       height+=1
  361.     end
  362.     if @weapon.int_plus!=0 #智力
  363.       height+=1
  364.     end      
  365.     if element_set.empty?!=true  #属性。为属性 ID 的数组
  366.       height+=1
  367.     end  
  368.     if plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  369.       height+=plus_state_set.size  
  370.     end
  371.     if minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  372.       height+=minus_state_set.size   
  373.     end     
  374.     self.height=height*15+40+15   
  375.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  376.     self.contents.clear
  377.     #描绘名字
  378.     [email protected]
  379.     self.contents.font.color = text_color(1)#颜色脚本
  380.     self.contents.font.size=18
  381.     if text!=nil
  382.       self.visible = true
  383.       self.contents.draw_text(0,0, @weapon.name.size*7, 20, text, 0)
  384.     else
  385.       self.visible = false
  386.     end
  387.     x=0
  388.     y+=1
  389.     text=description
  390.     #描绘描叙
  391.     while ((text = description.slice!(/./m)) != nil)
  392.       self.contents.font.color = normal_color
  393.       self.contents.font.size=14
  394.       self.contents.draw_text(x*15, y*15+5, 14, 14, text, 0)
  395.       x+=1
  396.       if x==10#每行10个字
  397.         x=0
  398.         y+=1      
  399.       end
  400.     end
  401.     #由特技属性确定高
  402.    
  403.     #攻击
  404.       x=0
  405.       y+=2 #空行     
  406.       text="攻击:"[email protected]_s
  407.       self.contents.font.color = text_color(6)#颜色脚本
  408.       self.contents.font.size=14   
  409.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)      
  410.     #价格
  411.       x=0
  412.       y+=1      
  413.       text="价格:"[email protected]_s
  414.       self.contents.font.color = normal_color
  415.       self.contents.font.size=14   
  416.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  417.       #耐久度
  418.       dur_set = @weapon.dur_set
  419.       dur = @weapon.dur
  420.       text = "耐久度: #{dur}"
  421.       self.contents.font.color = text_color(6)#颜色脚本
  422.       self.contents.font.size=14
  423.       self.contents.draw_text(x-1, y*15+20, text.size*6, 14, text, 0)
  424.       
  425.     if @weapon.pdef!=0 #物理防御
  426.       x=0
  427.       y+=1      
  428.       text="物理防御:"[email protected]_s
  429.       self.contents.font.color = text_color(6)#颜色脚本
  430.       self.contents.font.size=14   
  431.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  432.     end      
  433.     if @weapon.mdef!=0 #魔法防御
  434.       x=0
  435.       y+=1      
  436.       text="魔法防御:"[email protected]_s
  437.       self.contents.font.color = text_color(6)#颜色脚本
  438.       self.contents.font.size=14   
  439.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  440.     end

  441.     #武器属性   
  442.     if element_set.empty? != true  #属性。为属性 ID 的数组
  443.       text="属性:"
  444.       for i in 0...element_set.size
  445.         text+=$data_system.elements[element_set[i]]+" "
  446.       end
  447.       x=0
  448.       y+=1
  449.       self.contents.font.color = normal_color
  450.       self.contents.font.size=14
  451.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  452.     end
  453.     #附加状态
  454.     if plus_state_set.empty? != true  #附加状态。为状态 ID 的数组
  455.       text="附加状态:"
  456.       x=0
  457.       y+=1
  458.       self.contents.font.color = normal_color
  459.       self.contents.font.size=14
  460.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  461.       y-=1
  462.       x+=text.size*5      
  463.       for i in 0...plus_state_set.size
  464.         y+=1
  465.         text=$data_states[plus_state_set[i]].name        
  466.         self.contents.font.color = normal_color
  467.         self.contents.font.size=14
  468.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  469.       end  
  470.     end
  471.     #解除状态
  472.     if minus_state_set.empty? != true  #解除状态。为状态 ID 的数组
  473.       text="解除状态:"
  474.       x=0
  475.       y+=1
  476.       self.contents.font.color = normal_color
  477.       self.contents.font.size=14
  478.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  479.       y-=1
  480.       x+=text.size*5      
  481.       for i in 0...minus_state_set.size
  482.         y+=1
  483.         text=$data_states[minus_state_set[i]].name        
  484.         self.contents.font.color = normal_color
  485.         self.contents.font.size=14
  486.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  487.       end  
  488.     end
  489.     y+=1 #空行
  490.     if @weapon.str_plus!=0 #力量
  491.       x=0
  492.       y+=1
  493.       if @weapon.str_plus > 0
  494.         text=$data_system.words.str+"  + "[email protected]_plus.to_s
  495.       else
  496.         [email protected]_plus
  497.         text=$data_system.words.str+"  - "+str_minus.to_s
  498.       end
  499.       self.contents.font.color = text_color(6)#颜色脚本
  500.       self.contents.font.size=14   
  501.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  502.     end
  503.     if @weapon.dex_plus!=0#体质
  504.       x=0
  505.       y+=1      
  506.       if @weapon.dex_plus > 0
  507.         text=$data_system.words.dex+"  + "[email protected]_plus.to_s
  508.       else
  509.         [email protected]_plus
  510.         text=$data_system.words.dex+"  - "+dex_minus.to_s
  511.       end
  512.       self.contents.font.color = text_color(6)#颜色脚本
  513.       self.contents.font.size=14   
  514.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  515.     end
  516.     if @weapon.agi_plus!=0#敏捷
  517.       x=0
  518.       y+=1      
  519.       if @weapon.agi_plus > 0
  520.         text=$data_system.words.agi+"  + "[email protected]_plus.to_s
  521.       else
  522.         [email protected]_plus
  523.         text=$data_system.words.agi+"  - "+agi_minus.to_s
  524.       end
  525.       self.contents.font.color = text_color(6)#颜色脚本
  526.       self.contents.font.size=14   
  527.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  528.     end
  529.     if @weapon.int_plus!=0 #智力
  530.       x=0
  531.       y+=1      
  532.       if @weapon.int_plus > 0
  533.         text=$data_system.words.int+"  + "[email protected]_plus.to_s
  534.       else
  535.         [email protected]_plus
  536.         text=$data_system.words.int+"  - "+int_minus.to_s
  537.       end
  538.       self.contents.font.color = text_color(6)#颜色脚本
  539.       self.contents.font.size=14   
  540.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  541.       
  542.       
  543.    
  544.     end
  545.   end
  546. end

  547. class Window_Help < Window_Base
  548.     #--------------------------------------------------------------------------
  549.   # ● 防具帮助窗口
  550.   #--------------------------------------------------------------------------
  551.     def set_armor_text(armor)
  552.     @armor=armor
  553.     description=""
  554.     [email protected]
  555.    # 取得屬性、附加狀態、解除狀態之副本
  556.    element_set = @armor.guard_element_set.clone
  557.    guard_state_set = @armor.guard_state_set.clone
  558.    # 過濾不顯示的描述
  559.    element_set -= UNSHOW_ELEMENT
  560.    guard_state_set -= UNSHOW_STATE
  561.     x=0
  562.     y=0
  563.     height=1     #依要显示的内容确定高
  564.     #由描叙确定高
  565.     height+=description.size/3/10
  566.     if description.size%10 !=0
  567.       height+=1
  568.     end
  569.     height+=2  #2个空行,价格
  570.     if @armor.pdef !=0 #物理防御
  571.       height+=1
  572.     end      
  573.     if @armor.mdef !=0 #魔法防御
  574.       height+=1
  575.     end
  576.     if @armor.str_plus !=0 #力量
  577.       height+=1
  578.     end
  579.     if @armor.dex_plus !=0#体质
  580.       height+=1
  581.     end
  582.     if @armor.agi_plus !=0#敏捷
  583.       height+=1
  584.     end
  585.     if @armor.int_plus !=0 #智力
  586.       height+=1
  587.     end      
  588.     if element_set.empty? != true  #属性防御。为属性 ID 的数组
  589.       height+=1
  590.     end  
  591.     if guard_state_set.empty? != true  #状态防御。为状态 ID 的数组
  592.       height+=guard_state_set.size  
  593.     end   
  594.     self.height=height*16+70  
  595.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  596.     self.contents.clear
  597.     #描绘名字
  598.     [email protected]
  599.     self.contents.font.color = text_color(1)#颜色脚本
  600.     self.contents.font.size=18
  601.     if text!=nil
  602.       self.visible = true
  603.       self.contents.draw_text(0,0, @armor.name.size*7, 20, text, 0)
  604.     else
  605.       self.visible = false
  606.     end
  607.     x=0
  608.     y+=1
  609.     text=description
  610.     #描绘描叙
  611.     while ((text = description.slice!(/./m)) != nil)
  612.       self.contents.font.color = normal_color
  613.       self.contents.font.size=14
  614.       self.contents.draw_text(x*15, y*15+5, 14, 14, text, 0)
  615.       x+=1
  616.       if x==10#每行10个字
  617.         x=0
  618.         y+=1      
  619.       end
  620.     end
  621.     #由特技属性确定高
  622.    
  623.    
  624.     #价格
  625.       x=0
  626.       y+=2#空行      
  627.       text="价格:"[email protected]_s
  628.       self.contents.font.color = normal_color
  629.       self.contents.font.size=14   
  630.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  631.       x=0
  632.       y+=1  
  633.       #耐久度
  634.     dur_set = @weapon.dur_set
  635.     dur = @weapon.dur
  636.     text = "耐久度: #{dur}"
  637.     self.contents.font.color = text_color(6)#颜色脚本
  638.     self.contents.font.size=14
  639.     self.contents.draw_text(x-1, y*15+35, text.size*6, 14, text, 0)
  640.    
  641.     if @armor.pdef!=0 #物理防御
  642.       text="物理防御:"[email protected]_s
  643.       self.contents.font.color = text_color(6)#颜色脚本
  644.       self.contents.font.size=14   
  645.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  646.       x=0
  647.       y+=1      
  648.     end      
  649.     if @armor.mdef!=0 #魔法防御
  650.       text="魔法防御:"[email protected]_s
  651.       self.contents.font.color = text_color(6)#颜色脚本
  652.       self.contents.font.size=14   
  653.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  654.       x=0
  655.       y+=1      
  656.     end

  657.     #属性防御   
  658.     if element_set.empty? !=true  #属性。为属性 ID 的数组
  659.       text="属性防御:"
  660.       for i in 0...element_set.size
  661.         text+=$data_system.elements[element_set[i]]+" "
  662.       end
  663.       x=0
  664.       y+=1
  665.       self.contents.font.color = normal_color
  666.       self.contents.font.size=14
  667.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  668.     end
  669.     #状态防御
  670.     if guard_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  671.       text="状态防御:"
  672.       x=0
  673.       y+=1
  674.       self.contents.font.color = normal_color
  675.       self.contents.font.size=14
  676.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  677.       y-=1
  678.       x+=text.size*5      
  679.       for i in 0...guard_state_set.size
  680.         y+=1
  681.         text=$data_states[guard_state_set[i]].name        
  682.         self.contents.font.color = normal_color
  683.         self.contents.font.size=14
  684.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  685.       end  
  686.     end

  687. #    y+=1 #空行
  688.     if @armor.str_plus!=0 #力量
  689.       x=0
  690.       y+=1
  691.       if @armor.str_plus > 0
  692.         text=$data_system.words.str+"  + "[email protected]_plus.to_s
  693.       else
  694.         [email protected]_plus
  695.         text=$data_system.words.str+"  - "+str_minus.to_s
  696.       end
  697.       self.contents.font.color = text_color(6)#颜色脚本
  698.       self.contents.font.size=14   
  699.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  700.     end
  701.     if @armor.dex_plus!=0#体质
  702.       x=0
  703.       y+=1      
  704.       if @armor.dex_plus > 0
  705.         text=$data_system.words.dex+"  + "[email protected]_plus.to_s
  706.       else
  707.         [email protected]_plus
  708.         text=$data_system.words.dex+"  - "+dex_minus.to_s
  709.       end
  710.       self.contents.font.color = text_color(6)#颜色脚本
  711.       self.contents.font.size=14   
  712.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  713.     end
  714.     if @armor.agi_plus!=0#敏捷
  715.       x=0
  716.       y+=1      
  717.       if @armor.agi_plus > 0
  718.         text=$data_system.words.agi+"  + "[email protected]_plus.to_s
  719.       else
  720.         [email protected]_plus
  721.         text=$data_system.words.agi+"  - "+agi_minus.to_s
  722.       end
  723.       self.contents.font.color = text_color(6)#颜色脚本
  724.       self.contents.font.size=14   
  725.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  726.     end
  727.     if @armor.int_plus!=0 #智力
  728.       x=0
  729.       y+=1      
  730.       if @armor.int_plus > 0
  731.         text=$data_system.words.int+"  + "[email protected]_plus.to_s
  732.       else
  733.         [email protected]_plus
  734.         text=$data_system.words.int+"  - "+int_minus.to_s
  735.       end
  736.       self.contents.font.color = text_color(6)#颜色脚本
  737.       self.contents.font.size=14   
  738.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  739.     end
  740.   end
  741. end


  742. class Window_Help < Window_Base
  743.     #--------------------------------------------------------------------------
  744.   # ● 技能帮助窗口
  745.   #--------------------------------------------------------------------------
  746.   def set_skill_text(skill)
  747.     @skill=skill
  748.     description=""
  749.     [email protected]
  750.    # 取得屬性、附加狀態、解除狀態之副本
  751.    element_set = @skill.element_set.clone
  752.    plus_state_set = @skill.plus_state_set.clone
  753.    minus_state_set = @skill.minus_state_set.clone
  754.    # 過濾不顯示的描述
  755.    element_set -= UNSHOW_ELEMENT
  756.    plus_state_set -= UNSHOW_STATE
  757.    minus_state_set -= UNSHOW_STATE
  758.     x=0
  759.     y=0
  760.     height=1     #依要显示的内容确定高
  761.     #由描叙确定高
  762.     height+=description.size/3/10
  763.     if description.size%10!=0
  764.       height+=1
  765.     end
  766.     height+=4  #空行,效果范围,消费SP,命中率
  767.     if @skill.power!=0  #威力,威力为0,则可能为状态魔法
  768.       height+=1
  769.     end
  770.     if element_set.empty?!=true  #属性。为属性 ID 的数组
  771.       height+=1
  772.     end  
  773.     if plus_state_set.empty?!=true  #附加状态。为状态 ID 的数组
  774.       height+=plus_state_set.size  
  775.     end
  776.     if minus_state_set.empty?!=true  #解除状态。为状态 ID 的数组
  777.       height+=minus_state_set.size   
  778.     end     
  779.     self.height=height*15+40+15   
  780.     self.contents = Bitmap.new(self.width - 32,self.height - 32)
  781.     self.contents.clear
  782.     #描绘名字
  783.     [email protected]
  784.     self.contents.font.color =text_color(6)
  785.     self.contents.font.size=18
  786.     if text!=nil
  787.       self.visible = true
  788.       self.contents.draw_text(0,0, @skill.name.size*7, 20, text, 0)
  789.     else
  790.       self.visible = false
  791.     end
  792.     x=0
  793.     y+=1
  794.     text=description
  795.     #描绘描叙
  796.     while ((text = description.slice!(/./m)) != nil)
  797.       self.contents.font.color = normal_color
  798.       self.contents.font.size=14
  799.       self.contents.draw_text(x*15, y*15+5, 14, 14, text, 0)
  800.       x+=1
  801.       text
  802.       if x==10#每行10个字
  803.         x=0
  804.         y+=1      
  805.       end
  806.     end
  807.     #由特技属性确定高
  808.     #效果范围
  809.    
  810.     scope = {0=>"特殊技能",1=>"敌单体",2=>"敌全体",3=>"己方单体",4=>"己方全体",5=>"己方昏死单体",6=>"己方昏死全体",7=>"使用者"}#HASH表
  811.     text="范围:"+scope[@skill.scope]
  812.     x=0
  813.     y+=2  #空一行
  814.     self.contents.font.color = normal_color
  815.     self.contents.font.size=14
  816.     self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  817.    
  818.     #威力
  819.     if @skill.power!=0
  820.       x=0
  821.       y+=1
  822.       [email protected] > 0 ? @skill.power : -1* @skill.power
  823.       text="威力:"+c.to_s
  824.       self.contents.font.color = normal_color
  825.       self.contents.font.size=14   
  826.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  827.     end  
  828.     #描绘消费SP
  829.     x=0
  830.     y+=1
  831.     text="消耗SP:"[email protected]_cost.to_s
  832.     self.contents.font.color = normal_color
  833.     self.contents.font.size=14   
  834.     self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  835.     #命中率
  836.     x=0
  837.     y+=1
  838.     text="命中率:"[email protected]_s+"%"
  839.     self.contents.font.color = normal_color
  840.     self.contents.font.size=14
  841.     self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  842.     #攻击属性
  843.    
  844.     if element_set.empty? != true  #属性。为属性 ID 的数组
  845.       text="属性:"
  846.       for i in 0...element_set.size
  847.         text+=$data_system.elements[element_set[i]]+" "
  848.       end
  849.       x=0
  850.       y+=1
  851.       self.contents.font.color = normal_color
  852.       self.contents.font.size=14
  853.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  854.     end
  855.     #附加状态
  856.     if plus_state_set.empty? != true  #附加状态。为状态 ID 的数组
  857.       text="附加状态:"
  858.       x=0
  859.       y+=1
  860.       self.contents.font.color = normal_color
  861.       self.contents.font.size=14
  862.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  863.       y-=1
  864.       x+=text.size*5      
  865.       for i in 0...plus_state_set.size
  866.         y+=1
  867.         text=$data_states[plus_state_set[i]].name        
  868.         self.contents.font.color = normal_color
  869.         self.contents.font.size=14
  870.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  871.       end  
  872.     end
  873.     #解除状态
  874.     if minus_state_set.empty? != true  #解除状态。为状态 ID 的数组
  875.       text="解除状态:"
  876.       x=0
  877.       y+=1
  878.       self.contents.font.color = normal_color
  879.       self.contents.font.size=14
  880.       self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)
  881.       y-=1
  882.       x+=text.size*5      
  883.       for i in 0...minus_state_set.size
  884.         y+=1
  885.         text=$data_states[minus_state_set[i]].name        
  886.         self.contents.font.color = normal_color
  887.         self.contents.font.size=14
  888.         self.contents.draw_text(x, y*15+5, text.size*6, 14, text, 0)        
  889.       end  
  890.     end     
  891.   end
  892. end

  893. class Window_Item < Window_Selectable
  894.   #--------------------------------------------------------------------------
  895.   # ● 刷新帮助文本
  896.   #--------------------------------------------------------------------------
  897.   def update_help
  898. #    @help_window.set_text(self.item == nil ? "" : self.item.description)
  899.     @help_window.set_text(item)
  900.     #校正帮助窗口位置
  901.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  902.   end
  903. end
  904. class Window_Skill < Window_Selectable
  905.   #--------------------------------------------------------------------------
  906.   # ● 刷新帮助文本
  907.   #--------------------------------------------------------------------------
  908.   def update_help
  909. #    @help_window.set_text(self.skill == nil ? "" : self.skill.description)
  910.     @help_window.set_text(skill)
  911.     #校正帮助窗口位置
  912.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  913.   end
  914. end
  915. class Window_EquipRight < Window_Selectable
  916.   def update_help
  917. #    @help_window.set_text(self.item == nil ? "" : self.item.description)
  918.     @help_window.set_text(item)
  919.     #校正帮助窗口位置
  920.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  921.   end
  922. end
  923. class Window_EquipItem < Window_Selectable
  924.   def update_help
  925. #    @help_window.set_text(self.item == nil ? "" : self.item.description)
  926.     @help_window.set_text(item)
  927.     #校正帮助窗口位置
  928.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  929.   end
  930. end
  931. class Window_ShopBuy < Window_Selectable
  932.   def update_help
  933.     @help_window.set_text(item)
  934.     #校正帮助窗口位置
  935.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  936.   end
  937. end
  938. class Window_ShopSell < Window_Selectable
  939.   def update_help
  940.     @help_window.set_text(item)
  941.     #校正帮助窗口位置
  942.     @help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
  943.   end
  944. end


复制代码
  1. class Game_Party

  2. def gain_weapon(weapon_id, n)
  3.    if weapon_id > 0
  4.      #  装备栏中卸下的武器和物品栏里卸下的武器不进行随机处理~
  5.      if $scene.is_a?(Scene_Equip)or$scene.is_a?(Scene_Item)
  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+" 破烂"
  27.              if add_atk<10
  28.              new_weapon.name = $data_weapons[weapon_id].name+" 粗糙"
  29.            end
  30.            else            
  31.              if add_atk<10
  32.             new_weapon.name = $data_weapons[weapon_id].name+" 精良"
  33.           else
  34.             new_weapon.name = $data_weapons[weapon_id].name+" 极品"
  35.           end
  36.            end
  37.            new_weapon.atk = $data_weapons[weapon_id].atk+add_atk
  38.            $data_weapons.push(new_weapon)
  39.            # 职业可装备武器数组更新~
  40.            for i in 1...$data_classes.size
  41.              if $data_classes[i].weapon_set.include?(weapon_id)
  42.                $data_classes[i].weapon_set.push(new_weapon.id)
  43.              end
  44.            end
  45.            # 增加武器~
  46.            @weapons[new_weapon.id] = [[weapon_number(new_weapon.id) + n, 0].max, 99].min
  47.          else
  48.            # 有相同属性则直接 增加武器~
  49.            @weapons[now] = [[weapon_number(now) + n, 0].max, 99].min
  50.          end
  51.        end
  52.      end
  53.    end
  54. end

  55. def lose_weapon(weapon_id, n)   
  56.    if weapon_id > 0
  57.      @weapons[weapon_id] = [[weapon_number(weapon_id) - n, 0].max, 99].min
  58.    end
  59. end

  60. end
复制代码
本人处男作《江湖传之剑侠情》
脚本 ||||||||80%
声音 ||15%
素材 |||30%
剧情 |||||||||90%
物品 ||||||60%
地图 |6%
技能 |10%
职业 |||||||70%
综合 |||26%
━━━━━━━━━━━━━━━━━━━━━
已用时:68小时

Lv1.梦旅人

梦石
0
星屑
70
在线时间
275 小时
注册时间
2008-10-22
帖子
205
2
 楼主| 发表于 2011-3-6 10:50:44 | 只看该作者
人工置顶
没人么
本人处男作《江湖传之剑侠情》
脚本 ||||||||80%
声音 ||15%
素材 |||30%
剧情 |||||||||90%
物品 ||||||60%
地图 |6%
技能 |10%
职业 |||||||70%
综合 |||26%
━━━━━━━━━━━━━━━━━━━━━
已用时:68小时
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
275 小时
注册时间
2008-10-22
帖子
205
3
 楼主| 发表于 2011-3-6 18:41:07 | 只看该作者
再次人工置顶
前辈们,帮帮我
本人处男作《江湖传之剑侠情》
脚本 ||||||||80%
声音 ||15%
素材 |||30%
剧情 |||||||||90%
物品 ||||||60%
地图 |6%
技能 |10%
职业 |||||||70%
综合 |||26%
━━━━━━━━━━━━━━━━━━━━━
已用时:68小时
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
93 小时
注册时间
2009-10-16
帖子
235
4
发表于 2011-3-6 22:16:42 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
275 小时
注册时间
2008-10-22
帖子
205
5
 楼主| 发表于 2011-3-11 22:54:22 | 只看该作者
本帖最后由 u566 于 2011-3-11 22:58 编辑

回复 qaz4633063 的帖子

我主要想改的是装备修复界面,脚本和在一起不正常
[
本人处男作《江湖传之剑侠情》
脚本 ||||||||80%
声音 ||15%
素材 |||30%
剧情 |||||||||90%
物品 ||||||60%
地图 |6%
技能 |10%
职业 |||||||70%
综合 |||26%
━━━━━━━━━━━━━━━━━━━━━
已用时:68小时
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
93 小时
注册时间
2009-10-16
帖子
235
6
发表于 2011-3-12 05:48:20 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
275 小时
注册时间
2008-10-22
帖子
205
7
 楼主| 发表于 2011-3-12 11:33:35 | 只看该作者
回复 qaz4633063 的帖子

当装备没有损坏时打开装备修复界面就悲剧了
本人处男作《江湖传之剑侠情》
脚本 ||||||||80%
声音 ||15%
素材 |||30%
剧情 |||||||||90%
物品 ||||||60%
地图 |6%
技能 |10%
职业 |||||||70%
综合 |||26%
━━━━━━━━━━━━━━━━━━━━━
已用时:68小时
回复

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
93 小时
注册时间
2009-10-16
帖子
235
8
发表于 2011-3-13 04:09:07 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
275 小时
注册时间
2008-10-22
帖子
205
9
 楼主| 发表于 2011-3-13 12:38:37 | 只看该作者
本帖最后由 u566 于 2011-3-13 12:40 编辑

回复 qaz4633063 的帖子

我看过你的工程了,我的工程用的是KKME系统
KKME系统重定义过windows_help
现在找不到脚本了
我工程太大发不上来
算了吧
其实主要应该是耐久度和KKME系统冲突

点评

其实有30+小时了,一直没更新签名...  发表于 2011-3-13 12:45
我是打酱油的,看到汝的签名做个游戏才7.8小时就做了这么多肯定不强?……大雾,其实我就是说,整合脚本很贵的……  发表于 2011-3-13 12:40
本人处男作《江湖传之剑侠情》
脚本 ||||||||80%
声音 ||15%
素材 |||30%
剧情 |||||||||90%
物品 ||||||60%
地图 |6%
技能 |10%
职业 |||||||70%
综合 |||26%
━━━━━━━━━━━━━━━━━━━━━
已用时:68小时
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-29 04:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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