Project1
标题:
求太监掉详细幫助窗口脚本……
[打印本页]
作者:
512195574
时间:
2013-5-29 20:36
标题:
求太监掉详细幫助窗口脚本……
本帖最后由 512195574 于 2013-5-31 20:13 编辑
禾西详细帮助脚本是个好东西,能在方方面面起到提示作用,不过也就是因为这个脚本太方面了,以至于和很多窗口类脚冲突。
其它脚本也就算了,修修补补总能糊弄过去,不过加入RTAB0.17的时候就出现问题了,一来是两者都是很不错的脚本,难以取舍,二来是两个脚本覆盖范围都很广,不知道哪里出问题了。
不得已只得采取折中之策,将帮助窗口的脚本有关战斗的都注释掉,不过我脚本刚入门,这个也没成功……ORZ
所以在这里求删去帮助窗口脚本的功能,使得其能与RTAB并存并不显示错误就行了
PS:剩下的一个要求多少有些强人所难,不行的话就当我说的是题外话吧。技能分类和物品分类也是不错的窗口脚本,能否将技能分类与RTAB、物品分类与窗口脚本(物品浏览界面不调用窗口脚本也可以)整合起来?
如能帮忙解决,感激不尽……(总会有福利的)
以下是禾西的详细幫助窗口,另外的分类脚本仁兄如果有兴趣的话回帖再粘上= =
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
问题已自行解决~
作者:
wingzeroplus
时间:
2013-5-30 09:09
你的脚本第48行,1096行,1098行混入了一些奇怪的东西,删掉就可以
RTAB是战斗系统,跟窗口类脚本不会冲突,你的脚本我删掉那3行后让入自己的RTAB运行不会报错
另外你的PS问题直接插入需要脚本不就可以了?
作者:
512195574
时间:
2013-5-30 18:26
本帖最后由 512195574 于 2013-5-30 18:30 编辑
wingzeroplus 发表于 2013-5-30 09:09
你的脚本第48行,1096行,1098行混入了一些奇怪的东西,删掉就可以
RTAB是战斗系统,跟窗口类脚本不会冲突 ...
额,首先十分感谢
这些东西估计是在粘贴的时候混入的,游戏测试没有问题。
关于冲突,其实并不是什么大不了的冲突,也没有弹窗错误,只是敌人名字显示时有问题,显示不出名称,已经确定是帮助窗口的问题了(去掉无误),和什么脚本冲突目前不清楚 = =RTAB可能只占一部分,也不排除其他脚本的干扰。最方便的解决办法就是去掉窗口帮助脚本的战斗部分。(关于这个我试过注释掉详细帮助窗口关于战斗类的定义这一块的脚本,不过依旧无效……)
至于技能分类和物品分类是确确实实跟详细窗口帮助出现错误的,包括一些商店脚本,错误也不表现为弹窗,依旧是显示问题,有几个我通过建立确定的帮助窗口坐标解决了,不过其他的实在是看不懂。其实这个详细帮助窗口我只需要它在装备浏览界面运行就够了,其他界面运行的话冲突太多(主要是help windows的位置问题),当然能解决最好。
作者:
512195574
时间:
2013-5-31 19:12
本帖最后由 512195574 于 2013-5-31 19:52 编辑
果然求人不如求己
此问题已被楼主自行解决………………可以结贴了
现在放入解决方法
详细帮助窗口与RTAB的冲突的方法(禾西大神):
新建脚本
# 衝突位置:
# ∑def start_skill_select < class Scene_Battle
class Scene_Battle
def start_skill_select
@skill_window = Window_Skill.new(@active_actor)
@skill_window.help_window = Window_Help.new
@actor_command_window.active = false
@actor_command_window.visible = false
end
end
详细帮助脚本与技能分类脚本的冲突解决办法(亲手太监掉的脚本)
附加了一个功能,装备显示属性的时候根据能力值的不能会产生不同的颜色的提示……
技能分类脚本请放在最后,帮助脚本次之,RTAB在上方。其实RTAB基本与所有的窗口类脚本都有矛盾,所以窗口类脚本最好放在RTAB的下方
但是技能分类和RTAB还有冲突……不管了
#==============================================================================
# 禾西製作 / Created by Quarcy
#==============================================================================
class Window_Help < Window_Base
attr_accessor :parameters
attr_reader :materia
#--------------------------------------------------------------------------
# ● 定義不顯示的屬性與狀態
#--------------------------------------------------------------------------
def unshown
@unshow_elements = [17, 18]
@unshow_states = []
end
#--------------------------------------------------------------------------
# ● 初始化對象
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.opacity = 150
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)
# 再描繪文本
self.width = 640
self.height = 64
self.contents = Bitmap.new(width - 32, height - 32) if self.contents.nil?
self.contents.clear
#self.contents.font.color = normal_color
#shuqian
self.contents.font.color = normal_color
self.contents.font.size = 20
self.contents.draw_text(4, 0, self.width - 40, 32, data, align)
@text = data
@align = align
[url=home.php?mod=space&uid=95897]@actor[/url] = nil
self.visible = true
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
unshown
non_auto_update(data)
else
return
end
end
#--------------------------------------------------------------------------
# ● 更新帮助窗口
#--------------------------------------------------------------------------
def non_auto_update(data=@data)
@data = data
case @data
when RPG::Item
set_item_text(@data)
when RPG::Weapon
set_equipment_text(@data)
when RPG::Armor
set_equipment_text(@data)
end
end
#--------------------------------------------------------------------------
# ● 裝備帮助窗口
#--------------------------------------------------------------------------
def set_equipment_text(equipment)
#------------------------------------------------------------------------
# ● 取得基本質料
#------------------------------------------------------------------------
# 取得屬性、附加狀態、解除狀態之副本
case equipment
when RPG::Weapon
element_set = equipment.element_set.clone
plus_state_set = equipment.plus_state_set.clone
minus_state_set = equipment.minus_state_set.clone
#----------------------#
# 過濾不顯示的狀態描述 #
#----------------------#
plus_state_set -= @unshow_states
minus_state_set -= @unshow_states
when RPG::Armor
element_set = equipment.guard_element_set.clone
guard_state_set = equipment.guard_state_set.clone
#----------------------#
# 過濾不顯示的狀態描述 #
#----------------------#
auto_state_id = equipment.auto_state_id
guard_state_set -= @unshow_states
end
#----------------------#
# 過濾不顯示的屬性描述 #
#----------------------#
element_set -= @unshow_elements
#--------------#
# 取得說明文字 #
#--------------#
description = equipment.description.clone
# 初始化數據設定
x = 0
y = 0
h = 0
phrase = {}
# 基本文字設定
phrase["price"] = "价格:"
phrase["elements"] = "属性:"
phrase["minus_states"] = "解除状态:"
phrase["plus_states"] = "附加状态:"
phrase["guard_elements"] = "防御属性"
phrase["guard_states"] = "免疫状态"
phrase["auto_state"] = "自动状态"
# 基本數據設定
=begin
name_size = 名字文字大小
size = 描述文字大小
word = 每行的描述文字數
move = 全體描述偏移幅度
=end
name_size = 18
size = 14
word = 12
move = 80
#------------------------------------------------------------------------
# ● 確定背景圖片的高度
#------------------------------------------------------------------------
h += (description.size/3/word)
h += 1 if (description.size/3%word) > 0
h += 1 if equipment.is_a?(RPG::Weapon)
now_h = h
h += 1
h += 1 unless equipment.pdef.zero?
h += 1 unless equipment.mdef.zero?
h += 1 if element_set.size > 0
h += 1 if element_set.size >= 5
case equipment
when RPG::Weapon
h += 1 unless minus_state_set.empty?
h += minus_state_set.size
h += 1 unless plus_state_set.empty?
h += plus_state_set.size
when RPG::Armor
h += 1 unless guard_state_set.empty?
h += guard_state_set.size
h += 1 unless auto_state_id.zero?
end
h += 1
h += 1 unless equipment.str_plus.zero?
h += 1 unless equipment.dex_plus.zero?
h += 1 unless equipment.agi_plus.zero?
h += 1 unless equipment.int_plus.zero?
h += materia_height_plus(equipment) unless self.materia.nil?
#------------------------------------------------------------------------
# ● 圖片顯示保證高度
#------------------------------------------------------------------------
h = 6 + now_h if (h - now_h) < 6
#------------------------------------------------------------------------
# ● 換算高度
#------------------------------------------------------------------------
self.height = h * size + name_size + 32
#------------------------------------------------------------------------
# ● 生成背景
#------------------------------------------------------------------------
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.clear
#------------------------------------------------------------------------
# ● 名字描繪
#------------------------------------------------------------------------
text = equipment.name
self.contents.font.color = Color.new(255,255,100)
#self.contents.font.color = text_color(item.name_color_66RPG)
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)
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)
x+=1
if x == word
x=0
y+=1
end
end
#------------------------------------------------------------------------
# ● 圖標描繪
#------------------------------------------------------------------------
bitmap = RPG::Cache.icon(equipment.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(0 ,y*size + 20, bitmap, Rect.new(0, 0, 95, 100), 225)
#------------------------------------------------------------------------
# ● 攻擊力描繪(武器)
#------------------------------------------------------------------------
if equipment.is_a?(RPG::Weapon)
x = 0
y += 1
text = $data_system.words.atk+":"+equipment.atk.to_s
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#------------------------------------------------------------------------
# ● 價格描繪
#------------------------------------------------------------------------
x = 0
y += 1
text = phrase["price"] + equipment.price.to_s
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
#------------------------------------------------------------------------
# ● 物理防禦
#------------------------------------------------------------------------
unless equipment.pdef.zero?
x = 0
y += 1
text = $data_system.words.pdef+":"+equipment.pdef.to_s
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#------------------------------------------------------------------------
# ● 魔法防禦
#------------------------------------------------------------------------
unless equipment.mdef.zero?
x = 0
y += 1
text=$data_system.words.mdef+":"+equipment.mdef.to_s
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#------------------------------------------------------------------------
# ● 屬性
#------------------------------------------------------------------------
if element_set.size > 0
x = 0
y += 1
text = phrase["elements"]
for i in 0...element_set.size
break if i > 4
text += $data_system.elements[element_set[i]]
end
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
if element_set.size >= 5
x = (phrase["elements"].size)*5-4
y += 1
text = ""
for i in 4...element_set.size
text += $data_system.elements[element_set[i]]
end
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#------------------------------------------------------------------------
# ● 描述分流 武器/防具
#------------------------------------------------------------------------
case equipment
when RPG::Weapon
#------------------------------------------------------------------------
# ● 解除狀態(武器)
#------------------------------------------------------------------------
unless minus_state_set.empty?
x = 0
y += 1
text=phrase["minus_states"]
text=phrase["guard_states"]
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
for i in 0...minus_state_set.size
y += 1
text = $data_states[minus_state_set[i]].name
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
end
#------------------------------------------------------------------------
# ● 附加狀態(武器)
#------------------------------------------------------------------------
unless plus_state_set.empty?
x = 0
y += 1
text = phrase["plus_states"]
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
for i in 0...plus_state_set.size
y += 1
text=$data_states[plus_state_set[i]].name
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
end
when RPG::Armor
#------------------------------------------------------------------------
# ● 防禦狀態(防具)
#------------------------------------------------------------------------
unless guard_state_set.empty?
x = 0
y += 1
text=phrase["guard_states"]
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
for i in 0...guard_state_set.size
y += 1
text = $data_states[guard_state_set[i]].name
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
end
#------------------------------------------------------------------------
# ● 自動狀態(防具)
#------------------------------------------------------------------------
unless auto_state_id.zero?
x = 0
y += 1
text = phrase["auto_state"] + $data_states[auto_state_id].name
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
end
#------------------------------------------------------------------------
# ● 空行
#------------------------------------------------------------------------
y+=1
#------------------------------------------------------------------------
# ● 力量
#------------------------------------------------------------------------
unless equipment.str_plus.zero?
x = 0
y += 1
h += 1
if equipment.str_plus > 0
text=$data_system.words.str+" +"+ equipment.str_plus.to_s
self.contents.font.color = Color.new(30,144,255)
end
if equipment.str_plus > 10
self.contents.font.color = Color.new(252,100,100)
end
if equipment.str_plus > 99
self.contents.font.color = Color.new(255,215,0)
end
if equipment.str_plus < 0
text=$data_system.words.str+" -"+ (-equipment.str_plus).to_s
self.contents.font.color = Color.new(124,252,0)
end
if equipment.str_plus < -10
self.contents.font.color = Color.new(218,122,214)
end
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#------------------------------------------------------------------------
# ● 靈巧
#------------------------------------------------------------------------
unless equipment.dex_plus.zero?
x = 0
y += 1
h += 1
if equipment.dex_plus > 0
text=$data_system.words.dex+" +"+ equipment.dex_plus.to_s
self.contents.font.color = Color.new(30,144,255)
end
if equipment.dex_plus > 10
self.contents.font.color = Color.new(252,100,100)
end
if equipment.dex_plus > 99
self.contents.font.color = Color.new(255,215,0)
end
if equipment.dex_plus < 0
text=$data_system.words.dex+" -"+ (-equipment.dex_plus).to_s
self.contents.font.color = Color.new(124,252,0)
end
if equipment.dex_plus < -10
self.contents.font.color = Color.new(218,122,214)
end
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#------------------------------------------------------------------------
# ● 速度
#------------------------------------------------------------------------
unless equipment.agi_plus.zero?
x = 0
y += 1
h += 1
if equipment.agi_plus > 0
text=$data_system.words.agi+" +"+ equipment.agi_plus.to_s
self.contents.font.color = Color.new(30,144,255)
end
if equipment.agi_plus > 10
self.contents.font.color = Color.new(252,100,100)
end
if equipment.agi_plus > 99
self.contents.font.color = Color.new(255,215,0)
end
if equipment.agi_plus < 0
text=$data_system.words.agi+" -"+ (-equipment.agi_plus).to_s
self.contents.font.color = Color.new(124,252,0)
end
if equipment.agi_plus < -10
self.contents.font.color = Color.new(218,122,214)
end
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#-------
#------------------------------------------------------------------------
# ● 智力
#------------------------------------------------------------------------
unless equipment.int_plus.zero?
x = 0
y += 1
h += 1
if equipment.int_plus > 0
text=$data_system.words.int+" +"+ equipment.int_plus.to_s
self.contents.font.color = Color.new(30,144,255)
end
if equipment.int_plus > 10
self.contents.font.color = Color.new(252,100,100)
end
if equipment.int_plus > 99
self.contents.font.color = Color.new(255,215,0)
end
if equipment.int_plus < 0
text=$data_system.words.int+" -"+ (-equipment.int_plus).to_s
self.contents.font.color = Color.new(124,252,0)
end
if equipment.int_plus < -10
self.contents.font.color = Color.new(218,122,214)
end
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#------------------------------------------------------------------------
# ● 魔力石描繪
#------------------------------------------------------------------------
y += draw_materia(equipment, move, y, size) unless self.materia.nil?
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 = 0
y = 0
h = 0
phrase = {}
scope ={}
parameter_type = {}
# 基本數據設定
=begin
name_size = 名字文字大小
size = 描述文字大小
word = 每行的描述文字數
move = 全體描述偏移幅度
=end
name_size = 18
size = 14
word = 12
move = 80
# 基本文字設定
phrase["scope"] = "范围:"
phrase["price"] = "价格:"
phrase["recover_hp_rate"] = "hp 回复率:"
phrase["recover_hp"] = "hp 回复量:"
phrase["recover_sp_rate"] = "sp 回复率:"
phrase["recover_sp"] = "sp 回复量:"
phrase["elements"] = "sp 回复量:"
phrase["plus"] = "附加"
phrase["minus"] = "解除"
phrase["states"] = "状态"
scope[0] = "特殊物品"
scope[1] = "敌单体"
scope[2] = "敌全体"
scope[3] = "己方单体"
scope[4] = "己方全体"
scope[5] = "己方昏死单体"
scope[6] = "己方昏死全体"
scope[7] = "使用者"
scope[8] = "使用者"
parameter_type[1] = "最大生命上升"
parameter_type[2] = "最大技力上升"
parameter_type[3] = $data_system.words.str
parameter_type[4] = $data_system.words.dex
parameter_type[5] = $data_system.words.agi
parameter_type[6] = $data_system.words.int
#依顯示内容確定自身高
h = (description.size/3/word)
h +=1 if (description.size/3%word)> 0
now_h = h
h +=3 # 空行,效果範圍,價格
h += 1 unless item.recover_hp_rate.zero?
h += 1 unless item.recover_hp.zero?
h += 1 unless item.recover_sp_rate.zero?
h += 1 unless item.recover_sp.zero?
h += 1 unless item.parameter_type.zero?
h += 1 unless element_set[0].nil?
h += 1 unless element_set[4].nil?
h += (1+plus_state_set.size) unless plus_state_set.empty?
h += (1+minus_state_set.size) unless minus_state_set.empty?
#------------------------------------------------------------------------
# ● 圖片顯示保證高度
#------------------------------------------------------------------------
h = 6 + now_h if (h - now_h) < 6
#------------------------------------------------------------------------
# ● 換算高度
#------------------------------------------------------------------------
self.height = h * size + name_size + 32
#------------------------------------------------------------------------
# ● 生成背景
#------------------------------------------------------------------------
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)
x+=1
if x == word
x = 0
y += 1
end
end
#------------------------------------------------------------------------
# ● 圖標描繪
#------------------------------------------------------------------------
bitmap = RPG::Cache.icon(item.icon_name) unless item.icon_name.nil?
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(0 ,y*size + 20, bitmap, Rect.new(0, 0, 95, 100), 225)
#------------------------------------------------------------------------
# ● 魔力石接口
#------------------------------------------------------------------------
unless self.materia.nil?
return if is_materia?(item)
end
#------------------------------------------------------------------------
# ● 效果範圍
#------------------------------------------------------------------------
text= phrase["scope"] + scope[item.scope]
x = 0
y += 1
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
#------------------------------------------------------------------------
# ● 價格
#------------------------------------------------------------------------
x = 0
y += 1
text = phrase["price"] + item.price.to_s
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
#------------------------------------------------------------------------
# ● HP回復率
#------------------------------------------------------------------------
unless item.recover_hp_rate.zero?
x = 0
y += 1
text = phrase["recover_hp_rate"] + item.recover_hp_rate.to_s+"%"
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#------------------------------------------------------------------------
# ● HP回復量
#------------------------------------------------------------------------
unless item.recover_hp.zero?
x = 0
y += 1
text = phrase["recover_hp"] + item.recover_hp.to_s
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#------------------------------------------------------------------------
# ● SP回復率
#------------------------------------------------------------------------
unless item.recover_sp_rate.zero?
x = 0
y += 1
text = phrase["recover_sp_rate"] + item.recover_sp_rate.to_s+"%"
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#------------------------------------------------------------------------
# ● SP回復量
#------------------------------------------------------------------------
unless item.recover_sp.zero?
x = 0
y += 1
text = phrase["elements"] + item.recover_sp.to_s
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#------------------------------------------------------------------------
# ● 能力值增加
#------------------------------------------------------------------------
unless item.parameter_type.zero?
x = 0
y += 1
text= parameter_type[item.parameter_type]+" +"+item.parameter_points.to_s
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#------------------------------------------------------------------------
# ● 屬性
#------------------------------------------------------------------------
if element_set.size > 0
x = 0
y += 1
text = phrase["elements"]
for i in 0...element_set.size
break if i > 4
text += $data_system.elements[element_set[i]]
end
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
if element_set.size >= 5
x = (phrase["elements"].size)*5-4
y += 1
text = ""
for i in 4...element_set.size
text += $data_system.elements[element_set[i]]
end
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
#------------------------------------------------------------------------
# ● 狀態添加
#------------------------------------------------------------------------
unless plus_state_set.empty?
text = phrase["plus"]
x = 0
y += 1
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
plus_state_set.each do |plus_state|
y += 1
text = $data_states[plus_state].name
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
end
#------------------------------------------------------------------------
# ● 狀態解除
#------------------------------------------------------------------------
unless minus_state_set.empty?
text = phrase["minus"]
x = 0
y += 1
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
minus_state_set.each do |minus_state|
y += 1
text = $data_states[minus_state].name
self.contents.font.color = normal_color
self.contents.font.size = size
self.contents.draw_text(x+move, y*size+5, text.size*6, size, text, 0)
end
end
end
#--------------------------------------------------------------------------
# ● 设置角色
# actor : 要显示状态的角色
#--------------------------------------------------------------------------
def set_actor(actor)
if actor != @actor
self.contents.clear
draw_actor_name(actor, 4, 0)
draw_actor_state(actor, 140, 0)
draw_actor_hp(actor, 284, 0)
draw_actor_sp(actor, 460, 0)
[url=home.php?mod=space&uid=95897]@actor[/url] = actor
@text = nil
self.visible = true
end
end
#--------------------------------------------------------------------------
# ● 設置角色
# actor : 要顯示狀態之角色
#--------------------------------------------------------------------------
def set_actor(actor)
self.contents = Bitmap.new(width - 32, height - 32) if self.contents.nil?
if actor != @actor
self.contents.clear
draw_actor_name(actor, 4, 0)
draw_actor_state(actor, 140, 0)
draw_actor_hp(actor, 284, 0)
draw_actor_sp(actor, 460, 0)
@actor = actor
@text = nil
self.visible = true
end
end
#--------------------------------------------------------------------------
# ● 設置敵人
# enemy : 要顯示名字與狀態之敵人
#--------------------------------------------------------------------------
def set_enemy(enemy)
self.contents = Bitmap.new(width - 32, height - 32) if self.contents.nil?
text = enemy.name.sub(/\\[Ff]\[([0-9]+)\]/) {""}
state_text = make_battler_state_text(enemy, 112, false)
if state_text != ""
text += " " + state_text
end
set_text(text, 1)
self.visible = true
end
#--------------------------------------------------------------------------
# ● 校正帮助窗口位置
#--------------------------------------------------------------------------
def set_pos(x,y,width,oy,index,column_max)
#光标坐标
cursor_width = width / column_max - 32
xx = index % column_max * (cursor_width + 32)
yy = index / column_max * 32 - oy
self.x=xx+x+150
self.y=yy+y+30
if self.x+self.width>640
self.x=640-self.width
end
if self.y+self.height>480
self.y=480-self.height
end
end
#------------------------------------------------------------------------
# ● 裝備名字顔色變化 接口
#------------------------------------------------------------------------
def draw_name_color(equipment)
return normal_color
end
#------------------------------------------------------------------------
# ● 自身身份確認
#------------------------------------------------------------------------
def original_help?
return false
end
end
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
#==============================================================================
# ■ Window_Item
#------------------------------------------------------------------------------
# 物品画面、战斗画面、显示浏览物品的窗口。
#==============================================================================
class Window_Item < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(0, 64-64, 640, 416+64)
@column_max = 2
refresh
self.index = 0
# 战斗中的情况下将窗口移至中央并将其半透明化
if $game_temp.in_battle
self.y = 64
self.height = 256
self.back_opacity = 160
end
end
#--------------------------------------------------------------------------
# ● 刷新帮助文本
#--------------------------------------------------------------------------
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_EquipLeft
#------------------------------------------------------------------------------
# 装备画面的、显示角色能力值变化的窗口。
#==============================================================================
class Window_EquipLeft < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
# actor : 角色
#--------------------------------------------------------------------------
def initialize(actor)
# -------------------
# 修改開始
super(0, 64-64, 272, 416+64)#★★★★★★★★★★★★★★★★★★★★
# 修改終了
# -------------------
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
end
end
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
#==============================================================================
# ■ Window_EquipRight
#------------------------------------------------------------------------------
# 装备画面、显示角色现在装备的物品的窗口。
#==============================================================================
class Window_EquipRight < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
# actor : 角色
#--------------------------------------------------------------------------
def initialize(actor)
# -------------------
# 修改開始
super(272, 64-64, 368, 256+64)#★★★★★★★★★★★★★★★★★★★★
# 修改終了
# -------------------
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● 刷新帮助文本
#--------------------------------------------------------------------------
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_EquipItem
#------------------------------------------------------------------------------
# 装备画面、显示浏览变更装备的候补物品的窗口。
#==============================================================================
class Window_EquipItem < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
# actor : 角色
# equip_type : 装备部位 (0~3)
#--------------------------------------------------------------------------
def initialize(actor, equip_type)
# -------------------
# 修改開始
super(272, 320, 368, 160)#★★★★★★★★★★★★★★★★★★★★
# 修改終了
# -------------------
@actor = actor
@equip_type = equip_type
@column_max = 1
refresh
self.active = false
self.index = -1
end
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_ShopCommand
#------------------------------------------------------------------------------
# 商店画面、选择要做的事的窗口
#==============================================================================
class Window_ShopCommand < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
# -------------------
# 修改開始
super(0, 64-64, 480, 64)#★★★★★★★★★★★★★★★★★
# 修改終了
# -------------------
self.contents = Bitmap.new(width - 32, height - 32)
@item_max = 3
@column_max = 3
@commands = ["买", "卖", "取消"]
refresh
self.index = 0
end
end
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
#========================================================================================================================
# ■ Window_ShopBuy
#------------------------------------------------------------------------------
# 商店画面、浏览显示可以购买的商品的窗口。
#==============================================================================
class Window_ShopBuy < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
# shop_goods : 商品
#--------------------------------------------------------------------------
def initialize(shop_goods)
# -------------------
# 修改開始
super(0, 128-64, 368, 352+64)#★★★★★★★★★★★★★★★★
# 修改終了
# -------------------
@shop_goods = shop_goods
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● 刷新帮助文本
#--------------------------------------------------------------------------
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_ShopSell
#------------------------------------------------------------------------------
# 商店画面、浏览显示可以卖掉的商品的窗口。
#==============================================================================
class Window_ShopSell < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
# -------------------
# 修改開始
super(0, 128-64, 640, 352+64)#★★★★★★★★★★★★★★★★
# 修改終了
# -------------------
@column_max = 2
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● 刷新帮助文本
#--------------------------------------------------------------------------
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_ShopNumber
#------------------------------------------------------------------------------
# 商店画面、输入买卖数量的窗口。
#==============================================================================
class Window_ShopNumber < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
# -------------------
# 修改開始
super(0, 128-64, 368, 352+64)#★★★★★★★★★★★★★★★★
# 修改終了
# -------------------
self.contents = Bitmap.new(width - 32, height - 32)
@item = nil
[url=home.php?mod=space&uid=25307]@Max[/url] = 1
@price = 0
[url=home.php?mod=space&uid=27178]@Number[/url] = 1
end
end
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
#==============================================================================
# ■ Window_ShopStatus
#------------------------------------------------------------------------------
# 商店画面、显示物品所持数与角色装备的窗口。
#==============================================================================
class Window_ShopStatus < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
# -------------------
# 修改開始
super(368, 128-64, 272, 352+64)#★★★★★★★★★★★★
# 修改終了
# -------------------
self.contents = Bitmap.new(width - 32, height - 32)
@item = nil
refresh
end
end
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
#==============================================================================
# ■ Scene_Equip
#------------------------------------------------------------------------------
# 处理装备画面的类。
#==============================================================================
class Scene_Equip
#--------------------------------------------------------------------------
# ● 刷新画面 (右侧窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_right
# -------------------
# 修改開始
if @right_window.item==nil
@help_window.visible=false
else
@help_window.visible=true
end
# 修改終了
# -------------------
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到菜单画面
$scene = Scene_Menu.new(2)
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 固定装备的情况下
if @actor.equip_fix?(@right_window.index)
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 激活物品窗口
@right_window.active = false
@item_window.active = true
@item_window.index = 0
return
end
# 按下 R 键的情况下
if Input.trigger?(Input::R)
# 演奏光标 SE
$game_system.se_play($data_system.cursor_se)
# 移至下一位角色
@actor_index += 1
@actor_index %= $game_party.actors.size
# 切换到别的装备画面
$scene = Scene_Equip.new(@actor_index, @right_window.index)
return
end
# 按下 L 键的情况下
if Input.trigger?(Input::L)
# 演奏光标 SE
$game_system.se_play($data_system.cursor_se)
# 移至上一位角色
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
# 切换到别的装备画面
$scene = Scene_Equip.new(@actor_index, @right_window.index)
return
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (物品窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_item
# -------------------
# 修改開始
if @item_window.item==nil
@help_window.visible=false
else
@help_window.visible=true
end
# 修改終了
# -------------------
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 激活右侧窗口
@right_window.active = true
@item_window.active = false
@item_window.index = -1
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 演奏装备 SE
$game_system.se_play($data_system.equip_se)
# 获取物品窗口现在选择的装备数据
item = @item_window.item
# 变更装备
@actor.equip(@right_window.index, item == nil ? 0 : item.id)
# 激活右侧窗口
@right_window.active = true
@item_window.active = false
@item_window.index = -1
# 再生成右侧窗口、物品窗口的内容
@right_window.refresh
@item_window.refresh
return
end
end
end
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
#========================================================================================================================
# ■ Scene_Battle (分割定义 3)
#------------------------------------------------------------------------------
# 处理战斗画面的类。
#========================================================================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● 刷新画面 (角色命令回合 : 选择特技)
#--------------------------------------------------------------------------
alias first_reupdate_phase3_skill_select update_phase3_skill_select
def update_phase3_skill_select
# -------------------
# 修改開始
@skill_window.help_window.visible = false#★★★★★★★★★★★★★
# 修改終了
# -------------------
first_reupdate_phase3_skill_select
end
#--------------------------------------------------------------------------
# ● 刷新画面 (角色命令回合 : 选择物品)
#--------------------------------------------------------------------------
alias first_reupdate_phase3_item_select update_phase3_item_select
def update_phase3_item_select
# -------------------
# 修改開始
@item_window.help_window.visible = false#★★★★★★★★★★★★
# 修改終了
# -------------------
first_reupdate_phase3_item_select
end
#--------------------------------------------------------------------------
# ● 开始选择特技
#--------------------------------------------------------------------------
def start_skill_select
@skill_window = Window_Skill.new(@active_battler)
@skill_window.help_window = Window_Help.new
@actor_command_window.active = false
@actor_command_window.visible = false
end
#--------------------------------------------------------------------------
# ● 选择特技结束
#--------------------------------------------------------------------------
alias first_update_end_skill_select end_skill_select
def end_skill_select
# -------------------
# 修改開始
@skill_window.help_window.visible = false#★★★★★★★★★★★★
# 修改終了
# -------------------
first_update_end_skill_select
end
#--------------------------------------------------------------------------
# ● 开始选择物品
#--------------------------------------------------------------------------
def start_item_select
# 生成物品窗口
@item_window = Window_Item.new
# 关联帮助窗口
# -------------------
# 修改開始
@item_window.help_window = Window_Help.new#★★★★★★★★★★★★
# 修改終了
# -------------------
# 无效化角色指令窗口
@actor_command_window.active = false
@actor_command_window.visible = false
end
#--------------------------------------------------------------------------
# ● 结束选择物品
#--------------------------------------------------------------------------
alias first_update_end_item_select end_item_select
def end_item_select
# -------------------
# 修改開始
@item_window.help_window.visible = false#★★★★★★★★★★★★
# 修改終了
# -------------------
first_update_end_item_select
end
end
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
#==============================================================================
# ■ Scene_Shop
#------------------------------------------------------------------------------
# 处理商店画面的类。
#==============================================================================
class Scene_Shop
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
# --------------------
# 衝突可能
def main
# 生成帮助窗口
# -------------------
# 修改開始
@help_window = Window_Help.new#★★★★★★★★★★★★★★★★
# 修改終了
# -------------------
# 生成指令窗口
@command_window = Window_ShopCommand.new
# 生成金钱窗口
@gold_window = Window_Gold.new
@gold_window.x = 480
# -------------------
# 修改開始
@gold_window.y = 64-64#★★★★★★★★★★★★★
# 修改終了
# -------------------
# 生成时间窗口
# -------------------
# 修改開始
@dummy_window = Window_Base.new(0, 128-64, 640, 352+64)#★★★★★★★★★★★★★
# 修改終了
# -------------------
# 生成购买窗口
@buy_window = Window_ShopBuy.new($game_temp.shop_goods)
@buy_window.active = false
@buy_window.visible = false
@buy_window.help_window = @help_window
# 生成卖出窗口
@sell_window = Window_ShopSell.new
@sell_window.active = false
@sell_window.visible = false
@sell_window.help_window = @help_window
# 生成数量输入窗口
@number_window = Window_ShopNumber.new
@number_window.active = false
@number_window.visible = false
# 生成状态窗口
@status_window = Window_ShopStatus.new
@status_window.visible = false
# 执行过渡
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果画面切换的话就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放窗口
@help_window.dispose
@command_window.dispose
@gold_window.dispose
@dummy_window.dispose
@buy_window.dispose
@sell_window.dispose
@number_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
# --------------------
# 衝突可能
def update
# 刷新窗口
@help_window.update
@command_window.update
@gold_window.update
@dummy_window.update
@buy_window.update
@sell_window.update
@number_window.update
@status_window.update
# 指令窗口激活的情况下: 调用 update_command
if @command_window.active
# -------------------
# 修改開始
@help_window.visible=false#★★★★★★★★★★★★★★★★
# 修改終了
# -------------------
update_command
return
end
# 购买窗口激活的情况下: 调用 update_buy
if @buy_window.active
# -------------------
# 修改開始
@help_window.visible=true#★★★★★★★★★★★★★★★★
if @buy_window.item==nil#★★★★★★★★★★★★★★★★
@help_window.visible=false#★★★★★★★★★★★★★★★★
end #★★★★★★★★★★★★★★★★
# 修改終了
# -------------------
update_buy
return
end
# 卖出窗口激活的情况下: 调用 update_sell
if @sell_window.active
# -------------------
# 修改開始
@help_window.visible=true#★★★★★★★★★★★★★★★★
if @sell_window.item==nil#★★★★★★★★★★★★★★★★
@help_window.visible=false#★★★★★★★★★★★★★★★★
end #★★★★★★★★★★★★★★★★
# 修改終了
# -------------------
update_sell
return
end
# 个数输入窗口激活的情况下: 调用 update_number
if @number_window.active
# -------------------
# 修改開始
@help_window.visible=false#★★★★★★★★★★★★★★★★
# 修改終了
# -------------------
update_number
return
end
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1