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