
首先,HAWX2里面为了制作管卡方便,程序内部提供了解锁飞机,皮肤,关卡的接口.而且是lua格式写的,这使得我们修改非常方便. 首先我们看Data\Content\planes.lua这个文件. 这个文件是UBI官方的关卡制作器生成的,他依赖于上层的文件:inicache.bin.所以不是所有的修改都会生效. 注意:planes.lua内的文件数据结构直接对应你的存档文件结构,所以修改planes.lua的数据结构必定会对你的存档造成影响,比如一些解锁的飞机消失了,一些解锁的皮肤消失了.此时,你的存档内需要有一定的PEC点数用于修改后再次解锁飞机.或者用存档清零的办法。 打开planes.lua,我们看到类似的代码:01. 02.planes = { 03. { 04. Id = "MIRAGEIVP", 05. Maneuverability = 5, 06. Speed = 6, 07. Resistance = 6, 08. AARating = 3, 09. AGRating = 7, 10. Payload = 5, 11. Pic = 28, 12. Dem = "dem_Mirage_IV_P_player", 13. MaxPayload = 8000, 14. AircraftCountry = {AC_PERESTROIKA,AC_PRESENTDAY}, 15. Models = { 16. {"Data/Models/plane_playable/Dassault_Mirage_IVP.xatg","Data/models/cockpits/dassault_mirage_2000_5_Cockpit.bing"} 17. }, 18. WPacks = { "wp_rl2_ffb_cb" }, 19. XPUnlockTable = 20. { 21. -- xp, unlock object type, unlock object id 22. { XP = 5, ObjType = UOT_UPGRADE, ObjId = "PM_MIV_1_RocketSpeed" }, 23. { XP = 15, ObjType = UOT_WEAPON_PACK, ObjId = "wp_gp2_agm_pb" }, 24. { XP = 22, ObjType = UOT_UPGRADE, ObjId = "PM_MIV_3_FFAoE" }, 25. { XP = 30, ObjType = UOT_CUSTOM_WP, ObjId = "" } 26. } 27. },复制代码01. Id = "MIRAGEIVP",复制代码 这个是内部飞机ID,不可修改.01. Maneuverability = 5, 02.Speed = 6, 03.Resistance = 6, 04.AARating = 3, 05.AGRating = 7,复制代码 这些是飞机的一些参数,只是负责显示数值,跟飞机实际性能无关.01. Pic = 28, 02. Dem = "dem_Mirage_IV_P_player",复制代码 内部参数,勿修改01. 02.Models = {复制代码 模型定义01. 02.WPacks =复制代码 默认武器包01. 02. XPUnlockTable复制代码 重点来了,这就是飞机的熟练度解锁表格. XPUnlockTable原理上支持无限个Unlock,但是由于程序只支持显示5+1个,多余的内容虽然功能上不影响,但是会影响显示效果. XPUnlockTable的内部功能函数: UOT_UPGRADE(飞机技能) UOT_WEAPON_PACK(飞机武器包) UOT_CUSTOM_WP(自定义武器包) UOT_SKIN(皮肤) 添加解锁表格的格式为:01.{ XP = (经验值), ObjType = (功能函数), ObjId = ("物品ID") },复制代码 举例:修改F-15经验值到达5的时候解锁SKIN201.{ XP = 5, ObjType = UOT_SKIN, ObjId = "Data/Models/plane_playable/skin2_F-15C_Eagle.xatg" }复制代码 解锁DLC的皮肤和武器包可以用这个办法解锁. 但是如何解DLC的飞机和关卡呢? 不要着急,下面就有办法. 虽然使用常规的办法不能得到DLC的新飞机,因为没有相关的函数接口.但是UBI非常可爱的提供了一个Uplay奖励机制. 这个机制就在Data\Content\content.lua下面. hawx2程序运行得时候,会先连接到服务器,查看你的帐号Uplay奖励内容,然后再读取常规存档内容.我们利用的就是这一点. 打开content.lua,移动到306行,01.function Uplay_UnlockReward1() 02.-- first Uplay reward is actually a XBox360 theme 03.end 04. 05.function Uplay_UnlockReward2() 06.-- unlock weapon pack 3 for A-10 07.-- Uplay_UnlockSkin("A10", "Data/Models/plane_playable/A-10_Thunderbolt_II.xatg") -- make sure the plane is unlocked复制代码 这里就是Uplay奖励的功能函数部分. 我们可以看到Uplay解锁有4个功能段: Uplay_UnlockReward1 Uplay_UnlockReward2 Uplay_UnlockReward3 Uplay_UnlockReward4 这四个分别对应你在Uplay官网的奖励,我们选择需要Uplay点数最低的A-10 FULLY loaded来修改. 我们可以用的函数有以下几个: Content_AddWPackForPlane(添加飞机武器包) Content_SetPlaneUnlocked(解锁飞机) Uplay_UnlockSkin(解锁皮肤) Uplay_UnlockMission(解锁关卡) 格式例子如下:01.Content_AddWPackForPlane("FA-18E", "wp_F18_ULC") 02.Content_SetPlaneUnlocked("PAKFA") 03.Uplay_UnlockSkin("F15", "Data/Models/plane_playable/skin3_F-15C_Eagle.xatg") 04.Uplay_UnlockMission("MP14_White")复制代码 其中,飞机名字/武器包的名字/皮肤的定义/关卡的名字,必须是内部ID。这些ID你可以在planes.lua和missions.lua找到。 Uplay的这个漏洞非常强大,但是也有限制,比如UBI想封的话也很简单,又比如,如果游戏本题的破解版出来了,用破解版的将不能使用这个漏洞。 最后祝大家游戏愉快。
