| 赞 | 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  
 
  复制代码 
 
 
 |   
 
 
 
 |