Информация Реконнект для SRP

Тема в разделе "C, C++", создана пользователем SR_team, 29 окт 2016.

  1. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.13
    Сообщения:
    2.487
    Лайки:
    1.442
    Репутация:
    404
    Сегодня меня угораздило попасть на SRP, и конечно же, через некоторое время я получил кик. Но реконнект не помог - сервер не отвечал. По разбиравшись узнал, что теперь на samp RP можно зайти только предварительно его пропинговав (кликнув по строчке с сервером в samp.exe). Исходя из этого я предполагаю следующее решение (предполагаю, а не предлагаю, потому что не проверял, и проверять не собираюсь).
    Перед тем как подключиться к серверу, его нужно пропинговать. Функции пинга есть в RakClientInterface, для соба это g_RakClient->GetInterface()->, для SF это SF->getRakNet()->getRakClient()->. Пинговать можно как текущий сервер, так и любой другой, для этого есть метод PingServer, для пинга сервера к которому вы не подключены (для реконнекта вероятно именно он понадобится), необходимо иметь ip сервера, port сервера, port своего ПК. Есть еще 4й параметр, но его название говорит за себя "onlyReplyOnAcceptingConnections".
    И так единственная проблема это открытый порт на вашем ПК. Как его узнать? Да очень просто! Это реализуется методом GetPlayerID(), который возвращает структуру PlayerID, в этой структуре хранится ваш ip адрес (в бинарном вмде) и порт, с которым устанавливалось соединение.
    Вот собственно и все. Пингуем сервер, а потом подключаемся, подключиться можно через тот же RakClientInterface, указав порт.
     
    #1
    4el0ve4ik и mac нравится это.
  2. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    851
    Лайки:
    1.699
    Репутация:
    682
    не хочу тебя разочаровывать, но придётся. эти функции ракнета к query-системе сампа никакого отношения не имеют. пропинговка в ракнете нужна лишь для поддержания статуса активности соединения, т.к. используется UDP, и чтобы пинговать сервер из клиента в него нужно запиливать эту функциональность самому.
     
    #2
  3. Maddy

    Maddy Активный пользователь

    Регистрация:
    08.04.13
    Сообщения:
    36
    Лайки:
    9
    Репутация:
    13
    https://wiki.sa-mp.com/wiki/Query_Mechanism

    На адвансе и даймонде тоже стоит такая же система, на адвансе требует запрос -r, на остальных серверах не проверял
     
    #3