Beiträge von MrMultiGamer

    Hallo liebe com,
    ich habe folgendes problem ich kann ingame häuser erstellen und sie löschen aber wenn ich in ein haus gehe und danach wieder raus werde ich immer nur an den Letzten geladenen pickup gesetzt.


    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2,hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]))
    {
    if(!strcmp(hInfo[i][h_besitzer],getPlayerName(playerid),true))
    {
    SetPlayerPos(playerid,hInfo[i][ih_x],hInfo[i][ih_y],hInfo[i][ih_z]);
    SetPlayerInterior(playerid,hInfo[i][h_interior]);
    SetPlayerVirtualWorld(playerid,hInfo[i][h_id]);
    SendClientMessage(playerid,grün,"Du hast dein Haus betreten!");
    }
    else
    {
    SendClientMessage(playerid,rot,"Das ist nicht dein Haus!");
    }
    }
    else
    if(IsPlayerInRangeOfPoint(playerid,2,hInfo[i][ih_x],hInfo[i][ih_y],hInfo[i][ih_z]))
    {
    SetPlayerPos(playerid,hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    SendClientMessage(playerid,grün,"Du hast dein Haus Verlassen!");
    }
    }

    Hallo liebe com, ich habe einen Fehler irgendwo gemacht aber finde ihn einfach nicht könnt ihr mir villt helfen? Jedesmal wenn ich ein haus kaufen will kann ich nur das erste haus aus der db kaufen und bei den anderen steht du bist nicht in der nähe eines hauses.


    hatPlayerHaus(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][h_id])continue;
    if(!strcmp(name, hInfo[i][h_besitzer],true))return i;
    }
    return 0;
    }


    getPlayerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    SaveHaus(uid)
    {
    new query[164];
    format(query,sizeof(query),"UPDATE houses SET besitzer='%s', preis='%i' WHERE id='%i'",hInfo[uid][h_besitzer],hInfo[uid][h_preis],hInfo[uid][h_db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }


    //Commands
    ocmd:buyhaus(playerid,params[])
    {
    if(hatPlayerHaus(playerid))return SendClientMessage(playerid,rot,"Du hast berreits ein Haus!");
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][h_id])continue;
    if(IsPlayerInRangeOfPoint(playerid,2,hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]))
    {
    if(!strlen(hInfo[i][h_besitzer]))
    {
    if(GetPlayerMoney(playerid)<hInfo[i][h_preis])return SendClientMessage(playerid,rot,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid,-hInfo[i][h_preis]);
    strmid(hInfo[i][h_besitzer], getPlayerName(playerid),0, MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    updatehaus(i);
    SaveHaus(i);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"Dieses Haus steht nicht zum Verkauf!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,rot,"Du bist nicht in der nähe eines Hauses!");
    return 1;
    }
    }
    return 1;
    }


    ocmd:sellhaus(playerid,params[])
    {
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][h_id])continue;
    if(IsPlayerInRangeOfPoint(playerid,5,hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]))
    {
    if(!strlen(hInfo[i][h_besitzer]))continue;
    if(!strcmp(hInfo[i][h_besitzer],getPlayerName(playerid),true))
    {
    GivePlayerMoney(playerid,hInfo[i][h_preis]/2);
    strmid(hInfo[i][h_besitzer], "",0, 0,0);
    updatehaus(i);
    SaveHaus(i);
    new string[164];
    format(string,sizeof(string),"Haus Verkauft! Du hast die Hälfte des Kaufpreises wieder beckommen (%i$)",hInfo[i][h_preis]/2);
    SendClientMessage(playerid,gelb,string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"Das Haus gehört nicht dir!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,rot,"Du bist nicht in der nähe eines Hauses!");
    return 1;
    }
    }
    return 1;
    }

    Hallo liebe com,
    ich habe alles controlliert und finde den fehler nicht und zwar wird mir angezeigt das zwei häuser geladen wurden und trzd wird ingame nur das erste angezeigt:


    getFreeHausID()
    {
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(hInfo[i][h_db_id]==0)return i;
    }
    return 0;
    }


    public OnHousesLoad()
    {
    new num_rows, num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return print("keine Autos!");
    for(new i=0; i<num_rows; i++)
    {
    new uid = getFreeHausID();
    hInfo[uid][h_x] = cache_get_field_content_float(0,"x",dbhandle);
    hInfo[uid][h_y] = cache_get_field_content_float(0,"y",dbhandle);
    hInfo[uid][h_z] = cache_get_field_content_float(0,"z",dbhandle);
    hInfo[uid][ih_x] = cache_get_field_content_float(0,"i_x",dbhandle);
    hInfo[uid][ih_y] = cache_get_field_content_float(0,"i_y",dbhandle);
    hInfo[uid][ih_z] = cache_get_field_content_float(0,"i_z",dbhandle);
    hInfo[uid][h_interior] = cache_get_field_content_int(0,"interior",dbhandle);
    cache_get_field_content(i,"besitzer",hInfo[uid][h_besitzer],dbhandle);
    hInfo[uid][h_db_id] = cache_get_field_content_int(i,"id",dbhandle);
    if(!strlen(hInfo[uid][h_besitzer]))
    {
    hInfo[uid][h_id] = CreatePickup(Hausfrei,1,hInfo[uid][h_x],hInfo[uid][h_y],hInfo[uid][h_z],0);
    printf("Haus %i geladen",hInfo[uid][h_db_id]);
    }
    else
    {
    hInfo[uid][h_id] = CreatePickup(Hausvergeben,1,hInfo[uid][h_x],hInfo[uid][h_y],hInfo[uid][h_z],0);
    printf("Haus %i geladen",hInfo[uid][h_db_id]);
    }
    }
    return 1;
    }

    Hallo, ich werde dir Heute zeigen wie du ein Login/Register System mit MySQL machst.
    Ich arbeite hier mit der MySQL Verison r34.


    Hier das Include + Plugin + libmysql.dll: mysql-r34-win.rar



    Was du alles dafür brauchst



    ■ Standart kenntnisse im Scripten
    ■ a_mysql.inc include
    ■ mysql.dll plugin
    ■ XAMPP
    ■ geduld
    ■ eine verbindung mit dem XAMPP MySQL server


    So dann fangen wir mal an...


    Als erstes müssen wir oben im Script zwei Dialoge definieren:
    #define DIALOG_LOGIN deine dialogid
    #define DIALOG_REGISTER deine dialogid


    So damit haben wir schonmal die Dialoge erstellt jetzt gehen wir nach OnPlayerConnected,
    und fragen ab ob für diesen Spieler schon ein Eintrag gemacht wurde:


    public OnPlayerConnected(playerid)
    {
    new query[164];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT ID FROM user WHERE Username='%s'",name);
    mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);
    return 1;
    }
    So und damit sagen wir der Datenbank das er die Zeile ID (SELECT ID) aus der Tabelle user (FROM user) auswählen soll wenn der Username mit
    einem Eintrag übereinstimmt (WHERE Username='%s').


    Dann haben wir mit dem befehl " mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid); " der DB gesagt das er die Formatierte query an die DB gesendet werden soll. Mit dem " true " geben wir an ob wir etwas von der DB zurück beckommen wollen true für ja false für nein. Wenn wir dies auf true stellen müssen wir in der zeile danach ein neun public erstellen das währe in diesem fall "OnUserCheck", dann wollen wir noch die playerid dabei haben und müssen dafür dahinter ("i",playerid) eingeben.


    So jetzt sind wir soweit das wir abfragen ob der Account schon besteht oder nicht:
    public OnUserCheck(playerid)
    {
    new num_rows, num_field;
    cache_get_data(num_rows,num_field,dbhandle);
    if(num_rows==0)
    {
    //Register
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung","Willkommen auf (dein server name)\nEs wurde kein eintrag in unserer Datenbank für dich gefunden!\nUm dies zu ändern gib bitte ein Gewünschtes Passwort ein.","Registrieren","Abbrechen");
    }
    else
    {
    //Login
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Willkommen auf (dein server name)\nWir haben deinen Account in unserer Datenbank Gefunden.\nUm dich einzuloggen gib bitte dein Passwort ein.","Einloggen","Abbrechen");
    }
    return 1;
    }
    So jetzt wir abgefragt ob der Account besteht oder nicht und die jeweiligen dialoge werden angezeigt.
    Mit cache_get_data(num_rows,num_field,dbhandle); fragen wir die einträge ab...
    Wenn wir das gemacht haben können wir abfragen ob ein eintrag besteht oder nicht.
    Das geht mit if(num_rows==0).
    Und wenn kein eintrag besteht öffnet sich der Register dialog und wenn er besteht der login dialog.
    Aber wir dürfen nicht vergessen ein forward erstellen:


    forward OnUserCheck(playerid);


    jetzt kommen wir zuerst zu dem register dialog und es geht weiter unter OnDialogResponse:


    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[164],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>=8)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (Username,Passwort,Level,Geld) VALUES ('%s','%s','%i','%i'')",name,passwort,1,50000,);
    mysql_function_query(dbhandle,query,false,"","");
    SetPlayerScore(playerid,1);
    GivePlayerMoney(playerid,50000);
    sInfo[playerid][id]=cache_get_field_content_int(0,"ID",dbhandle);
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung","Willkommen auf (dein Server name)\nEs wurde noch kein eintrag von dir in unserer Datenbank gefunden!\n Um dies zu ändern gib bitte ein Gewünschtes Passwort ein.\nDEIN PASSWORT MUSS MINDESTENS 8 ZEICHEN BEINHALTEN!!!","Registrieren","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }


    Jetzt haben wir den Dialog fertig. Wir haben als erstes abgefragt ob der Spieler mindesten 8 zeichen als passwort genutzt hat. Dann haben wir mit mysql_escape_string ein Befehl gemacht das er abfragt ob ein Spieler der Versucht ein Command in den Dialog zu schreiben der die MySQL DB abstürzen lassen kann oder andere ähnliche dinge und sie dann entfernt. Als nächstes haben wir wieder einen Befehl an die DB gesendet das er einen Eintrag machen soll und zwar mit INSERT INTO user das er etwas in die DB user folgende spalten eintragen soll: (Username,Passwort,Level,Geld) dann müssen wir noch angeben was er in welche daten er in welche spalte eintragen soll und das geht mit VALUES ('%s','%s','%i','%i','%i') und am ende müssen wir die parameter angeben z.b. wie bei diesem " name,passwort,1,50000 "...


    Jetzt kommen wir zum Login:


    if(dialogid==DIALOG_LOGIN)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[164],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>0)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM user WHERE Username='%s' AND Passwort='%s'",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswortResponse","i",playerid);
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Willkommen auf (dein server name)\nWir haben deinen Account in unserer Datenbank Gefunden.\nUm dich einzuloggen gib bitte dein Passwort ein.\nUNGÜLTIGE EINGABE","Einloggen","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }


    So hiermit haben wir wieder zuerst die eingabe auf Angriffe gesichert und machen wieder einen Befehl an die DB. Mit ( SELECT * ) sagen wir ihm das er aus der Tabelle user ( FROM user ) alles außwählen soll und fragen ab ob der Username mit dem Passwort übereinstimmt ( WHERE Username='%s' AND Passwort='%s' ). Dann machen wir wieder einen neuen public:


    public OnPasswortResponse(playerid)
    {
    new num_fields, num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //Richtig
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    SetPlayerScore(playerid,cache_get_field_content_int(0,"Level",dbhandle));
    sInfo[playerid][id] = cache_get_field_content_int(0,"ID",dbhandle);
    SetPlayerScore(playerid,cache_get_field_content_int(0,"Level",dbhandle));
    GivePlayerMoney(playerid,cache_get_field_content_int(0,"Geld",dbhandle));
    }
    else
    {
    //Falsch
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Willkommen auf (dein Server name)\nWir haben deinen Account in unserer Datenbank Gefunden.\nUm dich einzuloggen gib bitte dein Passwort ein.\nFALSCHES PASSWORT!!!","Einloggen","Abbrechen");
    }
    return 1;
    }
    Jetzt habe wir wieder eine abfrage mit cahce_get_data gemacht aber diesmal gilt dies nicht dafür ob ein eintrag gemacht wurde sondern ob das passwort übereinstimmt. Dann haben wir die daten aus der DB auf die daten des Spielers überschrieben das geht mit
    sInfo[playerid][Level] (das ist ein eigenes erstelltes enum) sInfo[playerid][Level][playerid] = cache_get_field_content_int(0,"Level",dbhandle);
    das ( "Level" ) steht für den Zeilen namen aus der user Tabelle ... Damit haben wir ein fertiges Login/Register System für MySQL ich hoffe das ich dir Helfen konnte und bin für weitere fragen verfügbar.


    MfG: MrMultiGamer

    Hallo liebe com ich habe ein Problem und zwar werden die Autos nicht gepark bzw weiß ich nicht wie ich richtig abfragen soll ob das auto wo der Spieler drin sitzt mit der db_id über einstimmt hier mal der befehl:


    ocmd:apark(playerid,params[])
    {
    if(sInfo[playerid][Adminlevel]==1339)
    {
    new query[164];
    format(query,sizeof(query),"SELECT * FROM autos");
    mysql_function_query(dbhandle,query,true,"OnVehiclePark","ii",GetPlayerVehicleID(playerid),playerid);
    }
    else
    {
    SendClientMessage(playerid,rot,"Du darfst diesen Befehl nicht nutzen!");
    }
    return 1;
    }


    public OnVehiclePark(vehicleid,playerid)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]==)
    {
    new Float:Pos[5];
    GetVehiclePos(vehicleid,Pos[0],Pos[1],Pos[2]);
    GetVehicleZAngle(vehicleid,Pos[3]);
    cInfo[i][c_x] = Pos[0];
    cInfo[i][c_y] = Pos[1];
    cInfo[i][c_z] = Pos[2];
    cInfo[i][c_r] = Pos[3];
    new query[164];
    format(query,sizeof(query),"UPDATE autos SET (x,y,z,r) VALUES ('%f','%f','%f','%f') WHERE id=%i",cInfo[i][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    new string[164];
    format(string,sizeof(string),"Das Auto %i wurde auf den Cooridinaten %f,%f,%f,%f geparkt",cInfo[i][db_id],Pos[0],Pos[1],Pos[2],Pos[3]);
    SendClientMessage(playerid,grün,string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"Dies ist kein Auto aus der Datenbank!");
    return 1;
    }
    }
    return 1;
    }

    hallo liebe com,
    ich habe schon alles was geht ausprobiert um ingame den eintrag aus der db zu löschen aber jedesmal löscht er alle einträge aus der Tabelle...


    ocmd:deletecar(playerid,params[])
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]==0)continue;
    if(cInfo[i][besitzer]!=sInfo[playerid][id])return SendClientMessage(playerid,grün,"Das ist nicht dein Wagen!");
    new query[164];
    format(query,sizeof(query),"DELETE FROM autos WHERE id=%i",cInfo[i][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    DestroyVehicle(cInfo[i][id_x]);
    SendClientMessage(playerid,grün,"Auto Gelöscht!");
    }
    return 1;
    }

    Hallo liebe com,
    ich habe schon alles ausprobiert aber es klappt nicht ich habe einen befehl gemacht der abfragt ob das auto von dem spieler ist und wenn ja das er in der MySQL DB dann die coords updated aber irgendwie klappt es nit


    ocmd:park(playerid,params[])
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]==0)continue;
    if(cInfo[i][besitzer]!=sInfo[playerid][id])return SendClientMessage(playerid,grün,"Das ist nicht dein Wagen!");
    new query[164];
    new Float:x, Float:y, Float:z, Float:r;
    GetVehiclePos(cInfo[i][id_x],y,x,z);
    GetVehicleZAngle(cInfo[i][id_x],r);
    format(query,sizeof(query),"UPDATE autos SET x='%f' y='%f' z='%f' r='%f' WHERE id='%i'",x,y,z,r,cInfo[i][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    SendClientMessage(playerid,grün,"Du wirst dein Auto ab jetzt hier wieder finden!");
    }
    return 1;
    }

    Sry bin auf die http gegangen



    [18:34:24] [DEBUG] mysql_connect - host: "127.0.0.1", user: "root", database: "samp", password: "****", port: 3306, autoreconnect: true
    [18:34:24] [DEBUG] CMySQLHandle::Create - creating new connection..
    [18:34:24] [DEBUG] CMySQLHandle::CMySQLHandle - constructor called
    [18:34:24] [DEBUG] CMySQLHandle::Create - connection created with ID = 1
    [18:34:24] [DEBUG] CMySQLConnection::Connect - connection was successful
    [18:34:24] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
    [18:34:24] [DEBUG] CMySQLConnection::Connect - connection was successful
    [18:34:24] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
    [18:34:44] [DEBUG] mysql_tquery - connection: 1, query: "SELECT id FROM user WHERE username='MrMultiGamer'", callback: "OnUserCheck", format: "i"
    [18:34:44] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
    [18:34:44] [DEBUG] mysql_tquery - scheduling query "SELECT id FROM user WHERE username='MrMultiGamer'"..
    [18:34:44] [DEBUG] CMySQLQuery::Execute[OnUserCheck(i)] - starting query execution
    [18:34:44] [DEBUG] CMySQLQuery::Execute[OnUserCheck(i)] - query was successful
    [18:34:44] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
    [18:34:44] [DEBUG] CMySQLQuery::Execute[OnUserCheck(i)] - data being passed to ProcessCallbacks()
    [18:34:44] [DEBUG] Calling callback "OnUserCheck"..
    [18:34:44] [DEBUG] cache_get_data - connection: 1
    [18:34:44] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
    [18:34:44] [DEBUG] CMySQLQuery::~CMySQLQuery() - deconstructor called
    [18:34:47] [DEBUG] mysql_escape_string - source: "20154040", connection: 1, max_len: 35
    [18:34:47] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM user WHERE username='MrMultiGamer' AND passwort='2", callback: "OnPasswortResponse", format: "i"
    [18:34:47] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
    [18:34:47] [DEBUG] mysql_tquery - scheduling query "SELECT * FROM user WHERE username='MrMultiGamer' AND passwort='20154040'"..
    [18:34:47] [DEBUG] CMySQLQuery::Execute[OnPasswortResponse(i)] - starting query execution
    [18:34:47] [DEBUG] CMySQLQuery::Execute[OnPasswortResponse(i)] - query was successful
    [18:34:47] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
    [18:34:47] [DEBUG] CMySQLQuery::Execute[OnPasswortResponse(i)] - data being passed to ProcessCallbacks()
    [18:34:47] [DEBUG] Calling callback "OnPasswortResponse"..
    [18:34:47] [DEBUG] cache_get_data - connection: 1
    [18:34:47] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM autos WHERE besitzer='0'", callback: "onPlayerCarLoad", format: "i"
    [18:34:47] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
    [18:34:47] [DEBUG] mysql_tquery - scheduling query "SELECT * FROM autos WHERE besitzer='0'"..
    [18:34:47] [DEBUG] cache_get_field_content_int - row: 0, field_name: "level", connection: 1
    [18:34:47] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "level", data: "2"
    [18:34:47] [DEBUG] cache_get_field_content_int - row: 0, field_name: "id", connection: 1
    [18:34:47] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "id", data: "1"
    [18:34:47] [DEBUG] cache_get_field_content_int - row: 0, field_name: "adminlevel", connection: 1
    [18:34:47] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "adminlevel", data: "1339"
    [18:34:47] [DEBUG] cache_get_field_content_int - row: 0, field_name: "geld", connection: 1
    [18:34:47] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "geld", data: "1500"
    [18:34:47] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
    [18:34:47] [DEBUG] CMySQLQuery::~CMySQLQuery() - deconstructor called
    [18:34:47] [DEBUG] CMySQLQuery::Execute[onPlayerCarLoad(i)] - starting query execution
    [18:34:47] [DEBUG] CMySQLQuery::Execute[onPlayerCarLoad(i)] - query was successful
    [18:34:47] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
    [18:34:47] [DEBUG] CMySQLQuery::Execute[onPlayerCarLoad(i)] - data being passed to ProcessCallbacks()
    [18:34:47] [DEBUG] Calling callback "onPlayerCarLoad"..
    [18:34:47] [DEBUG] cache_get_data - connection: 1
    [18:34:47] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
    [18:34:47] [DEBUG] CMySQLQuery::~CMySQLQuery() - deconstructor called
    [18:34:52] [DEBUG] mysql_tquery - connection: 1, query: "UPDATE user SET level='2',geld='1500',adminlevel='1339' WHERE id", callback: "(null)", format: "(null)"
    [18:34:52] [DEBUG] CMySQLQuery::CMySQLQuery() - constructor called
    [18:34:52] [DEBUG] mysql_tquery - scheduling query "UPDATE user SET level='2',geld='1500',adminlevel='1339' WHERE id='1'"..
    [18:34:52] [DEBUG] CMySQLQuery::Execute[()] - starting query execution
    [18:34:52] [DEBUG] CMySQLQuery::Execute[()] - query was successful
    [18:34:52] [DEBUG] CMySQLQuery::Execute[()] - no callback specified, skipping result saving
    [18:34:52] [DEBUG] CMySQLQuery::Execute[()] - data being passed to ProcessCallbacks()
    [18:34:52] [DEBUG] CMySQLQuery::~CMySQLQuery() - deconstructor called

    Ehm dort sehe ich keinen Fehler, schick uns mal den code von OnGameModelInit


    public OnGameModeInit()
    {
    //mysql
    dbhandle = mysql_connect(db_host,db_user,db_db,db_pass);


    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
    }


    Wo lässt du loadPlayerCars(playerid); aufrufen?


    public OnPasswortResponse(playerid)
    {
    new num_rows, num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //Richtig
    loadPlayerCars(playerid);
    sInfo[playerid][eingellogt]=1;
    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][id] = cache_get_field_content_int(0,"id",dbhandle);
    sInfo[playerid][Adminlevel] = cache_get_field_content_int(0,"adminlevel",dbhandle);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"geld",dbhandle));
    }
    else
    {
    //Falsch
    SendClientMessage(playerid,rot,"Falsches Passwort!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gib bitte dein Passwort ein","Login","Abbrechen");
    }
    return 1;
    }


    Debugge die Sache doch einfach mal, dann siehste wo er hängt.


    Wenn du die Autos für den Spieler geladen hast, schau was im Server-Log steht.


    Habe ich gerade es kommt "Keine autos"

    hallo liebe com,
    ich finde einfach den fehler nicht... die Autos laden nicht. Könnt ihr mir villt helfen??


    getFreeCarID()
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]==0)return i;
    }
    return 0;
    }


    forward onPlayerCarLoad(playerid);
    public onPlayerCarLoad(playerid)
    {
    new num_fields, num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return print("keine autos");
    for(new i=0; i<num_rows; i++)
    {
    new c_id = getFreeCarID();
    cInfo[c_id][c_model]=cache_get_field_content_int(i,"model",dbhandle);
    cInfo[c_id][besitzer]=cache_get_field_content_int(i,"besitzer",dbhandle);
    cInfo[c_id][c_x]=cache_get_field_content_float(i,"x",dbhandle);
    cInfo[c_id][c_y]=cache_get_field_content_float(i,"y",dbhandle);
    cInfo[c_id][c_z]=cache_get_field_content_float(i,"z",dbhandle);
    cInfo[c_id][c_r]=cache_get_field_content_float(i,"r",dbhandle);
    cInfo[c_id][db_id]=cache_get_field_content_int(i,"id",dbhandle);
    cInfo[c_id][id_x]=CreateVehicle(cInfo[c_id][c_model],cInfo[c_id][c_x],cInfo[c_id][c_y],cInfo[c_id][c_z],cInfo[c_id][c_r],-1,-1,0);
    }
    return 1;
    }


    loadPlayerCars(playerid)
    {
    new query[164];
    format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",sInfo[playerid][id]);
    mysql_function_query(dbhandle,query,true,"onPlayerCarLoad","i",playerid);
    return 1;
    }