Как сделать несколько режимов в кастомку

shizik1_shizik2

Активный
5 Июн 2023
82
3
Помогите пж я не понимаю как сделать так чтобы при создании лобби в кастомке можно было выбрать карту с другим ландшафтом гейм рулами и Хиро листом
Я просто не понимаю как изменить настройки команд для одной карты и при этом не менять их для другой карты
 

fabio_longo

Продвинутый
13 Июн 2021
153
19
steamcommunity.com
Проект
Chen's Training, Creep Stacking Training
Помогите пж я не понимаю как сделать так чтобы при создании лобби в кастомке можно было выбрать карту с другим ландшафтом гейм рулами и Хиро листом
Я просто не понимаю как изменить настройки команд для одной карты и при этом не менять их для другой карты
Я в своей кастомке сделал так: в addon_game_mode.lua в функции InitGameMode прописал условие
Lua:
    if GetMapName() == "[имя карты]" then
   end
 

shizik1_shizik2

Активный
5 Июн 2023
82
3
Я в своей кастомке сделал так: в addon_game_mode.lua в функции InitGameMode прописал условие
Lua:
    if GetMapName() == "[имя карты]" then
   end
То есть там можно прописать другие гейм руды да?
Там можно как-нибудь других героев которых выбрать можно прописать
 

fabio_longo

Продвинутый
13 Июн 2021
153
19
steamcommunity.com
Проект
Chen's Training, Creep Stacking Training
Я немного не понимаю что вписываю и у меня все слетает
У меня это выглядит так:
Lua:
function Activate()
    GameRules.AddonTemplate = CAddonTemplateGameMode()
    GameRules.AddonTemplate:InitGameMode()
end

function CAddonTemplateGameMode:InitGameMode()
    print( "Template addon is loaded." )
    GameRules:GetGameModeEntity():SetThink( "OnThink", self, "GlobalThink", 2 )
    GameRules:GetGameModeEntity():SetCustomGameForceHero("npc_dota_hero_chen")
    GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_GOODGUYS, 1 )
    GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_BADGUYS, 0 )
    GameRules:SetTimeOfDay(0.5)
    GameRules:GetGameModeEntity():SetDaynightCycleDisabled(true) 
    if GetMapName() == "dota" then
    GameRules:GetGameModeEntity():SetHUDVisible( 0, false )
    ListenToGameEvent('npc_spawned', Dynamic_Wrap(CAddonTemplateGameMode, 'OnNPCSpawned'), self)
   end
end
Если у тебя всё равно какие-то ошибки, пришли свой код)
 

shizik1_shizik2

Активный
5 Июн 2023
82
3
У меня это выглядит так:
Lua:
function Activate()
    GameRules.AddonTemplate = CAddonTemplateGameMode()
    GameRules.AddonTemplate:InitGameMode()
end

function CAddonTemplateGameMode:InitGameMode()
    print( "Template addon is loaded." )
    GameRules:GetGameModeEntity():SetThink( "OnThink", self, "GlobalThink", 2 )
    GameRules:GetGameModeEntity():SetCustomGameForceHero("npc_dota_hero_chen")
    GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_GOODGUYS, 1 )
    GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_BADGUYS, 0 )
    GameRules:SetTimeOfDay(0.5)
    GameRules:GetGameModeEntity():SetDaynightCycleDisabled(true)
    if GetMapName() == "dota" then
    GameRules:GetGameModeEntity():SetHUDVisible( 0, false )
    ListenToGameEvent('npc_spawned', Dynamic_Wrap(CAddonTemplateGameMode, 'OnNPCSpawned'), self)
   end
end
Если у тебя всё равно какие-то ошибки, пришли свой код)
После строчки GetMapName обязательны строчки остальные
И важно ли стоит GetMapName перед всеми гейм рулами или после
 

fabio_longo

Продвинутый
13 Июн 2021
153
19
steamcommunity.com
Проект
Chen's Training, Creep Stacking Training
После строчки GetMapName обязательны строчки остальные
И важно ли стоит GetMapName перед всеми гейм рулами или после
Не понимаю, в чём проблема. Если хочешь, например, чтобы в обычной карте было 10 игроков за сторону света, а в другой - всего 1, то надо сделать так:
Код:
function CAddonTemplateGameMode:InitGameMode()
    GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_GOODGUYS, 10 )
    if GetMapName() == "название твоей карты" then
    GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_GOODGUYS, 1 )
   end
end
После строчки GetMapName() пишутся геймрулы, которые применятся к твоей второй карте
 
  • Нравится
Реакции: vulkantsk

shizik1_shizik2

Активный
5 Июн 2023
82
3
Не понимаю, в чём проблема. Если хочешь, например, чтобы в обычной карте было 10 игроков за сторону света, а в другой - всего 1, то надо сделать так:
Код:
function CAddonTemplateGameMode:InitGameMode()
    GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_GOODGUYS, 10 )
    if GetMapName() == "название твоей карты" then
    GameRules:SetCustomGameTeamMaxPlayers( DOTA_TEAM_GOODGUYS, 1 )
   end
end
После строчки GetMapName() пишутся геймрулы, которые применятся к твоей второй карте
всё спасибо большое
 
Реклама: