Отлов момента, когда игрок забросил игру

  • Автор темы Автор темы Primo
  • Дата начала Дата начала
  • Официальное уведомление администрации CustomGames.RU
    В связи с масштабным техническим сбоем в инфраструктуре прежнего хостинг-провайдера (Beget), работа форума CustomGames.RU была оперативно перенесена на новую серверную площадку и развёрнута из резервной копии базы данных.

    • Безопасность данных: учётные записи и данные пользователей находятся в полной безопасности. Все пароли и защищаемые параметры хранятся исключительно в криптографически зашифрованном (хэшированном) виде — никаких критических инцидентов для аккаунтов пользователей не произошло.
    • Временные технические ограничения: на этапе синхронизации файлового хранилища часть статических материалов (пользовательские аватары и архивные вложения) временно недоступна. По мере получения доступа к файловым архивам все материалы будут восстановлены в полном объёме.

Primo

Пользователь
26 Авг 2016
68
0
Собственно, из шапки понятно, нужно отловить момент, когда игрок полностью покинул игру, то бишь его
DOTA_CONNECTION_STATE
меняется на
DOTA_CONNECTION_STATE_ABANDONED
 
Может можно проще, я так делаю:
Lua:
_G.PlayerConection = {}
GameRules:GetGameModeEntity():SetThink( function()
    for i = 0, PlayerResource:GetPlayerCount()-1 do
        if PlayerResource:IsValidPlayerID(i) then
            local connection = PlayerResource:GetConnectionState(i)
            if connection ~= PlayerConection[i] then
                PlayerConection[i] = connection
                if connection == DOTA_CONNECTION_STATE_ABANDONED then
                    Events:OnPlayerAbandoned(i) --здесь надо свою функцию вставить
                end
            end
        end
    end
    return 1/30
end, "ConnectionThink" )
 
Через тинкер как-то тяжеловато для работы скрипта будет.
 
Реклама: