Beiträge von Jeffry

    Öh, nö, damit fange ich nicht wirklich was an.
    Schick mir in PN eben mal deine TeamViewer Daten. Jetzt wird es doch zu durcheinander hier. Ich hab grade 30 Minuten frei, also wenn du schnell bist.


    EDIT:
    Erledigt. Er hat es falsch eingefügt und das query (Fehlermeldung) nochmals geändert gehabt und ein "=" vergessen.

    Dann noch ein anderer Versuch:


    Das unter die Registrationsmeldung (das format und das mysql_function_query machst du weg und fügst das ein:)
    SetPVarString(playerid, "Password", password);
    SetTimerEx("LoginAfterReg", 500, 0, "d", playerid);


    Ganz unten in den GameMode:
    forward LoginAfterReg(playerid);
    public LoginAfterReg(playerid)
    {
    new query[128], name[MAX_PLAYER_NAME], password[128];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    GetPVarString(playerid, "Password", password, 128);
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND password=MD5('%s')",name,password);
    return mysql_function_query(dbhandle,query,true,"CheckPassword","i",playerid);
    }


    Klappt es jetzt?

    So:
    mysql_escape_string(inputtext,password,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s',MD5('%s'))",name,password);
    mysql_function_query(dbhandle,query,false,"","");
    SendClientMessage(playerid,WEIß,"SERVER: Du hast dich erfolgreich registriert.");
    AccountInfo[playerid][eingeloggt]=1;
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND password=MD5('%s')",name,password);
    mysql_function_query(dbhandle,query,true,"CheckPassword","i",playerid);

    Ja, geht in die richtige Richtung. Aber da du es mit dem cache machst nicht das da einfügen, sondern das was einen Schritt davor ist.
    Such mal nach
    "CheckPassword"
    (ja, mit den " ").


    Dann müsstest du auf Folgendes stoßen:
    mysql_function_query(...irgendwas...,"CheckPassword",...irgendwas...);


    Den Teil (und die paar Zeilen die dazugehören) musst du nach der Registration einfügen.

    public OnPlayerConnect(playerid);
    {
    SetTimerEx("ColPlayer", 250, 0, "d", playerid);
    return 1;
    }


    forward ColPlayer(playerid);
    public ColPlayer(playerid)
    {
    SetPlayerColor(playerid,weiß);
    return 1;
    }


    Ich hatte so etwas vor Jahren auch mal, ich erinnere mich das über einen kurzen Timer gelöst zu haben.

    Nein.
    Du hast doch irgendwo eine Funktion mit der du den Spieler einloggst, wenn er nach dem Login seine Statistiken geladen bekommt. (LoginPlayer oder so?)
    Diese Funktion sollst du (so wie du es bei /makeadmin mit dem Speichern gemacht hast) nach der Registration einfügen.

    Naja, du wirst es merken, wenn du das Menu ausführst und dann dein Log mit irgendwelchem Zeug (nennen wir es einfach mal so) zugemüllt wird.
    Das kannst du ja hier posten, falls was kommt und falls du damit nichts anfängst. Ich bezweifle aber, dass was kommt, aber man weiß ja nie. Ein Versuch ist es wert.

    Brauch ich nicht per TeamViewer machen, es ist, zumindest dem Code nach, die ID.
    Mach doch mal, direkt nach dem Registrieren /stats. Du wirst sehen, dass das nicht stimmt, bzw. nicht geht.


    Die ID bekommt der Spieler beim Login, deshalb speichert es auch ohne Probleme nach dem ersten Login. Daher: Login Funktion nach dem Registrieren aufrufen. :thumbup:

    Du musst ihm beim Registrieren natürlich auch die "id" zuweisen:
    AccountInfo[playerid][id]


    Ich weiß nicht, ob du das irgendwo in einer Datei hochzählst, oder wie genau du das machst.
    Generell könntest du nach der Registration (nach der Nachricht) einfach ein "LoginPlayer" (oder wie es eben heißt) hinsetzen, dann dürfte es klappen. Oder eben nach deiner Variante der "id" einen Wert zuweisen.

    ocmd:cr(playerid,params[])
    {
    #pragma unused params
    new bool:in;
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,ROT,"Du bist kein Leader / Ausbilder der San Andreas Army");
    for(new i=0;i<MAX_VEHICLES;i++)
    {
    in = false;
    for(new p=0; p<MAX_PLAYERS; p++)
    {
    if(IsPlayerInVehicle(p, i))
    {
    in = true;
    break;
    }
    }
    if(!in) SetVehicleToRespawn(i);
    }
    new string[128], pname[25];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(string, sizeof(string), "Server: Ausbilder / Leader %s hat alle Fahrzeuge respawnt", pname);
    SendClientMessageToAll(GELB, string);
    return 1;
    }

    Dann weiß ich nicht was es noch sein könnte.
    Hast du es schon mit einem leeren GameMode versucht, also praktisch einem komplett leeren Server/Script? Wenn es da geht, musst du wohl ein Backup (was du hoffentlich täglich machst) einfügen. Mir ist kein Fehler bekannt, dass ein Callback gar nicht aufgerufen wird. :S

    public OnPlayerDisconnect(playerid, reason)
    {
    new string[128];
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    dini_IntSet(Spielerdatei,"Interior", GetPlayerInterior(interior));
    dini_IntSet(Spielerdatei,"VWorld", GetPlayerVirtualWorld(vworld));
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    SetPlayerInterior(playerid, dini_Int(Spielerdatei,"Interior"));
    SetPlayerVirtualWorld(playerid, dini_Int(Spielerdatei,"VWorld"));
    return 1;
    }


    Versuch es so.
    Du bist aber schon in einem Interior und einer anderen VirtualWorld, oder?