Autohaus hilfe

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 Autohaussystem funktioniert noch nicht ganz so genau wie ich es will.
    Er trägt mir als Besitzer die Online ID ein z.b 0. Das ist aber nicht Sinn der Sache. Dort soll der Benutzername stehen.


    Hier einmal der Code:



    saveCarToDB(playerid,carid)
    {
    new query[128];
    format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",sInfo[playerid][pName],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
    mysql_format(dbhandle, query, sizeof(query), "INSERT INTO autos(besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')", sInfo[playerid][pName],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
    return 1;
    }


    kann mir evtl einer von euch da weiter helfen ?

  • Passt alles... ich versteh einfach den Fehler nicht, ich habe ja kein zweites fahrzeug momentan und setze mir das kennzeichen und dann kriege ich ein zweites fahrzeug was aber nicht inder Datenbank ist... sobald ich /autos mache werden halt 2 angezeigt und kann mir auch kein weiteres kaufenn.. Die fahrzeugewo ich ja plötzlich habe werden auch nicht erstellt


    :autos befehl


  • Ich poste euch mal hier den kompletten Code den ich als Filterscript eingebaut habe. Es stammt aus dem Tutorial von MrMonat
    MrMonat speichert die Fahrzeuge mit der Registrierungsid zusammen ab. Da ich aber nur ein teil von seinem System nutze, ist das Autohaus nicht darauf abgestimmt.



    Ich möchte gerne das dort der Benutzername steht wem das Fahrzeug gehört.




    Hier dann mal der Code



    //Includes
    #include <a_samp>
    #include <ocmd>
    #include <sscanf>
    #include <a_mysql>
    //enums
    enum PlayerInfo{
    eingeloggt,
    level,
    pName,
    alevel,
    }
    enum carEnum{
    id_x,
    model,
    besitzer,
    Float:c_x,
    Float:c_y,
    Float:c_z,
    Float:c_r,
    pName
    }
    enum autohausEnum{
    Float:s_x,
    Float:s_y,
    Float:s_z,
    Float:s_r
    }
    enum autohauscarEnum{
    model,
    Float:c_x,
    Float:c_y,
    Float:c_z,
    Float:c_r,
    c_preis,
    ah_id,
    id_x
    }
    //Globale Variablen
    new dbhandle;



    new sInfo[MAX_PLAYERS][PlayerInfo];
    new cInfo[50][carEnum];
    new ahInfo[][autohausEnum] = {
    {125.7242,-170.1469,1.2838,177.7335},//id: 0 1. autohaus
    {189.8910,-263.3446,1.2829,180.6895}//id: 1 2. autohaus
    };
    new ahCars[][autohauscarEnum] = {
    {560,118.5637,-153.0834,1.2834,186.6475,50000,0},
    {411,106.3420,-158.7720,1.7527,257.3197,80000,0},
    {400,204.8894,-265.4756,1.2866,354.1406,10000,1}
    };
    //Farben
    #define COLOR_RED 0xFF0000FF
    //Dialoge
    #define DIALOG_AUTOHAUS 4
    //MySQL
    #define db_host "127.0.0.1"
    #define db_user "root"
    #define db_pass ""
    #define db_db "samp_db"
    //Forwards
    forward OnUserCheck(playerid);
    forward OnPasswordResponse(playerid);
    forward carSavedToDB(carid);
    forward OnPlayerCarsLoad(playerid);
    main()
    {
    }
    public OnGameModeInit()
    {
    SetGameModeText("MrMonat Tutorialmode");
    AddPlayerClass(1,199.0846,-150.0331,1.5781,359.1443,WEAPON_MP5,500,0,0,0,0);
    AddPlayerClass(2,199.0846,-150.0331,1.5781,359.1443,WEAPON_MP5,500,0,0,0,0);
    AddPlayerClass(3,199.0846,-150.0331,1.5781,359.1443,WEAPON_MP5,500,0,0,0,0);
    //Autos erstellen
    AddStaticVehicle(560,214.1196,-141.3710,1.3052,1.6804,-1,-1); //Sultan
    //Autoh?er laden
    for(new i=0; i<sizeof(ahCars); i++)
    {
    ahCars[i][id_x]=AddStaticVehicle(ahCars[i][model],ahCars[i][c_x],ahCars[i][c_y],ahCars[i][c_z],ahCars[i][c_r],-1,-1);
    }
    //MySQL
    dbhandle = mysql_connect(db_host,db_user,db_db,db_pass);
    return 1;
    }
    public OnGameModeExit()
    {
    mysql_close(dbhandle);
    return 1;
    }
    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid,199.0846,-150.0331,1.5781);
    SetPlayerCameraPos(playerid, 199.2307,-143.8328,1.5781);
    SetPlayerCameraLookAt(playerid, 199.0846,-150.0331,1.5781);
    SetPlayerFacingAngle(playerid,359.1443);
    return 1;
    }
    public OnUserCheck(playerid)
    {
    return 1;
    }
    public OnPlayerConnect(playerid)
    {
    new nachricht[128];
    format(nachricht,sizeof(nachricht),"Du bist mit der ID %i verbunden.",playerid);
    SendClientMessage(playerid,COLOR_RED,nachricht);
    //Login/Register
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT id FROM user WHERE users='%s'",name);
    mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);
    return 1;
    }
    savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    //Speichern level,money
    new query[128];
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i' WHERE id='%i'",sInfo[playerid][level],
    GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][pName]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }
    resetPlayer(playerid)
    {
    for(new i=0; i<sizeof(sInfo[]); i++)
    {
    sInfo[playerid][PlayerInfo:i]=0;
    }
    return 1;
    }
    public OnPlayerDisconnect(playerid, reason)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]==0)continue;
    if(cInfo[i][besitzer]!=sInfo[playerid][pName])continue;
    GetVehiclePos(cInfo[i][id_x],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z]);
    GetVehicleZAngle(cInfo[i][id_x],cInfo[i][c_r]);
    new query[256];
    format(query,sizeof(query),"UPDATE autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],cInfo[i][pName]);
    mysql_function_query(dbhandle,query,false,"","");
    DestroyVehicle(cInfo[i][id_x]);
    cInfo[i][id_x]=0;
    }
    savePlayer(playerid);
    resetPlayer(playerid);
    return 1;
    }
    public OnPlayerSpawn(playerid)
    { loadPlayerCars(playerid);
    return 1;
    }
    public OnPlayerDeath(playerid, killerid, reason)
    {
    return 1;
    }
    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }
    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }
    public OnPlayerText(playerid, text[])
    {
    return 1;
    }
    public carSavedToDB(carid)
    {
    cInfo[carid][pName]=cache_insert_id(dbhandle);
    return 1;
    }
    saveCarToDB(playerid,carid)
    {
    new query[128];
    format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",sInfo[playerid][pName],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
    mysql_function_query(dbhandle,query,true,"carSavedToDB","i",carid);
    return 1;
    }
    createPlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r)
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]!=0)continue;
    cInfo[i][besitzer]=sInfo[playerid][pName];
    cInfo[i][c_x]=x;
    cInfo[i][c_y]=y;
    cInfo[i][c_z]=z;
    cInfo[i][c_r]=r;
    cInfo[i][model]=modelid;
    cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1);
    new string[128];
    format(string,sizeof(string),"Das Auto %i wurde erstellt.",i);
    SendClientMessageToAll(COLOR_RED,string);
    saveCarToDB(playerid,i);
    return 1;
    }
    return 1;
    }
    //Befehle
    ocmd:deletecar(playerid,params[])
    {
    if(!isAdmin(playerid,2))return SendClientMessage(playerid,COLOR_RED,"Dein Adminrang ist zu niedrig.");
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,COLOR_RED,"Du bist in keinem Fahrzeug.");
    DestroyVehicle(GetPlayerVehicleID(playerid));
    return 1;
    }
    ocmd:createcar(playerid,params[])
    {
    if(!isAdmin(playerid,2))return SendClientMessage(playerid,COLOR_RED,"Dein Adminrang ist zu niedrig.");
    new mID,pID;
    if(sscanf(params,"ui",pID,mID))return SendClientMessage(playerid,COLOR_RED,"INFO: /createcar [playerid] [model]");
    if(mID<400||mID>611)return SendClientMessage(playerid,COLOR_RED,"Ung??ges Model.");
    new Float:xc,Float:yc,Float:zc,Float:rc;
    GetPlayerPos(pID,xc,yc,zc);
    GetPlayerFacingAngle(pID,rc);
    createPlayerCar(pID,mID,xc,yc,zc,rc);
    return 1;
    }
    ocmd:pn(playerid,params[])
    {
    new pID,text[128];
    if(sscanf(params,"us[128]",pID,text))return SendClientMessage(playerid,COLOR_RED,"INFO: /pn [playerid] [text]");
    SendClientMessage(pID,COLOR_RED,text);
    return 1;
    }
    ocmd:setadmin(playerid,params[])
    {
    if(!isAdmin(playerid,3))return SendClientMessage(playerid,COLOR_RED,"Dein Adminrang ist zu niedrig.");
    new pID,a_level;
    if(sscanf(params,"ui",pID,a_level))return SendClientMessage(playerid,COLOR_RED,"INFO: /setadmin [playerid] [adminlevel]");
    sInfo[pID][alevel]=a_level;
    savePlayer(pID);
    SendClientMessage(pID,COLOR_RED,"Dein Adminrang wurde ge?ert.");
    SendClientMessage(playerid,COLOR_RED,"Du hast den Adminrang ge?ert.");
    return 1;
    }
    isAdmin(playerid,a_level)
    {
    if(sInfo[playerid][alevel]>=a_level)return 1;
    return 0;
    }
    ocmd:restart(playerid,params[])
    {
    if(!isAdmin(playerid,3))return SendClientMessage(playerid,COLOR_RED,"Dein Adminrang ist zu niedrig.");
    SendRconCommand("gmx");
    return 1;
    }
    ocmd:test(playerid,params[])
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast /test eingegeben.");
    return 1;
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    return 0;
    }
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    return 1;
    }
    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    return 1;
    }
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate==PLAYER_STATE_DRIVER)
    {
    new vID=GetPlayerVehicleID(playerid);
    for(new i=0; i<sizeof(ahCars); i++)
    {
    if(ahCars[i][id_x]!=vID)continue;
    //Verkaufsprozess
    SetPVarInt(playerid,"buyCarID",i);
    new string[256];
    format(string,sizeof(string),"M??en sie das Fahrzeug ff??i$ kaufen?",ahCars[i][c_preis]);
    ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Ja","Nein");
    break;
    }
    return 1;
    }
    return 1;
    }
    public OnPlayerEnterCheckpoint(playerid)
    {
    return 1;
    }
    public OnPlayerLeaveCheckpoint(playerid)
    {
    return 1;
    }
    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    return 1;
    }
    public OnPlayerLeaveRaceCheckpoint(playerid)
    {
    return 1;
    }
    public OnRconCommand(cmd[])
    {
    return 1;
    }
    public OnPlayerRequestSpawn(playerid)
    {
    return 1;
    }
    public OnObjectMoved(objectid)
    {
    return 1;
    }
    public OnPlayerObjectMoved(playerid, objectid)
    {
    return 1;
    }
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    return 1;
    }
    public OnVehicleMod(playerid, vehicleid, componentid)
    {
    return 1;
    }
    public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
    {
    return 1;
    }
    public OnVehicleRespray(playerid, vehicleid, color1, color2)
    {
    return 1;
    }
    public OnPlayerSelectedMenuRow(playerid, row)
    {
    return 1;
    }
    public OnPlayerExitedMenu(playerid)
    {
    return 1;
    }
    public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
    {
    return 1;
    }
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    return 1;
    }
    public OnRconLoginAttempt(ip[], password[], success)
    {
    return 1;
    }
    public OnPlayerUpdate(playerid)
    {
    return 1;
    }
    public OnPlayerStreamIn(playerid, forplayerid)
    {
    return 1;
    }
    public OnPlayerStreamOut(playerid, forplayerid)
    {
    return 1;
    }
    public OnVehicleStreamIn(vehicleid, forplayerid)
    {
    return 1;
    }
    public OnVehicleStreamOut(vehicleid, forplayerid)
    {
    return 1;
    }
    getFreeCarID()
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]==0)return i;
    }
    return 0;
    }
    public OnPlayerCarsLoad(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id=getFreeCarID();
    cInfo[id][model]=cache_get_field_content_int(i,"model",dbhandle);
    cInfo[id][besitzer]=cache_get_field_content_int(i,"besitzer",dbhandle);
    cInfo[id][c_x]=cache_get_field_content_float(i,"x",dbhandle);
    cInfo[id][c_y]=cache_get_field_content_float(i,"y",dbhandle);
    cInfo[id][c_z]=cache_get_field_content_float(i,"z",dbhandle);
    cInfo[id][c_r]=cache_get_field_content_float(i,"r",dbhandle);
    cInfo[id][pName]=cache_get_field_content_int(i,"id",dbhandle);
    cInfo[id][id_x]=CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],-1,-1,-1);
    }
    return 1;
    }
    loadPlayerCars(playerid)
    {
    new query[128];
    format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",sInfo[playerid][pName]);
    mysql_function_query(dbhandle,query,true,"OnPlayerCarsLoad","i",playerid);
    return 1;
    }
    public OnPasswordResponse(playerid)
    {
    return 1;
    }
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_AUTOHAUS)
    {
    if(response)
    {
    //Autoverkauf
    new id=GetPVarInt(playerid,"buyCarID");
    if(GetPlayerMoney(playerid)<ahCars[id][c_preis])
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast nicht gen??d Geld.");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    GivePlayerMoney(playerid,-ahCars[id][c_preis]);
    createPlayerCar(playerid,ahCars[id][model],ahInfo[ahCars[id][ah_id]][s_x],ahInfo[ahCars[id][ah_id]][s_y],ahInfo[ahCars[id][ah_id]][s_z],ahInfo[ahCars[id][ah_id]][s_r]);
    SendClientMessage(playerid,COLOR_RED,"Herzlichen Gl??unsch zum neuen Auto");
    RemovePlayerFromVehicle(playerid);
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_RED,"Dann eben nicht...");
    }
    return 1;
    }
    return 1;
    }

  • Erstmal so... und wenn du es speicherst bei mysql muss der pname in der DB als VChar sein, nicht als INT oder FLOAT

  • Hallo erstmal danke für dein Hilfeversuch. Ich habe besitzer nun in VCHAR umgesetzt. Allerdings schreibt er mir nun nicht den Besitzer in die Datenbank. Er setzt dort nichts ein also (Null)

  • Code
    saveCarToDB(playerid,carid)
    {
        new query[128],naame[MAX_PLAYER_NAME];
        GetPlayerName(playerid,naame,sizeof(naame));
        format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",naame,cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
        mysql_function_query(dbhandle,query,true,"carSavedToDB","i",carid);
        return 1;
    }
  • Code
    saveCarToDB(playerid,carid)
    {
        new query[128],naame[MAX_PLAYER_NAME];
        GetPlayerName(playerid,naame,sizeof(naame));
        format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",naame,cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
        mysql_function_query(dbhandle,query,true,"carSavedToDB","i",carid);
        return 1;
    }

    Das ganze gestaltet sich iwie komisch. Nun schreibt er mir in die Tabelle eine 74 rein. Woher er die nimmt keine Ahnung

  • Code
    saveCarToDB(playerid,carid)
    {
        new query[128],naame[MAX_PLAYER_NAME];
        GetPlayerName(playerid,naame,sizeof(naame));
        format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%s','%i','%f','%f','%f','%f')",naame,cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
        mysql_function_query(dbhandle,query,true,"carSavedToDB","i",carid);
        return 1;
    }

    Mein Fehler sry

  • Code
    saveCarToDB(playerid,carid)
    {
        new query[128],naame[MAX_PLAYER_NAME];
        GetPlayerName(playerid,naame,sizeof(naame));
        format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%s','%i','%f','%f','%f','%f')",naame,cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
        mysql_function_query(dbhandle,query,true,"carSavedToDB","i",carid);
        return 1;
    }

    Mein Fehler sry

    Ja super danke dir. Echt nice.


    Magst mir noch verraten woran es lag ? Also was ich hätte anders machen müssen ? Ich will ja dazu lernen und nicht nur c&p

  • Also

    Code
    %s ist Name oder einfach Buchstaben... das nimmt man für Sachen wie Kennzeichen der Fahrzeuge oder gerade für Benutzernamen
    %i ist Zahl
    %d auch zahl
    %f ist Float also 2,43545
    
    
    Dazu hast du vergessen den Namen abzufragen, das Script bekommt den namen ja nirgends her :)
    
    
    Das geht dann mit GetPlayerName
  • Okay. Dann danke dir erstmal für den Fortschritt. Ich bin am überlegen wie ich nun die Cars lade. Am besten erstmal nur Gute Tipps geben damit ich es selbstständig probieren kann.




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


    so habe ich es bisher aufgebaut

  • Meinst du dies hier ?



    public OnPlayerConnect(playerid)
    {
    PlayerInfo[playerid][p_id] = 0;
    PlayerInfo[playerid][pLoggedIn] = false;
    PlayerInfo[playerid][pLevel] = 0;
    PlayerInfo[playerid][pMoney] = 0;
    PlayerInfo[playerid][pKills] = 0;
    PlayerInfo[playerid][pDeaths] = 0;
    GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
    return 1;
    }


    Das Autohaus verwende ich als Filterscript.


    Der Code teil kommt aus dem Register & Login System was als Gamemode eingesetzt wird.

  • Im Hauptgamemode. Das Login & Register System stammt von @Jeffry




    /*============================================================================================================================*
    * Credits: Dieser Filterscript "Register-Login-System" wurde von Jeffry gemacht! *
    * *
    * *
    * Made in August 2015. *
    * *
    * Rechte des Benutzers: *
    * *
    * -Es ist erlaubt diesen Filterscript zu modifizieren, solange keine Credits entfernt werden. *
    * -Es ist erlaubt diesen Filterscript neu zu veröffentlichen, solange keine Credits entfernt werden. *
    * *
    * -Es ist nicht erlaubt dies als sein eigenes Werk darzustellen oder zu verkaufen. *
    * -Es ist nicht erlaubt Credits zu entfernen. *
    * *
    * Danke. *
    * Viel Spaß damit! :) *
    * *
    *=============================================================================================================================*/
    #include <a_samp>
    #include <a_mysql>
    #include <ocmd>
    #include <sscanf>



    #define MYSQL_HOST "127.0.0.1" //IP Adresse des MySQL Servers
    #define MYSQL_USER "root" //Benutzername der angemeldet wird
    #define MYSQL_PASS "" //Passwort des Benutzers
    #define MYSQL_DBSE "samp_db" //Name der Datenbank



    #define COLOR_RED 0xAA3333AA
    new handle; //Die Connection-Handle, über die wir später auf die Tabellen der Datenbank zugreifen



    //Dialog IDs (gegebenenfalls ändern, falls bereits belegt)
    #define DIALOG_REGISTER 1403
    #define DIALOG_LOGIN 2401



    enum pDataEnum
    {
    p_id,
    bool:pLoggedIn,
    pName[MAX_PLAYER_NAME],
    pLevel,
    pMoney,
    pKills,
    pDeaths,
    adminlevel
    }
    new PlayerInfo[MAX_PLAYERS][pDataEnum];



    main()
    {
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
    }




    public OnGameModeInit()
    {
    // Don't use these lines if it's a filterscript
    SetGameModeText("Blank Script");
    MySQL_SetupConnection();
    return 1;
    }



    public OnGameModeExit()
    {
    mysql_close(handle);
    return 1;
    }



    public OnPlayerRequestClass(playerid)
    {
    //Wenn der Spieler die Class-Selection betritt prüfe, ob er bereits eingeloggt ist
    if(!PlayerInfo[playerid][pLoggedIn])
    {
    //Wenn nicht, dann prüfe ob der Spieler ein Konto hat
    //Dazu wird ein Query gesendet und ein neues Callback aufgerufen
    //%e steht für einen geprüften String (sollte anstatt %s in Queries verwendet werden)
    new query[128];
    mysql_format(handle, query, sizeof(query), "SELECT id FROM users WHERE name = '%e'", PlayerInfo[playerid][pName]);



    //Das Query wird abgesendet und die playerid an OnUserCheck übergeben
    mysql_pquery(handle, query, "OnUserCheck", "d", playerid);
    }
    return 1;
    }



    public OnPlayerConnect(playerid)
    {
    PlayerInfo[playerid][p_id] = 0;
    PlayerInfo[playerid][pLoggedIn] = false;
    PlayerInfo[playerid][pLevel] = 0;
    PlayerInfo[playerid][pMoney] = 0;
    PlayerInfo[playerid][pKills] = 0;
    PlayerInfo[playerid][pDeaths] = 0;
    GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
    return 1;
    }



    public OnPlayerDisconnect(playerid, reason)
    {
    //Speichere den Spieler wenn er der Server verlässt
    SaveUserStats(playerid);
    return 1;
    }




    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_REGISTER)
    {
    //Spieler hat Abbrechen gewählt
    if(!response) return Kick(playerid);



    //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");



    //Wenn alles passt wird der Spieler in der Datenbank angelegt
    //Als Verschlüsselung für das Passwort wird MD5 verwendet
    new query[256];
    mysql_format(handle, query, sizeof(query), "INSERT INTO users (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext);



    //Das Query wird abgesendet und die playerid an OnUserRegister übergeben
    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    return 1;
    }
    if(dialogid == DIALOG_LOGIN)
    {
    //Spieler hat Abbrechen gewählt
    if(!response) return Kick(playerid);



    //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");



    //Wenn alles passt wird die Datenbank ausgelesen
    new query[256];
    mysql_format(handle, query, sizeof(query), "SELECT * FROM users WHERE name = '%e' AND password = MD5('%e')", PlayerInfo[playerid][pName], inputtext);



    //Das Query wird abgesendet und die playerid an OnUserLogin übergeben
    mysql_pquery(handle, query, "OnUserLogin", "d", playerid);
    return 1;
    }
    return 0;
    }



    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    return 1;
    }



    forward OnUserCheck(playerid);
    public OnUserCheck(playerid)
    {
    //Query wurde ausgeführt und das Ergebnis im Cache gespeichert
    if(cache_get_row_count() == 0)
    {
    //Der Spieler konnte nicht gefunden werden, er muss sich registrieren
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:", "Ok", "Abbrechen");
    }
    else
    {
    //Es existiert ein Ergebnis, das heißt der Spieler ist registriert und muss sich einloggen
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:", "Ok", "Abbrechen");
    }
    return 1;
    }



    forward OnUserRegister(playerid);
    public OnUserRegister(playerid)
    {
    //Der Spieler wurde in die Datenbank eingetragen, es wird die id ausgelesen
    PlayerInfo[playerid][p_id] = cache_insert_id();
    SendClientMessage(playerid, 0x00FF00FF, "[Konto] Registration erfolgreich.");
    return 1;
    }



    forward OnUserLogin(playerid);
    public OnUserLogin(playerid)
    {
    //Query wurde ausgeführt und das Ergebnis im Cache gespeichert
    if(cache_get_row_count() == 0)
    {
    //Der Spieler hat ein falsches Passwort eingegeben
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Falsches Passwort!", "Ok", "Abbrechen");
    }
    else
    {
    //Es existiert ein Ergebnis, das heißt der Spieler hat das richtige Passwort eingegeben
    //Wir lesen nun die erste Zeile des Caches aus (ID 0)
    PlayerInfo[playerid][p_id] = cache_get_field_content_int(0, "id", handle);
    PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0, "level", handle);
    PlayerInfo[playerid][pMoney] = cache_get_field_content_int(0, "money", handle);
    PlayerInfo[playerid][pKills] = cache_get_field_content_int(0, "kills", handle);
    PlayerInfo[playerid][pDeaths] = cache_get_field_content_int(0, "deaths", handle);
    PlayerInfo[playerid][pLoggedIn] = true;
    SendClientMessage(playerid, 0x00FF00FF, "[Konto] Eingeloggt.");
    GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
    }
    return 1;
    }



    stock SaveUserStats(playerid)
    {
    //Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht
    if(!PlayerInfo[playerid][pLoggedIn]) return 1;



    //Ansonsten speichere sie
    new query[256];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', kills = '%d', deaths = '%d' WHERE id = '%d'",
    PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][p_id]);



    //Das Query wird abgesendet
    mysql_pquery(handle, query);
    return 1;
    }



    stock MySQL_SetupConnection(ttl = 3)
    {
    print("[MySQL] Verbindungsaufbau...");
    //mysql_log(LOG_ALL); //<- Kommentar vor mysql_log entfernen um den MySQL Debug-Modus zu aktivieren



    handle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DBSE, MYSQL_PASS);



    //Prüfen und gegebenenfalls wiederholen
    if(mysql_errno(handle) != 0)
    {
    //Fehler im Verbindungsaufbau, prüfe ob ein weiterer Versuch gestartet werden soll
    if(ttl > 1)
    {
    //Versuche erneut eine Verbindung aufzubauen
    print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
    printf("[MySQL] Starte neuen Verbindungsversuch (TTL: %d).", ttl-1);
    return MySQL_SetupConnection(ttl-1);
    }
    else
    {
    //Abbrechen und Server schließen
    print("[MySQL] Es konnte keine Verbindung zur Datenbank hergestellt werden.");
    print("[MySQL] Bitte prüfen Sie die Verbindungsdaten.");
    print("[MySQL] Der Server wird heruntergefahren.");
    return SendRconCommand("exit");
    }
    }
    printf("[MySQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: %d", handle);
    return 1;
    }

  • Verrate mir danach was in der Server Log steht

  • Verrate mir danach was in der Server Log steht

    Leider nichts. Ich habe hier noch einen zweiten teil der das Fahrzeug laden soll



    loadPlayerCars(playerid)
    {
    new query[128];
    format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%s'",sInfo[playerid][pName]);
    mysql_function_query(dbhandle,query,true,"OnPlayerCarsLoad","i",playerid);
    printf("%s",cInfo[playerid][pName]);
    return 1;
    }


    Der Print gibt allerdings auch nichts aus

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen