Project1
标题:
游戏存档变大问题解决方案
[打印本页]
作者:
crow2006
时间:
2017-5-20 12:33
标题:
游戏存档变大问题解决方案
本帖最后由 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
复制代码
作者:
fux2
时间:
2017-5-21 09:40
直接在出售和事件增减道具的方法中清理相应数据就可以了。
作者:
chd114
时间:
2017-7-8 20:15
就是变成了空吧···如果能移除掉会更好?不过那样的话就要把存在的装备重新调整一下···
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1