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

Project1

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

[RMVA发布] 仿网游的装备强化系统 更新优化版

  [复制链接]

Lv2.观梦者

梦石
0
星屑
810
在线时间
173 小时
注册时间
2008-11-22
帖子
112
跳转到指定楼层
1
发表于 2012-1-28 10:33:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 Sion 于 2013-12-16 16:52 编辑

从2008年注册了这个号子后,就一直对6R没什么贡献,
脚本也是新手阶段,近几天看到网游的强化后突发奇想,
查了很多资料,用了两天时间,解决了遇到的N多问题,终于写出了这个强化系统,也是我写的第一个脚本。
由于本人是新手,可能写法有点混乱,大家将就下。

本系统仿网游有非常坑爹的设置,如:设置强化到N级时 装备强化失败降级或是消失的几率,
还可以用道具防止降级或是消失。。
装备强化到不同级数所需的金钱和材料不同。
具体使用请参照范例。 统一武器强化到同一级数的提升的能力也可能不同,有一个范围的。

优化版改进了算法,现在可以无限添加强化石和宝石了,
增加了选择宝石的窗口,修复了已知BUG,增强了代码的可读性(以前真是会让人想死..),
增加了判断如果强化属性没有改变的话会加上一点的保底属性(不然强化一次能力值没变化)
优化版就这些内容了。

有一个BUG,范例里面的脚本没改,请找到
def haveitem 将里面的
        if $game_party.has_item?($data_items[i[0]])改成
        if $game_party.has_item?($data_items[i[1]])就行了


范例下载地址: 点我下载
补充论坛附件: 强化系统.rar (1.4 MB, 下载次数: 1135)







  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
复制代码

评分

参与人数 12星屑 +5972 梦石 +2 收起 理由
风雪优游 + 120 挺有爱
小传子 + 1332 + 2 不错,
☆恒皇杨之神★ + 12 神宝!凑整==
神秘影子 + 14 我很赞同
千葉玖濑 + 120 有爱!
lsu666666 + 14 棒...
aaalbx + 10 我把今天的分全花出去啦!牛逼!牛!.
429259591 + 60 发布区第3000个发布~~~奖励
絀神入化 + 10 牛逼
R-零 + 9 凑整~

查看全部评分

又不知道干什么好了。。。

Lv1.梦旅人

水土火风重逢处

梦石
0
星屑
234
在线时间
691 小时
注册时间
2010-7-17
帖子
3042
2
发表于 2012-1-28 10:39:12 | 只看该作者
那个等待的改一下,换成进度条感觉会更好
独坐望城,望断天涯
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
810
在线时间
173 小时
注册时间
2008-11-22
帖子
112
3
 楼主| 发表于 2012-1-28 10:45:12 | 只看该作者
429259591 发表于 2012-1-28 10:39
那个等待的改一下,换成进度条感觉会更好

那我还要去找下这个怎么写,有什么进度条的例子吗

点评

参考一下有些战斗系统的CP条如何?  发表于 2012-1-28 10:48
又不知道干什么好了。。。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

死亡颂唱者

梦石
0
星屑
1159
在线时间
1795 小时
注册时间
2011-10-21
帖子
2245

开拓者

4
发表于 2012-1-28 10:53:34 | 只看该作者
我试了一下,发现武器强化到9级后再进入强化界面将框移动到已经满级的武器上就会无缘无故说脚本错误 关闭游戏了。请问有没有什么方法可以避免吗?不然来不及存档就结束游戏了。

点评

修复好了,请重新下载范例  发表于 2012-1-28 11:16
这家伙很懒,什么也没有留下
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
810
在线时间
173 小时
注册时间
2008-11-22
帖子
112
5
 楼主| 发表于 2012-1-28 11:04:18 | 只看该作者
本帖最后由 wyongcan2008 于 2012-1-28 11:16 编辑
acn00269 发表于 2012-1-28 10:53
我试了一下,发现武器强化到9级后再进入强化界面将框移动到已经满级的武器上就会无缘无故说脚本错误 关闭游 ...


修复好了

评分

参与人数 1星屑 +200 收起 理由
忧雪の伤 + 200 奖赏条例

查看全部评分

又不知道干什么好了。。。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
250
在线时间
44 小时
注册时间
2009-8-2
帖子
335
6
发表于 2012-1-28 12:14:38 | 只看该作者
本帖最后由 lcz200966rpg 于 2012-1-28 12:17 编辑

哈哈这个范例好!这样有的自由度高的横版rpg就可以使用这个系统了,再加上有颜色的随机属性系统- - 真的就很自由了! 可惜目前没有这种作品
PS:这个强化脚本和沉影大大的随机属性脚本可以同时使用吗?

点评

这个是VA的脚本,那个是VX的脚本,应该不能吧  发表于 2012-1-28 12:50
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
1422 小时
注册时间
2008-8-30
帖子
999
7
发表于 2012-1-28 12:48:15 | 只看该作者
一直想找个这样的系统RMXP的,可惜都没有,有人移植么
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
2459 小时
注册时间
2011-12-18
帖子
1484
8
发表于 2012-1-28 13:08:53 | 只看该作者
朋友发给我网址,兴高采烈地跑进来一看,哈哈,果然强大,然后二话不说就下了下来,但是一看到工程,顿时傻了眼了,为什么是VA的,VX的呢?

点评

没看标题,注意到不是XP就以为是VX了,完全忽略了VA的存在啊  发表于 2012-1-28 13:41
难道是 VX 的么。  发表于 2012-1-28 13:39
这是一个深不见底的坑,这是一个广袤无边的坑,我才刚刚放上了一抔泥土……

《六道·陈国篇》开坑了……↓点我
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
250
在线时间
44 小时
注册时间
2009-8-2
帖子
335
9
发表于 2012-1-28 13:32:23 | 只看该作者
要是能把沉影这个移植到va,或者你这个移植到vx整合- -就很强大了.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
154
在线时间
664 小时
注册时间
2011-9-25
帖子
241
10
发表于 2012-1-28 15:20:43 | 只看该作者
感谢楼主~有两个问题请教下:
1、脚本拿到我的游戏里用为何物品强化了没有+1的字样?
2、强化结束后能否改成不自动取消物品画面?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 13:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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