跳到主要内容

NetStats_PacketLossPercent

描述

用于获取玩家的网络丢包百分比。丢包率表示玩家发送至服务器的数据存在丢失(反之亦然)

参数说明
playerid要获取数据的玩家 ID

返回值

以浮点数形式返回丢包百分比,若玩家未连接则返回 0

示例

public OnPlayerCommandText(playerid,cmdtext[])
{
if (!strcmp(cmdtext, "/packetloss"))
{
new szString[144];
format(szString, sizeof(szString), "当前丢包率: %.2f%%", NetStats_PacketLossPercent(playerid));
SendClientMessage(playerid, -1, szString);
}
return 1;
}

注意事项

提示

当前该函数的返回值可能存在偏差,实际结果与客户端显示数据存在差异。建议使用以下更精确的替代方案:

stock GetPlayerPacketLoss(playerid, &Float:packetLoss)
{
/* 返回指定玩家的丢包率百分比 - 由Fusez制作 */

if(!IsPlayerConnected(playerid))
{
return 0;
}

new nstats[400+1], nstats_loss[20], start, end;
GetPlayerNetworkStats(playerid, nstats, sizeof (nstats));

start = strfind(nstats, "packetloss", true);
end = strfind(nstats, "%", true, start);

strmid(nstats_loss, nstats, start+12, end, sizeof (nstats_loss));
packetLoss = floatstr(nstats_loss);
return 1;
}
提示

请注意该函数反映的是服务器的丢包数据。客户端显示的数值有所不同,并非数据错误,而是因为服务器与客户端各自仅能感知自身发送的数据包丢失情况

提示

丢包率高于 0.0%时应当引起注意,超过 1.0%则表明网络状况非常糟糕

相关函数