Getting the Current Production Progress of Units/Buildings in Lua

Sorry Gedemon for disturbing you again, I know I was such an noisance lately, but I just don't get it with the Exposed Members Method. I'm defenitely doing something wrong, but I just don't know how I can solve this. The UI file doesn't load at all (since a don't get anuthing from print functions in it).

Here is the Complete code:

UI:
Code:
function GetUnitProductionProgress(playerID, CityID, iProdcutionItemType)
    local pPlayer = Players[playerID]
    local pCity =  pPlayer:GetCities():FindID(CityID)
    print("Unit Progress 1")
    if pCity ~= nil then
        if ( iProdcutionItemType  == 0 ) then
            print("Unit Progress 2")
            return pCity:GetBuildQueue():GetUnitProgress()
        end
    end
    print("Unit Progress 3.")
end

ExposedMembers.SRE.GetUnitProductionProgress = GetUnitProductionProgress;

GameplayScript:
Code:
ExposedMembers.SRE = {};

function GetUnitProgress(playerID, CityID, iProdcutionItemType)
    print("Unit Progress Check #1")
    return ExposedMembers.SRE.GetUnitProductionProgress(playerID, CityID, iProdcutionItemType)
end

function OnUnitBuildableCheck( PlayerID, cityID, iProdcutionItemType)
    local pPlayer = Players[PlayerID];
    local pCity =  pPlayer:GetCities():FindID(CityID)
    print("City Selected.");
    if ( iProdcutionItemType  == 0 ) then
        for row in GameInfo.Resources() do
            local ResourceType = GameInfo.Resources[row.ResourceType]
            for row in GameInfo.Units() do
--                local kBuildParameters = {};
--                kBuildParameters.UnitType = row.Hash;
                
                local UnitTypeInfo = GameInfo.Units[row.UnitType];
                local UnitTypeIndex = UnitTypeInfo.Index;
                local UnitTypeHash = row.Hash
                local UnitType = row.UnitType
                local UnitName = Locale.Lookup(UnitTypeInfo.Name);
                print("Unit Check #1", UnitType, UnitName, UnitTypeHash, UnitTypeInfo, UnitTypeIndex);
                if (UnitType ~= nil) then
                    print("Unit Check #2", UnitType, UnitName);
                    for row in GameInfo.Units_BonusesAndResourceCosts() do
                        if (row.UnitType == UnitType) then
                            local AdditionalStrategicResource = GameInfo.Resources[row.AdditionalStrategicResource];
                            local fuelName = Locale.Lookup(AdditionalStrategicResource.Name);
                            local AdditionalStrategicResourceCost:number = row.AdditionalStrategicResourceCost;   
                            print("UCheck #3", UnitType, UnitName, AdditionalStrategicResource, fuelName);
                            if (AdditionalStrategicResource ~= nil) then
                                if (ResourceType == AdditionalStrategicResource) then
                                    local mResource = AdditionalStrategicResource.Index
                                    local pResource:number = pPlayer:GetResources():GetResourceAmount(mResource);
                                    print("Unit Check Resource", AdditionalStrategicResourceCost, mResource, pResource, AdditionalStrategicResource, fuelName, UnitType, UnitName);
                                    if (AdditionalStrategicResourceCost > 0) then
                                        if (pResource >= AdditionalStrategicResourceCost ) then
                                            print("Unit is Set to be Buildable");
                                            local eUnitIndex = GameInfo.Units[row.UnitType].Index;
                                            pPlayer:GetUnits():SetBuildDisabled(eUnitIndex, false)
                                            print("This Unit: " .. UnitName .. " is Now going to be buildable!!", UnitType, UnitName, eUnitIndex)
                                        else
                                            local eUnitIndex = GameInfo.Units[row.UnitType].Index;
                                            pPlayer:GetUnits():SetBuildDisabled(eUnitIndex, true)
                                            print("This Unit: " .. UnitName .. " is Now not buildable!", UnitType, UnitName, eUnitIndex)
                                            print("Unit is Still not Buildable", UnitType, UnitName);
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end
    end
end

Events.CitySelectionChanged.Add( GetUnitProgress );
Events.CitySelectionChanged.Add( OnUnitBuildableCheck );
Events.PlayerResourceChanged.Add( OnUnitBuildableCheck );

print('SRE Units loaded');

Modinfo:
Code:
  <InGameActions>
    <AddGameplayScripts id="SetupLua">
      <Properties>
        <loadOrder>600</loadOrder>
      </Properties>
      <File>SRE_UnitProductionGameplayScript.lua</File>
    </AddGameplayScripts>
  <ImportFiles id="SRE_ImportFiles_All">
          <Properties>
              <LoadOrder>1000</LoadOrder>
          </Properties>
          <File>SRE_UnitProductionGameplayScript.lua</File>
          <File>SRE_UnitProductionUIScript.lua</File>
  </ImportFiles>
  <Files>
    <File>SRE_UnitProductionGameplayScript.lua</File>
    <File>SRE_UnitProductionUIScript.lua</File>
  </Files>
 
That did it! Thank you @Gedemon! You really helped me a lot.

Now I just need to finish the Code.
 
Top Bottom