Ein Menü erstellen im Filterscript

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
  • Als erstes muss wir alles defienieren und zuteilen das geschiet hier:
    #include <a_samp>


    //o.o


    #define FILTERSCRIPT // hier wird es als Filterscript definiert


    #define Rot 0xFF0000FF // hier wird die Farbe defieniert


    #if defined FILTERSCRIPT


    new Menu:Skaten; // hiermit wird das Menü der variable Skaten zugeteilt
    new pickupEmo; // Ein pickup wird der variable pickupEmo zugeteilt


    So nun muss alles erstellt werden das machen wir hier :



    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Filterscript by Tobsen");
    print("--------------------------------------\n");

    Skaten = CreateMenu("Informationen zu ...",2,200.0,100.0,150.0,150.0); // hier wird das Menü erstellt die Koordianten sind für die Position auf den Bildschirm
    AddMenuItem(Skaten,0, "Scheine");//Die 0 steht dafür das es immer unter dem vorherigem steht // erstellt einen Unterpunkt in dem Menü Skaten
    AddMenuItem(Skaten,0, "Jobs"); // hier auch
    AddMenuItem(Skaten,0, "Pässe"); // hier auch
    AddMenuItem(Skaten,0, "Verlassen"); // hier auch


    pickupEmo = CreatePickup(1239,23,1210.3668,-917.5967,43.0351); // erstellt das pickup pickupEmo | die Koordinaten sind immer erst (x-achse,y-achse,z-achse);
    return 1;
    }
    #endif


    Wenn der Spieler das Pickup aufnimmt was auch irgendetwas passieren und das stellen wir hier ein.



    public OnPlayerPickUpPickup(playerid, pickupid) // überprüft das pickup
    {
    if(pickupid == pickupEmo)//wenn der Spieler pickupEmo aufnimmt
    {
    ShowMenuForPlayer(Skaten,playerid); // öffnet das Menü Skaten
    TogglePlayerControllable(playerid, false); // wird gefreezed
    }


    return 1;
    }


    So nachdem das Menü geöffnet wurde muss etwas passieren wenn man auswählt. Das muss hier gemacht werden :
    Ich habe es so gemacht das der Player einen Text gesendet bekommt



    public OnPlayerSelectedMenuRow(playerid, row)
    {
    new Menu:CurrentMenu = GetPlayerMenu(playerid); // checkt ob der Player das Menü Skaten offen hat
    if(CurrentMenu == Skaten)
    {
    switch(row)
    {
    case 0: // ist der Unterpunkt 1
    {
    SendClientMessage(playerid,Rot, "such dir mal ein Hobby");
    TogglePlayerControllable(playerid, true); // spieler wird wieder unfreezed
    }
    case 1:
    {
    SendClientMessage(playerid,Rot, "versuchs mal mit Skaten macht Spaß :)");
    TogglePlayerControllable(playerid, true);
    }
    case 2:
    {
    SendClientMessage(playerid,Rot, "Far cry 2 bestes Game :)");
    TogglePlayerControllable(playerid, true);
    }
    case 3:
    {
    TogglePlayerControllable(playerid, true);
    }
    }
    }
    return 1;
    }


    So nun habt ihr ein Menü

    Ich wurde angesteckt:


    o.o
    o-o
    8|
    ^^


    So nun steckt euch auch an::

  • new Menu:CurrentMenu = GetPlayerMenu(playerid); // checkt ob der Player das Menü Skaten offen hat


    Falsch, das ist nur da um herauszufinden welches Menü der Spieler gerade hat, das ist ob er das Menü Skaten hat:


    if(CurrentMenu == Skaten)


    ^^

    Zitat

    Nimm die Dinge wie sie sind: schlag, wenn du schlagen musst, tritt, wenn du Treten musst
    -Bruce Lee

  • pickupEmo = CreatePickup(1239,23,1210.3668,-917.5967,43.0351); // erstellt das pickup pickupEmo | die Koordinaten sind immer erst (x-achse,y-achse,z-achse);


    Man hätte es besser erklären können z.B. so:


    pickupEmo = CreatePickup(1239,23,1210.3668,-917.5967,43.0351); // pickupEmo = Erstelle ein Pickup(pickup typ, typ, x,y,z


    public OnPlayerPickUpPickup(playerid, pickupid) // überprüft das pickup


    ... nein ...



    public OnPlayerPickUpPickup(playerid,pickupid) // wenn ein Spieler ein Pickup aufhebt bzw. in eins rein geht


    Naja man hätte es noch besser erklären können und so .. daher 5/10 Punkten

  • @ oktabius also erstmal bin ich kein super Profi und Menschen machen auchmal Fehler es ist halt ma so


    @CityLight pickupEmo ist bloß der name der dem Pickup zugeteil wurde (von mir) das brauchst du um damit zu arbeiten

    Ich wurde angesteckt:


    o.o
    o-o
    8|
    ^^


    So nun steckt euch auch an::

  • Dein tut ist wirklich leicht verständlich nur bei mir funktioniert es nicht.
    Ich hab es statt mit dem pickup mit dem befehl /menu gemacht das geht auch auf ich werd auch gefreezed aber wenn ich eine sache ausgewählt habe werde ich nicht unfreezed und es kommt auch kein text oder ich bekomm keine waffe :(

  • SRY ist sehr lang geworden aber wusste jetzt nich was ich rauschneiden soll


    #include <a_samp>


    // This is a comment
    // uncomment the line below if you want to write a filterscript
    #define FILTERSCRIPT
    #define Rot 0xFF0000FF


    #if defined FILTERSCRIPT


    new Menu:Skaten; // hiermit wird das Menü der variable Skaten zugeteilt
    new pickupEmo; // Ein pickup wird der variable pickupEmo zugeteilt


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");


    Skaten = CreateMenu("Informationen zu ...",2,200.0,100.0,150.0,150.0); // hier wird das Menü erstellt die Koordianten sind für die Position auf den Bildschirm
    AddMenuItem(Skaten,0, "M4");//Die 0 steht dafür das es immer unter dem vorherigem steht // erstellt einen Unterpunkt in dem Menü Skaten
    AddMenuItem(Skaten,0, "AK47"); // hier auch
    AddMenuItem(Skaten,0, "Deagle"); // hier auch
    AddMenuItem(Skaten,0, "KILLA"); // hier auch


    pickupEmo = CreatePickup(1239,23,1210.3668,-917.5967,43.0351); // erstellt das pickup pickupEmo | die Koordinaten sind immer erst (x-achse,y-achse,z-achse);
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    #else


    main()
    {
    //print("\n----------------------------------");
    //print(" Blank Gamemode by your name here");
    //print("----------------------------------\n");
    }


    #endif


    public OnGameModeInit()
    {
    // Don't use these lines if it's a filterscript
    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
    }


    public OnGameModeExit()
    {
    return 1;
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
    }


    public OnPlayerRequestSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    return 1;
    }


    public OnPlayerPrivmsg(playerid, recieverid, text[])
    {
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/menu", cmdtext, true, 10) == 0)
    {
    ShowMenuForPlayer(Skaten, playerid);
    TogglePlayerControllable(playerid, false);
    return 1;
    }
    return 0;
    }


    public OnPlayerInfoChange(playerid)
    {
    return 1;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    return 1;
    }


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnRconCommand(cmd[])
    {
    return 1;
    }


    public OnObjectMoved(objectid)
    {
    return 1;
    }


    public OnPlayerObjectMoved(playerid, objectid)
    {
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {


    if(pickupid == pickupEmo)//wenn der Spieler pickupEmo aufnimmt
    {
    ShowMenuForPlayer(Skaten,playerid); // öffnet das Menü Skaten
    TogglePlayerControllable(playerid, false); // wird gefreezed
    }


    return 1;
    }


    public OnPlayerSelectedMenuRow(playerid, row)
    {
    new Menu:CurrentMenu = GetPlayerMenu(playerid); // checkt ob der Player das Menü Skaten offen hat
    if(CurrentMenu == Skaten)
    {
    switch(row)
    {
    case 0: // ist der Unterpunkt 1
    {
    TogglePlayerControllable(playerid, true); // spieler wird wieder unfreezed
    GivePlayerWeapon(playerid, 7, 50);
    HideMenuForPlayer(Skaten, playerid);
    SendClientMessage(playerid,Rot, "WAFFE");
    }
    case 1:
    {
    HideMenuForPlayer(Skaten, playerid);
    SendClientMessage(playerid,Rot, "WAFFE");
    TogglePlayerControllable(playerid, true);
    }
    case 2:
    {
    HideMenuForPlayer(Skaten, playerid);
    SendClientMessage(playerid,Rot, "WAFFE");
    TogglePlayerControllable(playerid, true);
    }
    case 3:
    {
    HideMenuForPlayer(Skaten, playerid);
    SendClientMessage(playerid, Rot, "WAFFE");
    TogglePlayerControllable(playerid, true);
    }
    }
    }


    return 1;
    }


    public OnPlayerExitedMenu(playerid)
    {
    return 1;
    }

  • Als erstes muss wir alles defienieren und zuteilen das geschiet hier:


    naja nicht richtig deutsch aber egal^^


    8/10 respekt