大家好!本帖继承FIFA21MOD日志,分享一些个人制作FIFA22国家队mod的一些心得和日志,主要目的是为了有兴趣制作相关mod的朋友,包括我自己以后有迹可循,方便查找,快速定位问题少走弯路。

错误日志分为两个部分,第一部分是编辑赛事结构时,compdata文件编辑容易常见的问题,第二部分是编辑存档squad或数据库DB文件时,容易出错的问题

首先附上编辑赛事结构的英文教程:Compdata赛事结构编辑教程(英文)【点击进入下载《《《

一、新增球队和赛事文件编辑注意事项
1、新增国家队或联赛球队
需要先修改名单,再导入相关表格到DB(以免俱乐部转会界面产生重复球员bug),涉及修改的名单表格包括:teams、teamplayerlinks、teamstadiumlinks、leagueteamlinks、formations、 players、dcplayernames、teamkits、teamnationlinks、default_mentalities、default_teamsheets、defaultteamdata(仅在DB)、nations(仅在DB,合并世预赛使其分组可见需要修改)、broadcastleague(仅在DB,具体功能不明)。

注意:如果涉及联赛球队修改,比如增加巴甲和中超球队,在编辑leagueteamlinks时,需要将previousyearposition也按顺序改了(否则会导致联赛最后一场闪退),default_mentalities default_teamsheets、defaultteamdata这三个文件主要控制阵容修改和复原,理论上可通过前面的文件自动生成(需进游戏利用编辑模式生成),减小工作量。如需更新冬季转会,还会涉及导入官方最新名单里的fixtures、dcplayernames、playerloans、playerformdiff、previousteam、teamformdiff、ucc、gpucc、version、rivals、player_grudgelove、bannerplayers这几个文件,否则会导致进入球队阵容闪退。

2、新增赛事
目前需要修改的Compdata文件包括advancement、compids、compobj、competition、initteams、schedule、settings、standings、tasks、internationals、preseasontour(仅合并世预赛使其分组可见需要修改)

(1)在修改compobj时,应在友谊赛前后增加赛事(以免产生倒数第二个国家队赛事闪退),只需在最右的父子关系代码关联到国家或大洲即可,无需整体平移;
(2)如不得已需要平移,在修改settings时,记住advance_maxteamsstageref、advance_pointskeep、advance_standingskeep、advance_standingsrank、advance_teamcompdependency、schedule_use_dates_comp、standings_checkrank、rule_suspension、schedule_forcecomp这几个关键字需要同时修改;在修改tasks时,除修改第四列外,FillFromCompTable、UpdateTable、FillFromCompTableBackupLeague、FillFromCompTableBackup还需修改第五列,其中FillFromCompTableBackup第六列也要修改。
(3)在修改competition表时,通过修改competitioncolor可定义赛事颜色,通过将iscenterpitchflagenabled改成1、iscenterpitchflagenablestage改成0可实现中圈大型抖动旗帜、将isteampitchflagenabled改成0可取消赛前球队旗帜展示,将introantemidle和introteampotrait改成1可实现开场阵容动画介绍

二、Compdata常见问题
(一)跳出、闪退
情形一:选择经理模式后马上闪退
原因:Compdata文件里部分文件或全部文件格式有误,比如多了空格、多了空行、多了逗号,导致游戏不能读取文件

情形二:经理模式能选择球队但读取界面闪退
原因一:Compobj里ID未连续或ID间逻辑关系、父子关系代码错误,导致游戏不能正确读取完整赛事
原因二:standings.txt文本行数超限

在FIFA里,standing.txt是优先决定能新增多少赛事的关键,例如FIFA22如果standings超过5778行会导致自定义锦标赛无法选择64队分组,如果超过5886行会导致自定义锦标赛无法选择32队分组,如果超过5974行会导致自定义锦标赛无法选择8队分组且造成无法进入生涯模式(因为季前赛同样是8队两组,经理模式可跳过季前赛但球员模式根本无法跳过),如果超过更多可能导致经理模式阿根廷联赛跳出,直至引起更多standing里靠上联赛在读取生涯模式时跳出

情形三:能进经理模式但是模拟到特定日期闪退
原因一:Compobj结构问题
1、欧洲区预选赛和欧洲杯预选赛不能直接分组后不加附加赛,必须在小组分组之后继续设置附加赛setup stage和附加赛group stage(只设置其中一个也会闪退),否则会在7月结束跳到8月时闪退
2、亚洲区预选赛分组后可以像欧洲区预选赛一样同时设置附加赛setup stage和附加赛group stage,这样不会闪退
3、赛事不能放在compobj最后面,赛事放到compobj的最后面,会导致这个赛事在他本应开赛的前一个月跳出
4、国家队赛事不能放在compobj友谊赛ID后面,且不能是最后一个国家队赛事,否则会导致模拟到这个国家队赛事的某一轮跳出。 也就是说只要友谊赛后面这个国家队赛事后面还有国家队赛事,它就不会跳出,因为会跳出的是它后面那个最后的国家队赛事。

原因二:schedule冲突
杯赛赛事schedule设置冲突,会导致其他的联赛在5月或8月闪退,冲突联赛冲突日程后的比赛消失,比如6月开赛的大洲内国家队杯赛如果和同一个大洲的联赛日程有冲突,会导致那个联赛在冲突的日程之后的比赛消失,同时导致选择8月开赛其他联赛闪退,包括8月开赛的其他大洲联赛
原因三:其他文件与Comobj逻辑不匹配
如果Compobj里一项赛事本身结构没问题,但是和他关联的其他重要compdata文件,比如settings、advancement、task和它逻辑不匹配(少设置或多设置、错设置),都会导致这个赛事在赛事前的一个月到最后一轮期间任意时刻跳出。比如世界杯预选赛,task没有设置对晋级规则和排名,会导致这个预选赛不能理解最后怎么晋级,导致在模拟到这个赛事最后一轮时闪退。

情形四:经理模式参加季前赛跳出、生涯(球员)模式开档闪退、自定义锦标赛闪退
原因:standings.txt文本行数超限
在FIFA里,standing.txt是优先决定能新增多少赛事的关键,例如FIFA22如果standings超过5778行会导致自定义锦标赛无法选择64队分组,如果超过5886行会导致自定义锦标赛无法选择32队分组,如果超过5974行会导致自定义锦标赛无法选择8队分组且造成无法进入生涯模式(因为季前赛同样是8队两组,经理模式可跳过季前赛但球员模式根本无法跳过),如果超过更多可能导致经理模式阿根廷联赛闪退,直至引起更多standing里靠上联赛在读取生涯模式时闪退

情形五:游戏主界面选择欧冠、南美解放者杯跳出
原因:compobj里欧冠、解放者杯前置ID与游戏默认不符
欧冠、解放者杯不能改变游戏默认的在Compobj的前置ID,比如欧冠在Compobj里的前置ID是108,不能改动,如果改动,经理模式可以玩,但是要玩主界面的欧冠赛事就会闪退。

(二)赛事消失或乱入
原因一:schedule和同一国家或同一大洲内的赛事冲突
赛事schedule设置冲突,会导致游戏选择一个重要值更高的赛事正常比赛,重要值低的赛事冲突日程后的比赛消失,比如6月开赛的大洲内重要值更高的国家队杯赛如果和同一个大洲的重要值更低的联赛日程有冲突,会导致那个联赛在冲突的日程之后的比赛消失

原因二:其他文件与Compobj逻辑不匹配
如果Compobj里这项赛事本身结构没问题,但是和他关联的其他重要compdata文件,比如settings、advancement、task和它逻辑不匹配(少设置或多设置、错设置),会导致与这个赛事关联的其他赛事消失。比如世界杯预选赛和世界杯的task没有设置对晋级规则和排名,会导致预选赛不能理解最后怎么晋级,导致世界杯消失或无法产生。

原因三:compobj友谊赛前国家队预选赛数量超限
compobj友谊赛前国家队赛事(包括杯赛和预选赛)不能超过一定数量,目前测试是4-5个(具体不明确,也可能和赛事自身的内部代码有关),如果增加一个,可能会导致增加的那个预选赛和友谊赛赛程重叠(即友谊赛乱入),如果增加两个,预选赛正常,但可能会导致友谊赛消失。通过删除setting里schedule_use_dates_comp行,只保留schedule_internationaldependency行,同时去掉9月和10月的友谊赛日程只保留11月和3月的友谊赛日程(友谊赛日期不能变,如果友谊赛日期变了会导致欧冠、英格兰卡拉宝杯等赛事部分日程消失),这样可在解决预选赛与友谊赛的重叠问题的同时实现预选赛和友谊赛同时正常开展(预选赛11月和3月日程分别改到12月和次年1月)。通过这样操作FIFA22友谊赛前国家队赛事可以有世界杯、欧洲区预选赛、欧洲杯预选赛、亚洲区预选赛、非洲区预选赛、南美区预选赛、北美区预选赛、亚洲杯、非洲杯、欧洲杯10个国家队赛事,但是再增加一个就会导致友谊赛消失。

(三)球队消失(赛事存在但是参赛球队全是灰色图标,可以模拟比赛但是比赛结果清一色0:3或3:0)
原因:Compobj里这项赛事本身结构没问题,但是和他关联的advancement球队晋级规则设置有误,导致这个赛事不能理解让哪些球队晋级,导致球队全是灰色图标。

(四)解放者杯巴甲晋级球队不准确问题
原因:task表需要将增加成18队的巴甲重新设置,例如FillFromSpecialTeamsWithNation,1656,1,54,0改成FillFromLeagueMaxFromCountry,1656,7,1,8

三、database或名单编辑常见问题
(一)经理模式新增国家队球员无故减少
原因:DB文件或者名单文件里的teamplayerlinks、leagueteamlinks存在不连续的artificialkey

(二)新增球队黑白鞋问题
原因:DB或者名单里的players文件,存在游戏不支持的shoetypecode

(三)新增球队光头问题
原因:DB或者名单里的players文件,需将headclasscode由0改为1

(四)新增球队教练光头并穿着默认白色训练T恤
原因:没有在DB或者名单里的manager文件里添加新增球队的教练数据,且需要复制原版教练相关头型发型代码

(五)新增球队进入比赛闪退
原因:DB或者名单里的teamplayerlinks文件里,存在相同ID的首发球员

(六)巴西俱乐部开档生涯模式在7月第一天闪退
原因:一般是因为官方更新了legacy里的db文件,需要导出基于官方更新前mod所有的db文件(不只是fifa_ng_db),导入到基于官方更新后的mod db文件里。

(七)球衣生涯无法用自创球员开档新增的俱乐部球队
原因:控制teamnationlink表和manager表大小的fifa_ng_db-meta没有修改增加最大行数
需要打开fifa_ng_db-meta,搜索teamnationlink和manager表,根据增加的球队数量分别将maxinsert的数值适当改大。

(八)增加到一定数量国家队,下一个国家队无法编辑国家队阵容,因为没有球员
原因:控制teamnationlink表和manager表大小的fifa_ng_db-meta没有修改增加最大行数
需要打开fifa_ng_db-meta,搜索teamnationlink和manager表,根据增加的球队数量分别将maxinsert的数值适当改大。

(九)生涯模式进入球队阵容闪退
原因:没有导入官方fixtures、dcplayernames、playerloans、playerformdiff、previousteam、teamformdiff、ucc、gpucc、version、rivals、player_grudgelove、bannerplayers这几个文件,主要是playerloans和previousteam.