Project1

标题: 【关于物品排列】大家一般用什么方法整理items排序 [打印本页]

作者: 纯属小虫    时间: 2023-4-27 15:31
标题: 【关于物品排列】大家一般用什么方法整理items排序
本帖最后由 纯属小虫 于 2023-4-27 15:32 编辑

XP的默认物品排序方式是按照 物品or技能 的id大小来依次排列的,
如果要在游戏中营造比较好的物品栏视觉效果,同类物品的相邻排序则显得十分重要


比如,如果要让消耗品排列在物品栏的最前端,那么就需要让消耗物品的ID排前,并且在游戏制作的时候就确定好可能的物品类型,如:药品、食品、宝石、皮毛。。。。。
如果处理得恰当,并且物品类型比较确定,那么在游戏中将会有比较好的排列效果,找物品的时候也相对容易。

不过,这种处理方式的缺点就是灵活性缺失。如果制作初期没有将数据库中的内容定好框架,或是在后期某一类型的物品过多,导致留空不足,就只能放在之后,没法按照始定的排列逻辑添加新品了。



如图,我在制作之初忘记给数据库留出足够的空位来放置同类武器。如果我还想添加新的匕首类武器,那便只能在后面的数据库添加,游戏背包中匕首类武器的位置便不是相邻的,如果背包里的武器很多,那找武器将是一件很头疼的事。


处理物品排列最简单的方式莫过于使用背包分类脚本了
为每一件物品定义类型,那么在类型背包中,同类的物品自然会被排列在一起;此外,有分类标签的加持,找物品将是一件很简单的事情。数据库中添加新物品的时候也不用太过考虑顺序的问题了。
物品分类脚本——复制自RMXP图书馆


对于技能而言,也是同理。当角色技能过多时,可以将技能分类为  【回复】 【进攻】 【加持】 等...

但是,分类能够解决整体问题,却没办法解决更细致的问题。
比如,我将背包分为了 【素材】【消耗品】【情报】【武器】【头盔】【护甲】【饰品】....
但事实上,【素材】里还有 (宝石)(植物)(皮革)......   【武器】里还有(匕首)(剑)(钝器).....
如果把大类再进行子类划分,则会显得很复杂。而且在名字后面添加一个类别备注已经很麻烦了,如果再添加一个子类备注,想想就头疼。

或许,我们便可以找到跟物品排序直接关联的脚本,在窗口中的items描绘上对其直接篡改:

以 背包 窗口  为例


for i in 1...$data_items.size
意思是从 1 开始检索,检索到items数据库的末尾,将数量>0的物品进行描绘

我们可以使用一种简单粗暴的方法,在脚本中手写数组,直接让物品强行按照我们所写的id号来进行先后排列::
强排


直接手写的方式简单粗暴,直接把要相邻放置的物品ID填写在一个个数组里即可,且顺序完全可控。脚本后文添加防漏代入,也能够避免强排过程中漏填物品导致背包中的物品消失。
而麻烦点也显而易见,那就是填入排列数组时,每一个物品都得手动添加,如果物品不是相邻的,那还得到数据库一个一个找ID号,然后一个一个填入。


后面有几种别的排列方法我没有实际落入脚本当中,不过可能也具有一定的可行性。
1、按照@data 中item的各种字段属性进行排序;可以是其中对象的 name 的首字母 (这个太粗暴了),name的字数(看起来很舒服,但逻辑上没啥关系)
2、按照item名称中的关键字进行排序;比如,如果物品的名称含有“宝石”,那么就将其排列在一起;含有“药水”,就将其排列在一起。(很方便,但是对物品的命名比较严格;毕竟同样是剑类武器,我可以叫它铜剑、铁剑,也可以叫它镇天、开天...)
3、按照item的描述中的关键词进行排序;比如,在描述的开头或结尾写上【药水】【宝石】【剑】【弓】...然后同上逻辑进行排列。
4、按照item的属性&属性防御进行排序;我新添加若干的【属性】,将序号>**的属性名字命名为【药水】【宝石】【剑】【弓】.....然后在对应处打勾就好了。排列时检索 该物品的属性中,序号>** 的属性中,哪个是打勾的,它就属于哪个类。然后依次同类合并排序


以上是本人对物品排序的理解和一些经验,欢迎大家讨论分享新的items排序方法和理念。
作者: 灯笼菜刀王    时间: 2023-4-27 15:51


让玩家自己排.....
作者: 灯笼菜刀王    时间: 2023-4-29 17:52
本帖最后由 灯笼菜刀王 于 2023-4-29 17:55 编辑

物品分类是一个挺好的做法,  而且二级菜单也没啥, 以上下左右的方式来进行一二级菜单的切换即可减少操作



不过, 物品分类有一个雷区, 即: 玩家不知道你是根据啥来分类

毕竟每个人的"常识"不同,  像琥珀, 你认为它是"宝石"还是"矿物" 笑。

这种"常识差异"就会导致刚开始玩时根本不知道我拿到什么玩意~ 鬼知道你把它丢在哪个分类里, 尤其是分类项目固定显示的时候。 这里要点名批评下《军官之歌》, 它的技能分类固定显示5个, 不一个一个去翻你根本不知道角色会啥技能,  结果呢, 我打到第二章才发现, 原来主角会恢复法术啊......

因此, 分类虽然方便,但是能不用尽量别用最好, 毕竟它会造成玩家额外的记忆负担, 包包技能打开有什么东西一目了然多清爽, 笑

至于分类设置, 备注法最普遍的, 而我更推荐"自动分类法" 就是去定义下分类规则, 例如 recover_hp/sp_rate或者recover_hp/sp 不为0 就自动分到"恢复品"类去, 负数就自动分类到"攻击道具"里, parameter_type > 0 就分类到"强化药品" 里 这样, 自动分类的好处就是不至于受"你设置道具时的主观想法影响"

另外, "属性标志法"要注意, XP默认的伤害结算公式, 复数属性修正系数取最高值哦

---

除了分类法和玩家自己去排法, 我还用过三个方法
1, 给道具定义个"序号", 然后显示的时候按序号sort 。这样数据库怎么塞都不会影响物品界面的整齐了,笑   缺点是数据库强迫症患者不爽, 笑

2, 常数法:  直接把每个道具的ID用常数对应, 获取道具, 判断道具时全部写常数, 这样,当需要改变道具ID的时候, 去把对应的常数换一下即可, 不用去返工旧工程, 妈妈再也不用担心我预留的位置不够用了,笑   缺点是涉及道具ID的地方要用脚本写, 不能一键点事件

3, 直接抛弃数据库, 用脚本或者TXT来输入数据, 一了百了, 优点是直接解决了排序,破限,数值限制,参数不够,碍手碍脚等问题, 笑, 缺点是比较不好浏览

目前我采用的做法是 3
这样设置道具

作者: 89444640    时间: 2023-4-30 16:16
本帖最后由 89444640 于 2023-4-30 16:19 编辑

很难不手欠扩充道具,除非规划好后绝对不动了,只减少不增加
要嘛就跟脚本里单独弄个地方去处理排列。
当然要用默认的道具取得方式,还是种类效果接近的道具放一起更方便。
直接用脚本获得道具好处就是,道具一旦过多,不用每次都拉那个大长条去选择,直接 获得 脚本“获得\D[I]草药*3”就行了,效率高
然后我觉得其实也可以给玩家一个自定义功能,比如爱用
单独列个条目顺序在新品后面,然后爱用的道具 比如草药就可以放这里,比如有人喜欢打个怪就换把武器 没关系,爱用——武器、爱用——防具


作者: soulsaga    时间: 2023-4-30 17:20
本帖最后由 soulsaga 于 2023-4-30 17:21 编辑

用脚本定义物品数据库
用事件增减物品
@parameters[0]=你定义的道具名称
修改获得道具相关脚本
作者: 纯属小虫    时间: 2023-5-3 18:56
灯笼菜刀王 发表于 2023-4-29 17:52
物品分类是一个挺好的做法,  而且二级菜单也没啥, 以上下左右的方式来进行一二级菜单的切换即可减少操作

在物品分类中添加 【新品】和【全部】倒是能够改良找不到物品的问题。
话说,【新品】类的脚本要怎么写呀?新建一个对应所有物品的开关组,然后获取物品(gain_item)的时候把对应获取物品的开关打开吗?
作者: soulsaga    时间: 2023-5-3 19:10
纯属小虫 发表于 2023-5-3 18:56
在物品分类中添加 【新品】和【全部】倒是能够改良找不到物品的问题。
话说,【新品】类的脚本要怎么写呀 ...

89大大的工程已经有新品功能
你可以请教菜刀大大




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