[FRAGE] Logs machen

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
  • Hallo, ich hbe ne frage,
    ich möchte einen Log über die Teamchats machen


    wie geht das?


    dcmd_tc(playerid,params[])
    {
    if(gTeam[playerid]==1 || gTeam[playerid]==2 || gTeam[playerid]==5 || gTeam[playerid]==7)
    {
    new text[256];
    if(sscanf(params, "s[512]",text)) return SendClientMessage(playerid,COLOR_YELLOW,"Benutzung: /tc [Text]");
    new aname[MAX_PLAYER_NAME], astr[256];
    GetPlayerName(playerid, aname, sizeof(aname));
    format(astr, sizeof(astr), "Team-Chat %s: %s ", aname, text);
    SendClientMessage(playerid,COLOR_TOMATO, astr);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && gTeam[i]==1 && i != playerid||gTeam[i]==2 && i != playerid||gTeam[i]==5 && i != playerid||gTeam[i]==7 && i != playerid)
    {
    format(astr, sizeof(astr), "Team-Chat %s: %s ", aname, text);
    SendClientMessage(i,COLOR_TOMATO, astr);
    }
    }
    }
    return 1;
    }


    Kann es einer da rein scripten
    MFG
    runner23

  • Da..
    forward Log(string[]);


    public Log(string[])
    {
    new entry[256];
    format(entry, sizeof(entry), "%s\n",string);
    new File:hFile;
    hFile = fopen("Teamchat.log", io_append);
    fwrite(hFile, entry);
    fclose(hFile);
    }


    //dann...


    dcmd_tc(playerid,params[])
    {
    if(gTeam[playerid]==1 || gTeam[playerid]==2 || gTeam[playerid]==5 || gTeam[playerid]==7)
    {
    new text[256];
    if(sscanf(params, "s[512]",text)) return SendClientMessage(playerid,COLOR_YELLOW,"Benutzung: /tc [Text]");
    new aname[MAX_PLAYER_NAME], astr[256];
    GetPlayerName(playerid, aname, sizeof(aname));
    format(astr, sizeof(astr), "Team-Chat %s: %s ", aname, text);
    SendClientMessage(playerid,COLOR_TOMATO, astr);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && gTeam[i]==1 && i != playerid||gTeam[i]==2 && i != playerid||gTeam[i]==5 && i != playerid||gTeam[i]==7 && i != playerid)
    {
    format(astr, sizeof(astr), "Team-Chat %s: %s ", aname, text);
    SendClientMessage(i,COLOR_TOMATO, astr);
    Log("Teamchat.log",astr); // Das hinzufügen...
    }
    }
    }
    return 1;
    }


    Zum beispiel.. Bin mir nicht 100% sicher müsste aber gehen..


    Edit:// ein ";" vergessen ;x

    Werden die SAMP User ("Scripter") immer Jünger? Oder nur Dümmer? - oder doch beides?
    Sie überlegen kein stück, können nichts posten und flamen einfach drauf los. 8|

  • new text[256];
    if(sscanf(params, "s[512]",text)) return SendClientMessage(playerid,COLOR_YELLOW,"Benutzung: /tc [Text]");

    Wenn text schon 256 Zellen brauch,dann sollte es beim sscanf als Array größe auch so angegeben werden,nicht 512.
    Außerdem kann mit dem SA:MP Chat maximal eine Zeichenkette von 128 übergeben werden.Ist also unnötiger dort irgendwelche Werte Höher als 128 zu nutzen.Lediglich für die Formatierung wäre es sinnvoll beim loggen.


    format(astr, sizeof(astr), "Team-Chat %s: %s ", aname, text);
    SendClientMessage(i,COLOR_TOMATO, astr);
    Log("Teamchat.log",astr); // Das hinzufügen...

    Das ist auch nicht so ganz richtig.
    Das Log() wird in der Schleife aufgerufen, es kann also öfters aufgerufen werden und somit in die Log gespamt werden.Auch soldest du format() nur einmalig vor dem Loop durchführen.Es ist doch immer der Gleiche String.


    format(astr, sizeof(astr), "Team-Chat %s: %s ", aname, text);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    //
    }
    Log(astr); // Das hinzufügen...

    Einmal editiert, zuletzt von Goldkiller ()

  • ein warning bei Log("Teamchat.log", astr); kommt


    nummers of arguments does not match definition


    //edit immer noch das warning

    Einmal editiert, zuletzt von runner23 ()

  • Schau dir nochmal meinen Post an.


    Log(string[])

    Ein Paramter names string als Array


    Log("Teamchat.log", astr);
    Zwei Parameter. 2 Strings. In der Funktion ist schon standartmäßig die Datei Teamchat.log" als Log definiert.Daher nur


    Log(astr);

  • jetzt kommt das


    C:\Users\Deathrunner\Desktop\SAMP 3c\gamemodes\Reallife.pwn(6580) : error 035: argument type mismatch (argument 1)






    Log("Teamchat.log",astr); erstes error


    auf wenn ichs so mache Log(astr);

  • astr ist der formatierte String? Wenn nein änder das oder poste den gesamten Code erneut.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • also


    Ganz oben


    forward Log(astr);



    das kommando


    dcmd_tc(playerid,params[])
    {
    if(gTeam[playerid]==1 || gTeam[playerid]==2 || gTeam[playerid]==5 || gTeam[playerid]==7)
    {
    new text[128];
    if(sscanf(params, "s[128]",text)) return SendClientMessage(playerid,COLOR_YELLOW,"Benutzung: /tc [Text]");
    new aname[MAX_PLAYER_NAME], astr[256];
    GetPlayerName(playerid, aname, sizeof(aname));
    format(astr, sizeof(astr), "Team-Chat %s: %s ", aname, text);
    SendClientMessage(playerid,COLOR_TOMATO, astr);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && gTeam[i]==1 && i != playerid||gTeam[i]==2 && i != playerid||gTeam[i]==5 && i != playerid||gTeam[i]==7 && i != playerid)
    {
    SendClientMessage(i,COLOR_TOMATO, astr);
    }
    }
    Log(astr);
    }
    return 1;
    }



    das public


    public Log(astr)
    {
    new entry[256];
    format(entry, sizeof(entry), "%s\n",astr);
    new File:hFile;
    hFile = fopen("Teamchat.log", io_append);
    fwrite(hFile, entry);
    fclose(hFile);
    }

  • dcmd_tc(playerid,params[])
    {
    if(gTeam[playerid]==1 || gTeam[playerid]==2 || gTeam[playerid]==5 || gTeam[playerid]==7)
    {
    new text[128];
    if(sscanf(params, "s[128]",text)) return SendClientMessage(playerid,COLOR_YELLOW,"Benutzung: /tc [Text]");
    new aname[MAX_PLAYER_NAME], astr[256];
    GetPlayerName(playerid, aname, sizeof(aname));
    format(astr, sizeof(astr), "Team-Chat %s: %s ", aname, text);
    SendClientMessage(playerid,COLOR_TOMATO, astr);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && gTeam[i]==1 && i != playerid||gTeam[i]==2 && i != playerid||gTeam[i]==5 && i != playerid||gTeam[i]==7 && i != playerid)
    {
    SendClientMessage(i,COLOR_TOMATO, astr);
    Log(astr);
    }
    }
    }
    return 1;
    }


    Sollte so stimmen


    //Edit: Ups, das lag am public...
    public Log(astr[])
    {
    new entry[256];
    format(entry, sizeof(entry), "%s\n",astr);
    new File:hFile;
    hFile = fopen("Teamchat.log", io_append);
    fwrite(hFile, entry);
    fclose(hFile);
    }

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

    Einmal editiert, zuletzt von dead ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Würd man es so machen wie ich bzw. Goldkiller gesagt haben, würdes es auch gehen, da braucht man dann nicht extra rum basteln. ;)

    Werden die SAMP User ("Scripter") immer Jünger? Oder nur Dümmer? - oder doch beides?
    Sie überlegen kein stück, können nichts posten und flamen einfach drauf los. 8|

  • jetzt kommen keine errors und warnings aber , es wird kein log erstellt


    forward(astr[]);


    dcmd_tc(playerid,params[])
    {
    if(gTeam[playerid]==1 || gTeam[playerid]==2 || gTeam[playerid]==5 || gTeam[playerid]==7)
    {
    new text[128];
    if(sscanf(params, "s[128]",text)) return SendClientMessage(playerid,COLOR_YELLOW,"Benutzung: /tc [Text]");
    new aname[MAX_PLAYER_NAME], astr[256];
    GetPlayerName(playerid, aname, sizeof(aname));
    format(astr, sizeof(astr), "Team-Chat %s: %s ", aname, text);
    SendClientMessage(playerid,COLOR_TOMATO, astr);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && gTeam[i]==1 && i != playerid||gTeam[i]==2 && i != playerid||gTeam[i]==5 && i != playerid||gTeam[i]==7 && i != playerid)
    {
    SendClientMessage(i,COLOR_TOMATO, astr);
    Log(astr);
    }
    }
    }
    return 1;
    }


    public Log(astr[])
    {
    new entry[256];
    format(entry, sizeof(entry), "%s\n",astr);
    new File:hFile;
    hFile = fopen("Teamchat.log", io_append);
    fwrite(hFile, entry);
    fclose(hFile);
    return 1;
    }

  • Die Funktion nimmt auch an,eine Datei Namens "Teamchat.log" existiert bereits im scriptfiles Ordner.
    public Log(astr[])
    {
    new
    File:hFile,
    entry[256];
    format(entry, sizeof(entry), "%s\r\n",astr);
    if(!fexist("Teamchat.log")) { // Datei existiert nicht
    hFile = fopen("Teamchat.log",io_write); // Datei erstellen
    fclose(hFile); // Schließen
    return 0;
    }
    hFile = fopen("Teamchat.log", io_append);
    if(hFile) { // Datei wurde auch wirklich geöffnet
    fwrite(hFile, entry);
    fclose(hFile);
    return 1;
    }
    return 0;
    }


    //Edit : \r den Writer muss man auch an den Anfang der Zeile setzen :\

    2 Mal editiert, zuletzt von Goldkiller ()

  • stock Log(text[])
    {
    new string[256],File:Datei;
    format(string,sizeof(string),"%s\n",text);
    Datei=fopen("Teamchat.log",io_append);
    fwrite(Datei,string);
    fclose(Datei);
    }


    //edit [pawn] vergessen
    //edit2 "Teamchat.log" MUSS im scriptfiles Ordner sein.