Pickups werden nicht entfernt

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,



    ich erstelle beim aufbohren der Tür 4 Pickups, wenn man reinläuft werden sie aber nicht entfernt, wieso!? Manchmal kommen überhaupt keine Pickups...


    Pickups erstellt:


    forward BohrTimer3();
    public BohrTimer3()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInRangeOfPoint(i, 20.0, 144.8193,173.7520,484.5328))
    {
    SendClientMessage(i, COLOR_WHITE, "Der {D70000}Bohrer {F0F0F0}ist nun fertig, nehm nun die {D70000}Geldsäcke {F0F0F0}mit und bring sie zum {D70000}Checkpoint{F0F0F0}!");
    Geldsack1 = CreatePickup(1550,1,146.6232,189.8756,484.5172,-1);
    Geldsack2 = CreatePickup(1550,1,146.5961,193.8441,484.5172,-1);
    Geldsack3 = CreatePickup(1550,1,148.7592,191.6835,484.5172,-1);
    Geldsack4 = CreatePickup(1550,1,149.7564,187.4220,484.5172,-1);
    SetPlayerPos(i,146.0750,176.0113,484.5257);
    HatGeldsack[i] = 0;
    Kannaufnehmenxd[i] = 1;
    DestroyObject(Bohrer);
    }
    }
    DestroyObject(Bohrer);
    SetTimer("BankrobWiederMaken",60000*90,0);
    return 1;
    }


    Wenn man den kompletten Bankrob machen kann, werden die alten entfernt:


    forward BankrobWiederMaken();
    public BankrobWiederMaken()
    {
    DestroyPickup(Geldsack1);
    DestroyPickup(Geldsack2);
    DestroyPickup(Geldsack3);
    DestroyPickup(Geldsack4);
    BankrobZeit = 0;
    return 1;
    }


    Aufnehmen vom Spieler:


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(Kannaufnehmenxd[playerid] == 1)
    {
    if(pickupid == Geldsack1)
    {
    if(HatGeldsack[playerid] == 0)
    {
    DestroyPickup(Geldsack1);
    SetPlayerAttachedObject(playerid,3,1550,1,0.1,-0.15,0.0,0.0,90,180);
    HatGeldsack[playerid] = 1;
    Bankrobabladenxd[playerid] = 1;
    SetPlayerCheckpoint(playerid,219.5813,-227.1000,1.7786,5.0);
    Kannaufnehmenxd[playerid] = 0;
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du kannst nur einen Geldsack tragen!");
    }
    }
    if(pickupid == Geldsack2)
    {
    if(HatGeldsack[playerid] == 0)
    {
    SetPlayerAttachedObject(playerid,3,1550,1,0.1,-0.15,0.0,0.0,90,180);
    DestroyPickup(Geldsack2);
    HatGeldsack[playerid] = 1;
    Bankrobabladenxd[playerid] = 1;
    SetPlayerCheckpoint(playerid,219.5813,-227.1000,1.7786,5.0);
    Kannaufnehmenxd[playerid] = 0;
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du kannst nur einen Geldsack tragen!");
    }
    }
    if(pickupid == Geldsack3)
    {
    if(HatGeldsack[playerid] == 0)
    {
    SetPlayerAttachedObject(playerid,3,1550,1,0.1,-0.15,0.0,0.0,90,180);
    DestroyPickup(Geldsack3);
    HatGeldsack[playerid] = 1;
    Bankrobabladenxd[playerid] = 1;
    SetPlayerCheckpoint(playerid,219.5813,-227.1000,1.7786,5.0);
    Kannaufnehmenxd[playerid] = 0;
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du kannst nur einen Geldsack tragen!");
    }
    }
    if(pickupid == Geldsack4)
    {
    if(HatGeldsack[playerid] == 0)
    {
    SetPlayerAttachedObject(playerid,3,1550,1,0.1,-0.15,0.0,0.0,90,180);
    DestroyPickup(Geldsack4);
    HatGeldsack[playerid] = 1;
    Bankrobabladenxd[playerid] = 1;
    SetPlayerCheckpoint(playerid,219.5813,-227.1000,1.7786,5.0);
    Kannaufnehmenxd[playerid] = 0;
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du kannst nur einen Geldsack tragen!");
    }
    }
    }
    return 1;
    }


    Hoffe ihr könnt mir weiterhelfen


    LG

  • Also als erstes würde ich es mal so machen:
    new Geldsack1[MAX_PLAYERS]; // usw...


    Damit du auch nur für den Spieler in diese Situaltion das Pickup erstellst / löscht.


    Dass man es gar nicht löschen kann muss ich mir nochmal angucken, weil ich noch nicht so verstehe was du da so machst :D


    >L.G.
    heyho :)

  • Der 1. Fehler liegt schon bei BohrTimer3().
    Du erstellst die Pickups nur,wenn ein Spieler nahe der bestimmten Position ist. Sind aber mehrere Spieler an dieser Position, wird der alte Wert hinter den Variablen Geldsack1 ,Geldsack2,Geldsack3 und Geldsack4 überschrieben und es werden weitere Pickups erstellt.
    Heißt: Pro Spieler an der richtige Position 4 neue Pickups.
    Macht also bei 5 Spielern: 5 * 4 Pickups = 20 Pickups ( Von den Letzten 4 weisst du aber nur noch über Geldsack1-4 die IDs ).
    Wenn du du Pickups sowieso erstellen musst, wieso in der Spieler Schleife ?


    Das Problem zieht sich dann durch den Rest deines Codes.