Project1
标题:
装备强化脚本为何没有+1字样呢
[打印本页]
作者:
fox1313304
时间:
2014-9-10 14:00
标题:
装备强化脚本为何没有+1字样呢
wyongcan2008
这个人写的脚本 试了三个 改版前改版后 范例是没问题的
为何我的工程里没有+1呢 是因为颜色脚本吗
我的颜色脚本是渐变色的那个
作者:
三途亚梦
时间:
2014-9-10 14:10
本帖最后由 三途亚梦 于 2014-9-10 14:18 编辑
LZ你的问题说的太含糊了…… 既然在新工程没有问题,就把你觉得有问题的脚本暂时注释掉检查是不是它们之间存在冲突。
你这么问还不上脚本我们也很难帮你解决,不过还是希望你在发问前先尝试自己检查一下问题所在。
--------------------------------------------------------------------------
我来打个广告
↑这个快捷调试包,对于制作者来说很方便。
作者:
taroxd
时间:
2014-9-10 14:11
把颜色脚本删掉,看看有没有效果就是了
作者:
fox1313304
时间:
2014-9-10 14:17
#==============================================================================
# ■ 强化系统 优化版
#------------------------------------------------------------------------------
# 强化系统 wyongcan制作
# 优化版更新内容:优化了语法,修复部分BUG,使代码可读性增强,增加了宝石选择窗口
# 发布于66RPG 转载请保留版权信息
#==============================================================================
module Qiang
$maxlv = 12 #最高升到的级数
$gailv = [100,80,70,60,50,30,20,10,5,5,5,5,1] #每级提升概率
$gemlv = [[30,93],[70,94]] #使用宝石提高的几率 [提高几率,宝石ID]
$uplv = [[4,102],[8,103],[12,104]] #强化所需要的强化石 [最大强化到的等级,强化石ID]
$xxlv = [0,0,5,10,15,20,25,30,30,40,40,45,60] #每级强化后失败物品消失的几率
$jjlv = [0,10,15,20,30,45,55,65,70,70,75,80,100] #每级强化后失败物品降级的几率
$tsnl = [10,14,18,22,26,30,34,38,42,46,50,54,65] #每级强化提升能力的百分比
$tswp = [105,106] # 意思是:如果有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 = 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
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[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)
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
复制代码
这是强化脚本↑
#————————————————————————————————————————
# ●ITEM_LV By.Clov
# *物品等级颜色描绘
# *Ver1.1 Date:2013.9.17
# *Ver1.2 Date:2013.9.24
# *Ver1.3 Date:2013.9.24
# *Ver1.4 Date:2013.10.10
# *Ver1.5 Date:2013.10.12
# *Ver1.6 Date:2013.10.17
#————————————————————————————————————————
module ITEM_LV
ITEM_NAME = true #物品名是否也绘色 关闭的话建议关闭ITEM_GFR
ITEM_GFR = :UD #物品名绘色使用渐变色:LR 左右/:UD 上下/nil关闭
ITEM_ENA = true #物品名、图标没有“无效透明”
ITEM_TYPE = nil#:W #背景描绘类型:W 横向 :H纵向
ITEM_SYM = ["[]",nil] #设置取得等级的头尾字符 nil为内部字符
ITEM_BACK_WIDTH = 172 #背景显示宽度(nil同步物品名宽度)
ITEM_BACK_BBL = 0.5 #背景透明渐变的长度(0.1-0.5)
ITEM_COLOR={
"wh"=>Color.new(230,230,230,160), #等级1 白色
"bl"=>Color.new(1,108,254,160), #等级2 蓝色
"gr"=>Color.new(2,224,33,160), #等级3 绿色
"go"=>Color.new(246,255,3,160), #等级4 金色
"pe"=>Color.new(234,3,255,160), #等级5 紫色
"bo"=>Color.new(254,37,52,160), #等级6 红色
"cj"=>Color.new(2,253,209,160), #等级0 成就徽章-湖蓝色
"神话"=>Color.new(rand(255),rand(255),rand(255),160) #神话级 测试颜色
}
end
#————————————————————————————————————————
# ●Window_Base
#————————————————————————————————————————
class Window_Base < Window
#———————————————————————————————————————
#绘制物品名称
#enabled : 有效的标志。false 的时候使用半透明效果绘制
#———————————————————————————————————————
def draw_item_name(item, x, y, enabled=true, width=ITEM_LV::ITEM_BACK_WIDTH)
return unless item
#有效度总开关
enabled = ITEM_LV::ITEM_ENA ? ITEM_LV::ITEM_ENA : enabled
#·等级绘制
f1 = ITEM_LV::ITEM_SYM[0] ; f2 = ITEM_LV::ITEM_SYM[-1]
item_lv = item.note.sten(f1, f2) ; if item_lv
#等级背景宽为设定值
if width ; w = width
#等级背景宽同步物品名
else ; w = contents.text_size(item.name).width+24 ; end
#绘制等级背景
item_lv = item_lv.to_i != 0 ? item_lv.to_i : item_lv
color = ITEM_LV::ITEM_COLOR[item_lv]
case ITEM_LV::ITEM_TYPE
when:W;contents.back_w(x,y,w,line_height,ITEM_LV::ITEM_BACK_BBL,color)
when:H;contents.back_h(x,y,w,line_height,ITEM_LV::ITEM_BACK_BBL,color);end
#物品名绘色
contents.font.color = ITEM_LV::ITEM_NAME ? color : normal_color
contents.font.color.alpha = enabled ? 255 : 160
#·默认绘制
else ; w = width ; change_color(normal_color, enabled) ; end
#绘制图标
draw_icon(item.icon_index, x, y, enabled)
#绘制物品名
case ITEM_LV::ITEM_GFR
when nil ; draw_text(x + 24, y, w, line_height, item.name)
when :LR ; item_name_gfr_text(x + 24, y, item.name,false)
when :UD ; item_name_gfr_text(x + 24, y, item.name,true) ; end
end
#———————————————————————————————————————
#绘制渐变物品名称
#———————————————————————————————————————
def item_name_gfr_text(x, y, text, vertical)
color1 = contents.font.color
color2 = Color.new(color1.red+80,color1.green+80,color1.blue+80)
contents.gfr_text_pix(x, y,color1,color2, text, vertical)
end
end
#————————————————————————————————————————
# ●String
# *提取指定字符内容
# *使用 "<name:abc123>".sten("<>","name:") >> "abc123"
# -se为起始终点字符 必须指定两个字符字符作为起始点
# -sym为内容标识字符 忽略的话只读第一个匹配sn的内容
#————————————————————————————————————————
class String
#———————————————————————————————————————
def sten(se,sym=nil)
if sym ; s,e = se[0]<<sym,se[1] ; f = self.split(s)[1]
return nil unless f && f.index(e) ; f[0,f.index(e)] ; else
s,e = se[0],se[1] ; f = self ; i0 = f.index(s) ; i1 = f.index(e)
return nil unless i0 && i1 ; f[i0+1,i1-i0-1] ; end
end
#———————————————————————————————————————
def resten ; /<SYM(.*?)>/ =~ self ; $1 ; end
#———————————————————————————————————————
end
#————————————————————————————————————————
# ●位图的追加绘制方法
# *渐透明描绘以及RGSS1用gradient_fill_rect
#————————————————————————————————————————
class Bitmap
#———————————————————————————————————————
# ● 渐透明描绘(宽)
#———————————————————————————————————————
def back_w(x,y,w,h,bl=0.3,c=Color.new(0,200,230,128))
r = c.red ; g = c.green ; b = c.blue ; o = c.alpha
l = (w*bl).round
all = [l,w-l*2,l]
all.each_index {|i| ; w2 = all[i]
case i
when 0 ; x2 = 0 ; o1 = 0 ; o2 = o
when 1 ; x2 = all[0] ; o1 = o2 = o
when 2 ; x2 = all[0] + all[1] ; o1 = o ; o2 = 0 ; end
c1 = Color.new(r,g,b,o1) ; c2 = Color.new(r,g,b,o2)
gradient_fill_rect(x+x2, y, w2, h, c1, c2) if w2 > 0 }
end
#———————————————————————————————————————
# ● 渐透明描绘(高)
#———————————————————————————————————————
def back_h(x,y,w,h,bl=0.3,c=Color.new(0,200,230,128))
r = c.red ; g = c.green ; b = c.blue ; o = c.alpha
l = (h*bl).round
all = [l,h-l*2,l]
all.each_index {|i| ; h2 = all[i]
case i
when 0 ; y2 = 0 ; o1 = 0 ; o2 = o
when 1 ; y2 = all[0] ; o1 = o2 = o
when 2 ; y2 = all[0] + all[1] ; o1 = o ; o2 = 0 ; end
c1 = Color.new(r,g,b,o1) ; c2 = Color.new(r,g,b,o2)
gradient_fill_rect(x, y+y2, w, h2, c1, c2, true) if h2 > 0 }
end
end
#————————————————————————————————————————
# ●GFR_TEXT(VA) By.Clov
# *横向、纵向渐变描绘文字
# -Ver:1.0 Date:2013.10.12
# -Ver:1.1 Date:2013.10.17 优化gfr_text_pix
# *使用:
# -gfr_text_pix(x, y, color1, color2, text, vertica)
# -gfr_text_blt(x, y, color1, color2, text, vertica)
# -x:x坐标 y:y坐标 color1:左、上颜色 color2:右、下颜色
# -text:字符串 vertica:false/左右渐变 true/上下渐变
# *gfr_text_pix效率优先取消了渐变透明功能 gfr_text_blt保留全部功能
#————————————————————————————————————————
class Bitmap
def gfr_text_pix(x, y, color1, color2, text, vertical = false)
r1 = color1.red;g1 = color1.green;b1 = color1.blue;o1 = color1.alpha
r2 = color2.red;g2 = color2.green;b2 = color2.blue;o2 = color2.alpha
case vertical
when false
ts = text_size(text) ; width,height = ts.width+2,ts.height
bit = self.dup ; bit.font = font.dup ; bit.font.outline = false
bit.clear ; bit.draw_text(x, y, width, height, text)
if font.outline ; fc = font.color.dup ; font.color = Color.new(0,0,0)
draw_text(x, y, width, height, text) ; font.color = fc ; end
w = (width-1).to_f;plus_r = (r2-r1)/w;plus_g = (g2-g1)/w
plus_b = (b2-b1)/w;plus_o = (o2-o1)/w;width.times {|k|
height.times {|i| o = bit.get_pixel(x+k,y+i).alpha
bit.set_pixel(x+k,y+i,Color.new(r1,g1,b1,o)) if o > 0}
r1+=plus_r;g1+=plus_g;b1+=plus_b;o1+=plus_o}
blt(x, y ,bit,Rect.new(x,y,width,height)) ; bit.dispose
when true
ts = text_size(text) ; width,height = ts.width+2,ts.height
bit = self.dup ; bit.font = font.dup ; bit.font.outline = false
bit.clear ; bit.draw_text(x, y, width, height, text)
if font.outline ; fc = font.color.dup ; font.color = Color.new(0,0,0)
draw_text(x, y, width, height, text) ; font.color = fc ; end
h = (height-1).to_f;plus_r = (r2-r1)/h;plus_g = (g2-g1)/h
plus_b = (b2-b1)/h;plus_o = (o2-o1)/h;height.times {|i|
width.times {|k| o = bit.get_pixel(x+k,y+i).alpha
bit.set_pixel(x+k,y+i,Color.new(r1,g1,b1,o)) if o > 0}
r1+=plus_r;g1+=plus_g;b1+=plus_b;o1+=plus_o}
blt(x, y ,bit,Rect.new(x,y,width,height)) ; bit.dispose
end
end
#———————————————————————————————————————
def gfr_text_blt(x, y, color1, color2, text, vertical = false)
r1 = color1.red;g1 = color1.green;b1 = color1.blue;o1 = color1.alpha
r2 = color2.red;g2 = color2.green;b2 = color2.blue;o2 = color2.alpha
case vertical
when false
ts = text_size(text) ; width,height = ts.width+2,ts.height
bit = self.dup ; bit.font = font.dup
w = (width-1).to_f;plus_r = (r2-r1)/w;plus_g = (g2-g1)/w
plus_b = (b2-b1)/w;plus_o = (o2-o1)/w;width.times {|k|
bit.font.color = Color.new(r1,g1,b1,o1)
bit.draw_text(x, y, width, height, text)
blt(x+k, y ,bit,Rect.new(x+k,y,1,height))
bit.clear;r1+=plus_r;g1+=plus_g;b1+=plus_b;o1+=plus_o};bit.dispose
when true
ts = text_size(text) ; width,height = ts.width+2,ts.height
bit = self.dup ; bit.font = font.dup
h = (height-1).to_f;plus_r = (r2-r1)/h;plus_g = (g2-g1)/h
plus_b = (b2-b1)/h;plus_o = (o2-o1)/h;height.times {|i|
bit.font.color = Color.new(r1,g1,b1,o1)
bit.draw_text(x, y, width, height, text)
blt(x, y+i ,bit,Rect.new(x,y+i,width,1))
bit.clear;r1+=plus_r;g1+=plus_g;b1+=plus_b;o1+=plus_o};bit.dispose
end
end
end
复制代码
这是颜色脚本↑
@三途亚梦
作者:
taroxd
时间:
2014-9-10 14:32
fox1313304 发表于 2014-9-10 14:17
这是强化脚本↑这是颜色脚本↑
又是这脚本,这装备增强脚本的风格看不下去……兼容性也不咋地……
咳咳,说正经的,你可以分析一下绘制文字的部分。这里很可能产生冲突,将两者整合一下应该就可以了。
反正我目前是无力给出直接的解决方式了……
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1