Ir para conteúdo
  • Cadastre-se

(Resolvido)Trocar varios items por 1 por avalanva


Ir para solução Resolvido por Mateus Robeerto,

Posts Recomendados

nao sei se existe, caso sim... alguem poderia disponibilizar o script por favor. Ou se puder bolar um !
um script que troca 2..3...4...5 items (configuravel) por 1.
pode ser um script simples, mas que fosse por alavanca. O player botasse os items no recipiente (ou nao, pode ser dentro da bp tbm) e ao puxar essa alavanca ''os 3 items sumissem e daria o novo item que foi formado para o player)

TFS 0.4 - 8.6


 

 

juntar.png

Link para o post
Compartilhar em outros sites

já tem aqui no fórum... apenas você pode pegar o script e adaptar para seu jeito. Já tem explicado tudo sobre como funciona etc...

 

Link para o post
Compartilhar em outros sites
7 horas atrás, GM Vortex disse:

já tem aqui no fórum... apenas você pode pegar o script e adaptar para seu jeito. Já tem explicado tudo sobre como funciona etc...

 

Esse meio que serve, so n to conseguindo botar mais de 2 items q é o padrao, teria como me da essa força pra adicionar mais items porfavor !??

 

Citar

function onUse(cid, item, frompos, item2, topos)

    local playerLocation = getCreaturePosition(cid)

    local weaponData = {
        -- ID da arma | ID do item de encantamento | quantidade do item de encantamento (opcional) | ID do item que a arma será transformada.
        {weaponId = 7735, enchantmentId = 12575, transformId = 12279},
        {weaponId = 7735, enchantmentId = 12393, amountEnchantment = 10, transformId = 12279}
    }

    local positions = {
        weaponTable      = {x = 719, y = 332, z = 7}, -- Onde o jogador deverá colocar a arma.
        enchantmentTable = {x = 717, y = 332, z = 7},  -- Onde o jogador deverá colocar o item de encantamento.
    }

    function check()
        for _, data in pairs(weaponData) do
            local weapon = getTileItemById(positions.weaponTable, data.weaponId)
            local enchantment = getTileItemById(positions.enchantmentTable, data.enchantmentId)
    
            if weapon.itemid == data.weaponId and enchantment.itemid == data.enchantmentId then

                local amountEnchantment = enchantment.type and data.amountEnchantment or 1

                if doRemoveItem(enchantment.uid, amountEnchantment) then
                    doRemoveItem(weapon.uid, 1)
                    doPlayerAddItem(cid, data.transformId, 1)
                    doSendMagicEffect(playerLocation, 39)
                    return true
                end
            end
        end
    end

    if not check() then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Sem itens necessarios para o encantamento.")
        doSendMagicEffect(playerLocation, CONST_ME_POFF)
    end

    return true
end

 

Link para o post
Compartilhar em outros sites
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

 

Link para o post
Compartilhar em outros sites
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

Link para o post
Compartilhar em outros sites
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

 

Link para o post
Compartilhar em outros sites

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

Link para o post
Compartilhar em outros sites

Deu error, queria upar o gift q fiz porem no TK nao deixa.
mas n funfuou, ta ai o error !=[

dddddddddddddddddddd.png

Link para o post
Compartilhar em outros sites
  • 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)
Link para o post
Compartilhar em outros sites
22 horas atrás, GM Vortex disse:

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
 

 

Haha, funcionou man!
Muiiiiiiiiitooo obrigado, que deus te abençoe gandao !

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo