Kleines Logsystem

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Ich scripte sein 15 min ein Logsystem für jedermann.


    Name: FusionLog

    Was kann es soweit?

    Es speichert CMDs, TXT, RCONCMS, CON, DIS ab. Hier speichert aber das System jeweils die Daten in die jeweilige Tagesdatei ab.
    Pro Tag gibt es also eine Datei.



    Was benötigt ihr für Commands?

    Ich habe mir überlegt, dass es auch nicht blöd wäre online ein Log durchsuchen zu können.


    Jetzt meine Frage, was für Durchsuchungscmds benötigt ihr?
    Oder soll das Ding wegwerfen, weil es eh nur rumgespiele ist xDD





    Hier mal der Code bis jetzt:

    //FUSIONLOG BY MINIYODA
    //Nutzung ist erlaubt.
    //Credits sind beizubehalten. Das Script bleibt und ist geistiges Eigentum von MiniYoda.
    //Bei Widerhandlung sind rechtliche Schritte zu erwarten
    #include <a_samp>
    //______________________________________________________________________________
    #define DIALOGS 1337
    //______________________________________________________________________________
    new configdaten[2];
    //______________________________________________________________________________
    forward loadconfig();
    forward saveconfig();
    forward writelog(string[]);
    forward SaveCreatedLog(logname[]);
    //______________________________________________________________________________
    stock getlogname(day,month,year)
    {
    new returnstring[128];
    format(returnstring, sizeof(returnstring), "/FusionLogs/log.%d.%d.%d.fusion.save",year,month,day);
    return returnstring;
    }


    stock PlayerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    return name;
    }


    stock ShowPlayerDiaConfig(playerid)
    {
    ShowPlayerDialog(playerid, DIALOGS+1, DIALOG_STYLE_LIST, "Fusionlog: Menu", "Log: activate\nLog: deactivate", "Bestätigen", "Beenden");
    return 1;
    }


    stock ShowPlayerLogMenu(playerid)
    {
    ShowPlayerDialog(playerid, DIALOGS, DIALOG_STYLE_LIST, "Fusionlog: Menu", "Config", "Bestätigen", "Beenden");
    return 1;
    }
    //______________________________________________________________________________
    public loadconfig()
    {
    if (fexist("config.log.fusion.save"))
    {
    new File: datei = fopen("config.log.fusion.save", io_read);
    new dateistring[256];
    fread(datei, dateistring);

    configdaten[0] = strval(dateistring);
    return 1;
    }

    return 0;
    }


    public saveconfig()
    {
    new File:speichern = fopen("config.log.fusion.save", io_write);
    new speicherstring[256];
    format(speicherstring,sizeof(speicherstring),"%d",configdaten[0]);
    fwrite(speichern, speicherstring);
    fclose(speichern);
    return 1;
    }



    public writelog(string[])
    {
    if (configdaten[0] == 1)
    {
    if (strlen(string) == 0) return 0;


    new datum[3];
    new File:savefile;
    new savestring[256];


    getdate(datum[2],datum[1],datum[0]);
    format(savestring, sizeof(savestring),"%s\n",string);


    if (fexist(getlogname(datum[0],datum[1],datum[2])))
    {
    savefile = fopen(getlogname(datum[0],datum[1],datum[2]), io_append);
    fwrite(savefile, savestring);
    fclose(savefile);
    } else {
    savefile = fopen(getlogname(datum[0],datum[1],datum[2]), io_write);
    fwrite(savefile, savestring);
    fclose(savefile);
    new savecrstring[128];
    format(savecrstring,sizeof(savecrstring),"%d.%d.%d",datum[2],datum[1],datum[0]);
    SaveCreatedLog(savecrstring);
    }
    }

    return 1;
    }



    public SaveCreatedLog(logname[])
    {
    new File:savefile;
    new savestring[256];


    format(savestring, sizeof(savestring),"%s\n",logname);


    if (fexist("loglist.log.fusion.save"))
    {
    savefile = fopen("loglist.log.fusion.save", io_append);
    fwrite(savefile, savestring);
    fclose(savefile);
    } else {
    savefile = fopen("loglist.log.fusion.save", io_write);
    fwrite(savefile, savestring);
    fclose(savefile);
    }
    }



    public OnFilterScriptInit()
    {
    print(" FUSIONLOG ONLINE!");
    loadconfig();
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }



    public OnPlayerConnect(playerid)
    {
    new connectstring[256];
    new playerip[32];
    GetPlayerIp(playerid,playerip,sizeof(playerip));
    new time[3];
    gettime(time[0],time[1],time[2]);
    format(connectstring,sizeof(connectstring),"%d:%d:%d|CON|%s|IP: %s",time[0],time[1],time[2],PlayerName(playerid),playerip);
    writelog(connectstring);
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    new disconnectstring[256];
    new playerip[32];
    GetPlayerIp(playerid,playerip,sizeof(playerip));
    new time[3];
    gettime(time[0],time[1],time[2]);
    format(disconnectstring,sizeof(disconnectstring),"%d:%d:%d|DIS|%s|IP: %s|%d",time[0],time[1],time[2],PlayerName(playerid),playerip,reason);
    writelog(disconnectstring);
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    new deathstring[256];
    new time[3];
    gettime(time[0],time[1],time[2]);
    format(deathstring,sizeof(deathstring),"%d:%d:%d|RIP|%s|Reason: %d|Killer: %s",time[0],time[1],time[2],PlayerName(playerid),reason,PlayerName(killerid));
    writelog(deathstring);
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    new deathstring[256];
    new time[3];
    gettime(time[0],time[1],time[2]);
    format(deathstring,sizeof(deathstring),"%d:%d:%d|TXT|%s|%s",time[0],time[1],time[2],PlayerName(playerid),text);
    writelog(deathstring);
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new deathstring[256];
    new time[3];
    gettime(time[0],time[1],time[2]);
    format(deathstring,sizeof(deathstring),"%d:%d:%d|CMD|%s|%s",time[0],time[1],time[2],PlayerName(playerid),cmdtext);
    writelog(deathstring);

    if (!strcmp("/logmenu",cmdtext,true))
    {
    if (!IsPlayerAdmin(playerid)) return 1;
    ShowPlayerLogMenu(playerid);
    return 1;
    }

    return 0;
    }




    public OnRconCommand(cmd[])
    {
    new deathstring[256];
    new time[3];
    gettime(time[0],time[1],time[2]);
    format(deathstring,sizeof(deathstring),"%d:%d:%d|RCN|%s",time[0],time[1],time[2],cmd);
    writelog(deathstring);
    return 1;
    }





    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if (dialogid == DIALOGS && response)
    {
    ShowPlayerDiaConfig(playerid);
    }

    if (dialogid == (DIALOGS+1))
    {
    if (response)
    {
    if (listitem == 0) configdaten[0] = 1;
    if (listitem == 1) configdaten[0] = 0;
    saveconfig();
    }
    }
    return 1;
    }



    Kann das bitte in ShowRoom verschoben werden. Danke!

    2 Mal editiert, zuletzt von MiniYoda ()

  • Wenn ihr das FS aktiviert, müsst ihr als RCon Admin in das Menü und das Logsystem aktivieren.


    __>> Die Aktivierung bleibt gesichert.


    __>> Jetzt sollte das Logsystem laufen.


    __>> Logsystem wurde noch nicht getestet :D

  • Ich sehe da jetzt nichts besonderes dran außer nen paar Dateioperationen, wenigstens hat es eine Benutzerfreundliche Handhabung, gab
    aber schon mal sowas im Englischen Forum Forum von Mo3 dort gabs nur keine Benutzeroberfläche .

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Was benötigt ihr für Commands?
    Ich habe mir überlegt, dass es auch nicht blöd wäre online ein Log durchsuchen zu können.


    Jetzt meine Frage, was für Durchsuchungscmds benötigt ihr?

  • Inwiefern "Durchsuchungscmd"?
    Wenn du damit meinst, dass nur Sachen in der Log angezeigt wie zB wenn ich eingebe:
    "/searchlog Kill" dass dann alle Kills oder Tode angezeigt werden?
    Wenn du sowas meinst, wären meine Vorschläge:
    "/searchlog [keyword]"
    "/showlog [keyword]"
    "/logfilter [keyword]"
    Würde ich mal so sagen ;)
    Ansonsten gutes System.
    Habe es zwar nicht getestet, aber dein Code sieht ganz gut aus.
    MfG
    maxx

  • "dein code sieht ganz gut aus" klingt nach.. ich blicke nix, aber ist sicher richtig :D



    also ich werde mal am WE:


    /search connection [Name]
    /seach IP [Name]
    /readlog [Name]


    machen wenn ich die Zeit finde :D

  • Zitat von MiniYoda

    "dein code sieht ganz gut aus" klingt nach.. ich blicke nix, aber ist sicher richtig :D


    Nein nein, ich verstehe den Code sehr gut :)
    Auch sieht er richtig aus, stimmt schon..
    Habe ihn aber nicht getestet, da ich selber ein Log System habe :D
    MfG
    Maxx

  • 3/10
    habs mal getestet aber der Server stürzt dann ab,wenn man das Aktivieren will^^