commands gehen nach /stats nicht mehr..

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
  • Tach... und guten Mittag liebe Breadfish user.. Ich habe ein Problem mit dem Auslesen von Dateien..
    Ich schreibe gerade den /stats Befehl für meinen adminscript. und wenn man /stats [id] eingibt kommt Unknow Kommand und danach geht kein kommand mehr, allerdings timer usw laufen noch weiter. Ich habe auch schon mit der Problem Analyse angefangen und habe festgestellt das nach dem auslesen von den Daten der abrichte und nichts mehr geht.
    Außerdem wird die ip nur als 0.00000 dargestellt...
    ich bin echt am verzweifeln ;(
    Quelltext:
    if (strcmp(cmd, "/stats", true) == 0)
    {
    print("/stats OK");
    if(adminTeam[playerid] >= level3)
    {
    new tmp[300],id;
    tmp = strtok(cmdtext, index);
    print("Strtok OK");
    if (strlen(tmp))
    {
    id = strval(tmp);
    new idname[MAX_PLAYER_NAME];
    new file[200];
    new adm[300];
    new ipadress[16];
    new warns;
    new levela;
    new skina;
    new emaila[148];
    print("Initialisierung OK");
    GetPlayerName(id, idname, sizeof(idname));
    format(file,sizeof(file),"/properties/%s.ini",idname);
    warns=dini_Int(file, "warn");
    print("warn ok.");
    levela=dini_Int(file, "level");
    print("level ok.");
    skina=dini_Int(file, "Skin");
    print("skin ok.");
    emaila="hallo:D";//dini_Get(file,"email");
    print("e-mail ok.");
    GetPlayerIp(id,ipadress,sizeof(ipadress));
    print("IP OK");
    format(adm,sizeof(adm),"{abab00}Stats form player {d50000}%s {abab00} IP:%f, Level: %d, Warns: (%d/4), Skin: %d, E-mail: %s",idname,ipadress,levela,warns,skina,emaila);
    print("Buffer OK");
    SendClientMessage(playerid,RED,adm);
    return 1;
    }
    else
    {
    if (lTeam[playerid] == English)
    {
    SendClientMessage(playerid, 0xFF0000AA, "Use: \"/warn [id]\"");
    return 0;
    }
    else if (lTeam[playerid] == Deutsch)
    {
    SendClientMessage(playerid, 0xFF0000AA, "Benutze: \"/warn [id]\"");
    return 0;
    }
    }
    }
    else
    {
    SendClientMessage(playerid,RED,"Your admin level is not so high!");
    }
    return 1;
    }



    hoffe ihr könnt mir helfen..

  • Schon mal sehr gut,dass du Debug-Notes eingefügt hast. Aber du hast nicht gesagt,bis wo der Code läuft ;).
    Du solltest vielleicht auch extra Debug-Notes einfügen um zu schauen was id ist usw.
    Das die IP als 0.000000 angezeigt wird,liegt daran,dass du als Platzhalter für die IP "IP:%f " hast.Es ist aber ein String, also "IP:%s"

  • print("Initialisierung OK");
    GetPlayerName(id, idname, sizeof(idname));
    format(file,sizeof(file),"/properties/%s.ini",idname);

    Änder mal bzw füg ein
    print("Initialisierung OK");
    GetPlayerName(id, idname, sizeof(idname));
    printf("id -> %d",id);
    printf("idname -> '%s'",idname);
    format(file,sizeof(file),"/properties/%s.ini",idname);
    printf("file -> %s",file);

    Wissen ja immernoch nicht ob der Dateipfad richtig ist.


    Die Strings sind groß genug bzw viel zu Groß. tmp,file auf 64 , adm 128.


    //Edit: Mach vielleicht noch mal n printf() für tmp rein.

  • Also das der Dateipfad richtig ist kann ich zu 100% versichern weil andere Befehl ja klappen... und der Ip check funktionoert ja auch.. hab mal überall 0 eingesetzt und es lief so durch...
    ich poste mal nen BSP %.ini :D

    Code
    Password=*******
    level=6
    sprache=1
    email=********
    Skin=204


    Edit: es funktioniert ja alles außer das auslesen von den Datein
    Edit2: habe es auch printf gemacht.. also name und id stimmen... ?(
    Edit 3 :D : Was mich nur wundert das danach Kein Command mehr funktioniert.. der Server crasht ja nichtmal oder so..

    2 Mal editiert, zuletzt von [NFW]Ruffo ()

  • ALso.. wegen den Sonderzeichen.. Wie gesagt es klappt ja nur bei diesem Befehl nicht.. bei jedem andrene z.b.
    /warn klappt es ja.. und ja sonderzeichen [NFW]Ruffo aber das klappt ja immer....
    if (strcmp(cmd, "/warn", true) == 0)
    {
    if(adminTeam[playerid] >= level3)
    {
    new tmp[300],id;
    tmp = strtok(cmdtext, index);


    if (strlen(tmp))
    {
    id = strval(tmp);
    new name[MAX_PLAYER_NAME];
    new idname[MAX_PLAYER_NAME];
    new file[200];
    new adm[200];
    new warns;
    GetPlayerName(playerid, name, sizeof(name));
    GetPlayerName(id, idname, sizeof(idname));
    format(file,sizeof(file),"/properties/%s.ini",idname);
    warns=dini_Int(file, "warn");
    if(!dini_Isset(file,"warn"))
    {
    dini_IntSet(file,"warn",1);
    format(adm,sizeof(adm),"{abab00}Admin {d50000}%s {abab00} has given The player %s a warn. {d50000}(1/4)",name,idname);
    SendClientMessageToAll(YELLOW,adm);
    }
    else if(warns == 1)
    {
    dini_IntSet(file,"warn",2);
    format(adm,sizeof(adm),"{abab00}Admin{d50000} %s {abab00} has given The player %s a warn.{d50000}(next Kick) (2/4)",name,idname);
    SendClientMessageToAll(YELLOW,adm);
    }
    else if(warns == 2)
    {
    dini_IntSet(file,"warn",3);
    format(adm,sizeof(adm),"{abab00}Admin {d50000}%s {abab00}has given The player %s a warn.{d50000}(Kicked!,next Ban) (3/4)",name,idname);
    SendClientMessageToAll(YELLOW,adm);
    Kick(id);
    }
    else if(warns == 3)
    {
    dini_IntSet(file,"warn",4);
    format(adm,sizeof(adm),"{abab00}Admin {d50000}%s {abab00}has given The player %s a warn.{d50000}(You Banned!) (4/4)",name,idname);
    SendClientMessageToAll(YELLOW,adm);
    Ban(id);
    }
    }
    else
    {
    if (lTeam[playerid] == English)
    {
    SendClientMessage(playerid, 0xFF0000AA, "Use: \"/warn [id]\"");
    return 0;
    }
    else if (lTeam[playerid] == Deutsch)
    {
    SendClientMessage(playerid, 0xFF0000AA, "Benutze: \"/warn [id]\"");
    return 0;
    }
    }
    }
    else
    {
    SendClientMessage(playerid,RED,"Your admin level is not so high!");
    }
    return 1;
    }