Pilonen Problem

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
  • Hey,


    Ich habe versucht das Cops Strassenpilonen für Kontrollen aufbauen können, doch jetzt habe ich beim Löschen ein Problem, ich kann immer nur den zuletzt aufgebauten wieder entfernen.


    Wie muss ich das ändern damit ich alle wieder wegmachen kann ?


    if(strcmp(cmdtext, "/pilon", true)==0)
    {
    if(IsACop(playerid) || IsAZoll(playerid))
    {
    if(PlayerInfo[playerid][pRank] >= 4)
    {
    new Float:X, Float:Y, Float:Z, Float:A;
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, A);
    Pilon[playerid] = CreateObject(1238, X, Y, Z, 0.0, 0.0, A+180);
    SetPlayerPos(playerid, X, Y, Z+4);
    PlayerPilon[playerid] += 1;
    SendClientMessage(playerid, COLOR_GREEN, "Strassenpilon erfolgreich platziert");
    return 1;

    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du brauchst Rang 4!");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht befugt!");
    }
    }
    if(strcmp(cmdtext, "/dpilon", true)==0)
    {
    if(IsACop(playerid) || IsAZoll(playerid))
    {
    if (PlayerPilon[playerid] == 0) return SendClientMessage(playerid, COLOR_RED,"Du hast keinen Pilonen aufgestellt!");
    DestroyObject(Pilon[playerid]);
    PlayerPilon[playerid] -= 1;
    SendClientMessage(playerid, COLOR_GREEN, "Pilon erfolgreich abgebaut");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht befugt!");
    }
    }

  • Am leichtesten löst du es wie immer mit Schleifen, da Pawn ja keine List/ Dictonary funktion bietet ^^


    Also, erstmal erstellst du eine Var zB PilonCreatedBy[MAX_OBJECTS]; (standardwert -1) (achtung wenn du ein Streamer benutzt daran anpassen) aber denke eher nicht ...



    Dann beim erstellen


    new id = CreateObject(1238, X, Y, Z, 0.0, 0.0, A+180); // Object ID in der var id zwischenspeichern


    Dann noch zuweißen
    PilonCreatedBy[id] = playerid; // Den Object die Playerid zu weißen


    Schleife bei deinen Entfern Command:


    for(new o; o < MAX_OBJECTS; o++) {
    if(PilonCreatedBy[o] == playerid) { // Wenn Object, Var angebene id -> playerid dann löschen
    DestroyObject(o); // Löschen
    PilonCreatedBy[o]=-1; // Freigebne
    }
    }


    //E: Oder du machst ne array, was aber die möglichkeit nimmt soviel zu erstellen wie du gerade lust hast ^^

  • for(new o; o < MAX_OBJECTS; o++) {
    if(PilonCreatedBy[o] == playerid) { // Wenn Object, Var angebene id -> playerid dann löschen
    DestroyObject(o); // Löschen
    PilonCreatedBy[o]=-1; // Freigebne
    }
    }
    Oh wunder was könnte da nur falsch sein....


    Pilon[playerid][0] = CreateObject(1238, X, Y, Z, 0.0, 0.0, A+180); <-- kleiner Denkanstos ;]


    Gruss: Sonic

    I didn't hit you. I high fived your face.