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

Project1

 找回密码
 注册会员
搜索
楼主: guoxiaomi
打印 上一主题 下一主题

[原创发布] 【教程】如何制作储物箱

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
11
发表于 2021-8-12 18:43:31 | 只看该作者
本帖最后由 taeckle 于 2021-8-12 18:44 编辑

大神还想请问下initialize里的参数data_vid到底有啥用啊?我只是想设置箱子存储物品数量上限为$game_variable[1]*3, 那个上限99完全不需要啊,这是你上面写的initialize:

    def initialize(data_vid, item_max_size = 99)
      @scene_class = $scene.class
      @item_max_size = [item_max_size, 99].min
      if !$game_variables[data_vid].is_a?(Data)
        $game_variables[data_vid] = Data.new
      end
      @data = $game_variables[data_vid]
    end

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36581
在线时间
10830 小时
注册时间
2009-3-15
帖子
4817
12
发表于 2021-8-12 18:56:20 | 只看该作者
本帖最后由 soulsaga 于 2021-8-12 19:01 编辑
taeckle 发表于 2021-8-12 18:43
大神还想请问下initialize里的参数data_vid到底有啥用啊?我只是想设置箱子存储物品数量上限为$game_variab ...


呼叫场景时第一个參数示例的$game_variable[1]*3的就是传进data_vid的变量..
也就是说变量ID为$game_variable[1]的值X3的?
当是这样吧..

item_max_size = 99
这个是传參数时如果没有写第2个參数默认值则为99
所以只要你在第2个參数写上$game_variable[1]*3 道具上限就是变量1的值X3了

点评

望文生义的话,就是储存数据(data)的那个变量(v)id  发表于 2021-8-12 19:28
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
13
发表于 2021-8-12 19:05:37 | 只看该作者
soulsaga 发表于 2021-8-12 18:56
呼叫场景时第一个參数示例的$game_variable[1]*3的就是传进data_vid的变量..
也就是说变量ID为$game_vari ...

好的,多谢大佬指点!
还想请问下呼叫场景第二行中的$scene=Taeckle::Scene_Storage.new(2, size)中的数字2又指的是什么呢?

点评

是的  发表于 2021-8-12 20:43
那把下面的attr_reader :weapons 还有 attr_reader :armors也删了也一样能用的吗?  发表于 2021-8-12 19:49
是的,但是这附近的attr_reader定义删了也一样用,所以没出bug,我就没查出来  发表于 2021-8-12 19:26
好的,还有大神你的版本0.2里第6行"attr_reader :item"item后面是不是少写个"s"。。。  发表于 2021-8-12 19:18
箱子的数据存在第2个变量里  发表于 2021-8-12 19:09
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
14
发表于 2021-8-16 18:32:54 | 只看该作者
@guoxiaomi

大神我还有个地方不太明白,请问下你上面的脚本里是怎么计算存储箱子内已经存储的物品武器防具(item, weapon, armor)的数量之和的呢?

在version_0.2里那个num_storage指代的好像仅仅是在存储箱里的物品武器防具中一类的数量之和吧。咱想达到的效果是所有物品武器防具的数量之和+打算存入的东西数量<=$game_variables[1]*3

点评

这个留给你当作业吧,等你编程水平上来了自然就知道这里很简单了  发表于 2021-8-17 12:15
你的这个脚本也该更新个version_0.5啦  发表于 2021-8-16 21:36
大神可以帮忙写一下吗,那个@data咱也不知道该怎么增加新属性。。。  发表于 2021-8-16 21:31
顺便你也要修改can_store?方法,改成你的判断条件  发表于 2021-8-16 19:19
给@data增加新的属性,total_numbers,然后在fetch和store方法里修改。  发表于 2021-8-16 19:19
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
15
发表于 2021-8-22 12:18:16 | 只看该作者
本帖最后由 taeckle 于 2021-8-22 12:19 编辑

@guoxiaomi

大神请问下你脚本version 0.1 里第12行的"$scene.class"还有第14行if !$game_variables[data_vid].is_a?(Data)中的"Data"是指的是什么东西啊,
都起到了什么作用啊?

点评

可以,随便什么名字都行  发表于 2021-8-22 14:38
那在定义的时候必须在开头"class Data"这么写吗?可以写成"class storage_Data"吗?  发表于 2021-8-22 13:56
Data是定义的数据类,用来保存存储箱里的物品情况。  发表于 2021-8-22 12:35
$scene.class在正文里有说明,记录调用转入此场景之前的场景,然后在退出的时候回到对应场景。  发表于 2021-8-22 12:33
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
16
发表于 2021-8-23 03:53:50 | 只看该作者
本帖最后由 taeckle 于 2021-8-23 03:54 编辑

大神这个脚本里你写那个"attr_accessor :bind_data"主要起到什么作用的呢?仅仅只是用来保证实例变量@bind_data即可读取也可写入的嘛?

点评

我觉得不行,但是如果测试没问题的话你就删了呗  发表于 2021-8-23 15:23
那咱这句"attr_accessor :bind_data"不写可以嘛?我昨天自己测试也没发现啥问题。。  发表于 2021-8-23 14:23
是啊……  发表于 2021-8-23 08:29
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9163
在线时间
466 小时
注册时间
2015-5-8
帖子
866
17
发表于 2021-8-23 15:48:14 | 只看该作者
本帖最后由 taeckle 于 2021-8-23 15:50 编辑

@guoxiaomi

好的,大神我还有个问题:

在你的这个脚本中第2号公共变量($game_variables[2])是设置为存储箱子内部信息的, 我在你上面的脚本(version 0.1)里第16行(end)后面加了一句"print #{$game_variables[2]}",我主要是想看看这个$game_variable[2]里面到底长什么样,里面到底是个2维数组还是2维哈希表,可print之后测试的时候显示的是一串乱码,

请问下怎样才能把这个已经含有箱子存放信息的$game_variable[2]的具体内容p出来(或者显示出来)呢?

点评

晚上回去就发!  发表于 2021-8-23 21:44
真的吗,我不信,除非你发个截图?  发表于 2021-8-23 19:14
好的,直接p $game_variables[2]貌似不行,出来的是一串乱码,你知道除了p还有其他方法能让其显示出来吗?  发表于 2021-8-23 16:59
还有,这帖楼主就是我,你回帖不需要重复@我  发表于 2021-8-23 16:37
直接p $game_variables[2]不行吗  发表于 2021-8-23 15:52
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36581
在线时间
10830 小时
注册时间
2009-3-15
帖子
4817
18
发表于 2021-8-23 17:48:46 | 只看该作者
本帖最后由 soulsaga 于 2021-8-23 18:08 编辑
taeckle 发表于 2021-8-23 15:48
@guoxiaomi

好的,大神我还有个问题:


RUBY 代码复制
  1. p $game_variables[2].inspect

@taeckle
可以看到该对像全部已有方法的值
OBJ不是数组也不是哈希表..

这个好像不是你想要的..搞错了..

点评

印象中inspect和to_s好像是同一个方法  发表于 2021-8-23 19:13
那啥时候能搞对啊?  发表于 2021-8-23 18:47
搞错了..  发表于 2021-8-23 18:39

评分

参与人数 1+1 收起 理由
taeckle + 1 搞错了?

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2866
在线时间
446 小时
注册时间
2016-9-26
帖子
1223
19
发表于 2021-8-23 18:19:26 | 只看该作者
这个帖子很好,不懂代码的我选择直接尝试将商店俺寻思成储物箱

点评

关键是咱提问的问题都非常有代表性,有助于大家学习  发表于 2021-8-23 21:43
也可以下载范例试试,说不定在什么地方能用上呢  发表于 2021-8-23 19:13
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2866
在线时间
446 小时
注册时间
2016-9-26
帖子
1223
20
发表于 2021-8-23 21:35:55 | 只看该作者
问题是,我是mv,不懂代码呢,唉

点评

好吧……  发表于 2021-8-23 23:36
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-22 09:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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