Beiträge von Jeffry

    Das machste dann einfach so:
    DatenbankErstellen()
    {
    //HIER OBEN IST ORGINAL !
    new query[512];
    format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `players` (`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `username` varchar(30), `password` varchar(130) NOT NULL, `admin` int(10),");
    format(query, sizeof(query), "%s`member` int(10), `leader` int(10), `rank` int(10),`fraktion` int(11),`skin` int(11),`level` int(11),`money` int(10),`autoschein` int(11) NOT NULL default '0')", query);
    mysql_query(MysqlVerbindung, query, false);
    return 1;
    }


    Von den Ressourcen ist es optimal.

    Nein.


    stock PayDay(playerid)
    {
    new string[128];
    Spieler[playerid][pPayDay] ++;
    if(Spieler[playerid][pPayDay] >= 3600)
    {
    new Lohn;
    new steuerGeld;
    new fraktGehalt;
    Spieler[playerid][pPayDay] = 1;
    //==== H I E R ====== !!!!
    Spieler[playerid][pLevel] ++;
    //==== H I E R ====== !!!!
    switch(Spieler[playerid][pFraktion])
    {

    Deshalb hast du ja nachzählen sollen...


    Schreibe es so:
    format(query,sizeof query,"`pFrakSperre`='%d',`pBoxMats`='%d',`pBoxDrugs`='%d',`pban`='%d',`pTot`='%d',`pFarmTime`='%d',`pGDeaths`='%d',`pGKills`='%d',`pMeldung`='%d' WHERE `name`='%s'",
    PlayerInfo[playerid][pFrakSperre],PlayerInfo[playerid][pBoxMats],PlayerInfo[playerid][pBoxDrugs],PlayerInfo[playerid][pban],PlayerInfo[playerid][pFarmTime],PlayerInfo[playerid][pTot],PlayerInfo[playerid][pGDeaths],PlayerInfo[playerid][pGKills],PlayerInfo[playerid][pMeldung],pname);
    strcat(stringzusammen,query);
    strdel(query,0,sizeof(query));




    PlayerInfo[pTot][pFarmTime]
    war nicht richtig.

    Du musst die Werte in einem Query zwischen zwei (wie die auch immer heissen) ' packen.


    Nein, das wird bei Integers nicht zwingend benötigt. Schadet zwar nicht (wobei es bei Access schadet, aber egal), muss aber bei MySQL nicht zwingend vorhanden sein. Bei strings (%s) jedoch muss es dran sein.

    @Azcaq: Da fehlt trotzdem die WHERE Anweisung.


    Schreibe es so:
    SpielerdatenUpdate(playerid)
    {
    if(SpielerInfo[playerid][Spielereingeloggt] == false) return 0;
    SpielerInfo[playerid][Level] = GetPlayerScore(playerid);


    new query[512];
    mysql_format(MysqlVerbindung, query, sizeof(query), "UPDATE `players` SET `money` = '%d',`admin` = '%d',`member` = '%d',`leader` = '%d',`rank` = '%d',`fraktion` = '%d',`skin` = '%d',`level` = '%d',",
    SpielerInfo[playerid][Money],SpielerInfo[playerid][Admin],SpielerInfo[playerid][Member],SpielerInfo[playerid][Leader],SpielerInfo[playerid][Rank],SpielerInfo[playerid][Fraktion],SpielerInfo[playerid][Skin],SpielerInfo[playerid][Level]);


    mysql_format(MysqlVerbindung, query, sizeof(query), "%s`autoschein`='%d' WHERE `id` = '%d' LIMIT 1", query,
    SpielerInfo[playerid][Autoschein],SpielerInfo[playerid][ID]);
    mysql_tquery(MysqlVerbindung, query, "", "");
    return 1;
    }

    Unter die Includes:
    new befehlSperre[MAX_PLAYERS];


    Im Befehl:
    if(befehlSperre[playerid] > gettime()) return SendClientMessage(playerid, 0xFF0000FF, "Du kannst den Befehl noch nicht verwenden.");
    befehlSperre[playerid] = gettime() + (60*MINUTEN_DIE_ER_GESPERRT_SEIN_SOLL);


    Anstatt des Arrays könntest du auch PVars nutzen.


    Andernfalls, aber das ist die weniger schöne Variante, wäre es mit Timern (http://wiki.sa-mp.com/wiki/SetTimerEx) zu arbeiten.

    Du hast ja nur eine Zeile pro Spieler, also ändere:
    while(mysql_fetch_row_format(string,"|"))
    zu:
    mysql_fetch_row_format(string,"|");


    oder füge nach mysql_free_result(); ein return 1; ein.



    Bei SavePlayer einfach das mysql_free_result(); weg machen, da du kein result gespeichert hast (mysql_store_result wird ja in SavePlayer nicht aufgerufen).