Ir para conteúdo
Propaganda

[0.3.6] Craft System de clã


Posts Recomendados

  • Suporte

 

 

Boa tarde galera,

Antes de mais nada, este código é exclusivamente do tibiaDevs, não será permitido a cópia dele e nem postagem em outros fóruns, valeu 😄

Seguinte, fiz um código de bigorna que funciona da seguinte forma:
Ele verifica de qual clã o player é, por exemplo, Naturia ou Volcanic, e de acordo com o clã ele adiciona itens.

 

 

 

 

Como alterar o código:
local itemsPedraClan são os ID's das stones, elas são usadas para o craft.

local quantidadeStone é a quantidade de stone que será retirado do player a cada vez que ele clicar na bigorna

local itemsPremio São os ids dos items que o player pode ganhar, isso aqui você pode adicionar para cada clã

local keys são os ID's das keys de DG, caso no teu game tenha

 

Aqui você pode alterar a quantidade dos itens que o player vai ganhar e a % de chance que o player tem de ganhar o item

        randomItems = {
            {itemId = keys.naturia, quantity = 3, chance = 11},
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }



Bom, parte de configuração é isso ai.

Em actions.xml você precisa adicionar isso aqui:
 

    <action actionid="54367" event="script" value="bigorna.lua"/>


No remeres, basta adicionar uma bigorna e adicionar este actionid nela

em actions/scripts você precisa criar um script chamado bigorna.lua e adicionar o código abaixo.

Segue o código pra vocês:

--- Código desenvolvido pelo george192 do site tibiadevs
 
local itemsPedraClan = {
    Naturia = 11441,
    Volcanic = 11447,
    Seavell = 11442,
    Raibolt = 11444,
    Orebound = 11445,
    Psycraft = 11452,
    Malefic = 11450,
    Wingeon = 19694,
    Gardestrike = 11446
}
 
local quantidadeStone = 10
 
local itemsPremio = {
    boostStone = 12618,
    rareCandy = 6569,
    shinyCharm = 23468,
    essenceShiny = 23418,
    diamond = 2145
}
 
local keys = {
    naturia = 25295,
    volcanic = 25290,
    seavell = 25291,
    raibolt = 25292,
    orebound = 25297,
    psycraft = 25298,
    malefic = 25296,
    wingeon = 25294,
    gardestrike = 25293
}
 
function getRandomItem(playerClan)
    local randomItems = {}
   
    -- Defina as listas de itens para cada clã com chance de aparecimento
    if playerClan == "Naturia" then
        randomItems = {
            {itemId = keys.naturia, quantity = 3, chance = 11},
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Volcanic" then
        randomItems = {
            {itemId = keys.volcanic, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Seavell" then
        randomItems = {
            {itemId = keys.seavell, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Orebound" then
        randomItems = {
            {itemId = keys.orebound, quantity = 3, chance = 31}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Wingeon" then
        randomItems = {
            {itemId = keys.wingeon, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Malefic" then
        randomItems = {
            {itemId = keys.malefic, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Gardestrike" then
        randomItems = {
            {itemId = keys.gardestrike, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Psycraft" then
        randomItems = {
            {itemId = keys.psycraft, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Raibolt" then
        randomItems = {
            {itemId = keys.raibolt, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    end
 
    -- Calcula a chance total
    local totalChance = 0
    for _, itemInfo in ipairs(randomItems) do
        totalChance = totalChance + itemInfo.chance
    end
 
    -- Seleciona um número aleatório dentro da chance total
    local randomChance = math.random(1, totalChance)
 
    -- Seleciona o item baseado na chance
    local accumulatedChance = 0
    for _, itemInfo in ipairs(randomItems) do
        accumulatedChance = accumulatedChance + itemInfo.chance
        if randomChance <= accumulatedChance then
            return itemInfo
        end
    end
 
    -- Se nenhum item for selecionado, retorna nil
    return nil
end
 
function onUse(cid, item, frompos, item2, topos)
    local playerClan = getPlayerClanName(cid)
    local quantidadeStone = 10
   
    if playerClan then
        local stoneID = itemsPedraClan[playerClan]
        if getPlayerItemCount(cid, stoneID) >= quantidadeStone then
            doPlayerRemoveItem(cid, stoneID, quantidadeStone)
            local randomItem = getRandomItem(playerClan)
            if randomItem then
                doPlayerAddItem(cid, randomItem.itemId, randomItem.quantity)
                -- Exibe uma mensagem para o jogador
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ganhou: " .. getItemNameById(randomItem.itemId) .. " (Quantidade: " .. randomItem.quantity .. ")")
                return true
            else
                doPlayerSendCancel(cid, "Não foi possível selecionar um item para craft. Por favor, verifique as configurações.")
            end
        else
            doPlayerSendCancel(cid, "Voce nao tem pedras suficientes para fazer o craft. 10 stones do seu cla, por exemplo leaf stone = NATURIA")
        end
    else
        doPlayerSendCancel(cid, "Você não faz parte de um clã.")
    end
end
  • Like 1
  • Thanks 1
Link para o comentário
Compartilhar em outros sites

  • Administrador
1 minuto atrás, george192 disse:

Boa tarde galera,

Antes de mais nada, este código é exclusivamente do tibiaDevs, não será permitido a cópia dele e nem postagem em outros fóruns, valeu 😄

Seguinte, fiz um código de bigorna que funciona da seguinte forma:
Ele verifica de qual clã o player é, por exemplo, Naturia ou Volcanic, e de acordo com o clã ele adiciona itens.

Como alterar o código:
local itemsPedraClan são os ID's das stones, elas são usadas para o craft.

local quantidadeStone é a quantidade de stone que será retirado do player a cada vez que ele clicar na bigorna

local itemsPremio São os ids dos items que o player pode ganhar, isso aqui você pode adicionar para cada clã

local keys são os ID's das keys de DG, caso no teu game tenha

 

Aqui você pode alterar a quantidade dos itens que o player vai ganhar e a % de chance que o player tem de ganhar o item

        randomItems = {
            {itemId = keys.naturia, quantity = 3, chance = 11},
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }



Bom, parte de configuração é isso ai.

Em actions.xml você precisa adicionar isso aqui:
 

    <action actionid="54367" event="script" value="bigorna.lua"/>


No remeres, basta adicionar uma bigorna e adicionar este actionid nela

em actions/scripts você precisa criar um script chamado bigorna.lua e adicionar o código abaixo.

Segue o código pra vocês:

--- Código desenvolvido pelo george192 do site tibiadevs
 
local itemsPedraClan = {
    Naturia = 11441,
    Volcanic = 11447,
    Seavell = 11442,
    Raibolt = 11444,
    Orebound = 11445,
    Psycraft = 11452,
    Malefic = 11450,
    Wingeon = 19694,
    Gardestrike = 11446
}
 
local quantidadeStone = 10
 
local itemsPremio = {
    boostStone = 12618,
    rareCandy = 6569,
    shinyCharm = 23468,
    essenceShiny = 23418,
    diamond = 2145
}
 
local keys = {
    naturia = 25295,
    volcanic = 25290,
    seavell = 25291,
    raibolt = 25292,
    orebound = 25297,
    psycraft = 25298,
    malefic = 25296,
    wingeon = 25294,
    gardestrike = 25293
}
 
function getRandomItem(playerClan)
    local randomItems = {}
   
    -- Defina as listas de itens para cada clã com chance de aparecimento
    if playerClan == "Naturia" then
        randomItems = {
            {itemId = keys.naturia, quantity = 3, chance = 11},
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Volcanic" then
        randomItems = {
            {itemId = keys.volcanic, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Seavell" then
        randomItems = {
            {itemId = keys.seavell, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Orebound" then
        randomItems = {
            {itemId = keys.orebound, quantity = 3, chance = 31}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Wingeon" then
        randomItems = {
            {itemId = keys.wingeon, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Malefic" then
        randomItems = {
            {itemId = keys.malefic, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Gardestrike" then
        randomItems = {
            {itemId = keys.gardestrike, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Psycraft" then
        randomItems = {
            {itemId = keys.psycraft, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    elseif playerClan == "Raibolt" then
        randomItems = {
            {itemId = keys.raibolt, quantity = 3, chance = 11}, --
            {itemId = itemsPremio.essenceShiny, quantity = 3, chance = 20},
            {itemId = itemsPremio.rareCandy, quantity = 5, chance = 30},
            {itemId = itemsPremio.boostStone, quantity = 3, chance = 35},
            {itemId = itemsPremio.shinyCharm, quantity = 1, chance = 3},
            {itemId = itemsPremio.diamond, quantity = 1, chance = 1}
        }
    end
 
    -- Calcula a chance total
    local totalChance = 0
    for _, itemInfo in ipairs(randomItems) do
        totalChance = totalChance + itemInfo.chance
    end
 
    -- Seleciona um número aleatório dentro da chance total
    local randomChance = math.random(1, totalChance)
 
    -- Seleciona o item baseado na chance
    local accumulatedChance = 0
    for _, itemInfo in ipairs(randomItems) do
        accumulatedChance = accumulatedChance + itemInfo.chance
        if randomChance <= accumulatedChance then
            return itemInfo
        end
    end
 
    -- Se nenhum item for selecionado, retorna nil
    return nil
end
 
function onUse(cid, item, frompos, item2, topos)
    local playerClan = getPlayerClanName(cid)
    local quantidadeStone = 10
   
    if playerClan then
        local stoneID = itemsPedraClan[playerClan]
        if getPlayerItemCount(cid, stoneID) >= quantidadeStone then
            doPlayerRemoveItem(cid, stoneID, quantidadeStone)
            local randomItem = getRandomItem(playerClan)
            if randomItem then
                doPlayerAddItem(cid, randomItem.itemId, randomItem.quantity)
                -- Exibe uma mensagem para o jogador
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce ganhou: " .. getItemNameById(randomItem.itemId) .. " (Quantidade: " .. randomItem.quantity .. ")")
                return true
            else
                doPlayerSendCancel(cid, "Não foi possível selecionar um item para craft. Por favor, verifique as configurações.")
            end
        else
            doPlayerSendCancel(cid, "Voce nao tem pedras suficientes para fazer o craft. 10 stones do seu cla, por exemplo leaf stone = NATURIA")
        end
    else
        doPlayerSendCancel(cid, "Você não faz parte de um clã.")
    end
end

Amei, obrigado pela contribuição seria massa uns printszin ou vídeo dele funcionando.

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • Suporte
Agora, TELASKO disse:

Amei, obrigado pela contribuição seria massa uns printszin ou vídeo dele funcionando.

Adicionado

  • Thanks 1
Link para o comentário
Compartilhar em outros sites

Em 06/04/2024 em 13:38, george192 disse:

Adicionado

Poderia fazer outro desse para mim sem ser de clan, livre para todoas tlgd

 

Link para o comentário
Compartilhar em outros sites

  • Suporte
10 horas atrás, PokeXTibia disse:

Poderia fazer outro desse para mim sem ser de clan, livre para todoas tlgd

 

É só vc retirar a validação do clã ali e pimba, sistema funcional 🙂

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.

Visitante
Responder

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

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

×
  • Criar Novo...