Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

Решено cef additem

Статус
В этой теме нельзя размещать новые ответы.
Авг
19
3
Пользователь
ку
там где ваш stock AddItem меняйте его на мой:
​
additem:
stock AddItem(playerid, itemid, amount = 1, color = 0, id = 0, enchant = 0, mending = 100, ending = 0, const numberData[] = "", bool:message = true)
{
    if(GetInvSet(playerid) >= PI[playerid][pInvCell])
        return SCM(playerid, COLOR_RED, !"[Ошибка] {FFFFFF}У вас не хватает места в инвентаре!");

    for(new i; i < PI[playerid][pInvCell]; i++)
    {
        if(Inventory[playerid][0][i] != itemid) continue;

        if(ItemsInfo[itemid][itemStack] > Inventory[playerid][1][i])
        {
            if(amount < ItemsInfo[itemid][itemStack])
            {
                if(amount+Inventory[playerid][1][i] < ItemsInfo[itemid][itemStack])
                {
                    Inventory[playerid][1][i] += amount;
                    amount = 0;
                }
                else
                {
                    amount = Inventory[playerid][1][i]+amount-ItemsInfo[itemid][itemStack];
                    Inventory[playerid][1][i] = ItemsInfo[itemid][itemStack];
                }
            }
            else
            {
                amount -= ItemsInfo[itemid][itemStack]-Inventory[playerid][1][i];
                Inventory[playerid][1][i] = ItemsInfo[itemid][itemStack];
            }
            if (shopopen{playerid} || InventoryOpen{playerid} || Int_GetPlayerData(playerid, "OtherInventOpen"))
                InventSlotUpdate(playerid, GetInvID(playerid, i, 1), i);
        }

        if(amount <= 0)
            return SaveInventory(playerid);
      }
    for(new i; i < PI[playerid][pInvCell]; i++)
    {
        if(Inventory[playerid][0][i]) continue;
       
        Inventory[playerid][0][i] = itemid;

        if(itemid == 7034)
            sscanf(numberData, "P<|>s[10]s[10]s[10]", InventoryNumber[playerid][0][i], InventoryNumber[playerid][1][i], InventoryNumber[playerid][2][i]);

        Inventory[playerid][1][i] = (ItemsInfo[itemid][itemStack] > amount ? amount : ItemsInfo[itemid][itemStack]);
        Inventory[playerid][2][i] = color;
        Inventory[playerid][3][i] = id;
        Inventory[playerid][4][i] = enchant;
        Inventory[playerid][5][i] = mending;
        Inventory[playerid][6][i] = ending;

        if(ItemsInfo[itemid][itemStack] > amount)
        {
            Inventory[playerid][1][i] = amount;
            amount = 0;

            if(shopopen{playerid} || InventoryOpen{playerid} || Int_GetPlayerData(playerid, "OtherInventOpen"))
                InventSlotUpdate(playerid, GetInvID(playerid, i, 1), i);
           
            return SaveInventory(playerid);
        }
        else
        {
            Inventory[playerid][1][i] = ItemsInfo[itemid][itemStack];
            amount -= ItemsInfo[itemid][itemStack];

            if(shopopen{playerid} || InventoryOpen{playerid} || Int_GetPlayerData(playerid, "OtherInventOpen"))
                InventSlotUpdate(playerid, GetInvID(playerid, i, 1), i);
        }

        if (message == true)
        {
            if(GetPlayerLauncher(playerid) == 1)
            {
                inventoryClientMessage(playerid, \
                    .colour = COLOR_WHITE, \
                    .message = ":u1f7e8: Вам был добавлен предмет ", \
                    .inv_slot = i, \
                    .amount = amount);
            }
            else
            {
                format(global_str, 144, ":u1f7e8: Вам был добавлен предмет '%s'", ItemsInfo[itemid][itemName]);
                if(amount > 1) format(global_str, 144, "%s (%d шт.)", global_str, amount);
                SendClientMessage(playerid, COLOR_WHITE, global_str);
            }
            //цеф-additem
            if(GetPlayerLauncher(playerid))
            {
                ExecuteEventf(playerid, "window.executeEvent('event.damageInformer.initializeDamageInfo', '[{\"type\":\"outgoing\",\"id\":%d,\"name\":\"%s\",\"nameColor\":\"#FFFFFF\",\"valueColor\":\"#FFFFFF\",\"imageType\":1,\"imageId\":%d,\"showTime\":5000,\"tag\":\"+%d\",\"tagTextColor\":\"#000000\",\"tagBackgroundColor\":\"#32CD32\"}]');", itemid, ItemsInfo[itemid][itemName], itemid, amount);
            }
        }

        if(amount <= 0)
            return SaveInventory(playerid);
    }
    return true;
}

так же inventoryClientMessage


inventoryclientmessage:
stock inventoryClientMessage(playerid, colour, const message[], message_type = 0, inv_slot = INVALID_DATA_ID, item_id = 0, amount = 1, const addination_string[] = "")
{
    new BitStream:bs = BS_New(), argument_count, message_text_count = 1, inventory_types[20] = {INVALID_DATA_ID, ...}, inventory_slot_data[20] = {0, ...};

    if(strlen(addination_string)) message_text_count++;

    BS_WriteValue(bs,
        PR_UINT8, 220,
        PR_UINT8, 210,
        PR_UINT32, colour,
        PR_UINT8, message_type,
        PR_UINT8, ++message_text_count,
        PR_UINT8, INV_MSG_TYPE_TEXT,
        PR_UINT16, strlen(message),
        PR_STRING, message);

    if(inv_slot != INVALID_DATA_ID && item_id == 0) item_id = Inventory[playerid][0][inv_slot];

    inventory_types[0] = INV_MSG_TYPE_ITEM_COUNT_SERVER;
    inventory_slot_data[0] = ItemsInfo[item_id][itemStack];
    argument_count++;

    if(inv_slot != INVALID_DATA_ID)
    {
        if(IsAAks(item_id) || IsASkinInv(item_id))
        {
            if(IsAAks(item_id))
            {
                inventory_slot_data[1] = Inventory[playerid][2][inv_slot];
                if(inventory_slot_data[1]) inventory_types[1] = INV_MSG_TYPE_COLOUR, argument_count++;

                inventory_slot_data[2] = Inventory[playerid][4][inv_slot];
                if(inventory_slot_data[2]) inventory_types[2] = INV_MSG_TYPE_ENCHANT, argument_count++;

                inventory_slot_data[6] = Inventory[playerid][6][inv_slot];
                if(inventory_slot_data[6] > Global_Time) inventory_types[6] = INV_MSG_TYPE_UNIX_TIME, argument_count++;
            }

            argument_count++;
            inventory_types[3] = INV_MSG_TYPE_MENDING;
            inventory_slot_data[3] = Inventory[playerid][5][inv_slot];
        }
    }

    BS_WriteValue(bs,
        PR_UINT8, INV_MSG_TYPE_ITEM_ID,
        PR_UINT16, item_id,
        PR_UINT16, ++argument_count,
        PR_UINT32, amount);

    for(new i; i < sizeof(inventory_types); i++)
    {
        if(inventory_types[i] == INVALID_DATA_ID) continue;

        BS_WriteValue(bs,
            PR_UINT8, inventory_types[i],
            PR_UINT32, inventory_slot_data[i]);
    }

    if(message_text_count > 2)
    {
        BS_WriteValue(bs,
            PR_UINT8, INV_MSG_TYPE_TEXT,
            PR_UINT16, strlen(addination_string),
            PR_STRING, addination_string);
    }

    PR_SendPacket(bs, playerid);
    BS_Delete(bs);

    return true;
}

есть какие то ошибки? писать в лс(тг)- @roon1332
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху