Schranke geht nicht richtig auf

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 Community,
    ich habe ein Problem mit meiner Schranke. Und zwar will ich das sie wie in echt stück für stück auf geht. Bei mir ist es im Moment so, dass wenn ich die Taste drücke verändert es nur die Position. Ich weis echt nicht weiter. Hier habe ich den Code:

    if(IsPlayerInRangeOfPoint(playerid,10,1544.7, -1630.8, 13.2))
    {
    if(PlayerInfo[playerid][pFraktion] == 1)
    {
    MoveObject(Lspdschranke,1544.7, -1630.8, 13.2,5,0,0,90);
    SendClientMessage(playerid,Gruen,"Die Schranke schließt sich in 5 Sekunden wieder!");
    SetTimer("Lspdschrankeclose",5000,0);
    return 1;
    }
    }


    public Lspdschrankeclose()
    {
    MoveObject(Lspdschranke,1544.7, -1630.8, 13.2,5,0, 90, 90);
    return 1;
    }

  • Du musst die Position minimal verändern und das Objekt dann ganz langsam bewegen.
    if(IsPlayerInRangeOfPoint(playerid,10,1544.7, -1630.8, 13.2))
    {
    if(PlayerInfo[playerid][pFraktion] == 1)
    {
    MoveObject(Lspdschranke,1544.7, -1630.8, 13.19,0.02,0,0,90);
    SendClientMessage(playerid,Gruen,"Die Schranke schließt sich in 5 Sekunden wieder!");
    SetTimer("Lspdschrankeclose",5000,0);
    return 1;
    }
    }


    public Lspdschrankeclose()
    {
    MoveObject(Lspdschranke,1544.7, -1630.8, 13.2,0.02,0, 90, 90);
    return 1;
    }

  • Danke passt perfekt. Aber wegen einem Anderen Befehl. Da bekomme ich den Error "array index out of bounds (variable "AtmPositions")" an was liegt das ?
    Code:

    enum AtmPos{
    Float:PosX,
    Float:PosY,
    Float:PosZ,
    }
    new AtmPositions[1][AtmPos] = {
    {1544.7, -1620.3, 13.1}
    };


    cmd:atm(playerid,params[])
    {
    if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
    if(IsPlayerInRangeOfPoint(playerid,5,AtmPositions[MAX_ATM][PosX],AtmPositions[MAX_ATM][PosY],AtmPositions[MAX_ATM][PosZ]))
    {
    ShowPlayerDialog(playerid,DIALOG_ATM,DIALOG_STYLE_LIST,"Bankautomat","Abbuchen\nEinzahlen\nÜberweisen\nKontostand","Auswählen","Schliesen");
    return 1;
    }
    return 1;
    }

  • Du musst es so schreiben:
    cmd:atm(playerid,params[])
    {
    if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
    for(new i=0; i<sizeof(AtmPositions); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,AtmPositions[i][PosX],AtmPositions[i][PosY],AtmPositions[i][PosZ]))
    {
    ShowPlayerDialog(playerid,DIALOG_ATM,DIALOG_STYLE_LIST,"Bankautomat","Abbuchen\nEinzahlen\nÜberweisen\nKontostand","Auswählen","Schliesen");
    return 1;
    }
    }
    return 1;
    }

  • Hallo,


    für die Schranken nutze ich ein sehr geiels Include!
    ( klick mich )


    Damit kannst du ganz einfach MoveScrhanke(torname); die schranke öffnen etc
    aber alle wichtigen Informationen findest du wiegesagt auf der Seite die ich verlinkt habe!


    Das einzgie problem ist nur bis du die richtige Rotation hinbekommen hast mit "MoveObject" dauert ne weile und mit MoveSchranke geht dies viel einfacher, allerdings kanst du nur eine bestimmte ID nutzen ! ;)


    Ich hoffe ich konnte dir ein stückweit weiterhelfen ;)


    Lg
    J0a9