22.10.2018, 15:41
Don't use timers for time limitations, use UNIX timestamp instead.
There is no point in defining the strings with 250 cells, because the maximum amount of cells that SendClientMessage can display is 144. Unless you want to use a dialog to display the messages, that would work.
Код:
forward OnPlayerReport(playerid, targetid, reason); public OnPlayerReport(playerid, targetid, reason) { new rows, fields; cache_get_data(rows, fields, handle); new reportid; new count = cache_num_rows(); if(count > 0) { new reportstring[144],reportstring2[144]; reportid = cache_get_field_content_int(0, "ID", handle); format(reportstring2,sizeof(reportstring2), ""chat""COL_YELLOW"[REF:#%d]: Your report upon %s(%d) has been sent "COL_WHITE" (Reason: %s)",reportid, PlayerName(targetid),targetid, reason); SendClientMessage(playerid,-1,reportstring2); format(reportstring,sizeof(reportstring), ""chat""COL_YELLOW"[REF:#%d]: Player %s(ID:%d) has reported %s(ID:%d)"COL_WHITE" (Reason: %s)",reportid, PlayerName(playerid),playerid,PlayerName(targetid),targetid,reason); SendMessageToAllAdmins(reportstring,-1); pInfo[playerid][pReported] = gettime()+60; } } forward OnPlayerReporte(playerid, reason); public OnPlayerReporte(playerid, reason) { new rows, fields; cache_get_data(rows, fields, handle); new reportid; new count = cache_num_rows(); if(count > 0) { new reportstring[250],reportstring2[250]; reportid = cache_get_field_content_int(0, "ID", handle); format(reportstring2,sizeof(reportstring2), ""chat""COL_YELLOW"[REF:#%d]: Your report was sent. "COL_WHITE" Title: [%s].",reportid, reason); SendClientMessage(playerid,-1,reportstring2); format(reportstring,sizeof(reportstring), ""chat""COL_YELLOW"[REF:#%d]: Player %s(ID:%d) has reported an error. "COL_WHITE" (Title: %s)",reportid, PlayerName(playerid),playerid,reason); SendMessageToAllAdmins(reportstring,-1); pInfo[playerid][pReported] = gettime()+60; } } CMD:report(playerid,params[]) { new targetid,reason[105]; if(sscanf(params, "us[105]", targetid,reason)) return SendClientMessage(playerid,-1,""chat" /report [playerid] [Reason]"); if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid,-1,""COL_RED"Not online"); if(targetid == playerid) return SendClientMessage(playerid,-1, ""COL_RED"EROARE: Can report yourself."); if(!IsPlayerNPC(targetid)) { if(pInfo[playerid][pReported] < gettime()) { format(jQuery, MAX_QUERY_LENGTH, "INSERT INTO `"#reportlog"` (Username, Targetname, Report, Data) VALUES ('%s', '%s', '%s', CURRENT_TIMESTAMP)",PlayerName(playerid),PlayerName(targetid), reason); mysql_tquery(handle, jQuery, "", ""); mysql_tquery(handle, "SELECT * FROM `reportlog` ORDER BY ID DESC LIMIT 1", "OnPlayerReport", "uus[80]", playerid, targetid, reason); } else SendClientMessage(playerid,-1,""COL_RED"Wait 1 minute"); } else return SendClientMessage(playerid,-1,""COL_RED"can't report npc !"); return 1; } CMD:re(playerid,params[]) { new reason[80]; if(sscanf(params, "s[80]",reason)) return SendClientMessage(playerid,-1,""chat" /(re)port [Reason]"); if(pInfo[playerid][pReported] < gettime()) { format(jQuery, MAX_QUERY_LENGTH, "INSERT INTO `"#reportlog"` (Username, Report, Data) VALUES ('%s', '%s', CURRENT_TIMESTAMP)",PlayerName(playerid), reason); mysql_tquery(handle, jQuery, "", ""); mysql_tquery(handle, "SELECT * FROM `reportlog` ORDER BY ID DESC LIMIT 1", "OnPlayerReporte", "s[80]", playerid, reason); } else SendClientMessage(playerid,-1,""COL_RED"Wait one minute"); return 1; }