MySQL - Script Fehler

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
  • Hallo liebe Community,


    ich wollte mal so ein Einsteiger "Tutorial" Scripten, dort werden paar Fragen gestellt und Informationen gespeichert.
    Aber wenn ich dann zB. bei der Frage "Was ist ihr Geschlecht" Männlich angebe, wird nichts einfach nur ein leeres Zeichen in der DatenBank gespeichert.
    Also das Script speichert das immer in die MySQL ID 0 rein. Nach einem Relog funktioniert aber alles normal. Falls ihr mehr Codes braucht bitte bescheid sagen. Ich bedanke mich für jede Hilfe herzlich!
    enum PlayerInfo{
    eingeloggt,
    pLevel,
    db_id,
    pMoney,
    pAdmin,
    pFraktion,
    pRang,
    pSpawn,
    pGeschlecht,
    pBank,
    pTutmode,
    pAlter
    }


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


    AntiDeAMX();


    SetGameModeText("SA Roleplay 0.0.1");//Version
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 170, 0, 0, 0, 0, 0, 0);


    DisableInteriorEnterExits();
    EnableStuntBonusForAll(0);
    ManualVehicleEngineAndLights();
    EnableM_Bot();
    }
    return 1;
    }


    public OnPlayerConnect(playerid)
    {


    //Login/Register
    new name[MAX_PLAYER_NAME],query[128];
    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);


    SetPlayerColor(playerid, Weiß);
    return 1;
    }


    savePlayer(playerid)
    {
    // if(pInfo[playerid][eingeloggt] == 0)return 1;
    // Speichern; level,money,admin,fraktion,rang,spawn,geschlecht,bank,tutmode,alter
    //Login/Register
    new name[MAX_PLAYER_NAME],queryt[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(queryt,sizeof(queryt),"SELECT id FROM user WHERE username='%s'",name);
    mysql_function_query(dbhandle,queryt,true,"OnUserCheck","i",playerid);
    new query[2048];
    format(query,sizeof(query),"UPDATE user SET pLevel='%i',pMoney='%i',pAdmin='%i',pFraktion='%i',pRang='%i',pSpawn='%i',pGeschlecht='%i',pBank='%i',pTutmode='%i',pAlter='%i' WHERE id='%i'",pInfo[playerid][pLevel],
    GetPlayerMoney(playerid),pInfo[playerid][pAdmin],pInfo[playerid][pFraktion],pInfo[playerid][pRang],pInfo[playerid][pSpawn],pInfo[playerid][pGeschlecht],pInfo[playerid][pBank],pInfo[playerid][pTutmode],pInfo[playerid][pAlter],pInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }


    if(dialogid==DIALOG_LOGIN) //Login/4
    {
    if(response)
    {
    new pName[MAX_PLAYER_NAME],query[128],passwort[35],string1[380];
    GetPlayerName(playerid,pName,sizeof(pName));
    if(strlen(inputtext)>0)
    {
    mysql_real_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND password=MD5('%s')",pName,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    else
    {
    //Keine Eingabe
    format(string1,sizeof(string1),"{FAFAFA}Hallo {FFFA00}%s{FAFAFA},\n\nwillkommen auf dem {FFFA00}San Andreas Roleplay{FAFAFA} Server.\nDu hast dir bereits einen Account erstellt.\nBitte trage unten dein Passwort ein, dass du bei der Registrierung angegeben hast.",pName);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmelden",string1,"Anmelden","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    return 1;
    }
    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35],string1[256];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>3)
    {
    //Registrierungsfunktion
    mysql_real_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s',MD5('%s')) ",name,passwort);
    mysql_function_query(dbhandle,query,false,"","");
    SendClientMessage(playerid,Gelb,"===[ WICHTIG - WICHTIG - WICHTIG ]===");
    SendClientMessage(playerid,Gelb,"[i]: ALLE ANGABEN SIND FÜR DEINEN CHARAKTER, DU MUSST NICHT DEINE ECHTEN DATEN ANGEBEN!");
    SendClientMessage(playerid,Gelb,"[i]: DU MUSST NUR DEINE ECHTEN DATEN ANGEBEN WENN ES VERLANGT WIRD!");
    //ShowPlayerDialog(playerid,DIALOG_TUT0,DIALOG_STYLE_LIST,"Bitte gib dein Geschlecht an","Männlich\nWeiblich","weiter","");
    }
    else
    {
    //Kleiner als 4 Zeichen
    SendClientMessage(playerid,Rot,"Dein Passwort muss mindestens 4 Zeichen lang sein.");
    format(string1,sizeof(string1),"{FAFAFA}Hallo {FFFA00}%s{FAFAFA},\n\nwillkommen auf dem {FFFA00}San Andreas Roleplay{FAFAFA} Server.\nDu hast dir noch keinen Account erstellt.\nBitte trage unten dein Passwort ein, dass du bei der Anmeldung benutzen möchtest.",name);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren",string1,"Registrieren","Abbrechen");
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du hast den Vorgang abgebrochen und wurdest gekickt!");
    deletePlayer(playerid);
    Kick(playerid);
    }
    return 1;
    }

  • enum PlayerInfo{
    eingeloggt,
    pLevel,
    db_id,
    pMoney,
    pAdmin,
    pFraktion,
    pRang,
    pSpawn,
    pGeschlecht,
    pBank,
    pTutmode,
    pAlter
    }
    public OnGameModeInit(){
    dbhandle = mysql_connect(db_host,db_user,db_db,db_pass);
    AntiDeAMX();
    SetGameModeText("SA Roleplay 0.0.1");
    AddPlayerClass(0,1958.3783, 1343.1572, 15.3746, 170, 0, 0, 0, 0, 0, 0);
    DisableInteriorEnterExits();
    EnableStuntBonusForAll(false);
    ManualVehicleEngineAndLights();
    EnableM_Bot();
    return 1;
    }
    public OnPlayerConnect(playerid){
    new name[MAX_PLAYER_NAME],query[128];GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    format(query,128,"SELECT `id` FROM `user` WHERE `username`='%s'",name),mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);
    SetPlayerColor(playerid,Weiß);
    return 1;
    }
    savePlayer(playerid){
    new name[MAX_PLAYER_NAME],query[500];GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    format(query,500,"UPDATE `user` SET `pLevel`=%d,`pMoney`=%d,`pAdmin`=%d,`pFraktion`=%d,`pRang`=%d,`pSpawn`=%d,`pGeschlecht`=%d,`pBank`=%d,`pTutMode`=%d,`pAlter`=%d WHERE `username`='%s'",GetPlayerScore(playerid),GetPlayerMoney(playerid),
    pInfo[playerid][pAdmin],Info[playerid][pFraktion],pInfo[playerid][pRang],pInfo[playerid][pSpawn],pInfo[playerid][pGeschlecht],pInfo[playerid][pBank],pInfo[playerid][pTutmode],pInfo[playerid][pAlter],name);
    return mysql_function_query(dbhandle,query,false,"","");
    }
    if(dialogid==DIALOG_LOGIN){
    if(!response)return Kick(playerid)
    new name[MAX_PLAYER_NAME],string[350],pass[35];GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    if(response && !strlen(inputtext))return format(string,350,"{FAFAFA}Hallo {FFFA00}%s{FAFAFA},\n\nwillkommen auf dem {FFFA00}San Andreas Roleplay{FAFAFA} Server.\nDu hast dir bereits einen Account erstellt.\nBitte trage unten dein Passwort ein, dass du bei der Registrierung angegeben hast.",name),ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmelden",string,"Anmelden","Abbrechen");
    return mysql_real_escape_string(inputtext,pass,dbhandle),format(string,350,"SELECT * FROM `user` WHERE `username`='%s' AND `password`=MD5('%s')",name,pass),mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    else if(dialogid==DIALOG_REGISTER){
    if(!response)return SendClientMessage(playerid,Rot,"Du hast den Vorgang abgebrochen und wurdest gekickt!"),deletePlayer(playerid),Kick(playerid);
    new name[MAX_PLAYER_NAME],string[260],pass[35];GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    if(response) && strlen(inputtext)<4)return SendClientMessage(playerid,Rot,"Dein Passwort muss mindestens 4 Zeichen lang sein!"),format(string,260,"{FAFAFA}Hallo {FFFA00}%s{FAFAFA},\n\nwillkommen auf dem {FFFA00}San Andreas Roleplay{FAFAFA} Server.\nDu hast dir noch keinen Account erstellt.\nBitte trage unten dein Passwort ein, dass du bei der Anmeldung benutzen möchtest.",name),ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren",string,"Registrieren","Abbrechen");
    mysql_real_escape_string(inputtext,pass,dbhandle);
    format(string,260,"INSERT INTO `user` (username,password) VALUES ('%s',MD5('%s'))",name,pass),mysql_function_query(dbhandle,query,false,"","");
    SendClientMessage(playerid,Gelb,"===[ WICHTIG - WICHTIG - WICHTIG ]==="),SendClientMessage(playerid,Gelb,"[i]: ALLE ANGABEN SIND FÜR DEINEN CHARAKTER, DU MUSST NICHT DEINE ECHTEN DATEN ANGEBEN!"),SendClientMessage(playerid,Gelb,"[i]: DU MUSST NUR DEINE ECHTEN DATEN ANGEBEN WENN ES VERLANGT WIRD!");
    return ShowPlayerDialog(playerid,DIALOG_TUT0,DIALOG_STYLE_LIST,"BItte gib dein Geschlecht an","Männlich\nWeiblich","Weiter","");
    }
    Teste das mal mit dem "username" bei savePlayer.


    Um zu gucken wie du das Geschlecht in die Datenbank eintragen lässt, musst du uns den Code dazu auch noch eben schicken ;)

  • @[NGD]Manne: habe ich gemacht, also username statt ID doch funktioniert immer noch nicht. Ist sogar komplett falsch. Wenn man ID macht wird ja alles richtig gespeichert, nur halt immer in die 1, wenn man sich grade Registriert.
    Hier ist der Code: (Logs unten runterladen)
    if(listitem==0)
    {
    pInfo[playerid][pGeschlecht]=1;
    SendClientMessage(playerid,Grau,"");
    SendClientMessage(playerid,Gelb,"Du bist also Männlich");
    ShowPlayerDialog(playerid,DIALOG_TUT1,DIALOG_STYLE_INPUT,"Bitte gib unten dein Alter ein","Bitte schreib unten rein, wie alt du bist","weiter","");
    }