Dini Speicherung

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
  • Guten Tag,
    mein Ban System funktioniert nicht.
    Es sieht so aus.
    ocmd:ban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 3.");
    new pID, reason[128],string[144];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,GELB,"Tippe: /ban [id] [grund]");
    format(string,sizeof(string),"Du wurdest von %s gebannt. Grund: %s",Name(playerid),reason);
    SendClientMessageToAll(ROT, string);
    SetPVarInt(playerid,"Gesperrt",1);
    new Spieler[50];
    printf("Account suche");
    format(Spieler,sizeof(Spieler),"/Accounts/%s.txt",Name(pID));
    {
    dini_Set(Spieler,"bangrund",reason);
    dini_Set(Spieler,"banadmin",Name(playerid));
    printf("Dini Bearbeitung");
    }
    SetTimer("Gebannt",1450,false);
    Log("BanLog",string);
    return 1;
    }
    Gebe ich /ban 0 test ein werde ich gekickt und es sollte eigentlich in der Account Datei eine 1 bei "Gesperrt" gesetzt werden und halt die "banadmin" und "bangrund" ausgefüllt werden.
    Er printet es auch so wie es da steht.
    Doch er macht nichts in der Datei.



    Bitte um hilfe

  • Schreibe es so:
    ocmd:ban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 3.");
    new pID, reason[128],string[144];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,GELB,"Tippe: /ban [id] [grund]");
    format(string,sizeof(string),"Du wurdest von %s gebannt. Grund: %s",Name(playerid),reason);
    SendClientMessageToAll(ROT, string);
    SetPVarInt(pID,"Gesperrt",1);
    new Spieler[50];
    printf("Account suche");
    format(Spieler,sizeof(Spieler),"/Accounts/%s.txt",Name(pID));
    if(fexist(Spieler))
    {
    dini_Set(Spieler,"bangrund",reason);
    dini_Set(Spieler,"banadmin",Name(playerid));
    printf("Dini Bearbeitung");
    }
    SetTimer("Gebannt",1450,false);
    Log("BanLog",string);
    return 1;
    }


    Dann poste deine "Gebannt" Funktion und deine SpielerSpeichern Funktion, möglicherweise überschreibst du damit wie Werte wieder.

  • Jeffry:


    public Gebannt(playerid)
    {
    Kick(playerid);
    }


    stock SpielerSpeichern(playerid){
    if(!GetPVarInt(playerid,"loggedin"))return 1;
    new pfad[64];
    format(pfad,64,"/Accounts/%s.txt",Name(playerid));
    dini_IntSet(pfad,"Alter Name",GetPVarInt(playerid,"Alter Name"));
    dini_IntSet(pfad,"Level",GetPlayerScore(playerid)),dini_IntSet(pfad,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(pfad,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(pfad,"Gesperrt",GetPVarInt(playerid,"Gesperrt")),dini_IntSet(pfad,"Warns",GetPVarInt(playerid,"Warns"));
    dini_IntSet(pfad,"IP",GetPVarInt(playerid,"IP")),dini_IntSet(pfad,"Name",GetPVarInt(playerid,"Name"));
    dini_IntSet(pfad,"Tode",GetPVarInt(playerid,"Tode"));
    dini_IntSet(pfad,"Kills",GetPVarInt(playerid,"Kills")),dini_IntSet(pfad,"Banned1",GetPVarInt(playerid,"Banned1"));
    dini_IntSet(pfad,"Kick1",GetPVarInt(playerid,"Kick1")),dini_IntSet(pfad,"Donator",GetPVarInt(playerid,"Donator"));
    dini_IntSet(pfad,"Clan",GetPVarInt(playerid,"Clan")),dini_IntSet(pfad,"bangrund",GetPVarInt(playerid,"bangrund"));
    dini_IntSet(pfad,"banadmin",GetPVarInt(playerid,"banadmin"));
    dini_IntSet(pfad,"Respektpunkte",GetPVarInt(playerid,"Respektpunkte")),dini_IntSet(pfad,"Mute",GetPVarInt(playerid,"Mute"));
    return 1;
    }


    Danke für die Antwort

  • Ja, genau wie ich gesagt hatte.
    SetTimer("Gebannt",1450,false);
    zu:
    SetTimerEx("Gebannt",1450,false,"d",pID);


    Und:
    stock SpielerSpeichern(playerid){
    if(!GetPVarInt(playerid,"loggedin"))return 1;
    new pfad[64];
    format(pfad,64,"/Accounts/%s.txt",Name(playerid));
    dini_IntSet(pfad,"Alter Name",GetPVarInt(playerid,"Alter Name"));
    dini_IntSet(pfad,"Level",GetPlayerScore(playerid)),dini_IntSet(pfad,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(pfad,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(pfad,"Gesperrt",GetPVarInt(playerid,"Gesperrt")),dini_IntSet(pfad,"Warns",GetPVarInt(playerid,"Warns"));
    dini_IntSet(pfad,"IP",GetPVarInt(playerid,"IP")),dini_IntSet(pfad,"Name",GetPVarInt(playerid,"Name"));
    dini_IntSet(pfad,"Tode",GetPVarInt(playerid,"Tode"));
    dini_IntSet(pfad,"Kills",GetPVarInt(playerid,"Kills")),dini_IntSet(pfad,"Banned1",GetPVarInt(playerid,"Banned1"));
    dini_IntSet(pfad,"Kick1",GetPVarInt(playerid,"Kick1")),dini_IntSet(pfad,"Donator",GetPVarInt(playerid,"Donator"));
    dini_IntSet(pfad,"Clan",GetPVarInt(playerid,"Clan"));
    dini_IntSet(pfad,"Respektpunkte",GetPVarInt(playerid,"Respektpunkte")),dini_IntSet(pfad,"Mute",GetPVarInt(playerid,"Mute"));
    return 1;
    }
    Da du es bei /ban direkt in die Datei speicherst, brauchst du es bei SpielerSpeichern nicht mehr.

  • Jeffry:
    Er printet nur bis Account suche er scheitert warscheinlich am if(fexit(Spieler))
    Weißt du da was?

    Code
    [22:53:32] Registrierung eingeschaltet!
    [22:53:32] FerienFreak hat einen Account und kann sich nun einloggen (togregister == false)
    [22:53:40] Account suche
    [22:53:40] [part] FerienFreak has left the server (0:2)


    Hab am Code bissle was verändert mit SendClientMessage etc pp.
    ocmd:ban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 3.");
    new pID, reason[128],string[144],name[MAX_PLAYER_NAME],pIDname[MAX_PLAYER_NAME];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,GELB,"Tippe: /ban [id] [grund]");
    GetPlayerName(playerid,name,sizeof(name));
    format(string,sizeof(string),"Du wurdest von %s gebannt. Grund: %s",name,reason);
    SendClientMessage(pID,ROT, string);
    GetPlayerName(playerid,pIDname,sizeof(pIDname));
    format(string,sizeof(string),"Du hast den Spieler %s erfolgreich gesperrt.",pIDname);
    SendClientMessage(playerid,-1,string);
    SetPVarInt(pID,"Gesperrt",1);
    new Spieler[50];
    printf("Account suche");
    format(Spieler,sizeof(Spieler),"/Accounts/%s.txt",Name(pID));
    if(fexist(Spieler))
    {
    dini_Set(Spieler,"bangrund",reason);
    dini_Set(Spieler,"banadmin",Name(playerid));
    printf("Dini Bearbeitung");
    }
    SetTimerEx("Gebannt",200,false,"d",pID);
    Log("BanLog",string);
    return 1;
    }


    //e
    Er macht auch nicht SetPVarInt(pID,"Gesperrt",1);


    //e²
    Er speichert nix, hab keine Errors mehr.
    Er macht zwar printf("Dini Bearbeitung");
    aber er schreibt nix in die Datei.

    2 Mal editiert, zuletzt von The Sensei () aus folgendem Grund: ²Aktueller Code eingefügt Keine Errors (andere Fragenstellung)

  • Jeffry:
    Im BanLog steht es.
    SpielerSpeichern ist geändert.
    Timer ist aus und es funktioniert tzd. nicht.
    Aktueller Code:
    ocmd:ban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 3.");
    new pID, reason[128],string[144],name[MAX_PLAYER_NAME],pIDname[MAX_PLAYER_NAME];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,GELB,"Tippe: /ban [id] [grund]");
    GetPlayerName(playerid,name,sizeof(name));
    format(string,sizeof(string),"Du wurdest von %s gebannt. Grund: %s",name,reason);
    SendClientMessage(pID,ROT, string);
    GetPlayerName(playerid,pIDname,sizeof(pIDname));
    format(string,sizeof(string),"Du hast den Spieler %s erfolgreich gesperrt.",pIDname);
    SendClientMessage(playerid,-1,string);
    SetPVarInt(pID,"Gesperrt",1);
    new Spieler[128];
    printf("Account suche");
    format(Spieler,sizeof(Spieler),"/Accounts/%s.txt",Name(pID));
    dini_Set(Spieler,"bangrund",reason);
    dini_Set(Spieler,"banadmin",Name(playerid));
    printf("Dini Bearbeitung");
    //SetTimerEx("Gebannt",200,false,"d",pID);
    Log("BanLog",string);
    return 1;
    }

  • Was wird so geprintet?
    ocmd:ban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Du hast kein Admin Level 3.");
    new pID, reason[128],string[144],name[MAX_PLAYER_NAME],pIDname[MAX_PLAYER_NAME];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,GELB,"Tippe: /ban [id] [grund]");
    GetPlayerName(playerid,name,sizeof(name));
    format(string,sizeof(string),"Du wurdest von %s gebannt. Grund: %s",name,reason);
    SendClientMessage(pID,ROT, string);
    GetPlayerName(pID,pIDname,sizeof(pIDname));
    format(string,sizeof(string),"Du hast den Spieler %s erfolgreich gesperrt.",pIDname);
    SendClientMessage(playerid,-1,string);
    SetPVarInt(pID,"Gesperrt",1);
    new Spieler[128];
    printf("Account suche");
    format(Spieler,sizeof(Spieler),"/Accounts/%s.txt",Name(pID));
    printf("Spieler: %s -> %d", Spieler, fexist(Spieler));
    printf("reason: %s", reason);
    dini_Set(Spieler,"bangrund",reason);
    dini_Set(Spieler,"banadmin",Name(playerid));
    printf("Dini Bearbeitung");
    SetTimerEx("Gebannt",200,false,"d",pID);
    Log("BanLog",string);
    return 1;
    }


    Werden eigentlich die anderen stats gespeichert?

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Nee mein Compiler ist so:
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    Jeffry:


    Code
    [00:58:46] FerienFreak hat einen Account und kann sich nun einloggen (togregister == false)
    [00:58:54] Account suche
    [00:58:54] Spieler: /Accounts/.txt   -> 0
    [00:58:54] reason: test
    [00:58:54] Dini Bearbeitung
    [00:58:54] [part] FerienFreak has left the server (0:2)
  • Nein, du nutzt hier nur "Name":
    format(Spieler,sizeof(Spieler),"/Accounts/%s.txt",Name(pID));
    Ebenso bei SpielerSpeichern.


    Entweder du änderst das zu NamePlayer, oder du schaust dir mal die "Name" Funktion an, bzw änderst diese zu dem gleichen wie NamePlayer.