赞 | 0 |
VIP | 0 |
好人卡 | 9 |
积分 | 1 |
经验 | 15515 |
最后登录 | 2022-1-17 |
在线时间 | 1083 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 70
- 在线时间
- 1083 小时
- 注册时间
- 2013-3-29
- 帖子
- 2394
|
本帖最后由 黄濑凉太 于 2013-7-1 10:04 编辑
我直接发代码吧。。。。转载至P叔的整合系统:http://rpg.blue/thread-246631-1-1.html
- #==============================================================================
- # ■ 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
复制代码 |
评分
-
查看全部评分
|