* Hello, this interaction menu system originally created by Gammix has been modified by Straydet. The original work belongs entirely to Gammix, and all credits go to him for the initial development. This version includes my own modifications and improvements, which will be shown in the Features section.
GTA V themed interaction menus for SA-MP. Works almost the same way and so does the design. You can customize the menu, like changing the colors and background sprite. Menu callbacks are handled the same way easydialog.inc does.
- The
PreviewModelfor information was replaced with a notificationspriteto reduce Lag or FPS loss. - The function
TogglePlayerControllable(Freeze/Unfreeze) was added to activate when the menu is opened and closed (in all cases,Space,Enter,HidePlayerMenu). - The main
bannerwas changed to a dark red color. - The
FixTextstock was added forSpanish,Portuguese, and otherlanguagetexts. - The size of the item information
textwas slightly increased. - Some
documentationhas been added for guidance.
You can move through the menu using the 'W' (↑) or 'S' (↓) keys and the 'Up' (↑) or 'Down' (↓) keys.
You can select an item from the list using the 'Space' key - You can close the menu by pressing the 'Enter' key.
ShowPlayerMenu(playerid, menuid[], caption[], type[] = "SELECCIONE UNA OPCIÓN", captionTextColor = 0x1B1B1BFF, captionBoxColor = 0xAC3E36BB, captionSprite[] = "loadsc12:loadsc12"); Show player a GMenu!
- "menuid" - Just like easydialog include, you can put any name and you dont need to define it.
- "caption" - heading of menu
- "type" - Little text to descript menu (don't make this longer than 30 characters)
- "captionTextColor" - self explainatory
- "captionBoxColor" - self explainatory
- "captionSprite" - The background picture of caption
AddPlayerMenuItem(playerid, text[], info[] = ""); Add a listitem to your menu, plug'n'play feature. You can add anytime while the menu is shown.
- "text" - The listitem's text
- "info" - A side note/information about the listitem. Optional, leave this param empty for no information box will be shown
HidePlayerMenu(playerid); Hide any active GMenu from player.
The following list of macros, you can redefine before inclusion:
#define MENU_SOUND_UPDOWN \
1054 // the sound id which will be played when you go up/down listitems
#define MENU_SOUND_CLOSE \
1084 // the sound id which will be played when you close menu
#define MENU_SOUND_SELECT \
1083 // the sound id which will be played when you select a listitem
#define MENU_MAX_LISTITEMS \
24 // maximum listitems a menu can have, the array size holding menu information
#define MENU_MAX_LISTITEM_SIZE \
128 // maximum string size of a listitem
#define MENU_MAX_LISTITEMS_PERPAGE \
8 // how many lisitems you want to be shown in a page The following are constants (i.e. cannot be changed). You can use them in handling response in callback:
MENU_RESPONSE_UP // used in callback (when player press UP key to go upwards in menu)
MENU_RESPONSE_DOWN // used in callback (when player press DOWN key to go downwards in menu)
MENU_RESPONSE_SELECT // used in callback (when player press SPACE key to select a listitem)
MENU_RESPONSE_CLOSE // used in callback (when player press ENTER key to close menu) Shows the player a weapons menu when using the menuv command and displays a menu to change the color of their vehicle when using the tuning command:
[Notice how menu callbacks are handled, if you are not familiar with how easydialog.inc works]
#include <a_samp>
#include <gmenu>
#include <zcmd>
Menu:WEAPONS(playerid, response, listitem)
{
if (response == MENU_RESPONSE_SELECT)
{
switch (listitem)
{
case 0:
{
GivePlayerWeapon(playerid, 8, 1);
}
case 1:
{
GivePlayerWeapon(playerid, 9, 1);
}
case 2:
{
if (GetPlayerMoney(playerid) < 5000)
{
return SendClientMessage(playerid, 0xFF0002FF, "* Necesitas $5.000 para comprar un Granada.");
}
GivePlayerMoney(playerid, -5000);
GivePlayerWeapon(playerid, 16, 1);
}
case 3:
{
if (GetPlayerMoney(playerid) < 5000)
{
return SendClientMessage(playerid, 0xFF0002FF, "* Necesitas $5.000 para comprar un Molotov Cocktail.");
}
GivePlayerMoney(playerid, -5000);
GivePlayerWeapon(playerid, 18, 1);
}
case 4:
{
GivePlayerWeapon(playerid, 24, 50);
}
case 5:
{
if (GetPlayerMoney(playerid) < 10000)
{
return SendClientMessage(playerid, 0xFF0002FF, "* Necesitas $10.000 para comprar un RPG");
}
GivePlayerMoney(playerid, -10000);
GivePlayerWeapon(playerid, 35, 1);
}
case 6:
{
if (GetPlayerMoney(playerid) < 100000)
{
return SendClientMessage(playerid, 0xFF0002FF, "* Necesitas $100.000 para comprar una Minigun.");
}
GivePlayerMoney(playerid, -100000);
GivePlayerWeapon(playerid, 38, 1000);
}
case 7:
{
if (GetPlayerMoney(playerid) < 350)
{
return SendClientMessage(playerid, 0xFF0002FF, "* Necesitas $350 para comprar una Combat Shotgun.");
}
GivePlayerMoney(playerid, -350);
GivePlayerWeapon(playerid, 27, 1000);
}
}
}
return 1;
}
//----------------------------------------------------------------------------//
Menu:TUNING(playerid, response, listitem)
{
new idveh = GetPlayerVehicleID(playerid);
if (response == MENU_RESPONSE_SELECT)
{
switch (listitem)
{
case 0:
{
ChangeVehicleColor(idveh, 0, 0);
}
case 1:
{
ChangeVehicleColor(idveh, 1, 1);
}
case 2:
{
ChangeVehicleColor(idveh, 2, 2);
}
case 3:
{
ChangeVehicleColor(idveh, 3, 3);
}
case 4:
{
ChangeVehicleColor(idveh, 4, 4);
}
case 5:
{
ChangeVehicleColor(idveh, 5, 5);
}
case 6:
{
ChangeVehicleColor(idveh, 6, 6);
}
case 7:
{
ChangeVehicleColor(idveh, 7, 7);
}
}
}
return 1;
}
//----------------------------------------------------------------------------//
CMD:menuv(playerid)
{
ShowPlayerMenu(playerid, WEAPONS, "Menu de Armas");
AddPlayerMenuItem(playerid, "Katana");
AddPlayerMenuItem(playerid, "Chainsaw");
AddPlayerMenuItem(playerid, "Grenade", "Arma letal, te costará ~g~~h~$5,000 ~w~~h~por granada!");
AddPlayerMenuItem(playerid, "Molotov Cocktail", "Arma letal, te costará ~g~~h~$5,000 ~w~~h~por molotov!");
AddPlayerMenuItem(playerid, "Desert Eagle");
AddPlayerMenuItem(playerid, "RPG", "Arma letal, te costará ~g~~h~$10,000 ~w~~h~por rocket!");
AddPlayerMenuItem(playerid, "Minigun", "La mejor arma del juego, sin duda vale ~g~~h~$100,000!");
AddPlayerMenuItem(playerid, "Combat Shotgun", "Precio: ~g~~h~$350");
return 1;
}
//----------------------------------------------------------------------------//
CMD:tuning(playerid)
{
if(!IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid, 0xFF0000FF, "* {FFFFFF}Debes estar dentro de un vehículo para usar este comando.");
return 1;
}
ShowPlayerMenu(playerid, TUNING, "Tuning - Colores");
AddPlayerMenuItem(playerid, "~l~0 (000000)");
AddPlayerMenuItem(playerid, "~w~~h~1 (F5F5F5)");
AddPlayerMenuItem(playerid, "~b~~h~2 (2A77A1)");
AddPlayerMenuItem(playerid, "~r~3 (840410)");
AddPlayerMenuItem(playerid, "~g~4 (263739)");
AddPlayerMenuItem(playerid, "~r~~h~~h~~h~~h~~h~5 (86446E)");
AddPlayerMenuItem(playerid, "~y~6 (D78E10)");
AddPlayerMenuItem(playerid, "~b~~h~~h~7 (4C757F)");
return 1;
}




