Was ist hier falsch?

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


    Ich habe hier ein code wo man eine straßensperre mit macht aber wenn ich jetzt /rb 3x mache kommen 3 straßen sperren


    wenn ich jetzt 3x /rrb mache geht beim erstenmal die letzte straßensperre weg die anderen aber nicht wiso??


    hier mein code:
    if(strcmp(cmdtext, "/rb", true)==0)
    {
    if (RoadBlock[playerid] == 3) return
    SendClientMessage(playerid, COLOR_RED," Es gibt schon eine Straßensperre!");
    if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pLeader] == 2 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 3 || PlayerInfo[playerid][pMember] == 3)
    {
    new Float:X, Float:Y, Float:Z, Float:A;
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, A);
    roadblock = CreateObject(1216, X, Y, Z, 0.0, 0.0, A+180);
    SetPlayerPos(playerid, X, Y, Z+4);
    RoadBlock[playerid] += 1;
    SendClientMessage(playerid, COLOR_GREEN, "Straßensperre hinzugefügt");
    return 1;
    }
    }
    if(strcmp(cmdtext, "/rrb", true)==0)
    {
    if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pLeader] == 2 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 3 || PlayerInfo[playerid][pMember] == 3)
    {
    if (RoadBlock[playerid] == 0) return SendClientMessage(playerid, COLOR_RED," Es gibt keine Straßensperre!");
    {
    DestroyObject(roadblock);
    RoadBlock[playerid] -= 1;
    SendClientMessage(playerid, COLOR_GREEN, "Straßensperre entfernt");
    return 1;
    }
    }
    }

  • Du erstellst es unter der variable "raodblock" machst du ne zweite überschreibst du die gleiche variable,du hast zwar eine variable für den spieler die du clevererweise auch benutzt nur leider an der falschen stelle :D
    Du brauchst eine Variable für das Object an sich ;)


    //Edit
    Habs dir mal gemacht, mir war langweilig :D

    Spoiler anzeigen

    //oben
    new RB[3];
    //cmds:
    if(!strcmp("/rb", cmdtext))
    {
    if(RoadBlock[playerid] == 3) return SendClientMessage(playerid, COLOR_RED," Es gibt schon 3 Straßensperren!");
    if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pLeader] == 2 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 3 || PlayerInfo[playerid][pMember] == 3)
    {
    new Float:X, Float:Y, Float:Z, Float:A;
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, A);
    if(RoadBlock[playerid] == 0) RB[0] = CreateObject(981, X, Y, Z, 0.0, 0.0, A+180);
    if(RoadBlock[playerid] == 1) RB[1] = CreateObject(981, X, Y, Z, 0.0, 0.0, A+180);
    if(RoadBlock[playerid] == 2) RB[2] = CreateObject(981, X, Y, Z, 0.0, 0.0, A+180);
    SetPlayerPos(playerid, X, Y, Z+4);
    RoadBlock[playerid] += 1;
    SendClientMessage(playerid, COLOR_GREEN, "Straßensperre hinzugefügt");
    return 1;
    } else { return SendClientMessage(playerid, COLOR_RED,"Du bist kein Beamter!"); }
    }
    if(!strcmp("/rrb", cmdtext))
    {
    if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pLeader] == 2 || PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 3 || PlayerInfo[playerid][pMember] == 3)
    {
    if (RoadBlock[playerid] == 0) return SendClientMessage(playerid, COLOR_RED," Du hast keine StraßenSperren errichtet!");
    {
    for(new r=0;r<3;r++)
    DestroyObject(RB[r]);
    RoadBlock[playerid] -= 1;
    SendClientMessage(playerid, COLOR_GREEN, "Alle Straßensperren wurden entfernt");
    return 1;
    }
    } else { return SendClientMessage(playerid, COLOR_RED,"Du bist kein Beamter!"); }
    }