Beiträge von Jeffry

    Du musst auch beim Erstellen der Textdraws das playerid Array nutzen.


    Textdraw0[playerid] = TextDrawCreate...


    Bei allen das playerid Array.

    Du musst die TextDraws für jeden Spieler erstellen.


    Textdraw0[playerid] = TextDrawCreate(488.000000, 163.000000, "Payday %d/60 ");
    //...


    So musst du sie dem Spieler auch anzeigen:
    TextDrawSetString(Textdraw3[playerid], string);



    Deklarierung:
    new Text:Textdraw0[MAX_PLAYERS];

    Kannst du einfach mal die rec Datei und die pwn Datei aus den NPC Modes hochladen? Dann könnten wir das mal bei uns testen, und dir ggf. den entsprechenden Lösungsvorschlag geben.

    Dann entferne doch in deinem spec Befehl einfach die Abfrage, ob der Spieler eingeloggt ist, kannst ja danach wieder rein machen. Kommentiere die Zeile einfach aus und kompiliere es.
    Ist ja nur zum testen, damit du vielleicht siehst wo das Ding sich rumtreibt.

    wie groß musste der String den sein?
    Und welchen hattest du als erstes?


    Hab da auch ab und an nen Hänger mit :D


    Ein Datumsstring sollte eine Länge von mindestens 10 haben. Wenn deiner auf Grund deiner Formatierung mehr braucht, musst du ihn natürlich größer machen.

    Dann sind das zwei unterschiedliche Fehler.


    Du musst was an der Datei falsch gemacht haben, anders kann ich mir das nicht erklären, da ich es selbst getestet habe, und er ohne Probleme 1 ausgegeben hat.
    Steht in der .ini was drin? Wenn nicht, schreib mal was rein.
    Ich hoffe, du startest auch den richtigen Server, und nicht über eine Verknüpfung ständig den falschen Pfad.


    Um das Problem mit der Registration kümmern wir uns wenn das Problem mit der Datei aus der Welt ist. Ich schätze, dass der Code einfach nicht erreicht wird.

    Ja, das ist ok so.


    Warum kommt die FS Meldung zwei mal? Hast du den print im GameMode auch geändert?


    Allerdings erkennt er ja die Datei auch hier nicht. Bist du dir wirklich sicher, dass du die Datei richtig erstellt hast?


    Entferne jetzt, wenn du dir sicher bist, dass es nicht an der Datei liegt, das anti Cheat und schaue ob dann 1 geprintet wird. Das kann ich mir nur schwer vorstellen. (oder einfach mal einen leeren GM starten).

    Das Ganze macht für mich noch immer keinen wirklichen Sinn.
    Versuche es mal so:


    Erstelle einen neuen Filterscript und füge das bei OnPlayerConnect ein:
    public OnPlayerConnect(playerid)
    {
    new string[64], plname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, plname, sizeof(plname));
    format(string, sizeof(string), "Accounts/%s.ini", plname);
    print(string);
    if(!fexist(string))return print("PlayerAccount FS 0");
    print("PlayerAccount FS 1");
    return 1;
    }


    Funktioniert das wenigstens?
    (Füge den FS auch in server.cfg ein.)


    Wenn ja, dann müssten wir ein wenig tricksen. Ist zwar nicht gerade schön, aber der Fehler macht wirklich keinen Sinn. :wacko:

    Warum machst du es nicht einfach so?
    forward AC_OnPlayerConnect(playerid);
    public AC_OnPlayerConnect(playerid)
    {
    new string[64], plname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, plname, sizeof(plname));
    format(string, sizeof(string), "Accounts/%s.ini", plname);
    print(string);
    if(!dini_Exists(string))return gPlayerAccount[playerid] = 0, print("PlayerAccount 0");
    gPlayerAccount[playerid] = 1, print("PlayerAccount 1");
    return 1;
    }
    Function OnPlayerConnect(playerid)
    {
    AC_start[playerid] = 0,Desk[playerid] = 0;
    switched[playerid] = 0,EnterLockedV[playerid] = 0;
    Shot[playerid] = 0, ShotTime[playerid] = 0;
    SetPlayerHealthEx(playerid,100);
    AC_Desktop_Check[playerid] = 0,AC_Desktop_Timer_Started[playerid] = 0,AC_Desktop_Status[playerid] = 0;
    }



    zu:

    Function OnPlayerConnect(playerid)
    {
    AC_start[playerid] = 0,Desk[playerid] = 0;
    switched[playerid] = 0,EnterLockedV[playerid] = 0;
    Shot[playerid] = 0, ShotTime[playerid] = 0;
    SetPlayerHealthEx(playerid,100);
    AC_Desktop_Check[playerid] = 0,AC_Desktop_Timer_Started[playerid] = 0,AC_Desktop_Status[playerid] = 0;


    new string[64], plname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, plname, sizeof(plname));
    format(string, sizeof(string), "Accounts/%s.ini", plname);
    print(string);
    if(!dini_Exists(string))return gPlayerAccount[playerid] = 0, print("PlayerAccount 0");
    gPlayerAccount[playerid] = 1, print("PlayerAccount 1");
    }


    Ich sehe hier nirgends, dass du diesen Timer von vorhin startest. Und an dem Code liegt es ja nicht...


    Oder kann es sein, dass der Anti-Cheat den du da hast irgendwelche dini Funktionen überschreibt?


    Versuch es auch mal so:
    if(!fexist(string))return gPlayerAccount[playerid] = 0, print("PlayerAccount 0");

    if(dialogid == DIALOG_GESCHLECHT)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0: SendClientMessage(playerid,-1,"OK"),SpielerLaden(playerid), sInfo[playerid][sGeschlecht]=1;
    case 1: SendClientMessage(playerid,-1,"OK"),SpielerLaden(playerid), sInfo[playerid][sGeschlecht]=2;
    }
    }
    }


    Dann erst Laden, und dann setzen. Danach musst du es eben irgendwann speichern.

    if(dialogid == DIALOG_GESCHLECHT)
    {
    if(response)
    {
    new SpielerDatei[64];
    format(SpielerDatei,sizeof(SpielerDatei),"/Accounts/%s.ini",SpielerName(playerid));
    switch(listitem)
    {
    case 0: dini_Set(SpielerDatei,"Geschlecht", "1"),SendClientMessage(playerid,-1,"OK"),SpielerLaden(playerid);
    case 1: dini_Set(SpielerDatei,"Geschlecht", "2"),SendClientMessage(playerid,-1,"OK"),SpielerLaden(playerid);
    }
    }
    }


    Dann geht's.


    @NicoWiss: Nur macht es wenig Sinn Daten zu setzen und dann erst zu laden. Ist doch logisch, dass die dann überschrieben werden. Wenn, dann muss man es direkt (wie oben) in die Datei speichern, wenn man die Datei danach lädt.