查看: 2370|回复: 8

[已经解决] 請教必須裝備物件的問題。

[复制链接]
梦石
0
星屑
50
在线时间
226 小时
注册时间
2015-5-8
回帖
295
发表于 2015-7-9 22:51:11 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
我想問問怎麼讓裝備的位置必須擁有一件物件。
簡單的說,就是不允許裝備位置沒有裝備的情況。
請問這個效果該怎麼實現。

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

我是妖精蕾貝卡,沉默少言,孤獨自卑。完成了一個小遊戲,歡迎試玩。同時也歡迎試玩師傅的遊戲,謝謝。
現正在努力學習事件中,有不明白的地方請各位指教。

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
回帖
1643

开拓者

发表于 2015-7-10 09:59:14 | 显示全部楼层
Window_EquipItem 58 行 的"添加空白" 是用来卸下装备的, 注释掉试试。

  -fk: -azogi:
回复

使用道具 举报

梦石
0
星屑
50
在线时间
226 小时
注册时间
2015-5-8
回帖
295
 楼主| 发表于 2015-7-10 19:55:49 | 显示全部楼层
kuerlulu 发表于 2015-7-10 09:59
Window_EquipItem 58 行 的"添加空白" 是用来卸下装备的, 注释掉试试。

這個方法一注釋就會出錯······
我是妖精蕾貝卡,沉默少言,孤獨自卑。完成了一個小遊戲,歡迎試玩。同時也歡迎試玩師傅的遊戲,謝謝。
現正在努力學習事件中,有不明白的地方請各位指教。

回复

使用道具 举报

梦石
0
星屑
50
在线时间
320 小时
注册时间
2014-9-2
回帖
244
发表于 2015-7-10 23:26:08 | 显示全部楼层
本帖最后由 蝉岭Cicada 于 2015-7-10 23:29 编辑

这样子的?
[pre lang="ruby"]5.times{|t| return if @right_window.instance_variable_get(:@data)[t] == nil}
[/pre]
没有装备的话,不能返回
148行
zheyang.png
回复

使用道具 举报

梦石
0
星屑
50
在线时间
226 小时
注册时间
2015-5-8
回帖
295
 楼主| 发表于 2015-7-10 23:51:10 | 显示全部楼层
蝉岭Cicada 发表于 2015-7-10 23:26
这样子的?
5.times{|t| return if @right_window.instance_variable_get(:@data)[t] == nil}
[/pre]

測試可行,但感覺效果有些奇怪。
如果可以追加一下提示語的話就更好。
另外追問一下,如果只想指定某個部位必須有裝備
該怎麼修改原句?
我是妖精蕾貝卡,沉默少言,孤獨自卑。完成了一個小遊戲,歡迎試玩。同時也歡迎試玩師傅的遊戲,謝謝。
現正在努力學習事件中,有不明白的地方請各位指教。

回复

使用道具 举报

梦石
0
星屑
50
在线时间
320 小时
注册时间
2014-9-2
回帖
244
发表于 2015-7-11 09:10:44 | 显示全部楼层
本帖最后由 蝉岭Cicada 于 2015-7-11 09:39 编辑
妖精蕾贝卡 发表于 2015-7-10 23:51
測試可行,但感覺效果有些奇怪。
如果可以追加一下提示語的話就更好。
另外追問一下,如果只想指定某個部 ...


解释一下吧{:2_287:}
[pre lang="ruby"]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}  #=>总的来说就是,五个装备,从上到下依次迭代,如果有没装备的就不返回菜单[/pre]


提示语,这样子如何
在def main里插入这段
[pre lang="ruby"]@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
[/pre]
1.png
在def update_right里插入这段
[pre lang="ruby"]if @right_window.instance_variable_get(:@data)[0] == nil
  @alert_window.visible = true
  return
end
@alert_window.visible = false

[/pre]
2.png
效果!!
ye.png


指定的话,以下 5 种情况,自己配合用吧,用 && 或 ||
[pre lang="ruby"]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  如果 头数据 和 装饰品数据 是空的则不返回[/pre]
148.png

评分

参与人数 2星屑 +20 梦石 +1 收起 理由
RyanBern + 1 认可答案
妖精蕾贝卡 + 20

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
226 小时
注册时间
2015-5-8
回帖
295
 楼主| 发表于 2015-7-11 15:47:28 | 显示全部楼层
蝉岭Cicada 发表于 2015-7-11 09:10
解释一下吧
5.times{|t| return if @right_window.instance_variable_get(:@data)[t] == nil}
...

十分感謝您的說明和指導。
但還有一些瑕疵,提示文字一直顯示。
有無辦法等多少幀后消除掉?
我是妖精蕾貝卡,沉默少言,孤獨自卑。完成了一個小遊戲,歡迎試玩。同時也歡迎試玩師傅的遊戲,謝謝。
現正在努力學習事件中,有不明白的地方請各位指教。

回复

使用道具 举报

梦石
0
星屑
50
在线时间
320 小时
注册时间
2014-9-2
回帖
244
发表于 2015-7-11 16:07:00 | 显示全部楼层
本帖最后由 蝉岭Cicada 于 2015-7-11 16:08 编辑
妖精蕾贝卡 发表于 2015-7-11 15:47
十分感謝您的說明和指導。
但還有一些瑕疵,提示文字一直顯示。
有無辦法等多少幀后消除掉? ...


疏忽了
这样子看看
[pre lang="ruby"]@alert_window.visible = false
[/pre]
ye2.png
回复

使用道具 举报

梦石
0
星屑
50
在线时间
226 小时
注册时间
2015-5-8
回帖
295
 楼主| 发表于 2015-7-11 16:08:58 | 显示全部楼层
蝉岭Cicada 发表于 2015-7-11 16:07
疏忽了
这样子看看
@alert_window.visible = false

可以了感謝。
我是妖精蕾貝卡,沉默少言,孤獨自卑。完成了一個小遊戲,歡迎試玩。同時也歡迎試玩師傅的遊戲,謝謝。
現正在努力學習事件中,有不明白的地方請各位指教。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部