RI AuswahlGUI [v0.2.0]

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
  • Moinsen Breadfish,


    Diesmal handelt es sich um ein AuswahlGUI, wie die Überschrift auch schon verrät. Es basiert auf der ClassSelection von SAMP
    Funktionen:

    ShowPlayerChooseMenu(playerid,menuid,maxitems,Float:CamX,Float:CamY,Float:CamZ,Float:LookX,Float:LookY,Float:LookZ);
    SetPlayerCam(playerid,Float:CamX,Float:CamY,Float:CamZ,Float:LookX,Float:LookY,Float:LookZ); // vgl. SetPlayerCameraPos & LookAt
    LinkTextDrawToMenu(Text:TextdrawID,forplayerid,menuid,itemid); // "Attache" einen Textdraw zu einem Menü
    DelinkTextDrawFromMenu(Text:TextdrawID,fromplayerid,menuid,itemid); // "Detache" einen Textdraw von einem Menü
    //-----ShowPlayerChooseMenu ist wiefolgt aufgebaut:
    playerid // Der Spieler, wem das Menü gezeigt werden soll
    menuid // Die MenüID, welche für die Callbacks benötigt wird (vgl. DialogIDs)
    maxitems // Maximale Anzahl an Menüpunkten
    CamX // Die Koordinate X, wo die Kamera des Spielers platziert werden soll
    CamY // Die Koordinate Y, wo die Kamera des Spielers platziert werden soll
    CamZ // Die Koordinate Z, wo die Kamera des Spielers platziert werden soll
    lookx // Die Koordinate X, auf die der Spieler schauen soll
    looky // Die Koordinate X, auf die der Spieler schauen soll
    lookz // Die Koordinate X, auf die der Spieler schauen soll
    //------Callbacks-------
    OnChooseMenuResponse(playerid,menuid,itemid); // Wenn diese Funktion 1 returnt, schließt sich das GUI, andernfalls bleibt es offen
    OnPlayerSwitchMenuItem(playerid,menuid,itemid);

    Beispiel:

    /* SA-MP ShowPlayerChooseMenu Testscript
    *
    * (c) Copyright 20011-2012, RealGamer
    *
    */


    #include a_samp
    #include ChooseMenu


    main(){}


    new Text:Textdraw7,Text:Textdraw6,Text:Textdraw5;
    public OnGameModeInit()
    {
    Textdraw7 = TextDrawCreate(247.000000, 339.000000, "Zeile1");
    Textdraw5 = TextDrawCreate(245.000000, 315.000000, "Zeile2");
    Textdraw6 = TextDrawCreate(246.000000, 327.000000, "Zeile3");
    return 1;
    }
    public OnPlayerCommandText(playerid,cmdtext[])
    {
    if(!strcmp(cmdtext,"/test"))
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    ShowPlayerChooseMenu(playerid,0,3,x,y,z+4.0,x+5.0,y+1.0,z+4.0);
    LinkTextDrawToMenu(Textdraw7,playerid,0,0);
    LinkTextDrawToMenu(Textdraw6,playerid,0,1);
    LinkTextDrawToMenu(Textdraw5,playerid,0,2);
    LinkTextDrawToMenu(Textdraw5,playerid,0,1);
    SendClientMessage(playerid,0xFFFFFFFF,"Menü geöffnet!");
    return 1;
    }
    if(!strcmp(cmdtext,"/testing"))
    {
    DelinkTextDrawFromMenu(Textdraw7,playerid,0,0);
    DelinkTextDrawFromMenu(Textdraw6,playerid,0,1);
    DelinkTextDrawFromMenu(Textdraw5,playerid,0,2);
    DelinkTextDrawFromMenu(Textdraw5,playerid,0,1);
    SendClientMessage(playerid,0xFFFFFFFF,"Textdraws entfernt!");
    return 1;
    }
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    SendClientMessage(playerid,0xFFFFFFFF,"Moinsen!");
    return 1;
    }



    public OnPlayerSpawn(playerid)
    {
    // if(GetPVarInt(playerid,"SpawnInclude")) return SetPVarInt(playerid,"SpawnInclude",0);
    SendClientMessage(playerid,0xFFFFFFFF,"YES!");
    return 1;
    }


    public OnPlayerSwitchMenuItem(playerid, menuid, itemid)
    {
    new str[128];
    format(str,sizeof str,"Menü %d, Item %d",menuid,itemid);
    SendClientMessage(playerid,0xFFFFFFFF,str);
    if(menuid == 0)
    {
    switch(itemid)
    {
    case 0:
    {
    SetPlayerCam(playerid,233.9133,-100.6737,1.4297+4.0,233.9133+5.0,-100.6737+1.0,1.4297+4.0);
    }
    case 1:
    {
    SetPlayerCam(playerid,233.3902,-128.8838,1.4297+4.0,233.3902+5.0,-128.8838+1.0,1.4297+4.0);
    }
    case 2:
    {
    SetPlayerCam(playerid,229.3171,-181.3029,1.4297+4.0,233.229+5.0,-181.3029+1.0,1.4297+4.0);
    }
    }
    }
    return 1;
    }
    public OnChooseMenuResponse(playerid, menuid, itemid)
    {
    new str[128];
    format(str,sizeof str,"Menü %d, Item %d",menuid,itemid);
    SendClientMessage(playerid,0xFFFFFFFF,str);
    if(itemid == 2) // Nur, wenn er das Item 2 gewählt hat, kommt er aus dem GUI raus
    return 1;
    return 0;
    }

    Vorschau:



    Installation:
    Platziert die eben heruntergeladene Datei "ChooseMenu" in eurem
    PAWNO/includes Ordner.
    Am Anfang des Scriptes schreibt ihr:
    #include <ChooseMenu>


    Vorschläge?
    Postet sie einfach hier im Thread

    Probleme?
    Support über PN&Thread

    Edit's:
    1. Update: Version 0.1.1
    2. Falsche Beschreibun
    g
    3. Update: Version 0.2.0

    Changelog:
    Rechnung behoben, die maxitems nicht richtig ausgab (v 0.1.1)
    De-/LinkTextDrawFrom-/ToMenu geaddet (v 0.2.0)
    SetPlayerCam geaddet (v 0.2.0)


    Download:
    PasteBin
    Oder Anhang

    5 Mal editiert, zuletzt von RG_ ()

  • Gefällt mir.
    Ich werde es nachher mal testen und eine genauere Bewertung schreiben.

  • Soo gleich erstes Update:


    Es gab einen Fehler in der Berechnung des nächsten Items, sobald die classid größer als maxitems war...



    Feedback & Vorschläge sind erwünscht :]


    /Edit: Die Anfangsbreschreibung war ja ma fail D:, habs ma berichtigt



    /Edit: v 0.2.0 is draußen...
    Neuerungen:

    SetPlayerCam(playerid,Float:CamX,Float:CamY,Float:CamZ,Float:LookX,Float:LookY,Float:LookZ); // vgl. SetPlayerCameraPos & LookAt
    LinkTextDrawToMenu(Text:TextdrawID,forplayerid,menuid,itemid); // "Attache" einen Textdraw zu einem Menü
    DelinkTextDrawFromMenu(Text:TextdrawID,fromplayerid,menuid,itemid); // "Detache" einen Textdraw von einem Menü

    SetPlayerCam fügt simplerweise einfach nur SetPlayerCameraPos & SetPlayerCameraLookAt zusammen
    Delink & LinkTextdraw verlinkt einen Textdraw zu einem Menü eines Spielers, sprich, ruft er das Item X vom Menü Y auf, bekommt er den Textdraw Z zu sehen

    2 Mal editiert, zuletzt von RG_ ()