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

Project1

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

[已经过期] 装备强化脚本的一点点问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2015-2-3
帖子
16
跳转到指定楼层
1
发表于 2015-2-6 16:46:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 RyanBern 于 2015-2-6 19:47 编辑

大家给我看看这个装备强化脚本:为什么以保存退出然后再登陆里面强化过的装备就都不见了?
RUBY 代码复制
  1. # 简易装备强化
  2. module EquipUp
  3.  
  4.   # 强化第一级需要消耗金币:装备价格 * 20%
  5.   # 强化第二级需要消耗金币:装备价格 * 50%
  6.   # …… …… …… …… …… …… …… ……
  7.   # 强化第十级需要消耗金币:装备价格 * 210%
  8.   Gold = [20, 50, 70, 90, 110, 130, 150, 170, 190, 210]
  9.  
  10.   # 强化第一级的成功率为100%
  11.   # 强化第二级的成功率为90%
  12.   # …… …… …… …… …… …… …… ……
  13.   # 强化第十级的成功率为10%
  14.   URate = [100, 95, 90, 85, 80, 83, 80, 78, 77, 75]
  15.  
  16.   # 强化第一级武器属性上浮1%
  17.   # 强化第二级武器属性上浮2%
  18.   # …… …… …… …… …… …… …… ……
  19.   # 强化第十级武器属性上浮10%
  20.   WRate = [5, 7, 12, 16, 21, 25, 32, 38, 45, 50]
  21.  
  22.   # 强化第一级防具属性上浮1%
  23.   # 强化第二级防具属性上浮2%
  24.   # …… …… …… …… …… …… …… ……
  25.   # 强化第十级防具属性上浮10%
  26.   ARate = [5, 7, 12, 16, 21, 25, 32, 38, 45, 50]
  27.  
  28.   # 强化消耗50号物品
  29.   Item = 48
  30.  
  31.   # 最高强化等级
  32.   MAX = 10
  33.  
  34. end
  35.  
  36.  
  37. #==========================================================
  38. #脚本正文
  39. #==========================================================
  40.  
  41.  
  42. class Game_Temp
  43.   attr_accessor :zzzzhash
  44.   alias initialize_EquipUp_zzzzhash initialize
  45.   def initialize
  46.     initialize_EquipUp_zzzzhash
  47.     @zzzzhash = {}
  48.   end
  49. end
  50. module RPG
  51.   class Weapon
  52.     attr_accessor :zzlevel
  53.   end
  54.   class Armor
  55.     attr_accessor :zzlevel
  56.   end
  57. end
  58. #==============================================================================
  59. # ■ Scene_EquipUp_Status_Item
  60. #------------------------------------------------------------------------------
  61. #  强化画面显示浏览物品的窗口。
  62. #==============================================================================
  63.  
  64. class Scene_EquipUp_Status_Item < Window_Selectable
  65.   #--------------------------------------------------------------------------
  66.   # ● 初始化对像
  67.   #--------------------------------------------------------------------------
  68.   def initialize
  69.     super(0, 64, 640-272, 480-64)
  70.     @column_max = 1
  71.     refresh
  72.     self.index = 0
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 获取物品
  76.   #--------------------------------------------------------------------------
  77.   def item
  78.     return @data[self.index]
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● 刷新
  82.   #--------------------------------------------------------------------------
  83.   def refresh
  84.     if self.contents != nil
  85.       self.contents.dispose
  86.       self.contents = nil
  87.     end
  88.     @data = []
  89.     for i in 1...$data_weapons.size
  90.       if $game_party.weapon_number(i) > 0
  91.         @data.push($data_weapons[i])
  92.       end
  93.     end
  94.     for i in 1...$data_armors.size
  95.       if $game_party.armor_number(i) > 0
  96.         @data.push($data_armors[i])
  97.       end
  98.     end
  99.     # 如果项目数不是 0 就生成位图、重新描绘全部项目
  100.     @item_max = @data.size
  101.     if @item_max > 0
  102.       self.contents = Bitmap.new(width - 32, row_max * 32)
  103.       for i in 0...@item_max
  104.         draw_item(i)
  105.       end
  106.     end
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # ● 描绘项目
  110.   #     index : 项目编号
  111.   #--------------------------------------------------------------------------
  112.   def draw_item(index)
  113.     item = @data[index]
  114.     case item
  115.     when RPG::Weapon
  116.       number = $game_party.weapon_number(item.id)
  117.     when RPG::Armor
  118.       number = $game_party.armor_number(item.id)
  119.     end
  120.     x = 4 + index % @column_max * (288 + 32)
  121.     y = index / @column_max * 32
  122.     bitmap = RPG::Cache.icon(item.icon_name)
  123.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
  124.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  125.     self.contents.draw_text(x + 300, y, 24, 32, number.to_s, 2)
  126.   end
  127.   #--------------------------------------------------------------------------
  128.   # ● 刷新帮助文本
  129.   #--------------------------------------------------------------------------
  130.   def update_help
  131.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  132.   end
  133. end
  134.  
  135.  
  136. class Scene_EquipUp_Status < Window_Base
  137.   #--------------------------------------------------------------------------
  138.   # ● 初始化对像
  139.   #--------------------------------------------------------------------------
  140.   def initialize
  141.     super(640-272, 64, 272, 480-64)
  142.     self.contents = Bitmap.new(width - 32, height - 32)
  143.     @rect = Rect.new(0, 0, 24, 24)
  144.   end
  145.   def str(s)
  146.     return self.contents.text_size(s).width
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ● 刷新
  150.   #--------------------------------------------------------------------------
  151.   def refresh(zz)
  152.     self.contents.clear
  153.     if zz.nil?
  154.       return
  155.     end
  156.     # 名称and图标
  157.     bitmap = RPG::Cache.icon(zz.icon_name)
  158.     self.contents.blt(0, 0, bitmap, @rect)
  159.     self.contents.draw_text(30, 0, str(zz.name), 22, zz.name)
  160.     # 初始化
  161.     if zz.zzlevel.nil?
  162.       zz.zzlevel = 0
  163.       if zz.is_a?(RPG::Weapon)
  164.         $game_temp.zzzzhash[[zz.name, 0, "武器"]] = zz.id
  165.       elsif zz.is_a?(RPG::Armor)
  166.         $game_temp.zzzzhash[[zz.name, 0, "防具"]] = zz.id
  167.       end
  168.     end
  169.     # 文字说明
  170.     s = "强化等级:"+zz.zzlevel.to_s
  171.     self.contents.draw_text(0, 32, str(s), 22, s)
  172.     cy = 2
  173.     if zz.is_a?(RPG::Weapon)
  174.       if !EquipUp::WRate[zz.zzlevel].nil?
  175.         s = "攻击力:"+zz.atk.to_s+" → "+Integer(zz.atk + zz.atk * (EquipUp::WRate[zz.zzlevel] / 100.0)).to_s
  176.       else
  177.         s = "攻击力:"+zz.atk.to_s
  178.       end
  179.       self.contents.draw_text(0, cy*32, str(s), 22, s)
  180.       cy += 1
  181.     elsif zz.is_a?(RPG::Armor)
  182.       if zz.eva > 0
  183.         if !EquipUp::WRate[zz.zzlevel].nil?
  184.           s = "回避:"+zz.eva.to_s+" → "+Integer(zz.eva + zz.eva * (EquipUp::ARate[zz.zzlevel] / 100.0)).to_s
  185.         else
  186.           s = "回避:"+zz.eva.to_s
  187.         end
  188.         self.contents.draw_text(0, cy*32, str(s), 22, s)
  189.         cy += 1
  190.       end
  191.     end
  192.     if zz.pdef > 0
  193.       if !EquipUp::WRate[zz.zzlevel].nil?
  194.         if !zz.is_a?(RPG::Armor)
  195.           s = "物理防御:"+zz.pdef.to_s+" → "+Integer(zz.pdef + zz.pdef * (EquipUp::WRate[zz.zzlevel] / 100.0)).to_s
  196.         else
  197.           s = "物理防御:"+zz.pdef.to_s+" → "+Integer(zz.pdef + zz.pdef * (EquipUp::ARate[zz.zzlevel] / 100.0)).to_s
  198.         end
  199.       else
  200.         s = "物理防御:"+zz.pdef.to_s
  201.       end
  202.       self.contents.draw_text(0, cy*32, str(s), 22, s)
  203.       cy += 1
  204.     end
  205.     if zz.mdef > 0
  206.       if !EquipUp::WRate[zz.zzlevel].nil?
  207.         if !zz.is_a?(RPG::Armor)
  208.           s = "魔法防御:"+zz.mdef.to_s+" → "+Integer(zz.mdef + zz.mdef * (EquipUp::WRate[zz.zzlevel] / 100.0)).to_s
  209.         else
  210.           s = "魔法防御:"+zz.mdef.to_s+" → "+Integer(zz.mdef + zz.mdef * (EquipUp::ARate[zz.zzlevel] / 100.0)).to_s
  211.         end
  212.       else
  213.         s = "魔法防御:"+zz.mdef.to_s
  214.       end
  215.       self.contents.draw_text(0, cy*32, str(s), 22, s)
  216.       cy += 1
  217.     end
  218.     if zz.str_plus > 0
  219.       if !EquipUp::WRate[zz.zzlevel].nil?
  220.         if !zz.is_a?(RPG::Armor)
  221.           s = "力量:"+zz.str_plus.to_s+" → "+Integer(zz.str_plus + zz.str_plus * (EquipUp::WRate[zz.zzlevel] / 100.0)).to_s
  222.         else
  223.           s = "力量:"+zz.str_plus.to_s+" → "+Integer(zz.str_plus + zz.str_plus * (EquipUp::ARate[zz.zzlevel] / 100.0)).to_s
  224.         end
  225.       else
  226.         s = "力量:"+zz.str_plus.to_s
  227.       end
  228.       self.contents.draw_text(0, cy*32, str(s), 22, s)
  229.       cy += 1
  230.     end
  231.     if zz.dex_plus > 0
  232.       if !EquipUp::WRate[zz.zzlevel].nil?
  233.         if !zz.is_a?(RPG::Armor)
  234.           s = "灵巧:"+zz.dex_plus.to_s+" → "+Integer(zz.dex_plus + zz.dex_plus * (EquipUp::WRate[zz.zzlevel] / 100.0)).to_s
  235.         else
  236.           s = "灵巧:"+zz.dex_plus.to_s+" → "+Integer(zz.dex_plus + zz.dex_plus * (EquipUp::ARate[zz.zzlevel] / 100.0)).to_s
  237.         end
  238.       else
  239.         s = "灵巧:"+zz.dex_plus.to_s
  240.       end
  241.       self.contents.draw_text(0, cy*32, str(s), 22, s)
  242.       cy += 1
  243.     end
  244.     if zz.agi_plus > 0
  245.       if !EquipUp::WRate[zz.zzlevel].nil?
  246.         if !zz.is_a?(RPG::Armor)
  247.           s = "速度:"+zz.agi_plus.to_s+" → "+Integer(zz.agi_plus + zz.agi_plus * (EquipUp::WRate[zz.zzlevel] / 100.0)).to_s
  248.         else
  249.           s = "速度:"+zz.agi_plus.to_s+" → "+Integer(zz.agi_plus + zz.agi_plus * (EquipUp::ARate[zz.zzlevel] / 100.0)).to_s
  250.         end
  251.       else
  252.         s = "速度:"+zz.agi_plus.to_s
  253.       end
  254.       self.contents.draw_text(0, cy*32, str(s), 22, s)
  255.       cy += 1
  256.     end
  257.     if zz.int_plus > 0
  258.       if !EquipUp::WRate[zz.zzlevel].nil?
  259.         if !zz.is_a?(RPG::Armor)
  260.           s = "魔力:"+zz.int_plus.to_s+" → "+Integer(zz.int_plus + zz.int_plus * (EquipUp::WRate[zz.zzlevel] / 100.0)).to_s
  261.         else
  262.           s = "魔力:"+zz.int_plus.to_s+" → "+Integer(zz.int_plus + zz.int_plus * (EquipUp::ARate[zz.zzlevel] / 100.0)).to_s
  263.         end
  264.       else
  265.         s = "魔力:"+zz.int_plus.to_s
  266.       end
  267.       self.contents.draw_text(0, cy*32, str(s), 22, s)
  268.       cy += 1
  269.     end
  270.     self.contents.draw_text(0, cy*32, str("价格:"+zz.price.to_s), 22, "价格:"+zz.price.to_s)
  271.     cy += 1
  272.     self.contents.draw_text(0, cy*32, str("现金:"+$game_party.gold.to_s), 22, "现金:"+$game_party.gold.to_s)
  273.     cy += 1
  274.     self.contents.draw_text(0, cy*32, str(
  275.     "持有"+$data_items[EquipUp::Item].name+":"+$game_party.item_number(
  276.     EquipUp::Item).to_s), 22, "持有"+$data_items[EquipUp::Item].name+":"+
  277.     $game_party.item_number(EquipUp::Item).to_s)
  278.     return if zz.zzlevel == EquipUp::MAX
  279.     cy += 1
  280.     self.contents.draw_text(0, cy*32, str("下一级将消耗:"), 22, "下一级将消耗:")
  281.     cy += 1
  282.     bitmap = RPG::Cache.icon($data_items[EquipUp::Item].icon_name)
  283.     self.contents.blt(0, cy*32, bitmap, @rect)
  284.     self.contents.draw_text(30, cy*32, str($data_items[EquipUp::Item].name + " × 1"), 22, $data_items[EquipUp::Item].name + " × 1")
  285.     cy += 1
  286.     self.contents.draw_text(0, cy*32, str("金币"+EquipUp::Gold[zz.zzlevel].to_s), 22, "金币"+EquipUp::Gold[zz.zzlevel].to_s)
  287.  
  288.  
  289.  
  290.   end
  291. end
  292.  
  293.  
  294. class Scene_EquipUp
  295.   def main
  296.     @help = Window_Help.new
  297.     @status = Scene_EquipUp_Status.new
  298.     @item = Scene_EquipUp_Status_Item.new
  299.     @item.help_window = @help
  300.     @status.refresh(@item.item)
  301.     Graphics.transition
  302.     loop do
  303.       Graphics.update
  304.       Input.update
  305.       update
  306.       if $scene != self
  307.         break
  308.       end
  309.     end
  310.     Graphics.freeze
  311.     @help.dispose
  312.     @status.dispose
  313.     @item.dispose
  314.   end
  315.   def update
  316.     @help.update
  317.     @status.update
  318.     @item.update
  319.     @status.refresh(@item.item)
  320.  
  321.     # 按下 B 键的情况下
  322.     if Input.trigger?(Input::B)
  323.       # 演奏取消 SE
  324.       $game_system.se_play($data_system.cancel_se)
  325.       # 切换的地图画面
  326.       $scene = Scene_Map.new
  327.       return
  328.     end
  329.  
  330.     # 按下 C 键的情况下
  331.     if Input.trigger?(Input::C)
  332.       if @item.item.nil?
  333.         # 演奏冻结 SE
  334.         $game_system.se_play($data_system.buzzer_se)
  335.         return
  336.       end
  337.       # 初始化
  338.       if @item.item.zzlevel == EquipUp::MAX
  339.         # 演奏冻结 SE
  340.         $game_system.se_play($data_system.buzzer_se)
  341.         return
  342.       end
  343.       gold_num = Integer(EquipUp::Gold[@item.item.zzlevel] / 100.0 * @item.item.price)
  344.       item_num = $game_party.item_number(EquipUp::Item)
  345.       if $game_party.gold >= gold_num and item_num > 0
  346.         # 演奏确定 SE
  347.         $game_system.se_play($data_system.decision_se)
  348.         # 消耗
  349.         $game_party.lose_gold(gold_num)
  350.         $game_party.lose_item(EquipUp::Item, 1)
  351.         # 概率
  352.         if rand(100) > EquipUp::URate[@item.item.zzlevel]
  353.           print "失败"
  354.           zzlevel = [0, @item.item.zzlevel - 3].max
  355.           #@item.item.zzlevel = [0, @item.item.zzlevel - 3].max
  356.           if @item.item.is_a?(RPG::Weapon)
  357.             $game_party.lose_weapon(@item.item.id, 1)
  358.             if zzlevel != 0
  359.               $game_party.gain_weapon($game_temp.zzzzhash[[@item.item.name.split(" ")[0], zzlevel, "武器"]], 1)
  360.             end
  361.             @item.refresh
  362.           elsif @item.item.is_a?(RPG::Armor)
  363.             $game_party.lose_armor(@item.item.id, 1)
  364.             if zzlevel != 0
  365.               $game_party.gain_armor($game_temp.zzzzhash[[@item.item.name.split(" ")[0], zzlevel, "防具"]], 1)
  366.             end
  367.             @item.refresh
  368.           end
  369.           return
  370.         end
  371.         # 制造新装备
  372.         if @item.item.is_a?(RPG::Weapon)#武器
  373.           newid = $game_temp.zzzzhash[[@item.item.name.split(" ")[0], @item.item.zzlevel + 1, "武器"]]
  374.           if newid != nil
  375.             print "OK!"
  376.             $game_party.lose_weapon(@item.item.id, 1)
  377.             $game_party.gain_weapon(newid, 1)
  378.             @item.refresh
  379.             return
  380.           end
  381.           zz = @item.item.clone
  382.           zz.zzlevel = @item.item.zzlevel + 1
  383.           zz.price += Integer(EquipUp::WRate[@item.item.zzlevel] / 100.0 * @item.item.price) if zz.price > 0
  384.           zz.atk += Integer(EquipUp::WRate[@item.item.zzlevel] / 100.0 * @item.item.atk) if zz.atk > 0
  385.           zz.mdef += Integer(EquipUp::WRate[@item.item.zzlevel] / 100.0 * @item.item.mdef) if zz.mdef > 0
  386.           zz.pdef += Integer(EquipUp::WRate[@item.item.zzlevel] / 100.0 * @item.item.pdef) if zz.pdef > 0
  387.           zz.str_plus += Integer(EquipUp::WRate[@item.item.zzlevel] / 100.0 * @item.item.str_plus) if zz.str_plus > 0
  388.           zz.dex_plus += Integer(EquipUp::WRate[@item.item.zzlevel] / 100.0 * @item.item.dex_plus) if zz.dex_plus > 0
  389.           zz.agi_plus += Integer(EquipUp::WRate[@item.item.zzlevel] / 100.0 * @item.item.agi_plus) if zz.agi_plus > 0
  390.           zz.int_plus += Integer(EquipUp::WRate[@item.item.zzlevel] / 100.0 * @item.item.int_plus) if zz.int_plus > 0
  391.           if zz.name.include?("+")
  392.             zz.name = zz.name.split("+")[0] + "+ #{zz.zzlevel}"
  393.           else
  394.             zz.name += " + 1"
  395.           end
  396.           zz.id = $data_weapons.size + 1
  397.           $game_temp.zzzzhash[[@item.item.name.split(" ")[0], zz.zzlevel, "武器"]] = zz.id
  398.           $data_weapons[zz.id] = zz
  399.           for cl in $data_classes
  400.             if cl.nil?
  401.               next
  402.             end
  403.             if cl.weapon_set.include?(@item.item.id)
  404.               cl.weapon_set.push(zz.id)
  405.             end
  406.           end
  407.           $game_party.lose_weapon(@item.item.id, 1)
  408.           $game_party.gain_weapon(zz.id, 1)
  409.           @item.refresh
  410.           print "OK!"
  411.  
  412.         elsif @item.item.is_a?(RPG::Armor)#防具
  413.           newid = $game_temp.zzzzhash[[@item.item.name.split(" ")[0], @item.item.zzlevel + 1, "防具"]]
  414.           if newid != nil
  415.             print "OK!"
  416.             $game_party.lose_armor(@item.item.id, 1)
  417.             $game_party.gain_armor(newid, 1)
  418.             @item.refresh
  419.             return
  420.           end
  421.           zz = @item.item.clone
  422.           zz.zzlevel = @item.item.zzlevel + 1
  423.           zz.price += Integer(EquipUp::ARate[@item.item.zzlevel] / 100.0 * @item.item.price) if zz.price > 0
  424.           zz.eva += Integer(EquipUp::ARate[@item.item.zzlevel] / 100.0 * @item.item.eva) if zz.eva > 0
  425.           zz.mdef += Integer(EquipUp::ARate[@item.item.zzlevel] / 100.0 * @item.item.mdef) if zz.mdef > 0
  426.           zz.pdef += Integer(EquipUp::ARate[@item.item.zzlevel] / 100.0 * @item.item.pdef) if zz.pdef > 0
  427.           zz.str_plus += Integer(EquipUp::ARate[@item.item.zzlevel] / 100.0 * @item.item.str_plus) if zz.str_plus > 0
  428.           zz.dex_plus += Integer(EquipUp::ARate[@item.item.zzlevel] / 100.0 * @item.item.dex_plus) if zz.dex_plus > 0
  429.           zz.agi_plus += Integer(EquipUp::ARate[@item.item.zzlevel] / 100.0 * @item.item.agi_plus) if zz.agi_plus > 0
  430.           zz.int_plus += Integer(EquipUp::ARate[@item.item.zzlevel] / 100.0 * @item.item.int_plus) if zz.int_plus > 0
  431.           if zz.name.include?("+")
  432.             zz.name = zz.name.split("+")[0] + "+ #{zz.zzlevel}"
  433.           else
  434.             zz.name += " + 1"
  435.           end
  436.           zz.id = $data_armors.size + 1
  437.           $game_temp.zzzzhash[[@item.item.name.split(" ")[0], zz.zzlevel, "防具"]] = zz.id
  438.           $data_armors[zz.id] = zz
  439.           for cl in $data_classes
  440.             if cl.nil?
  441.               next
  442.             end
  443.             if cl.armor_set.include?(@item.item.id)
  444.               cl.armor_set.push(zz.id)
  445.             end
  446.           end
  447.           $game_party.lose_armor(@item.item.id, 1)
  448.           $game_party.gain_armor(zz.id, 1)
  449.           @item.refresh
  450.           print "OK!"
  451.         end
  452.       else
  453.         # 演奏冻结 SE
  454.         $game_system.se_play($data_system.buzzer_se)
  455.       end
  456.     end
  457.   end
  458. end
  459.  
  460. class Scene_Save < Scene_File
  461.   alias write_save_data_zzzz_equip write_save_data
  462.   def write_save_data(file)
  463.     save_data($data_weapons, "Data/Weapons.rxdata")
  464.     save_data($data_armors, "Data/Armors.rxdata")
  465.     save_data($data_classes, "Data/Classes.rxdata")
  466.     write_save_data_zzzz_equip(file)
  467.   end
  468. end

点评

骚年,使用论坛的代码功能好么?  发表于 2015-2-6 17:12

Lv1.梦旅人

梦石
0
星屑
50
在线时间
29 小时
注册时间
2015-2-3
帖子
16
2
 楼主| 发表于 2015-2-6 19:34:58 | 只看该作者
我不会用代码内种东西

点评

利用[pre lang="Ruby"]脚本内容[/pre]把脚本内容包起来  发表于 2015-2-6 19:48
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 08:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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