Project1
标题: 怎么在Window_Skill,添加背景图 [打印本页]
作者: 契约师Vi 时间: 2023-3-21 23:19
标题: 怎么在Window_Skill,添加背景图
怎么在Window_Skill,添加背景图
作者: 纯属小虫 时间: 2023-3-21 23:44
本帖最后由 纯属小虫 于 2023-3-21 23:46 编辑
在 Window_Skill 类里的refresh添加,或者给refresh个别名
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 0...@actor.skills.size
skill = $data_skills[@actor.skills[i]]
if skill != nil
@data.push(skill)
end
end
# 如果项目数不是 0 就生成位图、重新描绘全部项目
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
# 如果Window_Skill 没有被魔改的话,应该是加在这里了=====================
rect = Rect.new(0, 0, self.width, self.height)
bitmap = RPG::Cache.picture("图片文件夹下的要描绘图片的名字")
self.contents.blt(0, 0, bitmap, rect)
# ======================================================
for i in 0...@item_max
draw_item(i)
end
end
end
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 0...@actor.skills.size
skill = $data_skills[@actor.skills[i]]
if skill != nil
@data.push(skill)
end
end
# 如果项目数不是 0 就生成位图、重新描绘全部项目
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
# 如果Window_Skill 没有被魔改的话,应该是加在这里了=====================
rect = Rect.new(0, 0, self.width, self.height)
bitmap = RPG::Cache.picture("图片文件夹下的要描绘图片的名字")
self.contents.blt(0, 0, bitmap, rect)
# ======================================================
for i in 0...@item_max
draw_item(i)
end
end
end
但这个可能会有个BUG,就是当角色没有技能的时候,就不会描绘背景图片了
作者: 契约师Vi 时间: 2023-3-23 10:27
就是這樣。
作者: 纯属小虫 时间: 2023-3-23 22:39
本帖最后由 纯属小虫 于 2023-3-30 10:34 编辑
重写了一个,插入至main之前,自己试了能用。
但是背景图片还是添加一个透明度比较合适,否则有可能看不清字。
- class Window_Skill_Back < Window_Base
- def initialize
- super(0, 128, 640, 352)
- self.opacity = 0 # 显示图片的窗口的透明度
- # 战斗中的情况下将窗口移至中央
- if $game_temp.in_battle
- self.y = 64
- self.height = 256
- self.back_opacity = 160
- end
- # 初始化contenes
- self.contents = Bitmap.new(width - 32, height - 32)
- self.contents.clear
- rect = Rect.new(0, 0, self.width, self.height)
- bitmap = RPG::Cache.picture("001-Grassland01.jpg")
- self.contents.blt(0, 0, bitmap, rect)
- end
- end
- class Window_Skill < Window_Selectable
- # 添加新的背景窗口
- alias initialize_skill_back initialize
- def initialize(actor)
- @back_window = Window_Skill_Back.new
- initialize_skill_back(actor)
- end
- # 释放背景窗口
- alias dispose_skill_back dispose
- def dispose
- @back_window.dispose
- dispose_skill_back
- end
- # 添加隐藏窗口的同步
- alias visible_skioll_back visible=
- def visible=(bool)
- @back_window.visible= bool
- visible_skioll_back(bool)
- end
- end
复制代码
作者: 契约师Vi 时间: 2023-3-26 23:20
- #==============================================================================
- # ■ Window_Item
- #------------------------------------------------------------------------------
- # 物品画面、战斗画面、显示浏览物品的窗口。
- #==============================================================================
- class Window_Item < Window_Selectable
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize
- #self.windowskin = RPG::Cache.windowskin("skill")
- if $game_temp.in_battle == true#处于战斗中的话
- super(10, 128, 640+364,416+32)
- self.z=9999
- # 战斗中的情况下将窗口移至中央并将其半透明化
- #self.windowskin = RPG::Cache.windowskin("skill")
- @column_max = 2
- $game_switches[13] = true
- else
- super(0, 128-64, 640+384,416+32+64)
- @column_max = 2
- $game_switches[13] = false
- end
- refresh
- self.index = 0
- @help3 = Sprite.new
- @help3.bitmap = Bitmap.new("Graphics/Windowskins/BG-Z.png")
- @help3.y = -144
- @help3.z=9999
- if $game_temp.in_battle
- self.y = 64
- self.height = 255+99#高度设置
- self.opacity = $game_temp.test_opacity
- self.z=9999
- #self.back_opacity = $game_temp.test_opacity
- end
- end
- #--------------------------------------------------------------------------
- # ● 获取物品
- #--------------------------------------------------------------------------
- def item
- return @data[self.index]
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- if self.contents != nil
- self.contents.dispose
- self.contents = nil
- @help3.dispose
- end
- @data = []
- # 添加物品
- for i in 1...$data_items.size
- if $game_party.item_number(i) > 0
- @data.push($data_items[i])
- end
- end
- # 在战斗中以外添加武器、防具
- unless $game_temp.in_battle
- for i in 1...$data_weapons.size
- if $game_party.weapon_number(i) > 0
- @data.push($data_weapons[i])
- end
- end
- for i in 1...$data_armors.size
- if $game_party.armor_number(i) > 0
- @data.push($data_armors[i])
- end
- end
- end
- # 如果项目数不是 0 就生成位图、重新描绘全部项目
- @item_max = @data.size
- if @item_max > 0
- self.contents = Bitmap.new(width - 32, row_max * 32)
- for i in 0...@item_max
- draw_item(i)
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 描绘项目
- # index : 项目编号
- #--------------------------------------------------------------------------
- def draw_item(index)
- item = @data[index]
- case item
- when RPG::Item
- number = $game_party.item_number(item.id)
- when RPG::Weapon
- number = $game_party.weapon_number(item.id)
- when RPG::Armor
- number = $game_party.armor_number(item.id)
- end
- if item.is_a?(RPG::Item) and
- $game_party.item_can_use?(item.id)
- self.contents.font.color = normal_color
- self.contents.font.size = 18
- else
- self.contents.font.color = disabled_color
- end
- if $game_switches[13] == true
- x = 4 + index %2 * (480 + 32)
- y = index / 2 * 32
- else
- x = 4 + index %2 * (480 + 32)
- y = index / 2* 32
- end
-
- rect = Rect.new(x, y, self.width / @column_max - 32, 32)
- self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
- bitmap = RPG::Cache.icon(item.icon_name)
- opacity = self.contents.font.color == normal_color ? 255 : 128
- self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
- self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)#物品名
-
- if $game_switches[13] == true
- self.contents.draw_text(x + 240+110, y, 16+110, 32, ":", 1)#“:”符号标
- self.contents.draw_text(x + 256+80, y, 24+80, 32, number.to_s, 2)#消耗数
- else
- self.contents.draw_text(x + 240+120, y, 16+120, 32, ":", 1)#“:”符号标
- self.contents.draw_text(x + 256+90, y, 24+90, 32, number.to_s, 2)#消耗数
- end
- end
- #--------------------------------------------------------------------------
- # ● 刷新帮助文本
- #--------------------------------------------------------------------------
- def update_help
- @help_window.set_text(self.item == nil ? "" : self.item.description)
- #====================
- def dispose
- super
- if $game_switches[13] == true
- @help3.dispose
- end
- end
- #=====================
- end
- end
复制代码
唯一缺点就是,在选择敌人,或者选择己方单体,方框没有去掉
作者: 契约师Vi 时间: 2023-3-31 16:49
还是出问题
作者: 纯属小虫 时间: 2023-4-3 22:44
我自己用原始工程测试了一遍,没有发现问题。
你有使用跟技能窗口有关的脚本mod吗? 字色、分类等?
链接:https://pan.baidu.com/s/1qpmmLpTqJlRVss0B7DDb4A?pwd=6666
提取码:6666
--来自百度网盘超级会员V6的分享
(附件又无法上传了,可恶啊)
作者: 契约师Vi 时间: 2023-4-6 22:47
本帖最后由 契约师Vi 于 2023-4-6 22:49 编辑
class Window_Item_Back < Window_Base
def initialize
super(0, 128, 640, 352)
self.opacity = 0 # 显示图片的窗口的透明度
# 战斗中的情况下将窗口移至中央
if $game_temp.in_battle
self.y = 64
self.height = 256
self.back_opacity = 160
end
# 初始化contenes
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.clear
rect = Rect.new(0, 0, self.width, self.height)
bitmap = RPG::Cache.picture("001-Grassland01.jpg")
self.contents.blt(0, 0, bitmap, rect)
end
end
class Window_Item < Window_Selectable
# 添加新的背景窗口
alias initialize_Item_back initialize
def initialize
@back_window = Window_Item_Back.new
initialize_Item_back
end
# 释放背景窗口
alias dispose_skill_back dispose
def dispose
@back_window.dispose
dispose_skill_back
end
# 添加隐藏窗口的同步
#alias visible_itemo_back visible=
#def visible=(bool)
# @back_window.visible= bool
# visible_itemo_back(bool)
#end
end
class Window_Item_Back < Window_Base
def initialize
super(0, 128, 640, 352)
self.opacity = 0 # 显示图片的窗口的透明度
# 战斗中的情况下将窗口移至中央
if $game_temp.in_battle
self.y = 64
self.height = 256
self.back_opacity = 160
end
# 初始化contenes
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.clear
rect = Rect.new(0, 0, self.width, self.height)
bitmap = RPG::Cache.picture("001-Grassland01.jpg")
self.contents.blt(0, 0, bitmap, rect)
end
end
class Window_Item < Window_Selectable
# 添加新的背景窗口
alias initialize_Item_back initialize
def initialize
@back_window = Window_Item_Back.new
initialize_Item_back
end
# 释放背景窗口
alias dispose_skill_back dispose
def dispose
@back_window.dispose
dispose_skill_back
end
# 添加隐藏窗口的同步
#alias visible_itemo_back visible=
#def visible=(bool)
# @back_window.visible= bool
# visible_itemo_back(bool)
#end
end
已解决,这是我仿写的Item
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |