Получить пинг

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,064
Реакции
267
Как более точно получить пинг игрока?
Чтобы он минимально отличался от показаний команды ping и net_graph

Сейчас использую так
RoundToNearest(GetClientLatency(i, NetFlow_Both) * 500)
Результат команды:
------------------------
ping | Name
-------------------------
23ms | 111
38ms |222
17ms | 333
при этом ping:
Client ping times:
45 ms : 111
77 ms : 222
33 ms : 333

net_graph
22ms : 111
67ms : 222

Сейчас так, бывает 30-40 разница в результатах. Может есть по точнее код?
 
B

Black1121

GetClientLatency(idx, NetFlow:0) * 1000
Но часто не используй, ибо могут вызываться проблемы с пакетами
 

Reg1oxeN

Участник
Сообщения
403
Реакции
319
выше дали под команду ping.

этот код под net_graph. использую как замену в табе.
C-подобный:
stock int Client_GetPing(int client)
{
    if (IsFakeClient(client))
        return 0;

    float latency = GetClientLatency(client, NetFlow_Outgoing);
    char cl_updaterate[10];
    GetClientInfo(client, "cl_updaterate", cl_updaterate, sizeof(cl_updaterate));
    ReplaceString(cl_updaterate, sizeof(cl_updaterate), "-", "");
    latency -= (0.5 / StringToInt(cl_updaterate)) + GetTickInterval();
    int ping = RoundFloat(latency * 1000.0);
    ping = ((ping) > (1000)) ? (1000) : (((ping) < (1)) ? (1) : (ping));
    return ping > 1 ? ping : RoundToNearest(GetClientLatency(client, NetFlow_Outgoing) * 500);
}
 
B

Black1121

выше дали под команду ping.

этот код под net_graph. использую как замену в табе.
C-подобный:
stock int Client_GetPing(int client)
{
    if (IsFakeClient(client))
        return 0;

    float latency = GetClientLatency(client, NetFlow_Outgoing);
    char cl_updaterate[10];
    GetClientInfo(client, "cl_updaterate", cl_updaterate, sizeof(cl_updaterate));
    ReplaceString(cl_updaterate, sizeof(cl_updaterate), "-", "");
    latency -= (0.5 / StringToInt(cl_updaterate)) + GetTickInterval();
    int ping = RoundFloat(latency * 1000.0);
    ping = ((ping) > (1000)) ? (1000) : (((ping) < (1)) ? (1) : (ping));
    return ping > 1 ? ping : RoundToNearest(GetClientLatency(client, NetFlow_Outgoing) * 500);
}

И толку ? Отличие будет максимум в 1-2 мс, а если брать в расчёт то, что ты начинаешь проверять клиентские квары, то уже нужно проверять валидность квара, по мимо валидности, это лишние расчёты, а если знать что именно на этом сервере есть такой расчёт, то уже можно засылать фейковые значения, по этому мой вариант - самый оптимальный. Так же это не точные значения нет графа, а приблизительные.
 

Reg1oxeN

Участник
Сообщения
403
Реакции
319
И толку ? Отличие будет максимум в 1-2 мс, а если брать в расчёт то, что ты начинаешь проверять клиентские квары, то уже нужно проверять валидность квара, по мимо валидности, это лишние расчёты, а если знать что именно на этом сервере есть такой расчёт, то уже можно засылать фейковые значения, по этому мой вариант - самый оптимальный. Так же это не точные значения нет графа, а приблизительные.
если ты плохо в этом разбираешься, то мог бы просто задать конкретный вопрос, а не городить ахинею.
 

WhoAmI / WillStriX

Мошенник
Сообщения
222
Реакции
129
Что-то мне подсказывает, что регионекс просто из движка функцию достал => это самый точный метод
 

Nebraska

Участник
Сообщения
234
Реакции
299
@Reg1oxeN, отпиши в лс страничку свою в ВК, пожалуйста, по делу одному.
 
Сверху Снизу