Lol, find this post...after so many years.. But i wanna ask, im totaly zero with modding. But i wanna cooperate ur AI with No Limit mod. Just wanna ask, if is this ez just to take of the cap. Or i need some skills in modding to do this ? Thx, for ansr.
Dawn Of Skirmish SS v3.20 AI Mod is now LIVE!
#42
Posted 23 August 2018 - 09:07 AM
If the No Limit mod increases the inf/veh caps, there is nothing you need to do, DoWAI will work fine.
But if it also removes the squad caps (for example, no limit in how many Force Commanders you can get), I can guide you how to update it. It is easy.
#44
Posted 09 September 2018 - 03:15 PM
Which game mode are you using to prevent relic units?
Dawn of War Advanced AI Headquarters
Latest DoW Advanced AI Download!
#45 Guest_Travis_*
Posted 24 September 2018 - 06:06 AM
I don't know if this is the right place for this, but I'm having some trouble with setting up AI for a race. I recently imported the Dark Eldar and Sisters of Battle into DC (Art, UI, sound effects, etc.) and set up new races with them.
Now I'm trying to set up some basic AI files for the Dark Eldar race, but I seem to be having some trouble. I keep getting this error:
From what I can find, it seems like it can't get the name of the race, however I have the race AI folder set to "dark_eldar_race" and in the loader.ai it is also set to "dark_eldar_race".
Here's the loader.ai text:
----------------------------------------
-- File: 'loader.ai'
-- Soulstorm to Dark Crusade Test
class 'dark_eldar_race'
-- Constructor
function dark_eldar_race:__init()
end
-- Returns the name of the race
function dark_eldar_race:GetRaceName()
return "dark_eldar_race"
end
-- This function is called if the race is being played
function dark_eldar_race:LoadRace( eDifficulty )
-- Import strategies
import( 'Races/dark_eldar_race/Strategies/DarkEldarBuildBaseStrategy.ai' )
-- Import strategy info
import( "Races/dark_eldar_race/Strategies/DarkEldarStrategyInfo.ai" )
-- Import tactics
import( 'Races/dark_eldar_race/Tactics/DarkEldarInfantryTactic.ai' )
import( 'Races/dark_eldar_race/Tactics/DarkEldarVehicleTactic.ai' )
import( 'Races/dark_eldar_race/Tactics/DarkEldarArchonTactic.ai' )
import( 'Races/dark_eldar_race/Tactics/DarkEldarHaemonculusTactic.ai' )
import( 'Races/dark_eldar_race/Tactics/DarkEldarRaiderTactic.ai' )
import( 'Races/dark_eldar_race/Tactics/DarkEldarSlaveTactic.ai' )
return true
end
-- This function is called even if this race are not the race being played
function dark_eldar_race:LoadGlobalInfo()
-- Import info files
import( 'Races/dark_eldar_race/Info/darkeldarunitstats.ai' )
-- Add race unit stats
table.insert(UnitStats, DarkEldarUnitStats)
return true
end
-- Creates build base strategy
function dark_eldar_race:CreateBuildBaseStrategy()
return DarkEldarBuildBaseStrategy(BuildBaseStrategyInfo)
end
-- Creates a special tactic for a unit
function dark_eldar_race:CreateTactic(oSquadAI)
-- Get unit name and class
local sUnitName = oSquadAI:GetSquadName()
local eClass = oSquadAI:GetStats():GetClass()
-- Check if there is a special tactic for the unit available
if (sUnitName == "dark_eldar_squad_slave") then
return DarkEldarSlaveTactic(oSquadAI)
elseif (sUnitName == "dark_eldar_squad_archon") then
return DarkEldarArchonTactic(oSquadAI)
elseif (sUnitName == "dark_eldar_squad_haemonculus") then
return DarkEldarHaemonculusTactic(oSquadAI)
elseif (sUnitName == "dark_eldar_squad_raider") then
return DarkEldarRaiderTactic(oSquadAI)
elseif (eClass == UnitStatsAI.UC_VehicleLow or eClass == UnitStatsAI.UC_VehicleMed or eClass == UnitStatsAI.UC_VehicleHigh) then
return DarkEldarVehicleTactic(oSquadAI)
end
return DarkEldarInfantryTactic(oSquadAI)
end
-- Creates a base tactic
function dark_eldar_race:CreateBaseTactic(oBuilding)
end
-- Returns a specific information
function dark_eldar_race:GetInfo(sType)
-- Check info type
if (sType == "TurretPower") then
return 250
elseif (sType == "SupportAllyFactor") then
return 10 / 4
elseif (sType == "AttackModifier") then
return -10
elseif (sType == "CriticalRangeIncreasePerTier") then
return 10
elseif (sType == "MinArmyStrengthPerTier") then
return 750
elseif (sType == "AttackRatio") then
return 4 / 5
elseif (sType == "RetreatRatio") then
return 3 / 5
elseif (sType == "InvisibleBuildings") then
return false
end
return nil
end
-- Returns the building type and threat
function dark_eldar_race:GetBuildingType(sBuildingName)
-- Return race specific object string
if (sBuildingName == "dark_eldar_hq") then
return "HQ", 0
elseif (sBuildingName == "dark_eldar_plasma_generator") then
return "Generator", 0
elseif (sBuildingName == "dark_eldar_thermo_plasma") then
return "BiggerGenerator", 0
elseif (sBuildingName == "dark_eldar_skimmer_shop") then
return "VehicleBuilding", 0
elseif (sBuildingName == "dark_eldar_haemonculus_laboratory") then
return "Armoury", 0
elseif (sBuildingName == "dark_eldar_listening_post") then
return "ListeningPost", 0
end
return nil, 0
end
I would really appreciate any help at all.
#46 Guest_Travis_*
Posted 24 September 2018 - 06:11 AM
I don't know if this is the right place for this, but I'm having some trouble with setting up AI for a race. I recently imported the Dark Eldar and Sisters of Battle into DC (Art, UI, sound effects, etc.) and set up new races with them.
Now I'm trying to set up some basic AI files for the Dark Eldar race, but I seem to be having some trouble. I keep getting this error:
From what I can find, it seems like it can't get the name of the race, however I have the race AI folder set to "dark_eldar_race" and in the loader.ai it is also set to "dark_eldar_race".
Here's the loader.ai text:
----------------------------------------
-- File: 'loader.ai'
-- Soulstorm to Dark Crusade Test
class 'dark_eldar_race'
-- Constructor
function dark_eldar_race:__init()
end
-- Returns the name of the race
function dark_eldar_race:GetRaceName()
return "dark_eldar_race"
end
-- This function is called if the race is being played
function dark_eldar_race:LoadRace( eDifficulty )
-- Import strategies
import( 'Races/dark_eldar_race/Strategies/DarkEldarBuildBaseStrategy.ai' )
-- Import strategy info
import( "Races/dark_eldar_race/Strategies/DarkEldarStrategyInfo.ai" )
-- Import tactics
import( 'Races/dark_eldar_race/Tactics/DarkEldarInfantryTactic.ai' )
import( 'Races/dark_eldar_race/Tactics/DarkEldarVehicleTactic.ai' )
import( 'Races/dark_eldar_race/Tactics/DarkEldarArchonTactic.ai' )
import( 'Races/dark_eldar_race/Tactics/DarkEldarHaemonculusTactic.ai' )
import( 'Races/dark_eldar_race/Tactics/DarkEldarRaiderTactic.ai' )
import( 'Races/dark_eldar_race/Tactics/DarkEldarSlaveTactic.ai' )
return true
end
-- This function is called even if this race are not the race being played
function dark_eldar_race:LoadGlobalInfo()
-- Import info files
import( 'Races/dark_eldar_race/Info/darkeldarunitstats.ai' )
-- Add race unit stats
table.insert(UnitStats, DarkEldarUnitStats)
return true
end
-- Creates build base strategy
function dark_eldar_race:CreateBuildBaseStrategy()
return DarkEldarBuildBaseStrategy(BuildBaseStrategyInfo)
end
-- Creates a special tactic for a unit
function dark_eldar_race:CreateTactic(oSquadAI)
-- Get unit name and class
local sUnitName = oSquadAI:GetSquadName()
local eClass = oSquadAI:GetStats():GetClass()
-- Check if there is a special tactic for the unit available
if (sUnitName == "dark_eldar_squad_slave") then
return DarkEldarSlaveTactic(oSquadAI)
elseif (sUnitName == "dark_eldar_squad_archon") then
return DarkEldarArchonTactic(oSquadAI)
elseif (sUnitName == "dark_eldar_squad_haemonculus") then
return DarkEldarHaemonculusTactic(oSquadAI)
elseif (sUnitName == "dark_eldar_squad_raider") then
return DarkEldarRaiderTactic(oSquadAI)
elseif (eClass == UnitStatsAI.UC_VehicleLow or eClass == UnitStatsAI.UC_VehicleMed or eClass == UnitStatsAI.UC_VehicleHigh) then
return DarkEldarVehicleTactic(oSquadAI)
end
return DarkEldarInfantryTactic(oSquadAI)
end
-- Creates a base tactic
function dark_eldar_race:CreateBaseTactic(oBuilding)
end
-- Returns a specific information
function dark_eldar_race:GetInfo(sType)
-- Check info type
if (sType == "TurretPower") then
return 250
elseif (sType == "SupportAllyFactor") then
return 10 / 4
elseif (sType == "AttackModifier") then
return -10
elseif (sType == "CriticalRangeIncreasePerTier") then
return 10
elseif (sType == "MinArmyStrengthPerTier") then
return 750
elseif (sType == "AttackRatio") then
return 4 / 5
elseif (sType == "RetreatRatio") then
return 3 / 5
elseif (sType == "InvisibleBuildings") then
return false
end
return nil
end
-- Returns the building type and threat
function dark_eldar_race:GetBuildingType(sBuildingName)
-- Return race specific object string
if (sBuildingName == "dark_eldar_hq") then
return "HQ", 0
elseif (sBuildingName == "dark_eldar_plasma_generator") then
return "Generator", 0
elseif (sBuildingName == "dark_eldar_thermo_plasma") then
return "BiggerGenerator", 0
elseif (sBuildingName == "dark_eldar_skimmer_shop") then
return "VehicleBuilding", 0
elseif (sBuildingName == "dark_eldar_haemonculus_laboratory") then
return "Armoury", 0
elseif (sBuildingName == "dark_eldar_listening_post") then
return "ListeningPost", 0
end
return nil, 0
end
I would really appreciate any help at all.
Alright, looks like the screenshot didn't post, so here's the pertinent lines in the console:
RaceLoader: Init global race info...
RaceLoader: Init dark_eldar_race...
*ALERT: [string "Core/utility.ai"]:93: Assertion failed at Core/Strategies/Strategy.ai, line 31
Error Loading script file 'DATA:AI/default.ai' for race 'dark_eldar_race'!
#48 Guest_gKSrdZ_*
Posted 24 September 2018 - 09:51 AM
Line 31 seems to simply be a unit tactic import, so try commenting that line (--) it and see if it works.
If it does, simply see what is wrong within that tactic file.
No luck I'm afraid.
The error code I'm still getting in game points to line 31 in the strategy.ai file in the core folder.
Here's the error that pops up in the console:
RaceLoader: Init global race info...
RaceLoader: Init dark_eldar_race...
*ALERT: [string "Core/utility.ai"]:93: Assertion failed at Core/Strategies/Strategy.ai, line 31
Error Loading script file 'DATA:AI/default.ai' for race 'dark_eldar_race'!
And here's the corresponding lines in the strategy.ai file it seems to be pointing to (line 31 itself is bolded):
function Strategy:__init( info )
self.player_stats = cpu_manager.stats:GetPlayerStatsFromID( cpu_manager.player_id )
dbAssert( self.player_stats ~= nil )
if info ~= nil then
self.info = info[ self.player_stats:GetPlayerRaceName() ]
dbAssert( self.info ~= nil )
end
self.plans = {}
self:ResetDemand()
self.now = 0
self.status = "Normal"
self.can_build_military = true
self.m_iNumHQAtStartPos = 1
end
I'm not sure what that means, is it not getting the race name right?
#49
Posted 24 September 2018 - 10:05 AM
Hmmmm.... I do not know!
I have not dealt with the dbAssert system....
So I cannot help you.
The ONLY thing I can recommend, is to try experimenting with changes.
Do you have programming experience? AI?
Brother THUDO ????
Any Suggestions?
Edited by Gambit, 24 September 2018 - 10:06 AM.
#50
Posted 24 September 2018 - 02:42 PM
When does this error occur? Before the map loads OR during the game when you are testing your AI?
You seem to be editing the existing Dark Eldar vanilla faction but for DC? Does a race meant for Soulstorm work in the previous expansion, DC?
I was able to port down the latest SS AI for use in DC but not the two SS specific races, DE and Sisters hence I have no clue what you want is supported as some of the hardcoded logic IronLore did may not support DC.
Dawn of War Advanced AI Headquarters
Latest DoW Advanced AI Download!
#51 Guest_Travis_*
Posted 24 September 2018 - 06:29 PM
It occurs during loading, right before the "start mission" button appears. It doesn't cause a crash, the AI Dark Eldar faction just sits there throughout the match doing nothing.
For the SS factions, I used their Art and Sound files, but I built all of the racebps, ebps, sbps, and addon files in Corsix to avoid importing in SS only modifiers (I haven't gotten around to setting up researches or abilities yet). I have Dawn of Skirmish 2.6 installed, and used parts of the Eldar, Guard, and Chaos AI files as templates for the custom Dark Eldar AI files.
When I play the race against other factions it works perfectly, no crashes at all. I think I messed up something when I made the AI files.
#52
Posted 24 September 2018 - 06:49 PM
Yes but DC does not have some of the core SS logic within its DLLs so I am not sure DC will accept either DE or Sisters in an older build of the game since they were always meant for SS.
Playing as DE or Sisters in DC as you (human) is one thing but the AI may need missing logic only found in the core of SS's binaries.
Tell me: were you able to implement both DE Souls and Sister's Faith mechanic into DC? That is normally a SS gameplay logic which I thought was hardcoded/baked into SS.
Dawn of War Advanced AI Headquarters
Latest DoW Advanced AI Download!
#53 Guest_Travis_*
Posted 24 September 2018 - 06:58 PM
No I didn't include the Faith or Souls economy, that's out of my league. Currently I'm trying to set them up as a very basic DC-style race before I tried anything more complex. If there's some hard coded logic in SS that I'd need then I'm definitely out of luck.
#54
Posted 24 September 2018 - 07:10 PM
Well the basic aspects of DE and Sisters will work and you'd have to compensate for the lack of souls and faith for them to now work under the vanilla conditions of DC.
The DE/Sis AI under DC though.. that would take some debugging as there might be SS-specific calls in that AI since its obviously from SS -- those would need to be purged. It could be a tactic file in DE's loader.. try commenting out this whole section for fun and change that line after the comment from "elseif" to "if" as follows:
--[[ if (sUnitName == "dark_eldar_squad_slave") then return DarkEldarSlaveTactic(oSquadAI) elseif (sUnitName == "dark_eldar_squad_archon") then return DarkEldarArchonTactic(oSquadAI) elseif (sUnitName == "dark_eldar_squad_haemonculus") then return DarkEldarHaemonculusTactic(oSquadAI) elseif (sUnitName == "dark_eldar_squad_raider") then return DarkEldarRaiderTactic(oSquadAI) ]] if (eClass == UnitStatsAI.UC_VehicleLow or eClass == UnitStatsAI.UC_VehicleMed or eClass == UnitStatsAI.UC_VehicleHigh) then
Now what happens?
The Line 31 in Strategy.ai should be re-instated as its needed for all other factions.
It also be an issue in your infantry or vehicle tactic for DE. Unsure how much of that you changed.
Dawn of War Advanced AI Headquarters
Latest DoW Advanced AI Download!
#55 Guest_Travis_*
Posted 24 September 2018 - 07:32 PM
No luck I'm afraid, still get the same error.
Here's the basic infantry and vehicle tactic so you can see what I've modified:
----------------------------------------
-- File: 'darkeldarinfantrytactic.ai'
-- Soulstorm to Dark Crusade Test
class 'DarkEldarInfantryTactic' (InfantryTactic)
function DarkEldarInfantryTactic:__init( squad_ai ) super( squad_ai )
self:SetName("Dark Eldar Infantry Tactic")
-- Set infantry options
local sSquadName = squad_ai:GetSquadName()
if (sSquadName == "dark_eldar_squad_mandrake" or
sSquadName == "dark_eldar_squad_warrior" or
sSquadName == "dark_eldar_squad_archon" or
sSquadName == "dark_eldar_squad_haemonculus") then
-- Squads are transportable
self.m_iTransportable = 1
end
end
function DarkEldarInfantryTactic:AddTargetAbilities()
end
function DarkEldarInfantryTactic:AddCommanders()
table.insert(self.commander, { "dark_eldar_squad_archon", true })
table.insert(self.commander, { "dark_eldar_squad_haemonculus", false })
end
function DarkEldarInfantryTactic:DoAbilities()
-- I might have these attached
if (self.squad_ai:IsAttached()) then
if (self.squad_ai:HasSquadAttached("dark_eldar_squad_haemonculus")) then
DarkEldarHaemonculusTactic.InitAbilities( self )
DarkEldarHaemonculusTactic.DoAbilities( self )
end
end
-- Call basic DoAbilities methods
InfantryTactic.DoAbilities(self)
end
function DarkEldarInfantryTactic:UpdateStance()
-- Check if I have setup time
if self.squad_ai:IsRanged() then
if self.squad_ai:GetStance() ~= SquadAI.STANCE_StandGround then
self.squad_ai:DoSetStance( SquadAI.STANCE_StandGround )
end
elseif self.squad_ai:GetStance() ~= SquadAI.STANCE_Hold then
self.squad_ai:DoSetStance( SquadAI.STANCE_Hold )
end
end
----------------------------------------
-- File: 'darkeldarvehicletactic.ai'
-- Soulstorm to Dark Crusade Test
class 'DarkEldarVehicleTactic' (VehicleTactic)
function DarkEldarVehicleTactic:__init( squad_ai ) super( squad_ai )
self:SetName("Dark Eldar Vehicle Tactic")
end
#56
Posted 24 September 2018 - 07:47 PM
So yer still getting
*ALERT: [string "Core/utility.ai"]:93: Assertion failed at Core/Strategies/Strategy.ai, line 31 Error Loading script file 'DATA:AI/default.ai' for race 'dark_eldar_race'!
I wonder if its the _race name causing it. Seems odd that error would come up unless the racebps file has something buggy about it. You may need to remove all Faith and Soul references in your racebps OR compare it to something like the ork_race file. It might have some bad SS-only values DC cannot accept but is only hosing the AI. This is quite dicey as those two factions are really only SS specific so no clue what down-porting them can do.
Dawn of War Advanced AI Headquarters
Latest DoW Advanced AI Download!
#57 Guest_Guest_*
Posted 24 September 2018 - 08:11 PM
I have the racebps name set to "dark_eldar_race.rgd". I also used the DC Eldar racbps as the template to avoid importing code about the Souls and Faith stuff.
I dumped the racebps to .lua in Corsix, here's the text:
GameData = Inherit([[]])
GameData["income_cap"] = Reference([[tables\resource_table.lua]])
GameData["income_cap"]["power"] = 40
GameData["income_cap"]["requisition"] = 40
GameData["possible_research"] = Reference([[tables\research_table.lua]])
GameData["race_details"] = Reference([[tables\race_details_table.lua]])
GameData["race_details"]["name_id"] = [[$4000000]] -- Dark Eldar
GameData["race_path"] = Reference([[tables\race_path.lua]])
GameData["race_path"]["building_path"] = [[Races/Dark_Eldar/Structures]]
GameData["race_path"]["projectile_path"] = [[Races/Dark_Eldar/Projectiles]]
GameData["race_path"]["speech_path"] = [[Speech/Races/Dark_Eldar/Shared]]
GameData["race_path"]["squad_path"] = [[Races/Dark_Eldar]]
GameData["race_path"]["taskbar_path"] = [[Dark_Eldar]]
GameData["race_path"]["unit_path"] = [[Races/Dark_Eldar/Troops]]
GameData["race_squad_cap_table"] = Reference([[tables\race_squad_cap_table.lua]])
GameData["race_squad_cap_table"]["base_squad_cap"] = 10
GameData["race_squad_cap_table"]["max_squad_cap"] = 20
GameData["race_squad_cap_table"]["max_support_cap"] = 20
GameData["starting_buildings"] = Reference([[tables\building_table.lua]])
GameData["starting_buildings"]["building_01"] = [[dark_eldar_hq]]
GameData["starting_res_normal"] = Reference([[tables\cost_table.lua]])
GameData["starting_res_normal"]["power"] = 500
GameData["starting_res_normal"]["requisition"] = 1000
GameData["starting_res_quickstart"] = Reference([[tables\cost_table.lua]])
GameData["starting_res_quickstart"]["power"] = 50000
GameData["starting_res_quickstart"]["requisition"] = 50000
GameData["starting_squads"] = Reference([[tables\squad_table.lua]])
GameData["starting_squads"]["squad_01"] = [[dark_eldar_squad_slave]]
GameData["teamcolour_preview"] = Reference([[tables\race_teamcolour_preview_entities.lua]])
GameData["teamcolour_preview"]["entity_01"] = [[dark_eldar_infantry_warrior]]
GameData["teamcolour_preview"]["entity_02"] = [[dark_eldar_vehicle_talos]]
Also, I made the racebps, ebps, sbps, and addons through modding in Corsix, so everything is in .rgd format instead of .lua, so would that cause a problem?
#58
Posted 24 September 2018 - 08:15 PM
Drawing blanks on this, bud... if I had the cycles...
Dawn of War Advanced AI Headquarters
Latest DoW Advanced AI Download!
Reply to this topic
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users