// // Admin player netstats display // Using NetStats_* functions. // // -Rcon login admin then: // /pnetstats2 (playerid) // #include #include "../include/gl_common.inc" #define ADMINFS_MESSAGE_COLOR 0xFF444499 #define ADMIN_NETSTATS_DIALOGID 12899 new gNetStatsPlayerId = INVALID_PLAYER_ID; new gNetStatsDisplayId = INVALID_PLAYER_ID; new gNetStatsTimerId = 0; forward NetStatsDisplay(); //------------------------------------------------ public OnFilterScriptInit() { print("\n--Admin Netstats FS loaded.\n"); return 1; } //------------------------------------------------ BuildPlayerNetstatString(playerid, ret_str[], ret_str_len) { new szPlayerIpPort[64+1]; NetStats_GetIpPort(playerid, szPlayerIpPort, 64); format(ret_str, ret_str_len, "IP_Port: %s\nConnected Time (ms): %d\nConnection Status: %d\nPacket Loss: %.2f\nMessages Recv: %d\nMessages Sent: %d\nMessages/sec: %d", szPlayerIpPort, NetStats_GetConnectedTime(playerid), NetStats_ConnectionStatus(playerid), NetStats_PacketLossPercent(playerid), NetStats_MessagesReceived(playerid), NetStats_MessagesSent(playerid), NetStats_MessagesRecvPerSecond(playerid)); } //------------------------------------------------ public NetStatsDisplay() { new netstats_str[1024+1]; BuildPlayerNetstatString(gNetStatsDisplayId, netstats_str, 1024); ShowPlayerDialog(gNetStatsPlayerId, ADMIN_NETSTATS_DIALOGID, DIALOG_STYLE_MSGBOX, "Player NetStats", netstats_str, "Ok", ""); } //------------------------------------------------ public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(!IsPlayerAdmin(playerid)) return 0; // this is an admin only script if(dialogid == ADMIN_NETSTATS_DIALOGID) { KillTimer(gNetStatsTimerId); gNetStatsPlayerId = INVALID_PLAYER_ID; return 1; } return 0; } //------------------------------------------------ public OnPlayerCommandText(playerid, cmdtext[]) { new cmd[256+1]; new idx; if(!IsPlayerAdmin(playerid)) return 0; cmd = strtok(cmdtext, idx); // netstats command if(strcmp("/pnetstats2", cmd, true) == 0) { new tmp[128]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { return 1; } gNetStatsPlayerId = playerid; gNetStatsDisplayId = strval(tmp); NetStatsDisplay(); gNetStatsTimerId = SetTimer("NetStatsDisplay", 3000, true); // this will refresh the display every 3 seconds return 1; } return 0; } //------------------------------------------------