Re: [問題] 第二配件裝備及資訊顯示問題
看板RPGMaker (RPG製作大師 - RPG Maker)作者bill (太極狂龍)時間15年前 (2010/01/07 03:03)推噓1(1推 0噓 0→)留言1則, 1人參與討論串2/2 (看更多)
※ 引述《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
推
01/08 01:12, , 1F
01/08 01:12, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
RPGMaker 近期熱門文章
PTT遊戲區 即時熱門文章