Vielleicht gibt es das schon und ich habe es übersehen.
Dachte so an eine Log wo alle Befehle der Admins und der User gespeicher werden, die sie gemacht haben
Nur von Admins würde mir auch schon reichen
Vielleicht gibt es das schon und ich habe es übersehen.
Dachte so an eine Log wo alle Befehle der Admins und der User gespeicher werden, die sie gemacht haben
Nur von Admins würde mir auch schon reichen
new File:a_log = fopen("admin.log", io_write);
// dann bsp. die Benutzung eines Commands erstmal formatieren.
new a_str[64], a_name[MAX_PLAYER_NAME];
GetPlayerName(playerid, a_name, sizeof(a_name));
format(a_str, sizeof(a_str), "%s uses the /goto command.", a_name);
// dann in die admin.log Datei reinschreiben:
fwrite(a_log, a_str);
Im Prinzip ganz einfach, vllt hilft dir auch das hier noch weiter:
File Functions
Ich würde die Datei mit io_append öffnen, ansonsten überschreibt man ja die alten Daten.
new File:a_log = fopen("admin.log", io_append);
// dann bsp. die Benutzung eines Commands erstmal formatieren.
new a_str[64], a_name[MAX_PLAYER_NAME];
GetPlayerName(playerid, a_name, sizeof(a_name));
format(a_str, sizeof(a_str), "%s uses the /goto command.\r\n", a_name);
// dann in die admin.log Datei reinschreiben:
fwrite(a_log, a_str);
// schließen
fclose(a_log);
So müsste man aber das bei jedem Befehl mit hinzufügen. Dachte eher an was wo allgemein die Befehle die ein Admin eingibt speichert.
Ja, ich gebe Master_FM recht. Es ist ja doof wenn man alle befehle dorthin scrheiben muss o0
if(IsPlayerAdmin(playerid))
{
new File:a_log = fopen("admin.log", io_append);
// dann bsp. die Benutzung eines Commands erstmal formatieren.
new a_str[64], a_name[MAX_PLAYER_NAME];
GetPlayerName(playerid, a_name, sizeof(a_name));
format(a_str, sizeof(a_str), "%s has used the %s command.\r\n", a_name, cmdtext);
// dann in die admin.log Datei reinschreiben:
fwrite(a_log, a_str);
// schließen
fclose(a_log);
}
stock cmdLog(cmd[], playerid)
{
new File:a_log;
a_log = fopen("admin.log", io_append);
if(!a_log) return print("error");
new a_str[64], a_name[MAX_PLAYER_NAME];
GetPlayerName(playerid, a_name, sizeof(a_name));
format(a_str, sizeof(a_str), "%s (ID: %d) uses command /%s", a_name, playerid, cmd);
fwrite(a_log, a_str);
fclose(a_log);
}
Dann nurnoch im Command:
// Beispiel
if(!strcmp(cmdtext,"/gmx"))
{
cmdLog("gmx", playerid);
SendRconCommand("gmx");
return 1;
}
Dürfte funktionieren, Benutzung auf eigene Gefahr
Ähm habe ich grad ein Denkfehler oder kommt das nicht bei CommandText rein?
Ja das kommt in OnPlayerCommandText rein.
Dann funkt es nicht deine letzte Idee, mein Fehler?
Das hier:
stock cmdLog(cmd[], playerid)
{
new File:a_log;
a_log = fopen("admin.log", io_append);
if(!a_log) return print("error");
new a_str[64], a_name[MAX_PLAYER_NAME];
GetPlayerName(playerid, a_name, sizeof(a_name));
format(a_str, sizeof(a_str), "%s (ID: %d) uses command /%s", a_name, playerid, cmd);
fwrite(a_log, a_str);
fclose(a_log);
}
kommt nach ganz unten ins Script (bzw. außerhalb eines Callbacks und anderer Funktionen)
Dann in jedem Command das hier benutzen:
cmdLog(cmd[], playerid);
das "cmd[]" durch den entsprechenden Command ersetzen.
Beispiel:
cmdLog("gmx", playerid);
Deins ist auch net schlecht, meinte aber Einstein seins
Edit by #!:// Einstein hat hier garkeins gepostet.
Und zu meinem:
IsPlayerAdmin funktioniert nur für den Rcon Admin ingame.
Irgendwie wusste ich, daß du keinen Plan hast, gegen was du das ersetzen musst.
//Bei mir ist aber IsPlayerAdmin definiert wegen Junkbuster Und trotzdem geht es nicht