Galgus
Emperor
- Joined
- Aug 22, 2012
- Messages
- 1,705
Edit: The issue was a conflict with a mod I did not think would be problematic.
______________________________
I've been using code that Valessa generously put together in this thread which worked at a time if memory serves, but seems to be conflicting with something now.
That or I messed something up, which could be quite likely.
I haven't seen any kind of error about the changes in logs, so I don't know what to look at to troubleshoot.
If you have any ideas on what the problem may be, I'd be grateful to hear them.
Is it problematic that there are two SQL files updating the database?
_______________
This is is the ModInfo folder.
______
This is the UpdateBuildingTable.sql file creating a new table for buildings.
____
This is the file that checks said tables.
________
And this is an example of the relevant sections of the affinity "Build" XML files assigning buildings the SQL's categories.
______
This is a link to the problematic mod, if that makes this easier.
It is supposed to make the buildings with affinity symbols in front of them exclusive to one another with one vanishing when a conflicting one is built.
They have no tech requirement, so setting two affinities to level 4 to unlock the first building of three sets of affinities is a quick way to test it.
______________________________
I've been using code that Valessa generously put together in this thread which worked at a time if memory serves, but seems to be conflicting with something now.
That or I messed something up, which could be quite likely.
I haven't seen any kind of error about the changes in logs, so I don't know what to look at to troubleshoot.
If you have any ideas on what the problem may be, I'd be grateful to hear them.
Is it problematic that there are two SQL files updating the database?
_______________
This is is the ModInfo folder.
Code:
<?xml version="1.0" encoding="utf-8"?>
<Mod id="6ea9bfd1-9019-4708-8302-6f77a98afec0" version="1">
<Properties>
<Name>Distinction - Affinity Buildings Overhaul</Name>
<Stability>Alpha</Stability>
<Teaser>Overhauls the Afffinity building system to assign each Core and Hybrid Affinity a set of buildings that are exclusive to those</Teaser>
<Description>Overhauls the Afffinity building system to assign each Core and Hybrid Affinity a set of buildings that are exclusive to those of other affinities, requiring only affinity level to unlock.</Description>
<Authors>Galgus</Authors>
<SpecialThanks>Ryika, lilgamefreek</SpecialThanks>
<HideSetupGame>0</HideSetupGame>
<AffectsSavedGames>1</AffectsSavedGames>
<MinCompatibleSaveVersion>0</MinCompatibleSaveVersion>
<SupportsSinglePlayer>1</SupportsSinglePlayer>
<SupportsMultiplayer>1</SupportsMultiplayer>
<SupportsHotSeat>1</SupportsHotSeat>
<SupportsMac>1</SupportsMac>
<ReloadLandmarkSystem>0</ReloadLandmarkSystem>
<ReloadStrategicViewSystem>0</ReloadStrategicViewSystem>
<ReloadUnitSystem>0</ReloadUnitSystem>
</Properties>
<Dependencies />
<References />
<Blocks />
<Files>
<File md5="1E6478DB43B39D62D2FA7E08B1785920" import="0">Affinity Buildings/Harmony Build.xml</File>
<File md5="62D49A915DEDFC15622E04FDD325573B" import="0">Affinity Buildings/HP Build.xml</File>
<File md5="4F4FAD1FDF2721952E0675FBC4CF0292" import="0">Affinity Buildings/PS Build.xml</File>
<File md5="ECB4C1AFB9707B5E680E64BA4A13F09C" import="0">Affinity Buildings/Purity Build.xml</File>
<File md5="9D9BB0FAF9F9BD0E9DAFF847A3C1B884" import="0">Affinity Buildings/SH Build.xml</File>
<File md5="EF1456E405098D5010661F69C3F49F12" import="0">Affinity Buildings/Supremacy Build.xml</File>
<File md5="BD7071AE8107AC4430D056AC772F3BE0" import="0">Exclusivity Code/Lua/AffinityAffiliationTestScript.lua</File>
<File md5="15F9FFE5CF3091839BC57020AFE96B30" import="0">Exclusivity Code/SQL/UpdateBuildingTable.sql</File>
<File md5="A2D220B934880F68F5C6D7129CF80309" import="0">Modular Building Quests Resource/BuildingChoiceTemplateQuest.lua</File>
<File md5="456CA3F098A6E5FACC45B594997402B3" import="0">Modular Building Quests Resource/BuildingQuestTable.sql</File>
</Files>
<Actions>
<OnModActivated>
<UpdateDatabase>Modular Building Quests Resource/BuildingQuestTable.sql</UpdateDatabase>
<UpdateDatabase>Exclusivity Code/SQL/UpdateBuildingTable.sql</UpdateDatabase>
<UpdateDatabase>Affinity Buildings/Harmony Build.xml</UpdateDatabase>
<UpdateDatabase>Affinity Buildings/HP Build.xml</UpdateDatabase>
<UpdateDatabase>Affinity Buildings/PS Build.xml</UpdateDatabase>
<UpdateDatabase>Affinity Buildings/Purity Build.xml</UpdateDatabase>
<UpdateDatabase>Affinity Buildings/SH Build.xml</UpdateDatabase>
<UpdateDatabase>Affinity Buildings/Supremacy Build.xml</UpdateDatabase>
</OnModActivated>
</Actions>
<EntryPoints>
<EntryPoint type="InGameUIAddin" file="Exclusivity Code/Lua/AffinityAffiliationTestScript.lua">
<Name>Exclusivity Code/Lua/AffinityAffiliationTestScript</Name>
<Description>
</Description>
</EntryPoint>
<EntryPoint type="Quest" file="Modular Building Quests Resource/BuildingChoiceTemplateQuest.lua">
<Name>Modular Building Quests resource/BuildingChoiceTemplateQuest</Name>
<Description>
</Description>
</EntryPoint>
</EntryPoints>
</Mod>
This is the UpdateBuildingTable.sql file creating a new table for buildings.
Code:
ALTER TABLE Buildings ADD AffinityAffiliation text;
This is the file that checks said tables.
Code:
GameEvents.CityCanConstruct.Add(function(iPlayer, iCity, iBuildingType)
-- Need to convert iCity to a usable format
local pCity = Players[iPlayer]:GetCityByID(iCity)
-- If the Building has an Entry to the AffinityAffiliation Table then...
if GameInfo.Buildings[iBuildingType].AffinityAffiliation ~= nil then
-- ...go through ALL buildings that exist...
for pBuilding in GameInfo.Buildings() do
-- ...and check if it exists in the city.
if pCity:IsHasBuilding(pBuilding.ID) then
-- If it exists, then check if it has an AffinityAffiliation entry.
if GameInfo.Buildings[pBuilding.ID].AffinityAffiliation ~= nil then
-- If it has one, then check if it's different from the building that is being checked!
if GameInfo.Buildings[iBuildingType].AffinityAffiliation ~= GameInfo.Buildings[pBuilding.ID].AffinityAffiliation then
-- If it is different finally return false!
return false
end
end
end
end
end
-- Return true if the code above has not returned false (aka if
-- the building has no AffinityAffiliation-entry or no building
-- of a different group exists).
return true
end)
And this is an example of the relevant sections of the affinity "Build" XML files assigning buildings the SQL's categories.
Code:
<Buildings>
<Update>
<Where Type="BUILDING_XENOFUEL_PLANT"/>
<Set AffinityAffiliation="AFFINITY_HARMONY"/>
</Update>
<Update>
<Where Type="BUILDING_GENE_GARDEN"/>
<Set AffinityAffiliation="AFFINITY_PURITY_HARMONY"/>
</Update>
</Buildings>
This is a link to the problematic mod, if that makes this easier.
It is supposed to make the buildings with affinity symbols in front of them exclusive to one another with one vanishing when a conflicting one is built.
They have no tech requirement, so setting two affinities to level 4 to unlock the first building of three sets of affinities is a quick way to test it.
Last edited: