NetStats MessagesRecvPerSecond

Материал из Pro-Pawn Wiki
Перейти к: навигация, поиск

Описание:

Узнаёт количество сетевых сообщений, полученных сервером от игрока за последнюю секунду.

Параметры:

(playerid)
playerid ID игрока, интенсивность получения сообщений от которого требуется узнать.


Возвращаемое значение:

Количество сообщений, отправленных от игрока на сервер за последнюю секунду, либо 0, если под указанным ID с момента запуска сервера не было ни одного игрока.

Bug.png
Баг SA-MP
Функция не проверяет ID игрока на подключение. Если игрок под указанным ID вышел с сервера, функция продолжает возвращать количество сообщений, полученных от него за последнюю секунду перед его отключением.


Пример использования:

CMD:netstats(playerid, params[])
{
    if (0 == IsPlayerAdmin(playerid))
        return SendClientMessage(playerid, -1, "Вы не администратор сервера!");
    extract params -> new player:targetid; else // sscanf2
        return SendClientMessage(playerid, -1, "Использование: /gethp [ID игрока/часть ника]");
    if (targetid == INVALID_PLAYER_ID)
        return SendClientMessage(playerid, -1, "Игрок не найден.");
    new name[MAX_PLAYER_NAME + 1], ip_port[22];
    GetPlayerName(targetid, name, sizeof(name));
    NetStats_GetIpPort(targetid, ip_port, sizeof(ip_port));
    new conntime = NetStats_GetConnectedTime(targetid);
    new msgrecv = NetStats_MessagesReceived(targetid);
    new bytesrecv = NetStats_BytesReceived(targetid);
    new msgsent = NetStats_MessagesSent(targetid);
    new bytessent = NetStats_BytesSent(targetid);
    new msgrecvps = NetStats_MessagesRecvPerSecond(targetid);
    new Float:packetloss = NetStats_PacketLossPercent(targetid);
    new string[512];
    format(
        string, sizeof(string),
            "Игрок #%d %s (%s)\n\n" \
            "Время подключения: %d мс\n" \
            "Сообщений получено: %d\n" \
            "Байт получено: %d\n" \
            "Сообщений отправлено: %d\n" \
            "Байт отправлено: %d\n" \
            "Трафик: %d сообщений в секунду\n" \
            "Потеря пакетов: %.2f%%",
        targetid, name, ip_port, conntime, msgrecv, bytesrecv, msgsent, bytessent, msgrecvps, packetloss
    );
    printf("len: %d", strlen(string));
    return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Сетевая статистика", string, "Закрыть", "");
}


См. также: