Hilfe beim Umstieg auf 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
  • Hallo Breadfish Community.


    Ich arbeite derzeit an einem Selfmade Roleplay Script. Bisher basiert lediglich alles auf DINI, da ich noch nicht wirklich mit großen Systemen begonnen habe.
    Was ich bisher habe.

    • Registersystem
    • Loginsystem
    • Adminsystem
    • Accountsystem

    So jetzt würde ich gerne auf MySQL umsteigen, da ich gehört habe es wäre besser für Haussystem, Bizsystem und so weiter. Da ich mich mit MySQL noch nicht befasst habe und somit 0 Ahnung davon habe, habe ich mir hier das MySQL System von maddin angeschaut und nachgemacht. MySQL (Installation, Zugriff, Einstellungen, Login & Register Beispiel). Habe es auch so hinbekommen dass die Accounts erstellen werden, Einloggen etc klapp alles. So habe jetzt nun einige Admin Befehle erstellt um das Auslesen zu testen und genau da haperts.



    Hier der Befehl zum Geld geben:


    ocmd:givemoney(playerid,params[]){ if(!isPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,GRAU,"Keine Rechte"); new pID,betrag,string[128]; if(sscanf(params,"ui",pID,betrag)) return SendClientMessage(playerid,GRAU,"/givemoney pid betrag"); GivePlayerMoney(pID,betrag); SpielerInfo[playerid][pGeld]+=betrag; format(string,sizeof(string),"Geld gegeben %iGetPlayerTeam(GetPlayerTeam(GetPlayerTeam(GetPlayerTeam(GetPlayerTeam(",betrag); SavePlayer(pID); return 1;
    }
    (sry ich weiß nicht wieso das in einer Wurscht geschrieben wird -.-)


    Hier mal das Enum SpielerInfo


    enum SpielerDaten{ pName[MAX_PLAYER_NAME], pLevel, pGeld, pKills, pTode, Float:pHealth, pAdminlevel}new SpielerInfo[MAX_PLAYERS][SpielerDaten];


    Die Stocks beim Speichern und Laden sind so wie im TuT



    Ich hoffe da kann mir wer weiterhelfen.
    Grüße,
    Makaveli

  • Wenn Du die Befehle mal ordentlich untereinander uns zeigen würdest, könnten wir Dir viel einfacher helfen. ;)

    Wie ich schon oben geschrieben habe, kommt es immer so raus :rolleyes:


    ocmd:givemoney(playerid,params[]){ if(!isPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,GRAU,"Keine Rechte"); new pID,betrag,string[128]; if(sscanf(params,"ui",pID,betrag)) return SendClientMessage(playerid,GRAU,"/givemoney pid betrag"); GivePlayerMoney(pID,betrag); SpielerInfo[playerid][pGeld]+=betrag; format(string,sizeof(string),"Geld gegeben %i",betrag);SavePlayer(pID); return 1;
    }


    PlaxX weiß ich auch gerade nicht 8|
    jetzt ists richtig, aber trotzdem unformatiert -.-


  • ocmd:givemoney(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,GRAU,"Keine Rechte");
    new pID,betrag,string[128];
    if(sscanf(params,"ui",pID,betrag)) return SendClientMessage(playerid,GRAU,"/givemoney pid betrag");
    GivePlayerMoney(pID,betrag);
    SpielerInfo[pID][pGeld]+=betrag;
    format(string,sizeof(string),"Admin %s hat dir %d$ gegeben",SpielerName(playerid),betrag);
    SendClientMessage(pID,farbe,string);
    SavePlayer(pID);
    return 1;
    }

  • Ich hatte das Problem auch mal weil ich den Code aus dem Windows Editor kopiert habe, öffne mal Pawn erstelle ein neues Script kopiere den Code in Pawn und dann kopierst Du ihn von Pawn wieder hier rein. (Wenn er nicht schon von Pawn kommt)


    Ansonsten wenn Du IE benutzt versuch's ma' mit Firefox oder Chrome.


    Weil so wie die Befehle sind kann man die echt richtig beschi**en lesen. :whistling:

  • zeig mal wo du das geld lädst
    //e


    mach das zu loadplayer

    GivePlayerMoney(playerid,mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]));


    und das zu saveplayer

    mysql_SetInt("accounts", "Geld",GetPlayerMoney(playerid), "Name", SpielerInfo[playerid][pName]);


  • So bin nun auf Firefox, vielleicht ist es jetzt besser.


    Hier wird er geladen:


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    }
    return 1;
    }


    Hier wird er gespeichert:


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }