rilke1987 Posted November 27, 2013 Share Posted November 27, 2013 Hey guys, nice to meet you here. I'm actually a newbie for modding XCOM. For now I could hex edit some functions' varaibles or constant. Thanks for the info provided by all of you. But recently when I try to modify some function in the Xcomstrategygame.UPK which means to add something and delete something, the game crashed. Before I started the game, I checked with UE and found nothing wrong: the function's complete and makes sense. Then I check the log file and found this: 0005.37] DevSHA: FSHA1::StoreFileSHAHash - FullFileSHAHashMap: onlinesubsystemsteamworks.upk Hash(B4224F7E713EE1C8ADA83DAD688747610B5BE7ED) VerifyHash(18011317310411) PackageHashString(18011317310411#) [0005.37] DevSHA: FSHA1::StoreFileSHAHash - FullFileSHAHashMap: xcomgame.upk Hash(CBA7A3FECC4D76D95E1D234F7CBB64D9899C7B5E) VerifyHash(20320494124137) PackageHashString(20320494124137#) [0005.37] Critical: appError called: Bad export index 774265191/22444 The last line occurs excatly when the Xcomstrategygame.UPK being checked. According to the wiki and forum talk, it's no hash check for EW anymore, then what's this and how to make it work. BTW, My game verstion is latest steam one. Link to comment Share on other sites More sharing options...
bokauk Posted November 27, 2013 Share Posted November 27, 2013 Did you correct the virtual size of the function? The wiki seems to be down at the moment, so I can't point you to more info, but the virtual size is at offset 40 (decimal) from the start of the function (I think).I believe Bertilsson has a tool that corrects jump offsets, not sure if it also corrects the virtual size.From what I remember, the virtual size should be one less (or more?) than the last token. It's been ages since I've done this, so sorry about the vague details.Hopefully the wiki will be up soon and I think it might have more specific instructions than I can give you off the top of my head :smile:I might be completely off, but just an idea to double check it has you hadn't mentioned it.Also might help if you post your code and bytecode because "modify some function in the Xcomstrategygame.UPK which means to add something and delete something" is almost as vague as my answer :wink:http://wiki.tesnexus.com/index.php/Category:XCOM_Modding Link to comment Share on other sites More sharing options...
rilke1987 Posted November 27, 2013 Author Share Posted November 27, 2013 Did you correct the virtual size of the function? The wiki seems to be down at the moment, so I can't point you to more info, but the virtual size is at offset 40 (decimal) from the start of the function (I think). I believe Bertilsson has a tool that corrects jump offsets, not sure if it also corrects the virtual size. From what I remember, the virtual size should be one less (or more?) than the last token. It's been ages since I've done this, so sorry about the vague details. Hopefully the wiki will be up soon and I think it might have more specific instructions than I can give you off the top of my head :smile: I might be completely off, but just an idea to double check it has you hadn't mentioned it. Also might help if you post your code and bytecode because "modify some function in the Xcomstrategygame.UPK which means to add something and delete something" is almost as vague as my answer :wink: http://wiki.tesnexus.com/index.php/Category:XCOM_Modding Thanks very much and I completely forget the virtual size thing. I'll check the Wiki when it's back online and make further change on my code; The code I change is about to add more alien(while still 3 per pod) into game by change the "determine*" function in the UPK, my idea is to cutoff some code which change the number with difficulty and make them the code to add more pod (by arrTypes.AddItem) Link to comment Share on other sites More sharing options...
wghost81 Posted November 27, 2013 Share Posted November 27, 2013 There is limited number of spawn points per map, so you can't just increase number of pods. BTW, ProcessPodTypes can mess up your numbers for UFO missions, as it randomizes and clamps iNumPods and iNumAliens. Link to comment Share on other sites More sharing options...
Bertilsson Posted November 27, 2013 Share Posted November 27, 2013 (edited) Thanks very much and I completely forget the virtual size thing. I'll check the Wiki when it's back online and make further change on my code;The tool bokauk mentioned would be this one:http://hem.bredband.net/bertrich/XCOM/JumpRepairTool.htm It will verify and repair virtual memory size in the function header in addition to repairing jump offsets. Edit: Just ignore the red boxes and moronic warning that bytes doesn't match tokens in case you have 0B tokens in the function. Edited November 27, 2013 by Bertilsson Link to comment Share on other sites More sharing options...
rilke1987 Posted November 28, 2013 Author Share Posted November 28, 2013 Thanks very much and I completely forget the virtual size thing. I'll check the Wiki when it's back online and make further change on my code;The tool bokauk mentioned would be this one:http://hem.bredband.net/bertrich/XCOM/JumpRepairTool.htm It will verify and repair virtual memory size in the function header in addition to repairing jump offsets. Edit: Just ignore the red boxes and moronic warning that bytes doesn't match tokens in case you have 0B tokens in the function. Thanks indeed and it's truly the virtual size thing problem and I've manged to fix it by all the help from you guys. Link to comment Share on other sites More sharing options...
rilke1987 Posted November 28, 2013 Author Share Posted November 28, 2013 There is limited number of spawn points per map, so you can't just increase number of pods. BTW, ProcessPodTypes can mess up your numbers for UFO missions, as it randomizes and clamps iNumPods and iNumAliens. I've tried and....Yes, the spawn points limitation is the rock blocking. And I've checked more into the Function ProcessPodTypes. I think it is to ensure the number of pods is from the Aliensnum/3 to Aliensnum/2 which means 3 Alien per pod max and 2 Alien per pod min. I can see how it will change the iNumAliens since it only works when the iNumaliens is more then 3*Arrtypes.Length ( Which I think is the podnum itself) and pulls the iNumaliens back to 3*Arrytype.Length Link to comment Share on other sites More sharing options...
wghost81 Posted November 28, 2013 Share Posted November 28, 2013 Yes, iNumPods = Arrtypes.Length. ProcessPodTypes is used to limit number of pods and randomize number of aliens. If resulting iNumPods is less than Arrtypes.Length, function randomly removes entries (pods) from Arrtypes. Link to comment Share on other sites More sharing options...
rilke1987 Posted November 29, 2013 Author Share Posted November 29, 2013 Yes, iNumPods = Arrtypes.Length. ProcessPodTypes is used to limit number of pods and randomize number of aliens. If resulting iNumPods is less than Arrtypes.Length, function randomly removes entries (pods) from Arrtypes. I've succeed increase the alien's number after I've read the "Increase Pod Size" article(http://forums.nexusmods.com/index.php?/topic/992479-increased-pod-size/) here. The way Amineri used still works except the hex code of those two involved functions is different now since the EW addon thing. But I'm not using the .altweapon as a ubound of alien number. I just simply defined a variable "I" and give it a certain number. And further more I didn't change anything in the initloadout function and saw no affect till now. So if you know anything about the reason why the initloadout be modified, please kindly give me some hints. Link to comment Share on other sites More sharing options...
Recommended Posts