SA-MP Forums

SA-MP Forums (https://forum.sa-mp.com/index.php)
-   Includes (https://forum.sa-mp.com/forumdisplay.php?f=83)
-   -   [Include] MenuStore (Build dynamic stores with TextDraws) (https://forum.sa-mp.com/showthread.php?t=644913)

CaioTJF 16/05/2020 06:21 PM

Re: MenuStore (Build dynamic stores with TextDraws)
 
Who is having an error compiling, I recommend first trying to use the community compiler, if it persists, undo this commit:

https://github.com/Coystark/MenuStor...7bde2d16f2ce51

Comunity compiler: https://github.com/pawn-lang/compiler/releases

hopeonxanny 12/07/2020 03:43 PM

Re: MenuStore (Build dynamic stores with TextDraws)
 
Quote:

Originally Posted by jasperschellekens (Post 4146273)
Since I can't reach the author of this include, I've fixed it myself:
pawn Code:
/*
    MenuStore - Version 4.2
    Created by CaioTJF
*/



/* 
    You can NOT change
*/


#define MS_MAX_ITEMS_PER_PAGE 6
#define MS_MAX_ITEMS_CART 4
#define MSTORE_INVALID_ITEM_ID -1
#define MS_MAX_SIZE_DESCRIPTION 7.5

/*
    You can change
*/


#define MS_MAX_ITEMS (MS_MAX_ITEMS_PER_PAGE*5) // --> Limit of 5 Pages
#define MS_DEFAULT_MONEY_SIGN "$"
#define MS_DEFAULT_CONFIRM "Buy"

#define MS_COLOR_SELECT_TD 0xffffffFF
#define MS_COLOR_TEXT_MAIN 0xffffffFF

#define MS_COLOR_BACKGROUND_1 0x00000080
#define MS_COLOR_BACKGROUND_2 0x2c2c2cAA
#define MS_COLOR_BACKGROUND_ITEM 0x3e3e3eFF
#define MS_COLOR_BACKGROUND_ITEMSELECTED 0xffffff50
#define MS_COLOR_BACKGROUND_CONFIRM 0x5eaf3aFF
#define MS_COLOR_BACKGROUND_MODEL 0xffffff50

#define MS_COLOR_CART_REMOVEITEM 0xcc30a0aFF
#define MS_COLOR_CART_BACKGROUND_ITEM 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_BACKGROUND_MODEL 0xffffff50

#define MS_COLOR_TITLE_DIALOG "{ffffff}"
#define MS_COLOR_TEXT_DIALOG "{ffffff}"

#define MS_MSG_TITLE_DIALOG "Choose quantity"
#define MS_MSG_DIALOG "Enter the quantity you want to buy"

#define MS_WORD_LIMIT "Limit"
#define MS_WORD_CLOSE "Close"
#define MS_WORD_TOTAL "Total"
#define MS_WORD_GO "Go"
#define MS_WORD_CANCEL "Cancel"
#define MS_WORD_CART "Cart"

#define MS_INTERVAL_DOUBLECLICK 300
#define DIALOG_MSTORE 23132

//-------------------------------------------

#if !defined isnull
    #define isnull(%1) \
        ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
#endif

#define STORE:%0(%1) \
    forward store_%0(%1); public store_%0(%1)

#define Store:%0(%1) \
    STORE:%0(%1)

#define MenuStore_Show(%0,%1, \
    MenuStore_Open(%0, #%1,

enum enum_ms_Items
{
    ms_ItemID,
    ms_ItemModel,
    ms_ItemPrice,
    ms_ItemStack,
    ms_ItemName[32 char],
    ms_ItemDescription[256 char],
    Float:ms_ItemDescriptionBonus,
    bool:ms_ItemLineJump,
    Float:ms_ItemPreviewRot[4]
}      

static ms_Items[MAX_PLAYERS][MS_MAX_ITEMS][enum_ms_Items];

enum enum_ms_Info
{
    ms_TotalItems,
    ms_CurrentPage,
    bool:ms_IsOpen,
    ms_StoreID[32],
    ms_MoneySign[32],
    ms_DoubleClick,
    ms_DoubleClickRow,
    ms_Selected,
    bool:ms_ToggleControll
}

static ms_Info[MAX_PLAYERS][enum_ms_Info];

enum enum_ms_Cart
{
    ms_Cart_ItemID[MS_MAX_ITEMS_CART],
    ms_Cart_ItemPrice[MS_MAX_ITEMS_CART],
    ms_Cart_ItemAmount[MS_MAX_ITEMS_CART]

}

static ms_Cart[MAX_PLAYERS][enum_ms_Cart];

static ms_String[256];

// -- Global Textdraws

static Text:ms_TD_Backgrounds[2] = {Text:INVALID_TEXT_DRAW, ...};
static Text:ms_TD_Next = Text:INVALID_TEXT_DRAW;
static Text:ms_TD_Previous = Text:INVALID_TEXT_DRAW;

static Text:ms_TD_Cart_Backgrounds[2] = {Text:INVALID_TEXT_DRAW, ...};
static Text:ms_TD_Cart_BackgroundConfirm = Text:INVALID_TEXT_DRAW;
static Text:ms_TD_Cart_CartName = Text:INVALID_TEXT_DRAW;

// -- Player Textdraws

static PlayerText:ms_TD_ItemName[MAX_PLAYERS][MS_MAX_ITEMS_PER_PAGE];
static PlayerText:ms_TD_ItemPrice[MAX_PLAYERS][MS_MAX_ITEMS_PER_PAGE];
static PlayerText:ms_TD_ItemModel[MAX_PLAYERS][MS_MAX_ITEMS_PER_PAGE];
static PlayerText:ms_TD_ItemBackground[MAX_PLAYERS][MS_MAX_ITEMS_PER_PAGE];
static PlayerText:ms_TD_StoreName[MAX_PLAYERS] = {PlayerText:INVALID_TEXT_DRAW, ...};
static PlayerText:ms_TD_Pagination[MAX_PLAYERS] = {PlayerText:INVALID_TEXT_DRAW, ...};
static PlayerText:ms_TD_DescriptionItemName[MAX_PLAYERS] = {PlayerText:INVALID_TEXT_DRAW, ...};
static PlayerText:ms_TD_DescriptionItemText[MAX_PLAYERS] = {PlayerText:INVALID_TEXT_DRAW, ...};
static PlayerText:ms_TD_DescriptionItemModel[MAX_PLAYERS] = {PlayerText:INVALID_TEXT_DRAW, ...};
static PlayerText:ms_TD_DescriptionBackground[MAX_PLAYERS][2];

static PlayerText:ms_TD_Cart_ItemBackground[MAX_PLAYERS][MS_MAX_ITEMS_CART];
static PlayerText:ms_TD_Cart_ItemName[MAX_PLAYERS][MS_MAX_ITEMS_CART];
static PlayerText:ms_TD_Cart_ItemClose[MAX_PLAYERS][MS_MAX_ITEMS_CART];
static PlayerText:ms_TD_Cart_BuyName[MAX_PLAYERS] = {PlayerText:INVALID_TEXT_DRAW, ...};
static PlayerText:ms_TD_Cart_Total[MAX_PLAYERS] = {PlayerText:INVALID_TEXT_DRAW, ...};

forward PlayerText:CreatePlayerTextDrawEx(playerid, Float:x, Float:y, text[], Float:size_x, Float:size_y, Float:textsize_x, Float:textsize_y, align, color, usebox, boxcolor, shadow, outline, bg_color, font, proportional, model = 0, Float:preview_x= 0.0, Float:preview_y = 0.0, Float:preview_z = 0.0, Float:preview_zoom = 1.0, selectable = 0);
forward Text:CreateTextDrawEx(Float:x, Float:y, text[], Float:size_x, Float:size_y, Float:textsize_x, Float:textsize_y, align, color, usebox, boxcolor, shadow, outline, bg_color, font, proportional, model = 0, Float:preview_x = 0.0, Float:preview_y = 0.0, Float:preview_z = 0.0, Float:preview_zoom = 0.0, selectable = 0);

//-------------------------------------------

public OnGameModeInit()
{
    ms_TD_Backgrounds[0]  = CreateTextDrawEx(145.500000, 130.499969, "box",
                                        0.000000, 30.198539,
                                        322.000000, 0.000000,
                                        1,
                                        -1,
                                        1,
                                        MS_COLOR_BACKGROUND_1,
                                        0,
                                        0,
                                        255,
                                        1,
                                        1);

    ms_TD_Backgrounds[1] = CreateTextDrawEx(153.000000, 149.383575, "box",
                                        0.000000, 26.226503,
                                        315.000000, 0.000000,
                                        1,
                                        -1,
                                        1,
                                        MS_COLOR_BACKGROUND_2,
                                        0,
                                        0,
                                        255,
                                        1,
                                        1);

    ms_TD_Next = CreateTextDrawEx(251.485229, 390.033355, "ld_beat:right",
                            0.000000, 0.000000,
                            11.000000, 13.000000,
                            1,
                            MS_COLOR_TEXT_MAIN,
                            0,
                            0,
                            0,
                            0,
                            255,
                            4,
                            1,
                            0,
                            0.0, 0.0, 0.0, 0.0,
                            1);

    ms_TD_Previous = CreateTextDrawEx(201.945220, 390.033355, "ld_beat:left",
                                0.000000, 0.000000,
                                11.000000, 13.000000,
                                1,
                                MS_COLOR_TEXT_MAIN,
                                0,
                                0,
                                0,
                                0,
                                255,
                                4,
                                1,
                                0,
                                0.0, 0.0, 0.0, 0.0,
                                1);

    ms_TD_Cart_Backgrounds[0] = CreateTextDrawEx(333.201141, 271.666656, "box",
                                            0.000000, 14.450012,
                                            516.000000, 0.000000,
                                            1,
                                            -1,
                                            1,
                                            MS_COLOR_BACKGROUND_1,
                                            0,
                                            0,
                                            255,
                                            1,
                                            1);

    ms_TD_Cart_Backgrounds[1] = CreateTextDrawEx(341.000000, 290.133575, "box",
                                            0.000000, 10.134258,
                                            508.000000, 0.000000,
                                            1,
                                            -1,
                                            1,
                                            MS_COLOR_BACKGROUND_2,
                                            0,
                                            0,
                                            255,
                                            1,
                                            1);

    ms_TD_Cart_BackgroundConfirm = CreateTextDrawEx(444.899230, 390.233489, "box",
                                    0.000000, 0.850001,
                                    507.701690, 15.000000,
                                    1,
                                    -1,
                                    1,
                                    MS_COLOR_BACKGROUND_CONFIRM,
                                    0,
                                    0,
                                    255,
                                    1,
                                    1,
                                    0,
                                    0.0, 0.0, 0.0, 0.0,
                                    1);

    ms_TD_Cart_CartName = CreateTextDrawEx(339.143798, 270.733520, MS_WORD_CART,
                                    0.310357, 1.434998,
                                    508.000000, 0.0,
                                    1,
                                    MS_COLOR_TEXT_MAIN,
                                    1,
                                    0xffffff00,
                                    0,
                                    0,
                                    255,
                                    2,
                                    1);

    #if defined MS_OnGameModeInit
        return MS_OnGameModeInit();
    #else
        return 1;
    #endif
}

#if defined _ALS_OnGameModeInit
    #undef OnGameModeInit
#else
    #define _ALS_OnGameModeInit
#endif
#define OnGameModeInit MS_OnGameModeInit

#if defined MS_OnGameModeInit
    forward MS_OnGameModeInit();
#endif

//-------------------------------------------

public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
    if(ms_Info[playerid][ms_ToggleControll])
    {
        for(new i = 0; i < MS_MAX_ITEMS_PER_PAGE; i++)
        {
            if(playertextid == ms_TD_ItemBackground[playerid][i])
            {
                new index = i+(MS_MAX_ITEMS_PER_PAGE * (ms_Info[playerid][ms_CurrentPage] - 1));   

                // --> Doubleclick
                if((GetTickCount() - ms_Info[playerid][ms_DoubleClick]) < MS_INTERVAL_DOUBLECLICK && ms_Info[playerid][ms_DoubleClickRow] == i)
                {

                    if(ms_Items[playerid][index][ms_ItemStack] > 1)
                    {
                        MenuStore_ToggleControll(playerid, false);
                        MenuStore_SelectRow(playerid, i);
                        format(ms_String, sizeof(ms_String), ""#MS_COLOR_TEXT_DIALOG""#MS_MSG_DIALOG" ("#MS_WORD_LIMIT": %d)", ms_Items[playerid][index][ms_ItemStack]);
                        ShowPlayerDialog(playerid, DIALOG_MSTORE, DIALOG_STYLE_INPUT, ""#MS_COLOR_TITLE_DIALOG""#MS_MSG_TITLE_DIALOG":", ms_String, MS_WORD_GO, MS_WORD_CANCEL);
                    }
                    else
                    {
                        MenuStore_AddToCart(playerid, ms_Items[playerid][index][ms_ItemID], ms_Items[playerid][index][ms_ItemPrice], ms_Items[playerid][index][ms_ItemStack]);
                        MenuStore_UnselectRow(playerid);
                        MenuStore_CloseDescription(playerid);
                    }

                    ms_Info[playerid][ms_DoubleClickRow] = -1;
                    ms_Info[playerid][ms_DoubleClick] = 0;
                    return true;
                }
                else
                {
                    ms_Info[playerid][ms_DoubleClickRow] = i;
                    ms_Info[playerid][ms_DoubleClick] = GetTickCount();
                }

                if(ms_Info[playerid][ms_Selected] == i)
                {
                    MenuStore_UnselectRow(playerid);
                    MenuStore_CloseDescription(playerid);
                    return true;
                }
                else if(ms_Info[playerid][ms_Selected] != -1)
                    MenuStore_UnselectRow(playerid);

                MenuStore_SelectRow(playerid, i);
                MenuStore_OpenDescription(playerid, index);
                return true;
            }
        }

        for(new row = 0; row < MS_MAX_ITEMS_CART; row++)
        {
            if(playertextid == ms_TD_Cart_ItemBackground[playerid][row])
            {
                MenuStore_RemoveFromCart(playerid, row);
                return true;
            }
        }
    }

    #if defined MS_OnPlayerClickPlayerTD
        return MS_OnPlayerClickPlayerTD(playerid, playertextid);
    #else
        return 1;
    #endif
}


#if defined _ALS_OnPlayerClickPlayerTD
    #undef OnPlayerClickPlayerTextDraw
#else
    #define _ALS_OnPlayerClickPlayerTD
#endif
#define OnPlayerClickPlayerTextDraw MS_OnPlayerClickPlayerTD

#if defined MS_OnPlayerClickPlayerTD
    forward MS_OnPlayerClickPlayerTD(playerid, PlayerText:playertextid);
#endif

//-------------------------------------------

public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
    if(clickedid == Text:INVALID_TEXT_DRAW && MenuStore_IsOpen(playerid) && ms_Info[playerid][ms_ToggleControll])
    {
        new storeid[32] = "store_";
        strcat(storeid, ms_Info[playerid][ms_StoreID]);
        CallLocalFunction(storeid, "iiiiiis", playerid, false, MSTORE_INVALID_ITEM_ID, 0, 0, 0, "N/A");
        MenuStore_Close(playerid);
        return true;
    }
    else if(clickedid == Text:INVALID_TEXT_DRAW && !ms_Info[playerid][ms_ToggleControll])
    {
        SelectTextDraw(playerid, MS_COLOR_SELECT_TD);
        return true;
    }

    if(ms_Info[playerid][ms_ToggleControll])
    {
        if(clickedid == ms_TD_Next)
        {
            if(ms_Info[playerid][ms_CurrentPage] < MenuStore_GetNumbersOfPage(playerid))
            {
                ms_Info[playerid][ms_CurrentPage]++;
                MenuStore_SetPage(playerid, ms_Info[playerid][ms_CurrentPage]);
                MenuStore_UnselectRow(playerid);
                return true;
            }
        }

        if(clickedid == ms_TD_Previous)
        {
            if(ms_Info[playerid][ms_CurrentPage] > 1)
            {
                ms_Info[playerid][ms_CurrentPage]--;
                MenuStore_SetPage(playerid, ms_Info[playerid][ms_CurrentPage]);
                MenuStore_UnselectRow(playerid);
                return true;
            }
        }

        if(clickedid == ms_TD_Cart_BackgroundConfirm)
        {
            if(MenuStore_GetTotalItemsInCart(playerid) != 0)
            {
                new storeid[32] = "store_", itemid;
                strcat(storeid, ms_Info[playerid][ms_StoreID]);

                for(new i = 0; i < MS_MAX_ITEMS_CART; i++)
                {
                    itemid = ms_Cart[playerid][ms_Cart_ItemID][i];
                    if(itemid != MSTORE_INVALID_ITEM_ID)
                    {
                        CallLocalFunction(storeid, "iiiiiis", playerid, true, itemid, MenuStore_GetItemModelByID(playerid, itemid), (ms_Cart[playerid][ms_Cart_ItemPrice][i] * ms_Cart[playerid][ms_Cart_ItemAmount][i]), ms_Cart[playerid][ms_Cart_ItemAmount][i], MenuStore_GetItemNameByID(playerid, itemid));
                    }
                }

                MenuStore_Close(playerid);
            }
            return true;
        }
    }

    #if defined MS_OnPlayerClickTextDraw
        return MS_OnPlayerClickTextDraw(playerid, clickedid);
    #else
        return 1;
    #endif
}


#if defined _ALS_OnPlayerClickTextDraw
    #undef OnPlayerClickTextDraw
#else
    #define _ALS_OnPlayerClickTextDraw
#endif
#define OnPlayerClickTextDraw MS_OnPlayerClickTextDraw

#if defined MS_OnPlayerClickTextDraw
    forward MS_OnPlayerClickTextDraw(playerid, Text:clickedid);
#endif

//-------------------------------------------

public OnPlayerConnect(playerid)
{
    for(new i = 0; i < MS_MAX_ITEMS_PER_PAGE; i++)
    {
        ms_TD_ItemName[playerid][i] = PlayerText:INVALID_TEXT_DRAW;
        ms_TD_ItemPrice[playerid][i] = PlayerText:INVALID_TEXT_DRAW;
        ms_TD_ItemModel[playerid][i] = PlayerText:INVALID_TEXT_DRAW;
        ms_TD_ItemBackground[playerid][i] = PlayerText:INVALID_TEXT_DRAW;
    }

    ms_TD_StoreName[playerid] = PlayerText:INVALID_TEXT_DRAW;

    ms_TD_DescriptionItemName[playerid] = PlayerText:INVALID_TEXT_DRAW;
    ms_TD_DescriptionItemText[playerid] = PlayerText:INVALID_TEXT_DRAW;
    ms_TD_DescriptionItemModel[playerid] = PlayerText:INVALID_TEXT_DRAW;
    ms_TD_DescriptionBackground[playerid][0] = PlayerText:INVALID_TEXT_DRAW;
    ms_TD_DescriptionBackground[playerid][1] = PlayerText:INVALID_TEXT_DRAW;
   
    for(new i = 0; i < MS_MAX_ITEMS_CART; i++)
    {
        ms_TD_Cart_ItemBackground[playerid][i] = PlayerText:INVALID_TEXT_DRAW;
        ms_TD_Cart_ItemName[playerid][i] = PlayerText:INVALID_TEXT_DRAW;
        ms_TD_Cart_ItemClose[playerid][i] = PlayerText:INVALID_TEXT_DRAW;
    }

    ms_TD_Cart_BuyName[playerid] = PlayerText:INVALID_TEXT_DRAW;
    ms_TD_Cart_Total[playerid] = PlayerText:INVALID_TEXT_DRAW;

    MenuStore_ResetVariables(playerid);

    #if defined MS_OnPlayerConnect
        return MS_OnPlayerConnect(playerid);
    #else
        return 1;
    #endif
}

#if defined _ALS_OnPlayerConnect
    #undef OnPlayerConnect
#else
    #define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect MS_OnPlayerConnect

#if defined MS_OnPlayerConnect
    forward MS_OnPlayerConnect(playerid);
#endif

//-------------------------------------------

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_MSTORE)
    {
        MenuStore_ToggleControll(playerid, true);
        MenuStore_CloseDescription(playerid);

        if(!response || ms_Info[playerid][ms_Selected] == -1 || isnull(inputtext))
        {
            MenuStore_UnselectRow(playerid);
            return true;
        }  

        new index = ms_Info[playerid][ms_Selected]+(MS_MAX_ITEMS_PER_PAGE * (ms_Info[playerid][ms_CurrentPage] - 1));
        MenuStore_UnselectRow(playerid);

        if(strval(inputtext) < 1 || strval(inputtext) > ms_Items[playerid][index][ms_ItemStack])
            return true;

        MenuStore_AddToCart(playerid, ms_Items[playerid][index][ms_ItemID], ms_Items[playerid][index][ms_ItemPrice], strval(inputtext));
        return true;
    }

    #if defined MS_OnDialogResponse
        return MS_OnDialogResponse(playerid, dialogid, response, listitem, inputtext);
    #else
        return 1;
    #endif
}

#if defined _ALS_OnDialogResponse
    #undef OnDialogResponse
#else
    #define _ALS_OnDialogResponse
#endif
#define OnDialogResponse MS_OnDialogResponse

#if defined MS_OnDialogResponse
    forward MS_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
#endif

//-------------------------------------------

stock MenuStore_SetPage(playerid, pageid)
{
    new Float:ms_Item_Name_Base_X = 190.000000,
        Float:ms_Item_Name_Base_Y = 153.933349,
        Float:ms_Item_Price_Base_X = 311.100158,
        Float:ms_Item_Price_Base_Y = 173.217605,
        Float:ms_Item_Model_Base_X = 158.699859,
        Float:ms_Item_Model_Base_Y = 156.116775,
        Float:ms_Item_Background_Base_X = 158.000000,
        Float:ms_Item_Background_Base_Y = 155.200027,
        lane_break = 0,
        Float:padding = 39.0,
        start_index, end_index,
        current_row = -1;

    start_index = MS_MAX_ITEMS_PER_PAGE * (pageid - 1);
    end_index = start_index + MS_MAX_ITEMS_PER_PAGE;

    if (ms_Info[playerid][ms_TotalItems] % end_index == ms_Info[playerid][ms_TotalItems]) {
        end_index = start_index + ms_Info[playerid][ms_TotalItems] % MS_MAX_ITEMS_PER_PAGE;
    }

    // Remove any previous
    for(new i = 0; i < MS_MAX_ITEMS_PER_PAGE; i++)
    {
        RemovePlayerTD(playerid, ms_TD_ItemBackground[playerid][i]);
        RemovePlayerTD(playerid, ms_TD_ItemName[playerid][i]);
        RemovePlayerTD(playerid, ms_TD_ItemPrice[playerid][i]);
        RemovePlayerTD(playerid, ms_TD_ItemModel[playerid][i]);
    }

    RemovePlayerTD(playerid, ms_TD_Pagination[playerid]);

    // Write
    for(new i = start_index; i < end_index; i++)
    {
        current_row++;

        if(lane_break != 0)
        {
            ms_Item_Name_Base_Y += padding;
            ms_Item_Price_Base_Y += padding;
            ms_Item_Model_Base_Y += padding;
            ms_Item_Background_Base_Y += padding;
        }

        ms_TD_ItemBackground[playerid][current_row] = CreatePlayerTextDrawEx(playerid, ms_Item_Background_Base_X, ms_Item_Background_Base_Y, "box",
                                            0.000000, 3.299997,
                                            311.000000, 22.000000,
                                            1,
                                            -1,
                                            1,
                                            MS_COLOR_BACKGROUND_ITEM,
                                            0,
                                            0,
                                            255,
                                            1,
                                            1,
                                            0,
                                            0.0, 0.0, 0.0, 1.0,
                                            1);

        ms_TD_ItemName[playerid][current_row] = CreatePlayerTextDrawEx(playerid, ms_Item_Name_Base_X, ms_Item_Name_Base_Y, ms_Items[playerid][i][ms_ItemName][0],
                                        0.231024, 1.198331,
                                        310.000000, 0.0,
                                        1,
                                        MS_COLOR_TEXT_MAIN,
                                        1,
                                        0xffffff00,
                                        0,
                                        0,
                                        255,
                                        2,
                                        1);

        format(ms_String, sizeof(ms_String), "%s%d", ms_Info[playerid][ms_MoneySign], ms_Items[playerid][i][ms_ItemPrice]);
        ms_TD_ItemPrice[playerid][current_row] = CreatePlayerTextDrawEx(playerid, ms_Item_Price_Base_X, ms_Item_Price_Base_Y, ms_String,
                                        0.283500, 1.227498,
                                        0.0, 0.0,
                                        3,
                                        MS_COLOR_TEXT_MAIN,
                                        0,
                                        0,
                                        0,
                                        0,
                                        255,
                                        2,
                                        1);

        ms_TD_ItemModel[playerid][current_row] = CreatePlayerTextDrawEx(playerid, ms_Item_Model_Base_X, ms_Item_Model_Base_Y, "",
                                        0.000000, 0.000000,
                                        29.000000, 28.000000,
                                        1,
                                        -1,
                                        0,
                                        0,
                                        0,
                                        0,
                                        MS_COLOR_BACKGROUND_MODEL,
                                        5,
                                        0,
                                        ms_Items[playerid][i][ms_ItemModel],
                                        ms_Items[playerid][i][ms_ItemPreviewRot][0], ms_Items[playerid][i][ms_ItemPreviewRot][1], ms_Items[playerid][i][ms_ItemPreviewRot][2], ms_Items[playerid][i][ms_ItemPreviewRot][3]);

        lane_break++;

        PlayerTextDrawShow(playerid, ms_TD_ItemBackground[playerid][current_row]);
        PlayerTextDrawShow(playerid, ms_TD_ItemName[playerid][current_row]);
        PlayerTextDrawShow(playerid, ms_TD_ItemPrice[playerid][current_row]);
        PlayerTextDrawShow(playerid, ms_TD_ItemModel[playerid][current_row]);
    }

    if(ms_Info[playerid][ms_TotalItems] > MS_MAX_ITEMS_PER_PAGE)
    {
        format(ms_String, sizeof(ms_String), "%d/%d", pageid, MenuStore_GetNumbersOfPage(playerid));
        ms_TD_Pagination[playerid] = CreatePlayerTextDrawEx(playerid, 232.255233, 388.983795, ms_String,
                                0.318008, 1.454166,
                                0.0, 0.0,
                                2,
                                MS_COLOR_TEXT_MAIN,
                                0,
                                0,
                                0,
                                0,
                                255,
                                2,
                                1);

        PlayerTextDrawShow(playerid, ms_TD_Pagination[playerid]);
    }
}


 stock MenuStore_GetNumbersOfPage(playerid)
 {
    if((ms_Info[playerid][ms_TotalItems] >= MS_MAX_ITEMS_PER_PAGE) && (ms_Info[playerid][ms_TotalItems] % MS_MAX_ITEMS_PER_PAGE) == 0)
    {
        return (ms_Info[playerid][ms_TotalItems] / MS_MAX_ITEMS_PER_PAGE);
    }
    else return (ms_Info[playerid][ms_TotalItems] / MS_MAX_ITEMS_PER_PAGE) + 1;
 }

stock MenuStore_GetTotalItemsInCart(playerid)
{
    static count;
    count = 0;

    for(new i = 0; i < MS_MAX_ITEMS_CART; i++)
        if(ms_Cart[playerid][ms_Cart_ItemID][i] != MSTORE_INVALID_ITEM_ID)
            count++;

    return count;
}

stock MenuStore_GetCartTotalValue(playerid)
{
    static count;
    count = 0;

    for(new i = 0; i < MS_MAX_ITEMS_CART; i++)
        if(ms_Cart[playerid][ms_Cart_ItemID][i] != MSTORE_INVALID_ITEM_ID)
            count += (ms_Cart[playerid][ms_Cart_ItemPrice][i]*ms_Cart[playerid][ms_Cart_ItemAmount][i]);

    return count;
}

stock MenuStore_AddToCart(playerid, itemid, price, amount)
{
    for(new i = 0; i < MS_MAX_ITEMS_CART; i++)
    {
        if(ms_Cart[playerid][ms_Cart_ItemID][i] == MSTORE_INVALID_ITEM_ID)
        {
            ms_Cart[playerid][ms_Cart_ItemID][i] = itemid;
            ms_Cart[playerid][ms_Cart_ItemPrice][i] = price;
            ms_Cart[playerid][ms_Cart_ItemAmount][i] = amount;
           
            MenuStore_CreateCartRow(playerid, i);
            MenuStore_UpdateCartTotalValue(playerid);
            break;
        }
    }
}

stock MenuStore_RemoveFromCart(playerid, row)
{
    ms_Cart[playerid][ms_Cart_ItemID][row] = MSTORE_INVALID_ITEM_ID;
    ms_Cart[playerid][ms_Cart_ItemPrice][row] = 0;
    ms_Cart[playerid][ms_Cart_ItemAmount][row] = 0;

    MenuStore_UpdateCartTotalValue(playerid);
    MenuStore_SortCart(playerid);
}


stock MenuStore_SortCart(playerid)
{
    for(new i = 0; i < MS_MAX_ITEMS_CART; i++)
    {
        if(ms_Cart[playerid][ms_Cart_ItemID][i] == MSTORE_INVALID_ITEM_ID)
        {
            for(new x = i; x < MS_MAX_ITEMS_CART; x++)
            {
                if(ms_Cart[playerid][ms_Cart_ItemID][x] != MSTORE_INVALID_ITEM_ID)
                {
                    ms_Cart[playerid][ms_Cart_ItemID][i] = ms_Cart[playerid][ms_Cart_ItemID][x];
                    ms_Cart[playerid][ms_Cart_ItemPrice][i] = ms_Cart[playerid][ms_Cart_ItemPrice][x];
                    ms_Cart[playerid][ms_Cart_ItemAmount][i] = ms_Cart[playerid][ms_Cart_ItemAmount][x];

                    ms_Cart[playerid][ms_Cart_ItemID][x] = MSTORE_INVALID_ITEM_ID;
                    ms_Cart[playerid][ms_Cart_ItemPrice][x] = 0;
                    ms_Cart[playerid][ms_Cart_ItemAmount][x] = 0;
                    break;
                }
            }
        }
    }

    MenuStore_UpdateCart(playerid);
}

stock MenuStore_GetItemNameByID(playerid, id)
{
    format(ms_String, sizeof(ms_String), "N/A");

    for(new i = 0; i < MS_MAX_ITEMS; i++)
    {
        if(ms_Items[playerid][i][ms_ItemID] == id)
        {
            strunpack(ms_String, ms_Items[playerid][i][ms_ItemName]);
            return ms_String;
        }
    }

    return ms_String;
}

stock MenuStore_GetItemModelByID(playerid, id)
{
    for(new i = 0; i < MS_MAX_ITEMS; i++)
    {
        if(ms_Items[playerid][i][ms_ItemID] == id)
        {
            return ms_Items[playerid][i][ms_ItemModel];
        }
    }

    return 0;
}

stock MenuStore_CreateCartRow(playerid, row)
{
    new Float:ms_Cart_Item_Background_Base_Y = 293.883270,
        Float:ms_Cart_Item_ItemName_Base_Y = 294.566619,
        Float:ms_Cart_Item_ItemClose_Base_Y = 293.683410,
        Float:padding = 23.0;

    if(row > 0)
    {
        ms_Cart_Item_Background_Base_Y += (padding*row);
        ms_Cart_Item_ItemName_Base_Y += (padding*row);
        ms_Cart_Item_ItemClose_Base_Y += (padding*row);
    }

    ms_TD_Cart_ItemBackground[playerid][row] = CreatePlayerTextDrawEx(playerid, 344.000000, ms_Cart_Item_Background_Base_Y, "box",
                                                0.000000, 1.550000,
                                                505.000000, 15.000000,
                                                1,
                                                -1,
                                                1,
                                                MS_COLOR_CART_BACKGROUND_ITEM,
                                                0,
                                                0,
                                                255,
                                                1,
                                                1,
                                                0,
                                                0.0, 0.0, 0.0, 1.0,
                                                1);

    format(ms_String, sizeof(ms_String), "%dx_%s", ms_Cart[playerid][ms_Cart_ItemAmount][row], MenuStore_GetItemNameByID(playerid, ms_Cart[playerid][ms_Cart_ItemID][row]));
    ms_TD_Cart_ItemName[playerid][row] = CreatePlayerTextDrawEx(playerid, 345.200073, ms_Cart_Item_ItemName_Base_Y, ms_String,
                                        0.210997, 1.169996,
                                        506.000000, 0.0,
                                        1,
                                        MS_COLOR_TEXT_MAIN,
                                        1,
                                        0xffffff00,
                                        0,
                                        0,
                                        255,
                                        2,
                                        1);

    ms_TD_Cart_ItemClose[playerid][row] = CreatePlayerTextDrawEx(playerid, 501.965087, ms_Cart_Item_ItemClose_Base_Y, "X",
                                        0.387349, 1.546665,
                                        0.0, 0.0,
                                        3,
                                        MS_COLOR_CART_REMOVEITEM,
                                        0,
                                        0,
                                        0,
                                        0,
                                        255,
                                        1,
                                        1);

    PlayerTextDrawShow(playerid, ms_TD_Cart_ItemBackground[playerid][row]);
    PlayerTextDrawShow(playerid, ms_TD_Cart_ItemName[playerid][row]);
    PlayerTextDrawShow(playerid, ms_TD_Cart_ItemClose[playerid][row]);
}

stock MenuStore_RemoveCartRows(playerid)
{
    for(new i = 0; i < MS_MAX_ITEMS_CART; i++)
    {
        RemovePlayerTD(playerid, ms_TD_Cart_ItemBackground[playerid][i]);
        RemovePlayerTD(playerid, ms_TD_Cart_ItemName[playerid][i]);
        RemovePlayerTD(playerid, ms_TD_Cart_ItemClose[playerid][i]);
    }
}

stock MenuStore_UpdateCartTotalValue(playerid)
{
    format(ms_String, sizeof(ms_String), ""#MS_WORD_TOTAL": %s%d", ms_Info[playerid][ms_MoneySign], MenuStore_GetCartTotalValue(playerid));
    PlayerTextDrawSetString(playerid, ms_TD_Cart_Total[playerid], ms_String);
}

stock MenuStore_UpdateCart(playerid)
{
    // Remove any previous
    MenuStore_RemoveCartRows(playerid);

    // Write
    for(new row = 0; row < MS_MAX_ITEMS_CART; row++)
    {
        if(ms_Cart[playerid][ms_Cart_ItemID][row] != MSTORE_INVALID_ITEM_ID)
        {
            MenuStore_CreateCartRow(playerid, row);
        }
    }
}

stock MenuStore_AddItem(playerid, itemid, modelid, const name[], price, const 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)
{
    for(new i = 0; i < MS_MAX_ITEMS; i++)
        if(ms_Items[playerid][i][ms_ItemID] == itemid)
            return false;

    for(new i = 0; i < MS_MAX_ITEMS; i++)
    {
        if(ms_Items[playerid][i][ms_ItemID] == MSTORE_INVALID_ITEM_ID)
        {
            ms_Items[playerid][i][ms_ItemID] = itemid; 
            ms_Items[playerid][i][ms_ItemModel] = modelid;
            ms_Items[playerid][i][ms_ItemPrice] = price;
            ms_Items[playerid][i][ms_ItemStack] = stack;

            strpack(ms_Items[playerid][i][ms_ItemName], name, 32 char);
            strpack(ms_Items[playerid][i][ms_ItemDescription], description, 256 char);
           
            if(description_size > MS_MAX_SIZE_DESCRIPTION) {
                ms_Items[playerid][i][ms_ItemDescriptionBonus] = MS_MAX_SIZE_DESCRIPTION;
            }
            else {
                ms_Items[playerid][i][ms_ItemDescriptionBonus] = description_size;
            }

            ms_Items[playerid][i][ms_ItemLineJump] = description_line_jump;

            ms_Items[playerid][i][ms_ItemPreviewRot][0] = rotX;
            ms_Items[playerid][i][ms_ItemPreviewRot][1] = rotY;
            ms_Items[playerid][i][ms_ItemPreviewRot][2] = rotZ;
            ms_Items[playerid][i][ms_ItemPreviewRot][3] = zoom;

            ms_Info[playerid][ms_TotalItems]++;
            break;
        }  
    }

    return true;
}


stock MenuStore_Open(playerid, const menuid[], store_name[], const money_sign[] = MS_DEFAULT_MONEY_SIGN, button_confirm[] = MS_DEFAULT_CONFIRM)
{
    if(MenuStore_IsOpen(playerid))
        return false;

    SelectTextDraw(playerid, MS_COLOR_SELECT_TD);
    ms_Info[playerid][ms_IsOpen] = true;
    format(ms_Info[playerid][ms_MoneySign], 32, money_sign);
    format(ms_Info[playerid][ms_StoreID], 32, menuid);

    TextDrawShowForPlayer(playerid, ms_TD_Backgrounds[0]);
    TextDrawShowForPlayer(playerid, ms_TD_Backgrounds[1]);

    ms_TD_StoreName[playerid] = CreatePlayerTextDrawEx(playerid, 150.843780, 129.850082, store_name,
                                0.310358, 1.434999,
                                315.000000, 0.0,
                                1,
                                MS_COLOR_TEXT_MAIN,
                                1,
                                0,
                                0,
                                0,
                                255,
                                2,
                                1);

    if(ms_Info[playerid][ms_TotalItems] > MS_MAX_ITEMS_PER_PAGE)
    {
        TextDrawShowForPlayer(playerid, ms_TD_Previous);
        TextDrawShowForPlayer(playerid, ms_TD_Next);
    }

    PlayerTextDrawShow(playerid, ms_TD_StoreName[playerid]);

    // Cart

    format(ms_String, sizeof(ms_String), ""#MS_WORD_TOTAL": %s0", ms_Info[playerid][ms_MoneySign]);
    ms_TD_Cart_Total[playerid] = CreatePlayerTextDrawEx(playerid, 339.200012, 386.949951, ms_String,
                            0.219999, 1.331665,
                            437.000000, 0.0,
                            1,
                            MS_COLOR_TEXT_MAIN,
                            1,
                            0xffffff00,
                            0,
                            0,
                            255,
                            2,
                            1);

    ms_TD_Cart_BuyName[playerid] = CreatePlayerTextDrawEx(playerid, 476.000152, 386.683441, button_confirm,
                            0.282000, 1.442499,
                            0.000000, 61.000000,
                            2,
                            MS_COLOR_TEXT_MAIN,
                            1,
                            0xffffff00,
                            0,
                            0,
                            255,
                            2,
                            1);

    TextDrawShowForPlayer(playerid, ms_TD_Cart_Backgrounds[0]);
    TextDrawShowForPlayer(playerid, ms_TD_Cart_Backgrounds[1]);
    TextDrawShowForPlayer(playerid, ms_TD_Cart_BackgroundConfirm);
    TextDrawShowForPlayer(playerid, ms_TD_Cart_CartName);

    PlayerTextDrawShow(playerid, ms_TD_Cart_BuyName[playerid]);
    PlayerTextDrawShow(playerid, ms_TD_Cart_Total[playerid]);

    ms_Info[playerid][ms_CurrentPage] = 1;
    MenuStore_SetPage(playerid, ms_Info[playerid][ms_CurrentPage]);
    return true;
}

stock MenuStore_Close(playerid)
{
    MenuStore_ResetVariables(playerid);

    CancelSelectTextDraw(playerid);
    MenuStore_UnselectRow(playerid);
    MenuStore_CloseDescription(playerid);

    TextDrawHideForPlayer(playerid, ms_TD_Backgrounds[0]);
    TextDrawHideForPlayer(playerid, ms_TD_Backgrounds[1]);
    TextDrawHideForPlayer(playerid, ms_TD_Previous);
    TextDrawHideForPlayer(playerid, ms_TD_Next);

    RemovePlayerTD(playerid, ms_TD_StoreName[playerid]);

    // Cart TextDraws

    TextDrawHideForPlayer(playerid, ms_TD_Cart_Backgrounds[0]);
    TextDrawHideForPlayer(playerid, ms_TD_Cart_Backgrounds[1]);
    TextDrawHideForPlayer(playerid, ms_TD_Cart_BackgroundConfirm);
    TextDrawHideForPlayer(playerid, ms_TD_Cart_CartName);

    RemovePlayerTD(playerid, ms_TD_Cart_BuyName[playerid]);
    RemovePlayerTD(playerid, ms_TD_Cart_Total[playerid]);

    for(new i = 0; i < MS_MAX_ITEMS_PER_PAGE; i++)
    {
        RemovePlayerTD(playerid, ms_TD_ItemBackground[playerid][i]);
        RemovePlayerTD(playerid, ms_TD_ItemName[playerid][i]);
        RemovePlayerTD(playerid, ms_TD_ItemPrice[playerid][i]);
        RemovePlayerTD(playerid, ms_TD_ItemModel[playerid][i]);
    }

    RemovePlayerTD(playerid, ms_TD_Pagination[playerid]);

    MenuStore_RemoveCartRows(playerid);

}

stock MenuStore_IsOpen(playerid)
    return ms_Info[playerid][ms_IsOpen];


stock MenuStore_SelectRow(playerid, row)
{
    ms_Info[playerid][ms_Selected] = row;

    PlayerTextDrawBoxColor(playerid, ms_TD_ItemBackground[playerid][row], MS_COLOR_BACKGROUND_ITEMSELECTED);
    PlayerTextDrawHide(playerid, ms_TD_ItemBackground[playerid][row]);
    PlayerTextDrawShow(playerid, ms_TD_ItemBackground[playerid][row]);
}

stock MenuStore_UnselectRow(playerid)
{
    if(ms_Info[playerid][ms_Selected] != -1)
    {
        new row = ms_Info[playerid][ms_Selected];
        PlayerTextDrawBoxColor(playerid, ms_TD_ItemBackground[playerid][row], MS_COLOR_BACKGROUND_ITEM);
        PlayerTextDrawHide(playerid, ms_TD_ItemBackground[playerid][row]);
        PlayerTextDrawShow(playerid, ms_TD_ItemBackground[playerid][row]);
    }

    ms_Info[playerid][ms_Selected] = -1;
}

stock MenuStore_ToggleControll(playerid, bool:toggle)
    return ms_Info[playerid][ms_ToggleControll] = toggle;


stock MenuStore_OpenDescription(playerid, index)
{
    if(ms_Info[playerid][ms_Selected] == -1)
        return false;

    if(ms_TD_DescriptionItemModel[playerid] == PlayerText:INVALID_TEXT_DRAW)
    {
        ms_TD_DescriptionBackground[playerid][0] = CreatePlayerTextDrawEx(playerid, 333.100463, 130.980590, "box",
                                                0.000000, (6.630985+ms_Items[playerid][index][ms_ItemDescriptionBonus]),
                                                516.000000, 0.000000,
                                                1,
                                                -1,
                                                1,
                                                MS_COLOR_DESCRIPTION_BACKGROUND_1,
                                                0,
                                                0,
                                                255,
                                                1,
                                                1);

        ms_TD_DescriptionBackground[playerid][1] = CreatePlayerTextDrawEx(playerid, 335.215118, 133.416717, "box",
                                                0.000000, (6.111274+ms_Items[playerid][index][ms_ItemDescriptionBonus]),
                                                514.000000, 0.000000,
                                                1,
                                                -1,
                                                1,
                                                MS_COLOR_DESCRIPTION_BACKGROUND_2,
                                                0,
                                                0,
                                                255,
                                                1,
                                                1);

        ms_TD_DescriptionItemName[playerid] = CreatePlayerTextDrawEx(playerid, 336.807769, 134.333419, ms_Items[playerid][index][ms_ItemName],
                                                0.225572, 1.349166,
                                                514.000000, 0.0,
                                                1,
                                                MS_COLOR_DESCRIPTION_NAMEITEM,
                                                1,
                                                0xffffff00,
                                                0,
                                                0,
                                                255,
                                                2,
                                                1);

        new Float:description_text_size_y = 460.000000,
            Float:description_text_size_x = 0.000000;

        if(!ms_Items[playerid][index][ms_ItemLineJump])
            description_text_size_y = 513.000000;

        ms_TD_DescriptionItemText[playerid] = CreatePlayerTextDrawEx(playerid, 336.981842, 147.783721, ms_Items[playerid][index][ms_ItemDescription],
                                                0.199804, 1.098332,
                                                description_text_size_y, description_text_size_x,
                                                1,
                                                MS_COLOR_DESCRIPTION_TEXT,
                                                1,
                                                0xffffff00,
                                                0,
                                                0,
                                                255,
                                                2,
                                                1);

        ms_TD_DescriptionItemModel[playerid] = CreatePlayerTextDrawEx(playerid, 460.658721, 135.700027, "",
                                                0.000000, 0.000000,
                                                52.000000, 51.000000,
                                                1,
                                                -1,
                                                0,
                                                0,
                                                0,
                                                0,
                                                MS_COLOR_DESCRIPTION_BACKGROUND_MODEL,
                                                5,
                                                0,
                                                ms_Items[playerid][index][ms_ItemModel],
                                                ms_Items[playerid][index][ms_ItemPreviewRot][0], ms_Items[playerid][index][ms_ItemPreviewRot][1], ms_Items[playerid][index][ms_ItemPreviewRot][2], ms_Items[playerid][index][ms_ItemPreviewRot][3]);
    }
    else
    {
        PlayerTextDrawHide(playerid, ms_TD_DescriptionItemName[playerid]);
        PlayerTextDrawHide(playerid, ms_TD_DescriptionItemText[playerid]);
        PlayerTextDrawHide(playerid, ms_TD_DescriptionItemModel[playerid]);

        PlayerTextDrawSetPreviewModel(playerid, ms_TD_DescriptionItemModel[playerid], ms_Items[playerid][index][ms_ItemModel]);
        PlayerTextDrawSetPreviewRot(playerid, ms_TD_DescriptionItemModel[playerid], ms_Items[playerid][index][ms_ItemPreviewRot][0], ms_Items[playerid][index][ms_ItemPreviewRot][1], ms_Items[playerid][index][ms_ItemPreviewRot][2], ms_Items[playerid][index][ms_ItemPreviewRot][3]);

        PlayerTextDrawSetString(playerid, ms_TD_DescriptionItemName[playerid], ms_Items[playerid][index][ms_ItemName][0]);
        PlayerTextDrawSetString(playerid, ms_TD_DescriptionItemText[playerid], ms_Items[playerid][index][ms_ItemDescription][0]);

        new Float:description_text_size_y = 460.000000,
            Float:description_text_size_x = 0.000000;

        if(!ms_Items[playerid][index][ms_ItemLineJump])
            description_text_size_y = 513.000000;

        PlayerTextDrawTextSize(playerid, ms_TD_DescriptionItemText[playerid], description_text_size_y, description_text_size_x);

        PlayerTextDrawLetterSize(playerid, ms_TD_DescriptionBackground[playerid][0], 0.000000, (6.630985+ms_Items[playerid][index][ms_ItemDescriptionBonus]));
        PlayerTextDrawLetterSize(playerid, ms_TD_DescriptionBackground[playerid][1], 0.000000, (6.111274+ms_Items[playerid][index][ms_ItemDescriptionBonus]));
    }

    PlayerTextDrawShow(playerid, ms_TD_DescriptionBackground[playerid][0]);
    PlayerTextDrawShow(playerid, ms_TD_DescriptionBackground[playerid][1]);
    PlayerTextDrawShow(playerid, ms_TD_DescriptionItemName[playerid]);
    PlayerTextDrawShow(playerid, ms_TD_DescriptionItemText[playerid]);
    PlayerTextDrawShow(playerid, ms_TD_DescriptionItemModel[playerid]);
    return true;
}

stock MenuStore_CloseDescription(playerid)
{
    RemovePlayerTD(playerid, ms_TD_DescriptionBackground[playerid][0]);
    RemovePlayerTD(playerid, ms_TD_DescriptionBackground[playerid][1]);
    RemovePlayerTD(playerid, ms_TD_DescriptionItemName[playerid]);
    RemovePlayerTD(playerid, ms_TD_DescriptionItemText[playerid]);
    RemovePlayerTD(playerid, ms_TD_DescriptionItemModel[playerid]);
}


stock MenuStore_ResetVariables(playerid)
{
    for(new i = 0; i < MS_MAX_ITEMS; i++)
    {
        ms_Items[playerid][i][ms_ItemID] = MSTORE_INVALID_ITEM_ID;
        ms_Items[playerid][i][ms_ItemModel] = 0;
        ms_Items[playerid][i][ms_ItemPrice] = 0;
        ms_Items[playerid][i][ms_ItemStack] = 0;
        ms_Items[playerid][i][ms_ItemName][0] = EOS;
        ms_Items[playerid][i][ms_ItemDescription][0] = EOS;
        ms_Items[playerid][i][ms_ItemPreviewRot][0] = ms_Items[playerid][i][ms_ItemPreviewRot][1] = ms_Items[playerid][i][ms_ItemPreviewRot][2] = ms_Items[playerid][i][ms_ItemPreviewRot][3] = 0.0;
        ms_Items[playerid][i][ms_ItemLineJump] = true;
        ms_Items[playerid][i][ms_ItemDescriptionBonus] = 0.0;
    }

    for(new i = 0; i < MS_MAX_ITEMS_CART; i++)
    {
        ms_Cart[playerid][ms_Cart_ItemID][i] = MSTORE_INVALID_ITEM_ID;
        ms_Cart[playerid][ms_Cart_ItemPrice][i] = 0;
        ms_Cart[playerid][ms_Cart_ItemAmount][i] = 0;
    }

    ms_Info[playerid][ms_TotalItems] = 0;
    ms_Info[playerid][ms_CurrentPage] = 1;
    ms_Info[playerid][ms_IsOpen] = false;
    ms_Info[playerid][ms_StoreID][0] = EOS;
    ms_Info[playerid][ms_MoneySign][0] = EOS;
    ms_Info[playerid][ms_DoubleClickRow] = -1;
    ms_Info[playerid][ms_DoubleClick] = 0;
    ms_Info[playerid][ms_Selected] = -1;
    ms_Info[playerid][ms_ToggleControll] = true;
}


static stock RemovePlayerTD(playerid, &PlayerText:td)
{
    if(td == PlayerText:INVALID_TEXT_DRAW)
        return false;

    PlayerTextDrawHide(playerid, td);
    PlayerTextDrawDestroy(playerid, td);
    td = PlayerText:INVALID_TEXT_DRAW;
    return true;
}

static stock PlayerText:CreatePlayerTextDrawEx(playerid, Float:x, Float:y, text[],
                            Float:size_x, Float:size_y,
                            Float:textsize_x, Float:textsize_y,
                            align,
                            color,
                            usebox,
                            boxcolor,
                            shadow,
                            outline,
                            bg_color,
                            font,
                            proportional,
                            model = 0,
                            Float:preview_x= 0.0, Float:preview_y = 0.0, Float:preview_z = 0.0, Float:preview_zoom = 1.0,
                            selectable = 0)
{
    new PlayerText:td;
    td = CreatePlayerTextDraw(playerid, x, y, text);
    PlayerTextDrawLetterSize(playerid, td, size_x, size_y);
    PlayerTextDrawTextSize(playerid, td, textsize_x, textsize_y);
    PlayerTextDrawAlignment(playerid, td, align);
    PlayerTextDrawColor(playerid, td, color);
    PlayerTextDrawUseBox(playerid, td, usebox);
    PlayerTextDrawBoxColor(playerid, td, boxcolor);
    PlayerTextDrawSetShadow(playerid, td, shadow);
    PlayerTextDrawSetOutline(playerid, td, outline);
    PlayerTextDrawBackgroundColor(playerid, td, bg_color);
    PlayerTextDrawFont(playerid, td, font);
    PlayerTextDrawSetProportional(playerid, td, proportional);
    PlayerTextDrawSetPreviewModel(playerid, td, model);
    PlayerTextDrawSetPreviewRot(playerid, td, preview_x, preview_y, preview_z, preview_zoom);
    PlayerTextDrawSetSelectable(playerid, td, selectable);
    return td;
}

static stock Text:CreateTextDrawEx(Float:x, Float:y, text[],
                    Float:size_x, Float:size_y,
                    Float:textsize_x, Float:textsize_y,
                    align,
                    color,
                    usebox,
                    boxcolor,
                    shadow,
                    outline,
                    bg_color,
                    font,
                    proportional,
                    model = 0,
                    Float:preview_x = 0.0, Float:preview_y = 0.0, Float:preview_z = 0.0, Float:preview_zoom = 0.0,
                    selectable = 0)
{
    new Text:td;
    td = TextDrawCreate(x, y, text);
    TextDrawLetterSize(td, size_x, size_y);
    TextDrawTextSize(td, textsize_x, textsize_y);
    TextDrawAlignment(td, align);
    TextDrawColor(td, color);
    TextDrawUseBox(td, usebox);
    TextDrawBoxColor(td, boxcolor);
    TextDrawSetShadow(td, shadow);
    TextDrawSetOutline(td, outline);
    TextDrawBackgroundColor(td, bg_color);
    TextDrawFont(td, font);
    TextDrawSetProportional(td, proportional);
    TextDrawSetPreviewModel(td, model);
    TextDrawSetPreviewRot(td, preview_x, preview_y, preview_z, preview_zoom);
    TextDrawSetSelectable(td, selectable);
    return td;
}

this one worked for me, i was getting these errors when compiling by default:
Code:

menu-store.inc(1258) : error 035: argument type mismatch (argument 4)
menu-store.inc(1293) : error 035: argument type mismatch (argument 3)


Lexless 12/07/2020 04:16 PM

Re: MenuStore (Build dynamic stores with TextDraws)
 
Quote:

Originally Posted by hopeonxanny (Post 4155035)
this one worked for me, i was getting these errors when compiling by default:
Code:

menu-store.inc(1258) : error 035: argument type mismatch (argument 4)
menu-store.inc(1293) : error 035: argument type mismatch (argument 3)


Line?

hopeonxanny 12/07/2020 05:13 PM

Re: MenuStore (Build dynamic stores with TextDraws)
 
Quote:

Originally Posted by Lexless
Line?

same as here:
https://github.com/Coystark/MenuStor.../MenuStore.inc

Lexless 12/07/2020 06:58 PM

Re: MenuStore (Build dynamic stores with TextDraws)
 
Quote:

Originally Posted by hopeonxanny (Post 4155044)

Alright, use mine instead.

Don't compile it, it's an include.

zowzow 15/08/2020 07:26 PM

Re: MenuStore (Build dynamic stores with TextDraws)
 
would be cool if you add button to leave the store menu


All times are GMT. The time now is 06:57 AM.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.