赞 | 10 |
VIP | 0 |
好人卡 | 0 |
积分 | 40 |
经验 | 1739 |
最后登录 | 2024-10-30 |
在线时间 | 604 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 4007
- 在线时间
- 604 小时
- 注册时间
- 2017-4-21
- 帖子
- 229
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 阮声悠悠 于 2019-3-7 23:33 编辑
找到了一个更合适的解决方案,所以对我来说这张帖子的问题已经不重要了。
这是一个罗列道具的脚本。罗列的数组在88行
我希望窗口的第一行罗列物品ID为 1, 2, 3 的图标和名称
但是我只能描绘出数组的第一个,第二个和第三个不知道怎样才能描绘出来……
这是第一个想请教的……
然后,bitmap = RPG::Cache.icon($data_items[@data[index][0]].icon_name)
这句脚本是显示物品的图标,但我不知道怎样让这个图标变成灰色,或者说半透明(也就是未获得这个道具时候的状态)
这是第二个想请教的……
#$scene = Scene_xgqBhuoZhuoTuJian.new打开脚本 class Scene_xgqBhuoZhuoTuJian #-------------------------------------------------------------------------- # ● 主处理 #-------------------------------------------------------------------------- def main screen = Spriteset_Map.new # 生成窗口 @tujian_window = Window_BhuoZhuoTuJian.new @tujian_window.z=1000 # 生成目标窗口 (设置为不可见・不活动) @target_window = Window_Target.new @target_window.visible = false @target_window.active = false @target_window.z=1896 # 执行过渡 Graphics.transition # 主循环 loop do # 刷新游戏画面 Graphics.update # 刷新输入信息 Input.update # 刷新画面 update # 如果画面切换的话就中断循环 if $scene != self break end end # 准备过渡 Graphics.freeze # 释放窗口 screen.dispose @tujian_window.dispose @target_window.dispose end #-------------------------------------------------------------------------- # ● 刷新画面 #-------------------------------------------------------------------------- def update # 刷新窗口 @tujian_window.update @target_window.update # 图鉴窗口被激活的情况下: 调用 update_tujian if @tujian_window.active update_tujian return end end #-------------------------------------------------------------------------- # ● 刷新画面 (特技窗口被激活的情况下) #-------------------------------------------------------------------------- def update_tujian # 按下 B 键的情况下 if Input.trigger?(Input::B) # 演奏取消 SE $game_system.se_play($data_system.cancel_se) # 切换到地图 $scene = Scene_Map.new return end end end class Window_BhuoZhuoTuJian < Window_Selectable #-------------------------------------------------------------------------- # ● 初始化对像 #-------------------------------------------------------------------------- def initialize super(0, 0, 640, 480) @column_max = 1 refresh self.index = 0 end #-------------------------------------------------------------------------- # ● 刷新 #-------------------------------------------------------------------------- def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [ [ 1, 2, 3, 0, 0],#第一行出现的物品ID,如有有0就不出现 [ 4, 5, 6, 0, 0], [ 7, 8, 9, 0, 0], [ 58, 59, 0, 0, 0], [ 115, 0, 0, 0, 0], [ 236, 237, 106, 107, 0] ] # 如果项目数不是 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) skill = @data[index] self.contents.font.color = normal_color x = 4 y = index * 32 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($data_items[@data[index][0]].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, 204, 32, $data_items[@data[index][0]].name, 0) end end
#$scene = Scene_xgqBhuoZhuoTuJian.new打开脚本
class Scene_xgqBhuoZhuoTuJian
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
screen = Spriteset_Map.new
# 生成窗口
@tujian_window = Window_BhuoZhuoTuJian.new
@tujian_window.z=1000
# 生成目标窗口 (设置为不可见・不活动)
@target_window = Window_Target.new
@target_window.visible = false
@target_window.active = false
@target_window.z=1896
# 执行过渡
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果画面切换的话就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放窗口
screen.dispose
@tujian_window.dispose
@target_window.dispose
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 刷新窗口
@tujian_window.update
@target_window.update
# 图鉴窗口被激活的情况下: 调用 update_tujian
if @tujian_window.active
update_tujian
return
end
end
#--------------------------------------------------------------------------
# ● 刷新画面 (特技窗口被激活的情况下)
#--------------------------------------------------------------------------
def update_tujian
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 切换到地图
$scene = Scene_Map.new
return
end
end
end
class Window_BhuoZhuoTuJian < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 480)
@column_max = 1
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = [
[ 1, 2, 3, 0, 0],#第一行出现的物品ID,如有有0就不出现
[ 4, 5, 6, 0, 0],
[ 7, 8, 9, 0, 0],
[ 58, 59, 0, 0, 0],
[ 115, 0, 0, 0, 0],
[ 236, 237, 106, 107, 0]
]
# 如果项目数不是 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)
skill = @data[index]
self.contents.font.color = normal_color
x = 4
y = index * 32
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($data_items[@data[index][0]].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, 204, 32, $data_items[@data[index][0]].name, 0)
end
end
|
|