Победа при наборе игроком убийств

warn14

Новичок
16 Июл 2023
1
0
Проект
gagagame
В моей кастомке 4 команды по 1 игроку. Посмотрел старые темы, пытался искать гайды на разных языках, но максимум чего я мог добиться это то, что игра кончается даже если последнее убийство совершил игрок из другой команды до этого имеющий 0 киллов. Сразу говорю, что в коде не шарю от слова совсем, но буду благодарен за помощь.
 

iia3uk666

Друзья CG
18 Дек 2021
411
70
Проект
Ушел с CG
Тебе надо определить кто убил и определить его команду и сделать его команду победившим

Для определения победившей команды, которая убила босса в DotA 2 custom game, можно использовать следующий код на языке LUA:

Lua:
-- Создаем таблицу для хранения количества убийств босса для каждой команды
local bossKills = {
    [DOTA_TEAM_GOODGUYS] = 0,
    [DOTA_TEAM_BADGUYS] = 0,
    [DOTA_TEAM_CUSTOM_1] = 0,
    [DOTA_TEAM_CUSTOM_2] = 0
}

-- Функция, вызываемая при смерти босса
function OnBossDeath(killedUnit, killerEntity)
    -- Проверяем, является ли убитый юнит боссом
    if killedUnit:GetUnitName() == "boss_unit_name" then
        -- Увеличиваем счетчик убийств для команды убийцы
        bossKills[killerEntity:GetTeamNumber()] = bossKills[killerEntity:GetTeamNumber()] + 1
        
        -- Проверяем, есть ли команда с 3 и более убийствами босса
        for team, kills in pairs(bossKills) do
            if kills >= 3 then
                GameRules:SetGameWinner(team)
                return
            end
        end
    end
end

-- Подписываемся на событие смерти юнита
ListenToGameEvent("entity_killed", OnBossDeath, nil)


В этом коде мы создаем таблицу bossKills, в которой хранится количество убийств босса для каждой команды. При смерти босса вызывается функция OnBossDeath, которая увеличивает счетчик убийств для команды убийцы и проверяет, есть ли команда с 3 и более убийствами босса. Если такая команда найдена, то устанавливается победитель игры с помощью функции GameRules:SetGameWinner(team), где team - номер команды победителя.

Обратите внимание, что вам нужно заменить "boss_unit_name" на имя юнита босса в игре. Также убедитесь, что вы правильно настроили команды игроков в вашей DotA 2 custom game.

Код соенерирован ChatGPT , за работоспособность не ручаюсь , спасибо за понимание , но это вносит понимание в реализацию
 

iia3uk666

Друзья CG
18 Дек 2021
411
70
Проект
Ушел с CG
А соре шапку не читал...
Для определения победившей команды, которая достигла 10 убийств героя другой команды в DotA 2 custom game, можно использовать следующий код на языке LUA:
Lua:
-- Создаем таблицу для хранения количества убийств героя для каждой команды
local heroKills = {
    [DOTA_TEAM_GOODGUYS] = 0,
    [DOTA_TEAM_BADGUYS] = 0,
    [DOTA_TEAM_CUSTOM_1] = 0,
    [DOTA_TEAM_CUSTOM_2] = 0
}

-- Функция, вызываемая при смерти героя
function OnHeroDeath(killedUnit, killerEntity)
    -- Проверяем, является ли убитый юнит героем другой команды
    if killedUnit:IsRealHero() and killedUnit:GetTeamNumber() ~= killerEntity:GetTeamNumber() then
        -- Увеличиваем счетчик убийств для команды убийцы
        heroKills[killerEntity:GetTeamNumber()] = heroKills[killerEntity:GetTeamNumber()] + 1
       
        -- Проверяем, есть ли команда с 10 и более убийствами героя
        for team, kills in pairs(heroKills) do
            if kills >= 10 then
                GameRules:SetGameWinner(team)
                return
            end
        end
    end
end

-- Подписываемся на событие смерти героя
ListenToGameEvent("entity_killed", OnHeroDeath, nil)
В этом коде мы создаем таблицу heroKills, в которой хранится количество убийств героя для каждой команды. При смерти героя вызывается функция OnHeroDeath, которая увеличивает счетчик убийств для команды убийцы и проверяет, есть ли команда с 10 и более убийствами героя. Если такая команда найдена, то устанавливается победитель игры с помощью функции GameRules:SetGameWinner(team), где team - номер команды победителя.

Обратите внимание, что вам нужно настроить команды игроков в вашей DotA 2 custom game, чтобы герои были правильно распределены между командами.

Код соенерирован ChatGPT , за работоспособность не ручаюсь , спасибо за понимание , но это вносит понимание в реализацию
 
Реклама: