Problem mit Perso Speichern Mysql

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
  • Hi habe ein Selfmade Script das die Mysql Datenbank selbst erstellt undzwar habe ich jetz dazu gescriptet das man einen Perso kaufen kann
    das Problem ist er erstellt die Perso mysql datei nicht muss man den account erst löschen oder gibts da ne andere lösung


    Hier mal mein Code:


    stock MySQLCreateTables()
    {
    mysql_connect(SQL_Host, SQL_User, SQL_Pass, SQL_DatB);
    new sql[1024];
    format(sql,sizeof(sql),"CREATE TABLE IF NOT EXISTS `player` (`id` int(11) AUTO_INCREMENT, `Name` varchar(255), `Passwort` varchar(255), `Adminlevel` int(11), `Geld` int(11), `Bank` int(11),");
    format(sql,sizeof(sql),"%s`Baned` int(11), `Car` int(11), `Bike` int(11), `Lkw` int(11), `Boot` int(11),",sql);
    format(sql,sizeof(sql),"%s`Fly` int(11), `Heli` int(11), `Warn` int(11), `Level` int(11), `Payday` int(11), `Radio` int(11), `Skin` int(11), `Leader` int(11), `Member` int(11), `Rank` int(11), `Monate` int(11),`Perso` int(11)",sql);
    format(sql,sizeof(sql),"%s `Wanted` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;",sql);
    mysql_query(sql);
    }


    dcmd_perso(playerid,params[])
    {
    #pragma unused params
    if(IsPlayerConnected(playerid))
    {
    if(IsPlayerInRangeOfPoint(playerid,2,358.8689,163.1254,1008.3828))
    {
    if(SpielerInfo[playerid][pPerso] == 1)
    {
    SendClientMessage(playerid, cWhite, "Du hast bereits einen Personalsausweis!");
    return 1;
    }
    ShowPlayerDialog(playerid,DIALOG_PERSOKAUFEN,DIALOG_STYLE_MSGBOX,"{0055FF}Rathaus","{FAFAFA}Willkommen im Rathaus.\nMöchten sie sich einen Personalausweis kaufen?\n\nPreis: 50,00€","Kaufen","Beenden");
    }
    else
    {
    SendClientMessage(playerid, cWhite, "Du musst im Rathaus sein!");
    }
    }
    return 1;
    }


    if(dialogid == DIALOG_PERSOKAUFEN)
    {
    new pID;
    if(response==0)
    {
    SendClientMessage(playerid,cWhite,"Du möchtest dir also kein Perso kaufen!");
    }
    if(response==1)
    {
    if(SpielerInfo[playerid][pPerso] == 1)
    {
    SendClientMessage(playerid, cWhite, "Du hast bereits einen Personalsausweis!");
    return 1;
    }
    if(GetPlayerMoney(playerid) < 50)
    {
    SendClientMessage(playerid, cWhite, "Du hast nicht genug Geld [50,00€].");
    return 1;
    }
    GivePlayerMoney(playerid,-50);
    SpielerInfo[playerid][pPerso] = 1;
    SendClientMessage(playerid,cWhite,"{FEFEFE}Du hast dir für {FF1E00}-50,00€{FEFEFE} Einen Perso gekauft!");
    SendClientMessage(playerid,cWhite,"Mit /Persozeigen kannst du deinen Perso ein anderen User zeigen!");
    SpielerSpeichern(pID);
    }
    }

  • den Perso habe ich hier eigentlich auch richtig eingetragen weis echt nicht wo der Fehler ist die Mysql Tabelle erstellt er ja alleine wie oben schon zu sehen bei meinem Code
    aber jetz habe ich nur perso dazu gemacht irgendwo ist ein Fehler :O ?(


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    mysql_SetInt(playerid,"Level",SpielerInfo[playerid][pAdmin]);
    mysql_SetInt(playerid,"Geld",GetPlayerMoney(playerid));
    mysql_SetInt(playerid,"Adminlevel",SpielerInfo[playerid][pAdmin]);
    mysql_SetInt(playerid,"Perso",SpielerInfo[playerid][pPerso]);
    mysql_SetInt(playerid,"Warn",SpielerInfo[playerid][pWarn]);
    mysql_SetInt(playerid,"Baned",SpielerInfo[playerid][pBaned]);
    mysql_SetInt(playerid,"Bank",SpielerInfo[playerid][pBank]);
    mysql_SetInt(playerid,"Job",SpielerInfo[playerid][pJob]);
    mysql_SetInt(playerid,"Car",SpielerInfo[playerid][pCar]);
    mysql_SetInt(playerid,"Bike",SpielerInfo[playerid][pBike]);
    mysql_SetInt(playerid,"Lkw",SpielerInfo[playerid][pLkw]);
    mysql_SetInt(playerid,"Boot",SpielerInfo[playerid][pBoot]);
    mysql_SetInt(playerid,"Fly",SpielerInfo[playerid][pFly]);
    mysql_SetInt(playerid,"Heli",SpielerInfo[playerid][pHeli]);
    mysql_SetInt(playerid,"Skin",GetPlayerSkin(playerid));
    mysql_SetInt(playerid,"Leader",SpielerInfo[playerid][pLeader]);
    mysql_SetInt(playerid,"Member",SpielerInfo[playerid][pMember]);
    mysql_SetInt(playerid,"Rank",SpielerInfo[playerid][pRank]);
    mysql_SetInt(playerid,"Payday",SpielerInfo[playerid][pPayday]);
    mysql_SetInt(playerid,"Monate",SpielerInfo[playerid][pMonate]);
    mysql_SetInt(playerid,"Ticket",SpielerInfo[playerid][pTicket]);
    mysql_SetInt(playerid,"Nummer",SpielerInfo[playerid][pNummer]);
    mysql_SetInt(playerid,"Vertrag",SpielerInfo[playerid][pVertrag]);
    mysql_SetInt(playerid,"Wanted",GetPlayerWantedLevel(playerid));
    }
    return 1;
    }

  • Diese Zeile unter public OnGameModeInit(...).
    mysql_debug(1);


    Es wird im Heimverzeichnis (wo auch die samp-server.exe liegt) eine neue Datei mit dem Namen "mysql_log" angelegt. Den Inhalt dieser Textdatei benötigen wir. Stelle doch aber auch bitte sicher, dass der Spieler während er den Perso kauft die Variable "loggedin" auch entsprechend gesetzt bekommen hat.


    Mit freundlichem Gruß

  • Habe den Fehler gefunden ich habe die Mysql Tabelle nochmal gelöscht und dann den Server neugestartet dann hat er es wieder angelegt beziehungsweise selbst erstellt die Mysql Datenbank mit Perso mysql Datei aber ist ja blöd wen ich jedes mal die Mysql datenbank löschen muss wen ich etwas hinzufüge kennt da jemand ne Lösung wäre nett :):thumbup:

  • Wen du schon so auf Professor machst kannst du doch sicherlich helfen ?


    Hmm der Professor sagt dir nur, dass du richtig gucken sollst.
    Das Thema ist fett oben angepinnt und für jeden zugänglich.
    Außerdem war meine Formulierung nicht angreifend oder sonst irgendetwas.


    Du solltest vielleicht mal in Betracht ziehen, dein System zu ändern.
    sql sollte nicht so genutzt werden.
    Deine Funktion sendet jedes mal einen Query an die Datenbank. Für jeden einzelnen Wert.
    Nehmen wir an du speicherst 1 Spieler ab. (~23 Querys)
    Gleichzeitig werden noch 3 andere abgespeichert.
    4*23 = 92
    Der Server wird kurz massiv laggen, wenn nicht sogar "zusammenbrechen".
    [ SCRIPTING ] Mysql - Ressourcenschonendes Login/Register System + Automatic Table|| R5 BlueG
    Solltest du dir angucken ;)


    L.G.

  • wen ich jedes mal die Mysql datenbank löschen muss wen ich etwas hinzufüge kennt da jemand ne Lösung wäre nett :):thumbup:


    Mit dem ALTER Befehl: http://dev.mysql.com/doc/refman/5.1/de/alter-table.html


    Wobei es besser ist, wenn du die Spalte manuell mit phpMyAdmin/NaviCat/... hinzufügst, als mit einem PAWN Code, da du das ja nur einmal machst, genau dann, wenn du etwas neues speichern willst.