Mehrere Gates mit 1 Taste

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


    Also ich hab mir n Hangar gescriptet.


    Habe 2 Fragen:


    1. Gehen alle Tasten nur im Auto?


    2. Wie kann ich eine Taste für mherere hangars machen? Bei mir funzt das nur beim ersten....


    Hier mal der Ausschnitt aus meinem Script:



    if(newkeys == (KEY_CROUCH)) //Hangar 1
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, 286.53305053711, 1953.8522949219, 12.539841079712))
    {
    SendClientMessage(playerid,0x00C0FFFF,"Hangar 1 wird geöffnet....!");
    MoveObject(Hangar11, 286.53305053711, 1953.8522949219, 12.539841079712, 1.5);
    MoveObject(Hangar12, 286.55035400391, 1959.6234130859, 12.539841079712, 1.5);
    PlayerPlaySound(playerid, 1153 ,286.55035400391, 1959.6234130859, 12.539841079712);
    return 1;
    }


    }
    if(newkeys == (KEY_CROUCH)) //Hangar 1
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, 286.53305053711, 1953.8522949219, 19.639841079712))
    {
    SendClientMessage(playerid,0x00C0FFFF,"Hangar 1 wird geschlossen....!");
    MoveObject(Hangar11, 286.53305053711, 1953.8522949219, 19.639841079712, 1.5);
    MoveObject(Hangar12, 286.55035400391, 1959.6234130859, 19.639841079712, 1.5);
    PlayerPlaySound(playerid, 1153 ,286.55035400391, 1959.6234130859, 19.639841079712);
    return 1;
    }



    Ohne PWN, da des i wie buggt^^


    Mfg Vince

  • 1. Gehen alle Tasten nur im Auto?


    Sollte eigentlich nicht davon abhaengen, ob man im Auto ist oder nicht.



    Falls du mit 'Bei mir funzt das nur beim ersten' meinst, dass der Hangar sich nicht schliesst liegt das daran, dass du zwar ueberpruefst, ob der Spieler in der Naehe des Hangars ist, aber nicht, ob der Hangar bereits offen ist. Du hast zwar danach Code, der das Tor wieder schliessen soll, aber dieser wird wegen dem return 1 im ersten IsPlayerInRangeOfPoint nicht erreicht, sofern der Spieler auf dem Boden ist (nicht hoeher als 19.5). Ich hoffe das war jetzt halbwegs verstaendlich ausgedrueckt.
    Ansonsten, falls du damit meinst, dass der zweite Hangar sich nicht oeffnet liegt es daran, dass dort kein 2. Hangar im Code ist :P


    Btw. ein check, ob bei OldKey ebenfalls KEY_CROUCH gedrueckt wurde wuerde ebenfalls die Wahrscheinlichkeit, dass etwas ungeplantes passiert reduzieren. Ausserdem sind die newkeys/oldkeys variablen bitmasken, d.h. dass, wenn du die variablen mit '(newkeys == KEY_CROUCH)' vergleichst, dass nur KEY_CROUCH, nicht gleichzeitig z.B. KEY_ACTION gedrueckt werden darf. Wenn du moechtest, dass sich das tor auch oeffnet/schliesst, wenn KEY_ACTION und KEY_CROUCH gedrueckt werden, dann solltest '(newkeys & KEY_CROUCH)' verwenden.


  • //Global/Static variable - bei initialization der Hangar = 1/0 setzen
    new HangarOpen[2];
    // KeyStateChange
    if( (newkeys & KEY_CROUCH) && !(oldkeys & KEY_CROUCH) ) // First time touching the Crotch.. button
    {
    // Hangar 1
    if( IsPlayerInRangeOfPoint(playerid, 7.0, 286.53305053711, 1953.8522949219, 12.539841079712) )
    {
    if ( !HangarOpen[0] )
    {
    SendClientMessage(playerid,0x00C0FFFF,"Hangar 1 wird geöffnet....!");
    MoveObject(Hangar11, 286.53305053711, 1953.8522949219, 12.539841079712, 1.5);
    MoveObject(Hangar12, 286.55035400391, 1959.6234130859, 12.539841079712, 1.5);
    HangarOpen[0] = 1;
    PlayerPlaySound(playerid, 1153 ,286.55035400391, 1959.6234130859, 12.539841079712);
    }
    else
    {
    SendClientMessage(playerid,0x00C0FFFF,"Hangar 1 wird geschlossen....!");
    MoveObject(Hangar11, //geschlossen11 coords );
    MoveObject(Hangar12, //geschlossen12 coords );
    HangarOpen[0] = 0;
    PlayerPlaySound(playerid, 1153 ,286.55035400391, 1959.6234130859, 12.539841079712);
    }
    return 1;
    }
    // Hangar 2
    else if ( IsPlayerInRangeOfPoint(playerid, 7.0, // Hangar 2 Coords
    {
    if ( !HangarOpen[1] )
    {
    SendClientMessage(playerid,0x00C0FFFF,"Hangar 2 wird geöffnet....!");
    MoveObject(Hangar21, // offen21 coords
    MoveObject(Hangar22, // offen22 coords
    HangarOpen[1] = 1;
    PlayerPlaySound(playerid, 1153 ,// Hangar 2 Coords
    }
    else
    {
    SendClientMessage(playerid,0x00C0FFFF,"Hangar 2 wird geschlossen....!");
    MoveObject(Hangar21, // geschlossen21 coords );
    MoveObject(Hangar22, // geschlossen22 coords );
    HangarOpen[1] = 0;
    PlayerPlaySound(playerid, 1153 ,// Hangar 2 Coords
    }
    return 1;
    }

  • Hi,


    Hab das jetz so:


    if( (newkeys & KEY_CROUCH) && !(oldkeys & KEY_CROUCH) ) // First time touching the Crotch.. button{ // Hangar 1 if( IsPlayerInRangeOfPoint(playerid, 7.0, 286.53305053711, 1953.8522949219, 12.539841079712) ) { if ( !HangarOpen[0] ) { SendClientMessage(playerid,0x00C0FFFF,"Hangar 1 wird geöffnet....!"); MoveObject(Hangar11, 286.53305053711, 1953.8522949219, 12.539841079712, 1.5); MoveObject(Hangar12, 286.55035400391, 1959.6234130859, 12.539841079712, 1.5); HangarOpen[0] = 1; PlayerPlaySound(playerid, 1153 ,286.55035400391, 1959.6234130859, 12.539841079712); } else { SendClientMessage(playerid,0x00C0FFFF,"Hangar 1 wird geschlossen....!"); MoveObject(Hangar11, 286.53305053711, 1953.8522949219, 19.639841079712, 1.5); MoveObject(Hangar12, 286.55035400391, 1959.6234130859, 19.639841079712, 1.5); HangarOpen[0] = 0; PlayerPlaySound(playerid, 1153 ,286.55035400391, 1959.6234130859, 12.539841079712); } return 1; } // Hangar 2 else if ( IsPlayerInRangeOfPoint(playerid, 7.0, 286.50668334961, 1985.2104492188, 12.539841079712); { if ( !HangarOpen[1] ) { SendClientMessage(playerid,0x00C0FFFF,"Hangar 2 wird geöffnet....!"); MoveObject(Hangar21, 286.50668334961, 1985.2104492188, 12.539841079712, 1.5); MoveObject(Hangar22, 286.52880859375, 1993.7634277344, 12.539841079712, 1.5); HangarOpen[1] = 1; PlayerPlaySound(playerid, 1153 , 286.50668334961, 1985.2104492188, 12.539841079712); } else { SendClientMessage(playerid,0x00C0FFFF,"Hangar 2 wird geschlossen....!"); MoveObject(Hangar21, 286.50668334961, 1985.2104492188, 19.639841079712, 1.5); MoveObject(Hangar22, 286.52880859375, 1993.7634277344, 19.639841079712, 1.5); HangarOpen[1] = 0; PlayerPlaySound(playerid, 1153 , 286.50668334961, 1985.2104492188, 12.539841079712); } return 1; }


    Warum geht bei mir der Pawn Code net richtig??



    Hier nochma ohne:



    if( (newkeys & KEY_CROUCH) && !(oldkeys & KEY_CROUCH) ) // First time touching the Crotch.. button
    {
    // Hangar 1
    if( IsPlayerInRangeOfPoint(playerid, 7.0, 286.53305053711, 1953.8522949219, 12.539841079712) )
    {
    if ( !HangarOpen[0] )
    {
    SendClientMessage(playerid,0x00C0FFFF,"Hangar 1 wird geöffnet....!");
    MoveObject(Hangar11, 286.53305053711, 1953.8522949219, 12.539841079712, 1.5);
    MoveObject(Hangar12, 286.55035400391, 1959.6234130859, 12.539841079712, 1.5);
    HangarOpen[0] = 1;
    PlayerPlaySound(playerid, 1153 ,286.55035400391, 1959.6234130859, 12.539841079712);
    }
    else
    {
    SendClientMessage(playerid,0x00C0FFFF,"Hangar 1 wird geschlossen....!");
    MoveObject(Hangar11, 286.53305053711, 1953.8522949219, 19.639841079712, 1.5);
    MoveObject(Hangar12, 286.55035400391, 1959.6234130859, 19.639841079712, 1.5);
    HangarOpen[0] = 0;
    PlayerPlaySound(playerid, 1153 ,286.55035400391, 1959.6234130859, 12.539841079712);
    }
    return 1;
    }
    // Hangar 2
    else if ( IsPlayerInRangeOfPoint(playerid, 7.0, 286.50668334961, 1985.2104492188, 12.539841079712);
    {
    if ( !HangarOpen[1] )
    {
    SendClientMessage(playerid,0x00C0FFFF,"Hangar 2 wird geöffnet....!");
    MoveObject(Hangar21, 286.50668334961, 1985.2104492188, 12.539841079712, 1.5);
    MoveObject(Hangar22, 286.52880859375, 1993.7634277344, 12.539841079712, 1.5);
    HangarOpen[1] = 1;
    PlayerPlaySound(playerid, 1153 , 286.50668334961, 1985.2104492188, 12.539841079712);
    }
    else
    {
    SendClientMessage(playerid,0x00C0FFFF,"Hangar 2 wird geschlossen....!");
    MoveObject(Hangar21, 286.50668334961, 1985.2104492188, 19.639841079712, 1.5);
    MoveObject(Hangar22, 286.52880859375, 1993.7634277344, 19.639841079712, 1.5);
    HangarOpen[1] = 0;
    PlayerPlaySound(playerid, 1153 , 286.50668334961, 1985.2104492188, 12.539841079712);
    }
    return 1;
    }


    Edit:


    Hier die Errors:



    C:\Users\Vince\Desktop\Area51.pwn(172) : error 001: expected token: ")", but found ";"
    C:\Users\Vince\Desktop\Area51.pwn(172) : error 036: empty statement
    C:\Users\Vince\Desktop\Area51.pwn(192) : warning 225: unreachable code
    C:\Users\Vince\Desktop\Area51.pwn(298) : error 030: compound statement not closed at the end of file (started at line 126)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.
    Mfg Vince

  • Schritt 1 bei Fehlern:
    Fehler Beschreibung durchlesen und Reihe angucken, in der der Fehler aufgetreten ist.
    Schritt 2:
    Fehler beseitigen.



    // Hangar 2
    else if ( IsPlayerInRangeOfPoint(playerid, 7.0, 286.50668334961, 1985.2104492188, 12.539841079712);


    // Hangar 2
    else if ( IsPlayerInRangeOfPoint(playerid, 7.0, 286.50668334961, 1985.2104492188, 12.539841079712) )


    Am ende Fehlt unter umstaenden auch noch eine }. Kannst du mit der richtigen Einrueckung aber herausfinden, ob eine fehlt.

  • Ok noch 1 Error:



    C:\Users\Vince\Desktop\Area51.pwn(276) : error 030: compound statement not closed at the end of file (started at line 126)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.



    Hier die Zeile 276:


    if(newkeys == (KEY_CROUCH))



    Hat gar nix mit dem Hangar zu tun O.o

  • hatte diesen error noch nicht aber ich vermute das du ein schlaues pawn hast das die sagt das du die zeile 126 angefangen hast
    mit if newkeys und so weiter aber nicht geschlossen hat


    Info If funktioniert immer so:


    if (irgendwas)
    { <-- auf
    das was passieren soll
    } <-- zu

    ik bin der vito c:

  • Ist aber abgeschlossen:



    if(newkeys == (KEY_CROUCH))
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, 214.21054077148, 1875.8825683594, 10.480994033813))
    {
    SendClientMessage(playerid,0x00C0FFFF,"Garage wird geöffnet....");
    MoveObject(Garagentor, 214.21054077148, 1875.8825683594, 10.480994033813, 1.5);
    PlayerPlaySound(playerid, 1153 ,214.21054077148, 1875.8825683594, 14.680994033813);
    }
    return 1;


    }