赞 | 0 |
VIP | 0 |
好人卡 | 5 |
积分 | 6 |
经验 | 53674 |
最后登录 | 2024-3-13 |
在线时间 | 917 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 582
- 在线时间
- 917 小时
- 注册时间
- 2013-3-13
- 帖子
- 557
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 crow2006 于 2017-5-20 12:50 编辑
使用了P叔整合系统的【随机属性】脚本之后,游戏进行过程中得到的装备越多,存档就会越来越大,打开物品栏/装备栏也会越来越卡(特别是以刷装备为主的游戏)。
经过分析,我发现是这几个家伙在作祟。
1.module Game_Equip
case result
when RPG::Weapon
result.inidur
result.base_id = result.id
result.id = $data_weapons.size
when RPG::Armor
result.inidur
result.base_id = result.id
result.id = $data_armors.size
$data_weapons与$data_armors会越来越大、越来越长。
但这并不是唯一的地方,还有这里:
2.class Game_Party < Game_Unit
def initialize
@weapons = {} # 物品哈希列表(武器ID)
@armors = {} # 物品哈希列表(防具ID)
这两个家伙也会越来越大、越来越长。
再一个,如果使用了八云紫大大的物品仓库系统的话,又会带来一个问题:
3.lass Game_Party < Game_Unit
alias initialize_currency initialize
def initialize
initialize_currency
@warehouse_item = {} # 仓库物品
@warehouse_weapon = {} # 仓库武器
@warehouse_armor = {} # 仓库防具
@warehouse = [@warehouse_item, @warehouse_weapon, @warehouse_armor]
end
解决方案:
- #游戏终极优化系统 作者:crow2006 【屠魔勇士】的游戏作者 from 66RPG
- #适用于使用P叔随机属性系统+八云紫物品仓库系统的游戏,能让游戏速度恢复到初始状态
- #如果没有使用物品仓库系统,脚本中涉及的部分请自行删改
- #如使用了物品仓库系统,使用本功能前玩家需自行将仓库内所有武器与防具取到背包里
- #请各位大大优化一下脚本,我技术很渣,只能写成这样很臭的,但确实发挥作用了。。。。
- #使用方法:事件脚本:$game_party.cleardata
- class Game_Party < Game_Unit
- def warehouses #仓库中的武器装备
- result = []
- for i in $game_party.warehouse[1]
- result.push($data_weapons[i[0]]) if i[0] != nil
- end
- for i in $game_party.warehouse[2]
- result.push($data_armors[i[0]]) if i[0] != nil
- end
- return result
- end
-
- def equipments #角色身上的武器装备
- result = []
- for i in 1...$data_actors.size
- result += $game_actors[i].equips unless $game_actors[i].nil?
- end
- return result
- end
-
- def delete_equipments #平时可用$game_party.delete_equipments来清除所有身上没穿的、包里没放的、仓库中也没存的垃圾数据,但并不治本。
- saved_equips = $game_party.items + $game_party.warehouses + $game_party.equipments
- for i in 0...$data_weapons.size
- $data_weapons[i] = nil unless saved_equips.include?($data_weapons[i]) unless $data_weapons[i].nil?
- end
- for i in 0...$data_armors.size
- $data_armors[i] = nil unless saved_equips.include?($data_armors[i]) unless $data_armors[i].nil?
- end
- end
-
- def cleardate #终极清理大招
- delete_equipments
- for m in 1...$data_actors.size
- for a in 0..11 #卸下装备(注意:如果使用了装备扩张系统,这里的11必须要根据游戏作相应调整)
- $game_actors[m].change_equip(a,nil)
- end
- end
- item1 = [] #武器
- item2 = [] #防具
- @warehouse_weapon = {} #仓库里的武器清空
- @warehouse_armor = {} #仓库里的防具清空
- $game_party.warehouse[1] = {} #仓库里的武器清空
- $game_party.warehouse[2] = {} #仓库里的防具清空
- $base_weapons = load_data("Data/Weapons.rvdata") #还原武器
- $base_armors = load_data("Data/Armors.rvdata") #还原防具
- saved_equips = $game_party.items
-
- a1 = 1
- for i in $data_weapons
- if i != nil and saved_equips.include?(i)
- i.id = a1
- item1.push(i)
- a1 += 1
- end
- end
- $data_weapons = [nil]
- for i in item1
- $data_weapons.push(i)
- end
- @weapons = {}
- @weapons[0] = 0
- for i in $data_weapons
- if i != nil
- a = i.id
- @weapons[a] = 1
- end
- end
-
- a1 = 1
- for i in $data_armors
- if i != nil and saved_equips.include?(i)
- i.id = a1
- item2.push(i)
- a1 += 1
- end
- end
- $data_armors = [nil]
- for i in item2
- $data_armors.push(i)
- end
- @armors = {}
- @armors[0] = 0
- for i in $data_armors
- if i != nil
- a = i.id
- @armors[a] = 1
- end
- end
- end
-
- end
复制代码
|
|