作者bill (太极狂龙)
看板RPGMaker
标题Re: [问题] 第二配件装备及资讯显示问题
时间Thu Jan 7 03:03:02 2010
※ 引述《yinsheng (总是被忽略...)》之铭言:
: 想增加第二装饰品
: 所以用了板上bill大1709篇的RGSS修改内容
: 然後又用RPG教学站ritud大提供的商店画面改造
: 进入游戏测试後却发现
: 假设身上装了一个力戒+15力量 还剩一个饰品空格
: 这时要到商店再买一个力戒 资讯显示上却不会有任何的增加
: 想请问要如何修改RGSS让商店资讯显示能够判断我有两个饰品
: 好能够正确显示我打算装同样物品时的增加数值
我改写了ritud大的商店画面改造脚本
效果预览
http://imgur.com/hNZIV.jpg
可以看到游标正停在商店中的力量戒指上
队员「拜伦」装备的一号饰品是「力量戒指」,二号饰品是「防护戒指」
而他的「力量」栏位後的两个数字分别是「增加0」和「增加15」
「灵巧」栏位後的两个数字分别是「增加0」和「减少15」
(一号饰品) (二号饰品)
就表示说,如果你买了商店中的力量戒指把他的一号饰品替换掉
他的力量和灵巧都不会变动
而如果是把二号饰品替换掉
则他的力量会增加15,灵巧会减少15
使用时请先将旧版的脚本删除
然後贴上下列脚本:
#==============================================================================
# ■ Window_ShopStatus
#------------------------------------------------------------------------------
# 商店画面、显示物品所持数与角色装备的窗口。
#==============================================================================
class Window_ShopStatus < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(368, 128, 272, 352)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.size = 16
@item = nil
refresh
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
if @item == nil
return
end
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
self.contents.font.color = system_color
self.contents.draw_text(4, 0, 200, 32, "所持数")
self.contents.font.color = normal_color
self.contents.draw_text(204, 0, 32, 32, number.to_s, 2)
if @item.is_a?(RPG::Item)
return
end
for i in 0...$game_party.actors.size
# 获取角色
actor = $game_party.actors[i]
# 可以装备为普通文字颜色、不能装备设置为无效文字颜色
if actor.equippable?(@item)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
# 描绘角色名字
j = 70
self.contents.draw_text(0, 32 + j * i, 84, 32, actor.name)
i += 1
x = -16
if @item.is_a?(RPG::Weapon)
self.contents.draw_text(80*0, x+j * i, 112, 32,"攻击",0)
self.contents.draw_text(80*1, x+j * i, 112, 32,"力量",0)
self.contents.draw_text(80*2, x+j * i, 112, 32,"灵巧",0)
self.contents.draw_text(80*0, x+j * i+16, 112, 32,"速度",0)
self.contents.draw_text(80*1, x+j * i+16, 112, 32,"魔力",0)
self.contents.draw_text(80*2, x+j * i+16, 112, 32,"防御",0)
else
self.contents.draw_text(80*0, x+j * i, 112, 32,"力量",0)
self.contents.draw_text(80*1, x+j * i, 112, 32,"灵巧",0)
self.contents.draw_text(80*2, x+j * i, 112, 32,"速度",0)
self.contents.draw_text(80*0, x+j * i+16, 112, 32,"魔力",0)
self.contents.draw_text(80*1, x+j * i+16, 112, 32,"物防",0)
self.contents.draw_text(80*2, x+j * i+16, 112, 32,"魔防",0)
end
max = 0
# 获取当前的装备品
if @item.is_a?(RPG::Weapon)
item1 = $data_weapons[actor.weapon_id]
elsif @item.kind == 0
item1 = $data_armors[actor.armor1_id]
elsif @item.kind == 1
item1 = $data_armors[actor.armor2_id]
elsif @item.kind == 2
item1 = $data_armors[actor.armor3_id]
else
item1 = $data_armors[actor.armor4_id]
max = 1
end
t = 0
while t <= max
if t == 1
item1 = $data_armors[actor.armor5_id]
end
# 可以装备的情况
#if actor.equippable?(@item)
# 武器的情况
str1 = item1 != nil ? item1.str_plus : 0
str2 = @item != nil ? @item.str_plus : 0
dex1 = item1 != nil ? item1.dex_plus : 0
dex2 = @item != nil ? @item.dex_plus : 0
agi1 = item1 != nil ? item1.agi_plus : 0
agi2 = @item != nil ? @item.agi_plus : 0
int1 = item1 != nil ? item1.int_plus : 0
int2 = @item != nil ? @item.int_plus : 0
pdef1 = item1 != nil ? item1.pdef : 0
pdef2 = @item != nil ? @item.pdef : 0
mdef1 = item1 != nil ? item1.mdef : 0
mdef2 = @item != nil ? @item.mdef : 0
a = []
if @item.is_a?(RPG::Weapon)
atk1 = item1 != nil ? item1.atk : 0
atk2 = @item != nil ? @item.atk : 0
a[0] = atk2 - atk1
a[1] = str2 - str1
a[2] = dex2 - dex1
a[3] = agi2 - agi1
a[4] = int2 - int1
a[5] = pdef2 - pdef1 + mdef2 - mdef1
else
a[0] = str2 - str1
a[1] = dex2 - dex1
a[2] = agi2 - agi1
a[3] = int2 - int1
a[4] = pdef2 - pdef1
a[5] = mdef2 - mdef1
end
#---------------------------------------------------------------------
q=40-10
ym = -16
for k in 0..5
drawdata(80*(k%3)+q+t*22, ym+j*i+16*(k/3), 32/(max+1),32, a[k], max)
end
#---------------------------------------------------------------------
self.contents.font.color = Color.new(159,251,162,255)
self.contents.font.color = normal_color
# 描绘物品
if item1 != nil
x = 86 + 80*t
y = 32 + j * (i-1)
bitmap = RPG::Cache.icon(item1.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y , bitmap, Rect.new(0, 0, 32, 32), opacity)
self.contents.draw_text(x + 26, y, 96/(max+1), 32, item1.name)
end
t +=1
end
i -= 1
end
end
#--------------------------------------------------------------------------
# ● 设置物品
# item : 新的物品
#--------------------------------------------------------------------------
def item=(item)
if @item != item
@item = item
refresh
end
end
#--------------------------------------------------------------------------
# ●
#
#--------------------------------------------------------------------------
def drawdata(dx, dy, dw, dh, dd, max)
if dd >=0
self.contents.font.color = Color.new(159,251,162,255)
self.contents.draw_text(dx, dy, dw, dh,"↑",0)
else
self.contents.font.color = Color.new(255,0,0,255)
self.contents.draw_text(dx, dy, dw, dh,"↓",0)
end
self.contents.font.color = Color.new(159,251,162,255)
self.contents.draw_text(dx+12, dy, dw, dh, dd.abs.to_s,0)
end
end
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.124.105.92
1F:推 yinsheng:太感谢了 我竟然没想到可以弄成两组来显示 01/08 01:12