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

Project1

 找回密码
 注册会员
搜索

【关于物品排列】大家一般用什么方法整理items排序

查看数: 2418 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-4-27 15:31

正文摘要:

本帖最后由 纯属小虫 于 2023-4-27 15:32 编辑 XP的默认物品排序方式是按照 物品or技能 的id大小来依次排列的, 如果要在游戏中营造比较好的物品栏视觉效果,同类物品的相邻排序则显得十分重要 如图,我在制 ...

回复

微妙夏伤_ 发表于 2025-7-8 13:06:53
灯笼菜刀王 发表于 2025-7-8 11:02
把脚本 163 行替换成这一句

谢谢大佬,不过我找deepseek解决了,他给的是这样的,不过你这个看起来更简单
  1. when 7  # 特殊物品分类
  2.       # 使用名称前缀识别特殊物品
  3.       special_prefix = "★"  # 自定义前缀符号
  4.       
  5.       # 检查物品
  6.       for i in 1...$data_items.size
  7.         item = $data_items[i]
  8.         if item && item.name.include?(special_prefix) && $game_party.item_number(i) > 0
  9.           @data.push(item)
  10.         end
  11.       end
  12.       
  13.       # 检查武器
  14.       for i in 1...$data_weapons.size
  15.         weapon = $data_weapons[i]
  16.         if weapon && weapon.name.include?(special_prefix) && $game_party.weapon_number(i) > 0
  17.           @data.push(weapon)
  18.         end
  19.       end
  20.       
  21.       # 检查防具
  22.       for i in 1...$data_armors.size
  23.         armor = $data_armors[i]
  24.         if armor && armor.name.include?(special_prefix) && $game_party.armor_number(i) > 0
  25.           @data.push(armor)
  26.         end
  27.       end
  28.     end
  29.     # 項目数が 0 でなければビットマップを作成し、全項目を描画
  30.     @item_max = @data.size
  31.     if @item_max > 0
  32.       self.contents = Bitmap.new(width - 32, row_max * 32)
  33.       self.contents.clear
  34.       for i in 0...@item_max
  35.         draw_item(i)
  36.       end
  37.     end
  38.   end

  39. 然后还有这一种

  40. class Harts_Window_ItemList < Window_Selectable
  41.   # 特殊物品ID列表 [类型, ID]
  42.   # 类型: 0=物品, 1=武器, 2=防具
  43.   SPECIAL_ITEMS = [
  44.     [0, 23],  # 物品ID 23
  45.     [0, 45],  # 物品ID 45
  46.     [1, 12],  # 武器ID 12
  47.     [2, 8]    # 防具ID 8
  48.   ]
  49.   
  50.   def set_item(command)
  51.     refresh
  52.     case command
  53.     # ... 其他分类保持不变 ...
  54.     when 7  # 特殊物品分类
  55.       SPECIAL_ITEMS.each do |type, id|
  56.         case type
  57.         when 0  # 物品
  58.           if $game_party.item_number(id) > 0
  59.             @data.push($data_items[id])
  60.           end
  61.         when 1  # 武器
  62.           if $game_party.weapon_number(id) > 0
  63.             @data.push($data_weapons[id])
  64.           end
  65.         when 2  # 防具
  66.           if $game_party.armor_number(id) > 0
  67.             @data.push($data_armors[id])
  68.           end
  69.         end
  70.       end
  71.     end
  72.     # ... 后续代码 ...
  73.   end
  74. end
复制代码
灯笼菜刀王 发表于 2025-7-8 11:02:20
微妙夏伤_ 发表于 2025-7-7 23:21
大佬问一下,我看了下,这里的代码把不能使用的物品归为特殊物品,我想自定义特殊物品怎么搞,就是把某些 ...

把脚本 163 行替换成这一句

  1.         if ([10086,10087].include?(i) or $data_items[i].occasion == 3) and $game_party.item_number(i) > 0
复制代码


然后在10086, 10087的那个中括号里, 把10086,10087替换成你要当做特殊物品的id就行, 栗子 [1,2,3,4]  这样写就是1号到4号道具都是特殊物品, 不管它能不能使用
-
PS: 如果你需要更多"自定义分类"的功能, 可以找其他的脚本, 有那种完全自定义名称和分类的
微妙夏伤_ 发表于 2025-7-7 23:21:56
soulsaga 发表于 2023-5-3 19:10
89大大的工程已经有新品功能
你可以请教菜刀大大

大佬问一下,我看了下,这里的代码把不能使用的物品归为特殊物品,我想自定义特殊物品怎么搞,就是把某些物品归类到特殊物品,但是一样可以使用
微妙夏伤_ 发表于 2025-7-7 14:27:33
大佬们问一下,我看了下,这里的代码把不能使用的物品归为特殊物品,我想自定义特殊物品怎么搞,就是把某些物品归类到特殊物品,但是一样可以使用
soulsaga 发表于 2023-5-3 19:10:30
纯属小虫 发表于 2023-5-3 18:56
在物品分类中添加 【新品】和【全部】倒是能够改良找不到物品的问题。
话说,【新品】类的脚本要怎么写呀 ...

89大大的工程已经有新品功能
你可以请教菜刀大大
纯属小虫 发表于 2023-5-3 18:56:52
灯笼菜刀王 发表于 2023-4-29 17:52
物品分类是一个挺好的做法,  而且二级菜单也没啥, 以上下左右的方式来进行一二级菜单的切换即可减少操作

在物品分类中添加 【新品】和【全部】倒是能够改良找不到物品的问题。
话说,【新品】类的脚本要怎么写呀?新建一个对应所有物品的开关组,然后获取物品(gain_item)的时候把对应获取物品的开关打开吗?

点评

用一个数组把新获得的道具ID塞进去就是了  发表于 2023-5-15 15:48
soulsaga 发表于 2023-4-30 17:20:06
本帖最后由 soulsaga 于 2023-4-30 17:21 编辑

用脚本定义物品数据库
用事件增减物品
@parameters[0]=你定义的道具名称
修改获得道具相关脚本
89444640 发表于 2023-4-30 16:16:48
本帖最后由 89444640 于 2023-4-30 16:19 编辑

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

灯笼菜刀王 发表于 2023-4-29 17:52:04
本帖最后由 灯笼菜刀王 于 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
这样设置道具

点评

话说水管带魔攻干啥来着?水管攻击和技能不都是物理属性吗?按照力量算伤害。  发表于 2023-4-30 16:02
所以要建立新品功能,新获得的东西在前面,保留N个新获得道具,不知道去里面看就行了。一般十~二十个就够了  发表于 2023-4-30 16:00
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-9-18 13:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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