[TUT] Wie erstelle ich ein Menu mit Pickup?

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
  • so ich versuche mich mal an meinem ersten tutorial.


    also ich zeige das ganze an einem gamemode und markiere alles was neu ist mit "//-------------------".
    PS: ES SOLLTEN GRUNDKENNTNISSE DES SCRIPTENS VORHANDEN SEIN
    als erstes:

    #include <a_samp>
    new Menu:tutorial; //-------------------

    das "new Menu:tutorial" ist die variable für das menü die später gebraucht wird



    #include <a_samp>
    new Menu:tutorial;
    new tutpickup; //-------------------

    das "new tutpickup" ist die variable die jetzt im nächsten schritt gebraucht wird



    #include <a_samp>
    new Menu:tutorial;
    new tutpickup;
    main()
    {
    print("\n------");
    print("tutorial");
    print("------\n");
    }
    public OnGameModeInit()
    {
    SetGameModeText("tutorial");
    AddPlayerClass(0,x,y,z,rot,w1,m1,w2,m2,w3,m3);
    tutpickup = AddStaticPickup(pickupid,type,x,y,z); //-------------------

    hier ist die variable "tutpickup" als pickup deklariert worden.
    (pickupids: http://samp.martoks-place.de/w….html#Pickup_model_ID.27s )
    (typeids: http://samp.martoks-place.de/w…kup_help.html#Pickup_Type )



    #include <a_samp>
    new Menu:tutorial;
    new tutpickup;
    main()
    {
    print("\n------");
    print("tutorial");
    print("------\n");
    }
    public OnGameModeInit()
    {
    SetGameModeText("tutorial");
    AddPlayerClass(0,x,y,z,rot,w1,m1,w2,m2,w3,m3);
    tutpickup = AddStaticPickup(pickupid,type,x,y,z);
    tutorial = CreateMenu("Tutorial",1,200.0,100.0,150.0,150.0); //-------------------

    hier wird die menü variable "new Menu:tutorial;" als menü deklariert.
    "CreateMenu" setzt sich wie folgt zusammen:
    CreateMenu ( "Tutorial", 1, 200.0, 100.0,150.0,150.0);
    leitet menü erstellung ein, menü name, reihen des menüs,positon auf dem bildschrim X ,positon Y, höhe,breite



    #include <a_samp>
    new Menu:tutorial;
    new tutpickup;
    main()
    {
    print("\n------");
    print("tutorial");
    print("------\n");
    }
    public OnGameModeInit()
    {
    SetGameModeText("tutorial");
    AddPlayerClass(0,x,y,z,rot,w1,m1,w2,m2,w3,m3);
    tutpickup = AddStaticPickup(pickupid,type,x,y,z);
    tutorial = CreateMenu("Tutorial",1,200.0,100.0,150.0,150.0);
    AddMenuItem(tutorial,1,"Waffen"); //-------------------
    AddMenuItem(tutorial,1,"Ende"); //-------------------
    }

    hier wird ein auswahlpunkt des menüs hinzugefügt.
    "AddMenuItem" setzt sich wie folgt zusammen:
    AddMenuItem (tutorial ,1 ,"Waffen");
    leitet ein das ein auswahlpunkt hinzugefügt wird,menü variable,reihe wo es stehen soll,auswahlpunkt text



    #include <a_samp>
    new Menu:tutorial;
    new tutpickup;
    main()
    {
    print("\n------");
    print("tutorial");
    print("------\n");
    }
    public OnGameModeInit()
    {
    SetGameModeText("tutorial");
    AddPlayerClass(0,x,y,z,rot,w1,m1,w2,m2,w3,m3);
    tutpickup = AddStaticPickup(pickupid,type,x,y,z);
    tutorial = CreateMenu("Tutorial",1,200.0,100.0,150.0,150.0);
    AddMenuItem(tutorial,1,"Waffen");
    AddMenuItem(tutorial,1,"Ende");
    }
    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 OnPlayerPickUpPickup(playerid,pickupid) //-------------------
    { //-------------------
    if(pickupid == 0) //-------------------
    { //-------------------
    ShowMenuForPlayer(tutorial,playerid); //-------------------
    TogglePlayerControllable(playerid,0); //-------------------
    } //-------------------
    } //-------------------

    hier wird gezeigt was passiert wenn der player das pickup aufnimmt.
    if(pickupid == 0)
    heist soviel wie "ist die pickupid gleich 0 (wie bei uns der fall weil wir nur ein pickup haben und bei null angefangen wird zu zählen)


    ShowMenuForPlayer ( tutorial, playerid);
    zeigt dem player ein menü,die variable des menüs das ausgewählt werden soll,wenn player id genuzt ist das menü für eine bestimmte id sichtbar (das wollen wir nicht also playerid(meint alle ids))


    TogglePlayerControllable(playerid,0);
    soll der player wärend er im menü ist sich nicht bewegen können muss am ende 0 stehen wenn ja das ganze weglassen oder 0 druch 1 ersetzen.



    #include <a_samp>
    new Menu:tutorial;
    new tutpickup;
    main()
    {
    print("\n------");
    print("tutorial");
    print("------\n");
    }
    public OnGameModeInit()
    {
    SetGameModeText("tutorial");
    AddPlayerClass(0,x,y,z,rot,w1,m1,w2,m2,w3,m3);
    tutpickup = AddStaticPickup(pickupid,type,x,y,z);
    tutorial = CreateMenu("Tutorial",1,200.0,100.0,150.0,150.0);
    AddMenuItem(tutorial,1,"Waffen");
    AddMenuItem(tutorial,1,"Ende");
    }
    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 OnPlayerPickUpPickup(playerid,pickupid)
    {
    if(pickupid == 0)
    {
    ShowMenuForPlayer(tutorial,playerid);
    TogglePlayerControllable(playerid,0);
    }
    }
    public OnPlayerSelectetMenuRow(playerid,row) //-------------------
    { //-------------------
    new Menu:CMenu = GetPlayerMenu(playerid); //-------------------
    if(CMenu == tutorial) //-------------------
    { //-------------------
    switch(row) //-------------------
    { //-------------------
    case 0: //-------------------
    { //-------------------
    GivePlayerWeapon(Playerid,3,1); //-------------------
    TogglePlayerControllable(playerid,1); //-------------------
    } //-------------------
    case 1: //-------------------
    { //-------------------
    TogglePlayerControllable(playerid,1); //-------------------
    } //-------------------
    } //-------------------
    } //-------------------
    } //-------------------

    aAlso hier wird gesagt was passiert wenn der player eine auswahl im menü trifft.
    das "new Menu:CMenu = GetPlayer...." ist nur eine abkürzung von "GetPlayerMenu(playerid);" durch die variable
    "CMenu"


    if(CMenu == tutorial)
    sagt aus "wenn CMenu ist gleich menü tutorial dann tu das was unter mir steht"


    switch(row)
    sagt aus was passiert wenn ich ziwschen den Auswahlpunkten wechsle und einen auswähle


    case 0:
    sagt aus "wenn erster auswahlpunkt dann tute das was unter mir steht und schließe das menü"


    case 1:
    sagt aus "wenn zweiter auswahlpunt dann tute das was unter mir steht und schließe das menü"


    wenn noch fragen da sind postet sie hier

  • Wow echt nice tut^^ Könnt ihr das mal unter Tutorials verschieben? ^^ Habe das eben die ganze Zeit gesucht und hab schon gedacht ich wäre verrückt ^^



    Achja

    Zitat

    TogglePlayerControllable(playerid,0);
    soll der player wärend er im menü ist sich nicht bewegen können muss am ende 0 stehen wenn ja das ganze weglassen oder 0 druch 1 ersetzen.



    Ist es nicht genau umgekehrt?

    ...

  • 1 ist immer an und 0 ist aus ,das ist doch logisch es gibt eigendlich nur 1sen und 0en in einem system.

    Man kann alles man brauch nur die Codes und ein Hirn



    [eVo] Back To The Roots


    94.23.26.10:8064


    german-story.de

  • Hab mir das Tutorial jetzt nicht durchgelesen,kann aber versicher das es bei mehreren Pickups nicht so funktionieren wird wie du möchtest.
    tutpickup = AddStaticPickup(pickupid,type,x,y,z);

    tutpickup wird immer 1 sein,wenn das Pickup erfolgreich erstellt wurde.
    Man sollte anstatt AddStaticPickup(),CreatePickup() nehmen bei solchen Sachen.

  • Kleine Frage dazwischen:


    Ich habe mal gelesen dass man ein Pickup welches per "AddStaticPickup" erstellt wurde, nicht per "DestroyPickup" zerstörbar ist. Stimmt das?

  • Wer von euch nen profi ist kommt hierfür in frage : Könnte bitte einer mir ein gut erklärtes Tutorial für ein Menü amchen.. wo man z.b. Bsn.. Man hat 4 Burger auswahllen .. die einstellung des menus, der kosten der burger, der leben die sie bekommen und so was ? Wer das macht hat mega viel + punkte bei mir.. danke im vorraus ;)




    Mfg UnNaMeD

  • Morgen.


    Habe Dir Mal Ein Dialog Gemacht ist ehnlich wie ein Menu


    Sieht auch schön aus hoffe dir gefällt es :)


    Ganz Oben


    Bei den define

    #define Gelb 0xFFFF0000


    Unter:


    OnPlayerCommandText


    Code
    dcmd(speiseliste,11,cmdtext); // Das Der Cmd Geht


    dann


    Code
    dcmd_speiseliste(playerid,params[])
    {
            #pragma unused params
            if(PlayerToPoint(1.0,playerid, 376.5819,-67.4445,1001.5078) // Position wo er stehen soll kann mann ändern.
    	{
    	ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"Speiseliste","Hambruger 10$ \nChickenburger 15$ \nBigmac 20$ \nCheesburger 13$","Kaufen","Abbrechen"); // Die Namen.
            }
            return 1;
    }


    dann unter


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {



    MFG: qini

  • ich werds gleich mal testen ^^




    Kannste mir noch sagen wie ich darin z.b. schreiben kann wie die burger heißen ? z.b. grosser oder kleiner ? das wäre jetz noch echt hamma








    hoffentlich ist es das was ich suche ^^

  • Okaii also,


    ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,"Speiseliste","Hambruger 10$ \nChickenburger 15$ \nBigmac 20$ \nCheesburger 13$","Kaufen","Abbrechen"); // Die Namen.


    Das Rote Ganz Du Belibig ändern von hamburger kannst du z.b Grosser Kartoffelsalat machen Bleibt dir überlassen.

  • Woah geil danke du bist ein schatz ;)








    Wenn das klappt bin ich überglücklich



    Falls es nicht klappt können wir über ein programm .. skype icq oder sowas das amchen ? ;)

    Einmal editiert, zuletzt von UnNaMeD ()

  • Ja hab probleme :



    error 017: undefined symbol "dcmd"


    error 017: undefined symbol "dcmd_speiseliste"


    error 017: undefined symbol "params"






    Hab ne idee was fürn Chat programm ahste, ahste skype oder icq ?