При смерти команды побеждает другая

  • Автор темы Автор темы SniperX
  • Дата начала Дата начала

SniperX

Друзья CG
26 Фев 2018
539
100
Проект
Dota 2x4
Как вообщем триггерить когда умирает вся тима?
 
Это изи оказывается

Lua:
function CAddonTemplateGameMode:CheckForDefeat()
    if GameRules:State_Get() ~= DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then
        return
    end
    local bAllPlayersDead = true
    for nPlayerID = 0, DOTA_MAX_TEAM_PLAYERS-1 do
        if PlayerResource:GetTeam( nPlayerID ) == DOTA_TEAM_GOODGUYS then
            if not PlayerResource:HasSelectedHero( nPlayerID ) then
                bAllPlayersDead = false
            else
                local hero = PlayerResource:GetSelectedHeroEntity( nPlayerID )
                if hero and hero:IsAlive() then
                    bAllPlayersDead = false
                end
            end
        end
    end
    if bAllPlayersDead then
        GameRules:SetGameWinner( DOTA_TEAM_BADGUYS )
        return
    end
end
Lua:
function CAddonTemplateGameMode:OnThink()
    if GameRules:State_Get() == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then
    self:CheckForDefeat()
    elseif GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then
        return nil
    end
    return 1
end
 
if not PlayerResource:HasSelectedHero( nPlayerID ) then bAllPlayersDead = false else
Советую заменить эту часть просто на
Код:
if PlayerResource:HasSelectedHero( nPlayerID ) then
иначе команда, в которой кто-то не взял героя никогда не проиграет.
Еще в начале перебора на всякий случай есть смысл делать проверку на IsValidPlayerID
 
Советую заменить эту часть просто на
Код:
if PlayerResource:HasSelectedHero( nPlayerID ) then
иначе команда, в которой кто-то не взял героя никогда не проиграет.
Еще в начале перебора на всякий случай есть смысл делать проверку на IsValidPlayerID
У меня в начале игры всем даётся висп, а команде тьмы даётся ликан. Так что таких багов не будет
 
Реклама: