Beiträge von ToastFighter

    Du musst deinen alten Namen "oberinger" in einen String speichern.




    new NormalName[MAX_PLAYERS][26];
    new HasDeckName[MAX_PLAYERS];




    if(strcmp(cmd, "/DeckName",true)==0)
    {
    if(HasDeckName[playerid] == 0)
    {
    new nName[24];
    new dpName[26];
    GetPlayerName(playerid, dpName, 26);
    NormalName[playerid] = dpName; // Normaler Name wird gespeichert

    if(sscanf(params, "s[24]", nName)) return SendClientMessage(playerid, 0xA5FF00FF, "/Deckname [Name]");
    SetPlayerName(playerid, nName); // SpielerName wird umbenannt
    new msg[128];
    format(msg, 128, "Du hast dich in %s umbenannt!", nName);
    SendClientMessage(playerid, 0xA5FF00FF, msg);
    HasDeckName[playerid] = 1;
    }
    else
    {
    SetPlayerName(playerid, NormalName[playerid]); // Wird wieder zum Normalen Namen zurückgesetzt.
    HasDeckName[playerid] = 0;
    }
    return 1;
    }
    }


    Nicht getestet dürfte aber funktionieren.

    müsste auf den ersten Blick stimmen. :)



    War ja auch noch nicht so viel Code^^



    Toby -> Aber alleine durch das Objekt wird nun noch kein Platten erzeugt!
    Dafür brauchst du die Funktion

    new panels, doors, lights, tires;
    GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
    UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, 15);


    Die 15 am Ende von Update.. lässt alle Reifen platzen.

    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.

    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;
    }

    Das hat damit nichts zu tun.


    Das ist nur das BackPack der einzelnen Spieler.



    Würdest du jetzt Items machen wollen die rumliegen, könntest du das nach ähnlichem Prinzip machen:



    #define MAX_ITEMS 5000
    enum GI
    {
    Float:GIx,
    Float:GIy,
    Float:GIz,
    GITyp,
    GIObject
    }
    new GroundItem[MAX_ITEMS][GI];




    Befehl zum aufsammeln von Items.

    if(strcmp(cmd, "/GetItem",true)==0)
    {
    for(new i; i < MAX_ITEMS; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3, GroundItem[i][GIx], GroundItem[i][GIx], GroundItem[i][GIx]))
    {
    BackPack[playerid][GroundItem[i][GITyp]]++;
    return 1;
    }
    }
    }


    Die Methode ist aber Resourcenfressend, da die Schleife die Positionen von allen Items mit deiner Position abgleicht.