Project1
标题: 請教必須裝備物件的問題。 [打印本页]
作者: 妖精蕾贝卡 时间: 2015-7-9 22:51
标题: 請教必須裝備物件的問題。
我想問問怎麼讓裝備的位置必須擁有一件物件。
簡單的說,就是不允許裝備位置沒有裝備的情況。
請問這個效果該怎麼實現。
作者: kuerlulu 时间: 2015-7-10 09:59
Window_EquipItem 58 行 的"添加空白" 是用来卸下装备的, 注释掉试试。
作者: 妖精蕾贝卡 时间: 2015-7-10 19:55
kuerlulu 发表于 2015-7-10 09:59
Window_EquipItem 58 行 的"添加空白" 是用来卸下装备的, 注释掉试试。
這個方法一注釋就會出錯······
作者: 蝉岭Cicada 时间: 2015-7-10 23:26
本帖最后由 蝉岭Cicada 于 2015-7-10 23:29 编辑
这样子的?
5.times{|t| return if @right_window.instance_variable_get(:@data)[t] == nil}
5.times{|t| return if @right_window.instance_variable_get(:@data)[t] == nil}
没有装备的话,不能返回
148行
作者: 妖精蕾贝卡 时间: 2015-7-10 23:51
蝉岭Cicada 发表于 2015-7-10 23:26
这样子的?
5.times{|t| return if @right_window.instance_variable_get(:@data)[t] == nil}
[/pre]
測試可行,但感覺效果有些奇怪。
如果可以追加一下提示語的話就更好。
另外追問一下,如果只想指定某個部位必須有裝備
該怎麼修改原句?
作者: 蝉岭Cicada 时间: 2015-7-11 09:10
本帖最后由 蝉岭Cicada 于 2015-7-11 09:39 编辑
妖精蕾贝卡 发表于 2015-7-10 23:51
測試可行,但感覺效果有些奇怪。
如果可以追加一下提示語的話就更好。
另外追問一下,如果只想指定某個部 ...
解释一下吧{:2_287:}
5.times{|t| return if @right_window.instance_variable_get(:@data)[t] == nil}
5.times #=>五次
{|t| } #=>迭代器
return #=>该行以下不执行
@right_window #=>Window_EquipRight的实例
instance_variable_get #=>取得实例变量(目的是取得 Window_EquipRight 中的 @data)
@right_window.instance_variable_get(:@data) #=>获得 Window_EquipRight 中的 @data(是个数组)
@right_window.instance_variable_get(:@data)[t] #=>调用数组(@data)的元素(t 为 0 到 4,迭代器迭代 5 次,依次返回 武器数据(0)、盾数据(1)、头数据(2)、身体数据(3)、装饰品数据(4))
@right_window.instance_variable_get(:@data)[t] == nil #=>如果 0 到 5 其中一项未装备则返回 true,即没有全部装备
return if @right_window.instance_variable_get(:@data)[t] == nil #=>如果没有全部装备,则该行以下不执行,即不执行 $scene = Scene_Menu.new(2),即不返回菜单
5.times{|t| return if @right_window.instance_variable_get(:@data)[t] == nil} #=>总的来说就是,五个装备,从上到下依次迭代,如果有没装备的就不返回菜单
5.times{|t| return if @right_window.instance_variable_get(:@data)[t] == nil}
5.times #=>五次
{|t| } #=>迭代器
return #=>该行以下不执行
@right_window #=>Window_EquipRight的实例
instance_variable_get #=>取得实例变量(目的是取得 Window_EquipRight 中的 @data)
@right_window.instance_variable_get(:@data) #=>获得 Window_EquipRight 中的 @data(是个数组)
@right_window.instance_variable_get(:@data)[t] #=>调用数组(@data)的元素(t 为 0 到 4,迭代器迭代 5 次,依次返回 武器数据(0)、盾数据(1)、头数据(2)、身体数据(3)、装饰品数据(4))
@right_window.instance_variable_get(:@data)[t] == nil #=>如果 0 到 5 其中一项未装备则返回 true,即没有全部装备
return if @right_window.instance_variable_get(:@data)[t] == nil #=>如果没有全部装备,则该行以下不执行,即不执行 $scene = Scene_Menu.new(2),即不返回菜单
5.times{|t| return if @right_window.instance_variable_get(:@data)[t] == nil} #=>总的来说就是,五个装备,从上到下依次迭代,如果有没装备的就不返回菜单
提示语,这样子如何
在def main里插入这段
@alert_window = Window_Base.new(0, 0, 640, 64)
@alert_window.contents = Bitmap.new(640 - 32, 64 - 32)
@alert_window.opacity = 0
@alert_window.contents.font.color = Color.new(255,128,128)
@alert_window.contents.draw_text(0, 0, 640-32, 34, "请装备!", 2)
@alert_window.visible = false
@alert_window = Window_Base.new(0, 0, 640, 64)
@alert_window.contents = Bitmap.new(640 - 32, 64 - 32)
@alert_window.opacity = 0
@alert_window.contents.font.color = Color.new(255,128,128)
@alert_window.contents.draw_text(0, 0, 640-32, 34, "请装备!", 2)
@alert_window.visible = false
在def update_right里插入这段
if @right_window.instance_variable_get(:@data)[0] == nil
@alert_window.visible = true
return
end
@alert_window.visible = false
if @right_window.instance_variable_get(:@data)[0] == nil
@alert_window.visible = true
return
end
@alert_window.visible = false
效果!!
指定的话,以下 5 种情况,自己配合用吧,用 && 或 ||
return if @right_window.instance_variable_get(:@data)[0] == nil 武器数据
return if @right_window.instance_variable_get(:@data)[1] == nil 盾数据
return if @right_window.instance_variable_get(:@data)[2] == nil 头数据
return if @right_window.instance_variable_get(:@data)[3] == nil 身体数据
return if @right_window.instance_variable_get(:@data)[4] == nil 装饰品数据
组合示范
return if @right_window.instance_variable_get(:@data)[2] == nil && @right_window.instance_variable_get(:@data)[4] == nil 如果 头数据 和 装饰品数据 是空的则不返回
return if @right_window.instance_variable_get(:@data)[0] == nil 武器数据
return if @right_window.instance_variable_get(:@data)[1] == nil 盾数据
return if @right_window.instance_variable_get(:@data)[2] == nil 头数据
return if @right_window.instance_variable_get(:@data)[3] == nil 身体数据
return if @right_window.instance_variable_get(:@data)[4] == nil 装饰品数据
组合示范
return if @right_window.instance_variable_get(:@data)[2] == nil && @right_window.instance_variable_get(:@data)[4] == nil 如果 头数据 和 装饰品数据 是空的则不返回
作者: 妖精蕾贝卡 时间: 2015-7-11 15:47
蝉岭Cicada 发表于 2015-7-11 09:10
解释一下吧
5.times{|t| return if @right_window.instance_variable_get(:@data)[t] == nil}
...
十分感謝您的說明和指導。
但還有一些瑕疵,提示文字一直顯示。
有無辦法等多少幀后消除掉?
作者: 蝉岭Cicada 时间: 2015-7-11 16:07
本帖最后由 蝉岭Cicada 于 2015-7-11 16:08 编辑
妖精蕾贝卡 发表于 2015-7-11 15:47
十分感謝您的說明和指導。
但還有一些瑕疵,提示文字一直顯示。
有無辦法等多少幀后消除掉? ...
疏忽了
这样子看看
@alert_window.visible = false
@alert_window.visible = false
作者: 妖精蕾贝卡 时间: 2015-7-11 16:08
蝉岭Cicada 发表于 2015-7-11 16:07
疏忽了
这样子看看
@alert_window.visible = false
可以了感謝。
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |