Ir para conteúdo

Featured Replies

Postado
  • Autor
3 horas atrás, GM Vortex disse:

function onUse(cid, item, frompos, item2, topos)
    local playerLocation = getCreaturePosition(cid)

    local enchantments = {
        [2361] = {amount = 1, transformId = 2453},
        [2159] = {amount = 10, transformId = 2646},
        -- Adicione mais itens de encantamento aqui
        [OutroID] = {amount = QuantidadeNecessaria, transformId = IDTransformacao}
    }

    local weaponEnchantmentTable = {
        {
            weaponId = 7735,
            positions = {
                weaponTable = {x = 32352, y = 31912, z = 7},
                enchantmentTable = {x = 32354, y = 31912, z = 7}
            },
            enchantmentIds = {2361}
        },
        {
            weaponId = 6132,
            positions = {
                weaponTable = {x = 32356, y = 31912, z = 7},
                enchantmentTable = {x = 32358, y = 31912, z = 7}
            },
            enchantmentIds = {2159}
        }
        -- Adicione mais armas e suas respectivas posições aqui
        -- Exemplo: {weaponId = IDDaArma, positions = {posicaoDaArma, posicaoDoEncantamento}, enchantmentIds = {IDDoEncantamento1, IDDoEncantamento2, ...}}
    }

    local function hasItems(items)
        for itemID, enchantmentData in pairs(items) do
            local enchantment = getTileItemById(enchantmentData.positions.enchantmentTable, itemID)
            if not enchantment or enchantment.type < enchantmentData.amount then
                return false
            end
        end
        return true
    end

    local function enchantWeapon(enchantmentData)
        for _, data in pairs(enchantmentData) do
            local weapon = getTileItemById(data.positions.weaponTable, data.weaponId)
            if weapon then
                local enchantmentsNeeded = data.enchantmentIds
                if hasItems(enchantmentsNeeded) then
                    for _, enchantmentID in ipairs(enchantmentsNeeded) do
                        local enchantment = getTileItemById(data.positions.enchantmentTable, enchantmentID)
                        if enchantment then
                            local requiredAmount = enchantments[enchantmentID].amount
                            doRemoveItem(enchantment.uid, requiredAmount)
                        end
                    end
                    doRemoveItem(weapon.uid, 1)
                    doPlayerAddItem(cid, enchantments[enchantmentID].transformId, 1)
                    doSendMagicEffect(playerLocation, 39)
                    return true
                end
            end
        end
        return false
    end

    if not enchantWeapon(weaponEnchantmentTable) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Sem itens necessários para o encantamento.")
        doSendMagicEffect(playerLocation, CONST_ME_POFF)
    end

    return true
end

 

oque eu dizer é o seguinte, adicionar mais items a serem mesclados, ai so pode colocar 2 combinaçoes eu quero de 5, onde eu botar 5 items para virar 1. Enetendeu ?
Tem como quebrar mais esse galho porfavor ? (eu quero q o script peça 5 items para transformar em 1). tipo 5 posicoes 5 items.

resultado.png

  • Respostas 10
  • Visualizações 484
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Mateus Robeerto
    Mateus Robeerto

    Boa tarde! Fiz um script melhor e bem simples. É possível entender o script, Segue o GIF para ver como ele funciona e foi testado no tfs 0.4, tudo certo. Divirta-se function onUse(cid, item, from

Posted Images

Postado
19 minutos atrás, deza disse:

oque eu dizer é o seguinte, adicionar mais items a serem mesclados, ai so pode colocar 2 combinaçoes eu quero de 5, onde eu botar 5 items para virar 1. Enetendeu ?
Tem como quebrar mais esse galho porfavor ? (eu quero q o script peça 5 items para transformar em 1). tipo 5 posicoes 5 items.

resultado.png

function onUse(cid, item, frompos, item2, topos)
    local playerLocation = getCreaturePosition(cid)

    local combinationItems = {
        [ItemID1] = {x = X1, y = Y1, z = Z1},
        [ItemID2] = {x = X2, y = Y2, z = Z2},
        [ItemID3] = {x = X3, y = Y3, z = Z3},
        [ItemID4] = {x = X4, y = Y4, z = Z4},
        [ItemID5] = {x = X5, y = Y5, z = Z5}
        -- Adicione mais itens para combinação aqui
    }

    local function hasItems(items)
        for itemID, position in pairs(items) do
            local tileItem = getTileItemById(position, itemID)
            if not tileItem then
                return false
            end
        end
        return true
    end

    local function combineItems(items)
        if hasItems(items) then
            for itemID, position in pairs(items) do
                doRemoveItem(getTileItemById(position, itemID).uid, 1)
            end
            local newItemID = 9999 -- aqui id novo
            doPlayerAddItem(cid, newItemID, 1)
            doSendMagicEffect(playerLocation, 39)
            return true
        end
        return false
    end

    if not combineItems(combinationItems) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Não há itens suficientes para combinar.")
        doSendMagicEffect(playerLocation, CONST_ME_POFF)
    end

    return true
end

 

Postado
  • Autor

Exatamente isso que queria, 5 items pra 1. problema q n funcionou. olha o error que deu !

link do gift q fiz pra vc entender.

https://ibb.co/C0CRsd9

dddddddddddddddddddd.png

Postado
  • Solução

Boa tarde! Fiz um script melhor e bem simples. É possível entender o script, Segue o GIF para ver como ele funciona e foi testado no tfs 0.4, tudo certo. Divirta-se :)

function onUse(cid, item, frompos, item2, topos)
    local playerLocation = getCreaturePosition(cid)

    local itemData = {
        {itemId = 2400, x = 722, y = 658, z = 7},
        {itemId = 2401, x = 722, y = 657, z = 7},
        {itemId = 2376, x = 724, y = 658, z = 7}
        -- Adicione mais itens para combinação aqui
    }

    local newItemId = 2406 -- ID do novo item após a combinação
    local newItemPosition = {x = 724, y = 657, z = 7} -- Posição para o novo item

    local foundItems = {}
    local hasAllItems = true 

    for _, data in ipairs(itemData) do
        local tileItem = getTileItemById({x = data.x, y = data.y, z = data.z}, data.itemId)
        if tileItem.uid > 0 then
            table.insert(foundItems, tileItem.uid)
        else
            hasAllItems = false
            break 
        end
    end

    if hasAllItems then
        for _, uid in ipairs(foundItems) do
            if not doRemoveItem(uid, 1) then
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Erro ao remover um dos itens necessários.")
                return false
            end
        end

        local newItem = doCreateItem(newItemId, 1, newItemPosition)
        if newItem ~= LUA_ERROR then
            doSendMagicEffect(newItemPosition, 39)
        else
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Erro ao criar o novo item.")
            return false
        end
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você não possui todos os itens necessários para a combinação.")
        return false
    end

    return true
end


@deza
 

Editado por GM Vortex (veja o histórico de edições)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo