#encoding:utf-8 #============================================================================== # ■ 装备说明增强 #------------------------------------------------------------------------------ # 修改了说明窗口,增强了装备的说明 作者:wyongcan 发布于66RPG 转载请注明 #============================================================================== module Help CODE ={ 11 => "属性抗性", 12 => "弱化抗性", 13 => "状态抗性", 14 => "状态免疫", 21 => "普通能力", 22 => "添加能力", 23 => "特殊能力", 31 => "攻击附带属性", 32 => "攻击附带状态", 33 => "修正攻击速度", 34 => "添加攻击次数", 41 => "添加技能类型", 42 => "禁用技能类型", 43 => "添加技能", 44 => "禁用技能", 51 => "可装备武器类型", 52 => "可装备护甲类型", 53 => "固定装备", 54 => "禁用装备", 55 => "装备风格", 61 => "添加行动次数", 62 => "特殊标志", 63 => "消失效果", 64 => "队伍能力"} #特殊标志 FLAG ={ 0 => "自动战斗", 1 => "擅长防御", 2 => "保护弱者", 3 => "特技专注"} #普通能力 PARAM ={ 0 => "最大HP", 1 => "最大MP", 2 => "物理攻击", 3 => "物理防御", 4 => "魔法攻击", 5 => "魔法防御", 6 => "敏 捷 值", 7 => "幸 运 值"} #添加能力 XPARAM ={ 0 => "物理命中几率:", 1 => "物理闪避几率:", 2 => "必杀几率:", 3 => "必杀闪避几率:", 4 => "魔法闪避几率:", 5 => "魔法反射几率:", 6 => "物理反击几率:", 7 => "体力值再生速度:", 8 => "魔力值再生速度:", 9 => "特技值再生速度:"} #特殊能力 SPARAM ={ 0 => "受到攻击的几率", 1 => "防御效果比率", 2 => "恢复效果比率", 3 => "药理知识", 4 => "MP消费率", 5 => "TP消耗率", 6 => "物理伤害加成", 7 => "魔法伤害加成", 8 => "地形伤害加成", 9 => "经验获得加成"} #~ #效果范围 #~ SCOPE ={ #~ 0 => "特殊", #~ 1 => "单个敌人", #~ 2 => "全体敌人" , #~ 3 => "一个随机敌人", #~ 4 => "两个随机敌人", #~ 5 => "三个随机敌人", #~ 6 => "四个随机敌人", #~ 7 => "单个队友", #~ 8 => "全体队友", #~ 9 => "单个队友(无法战斗)", #~ 10 => "全体队友(无法战斗)", #~ 11 => "使用者"} @队伍能力 ={ 0 => "遇敌几率减半", 1 => "随机遇敌无效", 2 => "敌人偷袭无效", 3 => "先制攻击几率上升", 4 => "获得金钱数量双倍", 5 => "物品掉落几率双倍"} def self.ready @状态 = {} @武器类型 = {} @防具类型 = {} @属性 = {} $data_states.each{|x| @状态[x.id] = x.name if x != nil} elements = $data_system.elements weapon_types = $data_system.weapon_types armor_types = $data_system.armor_types elements.each_with_index{|x,y| @属性[y] = x if x != ""} weapon_types.each_with_index{|x,y| @武器类型[y] = x if x != ""} armor_types.each_with_index{|x,y| @防具类型[y] = x if x != ""} end def self.getequiphelp(equip) help = "" param = [] equip.params.each_with_index{|x,y| param.push([PARAM[y],x])} param = param.select{|x| x[1] != 0} param.each{|x| help += x[0] + ":" + x[1].floor.to_s + "\n"} features = equip.features features.select{|x| x.code == 55}.each{|x| help += CODE[x.code] + ":双持武器" + "\n"} # features.select{|x| x.code == 11}.each{|x| help += CODE[x.code] + ":" + @属性[x.data_id] + "*" + x.value.floor.to_s + "\n"} features.select{|x| x.code == 12}.each{|x| help += CODE[x.code] + ":" + PARAM[x.data_id] + "*" + x.value.floor.floor.to_s + "\n"} features.select{|x| x.code == 13}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "*" + x.value.floor.to_s + "\n"} # features.select{|x| x.code == 14}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "\n"} # features.select{|x| x.code == 31}.each{|x| help += CODE[x.code] + ":" + @属性[x.data_id] + "\n"} # features.select{|x| x.code == 32}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "+" + x.value.floor.to_s + "\n"} features.select{|x| x.code == 33}.each{|x| help += CODE[x.code] + ":" + x.value.floor.to_s + "\n"} features.select{|x| x.code == 34}.each{|x| help += CODE[x.code] + ":" + x.value.floor.to_s + "\n"} features.select{|x| x.code == 41}.each{|x| help += CODE[x.code] + ":" + (x.data_id == 1 ? "特技" : "魔法") + "\n"} features.select{|x| x.code == 42}.each{|x| help += CODE[x.code] + ":" + (x.data_id == 1 ? "特技" : "魔法") + "\n"} features.select{|x| x.code == 43}.each{|x| help += CODE[x.code] + ":" + $data_skills[x.data_id].name + "\n"} features.select{|x| x.code == 44}.each{|x| help += CODE[x.code] + ":" + $data_skills[x.data_id].name + "\n"} features.select{|x| x.code == 51}.each{|x| help += CODE[x.code] + ":" + @武器类型[x.data_id] + "\n"} features.select{|x| x.code == 52}.each{|x| help += CODE[x.code] + ":" + @防具类型[x.data_id] + "\n"} features.select{|x| x.code == 61}.each{|x| help += CODE[x.code] + ":" + x.value.floor.to_s + "\n"} features.select{|x| x.code == 62}.each{|x| help += CODE[x.code] + ":" + FLAG[x.data_id] + "\n"} features.select{|x| x.code == 64}.each{|x| help += CODE[x.code] + ":" + @队伍能力[x.data_id] + "\n"} featuresparam = [] featuresparam.push features.select{|x| x.code == 21} featuresparam.push features.select{|x| x.code == 22} featuresparam.push features.select{|x| x.code == 23} featuresparam[0].each{|x| help += PARAM[x.data_id] + "*" + x.value.to_s + "\n"} featuresparam[1].each{|x| help += XPARAM[x.data_id] + x.value.to_s + "\n"} featuresparam[2].each{|x| help += SPARAM[x.data_id] + "*" + x.value.to_s + "\n"} help end def self.getline(text,maxtext) xtext = [] line = 0 text.each_line{|x| xtext.push x.sub(/\n/){}} xtext.each{|x| x.size % maxtext != 0 ? line += x.size / maxtext + 1 : line += x.size / maxtext} line end end #============================================================================== # ■ Window_Help #------------------------------------------------------------------------------ # 显示特技和物品等的说明、以及角色状态的窗口 #============================================================================== class Window_Help < Window_Base #-------------------------------------------------------------------------- # ● 初始化对象 #-------------------------------------------------------------------------- def initialize(line_number = 0) super(0, 0, 210, fitting_height(line_number)) self.z = 150 contents.font.size = 14 hide end #-------------------------------------------------------------------------- # ● 设置内容 #-------------------------------------------------------------------------- def set_text(text) if text != @text @text = text refresh end end #-------------------------------------------------------------------------- # ● 清除 #-------------------------------------------------------------------------- def clear set_text("") end #-------------------------------------------------------------------------- # ● 更新帮助位置 #-------------------------------------------------------------------------- def uppos(index,rect,window) self.height = fitting_height2(Help.getline(@xtext,13)) create_contents contents.font.size = 14 rect.x -= window.ox rect.y -= window.oy ax = rect.x + rect.width + 10 ax = rect.x - self.width + 10 if ax + self.width > window.width + 10 ax += window.x ax = 0 if ax < 0 ay = rect.y + rect.height ay = rect.y - self.height if ay + self.height > window.height ay += window.y ay = 0 if ay < 0 self.x = ax self.y = ay set_text(@xtext) show end #-------------------------------------------------------------------------- # ● 设置物品 # item : 技能、物品等 #-------------------------------------------------------------------------- def set_item(item) if item == nil set_text("") return end @xtext = "" @xtext = "名称:" + item.name + "\n" @xtext += "介绍:" + item.description + "\n" @xtext += "价格:" + item.price.floor.to_s + "\n" if item.is_a?(RPG::EquipItem) || item.is_a?(RPG::Item) @xtext += Help.getequiphelp(item) if item.is_a?(RPG::EquipItem) @xtext = @xtext[0,@text.size - 2] if @xtext[@xtext.size - 2,2] == "\n" end #-------------------------------------------------------------------------- # ● 刷新 #-------------------------------------------------------------------------- def refresh contents.clear hide if @text == "" draw_text_ex(4, 0, @text,width,40,false) end end class Window_Base < Window #-------------------------------------------------------------------------- # ● 计算窗口显示指定行数时的应用高度2************************* #-------------------------------------------------------------------------- def fitting_height2(line_number) line_number * contents.font.size + standard_padding * 2 end #~ draw_text_ex的增强,使其可以自动换行 原作者:叶子 修改:wyongcan #-------------------------------------------------------------------------- # ● 绘制带有控制符的文本内容 # 如果传递了width参数的话,会自动换行 #-------------------------------------------------------------------------- def draw_text_ex(x, y, text, width = nil,textwidth = nil,normalfont = true) reset_font_settings if normalfont == true text = convert_escape_characters(text) pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)} if width != nil pos[:height] = contents.font.size pos[:width] = width pos[:textwidth] = textwidth end process_character(text.slice!(0, 1), text, pos) until text.empty? end #-------------------------------------------------------------------------- # ● 文字的处理 # c : 文字 # text : 绘制处理中的字符串缓存(字符串可能会被修改) # pos : 绘制位置 {:x, :y, :new_x, :height} #-------------------------------------------------------------------------- def process_character(c, text, pos) case c when "\r" # 回车 return when "\n" # 换行 process_new_line(text, pos) when "\f" # 翻页 process_new_page(text, pos) when "\e" # 控制符 process_escape_character(obtain_escape_code(text), text, pos) else # 普通文字 pos[:textwidth] == nil ? text_width = text_size(c).width : text_width = pos[:textwidth] if pos[:width] != nil && pos[:x] - pos[:new_x] + text_width > pos[:width] process_new_line(text, pos) end process_normal_character(c, pos) end end end class Window_ItemList < Window_Selectable #-------------------------------------------------------------------------- # ● 更新帮助内容 #-------------------------------------------------------------------------- def update_help @help_window.set_item(item) @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil end end class Window_SkillList < Window_Selectable #-------------------------------------------------------------------------- # ● 更新帮助内容 #-------------------------------------------------------------------------- def update_help @help_window.set_item(item) @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil end end class Window_ShopBuy < Window_Selectable #-------------------------------------------------------------------------- # ● 更新帮助内容 #-------------------------------------------------------------------------- def update_help @help_window.set_item(item) if @help_window @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window @status_window.item = item if @status_window end end class Window_EquipSlot < Window_Selectable #-------------------------------------------------------------------------- # ● 更新帮助内容 #-------------------------------------------------------------------------- def update_help super @help_window.set_item(item) if @help_window @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window @status_window.set_temp_actor(nil) if @status_window end end class Scene_Shop < Scene_MenuBase alias on_sell_ok_old on_sell_ok def on_sell_ok on_sell_ok_old @help_window.hide end alias on_buy_ok_old on_buy_ok def on_buy_ok on_buy_ok_old @help_window.hide end alias on_number_ok_old on_number_ok def on_number_ok on_number_ok_old @help_window.refresh @help_window.show end alias on_number_cancel_old on_number_cancel def on_number_cancel on_number_cancel_old @help_window.refresh @help_window.show end end class Scene_Title < Scene_Base alias start_old start def start start_old Help.ready end end class Window_Base < Window alias old_process_new_line process_new_line def process_new_line(text, pos) old_process_new_line(text, pos) pos[:height] = contents.font.size if pos[:width] != nil end end class Scene_ItemBase < Scene_MenuBase alias old_on_actor_cancel on_actor_cancel def on_actor_cancel old_on_actor_cancel @help_window.refresh end alias old_on_actor_ok on_actor_ok def on_actor_ok old_on_actor_ok @help_window.refresh end end class Scene_Battle < Scene_Base def create_help_window @help_window = Window_Help2.new @help_window.visible = false end end
#============================================================================== #============================================================================== #再次改进:令狐林 #------------------------------------------------------------------------------ #更新内容: #1.增加武器的魔法攻击强化提升效果,与物理攻击提升原理相同,但数值不同; #2.增加防具的魔法防御强化提升效果,与物理魔法提升原理相同,但数值不同; #3.优化升级成功概率及提高概率宝石,使之符合我自己的游戏--!; #4.再次降低强化后的数值,一是提升百分比降低,二是基数5降低为3; #5.把to_int显示改为floor,似乎更能和系统的显示数值相匹配; #6.优化装备帮助增强脚本,使之不再显示小数点; #7.增加强化中、强化成功、强化失败音效,在Audio/SE/中放入以此为名字的音效文件; #8.优化部分说明文字。 #============================================================================== #============================================================================== # ■ 强化系统 增强版 #------------------------------------------------------------------------------ # 原强化系统 wyongcan制作 # # 改进: 62505139 # 增强版更新内容: # 1. 与颜色脚本合并, # 2.(重大修正!)修正了装备强化不提升原属性的百分比而只提升随机数的错误 # 2. 极大的修正了绝大部分数值,调节了游戏平衡 # 3. 修正了强化时的说明与实际数值不符的错误 # 4.(细节) 修正了说明语言 #============================================================================== module Qiang $maxlv = 8 #最高升到的级数 $gailv = [100,90,80,70,55,40,25,10,5] #每级提升概率 $gemlv = [[60,27],[10,28],[20,29],[30,30]] #使用宝石提高的几率 [提高几率,宝石ID] $uplv = [[2,34],[4,35],[6,36],[8,33]] #强化所需要的强化石 [最大强化到的等级,强化石ID] $xxlv = [0,7,14,20,25,33,40,44,50] #每级强化后失败物品消失的几率 $jjlv = [0,20,40,65,80,100,100,100,100] #每级强化后失败物品降级的几率 $tsnl = [1,1,1,2,2,2,3,3,3] #每级强化提升能力的百分比 $tswp = [31,32] # 意思是:如果有31号物品则失败后物品不消失,如果有32号物品则失败后物品不降级 #武器强化后的计算公式为: 原攻击 * (1 + 提升能力百分比) + (0到当前强化级数随机) * 5(已改为3) + 当前强化级数 $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 Audio.se_play("Audio/SE/" + "强化成功", 80, 100) $message += "强化成功" idlostequip id weapon.id = $data_weapons.size params = weapon.params.dup params[2] *= 100 + $强化哈希表["提升能力"][weapon.up] params[2] /= 100 params[2] += rand(weapon.up) * 3 params[2] += 1 if params[2] == weapon.params[2] params[4] *= 100 + $强化哈希表["提升能力"][weapon.up] params[4] /= 100 params[4] += rand(weapon.up) * 3 params[4] += 1 if params[4] == weapon.params[4] $message += " 物攻+" + (params[2] - weapon.params[2]).floor.to_s $message += " 魔攻+" + (params[4] - weapon.params[4]).floor.to_s weapon.up += 1 $data_weapons.insert $data_weapons.size,weapon $data_weapons[$data_weapons.size-1].params = params idgainequip weapon.id else Audio.se_play("Audio/SE/" + "强化失败", 80, 100) $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] -= rand(weapon.up) * 3 params[2] *= 100 params[2] /= 100 + $强化哈希表["提升能力"][weapon.up] params[4] -= rand(weapon.up) * 3 params[4] *= 100 params[4] /= 100 + $强化哈希表["提升能力"][weapon.up] 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 Audio.se_play("Audio/SE/" + "强化成功", 80, 100) $message += "强化成功" idlostequip id,false armor.id = $data_armors.size params = armor.params.dup params[3] *= 100 + $强化哈希表["提升能力"][armor.up] params[3] /= 100 params[3] += rand(armor.up) * 3 params[3] += 1 if params[3] == armor.params[3] params[5] *= 100 + $强化哈希表["提升能力"][armor.up] params[5] /= 100 params[5] += rand(armor.up) * 3 params[5] += 1 if params[5] == armor.params[5] $message += " 物防+" + (params[3] - armor.params[3]).floor.to_s $message += " 魔防+" + (params[5] - armor.params[5]).floor.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 Audio.se_play("Audio/SE/" + "强化失败", 80, 100) $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] -= rand(armor.up) * 3 params[3] *= 100 params[3] /= 100 + $强化哈希表["提升能力"][armor.up] params[5] -= rand(armor.up) * 3 params[5] *= 100 params[5] /= 100 + $强化哈希表["提升能力"][armor.up] 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 = false $fangb = false $fangj = false #-------------------------------------------------------------------------- # ● 开始处理 #-------------------------------------------------------------------------- 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 = false @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 xxlv=($强化哈希表["消失几率"][item.up]).to_s jjlv=($强化哈希表["降级几率"][item.up]).to_s if item.up == 0 min = (item.params[2] * (100 + $强化哈希表["提升能力"][item.up])).floor min /= 100 max = min + 5 else if item.up >= $强化哈希表["最高等级"] min = item.params[2].to_int max = min else min = (item.params[2] * (100 + $强化哈希表["提升能力"][item.up])).floor min /= 100 max = min + item.up * 3 end end text = "当前强化等级:" + 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 text = text + "\n" + "消失率:" + xxlv + "% " + "降级率:" + jjlv+"% "+ " 需" + Vocab::currency_unit + ":" + Qiang.needmoney.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 xxlv=($强化哈希表["消失几率"][item.up]).to_s jjlv=($强化哈希表["降级几率"][item.up]).to_s if item.up == 0 min = (item.params[3] * (100 + $强化哈希表["提升能力"][item.up])).floor min /= 100 max = min + 5 else if item.up >= $强化哈希表["最高等级"] min = item.params[3].to_int max = min else min = (item.params[3] * (100 + $强化哈希表["提升能力"][item.up])).floor min /= 100 max = min + item.up * 3 end end text = "当前强化等级:" + 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 text = text + "\n" + "消失率:" + xxlv + "% " + "降级率:" + jjlv+"% "+ " 需" + Vocab::currency_unit + ":" + Qiang.needmoney.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[0]]) @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) 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) draw_text(x + 24, y, width, line_height, item.name) 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
360截图20140213205059968.jpg (19.32 KB, 下载次数: 20)
这是怎么回事?
QQ截图20150328205913.png (35.53 KB, 下载次数: 28)
360截图20150822191034787.jpg (21.82 KB, 下载次数: 24)
欢迎光临 Project1 (https://rpg.blue/) | Powered by Discuz! X3.1 |