Задача следующая, в реплее нужно отобразить ряд дополнительной инфы, которая в самой игре может, как отображаться, так и нет. (от предпочтений игрока)
Остались ли какие-то рабочие варианты детекта на то, что просматривается реплэй?

Вот рабочая система с хайва. Различает реплей, одиночную и сетевую игру.
Инициализируется на стадии загрузки карты, поэтому не придется ждать 2.9 сек.
Нет ложного срабатывания на свернутую игру.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
21
quq_CCCP:
IceFog, Ну уже хорошо, что работает.
Игра может быть свёрнута и не в реплее, в этом беда..
Если я буду выводить реплейную инфу во время игры будет не очень хорошо).
22
свернутый паузит игру проверять паузу и чек игры, вроде как бы! Так как так!
32
Так постойте, что мешает вначале чекнуть когда все загрузились - реплей или нет, а потом уже хоть за сворачивайтесь.
На афкашеров пофигу, что им лишнее что то показалось, чаще всего такие вовсе не приходят или ливают.
21
quq_CCCP:
На афкашеров пофигу, что им лишнее что то показалось, чаще всего такие вовсе не приходят или ливают.
Да не, часто бывает что пока загрузка идёт кто-то может табнуться мессенжеры/вконтачи посмотреть, или музон переключить.. Нельзя так игроков хоронить корявыми решениями)
32
awesomesk1ll, ты можешь синкнуть между всеми значение InGame, кстати там вроде все игроки проверяются, в мультиплеере кто-нить тестил?
21
quq_CCCP:
awesomesk1ll, ты можешь синкнуть между всеми значение InGame, кстати там вроде все игроки проверяются, в мультиплеере кто-нить тестил?
та на это не смотри особо) эта либа корявая же..
GetCameraTargetPositionX() возвращает локальное X же?) нафига там цикл вообще.
32
Там локал плауер для всех 12 игроков
Смотри код внимательнее
21
ловким движением руки из кода выкидываются циклы, а смысл не меняется.
private function IsInGame takes nothing returns boolean
local integer counter = 1
local real camerax
local real cameray
local real x
local real y
local boolean output
loop
    exitwhen counter > 12
    if GetLocalPlayer() == Player(counter-1) then
        set camerax = GetCameraTargetPositionX()
        set cameray = GetCameraTargetPositionY()
    endif
    set counter = counter + 1
endloop
set counter = 1
call PauseGame(true)
call TriggerSleepAction(0)
loop
    exitwhen counter > 12
    if GetLocalPlayer() == Player(counter-1) then
        call SetCameraPosition(camerax + 1,cameray + 1)
    endif
    set counter = counter + 1
endloop
call TriggerSleepAction(0)
call PauseGame(false)
set counter = 1
loop
    exitwhen counter > 12
    if GetLocalPlayer() == Player(counter-1) then
        set x = GetCameraTargetPositionX()
        if x == camerax + 1 then
            set output = true
        else
            set output = false
        endif
        call SetCameraPosition(camerax,cameray)
    endif
    set counter = counter + 1
endloop
return output
endfunction 
private function IsInGame takes nothing returns boolean
local integer counter = 1
local real camerax
local real cameray
local real x
local real y
local boolean output
        set camerax = GetCameraTargetPositionX()
        set cameray = GetCameraTargetPositionY()

call PauseGame(true)
call TriggerSleepAction(0)

        call SetCameraPosition(camerax + 1,cameray + 1) 

call TriggerSleepAction(0)
call PauseGame(false)

        set x = GetCameraTargetPositionX()
            set output = (x == camerax)
        call SetCameraPosition(camerax,cameray)

return output
endfunction 
Смотри код внимательнее
28
awesomesk1ll,
ты на дисинхрон тестил? Я когда юзал этот код у меня дисинхронизация в самой игре была.
21
ну просто GetCameraTargetPositionX() SetCameraPosition() это локальные функции, их можно одновременно для всех игроков запустить спокойно, поправьте если не так)).
32
16GB, тестанул код, но делал разделения только на визуальные действия, т.е камеру не перемещал при телепортах и перерождениях героев в реплее, всё норм. Но вот без цилков, рили может десинхать, ты же не для каждого игрока записываешь проверку, а для всех.
Нужно тестить в муи, судя по тому что похожий антихак засунули в доту ниче не дисинхало и ниче не делало вред, правда читеры очень быстро научились обходить прозрачность юнитов и всякие туманы, затеняющие карту...
В доте вроде юзается какая то фишка с кинематиком, хз в чем различие киниматике в игре и в реплее?
Код лень колупать...
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.