Tore mit einer Taste ö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
  • Guten Morgen Breadfish,


    da ich dieses Tutorial früher nicht fand, als ich das nicht konnte, mache ich jetzt mal ein Tutorial, wie man
    Tore mit einer Taste öffnet und schließt.


    Was brauchen wir dazu?


    Die Pressed Definiton, Diese vereinfacht es, abzufragen, ob der Spieler eine Taste gedrückt hat.

    #define PRESSED(%0) \
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))


    Ihr müsst euch entscheiden welche Taste, ich zähle mal ein paar auf:


    • KEY_FIRE ist die linke Maustaste
    • KEY_CROUCH ist die Hupe im Auto
    • KEY_SPRINT ist die Leertaste
    • KEY_SECONDARY_ATTACK ist die Taste Enter
    • KEY_SUBMISSION ist die Taste 2 oder Num+


    So nun kommen wie zum Teil des Scriptens:
    1. Als erstes müssen wie zu OnPlayerKeyStateChange gehen.
    Dort fragen wir nun ab, ob der Spieler diese Taste gedrückt hat.
    Ich habe nun mal die Hupe genommen, geht nur im Auto!
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(PRESSED(KEY_CROUCH))
    {

    }
    return 1;
    }

    2. Nun fragen wir noch ab ob der Spieler in der Fraktion ist, der das Tor gehört(bei Bedarf) und an welchem Tor er ist.
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(PRESSED(KEY_CROUCH))
    {
    if(GetPVarInt(playerid,"Fraktion")==1) // Das muss angepasst werden
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des Tores einsetzen
    {

    }
    if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des 2. Tores einsetzen
    {


    }
    }
    }
    return 1;
    }

    3. Jetzt fragen wir ab ob das Tor offen oder zu ist, mit einer Variable, die zu auf 0 und auf auf 1 steht.
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(PRESSED(KEY_CROUCH))
    {
    new Torvariable1,Torvariable2;
    if(GetPVarInt(playerid,"Fraktion")==1) // Das muss angepasst werden
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des Tores einsetzen
    {
    if(Torvariable1 == 0)
    {

    }
    else if(Torvariabel == 1)
    {


    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des 2. Tores einsetzen
    {
    if(Torvariable2 == 0)
    {


    }
    else if(Torvariabe2 == 1)
    {


    }
    }
    }
    }
    return 1;
    }

    4. Und Anschließend müssen wir nurnoch das Tor bewegen:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(PRESSED(KEY_CROUCH))
    {
    new Torvariable1,Torvariable2;
    if(GetPVarInt(playerid,"Fraktion")==1) // Das muss angepasst werden
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des Tores einsetzen
    {
    if(Torvariable1 == 0)
    {
    MoveObject(Tor1, X, Y, Z, 5.0);
    Torvariable1 = 1;
    }
    else if(Torvariabel == 1)
    {
    MoveObject(Tor1, X, Y, Z, 5.0);
    Torvariable1 = 0;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des 2. Tores einsetzen
    {
    if(Torvariable2 == 0)
    {
    MoveObject(Tor2, X, Y, Z, 5.0);
    Torvariable2 = 1;
    }
    else if(Torvariabe2 == 1)
    {
    MoveObject(Tor2, X, Y, Z, 5.0);
    Torvariable2 = 0;
    }
    }
    }
    }
    return 1;
    }
    5. Ihr müsst die Tore auch noch definieren, z.B. mit einem "Array":
    new Tor[20];
    //Ongamemodeinit
    Tor[0] = CreateObject(id,x,y,z);
    Tor[1] = CreateObject(id,x,y,z);
    //OnPlayerKeyStateChange
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(PRESSED(KEY_CROUCH))
    {
    new Torvariable1,Torvariable2;
    if(GetPVarInt(playerid,"Fraktion")==1) // Das muss angepasst werden
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des Tores einsetzen
    {
    if(Torvariable1 == 0)
    {
    MoveObject(Tor[0], X, Y, Z, 5.0);
    Torvariable1 = 1;
    }
    else if(Torvariabel == 1)
    {
    MoveObject(Tor[0], X, Y, Z, 5.0);
    Torvariable1 = 0;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10.0,X,Y,Z))//Die Coordninaten des 2. Tores einsetzen
    {
    if(Torvariable2 == 0)
    {
    MoveObject(Tor[1], X, Y, Z, 5.0);
    Torvariable2 = 1;
    }
    else if(Torvariabe2 == 1)
    {
    MoveObject(Tor[1], X, Y, Z, 5.0);
    Torvariable2 = 0;
    }
    }
    }
    }
    return 1;
    }



    Das war erstmal das Tutorial, ich hoffe es hilft ein wenig, oder gar mehr, ich werde, wenn Fehler oder RS-Fehler drin sind, sie so schnell wie möglich entfernen.
    Mit freundlich Grüßen,
    #BLackYoda_

    Einmal editiert, zuletzt von #BLackYoda_ ()

  • Danke, freut mich wenn es hilft!


    @[GER]Raxos Hm, das wusste ich nicht, da ich in der Tut liste nachgeguckt hab.

  • Ich habe "1" error C:\Dokumente und Einstellungen\Maurice\Desktop\samp03dsvr_R2_win32\filterscripts\maney.pwn(73) : error 001: expected token: "#endif", but found "-end of file-"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


  • Du hast oben warscheinlich:

    #if defined Irgendwas


    Mach darunter einfach #endif