Portal SAMP
[Include] FMenu (Versão Melhorada) - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Lançamentos (https://portalsamp.com/forumdisplay.php?fid=26)
+---- Fórum: Includes (https://portalsamp.com/forumdisplay.php?fid=27)
+---- Tópico: [Include] FMenu (Versão Melhorada) (/showthread.php?tid=4986)



FMenu (Versão Melhorada) - Mateus Lima - 19/03/2025

FMenu (Versão Melhorada)

Repositório: https://github.com/tommyst0/FMenu
Uso da Include:
[Imagem: example01.png][Imagem: example02.png][Imagem: example03.png]

Código:
CMD:teste(playerid)
{
    if(Menu_Showing(playerid))return 1;

    Menu_Add(playerid, "Corote","~g~R$350");
    Menu_Add(playerid, "Ypioca","~g~R$500");
    Menu_Add(playerid, "Sprunk","~g~R$50");
    Menu_SetColor(playerid, 0x1b90fcFF);
    Menu_Show(playerid, MENU_COMPRAS_ALHAMBA, "Alhamba", "Menu de Compras");
    return 1;
}

KeyMenu:MENU_COMPRAS_ALHAMBA(playerid, index)
{
    switch(index)
    {
        case 0: //"Corote"
        {
            SetPlayerCameraPos(playerid, 501.959564, -22.952260, 1002.033569);
            SetPlayerCameraLookAt(playerid, 506.957946, -22.846529, 1002.103881, CAMERA_MOVE);
        }
        case 1: //"Ypioca"
        {
            SetPlayerCameraPos(playerid, 501.885833, -23.061210, 1001.059020);
            SetPlayerCameraLookAt(playerid, 506.851867, -22.854217, 1000.515197, CAMERA_MOVE);
        }
        case 2: //"sprunk"
        {
            SetPlayerCameraPos(playerid, 502.206542, -18.295412, 1001.397827);
            SetPlayerCameraLookAt(playerid, 505.349182, -14.705638, 999.902038, CAMERA_MOVE);
        }
    }
    return 1;
}

Menu:MENU_COMPRAS_ALHAMBA(playerid, response, listitem)
{
    if(response)
    {
        switch(listitem)
        {
            case 0: // corote 350
            {
                if(GetPlayerMoney(playerid) < 350)return SendClientMessage(playerid, -1, "<!> Voce nao tem todo esse dinheiro!");
                // ...
            }
            case 1: // ypioca 500
            {
                if(GetPlayerMoney(playerid) < 500)return SendClientMessage(playerid, -1, "<!> Voce nao tem todo esse dinheiro!");
                // ...
            }
            case 2: // spunk 50
            {
                if(GetPlayerMoney(playerid) < 50)return SendClientMessage(playerid, -1, "<!> Voce nao tem todo esse dinheiro!");
                // ...
            }
        }
    }
    else
    {
        SetCameraBehindPlayer(playerid);
        Menu_Hide(playerid);
    }
    return 1;
}


Todas as Funções da Include (Eu documentei a função de cada uma no
menu.inc!):
Código:
Menu_Add(playerid, const item[64], const item2[64] = "_")
Menu_Show(playerid, function, title, header)
Menu_Hide(playerid)
Menu_SetColor(playerid, color)
Menu_ShowPage(playerid, page = 0)
Menu_SelectIndex(playerid, index, cur_index = -1, bool:show = true)
Menu_CurrentItem(playerid)
Menu_GetMaxItemPerPage(playerid, cur_page)
Menu_Showing(playerid)
Menu_GetMaxPage(playerid)
Selecionar(playerid, response)
ShowMiniMenu(playerid)
HideMiniMenu(playerid)

Código:
- Função de gancho das keys pressionadas KeyMenu:...(playerid, index)
- Função OnMenuResponse foi substituida pelo macro Menu:...(playerid, response, listitem)
- O Sistema agora é em base de strings não em menuid
- Adicionado a possibilidade de colocar sub-item (do lado direito do menu)
- Adicionado suporte a plataforma Android
- Melhor organização da Include
- Adicionado a Documentação total da include
- Foi adicionado textdraw-streamer para o melhor manuseio da include


Olá! Espero que tenham sentido saudade da minha presença aqui no fórum, estou aqui desde do meu inicio no samp em meados de 2016 até o presente momento, amo essa comunidade e o gta em si, não poderia ficar sem tentar ajudar-los de alguma forma ainda mais nesse ano de escassez da própia comunidade. Mais uma vez troquei de discord e de quase todas as redes sociais, caso vocês precisem entrar em contato comigo, vá no meu novo discord: tommy0stardust
OBS:
sou moderador da Vision Team, caso estejam lá só me marcarem no chat que eu irei responder-lo o quanto antes!