Project1

标题: 【VA】物品颜色描绘加强(显示强化数值) [打印本页]

作者: 狱冥幻翼    时间: 2012-7-29 20:30
标题: 【VA】物品颜色描绘加强(显示强化数值)
本帖最后由 Sion 于 2013-12-16 22:48 编辑

最近发现用了物品颜色描绘就无法显示强化数值,就修改了一下
  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 = [10,14,18,22,26,30,34,38,42,46,50,54,65] #每级强化提升能力的百分比
  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. def self.idlostequip(id,weapon = true,amount = 1)
  35.   weapon == true ? $game_party.lose_item($data_weapons[id],amount,true) : $game_party.lose_item($data_armors[id],amount,true)
  36. end

  37. def self.idgainequip(id,weapon = true,amount = 1)
  38.   weapon == true ? $game_party.gain_item($data_weapons[id],amount,true) : $game_party.gain_item($data_armors[id],amount,true)
  39. end

  40. def self.idgetitem(id)
  41.   $data_items[id]
  42. end

  43. def self.equipable?(id,weapon = true)
  44.   weapon == true ? weaponupisnil(id) : armorupisnil(id)
  45.   weapon == true ? equip = $data_weapons[id].dup : equip = $data_armors[id].dup
  46.   price = equip.price
  47.   @needmoney = price * equip.up
  48.   if @needmoney == 0
  49.     @needmoney = price / 2
  50.   end
  51. #循环取出需要的强化材料
  52.   temp = false
  53.   for i in $强化哈希表["强化材料"]
  54.     if equip.up < i[0]
  55.       @lostitem = idgetitem i[1]
  56.       $game_party.has_item?(idgetitem(i[1])) ? temp = true : temp = false
  57.       break
  58.     end
  59.   end
  60.   $game_party.gold >= @needmoney && temp == true ? true : false
  61. end

  62. def self.upweapon (id)
  63.   $message = ""
  64.   success = false
  65.   weaponupisnil(id)
  66.   weapon = $data_weapons[id].dup
  67.   gl = 0
  68.   fangb = false
  69.   fangj = false
  70.   return unless weapon.up < $强化哈希表["最高等级"] && weaponupable?(id)
  71.   loststh
  72.   $message += "本次强化,共消耗:" + Vocab::currency_unit + " " + @needmoney.to_s
  73.   $message += " " + @lostitem.name + "\n "
  74.   gl = $强化哈希表["每级概率"][weapon.up]
  75.   if $usegem == true
  76.     gl += $当前使用宝石加成率
  77.     idlostitem($当前使用宝石id)
  78.     $message += idgetitem($当前使用宝石id).name + " "
  79.   end
  80.   if $fangb == true
  81.     fangb = true
  82.     idlostitem $强化哈希表["特殊物品"][0]
  83.     $message += idgetitem($强化哈希表["特殊物品"][0]).name + " "
  84.   end
  85.   if $fangj == true
  86.     fangj = true
  87.     idlostitem $强化哈希表["特殊物品"][1]
  88.     $message += idgetitem($强化哈希表["特殊物品"][1]).name + " "
  89.   end
  90.   suiji = rand (100)
  91.   if suiji <= gl
  92.     success = true
  93.   end
  94.   $message += "\n强化结果:"
  95.   if success == true
  96.     $message += "强化成功"
  97.     idlostequip id
  98.     weapon.id = $data_weapons.size
  99.     params = weapon.params.dup
  100.     params[2] *= 1 + $强化哈希表["提升能力"][weapon.up] / 100
  101.     params[2] += rand(weapon.up) * 5 + weapon.up
  102.     params[2] += 1 if params[2] == weapon.params[2]
  103.     $message += " 攻击力提升:" + (params[2] - weapon.params[2]).to_int.to_s
  104.     weapon.up += 1
  105.     $data_weapons.insert $data_weapons.size,weapon
  106.     $data_weapons[$data_weapons.size-1].params = params
  107.     idgainequip weapon.id
  108.   else
  109.     $message += "强化失败"
  110.     suiji = rand (100)
  111.     if suiji <= $强化哈希表["消失几率"][weapon.up]
  112.       if fangb != true
  113.       $message += ",道具消失"
  114.       idlostequip id
  115.       else
  116.       $message += ",由于" + idgetitem($强化哈希表["特殊物品"][0]).name + "的作用,道具未消失"
  117.       end
  118.     else
  119.       suiji = rand (100)
  120.       if suiji <= $强化哈希表["降级几率"][weapon.up]
  121.         if fangj == false && weapon.up != 0
  122.           $message += ",道具降级"
  123.           params = weapon.params.dup
  124.           params[2] -= weapon.up + rand(weapon.up) * 5
  125.           params[2] /= 1 + $强化哈希表["提升能力"][weapon.up] / 100
  126.           weapon.params = params
  127.           weapon.up -= 1
  128.           $data_weapons[id] = weapon
  129.         else
  130.           $message += ",由于" + idgetitem($强化哈希表["特殊物品"][1]).name + "的作用,道具未降级"
  131.         end
  132.       end
  133.     end
  134.   end
  135.    $usegem = false
  136.    $fangb = false
  137.    $fangj = false
  138. end

  139. def self.weaponupisnil(id)
  140.    $data_weapons[id].up = 0 unless $data_weapons[id].up != nil
  141. end

  142. def self.weaponupable?(id)
  143.   equipable?(id)
  144. end

  145. def self.uparmor (id)
  146.   $message = ""
  147.   success = false
  148.   armorupisnil(id)
  149.   armor = $data_armors[id].dup
  150.   gl = 0
  151.   fangb = false
  152.   fangj = false
  153.   return unless armor.up < $强化哈希表["最高等级"] && armorupable?(id)
  154.   loststh
  155.   $message += "本次强化,共消耗:" + Vocab::currency_unit + " " + @needmoney.to_s
  156.   $message += " " + @lostitem.name + "\n "
  157.   gl = $强化哈希表["每级概率"][armor.up]
  158.   if $usegem == true
  159.     gl += $当前使用宝石加成率
  160.     idlostitem($当前使用宝石id)
  161.     $message += idgetitem($当前使用宝石id).name + " "
  162.   end
  163.   if $fangb == true
  164.     fangb = true
  165.     idlostitem $强化哈希表["特殊物品"][0]
  166.     $message += idgetitem($强化哈希表["特殊物品"][0]).name + " "
  167.   end
  168.   if $fangj == true
  169.     fangj = true
  170.     idlostitem $强化哈希表["特殊物品"][1]
  171.     $message += idgetitem($强化哈希表["特殊物品"][1]).name + " "
  172.   end
  173.   suiji = rand (100)
  174.   if suiji <= gl
  175.     success = true
  176.   end
  177.   $message += "\n强化结果:"
  178.   if success == true
  179.     $message += "强化成功"
  180.     idlostequip id,false
  181.     armor.id = $data_armors.size
  182.     params = armor.params.dup
  183.     params[3] *= 1 + $强化哈希表["提升能力"][armor.up] / 100
  184.     params[3] += rand(armor.up) * 5 + armor.up
  185.     params[3] += 1 if params[3] == armor.params[3]
  186.     $message += " 防御力提升:" + (params[3] - armor.params[3]).to_int.to_s
  187.     armor.up += 1
  188.     $data_armors.insert $data_armors.size,armor
  189.     $data_armors[$data_armors.size-1].params = params
  190.     idgainequip armor.id,false
  191.   else
  192.     $message += "强化失败"
  193.     suiji = rand (100)
  194.     if suiji <= $强化哈希表["消失几率"][armor.up]
  195.       if fangb != true
  196.       $message += ",道具消失"
  197.       idlostequip id,false
  198.       else
  199.       $message += ",由于" + idgetitem($强化哈希表["特殊物品"][0]).name + "的作用,道具未消失"
  200.       end
  201.     else
  202.       suiji = rand (100)
  203.       if suiji <= $强化哈希表["降级几率"][armor.up]
  204.         if fangj == false && armor.up != 0
  205.           $message += ",道具降级"
  206.           params = armor.params.dup
  207.           params[3] -= armor.up + rand(armor.up) * 5
  208.           params[3] /= 1 + $强化哈希表["提升能力"][armor.up] / 100
  209.           armor.params = params
  210.           armor.up -= 1
  211.           $data_armors[id] = armor
  212.         else
  213.           $message += ",由于" + idgetitem($强化哈希表["特殊物品"][1]).name + "的作用,道具未降级"
  214.         end
  215.       end
  216.     end
  217.   end
  218.    $usegem = false
  219.    $fangb = false
  220.    $fangj = false
  221. end

  222. def self.armorupisnil(id)
  223.    $data_armors[id].up = 0 unless $data_armors[id].up != nil
  224. end
  225. def self.armorupable?(id)
  226.   equipable?(id,false)
  227. end
  228. def self.loststh()
  229.    $game_party.lose_item(@lostitem,1)
  230.    $game_party.lose_gold(@needmoney)
  231. end
  232. def self.needmoney
  233.    @needmoney
  234. end
  235. def self.lostitem
  236.    @lostitem
  237. end
  238. end
  239. #==============================================================================
  240. # ■ Scene_Qiang
  241. #------------------------------------------------------------------------------
  242. #  强化画面
  243. #==============================================================================

  244. class Scene_Qiang < Scene_MenuBase
  245.   $wufang = true
  246.   $usegem = false
  247.   $fangb = false
  248.   $fangj = false
  249.   #--------------------------------------------------------------------------
  250.   # ● 开始处理
  251.   #--------------------------------------------------------------------------
  252.   def start
  253.     super
  254.     create_help_window
  255.     @help_window.hide
  256.     create_qianghelp_window
  257.     create_command_window
  258.     create_qiangxz_window
  259.     create_wu_window
  260.     create_fang_window
  261.     create_choosegem_window
  262.   end
  263.   #--------------------------------------------------------------------------
  264.   # ● 生成说明窗口
  265.   #--------------------------------------------------------------------------
  266.   def create_qianghelp_window
  267.     @qianghelp_window = Window_Qianghelp.new
  268.     @qianghelp_window.y = Graphics.height - @qianghelp_window.height
  269.     @qianghelp_window.viewport = @viewport
  270.     @qianghelp_window.hide
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # ● 生成选择宝石
  274.   #--------------------------------------------------------------------------
  275.   def create_choosegem_window
  276.     @choosegem_window = Window_Choosegem.new
  277.     @choosegem_window.y = Graphics.height - @choosegem_window.height
  278.     @choosegem_window.viewport = @viewport
  279.     @choosegem_window.z = 120
  280.   end
  281.   #--------------------------------------------------------------------------
  282.   # ● 生成选择窗口
  283.   #--------------------------------------------------------------------------
  284.   def create_qiangxz_window
  285.     @qiangxz_window = Window_Qiangxz.new
  286.     @qiangxz_window.y = @help_window.height + fitting_height(5) /2
  287.     @qiangxz_window.z = 110
  288.     @qiangxz_window.viewport = @viewport
  289.     @qiangxz_window.set_handler(:gem,    method(:qiangxz_gem))
  290.     @qiangxz_window.set_handler(:fangb,    method(:qiangxz_fangb))
  291.     @qiangxz_window.set_handler(:fangj,    method(:qiangxz_fangj))
  292.     @qiangxz_window.set_handler(:ok, method(:qiangxz_ok))
  293.     @qiangxz_window.set_handler(:cancel, method(:qiangxz_cancel))
  294.     @qiangxz_window.hide
  295.     @qiangxz_window.deactivate
  296.   end
  297.   #--------------------------------------------------------------------------
  298.   # ● 生成指令窗口
  299.   #--------------------------------------------------------------------------
  300.   def create_command_window
  301.     @command_window = Window_QiangCommand.new
  302.     @command_window.viewport = @viewport
  303.     @command_window.y = @help_window.height + fitting_height(3) /2
  304.     @command_window.set_handler(:qiangwu,    method(:qiangwu))
  305.     @command_window.set_handler(:qiangfang,   method(:qiangfang))
  306.     @command_window.set_handler(:cancel, method(:return_scene))
  307.   end
  308.   #--------------------------------------------------------------------------
  309.   # ● 生成武器强化窗口
  310.   #--------------------------------------------------------------------------
  311.   def create_wu_window
  312.     @wu_window = Window_Qiangwu.new(@qianghelp_window,@qiangxz_window)
  313.     @wu_window.viewport = @viewport
  314.     @wu_window.y += @help_window.height
  315.     @wu_window.hide
  316.     @wu_window.help_window= @help_window
  317.     @wu_window.set_handler(:cancel, method(:qiangwu_cancel))
  318.     @wu_window.set_handler(:ok,     method(:qiangwu_ok))
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● 生成防具强化窗口
  322.   #--------------------------------------------------------------------------
  323.   def create_fang_window
  324.     @fang_window = Window_Qiangfang.new(@qianghelp_window,@qiangxz_window)
  325.     @fang_window.viewport = @viewport
  326.     @fang_window.y += @help_window.height
  327.     @fang_window.hide
  328.     @fang_window.help_window= @help_window
  329.     @fang_window.set_handler(:cancel, method(:qiangfang_cancel))
  330.     @fang_window.set_handler(:ok,     method(:qiangfang_ok))
  331.   end
  332.   #--------------------------------------------------------------------------
  333.   # ● 计算窗口显示指定行数时的应用高度
  334.   #--------------------------------------------------------------------------
  335.   def fitting_height(line_number)
  336.     line_number * 24 + 12 * 2
  337.   end
  338.   #--------------------------------------------------------------------------
  339.   # ● 显示强化武器
  340.   #--------------------------------------------------------------------------
  341.   def qiangwu
  342.     @command_window.hide
  343.     @help_window.show
  344.     @wu_window.show
  345.     @wu_window.start
  346.     @qianghelp_window.show
  347.     @wu_window.activate
  348.     $wufang = true
  349.     @command_window.deactivate
  350.   end
  351.   #--------------------------------------------------------------------------
  352.   # ● 显示强化防具
  353.   #--------------------------------------------------------------------------
  354.   def qiangfang
  355.     @command_window.hide
  356.     @help_window.show
  357.     @fang_window.show
  358.     @fang_window.start
  359.     @qianghelp_window.show
  360.     @fang_window.activate
  361.     $wufang = false
  362.     @command_window.deactivate
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # ● 取消强化武器
  366.   #--------------------------------------------------------------------------
  367.   def qiangwu_cancel
  368.     @command_window.show
  369.     @help_window.hide
  370.     @wu_window.hide
  371.     @qianghelp_window.hide
  372.     @command_window.activate
  373.     @qianghelp_window.set_text("")
  374.     @help_window.set_text("")
  375.   end
  376.   #--------------------------------------------------------------------------
  377.   # ● 取消强化防具
  378.   #--------------------------------------------------------------------------
  379.   def qiangfang_cancel
  380.     @command_window.show
  381.     @help_window.hide
  382.     @fang_window.hide
  383.     @qianghelp_window.hide
  384.     @command_window.activate
  385.     @qianghelp_window.set_text("")
  386.     @help_window.set_text("")
  387.   end
  388.   #--------------------------------------------------------------------------
  389.   # ● 确定强化武器
  390.   #--------------------------------------------------------------------------
  391.   def qiangwu_ok
  392.     @wu_window.qiangwu_ok
  393.     @qiangxz_window.show
  394.     @qiangxz_window.activate
  395.   end
  396.   #--------------------------------------------------------------------------
  397.   # ● 确定强化防具
  398.   #--------------------------------------------------------------------------
  399.   def qiangfang_ok
  400.     @fang_window.qiangfang_ok
  401.     @qiangxz_window.show
  402.     @qiangxz_window.activate
  403.   end
  404.   #--------------------------------------------------------------------------
  405.   # ● 获取卖出价格
  406.   #--------------------------------------------------------------------------
  407.   def selling_price
  408.     @item.price / 2
  409.   end
  410.   
  411.   def qiangxz_gem
  412.     @choosegem_window.start
  413.     @qiangxz_window.deactivate
  414.     @choosegem_window.qiangxz= @qiangxz_window
  415.     if $wufang == true
  416.       @choosegem_window.wufangwindow= @wu_window
  417.     else
  418.       @choosegem_window.wufangwindow= @fang_window
  419.     end
  420.   end
  421.   
  422.   def qiangxz_fangb
  423.     $fangb = !$fangb
  424.     if $wufang == true
  425.       @wu_window.update_help
  426.     else
  427.       @fang_window.update_help
  428.     end
  429.     @qiangxz_window.activate
  430.   end
  431.   
  432.   def qiangxz_fangj
  433.     $fangj = !$fangj
  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_ok
  443.     if $wufang == true
  444.       Qiang.upweapon(@wu_window.itemid)
  445.       qianging
  446.       @qianghelp_window.set_text($message)
  447.       @qiangxz_window.hide
  448.       Graphics.wait(60)
  449.       @wu_window.activate
  450.       @qiangxz_window.deactivate
  451.       $当前使用宝石加成率 = 0
  452.       $usegem = false
  453.       @fang_window.update_help
  454.       @wu_window.refresh
  455.       @command_window.deactivate
  456.     else
  457.       Qiang.uparmor(@fang_window.itemid)
  458.       qianging
  459.       @qianghelp_window.set_text($message)
  460.       @qiangxz_window.hide
  461.       Graphics.wait(60)
  462.       @fang_window.activate
  463.       @qiangxz_window.deactivate
  464.       $当前使用宝石加成率 = 0
  465.       $usegem = false
  466.       @fang_window.update_help
  467.       @fang_window.refresh
  468.       @command_window.deactivate
  469. end
  470.   end
  471.   
  472.   def qiangxz_cancel
  473.     @wu_window.show
  474.     @qiangxz_window.hide
  475.     @qiangxz_window.deactivate
  476.     if $wufang == true
  477.       @wu_window.activate
  478.     else
  479.       @fang_window.activate
  480.     end
  481.     $当前使用宝石加成率 = 0
  482.     $usegem = false
  483.     @command_window.deactivate
  484.   end
  485.   
  486.   def qianging
  487.     i = 0
  488.     while i < 20
  489.       i += 1
  490.       text = "\n"
  491.       text += "★" * i + "☆" * (20 - i)
  492.       text = text + "\n强化中,请等待。"
  493.       @qianghelp_window.set_text(text)
  494.       Graphics.wait(6)
  495.     end
  496.   end
  497. end

  498. class RPG::EquipItem < RPG::BaseItem
  499.   alias old initialize
  500.   def initialize
  501.     old
  502.     @up = 0 #装备强化次数
  503.   end
  504.   attr_accessor :up
  505. end
  506. #==============================================================================
  507. # ■ Window_Qiangwu
  508. #------------------------------------------------------------------------------
  509. #  强化系统_武器强化窗口
  510. #==============================================================================

  511. class Window_Qiangwu < Window_ItemList
  512.   #--------------------------------------------------------------------------
  513.   # ● 初始化对象
  514.   #--------------------------------------------------------------------------
  515.   def initialize(qianghelp,xuanze)
  516.     super(0, 0, Graphics.width, fitting_height(8))
  517.     self.openness = 0
  518.     deactivate
  519.     @qianghelp = qianghelp
  520.     @xuanze = xuanze
  521.   end
  522.   #--------------------------------------------------------------------------
  523.   # ● 开始输入的处理
  524.   #--------------------------------------------------------------------------
  525.   def start
  526.     self.category = :weapon
  527.     refresh
  528.     select(0)
  529.     open
  530.     activate
  531.   end
  532.   #--------------------------------------------------------------------------
  533.   # ● 查询此物品是否可用
  534.   #--------------------------------------------------------------------------
  535.   def enable?(item)
  536.     return false unless item != nil
  537.     Qiang.weaponupable?(item.id)
  538.   end
  539.   #--------------------------------------------------------------------------
  540.   # ● 确定强化武器
  541.   #--------------------------------------------------------------------------
  542.   def qiangwu_ok
  543.     result = item ? item.id : 0
  544.   end
  545.   #--------------------------------------------------------------------------
  546.   # ● 更新帮助内容
  547.   #--------------------------------------------------------------------------
  548.   def update_help
  549.     return unless item != nil
  550.     @help_window.set_item(item)
  551.     needmoney = 0
  552.     Qiang.weaponupable?(item.id)
  553.     qitemname = Qiang.lostitem.name
  554.     if item.up >= $强化哈希表["最高等级"]
  555.       qitemname = "无法继续升级"
  556.     end
  557.     temp = []
  558.     $usegem == true ? temp.push("使用") : temp.push("未使用")
  559.     temp.push($data_items[$强化哈希表["特殊物品"][0]].name)
  560.     $fangb == true ? temp.push("使用") : temp.push("未使用")
  561.     temp.push($data_items[$强化哈希表["特殊物品"][1]].name)
  562.     $fangj == true ? temp.push("使用") : temp.push("未使用")
  563.     cgl = ($强化哈希表["每级概率"][item.up] + $当前使用宝石加成率).to_s
  564.     if item.up == 0
  565.       min = item.params[2] + 1
  566.       max = min + 5
  567.     else
  568.       if item.up >= $强化哈希表["最高等级"]
  569.         min = item.params[2].to_int
  570.         max = min
  571.       else
  572.     min = (item.params[2] * (1 + $强化哈希表["提升能力"][item.up] / 100)).to_int + item.up
  573.     max = min + item.up * 5
  574.     end
  575.   end
  576.     text = "装备名称:" + item.name + " 强化所需" + Vocab::currency_unit + ":" + Qiang.needmoney.to_s
  577.     text = text + "\n" + "当前强化等级:" + item.up.to_s + " 强化需要:" +  qitemname
  578.     text = text + "\n" + "强化宝石:" + temp [0] + " " + temp[1] + ":" + temp[2]+ " " + temp[3] + ":" + temp[4]
  579.     text = text + "\n" + "成功率:" + cgl + "% " + "强化后攻击力范围:" + min.to_s + "~" + max.to_s
  580.     @qianghelp.set_text(text)
  581.   end
  582.   #--------------------------------------------------------------------------
  583.   # ● 获取当前武器等级
  584.   #--------------------------------------------------------------------------
  585.   def getweaponup
  586.     Qiang.weaponupisnil(item.id)
  587.     item.up
  588.   end
  589.   
  590.   def itemid
  591.     item.id
  592.   end
  593.   #--------------------------------------------------------------------------
  594.   # ● 选择项目
  595.   #--------------------------------------------------------------------------
  596.   def select(index)
  597.     self.index = index if index
  598.     update_help
  599.   end
  600. end
  601. #==============================================================================
  602. # ■ Window_Qiangfang
  603. #------------------------------------------------------------------------------
  604. #  强化系统_防具强化窗口
  605. #==============================================================================

  606. class Window_Qiangfang < Window_ItemList
  607.   #--------------------------------------------------------------------------
  608.   # ● 初始化对象
  609.   #--------------------------------------------------------------------------
  610.   def initialize(qianghelp,xuanze)
  611.     super(0, 0, Graphics.width, fitting_height(8))
  612.     self.openness = 0
  613.     deactivate
  614.     @qianghelp = qianghelp
  615.     @xuanze = xuanze
  616.   end
  617.   #--------------------------------------------------------------------------
  618.   # ● 开始输入的处理
  619.   #--------------------------------------------------------------------------
  620.   def start
  621.     self.category = :armor
  622.     refresh
  623.     select(0)
  624.     open
  625.     activate
  626.   end
  627.   #--------------------------------------------------------------------------
  628.   # ● 查询此物品是否可用
  629.   #--------------------------------------------------------------------------
  630.   def enable?(item)
  631.     return false unless item != nil
  632.     Qiang.armorupable?(item.id)
  633.   end
  634.   #--------------------------------------------------------------------------
  635.   # ● 确定强化防具
  636.   #--------------------------------------------------------------------------
  637.   def qiangfang_ok
  638.     result = item ? item.id : 0
  639.   end
  640.   #--------------------------------------------------------------------------
  641.   # ● 更新帮助内容
  642.   #--------------------------------------------------------------------------
  643.   def update_help
  644.     return unless item != nil
  645.     @help_window.set_item(item)
  646.     needmoney = 0
  647.     Qiang.armorupable?(item.id)
  648.     qitemname = Qiang.lostitem.name
  649.     if item.up >= $强化哈希表["最高等级"]
  650.       qitemname = "无法继续升级"
  651.     end
  652.     temp = []
  653.     $usegem == true ? temp.push("使用") : temp.push("未使用")
  654.     temp.push($data_items[$强化哈希表["特殊物品"][0]].name)
  655.     $fangb == true ? temp.push("使用") : temp.push("未使用")
  656.     temp.push($data_items[$强化哈希表["特殊物品"][1]].name)
  657.     $fangj == true ? temp.push("使用") : temp.push("未使用")
  658.     cgl = ($强化哈希表["每级概率"][item.up] + $当前使用宝石加成率).to_s
  659.     if item.up == 0
  660.       min = item.params[3] + 1
  661.       max = min + 5
  662.     else
  663.       if item.up >= $强化哈希表["最高等级"]
  664.         min = item.params[3].to_int
  665.         max = min
  666.       else
  667.     min = (item.params[3] * (1 + $强化哈希表["提升能力"][item.up] / 100)).to_int + item.up
  668.     max = min + item.up * 5
  669.     end
  670.   end
  671.     text = "装备名称:" + item.name + " 强化所需" + Vocab::currency_unit + ":" + Qiang.needmoney.to_s
  672.     text = text + "\n" + "当前强化等级:" + item.up.to_s + " 强化需要:" +  qitemname
  673.     text = text + "\n" + "强化宝石:" + temp [0] + " " + temp[1] + ":" + temp[2]+ " " + temp[3] + ":" + temp[4]
  674.     text = text + "\n" + "成功率:" + cgl + "% " + "强化后防御力范围:" + min.to_s + "~" + max.to_s
  675.     @qianghelp.set_text(text)
  676.   end
  677.   #--------------------------------------------------------------------------
  678.   # ● 获取当前防具等级
  679.   #--------------------------------------------------------------------------
  680.   def getarmorup
  681.     Qiang.armorupisnil(item.id)
  682.     item.up
  683.   end
  684.   
  685.   def itemid
  686.     item.id
  687.   end
  688.   #--------------------------------------------------------------------------
  689.   # ● 选择项目
  690.   #--------------------------------------------------------------------------
  691.   def select(index)
  692.     self.index = index if index
  693.     update_help
  694.   end
  695. end
  696. #==============================================================================
  697. # ■ Window_QiangCommand
  698. #------------------------------------------------------------------------------
  699. #  强化系统中,处理命令选择的窗口。
  700. #==============================================================================

  701. class Window_QiangCommand < Window_Command
  702.   #--------------------------------------------------------------------------
  703.   # ● 初始化对象
  704.   #--------------------------------------------------------------------------
  705.   def initialize
  706.     super(0, 0)
  707.     update_placement
  708.     self.openness = 0
  709.     open
  710.   end
  711.   #--------------------------------------------------------------------------
  712.   # ● 获取窗口的宽度
  713.   #--------------------------------------------------------------------------
  714.   def window_width
  715.     return 160
  716.   end
  717.   #--------------------------------------------------------------------------
  718.   # ● 更新窗口的位置
  719.   #--------------------------------------------------------------------------
  720.   def update_placement
  721.     self.x = (Graphics.width - width) / 2
  722.     self.y = (Graphics.height - height) / 2
  723.   end
  724.   #--------------------------------------------------------------------------
  725.   # ● 生成指令列表
  726.   #--------------------------------------------------------------------------
  727.   def make_command_list
  728.     add_command("强化武器",    :qiangwu)
  729.     add_command("强化防具",    :qiangfang)
  730.     add_command(Vocab::ShopCancel, :cancel)
  731.   end
  732. end
  733. #==============================================================================
  734. # ■ Window_Qianghelp
  735. #------------------------------------------------------------------------------
  736. #  显示说明
  737. #==============================================================================

  738. class Window_Qianghelp < Window_Base
  739.   #--------------------------------------------------------------------------
  740.   # ● 初始化对象
  741.   #--------------------------------------------------------------------------
  742.   def initialize
  743.     super(0, 0, window_width, fitting_height(4) + 8)
  744.     refresh
  745.   end
  746.   #--------------------------------------------------------------------------
  747.   # ● 获取窗口的宽度
  748.   #--------------------------------------------------------------------------
  749.   def window_width
  750.     return 544
  751.   end
  752.   #--------------------------------------------------------------------------
  753.   # ● 获取持有金钱
  754.   #--------------------------------------------------------------------------
  755.   def value
  756.     $game_party.gold
  757.   end
  758.   #--------------------------------------------------------------------------
  759.   # ● 获取货币单位
  760.   #--------------------------------------------------------------------------
  761.   def currency_unit
  762.     Vocab::currency_unit
  763.   end
  764.   #--------------------------------------------------------------------------
  765.   # ● 设置内容
  766.   #--------------------------------------------------------------------------
  767.   def set_text(text)
  768.     if text != @text
  769.       @text = text
  770.       refresh
  771.     end
  772.   end
  773.   #--------------------------------------------------------------------------
  774.   # ● 清除
  775.   #--------------------------------------------------------------------------
  776.   def clear
  777.     set_text("")
  778.   end
  779.   #--------------------------------------------------------------------------
  780.   # ● 刷新
  781.   #--------------------------------------------------------------------------
  782.   def refresh
  783.     contents.clear
  784.     draw_text_ex(4, 0, @text)
  785.   end
  786. end
  787. #==============================================================================
  788. # ■ Window_Qiangxz
  789. #------------------------------------------------------------------------------
  790. #  强化系统中,选择强化方式的窗口。
  791. #==============================================================================

  792. class Window_Qiangxz < Window_Command
  793.   @havegem = false
  794.   @havefangb = false
  795.   @havefangj = false
  796.   #--------------------------------------------------------------------------
  797.   # ● 初始化对象
  798.   #--------------------------------------------------------------------------
  799.   def initialize
  800.     super(0, 0)
  801.     index = 0
  802.     update_placement
  803.     self.openness = 0
  804.     open
  805.   end
  806.   #--------------------------------------------------------------------------
  807.   # ● 获取窗口的宽度
  808.   #--------------------------------------------------------------------------
  809.   def window_width
  810.     return 180
  811.   end
  812.   #--------------------------------------------------------------------------
  813.   # ● 更新窗口的位置
  814.   #--------------------------------------------------------------------------
  815.   def update_placement
  816.     self.x = (Graphics.width - width) / 2
  817.     self.y = (Graphics.height - height) / 2
  818.   end
  819.   #--------------------------------------------------------------------------
  820.   # ● 检查可用
  821.   #--------------------------------------------------------------------------
  822.   def haveitem
  823.     @havegem = false
  824.     @havefangb = false
  825.     @havefangj = false
  826.     for i in $强化哈希表["宝石效果"]
  827.         if $game_party.has_item?($data_items[i[1]])
  828.         @havegem = true
  829.       end
  830.     end
  831.     @havefangb = $game_party.has_item?($data_items[$强化哈希表["特殊物品"][0]])
  832.     @havefangj = $game_party.has_item?($data_items[$强化哈希表["特殊物品"][1]])
  833.   end
  834.   #--------------------------------------------------------------------------
  835.   # ● 生成指令列表
  836.   #--------------------------------------------------------------------------
  837.   def make_command_list
  838.     haveitem
  839.     add_command("宝石",     :gem, @havegem)
  840.     add_command(Qiang.idgetitem($强化哈希表["特殊物品"][0]).name, :fangb, @havefangb)
  841.     add_command(Qiang.idgetitem($强化哈希表["特殊物品"][1]).name, :fangj, @havefangj)
  842.     add_command("开始强化", :start)
  843.     add_command("取消强化", :cancel)
  844.   end
  845. end
  846. #==============================================================================
  847. # ■ Window_Base
  848. #------------------------------------------------------------------------------
  849. #  游戏中所有窗口的父类
  850. #==============================================================================

  851. class Window_Base < Window
  852.   #--------------------------------------------------------------------------
  853.   # ● 绘制物品名称
  854.   #     enabled : 有效的标志。false 的时候使用半透明效果绘制
  855.   #--------------------------------------------------------------------------
  856.   def draw_item_name(item, x, y, enabled = true, width = 172)
  857.     return unless item
  858.     draw_icon(item.icon_index, x, y, enabled)
  859.     change_color(normal_color, enabled)
  860.   if item.is_a?(RPG::EquipItem)
  861.   if item.up != nil && item.up != 0
  862.     draw_text(x + 24, y, width, line_height, item.name + "+" + item.up.to_s)
  863.   else
  864.     draw_text(x + 24, y, width, line_height, item.name)
  865.   end
  866.   else
  867.     draw_text(x + 24, y, width, line_height, item.name)
  868.   end
  869.   end
  870. end
  871. class Window_ItemList
  872.   #--------------------------------------------------------------------------
  873.   # ● 查询列表中是否含有此物品
  874.   #--------------------------------------------------------------------------
  875.   def include?(item)
  876.     case @category
  877.     when :item
  878.       item.is_a?(RPG::Item) && !item.key_item?
  879.     when :weapon
  880.       item.is_a?(RPG::Weapon)
  881.     when :armor
  882.       item.is_a?(RPG::Armor)
  883.     when :key_item
  884.       item.is_a?(RPG::Item) && item.key_item?
  885.     when :gem
  886.       itemid = item ? item.id : 0
  887.       itemid != 0 ? isgem(itemid) : false
  888.     else
  889.       false
  890.     end
  891.   end
  892.   
  893.   def isgem(itemid)
  894.     for i in $强化哈希表["宝石效果"]
  895.       return true if i[1] == itemid
  896.     end
  897.     false
  898.   end
  899. end
  900. #==============================================================================
  901. # ■ Window_Choosegem
  902. #------------------------------------------------------------------------------
  903. #  选择强化使用的宝石
  904. #==============================================================================

  905. class Window_Choosegem < Window_ItemList
  906.   #--------------------------------------------------------------------------
  907.   # ● 初始化对象
  908.   #--------------------------------------------------------------------------
  909.   def initialize()
  910.     super(0, 0, Graphics.width, fitting_height(2))
  911.     self.openness = 0
  912.     deactivate
  913.     @wufangwindow = nil
  914.     @qiangxz = nil
  915.     set_handler(:ok,     method(:on_ok))
  916.     set_handler(:cancel, method(:on_cancel))
  917.   end
  918.   
  919.   def wufangwindow=(wufangwindow)
  920.     @wufangwindow = wufangwindow
  921.   end
  922.   def qiangxz=(qiangxz)
  923.     @qiangxz = qiangxz
  924.   end
  925.   #--------------------------------------------------------------------------
  926.   # ● 开始输入的处理
  927.   #--------------------------------------------------------------------------
  928.   def start
  929.     self.category = :gem
  930.     self.y = (Graphics.height - height) / 2
  931.     refresh
  932.     select(0)
  933.     open
  934.     activate
  935.   end
  936.   #--------------------------------------------------------------------------
  937.   # ● 确定时的处理
  938.   #--------------------------------------------------------------------------
  939.   def on_ok
  940.     result = item ? item.id : 0
  941.     if result != 0
  942.      $usegem = true
  943.      $当前使用宝石id = result
  944.      for i in $强化哈希表["宝石效果"]
  945.        $当前使用宝石加成率 = i[0] if i[1] == $当前使用宝石id
  946.      end
  947.    else
  948.      $当前使用宝石加成率 = 0
  949.      $usegem = false
  950.     end
  951.     @wufangwindow.update_help
  952.     @qiangxz.activate
  953.     close
  954.   end
  955.   #--------------------------------------------------------------------------
  956.   # ● 查询此物品是否可用
  957.   #--------------------------------------------------------------------------
  958.   def enable?(item)
  959.     true
  960.   end
  961.   #--------------------------------------------------------------------------
  962.   # ● 取消时的处理
  963.   #--------------------------------------------------------------------------
  964.   def on_cancel
  965.     $当前使用宝石加成率 = 0
  966.     $usegem = false
  967.     @wufangwindow.update_help
  968.     @qiangxz.activate
  969.     close
  970.   end
  971. end
  972. #==============================================================================
  973. # ■ 强化系统DataManager
  974. #------------------------------------------------------------------------------
  975. #  将武器和防具数据保存入存档
  976. #==============================================================================
  977. module DataManager
  978.   #--------------------------------------------------------------------------
  979.   # ● 生成存档内容
  980.   #--------------------------------------------------------------------------
  981.   def self.make_save_contents
  982.     contents = {}
  983.     contents[:system]        = $game_system
  984.     contents[:timer]         = $game_timer
  985.     contents[:message]       = $game_message
  986.     contents[:switches]      = $game_switches
  987.     contents[:variables]     = $game_variables
  988.     contents[:self_switches] = $game_self_switches
  989.     contents[:actors]        = $game_actors
  990.     contents[:party]         = $game_party
  991.     contents[:troop]         = $game_troop
  992.     contents[:map]           = $game_map
  993.     contents[:player]        = $game_player
  994.     contents[:weapons]       = $data_weapons
  995.     contents[:armors]        = $data_armors
  996.     contents
  997.   end
  998.   #--------------------------------------------------------------------------
  999.   # ● 展开存档内容
  1000.   #--------------------------------------------------------------------------
  1001.   def self.extract_save_contents(contents)
  1002.     $game_system        = contents[:system]
  1003.     $game_timer         = contents[:timer]
  1004.     $game_message       = contents[:message]
  1005.     $game_switches      = contents[:switches]
  1006.     $game_variables     = contents[:variables]
  1007.     $game_self_switches = contents[:self_switches]
  1008.     $game_actors        = contents[:actors]
  1009.     $game_party         = contents[:party]
  1010.     $game_troop         = contents[:troop]
  1011.     $game_map           = contents[:map]
  1012.     $game_player        = contents[:player]
  1013.     $data_weapons       = contents[:weapons]
  1014.     $data_armors        = contents[:armors]
  1015.   end
  1016. end
  1017. #==============================================================================
  1018. # [PS0]物品颜色描绘
  1019. #      Window_Base_Itemcolor
  1020. #------------------------------------------------------------------------------
  1021. #     在物品、技能选项中显示物品品质并显示品质框和修改物品名颜色。
  1022. #==============================================================================
  1023. # [更新记录]
  1024. #    - 2012.01.03 By 仲秋启明
  1025. #      * 修改为VA定义
  1026. #    - 2011.12.27 By 仲秋启明
  1027. #      * 移植至RGSS3,遵循PS0协议;
  1028. #      * 优化数据库备注中设定方法
  1029. #    - 2011.08.22 By 冰舞蝶恋
  1030. #      * 蓝本(实用·极简 -- 按品质,给物品描绘色彩边框)
  1031. #    - 2010.08.06 By 仲秋启明
  1032. #      * 蓝本(物品颜色描绘脚本(完整无冲突版))
  1033. #------------------------------------------------------------------------------
  1034. # [使用方法]
  1035. #    - 替换原Window_Base中的draw_item_name定义或复制到Main之前
  1036. #==============================================================================
  1037. $_PS0 = {} if $_PS0 == nil  
  1038. $_PS0["Window_Base_Itemcolor"] = 20111227
  1039. #==============================================================================
  1040. # [PS0] 通用配置模块  
  1041. #==============================================================================
  1042. module PS0
  1043.   module Window_Base_Itemcolor
  1044.     Color1 = Color.new(255, 255, 255)  # 一般品质的色彩(白,1)
  1045.     Color2 = Color.new(128, 255, 128)  # 平庸品质的色彩(绿,2)
  1046.     Color3 = Color.new(57, 185, 255)  # 精良品质的色彩(蓝,3)
  1047.     Color4 = Color.new(128, 100, 245)    # 卓越品质的色彩(紫,4)
  1048.     Color5 = Color.new(255, 40, 255)  # 神秘品质的色彩(红,5)
  1049.     Color6 = Color.new(255, 128, 0)    # 传说品质的色彩(橙,6)
  1050.     Color7 = Color.new(255, 255, 128)  # 特殊品质的色彩(黄,7)
  1051.   end
  1052. end
  1053. #==============================================================================
  1054. # ■ Window_Base
  1055. #==============================================================================
  1056. class Window_Base < Window
  1057.   def draw_item_name(item, x, y, enabled = true, width = 172)
  1058.     if item != nil
  1059.       n = item.note
  1060.       a = n.split{/<(?:Quality|品质)\s*(.+)>/i}
  1061.       c = a[1].to_i
  1062.       if c <= 1
  1063.         color = PS0::Window_Base_Itemcolor::Color1
  1064.       elsif c == 2
  1065.         color = PS0::Window_Base_Itemcolor::Color2
  1066.       elsif c == 3
  1067.         color = PS0::Window_Base_Itemcolor::Color3
  1068.       elsif c == 4
  1069.         color = PS0::Window_Base_Itemcolor::Color4
  1070.       elsif c == 5
  1071.         color = PS0::Window_Base_Itemcolor::Color5
  1072.       elsif c == 6
  1073.         color = PS0::Window_Base_Itemcolor::Color6
  1074.       elsif c == 7
  1075.         color = PS0::Window_Base_Itemcolor::Color7
  1076.       else
  1077.         color = Color.new(0, 0, 0, 0)
  1078.       end
  1079.       self.contents.fill_rect(x, y, 24, 1, color)
  1080.       self.contents.fill_rect(x, y, 1, 24, color)
  1081.       self.contents.fill_rect(x, y+23, 24, 1, color)
  1082.       self.contents.fill_rect(x+23, y, 1, 24, color)
  1083.       draw_icon(item.icon_index, x, y, enabled)
  1084.       change_color(color, enabled)
  1085.         if item.is_a?(RPG::EquipItem)
  1086.   if item.up != nil && item.up != 0
  1087.     draw_text(x + 24, y, width, line_height, "+" + item.up.to_s + item.name)
  1088.   else
  1089.     draw_text(x + 24, y, width, line_height, item.name)
  1090.   end
  1091.   else
  1092.     draw_text(x + 24, y, width, line_height, item.name)
  1093.   end
  1094.       
  1095.     end
  1096.   end
  1097. end
  1098. #==============================================================================
  1099. # [PS0] End of Script
  1100. #==============================================================================
复制代码

作者: 九夜神尊    时间: 2012-7-29 20:53
沙发,占座。
话说这种强化抄袭于什么游戏呢 ?
作者: 狱冥幻翼    时间: 2012-7-29 20:57
九夜神尊 发表于 2012-7-29 20:53
沙发,占座。
话说这种强化抄袭于什么游戏呢 ?

偶也不知道啊……,问原作者吧,我只不过稍稍改了一下,既能显示颜色又能显示强化数值
作者: シスコン    时间: 2012-7-29 21:22
好有爱的葱、
作者: 狱冥幻翼    时间: 2012-7-29 21:26
シスコン 发表于 2012-7-29 21:22
好有爱的葱、

{:2_287:}呵呵,初音大爱
作者: eu国猪    时间: 2012-7-29 21:58
哇,感觉不错也
作者: 包子丶    时间: 2012-8-7 12:00
这个脚本如何使用没有写啊,,,,怎么使用呢?
作者: 狱冥幻翼    时间: 2012-9-29 21:22
包子丶 发表于 2012-8-7 12:00
这个脚本如何使用没有写啊,,,,怎么使用呢?

请参考wyongcan的装备强化系统,因为使用方法和原版一样就没有放范例,抱歉隔了这么长时间才回~苦逼的高中生……
作者: 冰舞蝶恋    时间: 2012-11-30 21:34
哟我的颜色描绘给转了这么多版本略欣慰啊= =+
作者: 838275615    时间: 2012-12-1 00:02
话说怎么把强化的数值放到前面?(如:木棍+10)而不是(+10木棍)
作者: 狱冥幻翼    时间: 2012-12-5 12:25
838275615 发表于 2012-12-1 00:02
话说怎么把强化的数值放到前面?(如:木棍+10)而不是(+10木棍)

1105行
  1. draw_text(x + 24, y, width, line_height, item.name + "+" + item.up.to_s)

复制代码





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