Notes:
- external configuration file: mapclean.cfg
- removes unnecessary sections added by FA2
- now able to add whole new sections to the map
- now can add/remove/modify tags within existing sections
- batchfiles included to scan *.mpr and *.yrm - doesn't like spaces!
- will scan/clean whatever file extension you use with your mod too
- better sanity checking to avoid crashing on say non-map files?
So this update was partly to be able to auto-remove certain YR specific flags that the old one couldn't, like the Dominator lighting, but the code was extended beyond that to modify values or add new ones. Thus you could batch-modify all your maps to have correct Ion Storm lighting, or add some building you want disabled on your maps just as easily. Another useful possibility is removing all CellTags, Triggers, Waypoints etc from conversion maps, simply by adding the respective headings to the [Remove] section of the config file.
I tried getting the code to accept drag-n-drop maps, but because of the way filenames are passed it seems to be problematic, nested within itself, and will vary by platform. The only sure way to run it is from the commandline, or specify the mask in a batchfile.
Bleh! 2.1 up because some code optimization changed the order of the map and the game borked!
This includes a number of parsing changes and check.log formatting improvements, there isn't a whole lot new over the last release in terms of features or checks, except that you can now pass custom map filters to it in the form of a filemask, not just use the included "multi" and "multiyr" shortcuts. The writespecialreqs option now outputs the RequiredHouses/ForbiddenHouses more compactly, and now outputs the RequiresStolenXXXXXTech's units/buildings as well in check.log -- perhaps a good overview of how many stolen techs each house or side gets.
Some reference documentation has been included as well, it isn't a comprehensive tome of information, but it should clarify what needs to be prepared for the script to function properly, and what you can expect regarding compatibility with mods, Ares, YR in general.
Updated to SOUNDCHECK 2.0 because I'm on a roll like that...
This release now checks audio.idx for possible missing .wav files! Common mistake caused by removing/renaming, or someone forgot to include them. *cough*
Enable/disable advancedscan in the script, and make sure audio.idx/audio.bag are in the RA2 directory with the other necessary .ini files to use this function.
Hahah AICLEAN has that function but it can be disabled when you edit the settings....
I added that because half my name tags are garbage and it seemed more professional to rename them to something generic, with the added bonus of marking them as mine _________________ http://www.moddb.com/mods/scorched-earth-ra2-mod-with-smart-ai QUICK_EDIT
Now supports OpenTopped exemptions for the recent transport/passengers checks of the last release, and should reduce false-positive errors on YR/Ares setups.
This release adds a specific check for the unusual circumstance of having no Sounds= list in a particular sound object, previously it would only flag a sound with no data at all.
I don't expect this to be a common issue, since it really could be a simple typo, but that's the scenario that prompted this update, and having this check would have made it easier to troubleshoot.
I have recently had trouble with a map I've created (a random error/crash), so I thought I'd give your Mapclean tool a try, and firstly congratulations on your efforts making such tools.
I have never tried to run such a tool, and don't have much experience using with these sort of programs, but I gave it a go. I downloaded the tcl program, downloaded your tool, and with no readme/instructions to follow I did manage to work out how to run it. I have placed your tools in the directory of tcl, as well as the map I'm testing it on (a copy of my problematic map I'm working on). I've taken a screenshot which I've attached.
At first I tried to run it for the original file which had a very odd, unique corruption, and it failed to run. See file 'rwfLB.mpr'.
Then I tried to run it on another file I made, which had partially rescued my original map,
On the good news front, after running your Mapclean2, it renamed the rescued map copy file as .OLD, and saved the new file as the original name, as intended I believe. See file 'ruwiforescued3lb'.
Can you tell me what exactly it did or added? I see it increased the file size. I am unable to test the map until I get home tomorrow. I accept it by no means acts as a guarantee to fix the issue, but I thought I would see what it does. I think I'll post a thread about this problematic map soon for more clarity.
Hah ok, first thing, you don't have to run these from within tclsh, batchfiles work best since tclsh is installed in your %PATH% anyway. You can just open a normal prompt and type: tclsh <stuff>. You should never have to browse to the ActiveTCL files for any reason.
Secondly, given your other thread, there's nothing MAPCLEAN will really do for you, it doesn't modify the terrain or overlay packed sections at all. I further explain why your current issue is also likely not corrupted map data itself, only the possible layout.
Hah ok, first thing, you don't have to run these from within tclsh, batchfiles work best since tclsh is installed in your %PATH% anyway. You can just open a normal prompt and type: tclsh <stuff>. You should never have to browse to the ActiveTCL files for any reason.
Secondly, given your other thread, there's nothing MAPCLEAN will really do for you, it doesn't modify the terrain or overlay packed sections at all. I further explain why your current issue is also likely not corrupted map data itself, only the possible layout.
Now, the other part of the answer was that it could be AI errors, and for that AICHECK/AICLEAN are the tools you want to be using -- if you aren't already.
Hi G-E, thanks for some advice. I genuinely had no idea of how to run it, so this was me just working it out in my own backward way. So I can just run it via normal command prompt via the start menu? Sounds easier for sure. I read how you recommend to place your mapclean and other tools / batch files directly in the game directory, which is something I will consider doing in the future; I have protocols when I update my game/mod's directory, namely backing it up twice, before proceeding to alter the current build, in case of something unexpected.
Yeah, I wasn't sure if the mapclean tool would perhaps leave me with some kind of report/log to hint at what may be causing an error.
As for the AI, I have not made any map-specific alterations here, and my AI runs fine on any other map. That's not to say I won't consider trying your AI tool in the near future though. Which leaves me still puzzled at this issue QUICK_EDIT
MAPCLEAN comes with batchflies that will scan all the maps, you can edit them if you use another extension like .map or something for your mod. Then you can double-click without having to navigate to your game from the prompt.
I'll update MAPCLEAN soon, I was looking at the initiation code and see a few things I can improve, thus on a commandline you should be able to specify not only fileamsk (*.map) but a list of filenames and filemasks together should you choose.
I have batchfile I didn't appear to include, I named it _mc_.bat which has %1 as the argument, thus if I open a prompt in my game dir, I can type "_mc_ mynewmap.mpr" and it is done. _________________ http://www.moddb.com/mods/scorched-earth-ra2-mod-with-smart-ai QUICK_EDIT
Improves file loading code, and should handle spaces in filenames as well now. Also because of this, the correct error is shown when no files are specified.
Also including _mc_.bat to make it easier to drag-and-drop maps onto that instead of using commandline.
So all mapcheck does is neaten the map's code? I've downloaded that updated version anyway. I will give the other tools a go too like I mentioned. QUICK_EDIT
So all mapcheck does is neaten the map's code? I've downloaded that updated version anyway. I will give the other tools a go too like I mentioned.
Read the mapclean.cfg it allows you to batch replace or remove stuff too.
Like you could have custom game modes FA2 can't write in, or you have specific lighting settings you want to use as a baseline. In my case I remove some YR specific junk along with irrelevant single player code.
You can use AICHECK to scan maps for invalid objects (except overlays) since it fully parses rules.ini and can cross-check. Very useful when converting maps you didn't make to your mod. See documentation. _________________ http://www.moddb.com/mods/scorched-earth-ra2-mod-with-smart-ai QUICK_EDIT
So all mapcheck does is neaten the map's code? I've downloaded that updated version anyway. I will give the other tools a go too like I mentioned.
Read the mapclean.cfg it allows you to batch replace or remove stuff too.
Like you could have custom game modes FA2 can't write in, or you have specific lighting settings you want to use as a baseline. In my case I remove some YR specific junk along with irrelevant single player code.
You can use AICHECK to scan maps for invalid objects (except overlays) since it fully parses rules.ini and can cross-check. Very useful when converting maps you didn't make to your mod. See documentation.
Got it, thanks for wording it in a way I understand. QUICK_EDIT
AICHECK 5.6b:
- added additional checks for AI side mismatch in scripts
- fixed a bug with side detection (see above) on civilian buildings
- better list index checking
AICLEAN 5.7:
- now cleans art.ini of comments and empty lines
- fixed catastrophic bug with the rules cleaner
- improved comment handling
I'd like to thank you for this tool as it helped me find a lot of duplicants I apparently had.
I've only got one thing I am confused about; it's telling me the ordering of my [WeaponTypes] and [Projectiles] is wrong, although I haven't got a clue as to why.
Testing it on a mod based on YR, so that may be why but I'd figure I'd tell you anyway. QUICK_EDIT
Basically what it does is telling the order is wrong of [WeaponTypes] And projectiles.
So what it looks like is
[WeaponTypes]
incorrect ordering or duplicate index found = 0=NotAWeapon
.....
.....
And then proceeds to list ALL of my weapon types.
It does the same for [Projectiles]
Then again I am quite new so it could be that there is something I don't know of.
I'd also like to inform you about some other issues I was having. Granted they are not big issues, since they are quite easy to ignore.
1. When checking VehicleTypes, InfantryTypes, BuildingTypes & AircraftTypes, the tool is having issues with understanding Prerequisites that are in [GenericPrerequisites] thus it gives an error such as:
[LROSTY] -> undefined BUILDING for Prerequisite: ALLRAX
2. The tool has issues with finding buildings/data when the building is an upgrade/plug. (Has a tag like: PowersUpBuilding=GAPOWR)
[GAPOWRUP] -> BUILDING not found or no data
Aside from that, the tool has been working perfectly for me and I'd like to thank you for it.
Again, I may just be dumb/ unexperienced and the issues are caused on my side rather than the program. In that case I apologize. QUICK_EDIT
For the weapons error, that sounds you have one or more lower numbers index after higher ones, though [WeaponTypes] itself is not part of the original Westwood code, so it wouldn't actually do anything with that information.
For the second part, it's a similar answer, [GenericPrerequisites] is not Westwood code, and none of the scripts have been made Ares compatible.
I do try to make sure the tools don't conflict with other programs, but I don't use Ares in my mod, and Ares itself is a moving target in terms of features and dependencies. Any ares support beyond the very basic would require constant attention if not revision... and could potentially require a whole new fork of the script if the original checks conflict with Ares checks, or vice versa.
As it stands, barring a few false positives and believing newer features exist, the scripts are mostly compatible with TS too, which is as broad as I can make it. _________________ http://www.moddb.com/mods/scorched-earth-ra2-mod-with-smart-ai QUICK_EDIT
I am still very interested in your program and use it every time i mod.
What I would like to see:
1: Elimination of the false positive:
example: [V3Launcher] -> WARHEAD not found or no data: Special
ModEnc:
"Warhead=Special is a really special case. It is used for spawner weapons (weapons which instead of firing spawn certain AircraftTypes to attack the target). (See Spawns.) "
2: List for customizable orphan tags that users can type in to avoid those false positives:
3. WeaponTypesList is shown as a false positive but it is a commen tool for Ares users:
processing declarations...
[WeaponTypes] -> incorrect ordering or duplicate index found: 1=WeatherFragment
[WeaponTypes] -> incorrect ordering or duplicate index found: 2=WeatherFragmentE
[WeaponTypes] -> incorrect ordering or duplicate index found: 3=WeatherStrike2
[WeaponTypes] -> incorrect ordering or duplicate index found:
etc.
4. The ability to use AICLEAN on:
- Warheads
- Superweapons
and other categories with the cfg-file,
I would love to determine the tag order like with units and buildings.
5. Option to enter custom prerequisites to avoid false positives for Ares can create prerequisite groups like proc in original yuris revenge - so it would be the same category as the one that now detects proc as a valid prerequisite in AICHECK:
checking [VehicleTypes]...
[YMDISK] -> undefined BUILDING for Prerequisite: HIGHTECH
[TWBDI] -> undefined BUILDING for Prerequisite: AIRTECH
[BZEP] -> undefined BUILDING for Prerequisite: AIRTECH
[YSTARES] -> undefined BUILDING for Prerequisite: HIGHTECH
[ZEP] -> undefined BUILDING for Prerequisite: AIRTECH
[DRONF] -> undefined BUILDING for Prerequisite: AIRTECH
[TWBD] -> undefined BUILDING for Prerequisite: AIRTECH
[MI24] -> undefined BUILDING for Prerequisite: AIRTECH
[SCHP] -> undefined BUILDING for Prerequisite: AIRTECH
6. Very important: the ability to disable deleation of everything behind a ; - this way AICLEAN becomes a superb ordering tool!
7. Allow custom sides in the TLC:
set sides(3) "YuriCountry YuriCountry_SouthPole"
8. Option to disable the unused statements.
9. There is another false positive with the AI-Script to move to a friendly building if that building is a tech building that needs to be taken by an engineer!
---- AI.INI ----
[010000F3-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000E8-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000E9-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000EA-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000EB-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000EC-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000ED-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000F4-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000EE-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000EF-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000F0-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000F5-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invali
Thank you!
Would be great and I will test it! And I got to point out, that Ares development is very stable and steady in it's approach by Alex. Those names and Lists I mentioned will not change I think and due to their use my List nearly only consists of false positives, which is a shame.
1. this is likely your letter casing, "Special" vs "SPECIAL" vs "special"... the script assumes incorrect casing is an error so that you eliminate doubt by being consistent
2-3,5. again these are Ares specific, and maybe I can add an Ares-compatible mode in the future
4. how many Superweapons do you have and how often to you play with them to need to move manipulating rules to a .cfg?
6. AICLEAN has the option to preserve inline comments (ie. your code has a comment after it) but due to the way it loads the ini, it can't attach comments on their own lines to any code block -- how can it possibly know if it was a footer or header?
7. Sides should be automatically loaded from rules.ini, the option to explicitly specify sides exists in the code, but it is overridden by what it finds -- if yours isn't finding the Sides in the code, why not?
8. AICLEAN doesn't do the same cross-checking as AICHECK, it understands very little about the rules, as an analogy: it focuses entirely on grammar... not meanings
What he means about the 1st point is that "Special" is referenced as a warhead by several launcher weapons, but no actual warhead named "Special" exists in the base game. Special is treated... well, special, by the game. _________________ New name: Sir Prize. I've switched to a new account to update to the name I've been using everywhere else for the last several years. QUICK_EDIT
1.Exactly as stated above - the warhead "special" does not exist and is a placeholder for spawner weapons from the original game, that is why i quoted ModEnc on that.
9. I use that script action, because the team has to move to an owned tech building in order to defend the right one
Ares compatibility would be a great thing for it really has no alternative in it's options and is heavily used by modders.
7. I added my additional country within the TLC-File maybe I made an oversight :/
4. I really have 30 or more SW's and constantly put in new tags from Ares; some of them are working in the background or act as things you wouldn't realize while playing. I think there is no downside to having the option to order all types like Buildings, Units, Weapons, Projectiles, Warheads, Superweapons - i just restricted to the ones with list entries for i thought that makes this ordering process work within your tool.
6. I know but somehow all my comments are gone again even though i disabled that option. Before that they were moved to the right everytime i used Aiclean. And I use Aiclean more often to order all the new tags that came up every working session with every new Ares testbuild and release version so ordering becomes a necessity.
8. I ment the unused weapons in aicheck or animations - it is nice to see but bloats the log file. I like to have some optional weapons in my code that i can later revisit - i now would have to save them elsewhere to see more clearly what is going on in the log file. Big mods have many weapons, buildings etc.
10. I forgot a false positive: -alternate desert art or snow art is presented falsely. This I think is not so important.
[TANYD] -> object ART exists but is undeclared/unused
[GGIA] -> object ART exists but is undeclared/unused
...
I would love to be able to order the artmd.ini too - it makes modding so much easier and more bug free and with the cfg-support one can easily adapt new tags, why not make it applicable to more sections, seems logical to me. Sometimes when you are creative you do a lot at once restarting the game again and again to see if it works and the last thing you think about is ordering all tags.
I think i pointed out, how much I like this tool, I even tried to understand this way of programming to make an ordering tool only out of AIClean but couldn't find the right instructions online. Yeah, I think it is great and do not hesitate to develope it more, I thank you anyway! As I said my log, due to ares usage, consists of nearly only false positives; here is a small example:
checking [InfantryTypes]...
[PTROOP2] -> undefined BUILDING for Prerequisite: HIGHTECH
[BORIS] -> undefined BUILDING for Prerequisite: FLAG
[TANY] -> undefined BUILDING for Prerequisite: FLAG
[LUNR] -> undefined BUILDING for Prerequisite: NAPILE
[DOGO] -> undefined BUILDING for Prerequisite: FLAG
[DESO] -> undefined BUILDING for Prerequisite: FLAG
[SLAVE] -> undefined BUILDING for Prerequisite: YROC
checking [VehicleTypes]...
[YMDISK] -> undefined BUILDING for Prerequisite: HIGHTECH
[TWBDI] -> undefined BUILDING for Prerequisite: AIRTECH
[BZEP] -> undefined BUILDING for Prerequisite: AIRTECH
[YSTARES] -> undefined BUILDING for Prerequisite: HIGHTECH
[ZEP] -> undefined BUILDING for Prerequisite: AIRTECH
[DRONF] -> undefined BUILDING for Prerequisite: AIRTECH
[TWBD] -> undefined BUILDING for Prerequisite: AIRTECH
[MI24] -> undefined BUILDING for Prerequisite: AIRTECH
[SCHP] -> undefined BUILDING for Prerequisite: AIRTECH
[YAGTNK] -> undefined BUILDING for Prerequisite: HIGHTECH
[IRONF] -> undefined BUILDING for Prerequisite: REPAIR
[OREIRONF] -> undefined BUILDING for Prerequisite: REPAIR
[ICHOP] -> undefined BUILDING for Prerequisite: AIRTECH
[RZEP] -> undefined BUILDING for Prerequisite: AIRTECH
[COLLECTORS] -> undefined BUILDING for Prerequisite: HIGHTECH
[YMENTNK] -> undefined BUILDING for Prerequisite: HIGHTECH
[COLLECTORSL] -> undefined BUILDING for Prerequisite: HIGHTECH
[OREIRONFI] -> undefined BUILDING for Prerequisite: REPAIR
[OREIRONFL] -> undefined BUILDING for Prerequisite: REPAIR
those are the the prerequisite groups i talked about in the first post they are under the "[GenericPrerequisites] -> unknown object/heading" header in the rules file.
What he means about the 1st point is that "Special" is referenced as a warhead by several launcher weapons, but no actual warhead named "Special" exists in the base game. Special is treated... well, special, by the game.
This is a theory written by people who just assumed that, there's nothing special about the "special" warhead, it has traits like any other warhead. If you don't believe me assign any other suitable warhead for your launcher. The capitalization was merely wrong, like so many other WW typos.
Ich-Henker: to cheat your generic prerequisite list, find this line and add yours in the same paired format with the x:
Code:
array set buildings "RADAR x TECH x BARRACKS x FACTORY x POWER x PROC x"
I'm hesitant to add any Superweapon configuration, as you say it's constantly changing, and I don't even know what all the possibilities are. It seems to me you're more likely to copy&paste the code when making new ones, so re-ordering lines would be redundant the second time? _________________ http://www.moddb.com/mods/scorched-earth-ra2-mod-with-smart-ai QUICK_EDIT
- Improved missing art logging messages
- Improved side handling, handles up to 8 sides now
- Made generic prerequisites configurable instead of hardcoded
- Added handling for AlternateDesertArt
-prerequisite groups are recognized (even Ares ones)
-snow and desert alternate images are scanned correctly
-sides automatically load from rulesmd (i think)
Thank you again and you did it very fast after mentioning it!
Good job!
Last edited by Ich-Henker on Thu May 23, 2019 6:45 pm; edited 1 time in total QUICK_EDIT
... so the writing is consistent Warhead=Special relates to no warhead; not in the warheads list nor to a section, neither in rulesmd.ini or artmd.ini.
:/
2. Dont't be hesistant with order options in the .cfg file, for we can input the tags we use on our own anyway - so the mere option is enough - same with warheads, which would be greatly appreciated
I do not want to sound greedy, keep up the good work and have a nice evening. QUICK_EDIT
Special might be hardcoded to be verses 100% on everything (default), but I'm telling you it doesn't have any special powers. None of my launchers use special and they all work.
PS. About the 58,x issue, it could be written so that the side mismatch is ignored for NeutralTechBuildings=, BUT because you'd first have to own the structure, of which there is no guarantee, I prefer to leave it as one of those errors you wilfully ignore art your own risk... _________________ http://www.moddb.com/mods/scorched-earth-ra2-mod-with-smart-ai QUICK_EDIT
I see your point with special! I could ask Alex, he can look behind the curtains. If there is no interference, i could set a ne warhead for spawners - but of course i am a bit reluctant to that.
For the script action: It is logical and i know it works ingame: a tech building becomes friendly ingame by infiltrating it with an engineer, then the trigger activates (trigger recognizes the overtaken building) thus using the script which says friendly building in order to target the now owned building.
Problem is, my art.ini part in the log looks like this now :/ :
---- AI.INI ----
[010000F3-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000E8-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000E9-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000EA-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000EB-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000EC-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000ED-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000F4-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000EE-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000EF-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000F0-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000F5-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000F1-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000F2-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000F6-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000F8-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000F9-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000FA-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000FB-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000FC-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000F7-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000FD-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000FE-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010000FF-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[01000100-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[01000101-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[01000102-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[01000103-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003B7-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003C4-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003C6-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003D9-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003B7-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003B7-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003B7-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003C4-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003C4-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003C4-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003B7-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003DA-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003DC-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[01000489-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[01000488-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003E4-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[010003E3-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
[01000447-G] -> TEAMTYPE has mismatched side for SCRIPT action, move to friendly building invalid
Haha, bit cluddered
All the best to you, hope to hear more from you and your program. QUICK_EDIT
I see your point with special! I could ask Alex, he can look behind the curtains. If there is no interference, i could set a ne warhead for spawners - but of course i am a bit reluctant to that.
If you want to be sure you can target the exact same thing the missile damages, use the same warhead on both, or use the other special case: Super. It's not rocket surgery. _________________ http://www.moddb.com/mods/scorched-earth-ra2-mod-with-smart-ai QUICK_EDIT
What he means about the 1st point is that "Special" is referenced as a warhead by several launcher weapons, but no actual warhead named "Special" exists in the base game. Special is treated... well, special, by the game.
This is a theory written by people who just assumed that, there's nothing special about the "special" warhead, it has traits like any other warhead. If you don't believe me assign any other suitable warhead for your launcher. The capitalization was merely wrong, like so many other WW typos.
I am well aware, and in fact I myself explicitly defined a [Launcher] warhead so I could control the verses values. I know that there isn't any other special hardcoding beyond just verses values, but even being able to function properly as a warhead without being defined with the appropriate warhead tags is special behavior, in my opinion.
Since as Ich-Henker pointed out, the [Special] section exists (though as a country), it makes sense that things wouldn't crash, but without a verses= tag defined, IIRC, it should default to 0% for all values, meaning the launchers wouldn't be able to fire on anything. That's clearly not the observed behavior, which suggests there's something hardcoded there. QUICK_EDIT
Game won't crash even if specified Warhead is missing entirely - no section and everything. It will however, if there's no Warhead declared on the weapon at all. There's nothing special about Warhead=Special either, game will simply use the default values of Warhead properties (for what it's worth, ModEnc's mention about Verses defaulting to 0% against everything is almost certainly incorrect and instead defaults to 100% against all). _________________ QUICK_EDIT
which then handles airburst and shrapnel weapons. That is something, by the way, that aicheck still sees as something wrong
[WeaponTypes] -> incorrect ordering or duplicate index found: 1=WeatherFragment
[WeaponTypes] -> incorrect ordering or duplicate index found: 2=WeatherFragmentE
[WeaponTypes] -> incorrect ordering or duplicate index found: 3=WeatherStrike2
[WeaponTypes] -> incorrect ordering or duplicate index found: 4=WeatherStrikeE2
Hm, still get the alternate theater art false positive on
[SEALD] -> object ART exists but is undeclared/unused
[GIA] -> object ART exists but is undeclared/unused
[GGIA] -> object ART exists but is undeclared/unused
[TANYD] -> object ART exists but is undeclared/unused
[CONSD] -> object ART exists but is undeclared/unused
and others :/
3.
I think those are false positives too:
checking [BuildingTypes]...
[GAWALL] -> BUILDING not found or no data
[GAFWLL] -> BUILDING not found or no data
[NAWALL] -> BUILDING not found or no data
[CAKRMW] -> BUILDING not found or no data
[GASAND] -> BUILDING not found or no data
[CAFNCB] -> BUILDING not found or no data
[CAFNCP] -> BUILDING not found or no data
[CAFNCW] -> BUILDING not found or no data
those are walls, which are present in the building and overlay lists because they are buildable as walls and turned into overlays after. QUICK_EDIT
I can add WeaponTypes to the ignored list, that would at least eliminate parsing.
The alternate art code was tested against YR, and you'd get that error if the tags in the unit have typos, or the value isn't yes. It wouldn't pickup the fact that you use the alternates and assume the art objects are orphaned. If you want to send me your inis privately to test against, I can look...
The building/overlay thing was something I thought about a lot when doing the code, and I realized you can (and should) fix it in the rules. Non-buildable walls can be removed from the BuildingTypes, this frees up a slot for something new, and the relevant building-specific should be code removed from the object.
In the case of buildable walls, you need them to be BuildingTypes, but that means you also need all the relevant building tags within.
Code:
[GASAND]
UIName=Name:GASAND
Name=Sandbags
BuildCat=Combat
Strength=100
Prerequisite=POWER
Armor=concrete
CrushSound=WallCrushSandbag
Crushable=yes
Wall=yes
TechLevel=1
Adjacent=8
Sight=1
Nominal=yes
Selectable=no
Owner=British,French,Germans,Americans,Alliance,Russians,Confederation,Africans,Arabs
AIBasePlanningSide=0 ;gs 0 for Good, 1 for Evil
Cost=25
Insignificant=yes
Points=1
Repairable=false
ThreatPosed=0 ; This value MUST be 0 for all building addons
BaseNormal=no
AIBuildThis=no
GuardRange=5
Game won't crash even if specified Warhead is missing entirely - no section and everything. It will however, if there's no Warhead declared on the weapon at all. There's nothing special about Warhead=Special either, game will simply use the default values of Warhead properties (for what it's worth, ModEnc's mention about Verses defaulting to 0% against everything is almost certainly incorrect and instead defaults to 100% against all).
Good to know! Learn new stuff all the time about this silly game. Someone should really correct the entry in ModEnc too. QUICK_EDIT
Ok, I did another update and went on a huge testing spree with YR. I got interesting results to say the least...
The AICLEAN process, in the course of re-enumerating list index values, showed the building indexes as referenced in the AI are partly incorrect vanilla, but partly incorrect cleaned as well! So there are errors in both directions, calling buildings where they ought to be, and incorrectly calling where they are.
The "mismatched side" section is the most obvious, the 3 script errors before *F17C are gone, but 2 new errors arise after AICLEAN did its magic.
Here is the check.log on vanilla YR inis:
Code:
[0CAD0DCC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CAD0C7C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CE4CA3C-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[0CAD0B2C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[08DA30EC-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[0D62199C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0D6216FC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0D6215AC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0D62145C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CA1F84C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CAD145C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CAD130C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CAD2AEC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0C8E2C3C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CAD25AC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0C8B81BC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0D052AEC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0AD2BAEC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0C8C2AEC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0C87E5AC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0D0B3B9C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CA2A04C-G] -> primary TEAMTYPE has mismatched side (2 vs 1) for SCRIPT action (move to friendly building) target
[0CA2B06C-G] -> primary TEAMTYPE has mismatched side (2 vs 1) for SCRIPT action (move to friendly building) target
[0CA2FEDC-G] -> primary TEAMTYPE has mismatched side (2 vs 1) for SCRIPT action (move to friendly building) target
[0A44F17C-G] -> primary TEAMTYPE has mismatched side (1 vs 2) for SCRIPT action (move to friendly building) target
[09B58D0C-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[06099EFC-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[0609946C-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[061183BC-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[061183BC-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[06109EFC-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[06109A4C-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[08BE3EFC-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[05CACB7C-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
And here is the check.log on "cleaned" inis:
Code:
[0CAD0DCC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CAD0C7C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CAD0B2C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0D62199C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0D6216FC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0D6215AC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0D62145C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CA1F84C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CAD145C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CAD130C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CAD2AEC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0C8E2C3C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0CAD25AC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0C8B81BC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0D052AEC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0AD2BAEC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[06BC27CC-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[06BC2DEC-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[06BC2DEC-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[0A43080C-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[0C8C2AEC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0C87E5AC-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0D0B3B9C-G] -> Owner mismatch for backup TEAMTYPE: 0CB246CC-G <-> Alliance
[0A44F17C-G] -> primary TEAMTYPE has mismatched side (1 vs 2) for SCRIPT action (move to friendly building) target
[0611A33C-G] -> backup TEAMTYPE has mismatched side (3 vs 1) for SCRIPT action (move to friendly building) target
[0611A1EC-G] -> primary TEAMTYPE has mismatched side (3 vs 1) for SCRIPT action (move to friendly building) target
[06109EFC-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[06109A4C-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[08BE3EFC-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[05CACB7C-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
You'll note the plentiful new "non-player" error shown, that's because in YR the AIBasePlanningSide value was removed on Conyards, the very tag the script uses to determine side, since Owner= is unreliable at best. There is also a new similar message for when "move to friendly" references one of the NeutralTechBuildings= entries.
One of the particular errors is a Yuri side script 08B96C8C-G that uses "move to friendly" on GAROBO (new index 357, old index 361), obviously that's not gonna work. Not that the original spot holder of 357 was any better CASANF08, and offsetting the difference +4 gives you CASANF15...
- Mismatched side for friendly moves now throws a meaningful error when referencing buildings without AIBasePlanningSide set, thus classed as non-player, previously the value was compared against the trigger incorrectly.
- Added alternative log message for the above non-player error when referencing structures listed in NeutralTechBuildings
- Added a handler for the 64k modifier for move/attack script actions for completeness
- Reworked the code that ignores Ares lists, it may not have ignored WeaponTypes correctly, and additional list types will be easier to ignore later
AICLEAN 5.8b update...
- Added a handler for the 64k modifier for move/attack script actions for completeness
Okay, if i take the unbuildable walls and fences form the building list, you can still place them in Final Alert, so no problem there.
What tags define a building in your program? Because I still get this: [GASAND] -> BUILDING not found or no data.
THink i found it in artmd.ini it seems to be related to the tooverlay logik:
3.-In the AI Section i get three different mentionings now:
[010000F3-G] -> SCRIPT action (move to friendly building) target: NeutralTechBuilding [That truly refers to the allied construction yard because it does not have aibaseplanningside]
[010003B7-G] -> SCRIPT action (move to friendly building) target: Non-player or missing AIBasePlanningSide
[01000445-G] -> primary TEAMTYPE has mismatched side (3 vs 2) for SCRIPT action (move to friendly building) target
-Okay, can confirm: those meaningful outputs helped to seperate the real errors like mismatched sides from the scripts where the target was a neutral tech building: good job. Maybe there is a possibility to ignore that neutral tech building part of the outcome, because i only got 30 of them left in the aisection
4. The AlternateArt Issue:
in Ares you have:
AlternateTheaterArt
The Navy Seal has AlternateArcticArt=yes set, which causes the game to use the image file seala.shp on arctic maps, instead of seal.shp. This logic works for any InfantryType, however this only works for the arctic theater and only for InfantryTypes.
[TechnoType]?AlternateTheaterArt= (boolean)
Specifies whether or not this SHP-based unit can have alternate art depending on the theater of the current map. For example, setting Image=JUNK and AlternateTheaterArt=yes on a unit will make the unit load artmd.ini section [JUNKA] on arctic, [JUNKD] on desert, and so on according to theater. If any of those sections do not exist then the unit will fall back to [JUNK]. So quite similar to AlternateArcticArt, just automatic and smarter. Defaults to no.
So using AlternateArcticArt and AlternateDesertArt removes the output using AlternateTheaterArt=yes which encompasses all theatres of course not for it is ares specific.
5. VoxelAnim problems: THis message occurs:
[SONICTURRET] -> VOXELANIM missing ART data: SONIC
so I thought creating an artmd.ini entry would solve the issue.
[SONIC]
Voxel=yes
after that:
[SONIC] -> object ART exists but is undeclared/unused
[SONICTURRET] -> VOXELANIM missing ART data: SONIC
so I thought creating an artmd.ini entry would solve the issue.
[SONIC]
Voxel=yes
after that:
[SONIC] -> object ART exists but is undeclared/unused
ShareSource is handled, the underlying problem here is that your VoxelAnim is trying to share the turret data of a unit that doesn't exist except as an art entry. Since SONIC is not a valid declared unit, it doesn't exist...
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum