[Include] MenuStore (Crie lojas utilizando TextDraws)
#1

• MenuStore.inc

Essa include permite vocк criar diversos tipos de lojas utilizando TextDraws, vocк pode especificar diversas informaзхes dos itens que serгo vendidos na loja, como descriзгo, rotaзхes, zoom, etc.

• Demonstraзгo



Clique na imagem para rodar o vнdeo.

• Funзхes

PHP Code:
stock MenuStore_AddItem(playerid, itemid, modelid, name[], price, description[] = EOS, Float:description_size = 0.0, bool:description_line_jump = true, stack = 1, Float:rotX = 0.0, Float:rotY = 0.0, Float:rotZ = 0.0, Float:zoom = 1.0) 
  • "itemid" - ID do item, vai servir como "chave", cada item deve possuir ID ъnico.
  • "modelid" - Modelo do item que vai ser exibido no Preview.
  • "name" - Nome do item.
  • "price" - Preзo do item.
  • "description" - Descriзгo do item.
  • "description_size" - Aumentar o tamanho da BOX de descriзгo, deixando 0 nгo aumentarб.
  • "description_line_jump" - Pulo de linha automбtico ou nгo.
  • "stack" - Acima de "1", o item poderб ser pilhado no carrinho.
  • "rotX", "rotY", "rotZ" - Rotaзгo do Preview.
  • "Float:zoom " - Zoom do Preview.
PHP Code:
stock MenuStore_Open(playerid, menuid[], store_name[], money_sign[] = MS_DEFAULT_MONEY_SIGN, button_confirm[] = MS_DEFAULT_CONFIRM) 
  • "menuid" - Funciona igual a include easyDialog, vocк pode colocar qualquer nome sem precisar definir.
  • "store_name" - Nome da loja.
  • "money_sign" - Sinal de dinheiro, o valor default й "$".
  • "button_confirm" - Nome do botгo de confirmar, o valor default й "Buy".
O sistema de identificaзгo do menu (menuid) й igual ao do easyDialogs, se vocк nгo sabe como funciona, veja o exemplo abaixo:

• Exemplo de Cуdigo

PHP Code:

if(strcmp(cmd, "/store", true) == 0)
{
    
MenuStore_AddItem(playerid, 1, 342, "Granade", 500, "Throw to explode.", 200);
    
MenuStore_AddItem(playerid, 2, 344, "Molotov", 500, "Throw to set fire to something.", 200);
    
MenuStore_AddItem(playerid, 3, 346, "9mm Pistol", 500, "Pistol with low firepower.");
    
MenuStore_AddItem(playerid, 4, 347, "Silenced 9mm", 500, "Pistol with low firepower.");
    
MenuStore_AddItem(playerid, 5, 348, "Desert Eagle", 500, "Pistol with high firepower.");
    
MenuStore_AddItem(playerid, 6, 349, "Shotgun", 500, "Normal Shotgun.");
    
MenuStore_AddItem(playerid, 7, 350, "Sawnoff Shotgun", 500, "Powerfull Shotgun.");
    
MenuStore_AddItem(playerid, 8, 351, "Combat Shotgun", 500, "Powerfull Shotgun.");
    
MenuStore_AddItem(playerid, 9, 352, "Micro SMG", 500, "Two-handed machine gun.");
    
MenuStore_AddItem(playerid, 10, 353, "MP5", 500, "Machine gun.");
    
MenuStore_AddItem(playerid, 11, 355, "AK-47", 500, "Powerfull Rifle.");
    
MenuStore_AddItem(playerid, 12, 356, "M4", 500, "Powerfull Rifle.");
    
MenuStore_AddItem(playerid, 13, 372, "Tec-9", 500, "Powerfull machine gun.");
    
MenuStore_AddItem(playerid, 14, 357, "Country Rifle", 500, "Normal Rifle.");
    
MenuStore_AddItem(playerid, 15, 358, "Sniper Rifle", 500, "Powerfull Rifle.");
    
MenuStore_Show(playerid, Weapon_Shop, "Shop Weapons");
    return 
1;
}
Store:Weapon_Shop(playerid, response, itemid, modelid, price, amount, itemname[])
{
    if(!
response)
        return 
true;
    if(
GetPlayerMoney(playerid) < price)
        return 
SendClientMessage(playerid, -1, "You don't have enough money.");
    if(
amount == 1) {
        
GivePlayerWeapon(playerid, GetWeaponIDFromModel(modelid), 200);
    }
    else {
        
GivePlayerWeapon(playerid, GetWeaponIDFromModel(modelid), amount);
    }
    
    new 
string[128];
    
format(string, 128, "You bought %dx %s", amount, itemname);
    
SendClientMessage(playerid, -1, string);
    
    
GivePlayerMoney(playerid, -price);
    return 
true;
}
stock GetWeaponIDFromModel(modelid)
{
    new 
idweapon;
    switch(
modelid)
    {
        case 
331: idweapon = 1; // Brass Knuckles
        
case 333: idweapon = 2; // Golf Club
        
case 334: idweapon = 3; // Nightstick
        
case 335: idweapon = 4; // Knife
        
case 336: idweapon = 5; // Baseball Bat
        
case 337: idweapon = 6; // Shovel
        
case 338: idweapon = 7; // Pool Cue
        
case 339: idweapon = 8; // Katana
           
case 341: idweapon = 9; // Chainsaw
           
case 321: idweapon = 10; // Double-ended Dildo
           
case 325: idweapon = 14; // Flowers
           
case 326: idweapon = 15; // Cane
           
case 342: idweapon = 16; // Grenade
           
case 343: idweapon = 17; // Tear Gas
        
case 344: idweapon = 18; // Molotov Cocktail
        
case 346: idweapon = 22; // 9mm
        
case 347: idweapon = 23; // Silenced 9mm
        
case 348: idweapon = 24; // Desert Eagle
        
case 349: idweapon = 25; // Shotgun
        
case 350: idweapon = 26; // Sawnoff
        
case 351: idweapon = 27; // Combat Shotgun
        
case 352: idweapon = 28; // Micro SMG/Uzi
        
case 353: idweapon = 29; // MP5
        
case 355: idweapon = 30; // AK-47
        
case 356: idweapon = 31; // M4
        
case 372: idweapon = 32; // Tec-9
        
case 357: idweapon = 33; // Country Rifle
        
case 358: idweapon = 34; // Sniper Rifle
        
case 359: idweapon = 35; // RPG
        
case 360: idweapon = 36; // HS Rocket
        
case 361: idweapon = 37; // Flamethrower
        
case 362: idweapon = 38; // Minigun
        
case 363: idweapon = 39;// Satchel Charge + Detonator
        
case 365: idweapon = 41; // Spraycan
        
case 366: idweapon = 42; // Fire Extinguisher
        
case 367: idweapon = 43; // Camera
    
}
    return 
idweapon;
} 
• Download

Github
Reply
#2

Muito bom, parabйns!
Reply
#3

Gostei, ficou muito bom a parte de adicionar vбrios itens no "cart".
Reply
#4

Em breve irei montar outros estilos de cores, mas quem quiser editar elas й sу abrir a include e alterar essas definiзхes:

PHP Code:

#define MS_COLOR_SELECT_TD    0xffffffFF
#define MS_COLOR_BACKGROUND_1 0x04586bFF
#define MS_COLOR_BACKGROUND_2 0x0486a4FF
#define MS_COLOR_BACKGROUND_ITEMSELECTED 0xffffff50
#define MS_COLOR_TEXT_MAIN 0xffffffFF
#define MS_COLOR_REMOVEITEMFROMCART    0xc64e52FF
#define MS_COLOR_BACKGROUND_CONFIRM 0x5eaf3aFF

#define MS_COLOR_DESCRIPTION_NAMEITEM MS_COLOR_TEXT_MAIN
#define MS_COLOR_DESCRIPTION_TEXT 0xffffffAA
#define MS_COLOR_DESCRIPTION_BACKGROUND_1 MS_COLOR_BACKGROUND_1
#define MS_COLOR_DESCRIPTION_BACKGROUND_2 MS_COLOR_BACKGROUND_2
#define MS_COLOR_DESCRIPTION_BGMODEL 0xffffff50 
Reply
#5

Muito bom, dar para fazer um sistema de vendar de carros
Reply
#6

FODA +REP
Reply
#7

Que Fooda NICE Mano
+REP
Reply
#8

Sensacional, bom trabalho.

Uma dica, podes reduzir o nъmero de linhas ao zerar as variбveis, dessa maneira:

PHP Code:
ms_TD_StoreName[playerid] = ms_TD_Next[playerid] = PlayerText:INVALID_TEXT_DRAW; 
De resto bom code!
Reply
#9

Update 1.1

- Correзхes e novas definiзхes para cores.

Fiz uma versгo BLACK, que combina mais com o SA-MP:


PHP Code:

#define MS_COLOR_SELECT_TD 0xffffffFF
#define MS_COLOR_BACKGROUND_1 0x04586bFF
#define MS_COLOR_BACKGROUND_2 0x0486a4FF
#define    MS_COLOR_BACKGROUND_ITEM MS_COLOR_BACKGROUND_1
#define MS_COLOR_BACKGROUND_ITEMSELECTED 0xffffff50
#define MS_COLOR_TEXT_MAIN 0xffffffFF
#define MS_COLOR_BACKGROUND_CONFIRM 0x5eaf3aFF
#define MS_COLOR_CART_REMOVEITEM 0xc64e52FF
#define MS_COLOR_CART_BACKGROUNDITEM MS_COLOR_BACKGROUND_ITEM
#define MS_COLOR_DESCRIPTION_NAMEITEM MS_COLOR_TEXT_MAIN
#define MS_COLOR_DESCRIPTION_TEXT 0xffffffAA
#define MS_COLOR_DESCRIPTION_BACKGROUND_1 MS_COLOR_BACKGROUND_1
#define MS_COLOR_DESCRIPTION_BACKGROUND_2 MS_COLOR_BACKGROUND_2
#define MS_COLOR_DESCRIPTION_BGMODEL 0xffffff50 
@Bruno

Bem lembrado, prуximo update vou dar uma reduzida nas linhas х/
Reply
#10

Poderia adicionar uma box invisнvel no texto de descriзгo, assim nгo seria necessбrio pular linha manualmente.

Bom trabalho!
Reply
#11

Quote:
Originally Posted by RodrigoMSR
Посмотреть сообщение
Poderia adicionar uma box invisнvel no texto de descriзгo, assim nгo seria necessбrio pular linha manualmente.

Bom trabalho!
Isso realmente funciona?

Obrigado х/
Reply
#12

Quote:
Originally Posted by CaioTJF
Посмотреть сообщение
Isso realmente funciona?

Obrigado х/
Sim, eu uso em alguns textos.
Reply
#13

Ficou muito bom, design show em!
Reply
#14

Update 2.0

- Nгo й mais preciso pular linha na descriзгo (ty Rodrigo)
- Adicionado botхes (<- ->) ao invйs dos caracteres << >>
- Agora sу mostra o menu de paginaзгo quando houver mais de uma pбgina disponнvel
- Novas definiзхes para cores
- Cores de default alterada para a versгo black

Reply
#15

Ficou bom.

+REP.
Reply
#16

Curti, vou usar +REP
Reply
#17

Muito legal, bastante dinвmico e dб pra explorar muita coisa ainda. REP+
Reply
#18

Уtimo trabalho, @CaioTJF!
Reply
#19

Bom Trabalho
Reply
#20

Um bom design, gostei
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)