PDA

Просмотр полной версии : sa:mp query mechanism


Receiver
16.06.2021, 11:32
Описание: Получает инфу о сервере сампа. это мой вариант реализации. предлагайте свои идеи по улучшению и ругайте мой код!!

GitHub: https://github.com/Receiver1/re_samp_query_mechanism

Использование:

C++:






auto
sqm
=
c_sqm
::
singleton
(
)
;
sqm
->
initialize
(
"176.32.37.93"
,
7777
)
;
auto
srv_info
=
sqm
->
handle

(
sqm
->
query
(
QUERYTYPE_SERVERINFO
,
1
)
)
;
// Now srv_info contains: is_locked, players, max_players, host_name, game_mode, language




Пакеты:

https://forum.antichat.xyz/attachments/27768219/

Враперры можно найти в wrappers.hpp

RomanBZK
16.06.2021, 11:33
Ники с Arizona RP сможет получать?

Vintik
16.06.2021, 11:54
Ники с Arizona RP сможет получать?



C++:






// Now srv_info contains: is_locked, players, max_players, host_name, game_mode, language





Закрытый ли сервер

Количество игроков

Максимальное количество игроков

Имя хоста

Гейммод

Язык
Значит не может, логично?

Receiver
16.06.2021, 11:59
C++:






// Now srv_info contains: is_locked, players, max_players, host_name, game_mode, language





Закрытый ли сервер

Количество игроков

Максимальное количество игроков

Имя хоста

Гейммод

Язык
Значит не может, логично?


для получения списка игроков другой пакет есть: QUERYTYPE_PLAYERLIST, - но сервер не вернёт ничего, если игроков больше 100

legendabrn
22.08.2021, 09:38
С поддержкой Linux: https://github.com/legendabrn/re_samp_query_mechanism

Компиляция: gcc main.cpp -lstdc++ -o query

Запустить: ./query

https://forum.antichat.xyz/attachments/27825935/

gaZmanoV
24.04.2022, 10:59
Форк этого же проекта, но с реализацией через boost::asio: https://github.com/Tim4ukys/re_samp_query_mechanism

+ не обязательно вводить IP (80.66.82.249 и 01.gtarp.ru одно и тоже выйдет в итоге)

Сорьки, что аппую тему. Зря старался чтоль?=((




example.cpp:





[CODE]
#include
#include
#include "SQM.h"
// https://www.blast.hk/threads/781/post-128505
int
randomInteger
(
int
min
,
int
max
)
{
static
std
::
random_device rd
;
static
std
::
default_random_engine
e1
(
rd
(
)
)
;
std
::
uniform_int_distribution

uniform_dist
(
min
,
max
)
;
return
uniform_dist
(
e1
)
;
}
int
main
(
int
argc
,
char
*
argv
[
]
)
{
SQM sm
{
"01.gtarp.ru"
,
"7777"
}
;
std
::
cout

(
)
;
std
::
cout

(
)
;
for
(
const
auto
&
[
rkey
,
rr
]
:
rul
.
m_arrRules
)
{
std
::
cout

(
)
;
size_t i_player
{
}
;
for
(
const
auto
&
pl
:
players
.
m_arrPlayer
)
{
std
::
cout

5
)
{
std
::
cout

(
)
;
tick
=
GetTickCount64
(
)
-
tick
;
std
::
cout



Вывод:

https://forum.antichat.xyz/attachments/28024070/