Project1

标题: 怎么在武器前加上强化等级?、 [打印本页]

作者: 见习魔法师    时间: 2013-2-2 14:19
标题: 怎么在武器前加上强化等级?、
这个装备强化脚本,怎么在强化过的武器前加上强化等级,如短剑,强化后变成+1短剑。
另可不可以把强化后出现的信息(就是强化后显示用了多少钱,成功还是失败,成功加了多少攻击的那个信息)变成按空格消失,要不然太快了,一闪就过去了,眼神慢的根本就看不到啊、、

RUBY 代码复制
  1. #==============================================================================
  2. # ■ 强化系统 优化版
  3. #------------------------------------------------------------------------------
  4. #  强化系统  wyongcan制作
  5. # 优化版更新内容:优化了语法,修复部分BUG,使代码可读性增强,增加了宝石选择窗口
  6. # 发布于66RPG  转载请保留版权信息
  7. #==============================================================================
  8. module Qiang
  9. $maxlv = 12  #最高升到的级数
  10. $gailv = [100,80,70,60,50,30,20,10,5,5,5,5,1] #每级提升概率
  11. $gemlv = [[60,23],[10,28],[25,29],[40,30]] #使用宝石提高的几率  [提高几率,宝石ID]
  12. $uplv = [[12,24],[3,25],[6,26],[9,27]] #强化所需要的强化石 [最大强化到的等级,强化石ID]
  13. $xxlv = [0,0,5,10,15,20,25,30,30,40,40,45,60] #每级强化后失败物品消失的几率
  14. $jjlv = [0,10,15,20,30,45,55,65,70,70,75,80,100] #每级强化后失败物品降级的几率
  15. $tsnl = [50,70,90,110,130,150,170,190,210,230,250,270,325] #每级强化提升能力的百分比
  16. $tswp = [31,32] # 意思是:如果有31号物品则失败后物品不消失,如果有32号物品则失败后物品不降级
  17. #武器强化后的计算公式为: 原攻击 * (1 + 提升能力百分比) + (0到当前强化级数随机) * 5 + 当前强化级数
  18. $gemlv.sort!
  19. $uplv.sort!
  20. $当前使用宝石id = 0
  21. $当前使用宝石加成率 = 0
  22. $强化哈希表 = {
  23. "最高等级" => $maxlv ,
  24. "每级概率" => $gailv ,
  25. "宝石效果" => $gemlv ,
  26. "消失几率" => $xxlv  ,
  27. "降级几率" => $jjlv  ,
  28. "提升能力" => $tsnl  ,
  29. "特殊物品" => $tswp  ,
  30. "强化材料" => $uplv  }
  31. def self.idlostitem(id,amount = 1)
  32.   $game_party.lose_item(idgetitem(id),amount)
  33. end
  34.  
  35. def self.idlostequip(id,weapon = true,amount = 1)
  36.   weapon == true ? $game_party.lose_item($data_weapons[id],amount,true) : $game_party.lose_item($data_armors[id],amount,true)
  37. end
  38.  
  39. def self.idgainequip(id,weapon = true,amount = 1)
  40.   weapon == true ? $game_party.gain_item($data_weapons[id],amount,true) : $game_party.gain_item($data_armors[id],amount,true)
  41. end
  42.  
  43. def self.idgetitem(id)
  44.   $data_items[id]
  45. end
  46.  
  47. def self.equipable?(id,weapon = true)
  48.   weapon == true ? weaponupisnil(id) : armorupisnil(id)
  49.   weapon == true ? equip = $data_weapons[id].dup : equip = $data_armors[id].dup
  50.   price = equip.price
  51.   @needmoney = price * equip.up
  52.   if @needmoney == 0
  53.     @needmoney = price / 2
  54.   end
  55. #循环取出需要的强化材料
  56.   temp = false
  57.   for i in $强化哈希表["强化材料"]
  58.     if equip.up < i[0]
  59.       @lostitem = idgetitem i[1]
  60.       $game_party.has_item?(idgetitem(i[1])) ? temp = true : temp = false
  61.       break
  62.     end
  63.   end
  64.   $game_party.gold >= @needmoney && temp == true ? true : false
  65. end
  66.  
  67. def self.upweapon (id)
  68.   $message = ""
  69.   success = false
  70.   weaponupisnil(id)
  71.   weapon = $data_weapons[id].dup
  72.   gl = 0
  73.   fangb = false
  74.   fangj = false
  75.   return unless weapon.up < $强化哈希表["最高等级"] && weaponupable?(id)
  76.   loststh
  77.   $message += "本次强化,共消耗:" + Vocab::currency_unit + " " + @needmoney.to_s
  78.   $message += " " + @lostitem.name + "\n "
  79.   gl = $强化哈希表["每级概率"][weapon.up]
  80.   if $usegem == true
  81.     gl += $当前使用宝石加成率
  82.     idlostitem($当前使用宝石id)
  83.     $message += idgetitem($当前使用宝石id).name + " "
  84.   end
  85.   if $fangb == true
  86.     fangb = true
  87.     idlostitem $强化哈希表["特殊物品"][0]
  88.     $message += idgetitem($强化哈希表["特殊物品"][0]).name + " "
  89.   end
  90.   if $fangj == true
  91.     fangj = true
  92.     idlostitem $强化哈希表["特殊物品"][1]
  93.     $message += idgetitem($强化哈希表["特殊物品"][1]).name + " "
  94.   end
  95.   suiji = rand (100)
  96.   if suiji <= gl
  97.     success = true
  98.   end
  99.   $message += "\n强化结果:"
  100.   if success == true
  101.     $message += "强化成功"
  102.     idlostequip id
  103.     weapon.id = $data_weapons.size
  104.     params = weapon.params.dup
  105.     params[2] *= 1 + $强化哈希表["提升能力"][weapon.up] / 100
  106.     params[2] += rand(weapon.up) * 5 + weapon.up
  107.     params[2] += 1 if params[2] == weapon.params[2]
  108.     $message += " 攻击力提升:" + (params[2] - weapon.params[2]).to_int.to_s
  109.     weapon.up += 1
  110.     $data_weapons.insert $data_weapons.size,weapon
  111.     $data_weapons[$data_weapons.size-1].params = params
  112.     idgainequip weapon.id
  113.   else
  114.     $message += "强化失败"
  115.     suiji = rand (100)
  116.     if suiji <= $强化哈希表["消失几率"][weapon.up]
  117.       if fangb != true
  118.       $message += ",道具消失"
  119.       idlostequip id
  120.       else
  121.       $message += ",由于" + idgetitem($强化哈希表["特殊物品"][0]).name + "的作用,道具未消失"
  122.       end
  123.     else
  124.       suiji = rand (100)
  125.       if suiji <= $强化哈希表["降级几率"][weapon.up]
  126.         if fangj == false && weapon.up != 0
  127.           $message += ",道具降级"
  128.           params = weapon.params.dup
  129.           params[2] -= weapon.up + rand(weapon.up) * 5
  130.           params[2] /= 1 + $强化哈希表["提升能力"][weapon.up] / 100
  131.           weapon.params = params
  132.           weapon.up -= 1
  133.           $data_weapons[id] = weapon
  134.         else
  135.           $message += ",由于" + idgetitem($强化哈希表["特殊物品"][1]).name + "的作用,道具未降级"
  136.         end
  137.       end
  138.     end
  139.   end
  140.    $usegem = false
  141.    $fangb = false
  142.    $fangj = false
  143. end
  144.  
  145. def self.weaponupisnil(id)
  146.    $data_weapons[id].up = 0 unless $data_weapons[id].up != nil
  147. end
  148.  
  149. def self.weaponupable?(id)
  150.   equipable?(id)
  151. end
  152.  
  153. def self.uparmor (id)
  154.   $message = ""
  155.   success = false
  156.   armorupisnil(id)
  157.   armor = $data_armors[id].dup
  158.   gl = 0
  159.   fangb = false
  160.   fangj = false
  161.   return unless armor.up < $强化哈希表["最高等级"] && armorupable?(id)
  162.   loststh
  163.   $message += "本次强化,共消耗:" + Vocab::currency_unit + " " + @needmoney.to_s
  164.   $message += " " + @lostitem.name + "\n "
  165.   gl = $强化哈希表["每级概率"][armor.up]
  166.   if $usegem == true
  167.     gl += $当前使用宝石加成率
  168.     idlostitem($当前使用宝石id)
  169.     $message += idgetitem($当前使用宝石id).name + " "
  170.   end
  171.   if $fangb == true
  172.     fangb = true
  173.     idlostitem $强化哈希表["特殊物品"][0]
  174.     $message += idgetitem($强化哈希表["特殊物品"][0]).name + " "
  175.   end
  176.   if $fangj == true
  177.     fangj = true
  178.     idlostitem $强化哈希表["特殊物品"][1]
  179.     $message += idgetitem($强化哈希表["特殊物品"][1]).name + " "
  180.   end
  181.   suiji = rand (100)
  182.   if suiji <= gl
  183.     success = true
  184.   end
  185.   $message += "\n强化结果:"
  186.   if success == true
  187.     $message += "强化成功"
  188.     idlostequip id,false
  189.     armor.id = $data_armors.size
  190.     params = armor.params.dup
  191.     params[3] *= 1 + $强化哈希表["提升能力"][armor.up] / 100
  192.     params[3] += rand(armor.up) * 5 + armor.up
  193.     params[3] += 1 if params[3] == armor.params[3]
  194.     $message += " 防御力提升:" + (params[3] - armor.params[3]).to_int.to_s
  195.     armor.up += 1
  196.     $data_armors.insert $data_armors.size,armor
  197.     $data_armors[$data_armors.size-1].params = params
  198.     idgainequip armor.id,false
  199.   else
  200.     $message += "强化失败"
  201.     suiji = rand (100)
  202.     if suiji <= $强化哈希表["消失几率"][armor.up]
  203.       if fangb != true
  204.       $message += ",道具消失"
  205.       idlostequip id,false
  206.       else
  207.       $message += ",由于" + idgetitem($强化哈希表["特殊物品"][0]).name + "的作用,道具未消失"
  208.       end
  209.     else
  210.       suiji = rand (100)
  211.       if suiji <= $强化哈希表["降级几率"][armor.up]
  212.         if fangj == false && armor.up != 0
  213.           $message += ",道具降级"
  214.           params = armor.params.dup
  215.           params[3] -= armor.up + rand(armor.up) * 5
  216.           params[3] /= 1 + $强化哈希表["提升能力"][armor.up] / 100
  217.           armor.params = params
  218.           armor.up -= 1
  219.           $data_armors[id] = armor
  220.         else
  221.           $message += ",由于" + idgetitem($强化哈希表["特殊物品"][1]).name + "的作用,道具未降级"
  222.         end
  223.       end
  224.     end
  225.   end
  226.    $usegem = false
  227.    $fangb = false
  228.    $fangj = false
  229. end
  230.  
  231. def self.armorupisnil(id)
  232.    $data_armors[id].up = 0 unless $data_armors[id].up != nil
  233. end
  234. def self.armorupable?(id)
  235.   equipable?(id,false)
  236. end
  237. def self.loststh()
  238.    $game_party.lose_item(@lostitem,1)
  239.    $game_party.lose_gold(@needmoney)
  240. end
  241. def self.needmoney
  242.    @needmoney
  243. end
  244. def self.lostitem
  245.    @lostitem
  246. end
  247. end
  248. #==============================================================================
  249. # ■ Scene_Qiang
  250. #------------------------------------------------------------------------------
  251. #  强化画面
  252. #==============================================================================
  253.  
  254. class Scene_Qiang < Scene_MenuBase
  255.   $wufang = true
  256.   $usegem = false
  257.   $fangb = false
  258.   $fangj = false
  259.   #--------------------------------------------------------------------------
  260.   # ● 开始处理
  261.   #--------------------------------------------------------------------------
  262.   def start
  263.     super
  264.     create_help_window
  265.     @help_window.hide
  266.     create_qianghelp_window
  267.     create_command_window
  268.     create_qiangxz_window
  269.     create_wu_window
  270.     create_fang_window
  271.     create_choosegem_window
  272.   end
  273.   #--------------------------------------------------------------------------
  274.   # ● 生成说明窗口
  275.   #--------------------------------------------------------------------------
  276.   def create_qianghelp_window
  277.     @qianghelp_window = Window_Qianghelp.new
  278.     @qianghelp_window.y = Graphics.height - @qianghelp_window.height
  279.     @qianghelp_window.viewport = @viewport
  280.     @qianghelp_window.hide
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ● 生成选择宝石
  284.   #--------------------------------------------------------------------------
  285.   def create_choosegem_window
  286.     @choosegem_window = Window_Choosegem.new
  287.     @choosegem_window.y = Graphics.height - @choosegem_window.height
  288.     @choosegem_window.viewport = @viewport
  289.     @choosegem_window.z = 120
  290.   end
  291.   #--------------------------------------------------------------------------
  292.   # ● 生成选择窗口
  293.   #--------------------------------------------------------------------------
  294.   def create_qiangxz_window
  295.     @qiangxz_window = Window_Qiangxz.new
  296.     @qiangxz_window.y = @help_window.height + fitting_height(5) /2
  297.     @qiangxz_window.z = 110
  298.     @qiangxz_window.viewport = @viewport
  299.     @qiangxz_window.set_handler(:gem,    method(:qiangxz_gem))
  300.     @qiangxz_window.set_handler(:fangb,    method(:qiangxz_fangb))
  301.     @qiangxz_window.set_handler(:fangj,    method(:qiangxz_fangj))
  302.     @qiangxz_window.set_handler(:ok, method(:qiangxz_ok))
  303.     @qiangxz_window.set_handler(:cancel, method(:qiangxz_cancel))
  304.     @qiangxz_window.hide
  305.     @qiangxz_window.deactivate
  306.   end
  307.   #--------------------------------------------------------------------------
  308.   # ● 生成指令窗口
  309.   #--------------------------------------------------------------------------
  310.   def create_command_window
  311.     @command_window = Window_QiangCommand.new
  312.     @command_window.viewport = @viewport
  313.     @command_window.y = @help_window.height + fitting_height(3) /2
  314.     @command_window.set_handler(:qiangwu,    method(:qiangwu))
  315.     @command_window.set_handler(:qiangfang,   method(:qiangfang))
  316.     @command_window.set_handler(:cancel, method(:return_scene))
  317.   end
  318.   #--------------------------------------------------------------------------
  319.   # ● 生成武器强化窗口
  320.   #--------------------------------------------------------------------------
  321.   def create_wu_window
  322.     @wu_window = Window_Qiangwu.new(@qianghelp_window,@qiangxz_window)
  323.     @wu_window.viewport = @viewport
  324.     @wu_window.y += @help_window.height
  325.     @wu_window.hide
  326.     @wu_window.help_window= @help_window
  327.     @wu_window.set_handler(:cancel, method(:qiangwu_cancel))
  328.     @wu_window.set_handler(:ok,     method(:qiangwu_ok))
  329.   end
  330.   #--------------------------------------------------------------------------
  331.   # ● 生成防具强化窗口
  332.   #--------------------------------------------------------------------------
  333.   def create_fang_window
  334.     @fang_window = Window_Qiangfang.new(@qianghelp_window,@qiangxz_window)
  335.     @fang_window.viewport = @viewport
  336.     @fang_window.y += @help_window.height
  337.     @fang_window.hide
  338.     @fang_window.help_window= @help_window
  339.     @fang_window.set_handler(:cancel, method(:qiangfang_cancel))
  340.     @fang_window.set_handler(:ok,     method(:qiangfang_ok))
  341.   end
  342.   #--------------------------------------------------------------------------
  343.   # ● 计算窗口显示指定行数时的应用高度
  344.   #--------------------------------------------------------------------------
  345.   def fitting_height(line_number)
  346.     line_number * 24 + 12 * 2
  347.   end
  348.   #--------------------------------------------------------------------------
  349.   # ● 显示强化武器
  350.   #--------------------------------------------------------------------------
  351.   def qiangwu
  352.     @command_window.hide
  353.     @help_window.show
  354.     @wu_window.show
  355.     @wu_window.start
  356.     @qianghelp_window.show
  357.     @wu_window.activate
  358.     $wufang = true
  359.     @command_window.deactivate
  360.   end
  361.   #--------------------------------------------------------------------------
  362.   # ● 显示强化防具
  363.   #--------------------------------------------------------------------------
  364.   def qiangfang
  365.     @command_window.hide
  366.     @help_window.show
  367.     @fang_window.show
  368.     @fang_window.start
  369.     @qianghelp_window.show
  370.     @fang_window.activate
  371.     $wufang = false
  372.     @command_window.deactivate
  373.   end
  374.   #--------------------------------------------------------------------------
  375.   # ● 取消强化武器
  376.   #--------------------------------------------------------------------------
  377.   def qiangwu_cancel
  378.     @command_window.show
  379.     @help_window.hide
  380.     @wu_window.hide
  381.     @qianghelp_window.hide
  382.     @command_window.activate
  383.     @qianghelp_window.set_text("")
  384.     @help_window.set_text("")
  385.   end
  386.   #--------------------------------------------------------------------------
  387.   # ● 取消强化防具
  388.   #--------------------------------------------------------------------------
  389.   def qiangfang_cancel
  390.     @command_window.show
  391.     @help_window.hide
  392.     @fang_window.hide
  393.     @qianghelp_window.hide
  394.     @command_window.activate
  395.     @qianghelp_window.set_text("")
  396.     @help_window.set_text("")
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ● 确定强化武器
  400.   #--------------------------------------------------------------------------
  401.   def qiangwu_ok
  402.     @wu_window.qiangwu_ok
  403.     @qiangxz_window.show
  404.     @qiangxz_window.activate
  405.   end
  406.   #--------------------------------------------------------------------------
  407.   # ● 确定强化防具
  408.   #--------------------------------------------------------------------------
  409.   def qiangfang_ok
  410.     @fang_window.qiangfang_ok
  411.     @qiangxz_window.show
  412.     @qiangxz_window.activate
  413.   end
  414.   #--------------------------------------------------------------------------
  415.   # ● 获取卖出价格
  416.   #--------------------------------------------------------------------------
  417.   def selling_price
  418.     @item.price / 2
  419.   end
  420.  
  421.   def qiangxz_gem
  422.     @choosegem_window.start
  423.     @qiangxz_window.deactivate
  424.     @choosegem_window.qiangxz= @qiangxz_window
  425.     if $wufang == true
  426.       @choosegem_window.wufangwindow= @wu_window
  427.     else
  428.       @choosegem_window.wufangwindow= @fang_window
  429.     end
  430.   end
  431.  
  432.   def qiangxz_fangb
  433.     $fangb = !$fangb
  434.     if $wufang == true
  435.       @wu_window.update_help
  436.     else
  437.       @fang_window.update_help
  438.     end
  439.     @qiangxz_window.activate
  440.   end
  441.  
  442.   def qiangxz_fangj
  443.     $fangj = !$fangj
  444.     if $wufang == true
  445.       @wu_window.update_help
  446.     else
  447.       @fang_window.update_help
  448.     end
  449.     @qiangxz_window.activate
  450.   end
  451.  
  452.   def qiangxz_ok
  453.     if $wufang == true
  454.       Qiang.upweapon(@wu_window.itemid)
  455.       qianging
  456.       @qianghelp_window.set_text($message)
  457.       @qiangxz_window.hide
  458.       Graphics.wait(60)
  459.       @wu_window.activate
  460.       @qiangxz_window.deactivate
  461.       $当前使用宝石加成率 = 0
  462.       $usegem = false
  463.       @fang_window.update_help
  464.       @wu_window.refresh
  465.       @command_window.deactivate
  466.     else
  467.       Qiang.uparmor(@fang_window.itemid)
  468.       qianging
  469.       @qianghelp_window.set_text($message)
  470.       @qiangxz_window.hide
  471.       Graphics.wait(60)
  472.       @fang_window.activate
  473.       @qiangxz_window.deactivate
  474.       $当前使用宝石加成率 = 0
  475.       $usegem = false
  476.       @fang_window.update_help
  477.       @fang_window.refresh
  478.       @command_window.deactivate
  479. end
  480.   end
  481.  
  482.   def qiangxz_cancel
  483.     @wu_window.show
  484.     @qiangxz_window.hide
  485.     @qiangxz_window.deactivate
  486.     if $wufang == true
  487.       @wu_window.activate
  488.     else
  489.       @fang_window.activate
  490.     end
  491.     $当前使用宝石加成率 = 0
  492.     $usegem = false
  493.     @command_window.deactivate
  494.   end
  495.  
  496.   def qianging
  497.     i = 0
  498.     while i < 20
  499.       i += 1
  500.       text = "\n"
  501.       text += "★" * i + "☆" * (20 - i)
  502.       text = text + "\n强化中,请等待。"
  503.       @qianghelp_window.set_text(text)
  504.       Graphics.wait(6)
  505.     end
  506.   end
  507. end
  508.  
  509. class RPG::EquipItem < RPG::BaseItem
  510.   alias old initialize
  511.   def initialize
  512.     old
  513.     @up = 0 #装备强化次数
  514.   end
  515.   attr_accessor :up
  516. end
  517. #==============================================================================
  518. # ■ Window_Qiangwu
  519. #------------------------------------------------------------------------------
  520. #  强化系统_武器强化窗口
  521. #==============================================================================
  522.  
  523. class Window_Qiangwu < Window_ItemList
  524.   #--------------------------------------------------------------------------
  525.   # ● 初始化对象
  526.   #--------------------------------------------------------------------------
  527.   def initialize(qianghelp,xuanze)
  528.     super(0, 0, Graphics.width, fitting_height(8))
  529.     self.openness = 0
  530.     deactivate
  531.     @qianghelp = qianghelp
  532.     @xuanze = xuanze
  533.   end
  534.   #--------------------------------------------------------------------------
  535.   # ● 开始输入的处理
  536.   #--------------------------------------------------------------------------
  537.   def start
  538.     self.category = :weapon
  539.     refresh
  540.     select(0)
  541.     open
  542.     activate
  543.   end
  544.   #--------------------------------------------------------------------------
  545.   # ● 查询此物品是否可用
  546.   #--------------------------------------------------------------------------
  547.   def enable?(item)
  548.     return false unless item != nil
  549.     Qiang.weaponupable?(item.id)
  550.   end
  551.   #--------------------------------------------------------------------------
  552.   # ● 确定强化武器
  553.   #--------------------------------------------------------------------------
  554.   def qiangwu_ok
  555.     result = item ? item.id : 0
  556.   end
  557.   #--------------------------------------------------------------------------
  558.   # ● 更新帮助内容
  559.   #--------------------------------------------------------------------------
  560.   def update_help
  561.     return unless item != nil
  562.     @help_window.set_item(item)
  563.     needmoney = 0
  564.     Qiang.weaponupable?(item.id)
  565.     qitemname = Qiang.lostitem.name
  566.     if item.up >= $强化哈希表["最高等级"]
  567.       qitemname = "无法继续升级"
  568.     end
  569.     temp = []
  570.     $usegem == true ? temp.push("使用") : temp.push("未使用")
  571.     temp.push($data_items[$强化哈希表["特殊物品"][0]].name)
  572.     $fangb == true ? temp.push("使用") : temp.push("未使用")
  573.     temp.push($data_items[$强化哈希表["特殊物品"][1]].name)
  574.     $fangj == true ? temp.push("使用") : temp.push("未使用")
  575.     cgl = ($强化哈希表["每级概率"][item.up] + $当前使用宝石加成率).to_s
  576.     if item.up == 0
  577.       min = item.params[2] + 1
  578.       max = min + 5
  579.     else
  580.       if item.up >= $强化哈希表["最高等级"]
  581.         min = item.params[2].to_int
  582.         max = min
  583.       else
  584.     min = (item.params[2] * (1 + $强化哈希表["提升能力"][item.up] / 100)).to_int + item.up
  585.     max = min + item.up * 5
  586.     end
  587.   end
  588.     text = "装备名称:" + item.name + " |强化所需" + Vocab::currency_unit + ":" + Qiang.needmoney.to_s
  589.     text = text + "\n" + "当前强化等级:" + item.up.to_s + " |强化需要:" +  qitemname
  590.     text = text + "\n" + "强化宝石:" + temp [0] + " |" + temp[1] + ":" + temp[2]+ " |" + temp[3] + ":" + temp[4]
  591.     text = text + "\n" + "成功率:" + cgl + "% "
  592.     @qianghelp.set_text(text)
  593.   end
  594.   #--------------------------------------------------------------------------
  595.   # ● 获取当前武器等级
  596.   #--------------------------------------------------------------------------
  597.   def getweaponup
  598.     Qiang.weaponupisnil(item.id)
  599.     item.up
  600.   end
  601.  
  602.   def itemid
  603.     item.id
  604.   end
  605.   #--------------------------------------------------------------------------
  606.   # ● 选择项目
  607.   #--------------------------------------------------------------------------
  608.   def select(index)
  609.     self.index = index if index
  610.     update_help
  611.   end
  612. end
  613. #==============================================================================
  614. # ■ Window_Qiangfang
  615. #------------------------------------------------------------------------------
  616. #  强化系统_防具强化窗口
  617. #==============================================================================
  618.  
  619. class Window_Qiangfang < Window_ItemList
  620.   #--------------------------------------------------------------------------
  621.   # ● 初始化对象
  622.   #--------------------------------------------------------------------------
  623.   def initialize(qianghelp,xuanze)
  624.     super(0, 0, Graphics.width, fitting_height(8))
  625.     self.openness = 0
  626.     deactivate
  627.     @qianghelp = qianghelp
  628.     @xuanze = xuanze
  629.   end
  630.   #--------------------------------------------------------------------------
  631.   # ● 开始输入的处理
  632.   #--------------------------------------------------------------------------
  633.   def start
  634.     self.category = :armor
  635.     refresh
  636.     select(0)
  637.     open
  638.     activate
  639.   end
  640.   #--------------------------------------------------------------------------
  641.   # ● 查询此物品是否可用
  642.   #--------------------------------------------------------------------------
  643.   def enable?(item)
  644.     return false unless item != nil
  645.     Qiang.armorupable?(item.id)
  646.   end
  647.   #--------------------------------------------------------------------------
  648.   # ● 确定强化防具
  649.   #--------------------------------------------------------------------------
  650.   def qiangfang_ok
  651.     result = item ? item.id : 0
  652.   end
  653.   #--------------------------------------------------------------------------
  654.   # ● 更新帮助内容
  655.   #--------------------------------------------------------------------------
  656.   def update_help
  657.     return unless item != nil
  658.     @help_window.set_item(item)
  659.     needmoney = 0
  660.     Qiang.armorupable?(item.id)
  661.     qitemname = Qiang.lostitem.name
  662.     if item.up >= $强化哈希表["最高等级"]
  663.       qitemname = "无法继续升级"
  664.     end
  665.     temp = []
  666.     $usegem == true ? temp.push("使用") : temp.push("未使用")
  667.     temp.push($data_items[$强化哈希表["特殊物品"][0]].name)
  668.     $fangb == true ? temp.push("使用") : temp.push("未使用")
  669.     temp.push($data_items[$强化哈希表["特殊物品"][1]].name)
  670.     $fangj == true ? temp.push("使用") : temp.push("未使用")
  671.     cgl = ($强化哈希表["每级概率"][item.up] + $当前使用宝石加成率).to_s
  672.     if item.up == 0
  673.       min = item.params[3] + 1
  674.       max = min + 5
  675.     else
  676.       if item.up >= $强化哈希表["最高等级"]
  677.         min = item.params[3].to_int
  678.         max = min
  679.       else
  680.     min = (item.params[3] * (1 + $强化哈希表["提升能力"][item.up] / 100)).to_int + item.up
  681.     max = min + item.up * 5
  682.     end
  683.   end
  684.     text = "装备名称:" + item.name + " |强化所需" + Vocab::currency_unit + ":" + Qiang.needmoney.to_s
  685.     text = text + "\n" + "当前强化等级:" + item.up.to_s + " |强化需要:" +  qitemname
  686.     text = text + "\n" + "强化宝石:" + temp [0] + " |" + temp[1] + ":" + temp[2]+ " |" + temp[3] + ":" + temp[4]
  687.     text = text + "\n" + "成功率:" + cgl + "% "
  688.     @qianghelp.set_text(text)
  689.   end
  690.   #--------------------------------------------------------------------------
  691.   # ● 获取当前防具等级
  692.   #--------------------------------------------------------------------------
  693.   def getarmorup
  694.     Qiang.armorupisnil(item.id)
  695.     item.up
  696.   end
  697.  
  698.   def itemid
  699.     item.id
  700.   end
  701.   #--------------------------------------------------------------------------
  702.   # ● 选择项目
  703.   #--------------------------------------------------------------------------
  704.   def select(index)
  705.     self.index = index if index
  706.     update_help
  707.   end
  708. end
  709. #==============================================================================
  710. # ■ Window_QiangCommand
  711. #------------------------------------------------------------------------------
  712. #  强化系统中,处理命令选择的窗口。
  713. #==============================================================================
  714.  
  715. class Window_QiangCommand < Window_Command
  716.   #--------------------------------------------------------------------------
  717.   # ● 初始化对象
  718.   #--------------------------------------------------------------------------
  719.   def initialize
  720.     super(0, 0)
  721.     update_placement
  722.     self.openness = 0
  723.     open
  724.   end
  725.   #--------------------------------------------------------------------------
  726.   # ● 获取窗口的宽度
  727.   #--------------------------------------------------------------------------
  728.   def window_width
  729.     return 160
  730.   end
  731.   #--------------------------------------------------------------------------
  732.   # ● 更新窗口的位置
  733.   #--------------------------------------------------------------------------
  734.   def update_placement
  735.     self.x = (Graphics.width - width) / 2
  736.     self.y = (Graphics.height - height) / 2
  737.   end
  738.   #--------------------------------------------------------------------------
  739.   # ● 生成指令列表
  740.   #--------------------------------------------------------------------------
  741.   def make_command_list
  742.     add_command("强化武器",    :qiangwu)
  743.     add_command("强化防具",    :qiangfang)
  744.     add_command(Vocab::ShopCancel, :cancel)
  745.   end
  746. end
  747. #==============================================================================
  748. # ■ Window_Qianghelp
  749. #------------------------------------------------------------------------------
  750. #  显示说明
  751. #==============================================================================
  752.  
  753. class Window_Qianghelp < Window_Base
  754.   #--------------------------------------------------------------------------
  755.   # ● 初始化对象
  756.   #--------------------------------------------------------------------------
  757.   def initialize
  758.     super(0, 0, window_width, fitting_height(4) + 8)
  759.     refresh
  760.   end
  761.   #--------------------------------------------------------------------------
  762.   # ● 获取窗口的宽度
  763.   #--------------------------------------------------------------------------
  764.   def window_width
  765.     return 640
  766.   end
  767.   #--------------------------------------------------------------------------
  768.   # ● 获取持有金钱
  769.   #--------------------------------------------------------------------------
  770.   def value
  771.     $game_party.gold
  772.   end
  773.   #--------------------------------------------------------------------------
  774.   # ● 获取货币单位
  775.   #--------------------------------------------------------------------------
  776.   def currency_unit
  777.     Vocab::currency_unit
  778.   end
  779.   #--------------------------------------------------------------------------
  780.   # ● 设置内容
  781.   #--------------------------------------------------------------------------
  782.   def set_text(text)
  783.     if text != @text
  784.       @text = text
  785.       refresh
  786.     end
  787.   end
  788.   #--------------------------------------------------------------------------
  789.   # ● 清除
  790.   #--------------------------------------------------------------------------
  791.   def clear
  792.     set_text("")
  793.   end
  794.   #--------------------------------------------------------------------------
  795.   # ● 刷新
  796.   #--------------------------------------------------------------------------
  797.   def refresh
  798.     contents.clear
  799.     draw_text_ex(4, 0, @text)
  800.   end
  801. end
  802. #==============================================================================
  803. # ■ Window_Qiangxz
  804. #------------------------------------------------------------------------------
  805. #  强化系统中,选择强化方式的窗口。
  806. #==============================================================================
  807.  
  808. class Window_Qiangxz < Window_Command
  809.   @havegem = false
  810.   @havefangb = false
  811.   @havefangj = false
  812.   #--------------------------------------------------------------------------
  813.   # ● 初始化对象
  814.   #--------------------------------------------------------------------------
  815.   def initialize
  816.     super(0, 0)
  817.     index = 0
  818.     update_placement
  819.     self.openness = 0
  820.     open
  821.   end
  822.   #--------------------------------------------------------------------------
  823.   # ● 获取窗口的宽度
  824.   #--------------------------------------------------------------------------
  825.   def window_width
  826.     return 180
  827.   end
  828.   #--------------------------------------------------------------------------
  829.   # ● 更新窗口的位置
  830.   #--------------------------------------------------------------------------
  831.   def update_placement
  832.     self.x = (Graphics.width - width) / 2
  833.     self.y = (Graphics.height - height) / 2
  834.   end
  835.   #--------------------------------------------------------------------------
  836.   # ● 检查可用
  837.   #--------------------------------------------------------------------------
  838.   def haveitem
  839.     @havegem = false
  840.     @havefangb = false
  841.     @havefangj = false
  842.     for i in $强化哈希表["宝石效果"]
  843.         if $game_party.has_item?($data_items[i[0]])
  844.         @havegem = true
  845.       end
  846.     end
  847.     @havefangb = $game_party.has_item?($data_items[$强化哈希表["特殊物品"][0]])
  848.     @havefangj = $game_party.has_item?($data_items[$强化哈希表["特殊物品"][1]])
  849.   end
  850.   #--------------------------------------------------------------------------
  851.   # ● 生成指令列表
  852.   #--------------------------------------------------------------------------
  853.   def make_command_list
  854.     haveitem
  855.     add_command("宝石",     :gem, @havegem)
  856.     add_command(Qiang.idgetitem($强化哈希表["特殊物品"][0]).name, :fangb, @havefangb)
  857.     add_command(Qiang.idgetitem($强化哈希表["特殊物品"][1]).name, :fangj, @havefangj)
  858.     add_command("开始强化", :start)
  859.     add_command("取消强化", :cancel)
  860.   end
  861. end
  862. #==============================================================================
  863. # ■ Window_Base
  864. #------------------------------------------------------------------------------
  865. #  游戏中所有窗口的父类
  866. #==============================================================================
  867.  
  868. class Window_Base < Window
  869.   #--------------------------------------------------------------------------
  870.   # ● 绘制物品名称
  871.   #     enabled : 有效的标志。false 的时候使用半透明效果绘制
  872.   #--------------------------------------------------------------------------
  873.   def draw_item_name(item, x, y, enabled = true, width = 172)
  874.     return unless item
  875.     draw_icon(item.icon_index, x, y, enabled)
  876.     change_color(normal_color, enabled)
  877.   if item.is_a?(RPG::EquipItem)
  878.   if item.up != nil && item.up != 0
  879.     draw_text(x + 24, y, width, line_height, item.name + "+" + item.up.to_s)
  880.   else
  881.     draw_text(x + 24, y, width, line_height, item.name)
  882.   end
  883.   else
  884.     draw_text(x + 24, y, width, line_height, item.name)
  885.   end
  886.   end
  887. end
  888. class Window_ItemList
  889.   #--------------------------------------------------------------------------
  890.   # ● 查询列表中是否含有此物品
  891.   #--------------------------------------------------------------------------
  892.   def include?(item)
  893.     case @category
  894.     when :item
  895.       item.is_a?(RPG::Item) && !item.key_item?
  896.     when :weapon
  897.       item.is_a?(RPG::Weapon)
  898.     when :armor
  899.       item.is_a?(RPG::Armor)
  900.     when :key_item
  901.       item.is_a?(RPG::Item) && item.key_item?
  902.     when :gem
  903.       itemid = item ? item.id : 0
  904.       itemid != 0 ? isgem(itemid) : false
  905.     else
  906.       false
  907.     end
  908.   end
  909.  
  910.   def isgem(itemid)
  911.     for i in $强化哈希表["宝石效果"]
  912.       return true if i[1] == itemid
  913.     end
  914.     false
  915.   end
  916. end
  917. #==============================================================================
  918. # ■ Window_Choosegem
  919. #------------------------------------------------------------------------------
  920. #  选择强化使用的宝石
  921. #==============================================================================
  922.  
  923. class Window_Choosegem < Window_ItemList
  924.   #--------------------------------------------------------------------------
  925.   # ● 初始化对象
  926.   #--------------------------------------------------------------------------
  927.   def initialize()
  928.     super(0, 0, Graphics.width, fitting_height(2))
  929.     self.openness = 0
  930.     deactivate
  931.     @wufangwindow = nil
  932.     @qiangxz = nil
  933.     set_handler(:ok,     method(:on_ok))
  934.     set_handler(:cancel, method(:on_cancel))
  935.   end
  936.  
  937.   def wufangwindow=(wufangwindow)
  938.     @wufangwindow = wufangwindow
  939.   end
  940.   def qiangxz=(qiangxz)
  941.     @qiangxz = qiangxz
  942.   end
  943.   #--------------------------------------------------------------------------
  944.   # ● 开始输入的处理
  945.   #--------------------------------------------------------------------------
  946.   def start
  947.     self.category = :gem
  948.     self.y = (Graphics.height - height) / 2
  949.     refresh
  950.     select(0)
  951.     open
  952.     activate
  953.   end
  954.   #--------------------------------------------------------------------------
  955.   # ● 确定时的处理
  956.   #--------------------------------------------------------------------------
  957.   def on_ok
  958.     result = item ? item.id : 0
  959.     if result != 0
  960.      $usegem = true
  961.      $当前使用宝石id = result
  962.      for i in $强化哈希表["宝石效果"]
  963.        $当前使用宝石加成率 = i[0] if i[1] == $当前使用宝石id
  964.      end
  965.    else
  966.      $当前使用宝石加成率 = 0
  967.      $usegem = false
  968.     end
  969.     @wufangwindow.update_help
  970.     @qiangxz.activate
  971.     close
  972.   end
  973.   #--------------------------------------------------------------------------
  974.   # ● 查询此物品是否可用
  975.   #--------------------------------------------------------------------------
  976.   def enable?(item)
  977.     true
  978.   end
  979.   #--------------------------------------------------------------------------
  980.   # ● 取消时的处理
  981.   #--------------------------------------------------------------------------
  982.   def on_cancel
  983.     $当前使用宝石加成率 = 0
  984.     $usegem = false
  985.     @wufangwindow.update_help
  986.     @qiangxz.activate
  987.     close
  988.   end
  989. end
  990. #==============================================================================
  991. # ■ 强化系统DataManager
  992. #------------------------------------------------------------------------------
  993. #  将武器和防具数据保存入存档
  994. #==============================================================================
  995. module DataManager
  996.   #--------------------------------------------------------------------------
  997.   # ● 生成存档内容
  998.   #--------------------------------------------------------------------------
  999.   def self.make_save_contents
  1000.     contents = {}
  1001.     contents[:system]        = $game_system
  1002.     contents[:timer]         = $game_timer
  1003.     contents[:message]       = $game_message
  1004.     contents[:switches]      = $game_switches
  1005.     contents[:variables]     = $game_variables
  1006.     contents[:self_switches] = $game_self_switches
  1007.     contents[:actors]        = $game_actors
  1008.     contents[:party]         = $game_party
  1009.     contents[:troop]         = $game_troop
  1010.     contents[:map]           = $game_map
  1011.     contents[:player]        = $game_player
  1012.     contents[:weapons]       = $data_weapons
  1013.     contents[:armors]        = $data_armors
  1014.     contents
  1015.   end
  1016.   #--------------------------------------------------------------------------
  1017.   # ● 展开存档内容
  1018.   #--------------------------------------------------------------------------
  1019.   def self.extract_save_contents(contents)
  1020.     $game_system        = contents[:system]
  1021.     $game_timer         = contents[:timer]
  1022.     $game_message       = contents[:message]
  1023.     $game_switches      = contents[:switches]
  1024.     $game_variables     = contents[:variables]
  1025.     $game_self_switches = contents[:self_switches]
  1026.     $game_actors        = contents[:actors]
  1027.     $game_party         = contents[:party]
  1028.     $game_troop         = contents[:troop]
  1029.     $game_map           = contents[:map]
  1030.     $game_player        = contents[:player]
  1031.     $data_weapons       = contents[:weapons]
  1032.     $data_armors        = contents[:armors]
  1033.   end
  1034. end





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