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

Project1

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

[已经过期] 如何对这段代码进行优化?

[复制链接]

Lv2.观梦者

梦石
0
星屑
876
在线时间
131 小时
注册时间
2016-8-4
帖子
34
跳转到指定楼层
1
发表于 2020-8-8 09:53:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 jeffice0325 于 2020-8-8 13:54 编辑

用重载实现的背包容量脚本,但当物品数量众多且进行以下操作:(依次加入1个不同物品,查询剩余容量)时效率很低,请问各位大佬如何优化该代码?
RUBY 代码复制
  1. class Game_Party < Game_Unit
  2.   def all_item_number
  3.     ans = 0
  4.     @items.each{|idx|ans += idx[1]}
  5.     @armors.each{|idx|ans += idx[1]}
  6.     @weapons.each{|idx|ans += idx[1]}
  7.     ans
  8.   end
  9.   def max_item_number(item)
  10.     return 0 unless item_container(item.class)
  11.     return max_all_item_number - all_item_number unless item_container(item.class)[item.id]
  12.     return max_all_item_number - all_item_number + item_container(item.class)[item.id]
  13.   end
  14.   def max_all_item_number
  15.     99
  16.   end
  17.   def item_max?(item)
  18.     all_item_number >= max_all_item_number
  19.   end
  20.   def gain_item(item, amount, include_equip = false)
  21.     container = item_container(item.class)
  22.     return unless container
  23.     container[item.id] = 0 unless container[item.id]
  24.     container[item.id] += [amount,max_item_number(item) - container[item.id]].min
  25.     container.delete(item.id) if container[item.id] <= 0
  26.     if include_equip && container[item] + amount < 0
  27.       discard_members_equip(item, -container[item] - amount)
  28.     end
  29.     $game_map.need_refresh = true
  30.   end
  31. end
  32. class Window_ItemList < Window_Selectable
  33.   def draw_item_number(rect, item)
  34.     draw_text(rect, sprintf(":%2d", $game_party.item_number(item)), 2)
  35.   end
  36. end

Lv5.捕梦者

梦石
0
星屑
33435
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

2
发表于 2020-8-8 13:22:25 | 只看该作者

这个是什么意思?
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
876
在线时间
131 小时
注册时间
2016-8-4
帖子
34
3
 楼主| 发表于 2020-8-8 13:55:41 | 只看该作者
本帖最后由 jeffice0325 于 2020-8-8 13:57 编辑


啊这……网络延迟,代码已修复
  1. container[item.id] = 0 unless container[item.id]
复制代码

好像可以优化成
  1. container[item.id] |= 0
复制代码
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42349
在线时间
7599 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

4
发表于 2020-8-8 16:24:37 | 只看该作者
没看懂楼主实现的目的,这个all_item_number是什么邪道算法,idx是个数组吗?默认系统下应该就是数量啊
楼主不如直接说需求
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 06:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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