Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Как распознать сервер CS 1.6?

[РЕШЕНО]
Статус пользователя Orty_Hart
сообщение 28.6.2015, 12:32
Сообщение #1
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Добрый день,
интересует такой вопрос, как распознать CS 1.6 сервер средствами PHP?
Раньше я делал такую проверку:

Код
(ord($buffer[4]) != 109 && ord($buffer[4]) != 73)


но сейчас понимаю, что эта проверка возвращает true, для всех серверов (Sourse, CS:GO, HL, HL2, LEFT 4 DEAD 2, CZ и много других видов серверов)
Вопрос следующий, как можно проверить, чтоб сервер был действительно только CS 1.6?

Сделал проверку регуляркой: /(csgo|czero|css|source|1.0.0.34|Team Fortress)/i
но этого мало...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя onotole
сообщение 28.6.2015, 15:05
Сообщение #2


Иконка группы

Стаж: 13 лет

Сообщений: 1572
Благодарностей: 1119
Полезность: 1550

Меценат Меценат

Какой класс используется для получения инфы?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 28.6.2015, 15:14
Сообщение #3
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Orty_Hart, традиционный способ различать - по AppID.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 29.6.2015, 14:06
Сообщение #4
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

onotole,
я самопис делал, вот кусок:

Скрытый текст
Код
fwrite($fp, "\xFF\xFF\xFF\xFFTSource Engine Query\x00");
$buffer = fread($fp, 4096);
if($buffer && !preg_match("/(csgo|czero|css|source|1.0.0.34)/i", $buffer))
{
    $buffer = substr($buffer, 4);
    if(ord($buffer[0]) === 0)
        return $serv;
    
    if(!function_exists('get_string'))
    {
        function get_string()
        {
            global $buffer;
            $p = 0;
            $str = "";
            
            while(isset($buffer[$p]) && ($buffer[$p] != "\0"))
            {
                $str .= $buffer[$p];
                $p++;
            }
            $buffer = substr($buffer, mb_strlen($str) + 1);
                return $str;
        }
    }
    if(ord($buffer[0]) == 109)
    {
        get_string();
        $serv["hostname"] = trim(get_string());
        $serv["mapname"] = trim(get_string());
        get_string();
        get_string();
        $serv["player"] = ord($buffer[0]);
        $serv["maxplayer"] = ord($buffer[1]);
    }
    elseif(ord($buffer[0]) == 73)
    {
        $buffer = substr($buffer, 2);
        $serv["hostname"] = trim(get_string());
        $serv["mapname"] = trim(get_string());
        get_string();
        get_string();
        $serv["player"] = ord($buffer[2]);
        $serv["maxplayer"] = ord($buffer[3]);
    }
}


Safety1st,
https://developer.valvesoftware.com/wiki/Se...Response_Format
Цитата
Steam Application ID of game.

оно? а разве на всех серверах он одинаковый?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 29.6.2015, 14:35
Сообщение #5
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(Orty_Hart @ 29.6.2015, 15:06) *
оно? а разве на всех серверах он одинаковый?

Он; как раз разный для каждой игры. Поэтому его и можно использовать для распознавания smile.gif
Только на всех GoldSrc-серверах с древним dproto там CS будет (appid 10) (из-за недоработки в dproto, если не ошибаюсь).
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
voed
сообщение 29.6.2015, 15:04
Сообщение #6
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Цитата(Safety1st @ 29.6.2015, 15:35) *
Только на всех GoldSrc-серверах с древним dproto там CS будет (appid 10) (из-за недоработки в dproto, если не ошибаюсь).

Тогда можно смотреть folder, насколько я помню это название папки мода)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя onotole
сообщение 29.6.2015, 15:15
Сообщение #7


Иконка группы

Стаж: 13 лет

Сообщений: 1572
Благодарностей: 1119
Полезность: 1550

Меценат Меценат

Цитата(voed @ 29.6.2015, 16:04) *
Тогда можно смотреть folder, насколько я помню это название папки мода)

folder отдаст cstrike и для 1.6 и для ксс. А по appid самое то проверять
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 29.6.2015, 15:19
Сообщение #8
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Safety1st,
а каким значениям он может равняться?
Если Protocol == 73 то выдает численное значение 10
Если Protocol == 109 то выдает количество игроков на сервере.

Если смотреть согласно: https://developer.valvesoftware.com/wiki/Se...Source_Response
Тут нет ничего про AppID
Брать протокол?

Цитата
Protocol version used by the server.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 29.6.2015, 15:24
Сообщение #9
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

onotole, спасибки из принципа не ставишь? Числом благодарностей 'самое то' полезные посты выделять smile.gif


Да, для GoldSrc Folder самое то. Только ещё поддержку 'Obsolete GoldSource Response' для идеала.


Orty_Hart, Steam Application ID'ники находи опытным путём (например, по серверам в GT) и по той таблице.

Отредактировал: Safety1st, - 29.6.2015, 15:24
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 29.6.2015, 21:33
Сообщение #10
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Safety1st,
в второй таблице, нету Steam Application ID
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 29.6.2015, 21:53
Сообщение #11
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Что-то ты затупил...

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
voed
сообщение 29.6.2015, 21:55
Сообщение #12
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Цитата(onotole @ 29.6.2015, 16:15) *
folder отдаст cstrike и для 1.6 и для ксс. А по appid самое то проверять

Я хотел сказать если у всех GoldSource AppID == 10, то смотреть по папке.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя jtiq
сообщение 29.6.2015, 21:56
Сообщение #13


Иконка группы

Стаж: 18 лет

Сообщений: 1717
Благодарностей: 767
Полезность: 979

Меценат Меценат

Orty_Hart, ты мониторинг пишешь?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 30.6.2015, 19:17
Сообщение #14
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Safety1st,
Код
Что-то ты затупил...


Посмотрите вторую таблицу:
Цитата
Obsolete GoldSource Response

https://developer.valvesoftware.com/wiki/Se...Source_Response

по первой, я понял и уже нашел Steam Application IDs а по второй таблице, я не могу понять, в каком порядке его найти нужно.
про сервера, GoldSource я не знаю как найти.

voed,
в GoldSource, в таблице, AppID вообще нету. Или это я туплю... Или Вы меня не понимаете)

P.S. - Прочитайте мой ответ повторно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 30.6.2015, 19:20
Сообщение #15
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Orty_Hart, в Obsolete GoldSource Response нет никаких AppID smile.gif
Определяй по Folder good.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 30.6.2015, 19:30
Сообщение #16
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Safety1st,
CS:GO, HL, czero - можно исключить методом проверки Folder и Steam Application ID.
а CSS сервера, не могут быть GoldSource?
Я проверил около 10 серверов CSS, у них у всех есть Steam Application ID (но если его нету, то проверка по Folder провалится, т.к. там стоит: cstrike)


Steam Application ID нужно проверят четко, чтоб был равен 10? или от 10 до 19?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 30.6.2015, 20:25
Сообщение #17
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(Orty_Hart @ 30.6.2015, 20:30) *
а CSS сервера, не могут быть GoldSource?

Не могут: CSS = CS:Source, у них другой движок - Source.

Цитата(Orty_Hart @ 30.6.2015, 20:30) *
Steam Application ID нужно проверят четко, чтоб был равен 10? или от 10 до 19?

Та таблица не совсем то, что тебе нужно. Думаю, всегда 10 будет у CS-сервера.
--

Чтобы ты там ни делал - брось, пока не изучишь основы. Полагаю, в среде PHP такие же дела с избытком быдлокода, как и в скриптинге.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 1.7.2015, 17:02
Сообщение #18
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Safety1st,
Цитата
Чтобы ты там ни делал - брось, пока не изучишь основы. Полагаю, в среде PHP такие же дела с избытком быдлокода, как и в скриптинге.

При всем уважении, я Вас не оскорблял. А какие познания в PHP и других сферах - это скорей всего, не Ваше дело.
Если я спросил информацию, для уточнения, это не значит, что я не понимаю суть вещей.
И если в посте выше, мой кусок кода, есть "Быдло код", тогда Вы наверное о все велик и могущ, если сможете написать лучше, без использования класс.

А в остальном, я уже всё понял.
Только-бы вот найти сайт, где можно получить большые списки серверов CS.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 1.7.2015, 17:07
Сообщение #19
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Я тебя тоже не оскорблял. Максимум можно посчитать, что оскорбил твою работу - код smile.gif
Но ты не прав, именно про твой код не говорил. Я не являюсь специалистом в этой области, чтобы судить о его качестве.

Цитата(Orty_Hart @ 1.7.2015, 18:02) *
Если я спросил информацию, для уточнения, это не значит, что я не понимаю суть вещей.

Такой вопрос как раз-таки и означает, что ты не понимаешь суть вещей:
Цитата(Orty_Hart @ 30.6.2015, 20:30) *
а CSS сервера, не могут быть GoldSource?

Так что не вижу причин нервничать.

Цитата(Orty_Hart @ 1.7.2015, 18:02) *
А в остальном, я уже всё понял.

Рад за тебя. Последний раз что-то понял с моей подачи. Спрашиваешь элементарные вопросы - забудь о ЧСВ. Мамочек тут нет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: