Project1
标题:
如何添加“卸下装备”的字样?
[打印本页]
作者:
无双修罗一闪
时间:
2008-9-14 19:00
标题:
如何添加“卸下装备”的字样?
就是在装备栏中,当你想卸下武器时,在下方的装备物品栏(Window_EquipItem)中空白处显示该字样。
我曾经试过:
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
when nil
self.contents.font.size = 18
draw_text_normal(x + 32, y, 184, 32, "卸下装备", 0)
return
end
但没显示出来,谁能指教一下。 [LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
黑鏻
时间:
2008-9-14 19:25
使用这个
http://rpg.blue/upload_program/files/菜单_101592122.rar
看里面的装备部分,有缺下装备功能~~~虽然与LZ所说不同
作者:
无双修罗一闪
时间:
2008-9-14 20:47
请问在哪一段,我找了半天没找到.
作者:
黑鏻
时间:
2008-9-14 20:52
搞错了,不过里面的装备界面就可以啊~~~抱歉,我脑筋突然死了~~
作者:
无双修罗一闪
时间:
2008-9-14 20:55
没关系
作者:
IamI
时间:
2008-9-14 20:55
即插脚本
#==============================================================================
# ■ Window_EquipItem
#------------------------------------------------------------------------------
# 装备画面、显示浏览变更装备的候补物品的窗口。
#==============================================================================
class Window_EquipItem < Window_Selectable
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
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
draw_item(i)
end
end
#--------------------------------------------------------------------------
# ● 项目的描绘
# index : 项目符号
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
x = 4 + index % 2 * (288 + 32)
y = index / 2 * 32
if item == nil
self.contents.font.color = normal_color
self.contents.draw_text(x + 22, y, 212, 32, "[卸下装备]", 0)
return
end
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 = normal_color
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
end
end
复制代码
之所以要修改refresh请注意最后那个for的异同 [LINE]1,#dddddd[/LINE]
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者:
无双修罗一闪
时间:
2008-9-14 21:10
哦,原来是这样添加啊,我还有一个问题不解,就是
为什么要把 for i in 0...@item_max 后面那个 -1 给去掉?望
LS能给点解答。
作者:
IamI
时间:
2008-9-14 21:14
为什么啊,你看那个draw_item对index采取完全信任制度(不做任何检查)
这是为什么?原因很简单:
看refresh的这一段(最后面)
# 添加空白
@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
复制代码
在data里面冲进了一个nil,并且把selectable的项目数也设置成了包含nil的数量,Bitmap也设置了,
但是那个-1恰恰河蟹掉了nil(卸下装备)!!
换言之,“卸下装备”完全没有经过draw_item,直接被跳过了!
作者:
无双修罗一闪
时间:
2008-9-14 21:24
原来如此,我明白了,多谢IamI!
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1