#============================================================================== # ■ 强化系统 优化版 #----强化系统 wyongcan制作-------------------------------------------------------------------------- # # 优化版更新内容:优化了语法,修复部分BUG,使代码可读性增强,增加了宝石选择窗口 # 发布于66RPG 转载请保留版权信息 #============================================================================== module Qiang $maxlv = 50 #最高升到的级数 $gailv = [100,98,96,94,92,90,88,86,84,82,80,78,76,74,72,70,68,66,64,62,60,58,56,54,52,50,48,46,44,42,40,38,36,34,32,30,28,26,24,22,20,18,16,14,12,10,10,10,10,10] #每级提升概率 $gemlv = [[15,25],[20,26],[25,27],[30,28],[50,29]] #使用宝石提高的几率 [提高几率,宝石ID] [url=home.php?mod=space&username=天使喝可乐]@天使喝可乐[/url] $uplv = [[5,10],[10,11],[15,12],[20,13],[25,14]] #强化所需要的强化石 [最大强化到的等级,强化石ID] $xxlv = [0,0,0,0,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50] #每级强化后失败物品消失的几率 $jjlv = [0,0,0,0,0,2,2,2,2,2,4,4,4,4,4,6,6,6,6,6,8,8,8,8,8,10,10,10,10,10,15,15,15,15,15,20,20,20,20,20,30,30,30,30,30,40,40,40,40,40] #每级强化后失败物品降级的几率 $tsnl = [2,4,6,8,10,12,14,16,18,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,350] #每级强化提升能力的百分比 $tswp = [0,0] # 意思是:如果有31号物品则失败后物品不消失,如果有32号物品则失败后物品不降级 #武器强化后的计算公式为: 原攻击 * (1 + 提升能力百分比) + (0到当前强化级数随机) * 5 + 当前强化级数 $gemlv.sort! $uplv.sort! $当前使用宝石id = 0 $当前使用宝石加成率 = 0 $强化哈希表 = { "最高等级" => $maxlv , "每级概率" => $gailv , "宝石效果" => $gemlv , "消失几率" => $xxlv , "降级几率" => $jjlv , "提升能力" => $tsnl , "特殊物品" => $tswp , "强化材料" => $uplv } def self.idlostitem(id,amount = 1) $game_party.lose_item(idgetitem(id),amount) end def self.idlostequip(id,weapon = true,amount = 1) weapon == true ? $game_party.lose_item($data_weapons[id],amount,true) : $game_party.lose_item($data_armors[id],amount,true) end def self.idgainequip(id,weapon = true,amount = 1) weapon == true ? $game_party.gain_item($data_weapons[id],amount,true) : $game_party.gain_item($data_armors[id],amount,true) end def self.idgetitem(id) $data_items[id] end def self.equipable?(id,weapon = true) weapon == true ? weaponupisnil(id) : armorupisnil(id) weapon == true ? equip = $data_weapons[id].dup : equip = $data_armors[id].dup price = equip.price @needmoney = price * equip.up if @needmoney == 0 @needmoney = price / 2 end #循环取出需要的强化材料 temp = false for i in $强化哈希表["强化材料"] if equip.up < i[0] @lostitem = idgetitem i[1] $game_party.has_item?(idgetitem(i[1])) ? temp = true : temp = false break end end $game_party.gold >= @needmoney && temp == true ? true : false end def self.upweapon (id) $message = "" success = false weaponupisnil(id) weapon = $data_weapons[id].dup gl = 0 fangb = false fangj = false return unless weapon.up < $强化哈希表["最高等级"] && weaponupable?(id) loststh $message += "本次强化,共消耗:" + Vocab::currency_unit + " " + @needmoney.to_s $message += " " + @lostitem.name + "\n " gl = $强化哈希表["每级概率"][weapon.up] if $usegem == true gl += $当前使用宝石加成率 idlostitem($当前使用宝石id) $message += idgetitem($当前使用宝石id).name + " " end if $fangb == true fangb = true idlostitem $强化哈希表["特殊物品"][0] $message += idgetitem($强化哈希表["特殊物品"][0]).name + " " end if $fangj == true fangj = true idlostitem $强化哈希表["特殊物品"][1] $message += idgetitem($强化哈希表["特殊物品"][1]).name + " " end suiji = rand (100) if suiji <= gl success = true end $message += "\n强化结果:" if success == true $message += "强化成功" idlostequip id weapon.id = $data_weapons.size params = weapon.params.dup params[2] *= 1 + $强化哈希表["提升能力"][weapon.up] / 100 params[2] += rand(weapon.up) * 5 + weapon.up params[2] += 1 if params[2] == weapon.params[2] $message += " 攻击力提升:" + (params[2] - weapon.params[2]).to_int.to_s weapon.up += 1 $data_weapons.insert $data_weapons.size,weapon $data_weapons[$data_weapons.size-1].params = params idgainequip weapon.id else $message += "强化失败" suiji = rand (100) if suiji <= $强化哈希表["消失几率"][weapon.up] if fangb != true $message += ",道具消失" idlostequip id else $message += ",由于" + idgetitem($强化哈希表["特殊物品"][0]).name + "的作用,道具未消失" end else suiji = rand (100) if suiji <= $强化哈希表["降级几率"][weapon.up] if fangj == false && weapon.up != 0 $message += ",道具降级" params = weapon.params.dup params[2] -= weapon.up + rand(weapon.up) * 5 params[2] /= 1 + $强化哈希表["提升能力"][weapon.up] / 100 weapon.params = params weapon.up -= 1 $data_weapons[id] = weapon else $message += ",由于" + idgetitem($强化哈希表["特殊物品"][1]).name + "的作用,道具未降级" end end end end $usegem = false $fangb = false $fangj = false end def self.weaponupisnil(id) $data_weapons[id].up = 0 unless $data_weapons[id].up != nil end def self.weaponupable?(id) equipable?(id) end def self.uparmor (id) $message = "" success = false armorupisnil(id) armor = $data_armors[id].dup gl = 0 fangb = false fangj = false return unless armor.up < $强化哈希表["最高等级"] && armorupable?(id) loststh $message += "本次强化,共消耗:" + Vocab::currency_unit + " " + @needmoney.to_s $message += " " + @lostitem.name + "\n " gl = $强化哈希表["每级概率"][armor.up] if $usegem == true gl += $当前使用宝石加成率 idlostitem($当前使用宝石id) $message += idgetitem($当前使用宝石id).name + " " end if $fangb == true fangb = true idlostitem $强化哈希表["特殊物品"][0] $message += idgetitem($强化哈希表["特殊物品"][0]).name + " " end if $fangj == true fangj = true idlostitem $强化哈希表["特殊物品"][1] $message += idgetitem($强化哈希表["特殊物品"][1]).name + " " end suiji = rand (100) if suiji <= gl success = true end $message += "\n强化结果:" if success == true $message += "强化成功" idlostequip id,false armor.id = $data_armors.size params = armor.params.dup params[3] *= 1 + $强化哈希表["提升能力"][armor.up] / 100 params[3] += rand(armor.up) * 5 + armor.up params[3] += 1 if params[3] == armor.params[3] $message += " 防御力提升:" + (params[3] - armor.params[3]).to_int.to_s armor.up += 1 $data_armors.insert $data_armors.size,armor $data_armors[$data_armors.size-1].params = params idgainequip armor.id,false else $message += "强化失败" suiji = rand (100) if suiji <= $强化哈希表["消失几率"][armor.up] if fangb != true $message += ",道具消失" idlostequip id,false else $message += ",由于" + idgetitem($强化哈希表["特殊物品"][0]).name + "的作用,道具未消失" end else suiji = rand (100) if suiji <= $强化哈希表["降级几率"][armor.up] if fangj == false && armor.up != 0 $message += ",道具降级" params = armor.params.dup params[3] -= armor.up + rand(armor.up) * 5 params[3] /= 1 + $强化哈希表["提升能力"][armor.up] / 100 armor.params = params armor.up -= 1 $data_armors[id] = armor else $message += ",由于" + idgetitem($强化哈希表["特殊物品"][1]).name + "的作用,道具未降级" end end end end $usegem = false $fangb = false $fangj = false end def self.armorupisnil(id) $data_armors[id].up = 0 unless $data_armors[id].up != nil end def self.armorupable?(id) equipable?(id,false) end def self.loststh() $game_party.lose_item(@lostitem,1) $game_party.lose_gold(@needmoney) end def self.needmoney @needmoney end def self.lostitem @lostitem end end #============================================================================== # ■ Scene_Qiang #------------------------------------------------------------------------------ # 强化画面 #============================================================================== class Scene_Qiang < Scene_MenuBase $wufang = true $usegem = true $fangb = true $fangj = true #-------------------------------------------------------------------------- # ● 开始处理 #-------------------------------------------------------------------------- def start super create_help_window @help_window.hide create_qianghelp_window create_command_window create_qiangxz_window create_wu_window create_fang_window create_choosegem_window end #-------------------------------------------------------------------------- # ● 生成说明窗口 #-------------------------------------------------------------------------- def create_qianghelp_window @qianghelp_window = Window_Qianghelp.new @qianghelp_window.y = Graphics.height - @qianghelp_window.height @qianghelp_window.viewport = @viewport @qianghelp_window.hide end #-------------------------------------------------------------------------- # ● 生成选择宝石 #-------------------------------------------------------------------------- def create_choosegem_window @choosegem_window = Window_Choosegem.new @choosegem_window.y = Graphics.height - @choosegem_window.height @choosegem_window.viewport = @viewport @choosegem_window.z = 120 end #-------------------------------------------------------------------------- # ● 生成选择窗口 #-------------------------------------------------------------------------- def create_qiangxz_window @qiangxz_window = Window_Qiangxz.new @qiangxz_window.y = @help_window.height + fitting_height(5) /2 @qiangxz_window.z = 110 @qiangxz_window.viewport = @viewport @qiangxz_window.set_handler(:gem, method(:qiangxz_gem)) @qiangxz_window.set_handler(:fangb, method(:qiangxz_fangb)) @qiangxz_window.set_handler(:fangj, method(:qiangxz_fangj)) @qiangxz_window.set_handler(:ok, method(:qiangxz_ok)) @qiangxz_window.set_handler(:cancel, method(:qiangxz_cancel)) @qiangxz_window.hide @qiangxz_window.deactivate end #-------------------------------------------------------------------------- # ● 生成指令窗口 #-------------------------------------------------------------------------- def create_command_window @command_window = Window_QiangCommand.new @command_window.viewport = @viewport @command_window.y = @help_window.height + fitting_height(3) /2 @command_window.set_handler(:qiangwu, method(:qiangwu)) @command_window.set_handler(:qiangfang, method(:qiangfang)) @command_window.set_handler(:cancel, method(:return_scene)) end #-------------------------------------------------------------------------- # ● 生成武器强化窗口 #-------------------------------------------------------------------------- def create_wu_window @wu_window = Window_Qiangwu.new(@qianghelp_window,@qiangxz_window) @wu_window.viewport = @viewport @wu_window.y += @help_window.height @wu_window.hide @wu_window.help_window= @help_window @wu_window.set_handler(:cancel, method(:qiangwu_cancel)) @wu_window.set_handler(:ok, method(:qiangwu_ok)) end #-------------------------------------------------------------------------- # ● 生成防具强化窗口 #-------------------------------------------------------------------------- def create_fang_window @fang_window = Window_Qiangfang.new(@qianghelp_window,@qiangxz_window) @fang_window.viewport = @viewport @fang_window.y += @help_window.height @fang_window.hide @fang_window.help_window= @help_window @fang_window.set_handler(:cancel, method(:qiangfang_cancel)) @fang_window.set_handler(:ok, method(:qiangfang_ok)) end #-------------------------------------------------------------------------- # ● 计算窗口显示指定行数时的应用高度 #-------------------------------------------------------------------------- def fitting_height(line_number) line_number * 24 + 12 * 2 end #-------------------------------------------------------------------------- # ● 显示强化武器 #-------------------------------------------------------------------------- def qiangwu @command_window.hide @help_window.show @wu_window.show @wu_window.start @qianghelp_window.show @wu_window.activate $wufang = true @command_window.deactivate end #-------------------------------------------------------------------------- # ● 显示强化防具 #-------------------------------------------------------------------------- def qiangfang @command_window.hide @help_window.show @fang_window.show @fang_window.start @qianghelp_window.show @fang_window.activate $wufang = true @command_window.deactivate end #-------------------------------------------------------------------------- # ● 取消强化武器 #-------------------------------------------------------------------------- def qiangwu_cancel @command_window.show @help_window.hide @wu_window.hide @qianghelp_window.hide @command_window.activate @qianghelp_window.set_text("") @help_window.set_text("") end #-------------------------------------------------------------------------- # ● 取消强化防具 #-------------------------------------------------------------------------- def qiangfang_cancel @command_window.show @help_window.hide @fang_window.hide @qianghelp_window.hide @command_window.activate @qianghelp_window.set_text("") @help_window.set_text("") end #-------------------------------------------------------------------------- # ● 确定强化武器 #-------------------------------------------------------------------------- def qiangwu_ok @wu_window.qiangwu_ok @qiangxz_window.show @qiangxz_window.activate end #-------------------------------------------------------------------------- # ● 确定强化防具 #-------------------------------------------------------------------------- def qiangfang_ok @fang_window.qiangfang_ok @qiangxz_window.show @qiangxz_window.activate end #-------------------------------------------------------------------------- # ● 获取卖出价格 #-------------------------------------------------------------------------- def selling_price @item.price / 2 end def qiangxz_gem @choosegem_window.start @qiangxz_window.deactivate @choosegem_window.qiangxz= @qiangxz_window if $wufang == true @choosegem_window.wufangwindow= @wu_window else @choosegem_window.wufangwindow= @fang_window end end def qiangxz_fangb $fangb = !$fangb if $wufang == true @wu_window.update_help else @fang_window.update_help end @qiangxz_window.activate end def qiangxz_fangj $fangj = !$fangj if $wufang == true @wu_window.update_help else @fang_window.update_help end @qiangxz_window.activate end def qiangxz_ok if $wufang == true Qiang.upweapon(@wu_window.itemid) qianging @qianghelp_window.set_text($message) @qiangxz_window.hide Graphics.wait(60) @wu_window.activate @qiangxz_window.deactivate $当前使用宝石加成率 = 0 $usegem = false @fang_window.update_help @wu_window.refresh @command_window.deactivate else Qiang.uparmor(@fang_window.itemid) qianging @qianghelp_window.set_text($message) @qiangxz_window.hide Graphics.wait(60) @fang_window.activate @qiangxz_window.deactivate $当前使用宝石加成率 = 0 $usegem = false @fang_window.update_help @fang_window.refresh @command_window.deactivate end end def qiangxz_cancel @wu_window.show @qiangxz_window.hide @qiangxz_window.deactivate if $wufang == true @wu_window.activate else @fang_window.activate end $当前使用宝石加成率 = 0 $usegem = false @command_window.deactivate end def qianging i = 0 while i < 20 i += 1 text = "\n" text += "★" * i + "☆" * (20 - i) text = text + "\n强化中,请等待。" @qianghelp_window.set_text(text) Graphics.wait(6) end end end class RPG::EquipItem < RPG::BaseItem alias old initialize def initialize old @up = 0 #装备强化次数 end attr_accessor :up end #============================================================================== # ■ Window_Qiangwu #------------------------------------------------------------------------------ # 强化系统_武器强化窗口 #============================================================================== class Window_Qiangwu < Window_ItemList #-------------------------------------------------------------------------- # ● 初始化对象 #-------------------------------------------------------------------------- def initialize(qianghelp,xuanze) super(0, 0, Graphics.width, fitting_height(8)) self.openness = 0 deactivate @qianghelp = qianghelp @xuanze = xuanze end #-------------------------------------------------------------------------- # ● 开始输入的处理 #-------------------------------------------------------------------------- def start self.category = :weapon refresh select(0) open activate end #-------------------------------------------------------------------------- # ● 查询此物品是否可用 #-------------------------------------------------------------------------- def enable?(item) return false unless item != nil Qiang.weaponupable?(item.id) end #-------------------------------------------------------------------------- # ● 确定强化武器 #-------------------------------------------------------------------------- def qiangwu_ok result = item ? item.id : 0 end #-------------------------------------------------------------------------- # ● 更新帮助内容 #-------------------------------------------------------------------------- def update_help return unless item != nil @help_window.set_item(item) needmoney = 0 Qiang.weaponupable?(item.id) qitemname = Qiang.lostitem.name if item.up >= $强化哈希表["最高等级"] qitemname = "无法继续升级" end temp = [] $usegem == true ? temp.push("使用") : temp.push("未使用") temp.push($data_items[$强化哈希表["特殊物品"][0]].name) $fangb == true ? temp.push("使用") : temp.push("未使用") temp.push($data_items[$强化哈希表["特殊物品"][1]].name) $fangj == true ? temp.push("使用") : temp.push("未使用") cgl = ($强化哈希表["每级概率"][item.up] + $当前使用宝石加成率).to_s if item.up == 0 min = item.params[2] + 1 max = min + 5 else if item.up >= $强化哈希表["最高等级"] min = item.params[2].to_int max = min else min = (item.params[2] * (1 + $强化哈希表["提升能力"][item.up] / 100)).to_int + item.up max = min + item.up * 5 end end text = "装备名称:" + item.name + " 强化所需" + Vocab::currency_unit + ":" + Qiang.needmoney.to_s text = text + "\n" + "当前强化等级:" + item.up.to_s + " 强化需要:" + qitemname text = text + "\n" + "强化宝石:" + temp [0] + " " + temp[1] + ":" + temp[2]+ " " + temp[3] + ":" + temp[4] text = text + "\n" + "成功率:" + cgl + "% " + "强化后攻击力范围:" + min.to_s + "~" + max.to_s @qianghelp.set_text(text) end #-------------------------------------------------------------------------- # ● 获取当前武器等级 #-------------------------------------------------------------------------- def getweaponup Qiang.weaponupisnil(item.id) item.up end def itemid item.id end #-------------------------------------------------------------------------- # ● 选择项目 #-------------------------------------------------------------------------- def select(index) self.index = index if index update_help end end #============================================================================== # ■ Window_Qiangfang #------------------------------------------------------------------------------ # 强化系统_防具强化窗口 #============================================================================== class Window_Qiangfang < Window_ItemList #-------------------------------------------------------------------------- # ● 初始化对象 #-------------------------------------------------------------------------- def initialize(qianghelp,xuanze) super(0, 0, Graphics.width, fitting_height(8)) self.openness = 0 deactivate @qianghelp = qianghelp @xuanze = xuanze end #-------------------------------------------------------------------------- # ● 开始输入的处理 #-------------------------------------------------------------------------- def start self.category = :armor refresh select(0) open activate end #-------------------------------------------------------------------------- # ● 查询此物品是否可用 #-------------------------------------------------------------------------- def enable?(item) return false unless item != nil Qiang.armorupable?(item.id) end #-------------------------------------------------------------------------- # ● 确定强化防具 #-------------------------------------------------------------------------- def qiangfang_ok result = item ? item.id : 0 end #-------------------------------------------------------------------------- # ● 更新帮助内容 #-------------------------------------------------------------------------- def update_help return unless item != nil @help_window.set_item(item) needmoney = 0 Qiang.armorupable?(item.id) qitemname = Qiang.lostitem.name if item.up >= $强化哈希表["最高等级"] qitemname = "无法继续升级" end temp = [] $usegem == true ? temp.push("使用") : temp.push("未使用") temp.push($data_items[$强化哈希表["特殊物品"][0]].name) $fangb == true ? temp.push("使用") : temp.push("未使用") temp.push($data_items[$强化哈希表["特殊物品"][1]].name) $fangj == true ? temp.push("使用") : temp.push("未使用") cgl = ($强化哈希表["每级概率"][item.up] + $当前使用宝石加成率).to_s if item.up == 0 min = item.params[3] + 1 max = min + 5 else if item.up >= $强化哈希表["最高等级"] min = item.params[3].to_int max = min else min = (item.params[3] * (1 + $强化哈希表["提升能力"][item.up] / 100)).to_int + item.up max = min + item.up * 5 end end text = "装备名称:" + item.name + " 强化所需" + Vocab::currency_unit + ":" + Qiang.needmoney.to_s text = text + "\n" + "当前强化等级:" + item.up.to_s + " 强化需要:" + qitemname text = text + "\n" + "强化宝石:" + temp [0] + " " + temp[1] + ":" + temp[2]+ " " + temp[3] + ":" + temp[4] text = text + "\n" + "成功率:" + cgl + "% " + "强化后防御力范围:" + min.to_s + "~" + max.to_s @qianghelp.set_text(text) end #-------------------------------------------------------------------------- # ● 获取当前防具等级 #-------------------------------------------------------------------------- def getarmorup Qiang.armorupisnil(item.id) item.up end def itemid item.id end #-------------------------------------------------------------------------- # ● 选择项目 #-------------------------------------------------------------------------- def select(index) self.index = index if index update_help end end #============================================================================== # ■ Window_QiangCommand #------------------------------------------------------------------------------ # 强化系统中,处理命令选择的窗口。 #============================================================================== class Window_QiangCommand < Window_Command #-------------------------------------------------------------------------- # ● 初始化对象 #-------------------------------------------------------------------------- def initialize super(0, 0) update_placement self.openness = 0 open end #-------------------------------------------------------------------------- # ● 获取窗口的宽度 #-------------------------------------------------------------------------- def window_width return 160 end #-------------------------------------------------------------------------- # ● 更新窗口的位置 #-------------------------------------------------------------------------- def update_placement self.x = (Graphics.width - width) / 2 self.y = (Graphics.height - height) / 2 end #-------------------------------------------------------------------------- # ● 生成指令列表 #-------------------------------------------------------------------------- def make_command_list add_command("强化武器", :qiangwu) add_command("强化防具", :qiangfang) add_command(Vocab::ShopCancel, :cancel) end end #============================================================================== # ■ Window_Qianghelp #------------------------------------------------------------------------------ # 显示说明 #============================================================================== class Window_Qianghelp < Window_Base #-------------------------------------------------------------------------- # ● 初始化对象 #-------------------------------------------------------------------------- def initialize super(0, 0, window_width, fitting_height(4) + 8) refresh end #-------------------------------------------------------------------------- # ● 获取窗口的宽度 #-------------------------------------------------------------------------- def window_width return 544 end #-------------------------------------------------------------------------- # ● 获取持有金钱 #-------------------------------------------------------------------------- def value $game_party.gold end #-------------------------------------------------------------------------- # ● 获取货币单位 #-------------------------------------------------------------------------- def currency_unit Vocab::currency_unit end #-------------------------------------------------------------------------- # ● 设置内容 #-------------------------------------------------------------------------- def set_text(text) if text != @text @text = text refresh end end #-------------------------------------------------------------------------- # ● 清除 #-------------------------------------------------------------------------- def clear set_text("") end #-------------------------------------------------------------------------- # ● 刷新 #-------------------------------------------------------------------------- def refresh contents.clear draw_text_ex(4, 0, @text) end end #============================================================================== # ■ Window_Qiangxz #------------------------------------------------------------------------------ # 强化系统中,选择强化方式的窗口。 #============================================================================== class Window_Qiangxz < Window_Command @havegem = false @havefangb = false @havefangj = false #-------------------------------------------------------------------------- # ● 初始化对象 #-------------------------------------------------------------------------- def initialize super(0, 0) index = 0 update_placement self.openness = 0 open end #-------------------------------------------------------------------------- # ● 获取窗口的宽度 #-------------------------------------------------------------------------- def window_width return 180 end #-------------------------------------------------------------------------- # ● 更新窗口的位置 #-------------------------------------------------------------------------- def update_placement self.x = (Graphics.width - width) / 2 self.y = (Graphics.height - height) / 2 end #-------------------------------------------------------------------------- # ● 检查可用 #-------------------------------------------------------------------------- def haveitem @havegem = false @havefangb = false @havefangj = false for i in $强化哈希表["宝石效果"] if $game_party.has_item?($data_items[i[1]]) @havegem = true end end @havefangb = $game_party.has_item?($data_items[$强化哈希表["特殊物品"][0]]) @havefangj = $game_party.has_item?($data_items[$强化哈希表["特殊物品"][1]]) end #-------------------------------------------------------------------------- # ● 生成指令列表 #-------------------------------------------------------------------------- def make_command_list haveitem add_command("宝石", :gem, @havegem) add_command(Qiang.idgetitem($强化哈希表["特殊物品"][0]).name, :fangb, @havefangb) add_command(Qiang.idgetitem($强化哈希表["特殊物品"][1]).name, :fangj, @havefangj) add_command("开始强化", :start) add_command("取消强化", :cancel) end end #============================================================================== # ■ Window_Base #------------------------------------------------------------------------------ # 游戏中所有窗口的父类 #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # ● 绘制物品名称 # enabled : 有效的标志。false 的时候使用半透明效果绘制 #-------------------------------------------------------------------------- def draw_item_name(item, x, y, enabled = true, width = 172) return unless item draw_icon(item.icon_index, x, y, enabled) change_color(normal_color, enabled) if item.is_a?(RPG::EquipItem) if item.up != nil && item.up != 0 draw_text(x + 24, y, width, line_height, item.name + "+" + item.up.to_s) else draw_text(x + 24, y, width, line_height, item.name) end else draw_text(x + 24, y, width, line_height, item.name) end end end class Window_ItemList #-------------------------------------------------------------------------- # ● 查询列表中是否含有此物品 #-------------------------------------------------------------------------- def include?(item) case @category when :item item.is_a?(RPG::Item) && !item.key_item? when :weapon item.is_a?(RPG::Weapon) when :armor item.is_a?(RPG::Armor) when :key_item item.is_a?(RPG::Item) && item.key_item? when :gem itemid = item ? item.id : 0 itemid != 0 ? isgem(itemid) : false else false end end def isgem(itemid) for i in $强化哈希表["宝石效果"] return true if i[1] == itemid end false end end #============================================================================== # ■ Window_Choosegem #------------------------------------------------------------------------------ # 选择强化使用的宝石 #============================================================================== class Window_Choosegem < Window_ItemList #-------------------------------------------------------------------------- # ● 初始化对象 #-------------------------------------------------------------------------- def initialize() super(0, 0, Graphics.width, fitting_height(2)) self.openness = 0 deactivate @wufangwindow = nil @qiangxz = nil set_handler(:ok, method(:on_ok)) set_handler(:cancel, method(:on_cancel)) end def wufangwindow=(wufangwindow) @wufangwindow = wufangwindow end def qiangxz=(qiangxz) @qiangxz = qiangxz end #-------------------------------------------------------------------------- # ● 开始输入的处理 #-------------------------------------------------------------------------- def start self.category = :gem self.y = (Graphics.height - height) / 2 refresh select(0) open activate end #-------------------------------------------------------------------------- # ● 确定时的处理 #-------------------------------------------------------------------------- def on_ok result = item ? item.id : 0 if result != 0 $usegem = true $当前使用宝石id = result for i in $强化哈希表["宝石效果"] $当前使用宝石加成率 = i[0] if i[1] == $当前使用宝石id end else $当前使用宝石加成率 = 0 $usegem = false end @wufangwindow.update_help @qiangxz.activate close end #-------------------------------------------------------------------------- # ● 查询此物品是否可用 #-------------------------------------------------------------------------- def enable?(item) true end #-------------------------------------------------------------------------- # ● 取消时的处理 #-------------------------------------------------------------------------- def on_cancel $当前使用宝石加成率 = 0 $usegem = false @wufangwindow.update_help @qiangxz.activate close end end #============================================================================== # ■ 强化系统DataManager #------------------------------------------------------------------------------ # 将武器和防具数据保存入存档 #============================================================================== module DataManager #-------------------------------------------------------------------------- # ● 生成存档内容 #-------------------------------------------------------------------------- def self.make_save_contents contents = {} contents[:system] = $game_system contents[:timer] = $game_timer contents[:message] = $game_message contents[:switches] = $game_switches contents[:variables] = $game_variables contents[:self_switches] = $game_self_switches contents[:actors] = $game_actors contents[:party] = $game_party contents[:troop] = $game_troop contents[:map] = $game_map contents[:player] = $game_player contents[:weapons] = $data_weapons contents[:armors] = $data_armors contents end #-------------------------------------------------------------------------- # ● 展开存档内容 #-------------------------------------------------------------------------- def self.extract_save_contents(contents) $game_system = contents[:system] $game_timer = contents[:timer] $game_message = contents[:message] $game_switches = contents[:switches] $game_variables = contents[:variables] $game_self_switches = contents[:self_switches] $game_actors = contents[:actors] $game_party = contents[:party] $game_troop = contents[:troop] $game_map = contents[:map] $game_player = contents[:player] $data_weapons = contents[:weapons] $data_armors = contents[:armors] end end #============================================================================== # [PS0]物品颜色描绘 # Window_Base_Itemcolor #------------------------------------------------------------------------------ # 在物品、技能选项中显示物品品质并显示品质框和修改物品名颜色。 #============================================================================== # [更新记录] # - 2012.01.03 By 仲秋启明 # * 修改为VA定义 # - 2011.12.27 By 仲秋启明 # * 移植至RGSS3,遵循PS0协议; # * 优化数据库备注中设定方法 # - 2011.08.22 By 冰舞蝶恋 # * 蓝本(实用·极简 -- 按品质,给物品描绘色彩边框) # - 2010.08.06 By 仲秋启明 # * 蓝本(物品颜色描绘脚本(完整无冲突版)) #------------------------------------------------------------------------------ # [使用方法] # - 替换原Window_Base中的draw_item_name定义或复制到Main之前 #============================================================================== $_PS0 = {} if $_PS0 == nil $_PS0["Window_Base_Itemcolor"] = 20111227 #============================================================================== # [PS0] 通用配置模块 #============================================================================== module PS0 module Window_Base_Itemcolor Color1 = Color.new(255, 255, 255) # 一般品质的色彩(白,1) Color2 = Color.new(128, 255, 128) # 平庸品质的色彩(绿,2) Color3 = Color.new(57, 185, 255) # 精良品质的色彩(蓝,3) Color4 = Color.new(128, 100, 245) # 卓越品质的色彩(紫,4) Color5 = Color.new(255, 40, 255) # 神秘品质的色彩(红,5) Color6 = Color.new(255, 128, 0) # 传说品质的色彩(橙,6) Color7 = Color.new(255, 255, 128) # 特殊品质的色彩(黄,7) end end #============================================================================== # ■ Window_Base #============================================================================== class Window_Base < Window def draw_item_name(item, x, y, enabled = true, width = 172) if item != nil n = item.note a = n.split{/<(?:Quality|品质)\s*(.+)>/i} c = a[1].to_i if c <= 1 color = PS0::Window_Base_Itemcolor::Color1 elsif c == 2 color = PS0::Window_Base_Itemcolor::Color2 elsif c == 3 color = PS0::Window_Base_Itemcolor::Color3 elsif c == 4 color = PS0::Window_Base_Itemcolor::Color4 elsif c == 5 color = PS0::Window_Base_Itemcolor::Color5 elsif c == 6 color = PS0::Window_Base_Itemcolor::Color6 elsif c == 7 color = PS0::Window_Base_Itemcolor::Color7 else color = Color.new(0, 0, 0, 0) end self.contents.fill_rect(x, y, 24, 1, color) self.contents.fill_rect(x, y, 1, 24, color) self.contents.fill_rect(x, y+23, 24, 1, color) self.contents.fill_rect(x+23, y, 1, 24, color) draw_icon(item.icon_index, x, y, enabled) change_color(color, enabled) if item.is_a?(RPG::EquipItem) if item.up != nil && item.up != 0 draw_text(x + 24, y, width, line_height, item.name + "+" + item.up.to_s) else draw_text(x + 24, y, width, line_height, item.name) end else draw_text(x + 24, y, width, line_height, item.name) end end end end #============================================================================== # [PS0] End of Script #==============================================================================
~W]7DS93%6@6B8GKK((M~0Z.png (165.39 KB, 下载次数: 24)
购买了。。。
@[4VR[IF7N2UM2[SSUJ]QPG.png (131.81 KB, 下载次数: 19)
不能用。。。
{QX]32[4~RPX43~BZWVPY$R.png (172.37 KB, 下载次数: 24)
没有指令。。。
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |