Tore von Base leichter öffnen?

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 in der Armybase eine "Menge" Tore und ich möchte, dass sich immer nur ein Tor öffnet wo ich näher dranne stehe. Also klar mit IsPlayerInRangeOfPoint aber bei jedem Tor für x Fraktionen ist das etwas Viel... gibt es eine Möglichkeit, das etwas kleiner zu gestalten? z.B. Switch and Case oder sowas? Hat jemand eine Idee, bzw Tipp wie ich es machen kann. In der Armybase sind circa 15Tore.
    Ich hoffe ihr versteht micht. ||

    Mit freundlichen Grüßen,
    Dachdecker

  • Alle Tore ( & Koordinaten) in ein Array Packen und dann mit einer for-schleife durch loopen und in der Schleife das IsPlayerInRangeOfPoint ausführen um das Tor das am nächsten ist zu ermitteln.

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • Danke für den Tipp:


    also z.b.



    enum Toree
    {
    Tor_Fraktion,
    Tor_Bezeichnung,
    Tor_X,
    Tor_Y,
    Tor_Z,
    Tor_Auf_X,
    Tor_Auf_Y,
    Tor_Auf_Z,
    Tor_Speed
    }
    new Tor[][Toree] =
    {
    {2,BundeswehrTor[0],193.41330, 1923.53125, 19.92830,193.41330, 1923.53125, 16.64330, 3}
    };



    so?

    Mit freundlichen Grüßen,
    Dachdecker

  • Es öffnet sich kein Tor, wo ist der Fehler?



    if (strcmp("/auf", cmdtext, true, 10) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    for(new i = 0; i<sizeof(Tor); i++)
    {
    if(SpielerInfo[playerid][Fraktion] == Tor[i][Tor_Fraktion])
    {
    printf("SpielerFrak: %d und Tor[i][Tor_Fraktion]: %d", SpielerInfo[playerid][Fraktion], Tor[i][Tor_Fraktion]);
    //new Float:Get_X, Float:Get_Y, Float:Get_Z;
    if(IsPlayerInRangeOfPoint(playerid, 5, Tor[i][Tor_X], Tor[i][Tor_Y], Tor[i][Tor_Z]))
    {
    printf(" Tor_X: %f, Tor_Y: %f, Tor_Z: %f",Tor[i][Tor_X], Tor[i][Tor_Y], Tor[i][Tor_Z]);
    MoveObject(Tor[i][Tor_Bezeichnung], Tor[i][Tor_AufX], Tor[i][Tor_AufY], Tor[i][Tor_AufZ], 3, -1000.0,-1000.0,-1000.0);
    printf("Tor_Bezeichnung: %s", Tor[i][Tor_Bezeichnung]);
    }
    }
    }
    }
    return 1;
    }

    Mit freundlichen Grüßen,
    Dachdecker

    3 Mal editiert, zuletzt von Dachdecker ()


  • So
    enum Toree
    {
    Tor_Fraktion,
    Tor_Bezeichnung,
    Tor_X,
    Tor_Y,
    Tor_Z,
    Tor_Speed
    }
    new Tor[][Toree] =
    {
    {2,0,193.41330, 1923.53125, 19.92830, 3}
    };



    if (strcmp("/auf", cmdtext, true, 10) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    for(new i = 0; i<sizeof(Tor); i++)
    {
    if(SpielerInfo[playerid][Fraktion] == Tor[i][Tor_Fraktion])
    {
    printf("SpielerFrak: %d und Tor[i][Tor_Fraktion]: %d", SpielerInfo[playerid][Fraktion], Tor[i][Tor_Fraktion]);
    //new Float:Get_X, Float:Get_Y, Float:Get_Z;
    if(IsPlayerInRangeOfPoint(playerid, 5, Tor[i][Tor_X], Tor[i][Tor_Y], Tor[i][Tor_Z]))
    {
    printf(" Tor_X: %f, Tor_Y: %f, Tor_Z: %f",Tor[i][Tor_X], Tor[i][Tor_Y], Tor[i][Tor_Z]);
    MoveObject(Tor[i][Tor_Bezeichnung], Tor[i][Tor_AufX], Tor[i][Tor_AufY], Tor[i][Tor_AufZ]-3, Tor[i][Tor_Speed], 0.0,0,.0);
    printf("Tor_Bezeichnung: %s", Tor[i][Tor_Bezeichnung]);
    }
    }
    }
    }
    return 1;
    }


    Du hast vergessen die Korrdinaten zu ändern
    Tor[i][Tor_AufZ] -> Tor[i][Tor_AufZ]-3


    also so
    MoveObject(Tor[i][Tor_Bezeichnung], Tor[i][Tor_AufX], Tor[i][Tor_AufY], Tor[i][Tor_AufZ]-3, Tor[i][Tor_Speed], 0.0,0,.0);


  • BundeswehrTor[0] = CreateObject(19906, 193.41330, 1923.53125, 19.92830, 0.00000, 0.00000, 360.21191);
    //193.41330, 1923.53125, 16.64330
    BundeswehrTor[1] = CreateObject(19906, 202.39410, 1923.53088, 19.85580, 0.00000, 0.00000, 359.93188);
    //202.39410, 1923.53088, 16.64330
    BundeswehrTor[2] = CreateObject(19906, 211.42378, 1923.54504, 19.85580, 0.00000, 0.00000, 359.93188);
    //211.42378, 1923.54504, 16.64330
    BundeswehrTor[3] = CreateObject(19906, 220.40250, 1923.50122, 19.85580, 0.00000, 0.00000, 359.93188);
    //220.40250, 1923.5012, 16.64330
    //Halle 2
    BundeswehrTor[4] = CreateObject(19906, 174.81837, 1826.89746, 19.85580, 0.00000, 0.00000, 359.93188);
    //174.81837, 1826.89746, 16.64330
    BundeswehrTor[5] = CreateObject(19906, 183.79898, 1826.90100, 19.85580, 0.00000, 0.00000, 359.93188);
    //183.79898, 1826.90100, 16.64330
    BundeswehrTor[6] = CreateObject(19906, 192.81992, 1826.91675, 19.85580, 0.00000, 0.00000, 359.93188);
    //192.81992, 1826.91675, 16.64330
    BundeswehrTor[7] = CreateObject(19906, 201.81436, 1826.91016, 19.85580, 0.00000, 0.00000, 359.93188);
    //201.81436, 1826.91016, 16.64330
    //Halle 3
    BundeswehrTor[8] = CreateObject(19906, 216.98787, 1826.88000, 19.85580, 0.00000, 0.00000, 359.93188);
    //216.98787, 1826.88000, 16.64330
    BundeswehrTor[9] = CreateObject(19906, 225.98384, 1826.91248, 19.85580, 0.00000, 0.00000, 359.93188);
    //225.98384, 1826.91248, 16.64330
    BundeswehrTor[10] = CreateObject(19906, 234.98415, 1826.89368, 19.85580, 0.00000, 0.00000, 359.93188);
    //234.98415, 1826.89368, 16.64330
    BundeswehrTor[11] = CreateObject(19906, 243.96420, 1826.90649, 19.85580, 0.00000, 0.00000, 359.93188);
    //243.96420, 1826.90649, 16.64330
    BundeswehrTor[12] = CreateObject(19908, 143.52200, 1911.17798, 20.25760, 0.00000, 0.00000, 90.01000);
    //138.18201, 1911.17798, 20.25760
    BundeswehrTor[13] = CreateObject(19908, 148.88490, 1911.15796, 20.25760, 0.00000, 0.00000, 90.01000);
    //154.26489, 1911.17798, 20.25760

    Mit freundlichen Grüßen,
    Dachdecker

  • Hab ich vorhin schon eingefügt.



    enum Toree
    {
    Tor_Fraktion,
    Tor_Bezeichnung[32],
    Float:Tor_X,
    Float:Tor_Y,
    Float:Tor_Z,
    Float:Tor_AufX,
    Float:Tor_AufY,
    Float:Tor_AufZ
    }



    new Tor[][Toree] =
    {
    {2, "BundeswehrTor[0]", 193.41330, 1923.53125, 19.92830, 193.41330, 1923.53125, 16.64330},
    {2, "BundeswehrTor[1]", 202.39410, 1923.53088, 19.85580, 202.39410, 1923.53088, 16.64330},
    {2, "BundeswehrTor[2]", 211.42378, 1923.54504, 19.85580, 211.42378, 1923.54504, 16.64330},
    {2, "BundeswehrTor[3]", 220.40250, 1923.50122, 19.85580, 220.40250, 1923.5012, 16.64330},
    {2, "BundeswehrTor[4]", 174.81837, 1826.89746, 19.85580, 174.81837, 1826.89746, 16.64330},
    {2, "BundeswehrTor[5]", 183.79898, 1826.90100, 19.85580, 183.79898, 1826.90100, 16.64330},
    {2, "BundeswehrTor[6]", 192.81992, 1826.91675, 19.85580, 192.81992, 1826.91675, 16.64330},
    {2, "BundeswehrTor[7]", 201.81436, 1826.91016, 19.85580, 201.81436, 1826.91016, 16.64330},
    {2, "BundeswehrTor[8]", 216.98787, 1826.88000, 19.85580, 216.98787, 1826.88000, 16.64330},
    {2, "BundeswehrTor[9]", 225.98384, 1826.91248, 19.85580, 225.98384, 1826.91248, 16.64330},
    {2, "BundeswehrTor[10]", 234.98415, 1826.89368, 19.85580, 234.98415, 1826.89368, 16.64330},
    {2, "BundeswehrTor[11]", 243.96420, 1826.90649, 19.85580, 243.96420, 1826.90649, 16.64330},
    {2, "BundeswehrTor[12]", 143.52200, 1911.17798, 20.25760, 138.18201, 1911.17798, 20.25760},
    {2, "BundeswehrTor[13]", 148.88490, 1911.15796, 20.25760, 154.26489, 1911.17798, 20.25760}
    };

    Mit freundlichen Grüßen,
    Dachdecker

  • änder es mal so Ab



    enum Toree
    {
    Tor_Fraktion,
    Tor_Bezeichnung,
    Float:Tor_X,
    Float:Tor_Y,
    Float:Tor_Z,
    Float:Tor_AufX,
    Float:Tor_AufY,
    Float:Tor_AufZ
    }




    new Tor[][Toree] =
    {
    {2, 0, 193.41330, 1923.53125, 19.92830, 193.41330, 1923.53125, 16.64330},
    {2, 0, 202.39410, 1923.53088, 19.85580, 202.39410, 1923.53088, 16.64330},
    {2, 0, 211.42378, 1923.54504, 19.85580, 211.42378, 1923.54504, 16.64330},
    {2, 0, 220.40250, 1923.50122, 19.85580, 220.40250, 1923.5012, 16.64330},
    {2, 0, 174.81837, 1826.89746, 19.85580, 174.81837, 1826.89746, 16.64330},
    {2, 0, 183.79898, 1826.90100, 19.85580, 183.79898, 1826.90100, 16.64330},
    {2, 0, 192.81992, 1826.91675, 19.85580, 192.81992, 1826.91675, 16.64330},
    {2, 0, 201.81436, 1826.91016, 19.85580, 201.81436, 1826.91016, 16.64330},
    {2, 0, 216.98787, 1826.88000, 19.85580, 216.98787, 1826.88000, 16.64330},
    {2, 0, 225.98384, 1826.91248, 19.85580, 225.98384, 1826.91248, 16.64330},
    {2, 0, 234.98415, 1826.89368, 19.85580, 234.98415, 1826.89368, 16.64330},
    {2, 0, 243.96420, 1826.90649, 19.85580, 243.96420, 1826.90649, 16.64330},
    {2, 0, 143.52200, 1911.17798, 20.25760, 138.18201, 1911.17798, 20.25760},
    {2, 0, 148.88490, 1911.15796, 20.25760, 154.26489, 1911.17798, 20.25760}
    };


  • MoveObject will die Objekt ID, nicht einen String.
    Versuch es folgendermaßen:


    Definitionen:



    Befehl:



    Du könntest es auch noch Intelligenter machen, denn im Moment Speicherst du die ID immer Doppelt. Und zwar direkt so:



    Code
    new Tor[][Toree] =
    {
        {2, CreateObject(19906, 193.41330, 1923.53125, 19.92830,   0.00000, 0.00000, 360.21191), 193.41330, 1923.53125, 19.92830, 193.41330, 1923.53125, 16.64330}, //Tor 1, müsstest du halt für alle anderen auch machen

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • Wenn ich es abändere wie du sagtest kommen diese Fehler:


    ohne das CreateObject im Array

    E:\Grand Theft Auto San Andreas\Server\gamemodes\Selfmade.pwn(146) : error 008: must be a constant expression; assumed zero
    E:\Grand Theft Auto San Andreas\Server\gamemodes\Selfmade.pwn(160) : error 010: invalid function or declaration
    E:\Grand Theft Auto San Andreas\Server\gamemodes\Selfmade.pwn(3587) : warning 203: symbol is never used: ""
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase




    2 Errors.

    Mit freundlichen Grüßen,
    Dachdecker