Compléter un Mod de SupCom simple en VB - VB/VBA/VBS - Programmation
MarshPosté le 07-03-2017 à 11:37:21
Bonjour à tous,
Je poste ici, j'espère que ce sera au bon endroit.
N'étant pas du tout calé en programmation, mais joueur, je cherche à rendre utilisable une unité (usine expérimentale) d'un mod appelé BrewLan pour toutes les factions du jeu de Supreme Commander Forged Alliance. Grâce à cette unité, l'IA devient plus puissante, et surtout plus maline. Pour faire simple, la faction appelée UEF dispose d'une unité intéressante mais déséquilibrante pour le jeu. Je cherche à l'utiliser pour les AEON, les CYBRAN, et les SERAPHIM.
Je sais changer le nom de la faction après avoir fait une copie du fichier unit et script mais du coup, l'IA n'utilise plus l'unité en jeu . Le fichier a pour source ......./unit/ seb0401/ SEB0401 Dès que je retire du mod mes fichiers copiés pour les autres factions, ça refonctionne. Les fichiers créées en copie avaient pour nom : ...../unit/ Seb0401/ SEB0402, SEB0403 et SEB0404. Je ne sais pas comment régler ce problème Il y a 2 fichiers modifiables en VB (il me semble ?) : un fichier script et un fichier unit. Je vous mets ci-dessous les grandes lignes du fichier script :
-------------------------------------------------------------------------------- -- Summary: The Gantry script -- Author: Sean 'Balthazar' Wheeldon --------------------------------------------------------------------------------
local TLandFactoryUnit = import('/lua/terranunits.lua').TLandFactoryUnit local explosion = import('/lua/defaultexplosions.lua') local Utilities = import('/lua/utilities.lua') local Buff = import('/lua/sim/Buff.lua')
SEB0401 = Class(TLandFactoryUnit) {
AI control --------------------------------------------------------------------------------
AIStartOrders = function(self) local aiBrain = self:GetAIBrain() self.Time = GetGameTimeSeconds() if aiBrain.BrainType != 'Human' then --self.engineers = {} self.BuildModeChange(self) aiBrain:BuildUnit(self, 'uel0309', 5) aiBrain:BuildUnit(self, self.ChooseExpimental(self), 1) aiBrain:BuildUnit(self, 'uel0309', 5) aiBrain:BuildUnit(self, self.ChooseExpimental(self), 1) local AINames = import('/lua/AI/sorianlang.lua').AINames if AINames.seb0401 then local num = Random(1, table.getn(AINames.seb0401)) self:SetCustomName(AINames.seb0401[num]) end end end,
UI buildmode change function --------------------------------------------------------------------------------
BuildModeChange = function(self, mode) self:RestoreBuildRestrictions() ------------------------------------------------------------------------ -- The "Stolen tech" clause ------------------------------------------------------------------------ local aiBrain = self:GetAIBrain() local engineers = aiBrain:GetUnitsAroundPoint(categories.ENGINEER, self:GetPosition(), 30, 'Ally' ) local stolentech = {} stolentech.CYBRAN = false stolentech.AEON = false stolentech.SERAPHIM = false for k, v in engineers do if EntityCategoryContains(categories.TECH3, v) then for race, val in stolentech do if EntityCategoryContains(ParseEntityCategory(race), v) then stolentech[race] = true end end end end for race, val in stolentech do if not val then self:AddBuildRestriction(categories[race]) end end ------------------------------------------------------------------------ -- Human UI air/other switch ------------------------------------------------------------------------ if aiBrain.BrainType == 'Human' then if self.airmode then self:AddBuildRestriction(categories.NAVAL) self:AddBuildRestriction(categories.MOBILESONAR) self:AddBuildRestriction(categories.LAND - categories.ENGINEER) else if self:GetCurrentLayer() == 'Land' then self:AddBuildRestriction(categories.NAVAL) self:AddBuildRestriction(categories.MOBILESONAR) elseif self:GetCurrentLayer() == 'Water' then self:AddBuildRestriction(categories.LAND - categories.ENGINEER) end self:AddBuildRestriction(categories.AIR) end ------------------------------------------------------------------------ -- AI functional restrictions (allows easier AI control) ------------------------------------------------------------------------ else if self:GetCurrentLayer() == 'Land' then self:AddBuildRestriction(categories.NAVAL) self:AddBuildRestriction(categories.MOBILESONAR) elseif self:GetCurrentLayer() == 'Water' then self:AddBuildRestriction(categories.LAND - categories.ENGINEER) self:AddBuildRestriction(categories.ues0401) end end self:RequestRefreshUI() end,
Quels sont les "SEB0401" que je peux modifier en SEB0402/403/404 ? En sachant que je ne modifie pas l'aspect de l'unité, son animation ou sa taille. Je posterai aussi le fichier unit si besoin est.
Marsh Posté le 07-03-2017 à 11:37:21
Bonjour à tous,
Je poste ici, j'espère que ce sera au bon endroit.
N'étant pas du tout calé en programmation, mais joueur, je cherche à rendre utilisable une unité (usine expérimentale) d'un mod appelé BrewLan pour toutes les factions du jeu de Supreme Commander Forged Alliance. Grâce à cette unité, l'IA devient plus puissante, et surtout plus maline. Pour faire simple, la faction appelée UEF dispose d'une unité intéressante mais déséquilibrante pour le jeu. Je cherche à l'utiliser pour les AEON, les CYBRAN, et les SERAPHIM.
Je sais changer le nom de la faction après avoir fait une copie du fichier unit et script mais du coup, l'IA n'utilise plus l'unité en jeu . Le fichier a pour source ......./unit/ seb0401/ SEB0401
Dès que je retire du mod mes fichiers copiés pour les autres factions, ça refonctionne. Les fichiers créées en copie avaient pour nom : ...../unit/ Seb0401/ SEB0402, SEB0403 et SEB0404.
Je ne sais pas comment régler ce problème
Il y a 2 fichiers modifiables en VB (il me semble ?) : un fichier script et un fichier unit.
Je vous mets ci-dessous les grandes lignes du fichier script :
--------------------------------------------------------------------------------
-- Summary: The Gantry script
-- Author: Sean 'Balthazar' Wheeldon
--------------------------------------------------------------------------------
local TLandFactoryUnit = import('/lua/terranunits.lua').TLandFactoryUnit
local explosion = import('/lua/defaultexplosions.lua')
local Utilities = import('/lua/utilities.lua')
local Buff = import('/lua/sim/Buff.lua')
SEB0401 = Class(TLandFactoryUnit) {
AI control
--------------------------------------------------------------------------------
AIStartOrders = function(self)
local aiBrain = self:GetAIBrain()
self.Time = GetGameTimeSeconds()
if aiBrain.BrainType != 'Human' then
--self.engineers = {}
self.BuildModeChange(self)
aiBrain:BuildUnit(self, 'uel0309', 5)
aiBrain:BuildUnit(self, self.ChooseExpimental(self), 1)
aiBrain:BuildUnit(self, 'uel0309', 5)
aiBrain:BuildUnit(self, self.ChooseExpimental(self), 1)
local AINames = import('/lua/AI/sorianlang.lua').AINames
if AINames.seb0401 then
local num = Random(1, table.getn(AINames.seb0401))
self:SetCustomName(AINames.seb0401[num])
end
end
end,
UI buildmode change function
--------------------------------------------------------------------------------
BuildModeChange = function(self, mode)
self:RestoreBuildRestrictions()
------------------------------------------------------------------------
-- The "Stolen tech" clause
------------------------------------------------------------------------
local aiBrain = self:GetAIBrain()
local engineers = aiBrain:GetUnitsAroundPoint(categories.ENGINEER, self:GetPosition(), 30, 'Ally' )
local stolentech = {}
stolentech.CYBRAN = false
stolentech.AEON = false
stolentech.SERAPHIM = false
for k, v in engineers do
if EntityCategoryContains(categories.TECH3, v) then
for race, val in stolentech do
if EntityCategoryContains(ParseEntityCategory(race), v) then
stolentech[race] = true
end
end
end
end
for race, val in stolentech do
if not val then
self:AddBuildRestriction(categories[race])
end
end
------------------------------------------------------------------------
-- Human UI air/other switch
------------------------------------------------------------------------
if aiBrain.BrainType == 'Human' then
if self.airmode then
self:AddBuildRestriction(categories.NAVAL)
self:AddBuildRestriction(categories.MOBILESONAR)
self:AddBuildRestriction(categories.LAND - categories.ENGINEER)
else
if self:GetCurrentLayer() == 'Land' then
self:AddBuildRestriction(categories.NAVAL)
self:AddBuildRestriction(categories.MOBILESONAR)
elseif self:GetCurrentLayer() == 'Water' then
self:AddBuildRestriction(categories.LAND - categories.ENGINEER)
end
self:AddBuildRestriction(categories.AIR)
end
------------------------------------------------------------------------
-- AI functional restrictions (allows easier AI control)
------------------------------------------------------------------------
else
if self:GetCurrentLayer() == 'Land' then
self:AddBuildRestriction(categories.NAVAL)
self:AddBuildRestriction(categories.MOBILESONAR)
elseif self:GetCurrentLayer() == 'Water' then
self:AddBuildRestriction(categories.LAND - categories.ENGINEER)
self:AddBuildRestriction(categories.ues0401)
end
end
self:RequestRefreshUI()
end,
Quels sont les "SEB0401" que je peux modifier en SEB0402/403/404 ? En sachant que je ne modifie pas l'aspect de l'unité, son animation ou sa taille. Je posterai aussi le fichier unit si besoin est.
Un grand merci d'avance pour vos regards experts.
Bonne journée !!