Project1

标题: 请教制作一个周目储物箱需要用到的知识点以及原因 [打印本页]

作者: taeckle    时间: 2021-7-15 07:57
标题: 请教制作一个周目储物箱需要用到的知识点以及原因
我想做一个简单的周目储物箱,保证每周目存储道具数量上限增加3,都弄了一个多月了也没怎么弄明白,
还请大神跟咱多讲点思路,光给咱一个断章取义的代码咱也只能学个一知半解,咱先抛砖引玉:

1.要制作一个周目储物箱,需要学会插入图片,插入一张储物箱的图片。
2.要制作一个周目储物箱,需要学会XXX, XXX是用来设置周目数对周目储物箱数量上限的限制。

还请诸位大神多多指教(尤其是上面那个用来设置周目数对周目储物箱数量上限限制的知识点)
作者: enghao_lim    时间: 2021-7-15 15:00
LZ,虽然我已经提过很多次了,但是还是得再说。LZ你说的周目到底是怎样的一个周目设计?单一存档独立周目?跨存档周目?这不知道是LZ第几次没有阐述清楚了
单一存档周目只需要用一个变量来记录箱子大小,然后每次重新一周目的时候重置所有开关和变量(除箱子大小外),更需要的话可以清空道具角色等级什么的。
跨存档就需要找到跨存档储存变量的脚本,这个之前也有人提过了。
作者: ppspssss    时间: 2021-7-15 22:13
想很久都想不出的问题 , 我个人认为就是某知识是处于空白区, 你必须知道但你又不知道, 缺少必要的已知条件 , 就无法继续下去了,    就像之前你问的 class new 实例, 我是花了2年时间才理解到, 数组也花了1年时间才理解到, 时至今日也只够勉强能够使用,  我感觉楼主应该去学点更基础的较为合适
作者: taeckle    时间: 2021-7-16 05:16
本帖最后由 taeckle 于 2021-7-16 20:12 编辑
ppspssss 发表于 2021-7-15 22:13
想很久都想不出的问题 , 我个人认为就是某知识是处于空白区, 你必须知道但你又不知道, 缺少必要的已知条件  ...


周目储物箱需要用到的知识点不就是基础中的基础嘛
作者: taeckle    时间: 2021-7-20 02:26
又想出来一个相关知识点: 调用道具栏, 设置道具栏上下左右键,继续研究
作者: enghao_lim    时间: 2021-7-20 14:15
单一存档继承周目的方式有两种:

1. 在开始新游戏时强制选着存档并询问是否继承,在确认后读取选择的存档里头特定的变量用于继承。
所需知识:更改标题界面,针对开始游戏添加存档选择,存档读取方式。(scene_title, scene_load, scene_save 这些包括底下的窗口(window)最好吃透)

2. 在游戏通关后强制进入结束过场,重置一切除了需要继承的变量。
所需知识:所以基本数据库资料脚本,重置的数据包括开关,变量,角色,道具,金钱等。(game_actor, game_party, game_variables, game_switch)

储物箱脚本:
这个目前没有,所以怎样都得自写,其原理更像现有站上的仓库脚本,可以参考。如果箱子里头的东西需要继承,用(1)的方法需要在读取村当时也读取箱子里头的东西并继承,用(2)的方法则是不需要重置即可继承。
通常仓库的设计是在game_party添加一个本地数组用于储存物品,或者用变量也行,这两个都会自动记录进存档而并不需要而外对存档读档进行修改。
作者: taeckle    时间: 2021-7-22 16:51
enghao_lim 发表于 2021-7-20 14:15
单一存档继承周目的方式有两种:

1. 在开始新游戏时强制选着存档并询问是否继承,在确认后读取选择的存档 ...

大神那请问下这个在game_party添加的本地数组又该怎么写才能保证其随周目数的增加(比如周目数就是$game_variable[1])而无限增加呢?
作者: enghao_lim    时间: 2021-7-23 00:22
本帖最后由 enghao_lim 于 2021-7-23 00:23 编辑
taeckle 发表于 2021-7-22 16:51
大神那请问下这个在game_party添加的本地数组又该怎么写才能保证其随周目数的增加(比如周目数就是$game_v ...


并不需要对数组进行数量限制,数量限制在存放物品的时候再检查就可以了。

假设game_party已经添加了一个用于储存物品的数组叫做storage_box那就可以对game_party追加一个简易函数来判断是否箱子已满。

举例:
  1. def storage_box_full
  2.   return @storage_box.length <= $game_variables[1] * 10 #假设一个周目多10个位子
  3. end
复制代码


这样就可以用$game_party.storage_box_full来检查箱子是否满了,只要变量1一直增值下去那箱子的大小也会一直增加。
作者: guoxiaomi    时间: 2021-7-23 01:00
如6楼所说,你并没有描述清楚“周目”。你要把问题说的更详细才可以得到合适的回答。而且6楼已经给出合适的方案了。
作者: taeckle    时间: 2021-7-24 03:22
guoxiaomi 发表于 2021-7-23 01:00
如6楼所说,你并没有描述清楚“周目”。你要把问题说的更详细才可以得到合适的回答。而且6楼已经给出合适的 ...


我就想做一个简简单单的周目储物箱,保证每周目存储物品(道具+武器+防具之和)数量上限增加3,周目数就用$game_variables[1]表示,周目储存箱所用到的图片名为xiangzi.png, 周目储存箱所属的类就命名为$scene = Scene_Warehouse.new

这样清楚了嘛。。
作者: guoxiaomi    时间: 2021-7-24 09:01
变量1如何增加?你有多个存档的话,储物箱里的内容准备怎么处置?是各存档之间可以通过这个箱子交换物品?还是这个储物箱只依赖单个存档,每个存档的变量1都不一样?
作者: taeckle    时间: 2021-7-25 17:39
本帖最后由 taeckle 于 2021-7-25 17:41 编辑
guoxiaomi 发表于 2021-7-24 09:01
变量1如何增加?你有多个存档的话,储物箱里的内容准备怎么处置?是各存档之间可以通过这个箱子交换物品? ...


变量1在游戏每周目通关战斗结束后设置增加1, 各个存档互相独立,保证这个周目储存箱只依赖对应单个存档, 存储箱里最好能用到那个根据数据库物品描述@后面定义的分类脚本(具体情况可参考这个脚本: https://rpg.blue/thread-376475-1-1.html ) ,变量1每增加1后存储箱存储物品数量上限对应增加3

#==============================================================================
# ■ RPG追加定义,使用@符号分类
#==============================================================================

module RPG
  class Weapon
    def description
      description = @description.split(/@/)[0]
      return description != nil ? description : ''
    end
    def desc
      desc = @description.split(/@/)[1]
      return desc != nil ? desc : "武器类"
    end
  end
  class Item
    def description
      description = @description.split(/@/)[0]
      return description != nil ? description : ''
    end
    def desc
      desc = @description.split(/@/)[1]
      return desc != nil ? desc : "普通物品"
    end
  end
  class Armor
    def description
      description = @description.split(/@/)[0]
      return description != nil ? description : ''
    end
    def desc
      desc = @description.split(/@/)[1]
      return desc != nil ? desc : "防具类"
    end
  end
end


PS: 周目存储箱界面需有3个选项: 1 存入,2 取出, 3 离开


作者: guoxiaomi    时间: 2021-7-25 18:16
所以游戏通关后,会传送到一个位置继续,然后玩家可以继续走一遍通关路线?

不知道你给的那个脚本要干啥,还不如发截图
作者: taeckle    时间: 2021-7-26 00:42
本帖最后由 taeckle 于 2021-7-26 00:44 编辑
guoxiaomi 发表于 2021-7-25 18:16
所以游戏通关后,会传送到一个位置继续,然后玩家可以继续走一遍通关路线?

不知道你给的那个脚本要干啥, ...


没错,继续走一遍通关,那个脚本是做物品分类用的,使用过后物品会根据数据库说明一栏里@后的名称自动分类, 比如这圣灵药:

qx.PNG (64.77 KB, 下载次数: 16)

qx.PNG





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1