Level System

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
  • public pimer(playerid)
    {
    pPlaytime[playerid]++; // ++ ist wie +1 also wird es alle 60000 milliskunden um 1 erhöht soll die Spielzeit sein
    if(pSincePayday[playerid] >= 60) // wenn Zeitseitpayday 60 oder über 6o ist wird das in der Klammer ausgelöst
    {
    pSincePayday[playerid] = 0; // ZeitseitPayday wird wieder auf 0 gesetzt da er den Payday hatte.
    GivePlayerMoneyEx(playerid, 2000); // der ID "Playerid" werden 2000$ gegeben
    SendClientMessage(playerid,GRÜN,"PAYDAY");
    }
    else
    {
    pSincePayday[playerid]++; // ZEit seit Payday wird um 1 erhöht
    }
    return 1;
    }


    Das ist nun mein Paypday Public, Timer etc. funktioniert.
    Mein Script ist auf MYSQL, wie speichere ich jetzt die Spielzeit &'die Zeit seit Payday? :-/
    Spalten in der User Tabelle sind angelegt


    SpielerInfo[playerid][pSpielzeit]
    SpielerInfo[playerid][pSeitPayday]



    Ich habe keine Ahnung, wie ich das Speichern soll :(


    // Das PayD Sys. an Sich, ist ja fertig, es geht nur darum, das die Zeit gespeichert werden soll. Damit man nicht nochma ne std spielen muss wenn man bei 35min sich ausloggt.

    2 Mal editiert, zuletzt von DominiK... ()

  • Wieso benutzt du pSincePayday?


    public pimer(playerid)
    {
    pPlaytime[playerid]++; // ++ ist wie +1 also wird es alle 60000 milliskunden um 1 erhöht soll die Spielzeit sein
    if(pPlaytime[playerid] == 60) // Wenn playtime = 60 Min ist
    {
    pPlaytime[playerid] = 0; // ZeitseitPayday wird wieder auf 0 gesetzt da er den Payday hatte.
    GivePlayerMoneyEx(playerid, 2000); // der ID "Playerid" werden 2000$ gegeben
    SendClientMessage(playerid,GRÜN,"PAYDAY");
    }
    return 1;
    }

  • pPlaytime[playerid] ist eine Variable, die jede Minute erhöht wird.


    Nachdem die Variable erhöht wurde und == 60 ist, bekommt der Spieler den PayDay und die Variable wird wieder auf 0 gesetzt.


    Oder willst du dass pPlaytime einfach nur die Spielzeit in Minuten speichert?



    ---


    Zu deinem MySQL Problem:


    Hast du bereits irgendwelche Stocks definiert wie mysql_SetInt o.ä.?



    stock mysql_GetInt(Table[], Field[], Where[], Is[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    new sqlint = mysql_fetch_int();
    mysql_free_result();
    return sqlint;
    }



    stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }



    public OnPlayerDisconnect(playerid, reason)
    {
    mysql_SetInt("accounts","Spielzeit", SpielerInfo[playerid][pSpielzeit], "Name", SpielerName(playerid));
    mysql_SetInt("accounts","pSeitPayday", SpielerInfo[playerid][pSeitPayday], "Name", SpielerName(playerid));
    }



    public OnPlayerConnect(playerid)
    {
    SpielerInfo[playerid][pSpielzeit] = mysql_GetInt("accounts","Spielzeit", "Name", SpielerName(playerid));
    SpielerInfo[playerid][pSeitPayday] = mysql_GetInt("accounts","pSeitPayday", "Name", SpielerName(playerid));

    }


    Die Tabellennamen "accounts" musst du natürlich auf deinen Tabellennamen abändern.