Project1
标题:
复杂装备系统出错!~~~~急~!!
[打印本页]
作者:
jinbide
时间:
2013-2-10 14:57
标题:
复杂装备系统出错!~~~~急~!!
==============================================================================
# ■ Window_Help
#------------------------------------------------------------------------------
# 原作:xuelong
# 修正:水迭澜
# 移植:禾西
# protosssonny修改版
#==============================================================================
class Window_Help < Window_Base
#--------------------------------------------------------------------------
# ● 定義
#--------------------------------------------------------------------------
def set
@phrase,@y= {}, 0
@scope, @parameter_type = [], []
#@name_size = 名字文字大小
#@size = 描述文字大小
#[url=home.php?mod=space&uid=79957]@WORD[/url] = 每行的描述文字數
@name_size = 18
@size = 14
@word = 11
# 不顯示的 屬性 與 狀態 ID
@unshow_elements = []
@unshow_states = [17,29,31,37,38,39,40]
# 基本文字設定
@phrase[:price] = "价格"
@phrase[:elements] = "攻击属性"
@phrase[:states] = "附加状态"
@phrase[:guard_elements] = "减半属性"
@phrase[:guard_states] = "无效化状态"
#------------------#
# 物品效果語句 #
#------------------#
@phrase[:recover] = "恢复"
@phrase[:hp] = "HP"
@phrase[:mp] = "MP"
@phrase[:plus_states] = "状态附加"
@phrase[:minus_states] = "状态解除"
@phrase[:speed] = "速度修正"
@phrase[:consumable] = "消耗品"
@phrase[:base_damage] = "基本伤害"
#------------------#
# 特殊效果語句 #
#------------------#
@phrase[:special] = "附带属性"
@phrase[:two_handed] = "双手武器"
@phrase[:fast_attack] = "回合内先制"
@phrase[:dual_attack] = "连续攻击"
@phrase[:critical_bonus] = "频繁暴击"
@phrase[:prevent_critical] = "防止暴击"
@phrase[:half_mp_cost] = "消耗MP减半"
@phrase[:double_exp_gain] = "取得经验值2倍"
@phrase[:auto_hp_recover] = "HP自动恢复"
@phrase[:physical_attack] = "物理攻击"
@phrase[:damage_to_mp] = "MP伤害"
@phrase[:absorb_damage] = "伤害吸收"
@phrase[:ignore_defense] = "不可出售"
#------------------#
# 技能描述語句 #
#------------------#
@phrase[:recovery] = "恢复力"
@phrase[:mp_cost] = "消耗MP"
@phrase[:hit] = "命中率"
#------------------#
# 效果範圍語句 #
#------------------#
@phrase[:scope] = "效果范围"
@scope[0] = "无"
@scope[1] = "敌人"
@scope[2] = "敌全体"
@scope[3] = "敌单体 连续"
@scope[4] = "一至二人"
@scope[5] = "二至四人"
@scope[6] = "四至十人"
@scope[7] = "我方单体"
@scope[8] = "我方全体"
@scope[9] = "我方单个死亡者"
@scope[10] = "我方所有死亡者"
@scope[11] = "自己"
#------------------#
# 效果範圍語句 #
#------------------#
@parameter_type[1] = "MaxHP"
@parameter_type[2] = "MaxMP"
@parameter_type[3] = $data_system.terms.atk
@parameter_type[4] = $data_system.terms.def
@parameter_type[5] = $data_system.terms.spi
@parameter_type[6] = $data_system.terms.agi
end
#--------------------------------------------------------------------------
# ● 初始化對象
#--------------------------------------------------------------------------
def initialize
super(240,0,544,WLH + 32)
self.opacity = 200
self.z = 150
self.visible = false
end
#--------------------------------------------------------------------------
# ● 設置文本
# data : 窗口顯示的字符串/物品資料
# align : 對齊方式 (0..左對齊、1..中間對齊、2..右對齊)
#--------------------------------------------------------------------------
def set_text(data, align=0)
#------------------------------------------------------------------------
# ● 當資料爲文字時候
#------------------------------------------------------------------------
if data != @text or align != @align
if data.is_a?(String)
draw_string(data,align)
end
end
return if data.is_a?(String)
#------------------------------------------------------------------------
# ● 當沒有資料時候
#------------------------------------------------------------------------
if data.nil?
self.visible=false
else
self.visible=true
end
#------------------------------------------------------------------------
# ● 當資料爲物品/技能時候
#------------------------------------------------------------------------
if data != nil && @data != data
self.width = 210
self.height = 430
self.x=0
self.y=200
set
draw_data(data)
else
return
end
end
#--------------------------------------------------------------------------
# ● 更新帮助窗口
#--------------------------------------------------------------------------
def draw_string(data,align)
self.width = 544 #修正寬度
self.height = WLH + 32 #修正高度
self.x = 240 #修正 x 坐標
self.y = 0 #修正 y 坐標
@text = data #記錄文本資料
@align = align #記錄對齊方式
[url=home.php?mod=space&uid=95897]@actor[/url] = nil #清空角色資料
self.contents = Bitmap.new(width - 32, height - 32) if self.contents.nil?
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 20
self.contents.draw_text(4 , 0, self.width - 40, 28, data, align)
self.visible = true
end
#--------------------------------------------------------------------------
# ● 更新帮助窗口
#--------------------------------------------------------------------------
def draw_data(data=@data)
self.width = 186 #修正寬度
self.height = 430 #修正高度
self.x = 0 #修正 x 坐標
self.y = 150 #修正 y 坐標
@data = data #記錄 data 資料
case @data
when RPG::Item
set_item_text(@data)
when RPG::Weapon, RPG::Armor
set_equipment_text(@data)
when RPG::Skill
set_skill_text(@data)
end
end
#--------------------------------------------------------------------------
# ● 修正窗口位置
#--------------------------------------------------------------------------
def set_pos(x,y,width,oy,index,column_max)
cursor_width = width / column_max - 32
xx = index % column_max * (cursor_width + WLH)
yy = index / column_max * WLH - oy
self.x = xx + x + 140
self.y = yy + y + 35
if self.x + self.width > 544
self.x = 544 - self.width
end
if self.y + self.height > 416
self.y = 416 - self.height
end
end
#------------------------------------------------------------------------
# ● 文字描繪
#------------------------------------------------------------------------
def draw_text(text, increase, move=0)
@y += increase
self.contents.font.size = @size
@special_size = 0 if @special_size == nil
@first_line = 0 if @first_line == nil
if @special_size > 0 and not @data.is_a?(RPG::Item)
if @y >= increase * @first_line
case @special_size
when 0
self.contents.font.color = normal_color
when 1
self.contents.font.color = text_color(12)
when 2
self.contents.font.color = text_color(29)
when 3
self.contents.font.color = text_color(17)
when 4
self.contents.font.color = text_color(20)
when 5
self.contents.font.color = text_color(26)
when 6
self.contents.font.color = text_color(31)
end
end
self.contents.draw_text(0+move, @y*@size+5, text.size*6, @size, text, 0)
else
self.contents.font.color = normal_color
self.contents.draw_text(0+move, @y*@size+5, text.size*6, @size, text, 0)
end
end
#-------------------------------------#
# 子方法
#-------------------------------------#
#--------------------------------------------------------------------------
# ● 裝備幫助窗口
#--------------------------------------------------------------------------
def set_equipment_text(equipment)
#------------------------------------------------------------------------
# ● 取得基本質料
#------------------------------------------------------------------------
#----------------------------#
# 取得屬性、狀態、說明之副本 #
#----------------------------#
element_set = equipment.element_set.clone
state_set = equipment.state_set.clone
description = equipment.description.clone
phrase = @phrase
#----------------------------#
# 過濾不顯示的屬性與狀態描述 #
#----------------------------#
element_set -= @unshow_elements
state_set -= @unshow_states
#----------------#
# 初始化數據設定 #
#----------------#
x, h, move = 0, 0, 0
#------------------#
# 取得特殊效果數據 #
#------------------#
special = []
gifts = equipment.gifts
gifts = [] if gifts.nil?
s = [
"攻击 + [s]", "攻击 + [s]%",
"防御 + [s]", "防御 + [s]%",
"魔力 + [s]", "魔力 + [s]%",
"速度 + [s]", "速度 + [s]%",
"最大HP + [s]", "最大HP + [s]%",
"最大MP + [s]", "最大MP + [s]%",
"命中率 + [s]",
"闪避率 + [s]",
"暴击率 + [s]",
"所有主要属性 + [s]",
"抗魔性 + [s]"
]
for g in gifts
special << s[g.type].sub(/\[s\]/) {g.value}
end
#------------------------------------------------------------------------
# ● 確定背景圖片的高度
#------------------------------------------------------------------------
h += (description.size/3/@word)
h += 1 if (description.size/3%@word) >= 0
now_h = h
h += 1 #價格
h += 1 #装备等级
h += 1 unless equipment.nodur or PA::USE_DUR == false#耐久度
h += 1 if equipment.sockets_num > 0 #孔数
h += 1 unless equipment.atk.zero? #攻擊力
h += 1 unless equipment.def.zero? #防禦力
h += 1 unless equipment.spi.zero? #精神力
h += 1 unless equipment.agi.zero? #敏捷力
h += element_set.size + 1 if element_set.size > 0 #屬性
h += state_set.size + 1 if state_set.size > 0 #狀態
h += special.size + 2 if special.size > 0 #特殊效果
if special.size > 0
case special.size
when 1
@first_line = h-1
when 2
@first_line = h-2
when 3
@first_line = h-3
when 4
@first_line = h-4
when 5
@first_line = h-5
when 6
@first_line = h-6
end
end
@special_size = special.size
#------------------------------------------------------------------------
# ● 圖片顯示保證高度
#------------------------------------------------------------------------
#h = 6 + now_h if (h - now_h) < 6
#------------------------------------------------------------------------
# ● 換算高度
#------------------------------------------------------------------------
self.height = h * @size + @name_size + 36
#------------------------------------------------------------------------
# ● 生成背景
#------------------------------------------------------------------------
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.clear
#------------------------------------------------------------------------
# ● 名字描繪
#------------------------------------------------------------------------
text = equipment.name
self.contents.font.size = @name_size
if text.nil?
self.visible = false
else
self.visible = true
###self.contents.draw_text(0, 0, text.size*7, @name_size, text, 0)
#我加的,用case判断颜色
unless equipment.is_a?(RPG::Item)
case gifts.size
when 1
self.contents.font.color = text_color(12)
when 2
self.contents.font.color = text_color(29)
when 3
self.contents.font.color = text_color(17)
when 4
self.contents.font.color = text_color(20)
when 5
self.contents.font.color = text_color(26)
when 6
self.contents.font.color = text_color(31)
end
else
self.contents.font.color = text_color(0)
end
self.contents.draw_text(0, 0, contents.width-4, @name_size, text)
end
#------------------------------------------------------------------------
# ● 說明描繪
#------------------------------------------------------------------------
x = 0
@y += 1
while ((text = description.slice!(/./m)) != nil)
self.contents.font.color = normal_color
self.contents.font.size = @size
self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
if words_judge(text) == true
x += 1
else
x += 0.5
end
if x == @word or x == @word - 0.5
x = 0
@y += 1
end
end
#------------------------------------------------------------------------
# ● 圖標描繪
#------------------------------------------------------------------------
#bitmap = Cache.system("Iconset")
#rect = Rect.new(equipment.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
#self.contents.blt(0, y*size + 20, bitmap, rect, 255)
#------------------------------------------------------------------------
# ● 價格描繪
#------------------------------------------------------------------------
unless equipment.price.zero?
text = phrase[:price] + ":" + equipment.price.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 装备等级描繪
#------------------------------------------------------------------------
unless equipment.read_note('装备等级') == nil
text = "角色等级要求:" + equipment.read_note('装备等级').to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 耐久度
#------------------------------------------------------------------------
if PA::USE_DUR == true
unless equipment.nodur
unless equipment.indesctructible
if equipment.maxdur == nil
text = "耐久度:#{equipment.dur} / #{equipment.read_note('耐久度')}"
else
text = "耐久度:#{equipment.dur} / #{equipment.maxdur}"
end
else
text = "耐久度:无法破坏"
end
draw_text(text, 1, move)
end
end
#------------------------------------------------------------------------
# ● 孔数
#------------------------------------------------------------------------
if equipment.sockets_num > 0
text = "剩余孔数:#{equipment.sockets_num}"
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 攻擊力
#------------------------------------------------------------------------
unless equipment.atk.zero?
text = $data_system.terms.atk + ":" + equipment.base_atk.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 防禦力
#------------------------------------------------------------------------
unless equipment.def.zero?
text = $data_system.terms.def + ":" + equipment.base_def.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 精神力
#------------------------------------------------------------------------
unless equipment.spi.zero?
text = $data_system.terms.spi + ":" + equipment.base_spi.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 敏捷力
#------------------------------------------------------------------------
unless equipment.agi.zero?
text = $data_system.terms.agi + ":" + equipment.base_agi.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 屬性
#------------------------------------------------------------------------
if element_set.size > 0
case equipment
when RPG::Weapon
text=phrase[:elements]+":"
when RPG::Armor
text=phrase[:guard_elements]+":"
end
draw_text(text, 1, move)
element_set.each do |i|
text = $data_system.elements[i]
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 狀態
#------------------------------------------------------------------------
if state_set.size > 0
case equipment
when RPG::Weapon
text=phrase[:states]+":"
when RPG::Armor
text=phrase[:guard_states]+":"
end
draw_text(text, 1, move)
state_set.each do |i|
text = $data_states[i].name
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 特殊效果
#------------------------------------------------------------------------
if special.size > 0
kind_text = ["","","",""]
weapon_gifts = [0,1,4,5,12,14,15]
armor0_gifts = [2,3,4,5,10,11,15,16]
armor1_gifts = [2,3,8,9,15,16]
armor2_gifts = [2,3,6,7,13,15,16]
kind_text[0] = " 武器" if weapon_gifts.include?(equipment.gifts[0].type)
kind_text[1] = " 盾" if armor0_gifts.include?(equipment.gifts[0].type)
kind_text[2] = " 盔" if armor1_gifts.include?(equipment.gifts[0].type)
kind_text[3] = " 衣" if armor2_gifts.include?(equipment.gifts[0].type)
if equipment.is_a?(RPG::Armor) and equipment.base_id == PA::CRYSTAL
text = "可注入" + kind_text[0] + kind_text[1] + kind_text[2] + kind_text[3]
draw_text(text, 1, move)
special.each {|text| draw_text(text, 1, move + @size)}
else
text = phrase[:special]+":"
draw_text(text, 1, move)
special.each {|text| draw_text(text, 1, move + @size)}
end
end
end
#////////////////////////////////////////////////////////////////////////////
#--------------------------------------------------------------------------
# ● 物品幫助窗口
#--------------------------------------------------------------------------
def set_item_text(item)
#----------------------------#
# 取得屬性、狀態、說明之副本 #
#----------------------------#
description = item.description.clone
element_set = item.element_set.clone
plus_state_set = item.plus_state_set.clone
minus_state_set = item.minus_state_set.clone
# 過濾不顯示的描述
element_set -= @unshow_elements
plus_state_set -= @unshow_states
minus_state_set -= @unshow_states
# 初始化數據設定
x, h, move = 0, 0, 0
phrase = @phrase
scope = @scope
parameter_type = @parameter_type
occasion = @occasion
# 基本文字設定
#------------------#
# 取得特殊效果數據 #
#------------------#
special = []
special << phrase[:physical_attack] if item.physical_attack #物理攻撃
special << phrase[:damage_to_mp] if item.damage_to_mp #MPにダメージ
special << phrase[:absorb_damage] if item.absorb_damage #ダメージを吸収
special << phrase[:ignore_defense] if item.ignore_defense #防御力無視
#------------------------------------------------------------------------
# ● 確定背景圖片的高度
#------------------------------------------------------------------------
h += (description.size/3/@word)
h += 1 if (description.size/3%@word) >= 0
now_h = h
h += 2 unless scope[item.scope] == "无" #効果範囲
h += 1 unless item.price == 0 #價格
h += 1 if item.consumable #消耗品
h += 1 unless item.speed.zero? #速度補正値
h += 1 unless item.hp_recovery_rate==0 and item.hp_recovery==0 #HP 回復
h += 1 unless item.mp_recovery_rate==0 and item.mp_recovery==0 #MP 回復
h += 1 unless item.parameter_type.zero? #能力値
h += 1 unless item.base_damage.zero? #基本ダメージ
h += element_set.size + 1 if element_set.size > 0 #屬性
h += plus_state_set.size + 1 if plus_state_set.size > 0 #附加狀態
h += minus_state_set.size + 2 if minus_state_set.size > 0 #解除狀態
h += special.size + 1 if special.size > 0 #特殊效果
#------------------------------------------------------------------------
# ● 圖片顯示保證高度
#------------------------------------------------------------------------
#h = 6 + now_h if (h - now_h) < 6
#------------------------------------------------------------------------
# ● 換算高度
#------------------------------------------------------------------------
self.height = h * @size + @name_size + 36
#------------------------------------------------------------------------
# ● 生成背景
#------------------------------------------------------------------------
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.clear
#------------------------------------------------------------------------
# ● 名字描繪
#------------------------------------------------------------------------
text = item.name
self.contents.font.color = normal_color#顔色腳本
self.contents.font.size = @name_size
if text.nil?
self.visible = false
else
self.visible = true
self.contents.draw_text(0,0, text.size*7, 20, text, 0)
end
#------------------------------------------------------------------------
# ● 說明描繪
#------------------------------------------------------------------------
x = 0
@y += 1
while ((text = description.slice!(/./m)) != nil)
self.contents.font.color = normal_color
self.contents.font.size = @size
self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
if words_judge(text) == true
x+=1
else
x+=0.5
end
if x == @word or x == @word - 0.5
x = 0
@y += 1
end
end
#------------------------------------------------------------------------
# ● 圖標描繪
#------------------------------------------------------------------------
#bitmap = Cache.system("Iconset")
#rect = Rect.new(item.icon_index % 16 * 24, equipment.icon_index / 16 * 24, 24, 24)
#self.contents.blt(0, y*size + 20, bitmap, rect, 255)
#------------------------------------------------------------------------
# ● 效果範圍
#------------------------------------------------------------------------
unless scope[item.scope] == "无"
text = phrase[:scope] +":"
draw_text(text, 1, move)
text = scope[item.scope]
draw_text(text, 1, move + @size)
end
#------------------------------------------------------------------------
# ● 價格
#------------------------------------------------------------------------
unless item.price == 0
text = phrase[:price] + ":" + item.price.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 消耗品
#------------------------------------------------------------------------
if item.consumable
text = phrase[:consumable]
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 速度補正値
#------------------------------------------------------------------------
unless item.speed.zero?
text = phrase[:speed]
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● HP回復
#------------------------------------------------------------------------
unless item.hp_recovery_rate.zero? and item.hp_recovery.zero?
if item.hp_recovery_rate > 0 and item.hp_recovery > 0
text = " + "
else
text = ""
end
unless item.hp_recovery_rate.zero?
text = item.hp_recovery_rate.to_s + "%" + text
end
unless item.hp_recovery.zero?
text += item.hp_recovery.to_s
end
text = phrase[:recover] +":" + text + phrase[:hp]
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● SP回復
#------------------------------------------------------------------------
unless item.mp_recovery_rate.zero? and item.mp_recovery.zero?
if item.mp_recovery_rate > 0 and item.mp_recovery > 0
text = " + "
else
text = ""
end
unless item.mp_recovery_rate.zero?
text = item.mp_recovery_rate.to_s + "%" + text
end
unless item.mp_recovery.zero?
text += item.mp_recovery.to_s
end
text = phrase[:recover] +":" + text + phrase[:mp]
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 能力值增加
#------------------------------------------------------------------------
unless item.parameter_type.zero?
text = parameter_type[item.parameter_type]+" +"+item.parameter_points.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 基本ダメージ
#------------------------------------------------------------------------
unless item.base_damage.zero?
#text = phrase[:base_damage] +":" + item.base_damage.to_s
text = item.base_damage > 0 ? phrase[:base_damage] +":" + item.base_damage.to_s: phrase[:recovery] +":" + (-item.base_damage).to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 屬性
#------------------------------------------------------------------------
if element_set.size > 0
text = phrase[:elements]+":"
draw_text(text, 1, move)
element_set.each do |i|
text = $data_system.elements[i]
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 添加狀態
#------------------------------------------------------------------------
unless plus_state_set.empty?
text = phrase[:plus_states]+":"
draw_text(text, 1, move)
plus_state_set.each do |i|
text = $data_states[i].name
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 解除狀態
#------------------------------------------------------------------------
unless minus_state_set.empty?
text = phrase[:minus_states]+":"
draw_text(text, 1, move)
minus_state_set.each do |i|
text = $data_states[i].name
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 特殊效果
#------------------------------------------------------------------------
if special.size > 0
text = phrase[:special]+":"
draw_text(text, 1, move)
special.each {|text| draw_text(text, 1, move + @size)}
end
end
#////////////////////////////////////////////////////////////////////////////
#--------------------------------------------------------------------------
# ● 技能帮助窗口
#--------------------------------------------------------------------------
def set_skill_text(skill)
#----------------------------#
# 取得屬性、狀態、說明之副本 #
#----------------------------#
description = skill.description.clone
element_set = skill.element_set.clone
plus_state_set = skill.plus_state_set.clone
minus_state_set = skill.minus_state_set.clone
# 過濾不顯示的描述
element_set -= @unshow_elements
plus_state_set -= @unshow_states
minus_state_set -= @unshow_states
# 初始化設定
x ,h, move = 0, 0, 0
phrase = @phrase
scope = @scope
#------------------#
# 取得特殊效果數據 #
#------------------#
special = []
special << phrase[:physical_attack] if skill.physical_attack #物理攻撃
special << phrase[:damage_to_mp] if skill.damage_to_mp #MPにダメージ
special << phrase[:absorb_damage] if skill.absorb_damage #ダメージを吸収
special << phrase[:ignore_defense] if skill.ignore_defense #防御力無視
#------------------------------------------------------------------------
# ● 確定背景圖片的高度
#------------------------------------------------------------------------
h += (description.size/3/@word)
h += 1 if (description.size/3%@word) >= 0
now_h = h
h += 4 #効果範囲,消費MP,命中率
h += 1 unless skill.speed.zero? #速度補正値
h += 1 unless skill.base_damage.zero? #基本ダメージ
h += element_set.size + 1 if element_set.size > 0 #屬性
h += plus_state_set.size + 1 if plus_state_set.size > 0 #附加狀態
h += minus_state_set.size + 1 if minus_state_set.size > 0 #解除狀態
h += special.size + 1 if special.size > 0 #特殊效果
@special_size = nil
@first_line = nil
#------------------------------------------------------------------------
# ● 換算高度
#------------------------------------------------------------------------
self.height=(h + 1) * @size + @name_size + 36
self.contents = Bitmap.new(self.width - 32,self.height - 32)
self.contents.clear
#------------------------------------------------------------------------
# ● 名字描述
#------------------------------------------------------------------------
text = skill.name
self.contents.font.color = Color.new(255, 255, 128, 255)
self.contents.font.size = @name_size
if text!=nil
self.visible = true
self.contents.draw_text(0,0, text.size*7, @name_size, text, 0)
else
self.visible = false
end
#------------------------------------------------------------------------
# ● 說明描述
#------------------------------------------------------------------------
x = 0
@y += 1
text = description
text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
while ((text = description.slice!(/./m)) != nil)
self.contents.font.color = system_color
self.contents.font.size = @size
self.contents.draw_text(x*@size, @y*@size+5, @size, @size, text, 0)
if words_judge(text) == true
x+=1
else
x+=0.5
end
if x == @word or x == @word - 0.5
x = 0
@y += 1
end
end
#------------------------------------------------------------------------
# ● 攻擊範圍
#------------------------------------------------------------------------
self.contents.font.color = normal_color
text = phrase[:scope] +":"
draw_text(text, 1, move)
text = scope[skill.scope]
draw_text(text, 1, move + @size)
#------------------------------------------------------------------------
# ● 基本ダメージ
#------------------------------------------------------------------------
unless skill.base_damage .zero?
text = skill.base_damage > 0 ? phrase[:base_damage] : phrase[:recovery]
text += ":" + skill.base_damage.abs.to_s
draw_text(text, 1, move)
end
#------------------------------------------------------------------------
# ● 消費SP描述
#------------------------------------------------------------------------
text = phrase[:mp_cost] +":"+ skill.mp_cost.to_s
if skill.mp_cost == 0 and skill.base_damage .zero? #被动技能调用
text = phrase[:mp_cost] +":"+ "被动技能"
end
draw_text(text, 1, move)
#------------------------------------------------------------------------
# ● 命中率描述
#------------------------------------------------------------------------
text = phrase[:hit] + ":" + skill.hit.to_s + "%"
draw_text(text, 1, move)
#------------------------------------------------------------------------
# ● 屬性
#------------------------------------------------------------------------
if element_set.size > 0
text = phrase[:elements]+":"
draw_text(text, 1, move)
element_set.each do |i|
text = $data_system.elements[i]
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 添加狀態
#------------------------------------------------------------------------
unless plus_state_set.empty?
text = phrase[:plus_states]+":"
draw_text(text, 1, move)
plus_state_set.each do |i|
text = $data_states[i].name
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 解除狀態
#------------------------------------------------------------------------
unless minus_state_set.empty?
text = phrase[:minus_states]+":"
draw_text(text, 1, move)
minus_state_set.each do |i|
text = $data_states[i].name
draw_text(text, 1, move + @size)
end
end
#------------------------------------------------------------------------
# ● 特殊效果
#------------------------------------------------------------------------
if special.size > 0
text = phrase[:special]+":"
draw_text(text, 1, move)
special.each {|text| draw_text(text, 1, move + @size)}
end
end
#------------------------------------------------------------------------
# ● 文字数字判定
#------------------------------------------------------------------------
def words_judge(word)
case word
when "0","1","2","3","4","5","6","7","8","9","%",".","A","B","C","D","E",\
"F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W",\
"X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o",\
"p","q","r","s","t","u","v","w","x","y","z"
return false
end
return true
end
end
#==============================================================================
# ■ Window_Item
#------------------------------------------------------------------------------
# アイテム画面などで、所持アイテムの一覧を表示するウィンドウです。
#==============================================================================
class Window_Item < Window_Selectable
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(item)
#修正窗口位置
@help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
end
end
#==============================================================================
# ■ Window_Skill
#------------------------------------------------------------------------------
# スキル画面などで、使用できるスキルの一覧を表示するウィンドウです。
#==============================================================================
class Window_Skill < Window_Selectable
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(skill)
if skill != nil
@help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
else
@help_window.x = 1000 #没有物品时,让帮助窗口出界而看不见
end
end
end
#==============================================================================
# ■ Window_Equip
#------------------------------------------------------------------------------
# 装備画面で、アクターが現在装備しているアイテムを表示するウィンドウです。
#==============================================================================
class Window_Equip < Window_Selectable
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(item)
if item != nil
@help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
else
@help_window.x = 1000 #没有物品时,让帮助窗口出界而看不见
end
end
end
#==============================================================================
# ■ Window_ShopBuy
#------------------------------------------------------------------------------
# ショップ画面で、購入できる商品の一覧を表示するウィンドウです。
#==============================================================================
class Window_ShopBuy < Window_Selectable
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(item)
if item != nil
@help_window.set_pos(self.x,self.y,self.width,self.oy,self.index,@column_max)
else
@help_window.x = 1000 #没有物品时,让帮助窗口出界而看不见
end
end
end
复制代码
#gifts = equipment.gifts这句出错!!!!!!_/_/_/_/_/_
作者:
球球猫
时间:
2013-2-11 01:35
推荐可以使用P叔整合的复杂装备系统
简单实用~
http://rpg.blue/forum.php?mod=viewthread&tid=246631
作者:
怪蜀黍
时间:
2013-2-11 22:53
改出错行为这样试试:
gifts = equipment.gifts rescue []
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1