Jump to content

Report command


Freaksken

Recommended Posts

Ik heb een reportcommand.

Ik zou graag willen dat de report in een file wordt opgeslaan.

Ik denk dat dat met hulp van dini is, maar ik zou niet weten hoe eraan te beginnen.

Het command ziet er zo uit:

/report [reportname] [reason]

De naam een de reden moeten worden opgeslaan.

Bewerkt: door Freaksken
Link to comment
Delen op andere websites

Omdat je met Naam en Reden werkt is het niet zo handig om met Dini te werken omdat het dan ook word overscheven als diegene weer word gereport

En de tijd+datum is ook wel handig zodat je precies weet waneer het gebeurt is.

Alles klopt niet helemaal,

Je moet otherplayer en Reason vervangen door jouwn manier om die te vinden in jouwn command

Code:

GetPlayerName(playerid,name,sizeof(name));
new File:SaveFile, ip[50], year,month,day, hour,minute,second;
GetPlayerIp(playerid,ip,sizeof(ip) );	
getdate(year,month,day); gettime(hour,minute,second);
GetPlayerName(otherplayer, otherplayer, sizeof(otherplayer));

SaveFile = fopen("Report.txt",io_append);
format(string,sizeof(string),"[Report:] [%d.%d.%d %d:%d] By:%s,%s For:%s Reason: %s\r\n",day,month,year,hour,minute, name,ip,otherplayer,reason);
fwrite(SaveFile,string);
fclose(SaveFile);

Als het niet lukt post je eigen command dan even dan kan ik zorgen dat alles klopt.

Bewerkt: door mosweg
Link to comment
Delen op andere websites

//Report
	if(strcmp(cmd, "/report", true)==0)
   {
 		new sendername[MAX_PLAYER_NAME];
 		new reportname[MAX_PLAYER_NAME];
 		new reportid;
 		new reason[256];
	new string[256];
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp))
       {
           SendClientMessage(playerid, COLOR_BLUE, "Use: /report [reportname] [reason]");
           return 1;  //Stopt het commando
       }
       playerid = strval(tmp);

	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp))
       {
           SendClientMessage(playerid, COLOR_BLUE, "Use: /report [reportname] [reason]");
           return 1;  //Stopt het commando
       }
       reason = tmp;
	GetPlayerName(playerid, sendername, sizeof(sendername));
	format(string, sizeof(string), "Reportmessage from %s(%d): %s: %s!", sendername, playerid, reportname, cmdtext[8]);
	SendClientMessageToAdmins(COLOR_RED, string);
	format(string, sizeof(string), "Message send to currently online admins!");
	SendClientMessage(playerid, COLOR_WHITE, string);

	new File:SaveFile, ip[50], year,month,day, hour,minute,second;
	GetPlayerIp(playerid,ip,sizeof(ip) );
	getdate(year,month,day);
	gettime(hour,minute,second);
	GetPlayerName(reportid, reportname, sizeof(reportname));
	SaveFile = fopen("Report.txt",io_append);
	format(string,sizeof(string),"[Report:] [%d/%d/%d, %d:%d] By:%s,%s For:%s Reason: %s\r\n",day,month,year,hour,minute, sendername,ip,reportname,reason);
	fwrite(SaveFile,string);
	fclose(SaveFile);
       return 1;
   }

Ik typ: /report N00b daarom

Nu krijg ik in de chat:

Reportmessage from TrainDriverLS(0): : N00b daarom!

Dit moet zijn:

Reportmessage from Freaksken(7): N00b: daarom!

Dit in Report.txt:

[Report:] [4/1/2010, 18:12] By:TrainDriverLS,127.0.0.1 For:TrainDriverLS Reason: daarom

Dit moet zijn:

[Report:] [4/1/2010, 18:12] By:Freaksken,127.0.0.1 For:N00b Reason: daarom

Het ligt denkik hieraan:

	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp))
       {
           SendClientMessage(playerid, COLOR_BLUE, "Use: /report [reportname] [reason]");
           return 1;  //Stopt het commando
       }
       playerid = strval(tmp);

PS: TrainDriverLS is een bot met ID 0

PS2: Kijk ook naar de dubbele punten die verkeerd staan in de chat

Bewerkt: door Freaksken
Link to comment
Delen op andere websites

Ik krijg het niet eens aan het werk in mijn server.

Het lijkt me ook lastig om 2 dingen achter het command te zetten (playerid, reason)

Meestal word dat gedaan met dcmd.

Tutorial> Tutorial

Het command word dan:

dcmd_report(playerid, params[])
{
GetPlayerName(playerid, playername, sizeof(playername));
format(userfile, sizeof(userfile), "/Account/%s.txt", playername);
admin = dini_Int(userfile, "adminlevel");
new string[256];

       new otherplayer; // Hierin gaan we het id van de speler opslaan
       new reason[64]; // Hierin gaan we de reden opslaan

       if(sscanf(params, "uz", otherplayer, reason)) // Haal de gegevens uit params. u = playerid, z = Reden (optioneel)
       {
       	// Als er iets ontbreekt ...
        	SendClientMessage(playerid, 0xFF0000FF, "USE: /report <Playerid/PartOfName> <Reason>");
         	return 1;
       }

       if(!IsPlayerConnected(otherplayer)) // Als de ingevoerde speler niet online is ...
       {
       	SendClientMessage(playerid, 0xFF0000FF, "Player is not online");
        	return 1;
       }

       // Op dit punt is het id van de speler opgeslagen in 'otherplayer' en de reden in 'reason'

       new PlayerName[MAX_PLAYER_NAME], OtherName[MAX_PLAYER_NAME]; // Variabelen voor de namen
       GetPlayerName(playerid, PlayerName, sizeof(PlayerName)); // Verkrijg de naam van de admin
       GetPlayerName(otherplayer, OtherName, sizeof(OtherName)); // Verkrijg de naam van de speler die gekicked wordt);
       format(string, sizeof(string), "[REPORT:] by: %s(%d) for: %s(%d) Reason: %s.", PlayerName, playerid, OtherName, otherplayer, reason);
       SendAdminMessage(COLOR_RED, string);
       print(string);

       new File:SaveFile, ip[50], year,month,day, hour,minute,second;
GetPlayerIp(playerid,ip,sizeof(ip) );
getdate(year,month,day);
gettime(hour,minute,second);
SaveFile = fopen("Report.txt",io_append);
format(string,sizeof(string),"[Report:] [%d/%d/%d, %d:%d] By: %s,%s For: %s Reason: %s\r\n",day,month,year,hour,minute,      PlayerName,ip,otherplayer,reason);
fwrite(SaveFile,string);
fclose(SaveFile);
   return 1;
}

Bewerkt: door mosweg
Link to comment
Delen op andere websites

Je bent vergeten te checken of de playerid wel online is en strtok slaat maar 1 woord op.

EDIT: en waarom probeer je een naam in te vullen als je "playerid = strval(tmp);" gebruikt?

Bewerkt: door GTAguillaume
Link to comment
Delen op andere websites

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...