Beiträge von Jeffry

    for(new sv = 0; sv < sizeof(cInfo); sv++)
    {
    new name[30];
    format(name,sizeof(name),"SELECT name FROM users WHERE id = '%d'",string);
    }
    Das hier macht auch keinen Sinn, da wird kein Query gesendet und kein Result ausgelesen, nichts. Zudem ist der String nicht die db_id, was ich nun zum dritten mal sage.



    Warum es gleich wieder weg geht kann ich dir so nicht sagen. Entweder du setzt den String wieder leer nachdem du das gemacht hast, oder du hidest das TextDraw.

    Dann setzt dein Code die Score des Spielers irgendwo hoch. Muss ja wohl so sein, denn es wird korrekt gespeichert und korrekt geladen. Da es von selbst in der Datenbank nicht mehr wird, muss es irgendwo im Code geschehen.
    Ding ist nur, ich kann dir nicht sagen wo, das kann theoretisch überall sein. Da musst du mal suchen, irgendwo muss da was sein.

    Möglicherweise ist e_plate im enum nicht deklariert.


    Dann musst du die Funktion anpassen.
    stock GetFreeNumberPlate()
    {
    new rand = random(9000)+1000, security;
    GFNP_AGAIN:
    for(new i=0; i<MAX_FRAC_VEHICLES; i++)
    {
    if(fracVehicle[i][e_plate] == rand)
    {
    rand++;
    if(rand > 9999)
    {
    if(security > 0) return -1;
    rand = 1000;
    security = 1;
    }
    goto GFNP_AGAIN;
    }
    }
    for(new i=0; i<MAX_PV_VEHICLES; i++)
    {
    if(pvVehicle[i][e_plate] == rand)
    {
    rand++;
    if(rand > 9999)
    {
    if(security > 0) return -1;
    rand = 1000;
    security = 1;
    }
    goto GFNP_AGAIN;
    }
    }
    return rand;
    }


    Einfach die Schleife mit entsprechenden Variablenbezeichnungen nochmal drunter.

    format(string,sizeof(string),"SELECT name FROM users WHERE id = '%d'",name);
    Das macht keinen Sinn. Dort muss die db_id des Besitzers rein.


    Außerdem musst du das Result auslesen.


    Der Error kommt wohl, weil dein Rückgabestring nicht gleich groß ist, als der in den du es schreibst. Ohne Code kann ich dir das aber nicht sagen.

    stock const Betatester[][] = { //oben ins Skript
    "Admin","Test"
    };


    new b_name[MAX_PLAYER_NAME], bool:beta;
    GetPlayerName(playerid, b_name, MAX_PLAYER_NAME);
    for(new j; j < sizeof(Betatester); j++)
    {
    if(!strcmp(b_name, Betatester[j]))
    {
    beta = true;
    break;
    }
    }
    if(!beta)
    {
    SendClientMessage(playerid, COLOR_ERROR, "Der Server befindet sich in der Betaphase. Du musst eingetragen sein, um zu spielen.");
    return Kick(playerid);
    }

    Wofür brauchst du bitte einen Timer?


    Meister, das war ein Beispiel.



    Prinzipiell sagst du also, deine Include ist für genau 2 Queries gedacht, und dafür hast du 2 Funktionen erstellt (wovon der Insert nur halbwegs was taugt, da keine Rückgabe geschieht). Das macht keinen Sinn. Wenn ich 25 Queries nach Standard schreibe und dann eines mit der Include.
    Zudem, wenn ich es für fast nichts verwenden kann, dann bringt es ja nichts.

    Und da reicht es 1x die Tabellen Struktur zu deklarieren, somit es es wesentlich weniger Code!


    Dann erkläre mir doch bitte mal, wie ich mit einer Struktur das hier hinbekommen soll:


    In einem Timer:
    MySQL_Update(handle,rows,"Test","Name","dfws",money,x,name);


    Beim Registrieren:
    MySQL_Update(handle,rows,"Test","Name","dfws",alter,x,name);
    So geht es ja offensichtlich nicht.



    Zum Rest:
    Ich spare mir die Zeit mit dir zu diskutieren, da das ohnehin nichts bringt. Meine Meinung kennst du, die kannst du akzeptieren oder auch nicht, das ist mir egal.
    Die Verwendung empfehle ich aus genannten Gründen so keinem.

    if(GetPlayerState(playerid) < 1 || GetPlayerState(playerid) > 3) return 0;
    Das bewirkt, dass der Dialog nur kommt, wenn du Zu Fuß bist, oder in einem Fahrzeug, aber nicht in der Class Selection.