igroglaz / srvmgr

https://rom2.ru
8 stars 5 forks source link

screenshot feature #128

Closed igroglaz closed 2 months ago

igroglaz commented 2 years ago

task: finish impementation of #screenshot feature - https://github.com/igroglaz/srvmgr/commit/dedebe753e03e5e8b77a0c0477dd9b7fda447378

atm it exist on server and client. so we need now to get the screenshot on server.. to do so we need webserver which will get screenshot from client.

How does it work: [16:14] ZZYZX: Есть протокол [16:15] ZZYZX: Есть команда #screenshot [16:15] ZZYZX: Которая запускает сложное взаимодействие [16:15] ZZYZX: Между хэтом, сервером [16:15] ZZYZX: И вроде нашими пшп скриптами [16:15] ZZYZX: Или только с хэтом. Не помню [16:15] ZZYZX: Ну и клиент соответственно грузит скрин через хэт если я ничё не путаю) [16:15] ZZYZX: Я реально не очень помню как это работает, это одна из проблем [16:16] igroglaz: ок, спасибо. мейб будет у кого-то интерес заняться этой штукой [16:16] ZZYZX: Обработка данного функционала в клиенте находится тут: https://github.com/jewalky/a2mgr/blob/master/network_protocol_ext.cpp#L992 [16:17] ZZYZX: https://github.com/jewalky/a2mgr/blob/master/network_protocol_ext.cpp#L1017 Ну и вот тут непосредственно отправка https://github.com/jewalky/a2mgr/blob/master/network_protocol_ext.cpp#L864 [16:17] ZZYZX: SOCKET s = SOCK_Connect("hat.allods2.eu", 8000, "0.0.0.0", 0); [16:17] ZZYZX: Судя по всему отправка скриншотов именно через редхат идёт [16:17] ZZYZX: Раз на порт 8000) [16:18] ZZYZX: Причём там как-то странно [16:18] ZZYZX: Оно через HTTP отправляет о_О [16:18] ZZYZX: ага [16:18] ZZYZX: Короче по ходу клиент отчитывается перед хэтом что он начал отправку скриншота [16:18] ZZYZX: Потом идёт в наш пшп скрипт [16:18] ZZYZX: Строка 933 [16:18] ZZYZX: И отправляет файл через POST [16:19] ZZYZX: И если скриншот отправлен, то опять отчитывается хэту, что типа всё ок, отправили [16:19] ZZYZX: А если не отправили то тоже отчитываемся [16:19] ZZYZX: Я так понимаю проблема в том что клиент по какой-то причине не может отправлять пакеты серверу напрямую (либо я это не реализовал, либо это в принципе сложно/невозможно реализовать) [16:19] ZZYZX: Поэтому все команды идут вот так через жопу [16:20] serg.bloim: @ZZYZX а как чисто логически происходит отлов обзорщиков на клиенте? [16:22] ZZYZX: Чисто логически клиент посылает скриншот хэту каждый час и потом сидит ГМ и просматривает [16:22] igroglaz: если у игрока обзор - это отдельный клиент с тюнингом.. если мы просим сделать игрока скриншот (alt+s), то обзор будет видно. фишка в том, что чтоб выключить обзор - надо перелогинится в другой клиент [16:22] ZZYZX: Нет, чтобы выключить обзор имея исходник клиента не надо никуда перелогиниваться [16:22] igroglaz: так можно отлавливать ... вот только что я на слоге просил всех сделать скриншот и выслать мне [16:22] ZZYZX: Но на самом деле имея исходник клиента можно и со скриншотами намудрить [16:22] ZZYZX: Поэтому это не очень полезная штука [16:22] ZZYZX: Я могу точно сказать что вот лично я, смог бы сделать клиент который посылает идеальный скрин, но при этом с обзором и антиневидом) [16:23] ZZYZX: Поэтому вообще не особо считаю полезной эту фичу [16:23] ZZYZX: Закрытие обзора на сервере приоритетнее [16:23] ZZYZX: В частности блокирование команд которые относятся к клеткам которые ты не видишь [16:23] ZZYZX: +- в пределах пинга [16:23] ZZYZX: Такой код, между прочим, в сервере есть. Запрещающий кидать огненный шар или телепорт вне видимости [16:23] ZZYZX: Ток я хз он включен или нет. Он мешал играть каким-то хохлам с 500 пингом [16:30] serg.bloim: кстати, я не знаю как делать скриншот =))) мог бы попасть в непонятную ситуацию)))) [16:31] serg.bloim: антиневид...уххх [16:32] serg.bloim: погоди, так сервер и таки не шибко много что посылает клиенту, только квадрат в радиусе 20 клеток [16:32] igroglaz: скрин - alt+s [16:44] ZZYZX: [3:32 PM] serg.bloim: погоди, так сервер и таки не шибко много что посылает клиенту, только квадрат в радиусе 20 клеток 30 [16:45] ZZYZX: Но учитывая что обзор у меня например 7.9 [16:45] ZZYZX: А дальность заклинаний например 15 [16:45] ZZYZX: То я могу лупить хрен знает куда [16:45] ZZYZX: И кайтить мобов эффективнее

igroglaz commented 2 years ago

1) ClientScreenshot_Enqueue() request screenshot from server side 2) Cl_ScreenshotThread() sends screenshot to server

I suppose the task is to make script which will 'catch' screenshot ;)