Project1
标题:
关于脚本里 备用物品窗口的修改
[打印本页]
作者:
bububinghe
时间:
2009-3-7 01:27
标题:
关于脚本里 备用物品窗口的修改
我想将此窗口修改为,横向5个格子,纵向2个格子,即10个格子的备选物品栏,
并自定义光标矩形的间距 和 行距,现修改脚本如下,但仍然存在很多问题。望高手给予解决。
问题描述,光标矩形菜单处,当物品多的时候下拉菜单到最低端光标矩形会消失。
#==============================================================================
# ■ Window_EquipItem
#------------------------------------------------------------------------------
# 装备画面、显示浏览变更装备的候补物品的窗口。
#==============================================================================
class Window_EquipItem < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
# actor : 角色
# equip_type : 装备部位 (0~3)
#--------------------------------------------------------------------------
def initialize(actor, equip_type)
# super(304, 57, 222, 20)
super(197, 249, 250,210)#前两项为备选装备窗口的XY坐标,改大则向下。
#super(100, 156, 640, 400)
# super(0, 256, 640, 224)
self.opacity = 200#新加
@actor = actor
@equip_type = equip_type
# @item_max = 10#8个项目
@column_max = 5#将项目选框分为2栏
refresh
# bitmap = Bitmap.new("Graphics/pictures/装备替换的物品栏.png")
# src_rect=Rect.new(180,50,bitmap.width,bitmap.height)
#self.contents.blt(0,0,bitmap,src_rect)
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# ● 获取物品
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# 添加可以装备的武器
if @equip_type == 0
weapon_set = $data_classes[@actor.class_id].weapon_set
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
@data.push($data_weapons[i])
end
end
end
# 添加可以装备的防具
if @equip_type != 0
armor_set = $data_classes[@actor.class_id].armor_set
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0 and armor_set.include?(i)
if $data_armors[i].kind == @equip_type-1
@data.push($data_armors[i])
end
end
end
end
# 添加空白
@data.push(nil)
# 生成位图、描绘全部项目
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max-1
draw_item(i)
end
end
#--------------------------------------------------------------------------
# ● 项目的描绘
# index : 项目符号
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
x = 4 + index % 5 * 44#光标移动的横向幅度#5同下面的5控制左右5步移动
# x = 4 + index# % 2 * 30#光标移动的横向幅度,变大是加宽间距
#y = index #/ 2 * 54#光标移动的纵向幅度
y = index / 5 * 54
#x = 4+ index % 2 * (288 + 32)
# y = index / 2 * 32
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
# self.contents.font.color = black_color
self.contents.font.color = normal_color
# self.contents.draw_text(x + 28, 50, 212, 32, item.name, 0)
#self.contents.draw_text(x + 240,100, 16, 32, ":", 1)
#self.contents.draw_text(x + 256, 150, 24, 32, number.to_s, 2)
end
#--------------------------------------------------------------------------
# ● 刷新帮助文本
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# ● 更新光标举行
#--------------------------------------------------------------------------
def update_cursor_rect
# 光标位置不满 0 的情况下
if @index < 0
self.cursor_rect.empty
return
end
# 获取当前的行
row = @index / @column_max
# 当前行被显示开头行前面的情况下
if row < self.top_row
# 从当前行向开头行滚动
self.top_row = row
end
# 当前行被显示末尾行之后的情况下
if row > self.top_row + (self.page_row_max - 1)
# 从当前行向末尾滚动
self.top_row = row - (self.page_row_max - 1)
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
x = 4 + index % 5 * 44#光标移动的横向幅度#5同下面的5控制左右5步移动
# x = 4 + index# % 2 * 30#光标移动的横向幅度,变大是加宽间距
#y = index #/ 2 * 54#光标移动的纵向幅度
y = index / 5 * 54
self.cursor_rect.set(x, y, 40, 40)#后两项为光标矩形的范围
# self.cursor_rect.set(x, y, 64, 32)
end
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
复制代码
作者:
cinderelmini
时间:
2009-3-7 03:26
好象光标矩形选择项目时到了最底端的话会自动滚动一下所有项目,以不让光标矩形消失的说。。。
(这里纯属怀疑,是不是和“row_max * 32”有关呢,试一下改动里面的“32”看看吧。明尼的脚本知识也不是很强,纯粹是靠试着该动学来的,所以LZ可以试试看吧。。)
作者:
bububinghe
时间:
2009-3-7 23:58
谢谢楼上热心解答,已经解决了,不过不是你说的那个row_max,而是需要修改一个算式
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1