Beiträge von Jeffry

    Ah, ich habe grade in dem Code oben das Einfügen gefunden, das hatte ich übersehen.


    Mache die Änderungen, die beiden, wieder rückgängig, und entferne in der Datenbank Struktur beim Slot das AUTO_INCREMENT.

    Ok, da fehlt die erste Zeile. Da ich nicht weiß wie du die Zeilen einfügst, ändere beim speichern
    i);
    Zu
    i+1);


    Und beim Laden
    format(string, sizeof(string),"SELECT * FROM `gangautos` WHERE `SlotID` = '%d'", i);
    Zu
    format(string, sizeof(string),"SELECT * FROM `gangautos` WHERE `SlotID` = '%d'", i+1);

    Das sieht auch korrekt aus.


    Poste bitte mal einen Screenshot von den Daten in der Datenbank, direkt nach dem ersten speichern nach dem Kaufen.
    Und einen Screenshot von der Datenbank Struktur.

    Das sieht soweit korrekt aus.
    Wie genau machst du es denn? Du kaufst zum Beispiel zwei Fahrzeuge, dann speicherst du sie. Wird dann das erste schon nicht gespeichert, oder ist das erst nach dem Server Restart so, dass das erste fehlt?
    Und fehlt das, oder verschiebt sich nur die ID?

    Dann musst du es anders machen, und zwar so:
    new hPickup[MAX_PLAYERS] = {-1,...};


    forward RespawnPickUp(playerid);
    public RespawnPickUp(playerid)
    {
    if(hPickup[playerid] != -1) DestroyPickup(hPickup[playerid]);
    hPickup[playerid] = -1;
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(hPickup[i] == pickupid)
    {
    new Float:health;
    GetPlayerHealth(playerid,health);
    DestroyPickup(hPickup[i]);
    hPickup[i] = -1;
    SetPlayerHealth(playerid, health+30);
    return 1;
    }
    }
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    //Health System
    new Float:hPos[3];
    GetPlayerPos(playerid, hPos[0], hPos[1], hPos[2]); //24
    if(hPickup[playerid] != -1) DestroyPickup(hPickup[playerid]);
    hPickup[playerid] = CreatePickup(1240, 2, hPos[0], hPos[1], hPos[2]);
    SetTimerEx("Respawnpickup", 30000, false, "d",playerid);

    Du musst bei SetTimerEx nach false ein "d" oder ein "i" angeben (Integer).
    Mache es aber besser so:

    forward RespawnPickUp(pickup);
    public RespawnPickUp(pickup)
    {
    DestroyPickup(pickup);
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    //Health System
    new Float:hPos[3];
    GetPlayerPos(playerid, hPos[0], hPos[1], hPos[2]); //24
    new pickup = CreatePickup(1240, 2, hPos[0], hPos[1], hPos[2]);
    SetTimerEx("RespawnPickup", 30000, false, "d",pickup);

    Je nach dem wie das zu verstehen ist, schätze ich mal so:
    if(dialogid == DIALOG_INVITE)
    {
    if(response) // If they clicked 'Yes' or pressed enter
    {
    if(InviteOffer[playerid] != -1)
    {
    if(IsPlayerConnected(InviteOffer[playerid]))
    {
    new ftext[20];
    new Team = InviteTeam[playerid];
    if(Team == 1) { ftext = "LV-PD"; }
    else if(Team == 2) { ftext = "Drift Access"; }
    else if(Team == 3) { ftext = "Feuerwehr"; }
    else if(Team == 4) { ftext = "Medic"; }
    else if(Team == 5) { ftext = "La Cosa Nostra"; }
    else if(Team == 6) { ftext = "Yakuza"; }
    else if(Team == 7) { ftext = "FBI"; }
    else if(Team == 8) { ftext = "Hitman Agency"; }
    else if(Team == 9) { ftext = "News Reporter"; }
    else if(Team == 10) { ftext = "Wheelman Agency"; }
    else if(Team == 11) { ftext = "Fahrschule"; }
    else if(Team == 12) { ftext = "Regierung"; }
    else if(Team == 13) { ftext = "Ordnungsamt"; }
    else if(Team == 14) { ftext = "LS-PD"; }
    else if(Team == 15) { ftext = "Biker Boys"; }
    else if(Team == 16) { ftext = "SF-PD"; }
    else if(Team == 17) { ftext = "Camorra"; }
    else if(Team == 18) { ftext = "V.L.Atztecas"; }
    else if(Team == 19) { ftext = "Grove Street"; }
    else if(Team == 20) { ftext = "Ballas"; }
    else if(Team == 21) { ftext = "West Coast Customs"; }
    else if(Team == 22) { ftext = "Triaden"; }
    else if(Team == 23) { ftext = "Red Soldiers"; }
    else if(Team == 24) { ftext = "L.S.Vagos"; }
    else if(Team == 25) { ftext = "Guerilla"; }
    else if(Team == 26) { ftext = "Cali Kartell"; }
    else { return 1; }
    GetPlayerName(InviteOffer[playerid], giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    PlayerInfo[playerid][pMember] = Team;
    PlayerInfo[playerid][pTeam] = Team;
    PlayerInfo[playerid][pRank] = 1;
    PlayerInfo[playerid][pJob] = 0;
    format(string, sizeof(string), "* %s hat deine Einladung angenommen.", sendername);
    SendClientMessage(InviteOffer[playerid], COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* Du bist nun bei der Fraktion %s Beigetretten, du hast die Einladung von %s angenommen.", ftext, giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "UPDATE `users` SET `InviteDatum`='%d' WHERE `Name`='%s'", Time(), sendername);
    self_mysql_query(string);
    Kleidungsshop[playerid] = 1;
    JoinSkinAuswahl(playerid);
    SendClientMessage(playerid, COLOR_LIGHTRED, "* Wähle einen Skin aus mit den Pfeiltasten. Bestätigen mit Umschalt.");
    InviteOffer[playerid] = -1;
    InviteTeam[playerid] = -1;
    new wielange = (InviteSperreTage*24*60*60);
    new Zeit = wielange+Time();
    PlayerInfo[playerid][pInviteSperre] += Zeit;
    SetPVarInt(playerid, "PVTeam", Team);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Niemand hat dir einen Invite Angeboten !");
    return 1;
    }
    }
    else // Pressed ESC or clicked cancel
    {
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Du hast die Einladung abgelehnt!");
    }
    return 1; // We handled a dialog, so return 1. Just like OnPlayerCommandText.
    }
    //Bleibt stehen.
    return 0;
    }