设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2773|回复: 15
打印 上一主题 下一主题

[已经解决] 选择奖励窗口的制作问题

[复制链接]

Lv3.寻梦者

梦石
3
星屑
65
在线时间
200 小时
注册时间
2008-7-8
帖子
180
跳转到指定楼层
1
发表于 2015-8-18 12:29:29 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
还是昨天的问题。是想做到“能在选择时看到奖励物品的属性”并且“选择后获得物品”;
昨天纠结了一天今天发现好像跟shop的window有点类似就拿shopbuy来改,结果改得是一头雾水
我的Scene部分是这么写的
RUBY 代码复制
  1. class Scene_Chooseaward < Scene_MenuBase
  2.  
  3.   def start
  4.     creat_choose_window
  5.     super
  6.   end
  7.  
  8.   def creat_choose_window
  9.     @choose_window=Window_Chooseaward.new(0,0,200,100)
  10.     @choose_window.set_handler(:ok,method(:gain_ok))
  11.     @choose_window.set_handler(:cancel,method(:return_scene))
  12.   end
  13.  
  14.   def gain_ok
  15.     $game_party.gain_item(item,1)
  16.     return_scene
  17.   end
  18.  
  19. end


然后Window_Chooseaward就是选择性抄改Window_ShopBuy
RUBY 代码复制
  1. class Window_Chooseaward < Window_Selectable
  2.  
  3.   def initialize(x, y, width, height)
  4.     super
  5.     refresh
  6.   end
  7.  
  8.   def refresh
  9.     make_item_list
  10.     create_contents
  11.     draw_all_items
  12.   end
  13.  
  14.   def item_max
  15.     @data ? @data.size : 1
  16.   end
  17.  
  18.   def item
  19.     @data[index]
  20.   end  
  21.  
  22.   def make_item_list
  23.     @data = []
  24.     item = $data_weapons[1] #其实我希望这里的道具种类和ID能通过参数指定,但不知道怎么写
  25.     @data.push(item)
  26.   end
  27.  
  28.   def draw_item(index)
  29.     item = @data[index]
  30.     rect = item_rect(index)
  31.     draw_item_name(item, rect.x, rect.y)
  32.     rect.width -= 4
  33.   end
  34. end


进去终于显示出物品了,但是背景是全黑的,而且无论是选择物品还是Esc窗口都没有反应,return_scene完全不起作用...

这中间还发生了许多我无法理解的乱七八糟的bug,说来全是泪,已经快崩溃了。

所以谁能解释一下这是为什么,再告诉我到底要怎样做这个窗口?

Lv3.寻梦者

梦石
3
星屑
65
在线时间
200 小时
注册时间
2008-7-8
帖子
180
16
 楼主| 发表于 2015-8-19 11:31:16 | 只看该作者
喵呜喵5 发表于 2015-8-19 07:36
先执行
create_help_window
再执行

已解决,是我粗心没去翻帮助信息脚本。那里面有段重定义update_help的语句没复制过去。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
3
星屑
65
在线时间
200 小时
注册时间
2008-7-8
帖子
180
15
 楼主| 发表于 2015-8-19 10:16:39 | 只看该作者
喵呜喵5 发表于 2015-8-19 07:36
先执行
create_help_window
再执行

create顺序我昨晚睡前发现了,然而调换之后还是不行。
你的例子意思就是一个是通过a给b一个值,再单独给a一个值;另一个是只通过a给了b一个值
我看来看去只能看出来前两行大概是在指代
@help_window=Window_Help.new和
xx_window.help_window=@help_window
但第三行的给a重新赋值我是没找到类似的环节,
我真的不是没有认真想,只是你的启发式教育实在超过我的理解范围,我还是希望能够得到一个明确的解决方案让我自己去研究问题出在哪......

点评

creat顺序这个你改完要告诉我啊,你留下的代码始终是错的我还以为你还没搞懂咧  发表于 2015-8-19 12:23
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

14
发表于 2015-8-19 07:36:16 | 只看该作者
acv255 发表于 2015-8-19 01:16
我看来看去怎么都觉得两边执行流程没有区别啊...
求你讲明白点吧...想这问题想到这么晚又困又睡不着...脑 ...

先执行
create_help_window
再执行
create_choose_window

不想和你说原因了,给你解释原因的代码你觉得太简单所以根本没去分析

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
3
星屑
65
在线时间
200 小时
注册时间
2008-7-8
帖子
180
13
 楼主| 发表于 2015-8-19 01:16:02 | 只看该作者

RE: 选择奖励窗口的制作问题

喵呜喵5 发表于 2015-8-19 00:51
请看这两段代码,然后思考两段代码b的值为什么不同,然后再回头思考你自己的这个回复
...

我看来看去怎么都觉得两边执行流程没有区别啊...
求你讲明白点吧...想这问题想到这么晚又困又睡不着...脑子不清醒更想不明白更睡不着 太难受了

QQ截图20150819011148.jpg (81.33 KB, 下载次数: 28)

QQ截图20150819011148.jpg
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
3
星屑
65
在线时间
200 小时
注册时间
2008-7-8
帖子
180
12
 楼主| 发表于 2015-8-19 01:14:08 | 只看该作者
本帖最后由 acv255 于 2015-8-19 01:16 编辑

编辑   
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

11
发表于 2015-8-19 00:51:43 | 只看该作者
acv255 发表于 2015-8-19 00:45
我把p "#{@help_window}"和p "#{@help_window}+hehe"分别放在scene_equip和我自己的scene下的生成窗口方 ...
  1. a=1
  2. b=a
  3. a=2
  4. p a
复制代码
  1. a=2
  2. b=a
  3. p a
复制代码
请看这两段代码,然后思考两段代码b的值为什么不同,然后再回头思考你自己的这个回复
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
3
星屑
65
在线时间
200 小时
注册时间
2008-7-8
帖子
180
10
 楼主| 发表于 2015-8-19 00:45:05 | 只看该作者
喵呜喵5 发表于 2015-8-19 00:24
现在,你再回头看看你赋值给xx_window的@help_window是一个帮助窗口的实例吗?

如果不能确定的话,用 p  ...

我把p "#{@help_window}"和p "#{@help_window}+hehe"分别放在scene_equip和我自己的scene下的生成窗口方法末尾

第一行是调用失败时显示的
第二行是在装备界面下成功调用时显示的

怎么感觉没什么区别....

QQ截图20150819004005.jpg (134.21 KB, 下载次数: 37)

QQ截图20150819004005.jpg
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

9
发表于 2015-8-19 00:24:58 | 只看该作者
acv255 发表于 2015-8-19 00:20
看了半天只能通过勉强把xx_window.help_window = @help_window理解成“把与xx_window平行的帮助窗口实例 ...

现在,你再回头看看你赋值给xx_window的@help_window是一个帮助窗口的实例吗?

如果不能确定的话,用 p @help_window 来协助你进行判断
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
3
星屑
65
在线时间
200 小时
注册时间
2008-7-8
帖子
180
8
 楼主| 发表于 2015-8-19 00:20:07 | 只看该作者
喵呜喵5 发表于 2015-8-18 23:45
既然你说你是模仿 Scene_Shop 的,那我直接拿 Scene_Shop 的代码举例吧:
def create_buy_window 方法下 ...


看了半天只能通过
  1.   def help_window=(help_window)
  2.     @help_window = help_window
  3.     call_update_help
  4.   end
复制代码
勉强把xx_window.help_window = @help_window理解成“把与xx_window平行的帮助窗口实例赋值给xx_window自己的‘子’帮助栏”,大概就是把xx_window的帮助信息显示在这个平行等级的帮助栏中?

实在太绕了,真没法理解下去了......就我目前的理解好像还是无法对让窗口现形产生帮助......
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 16:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表