Ir para conteúdo
  • 0

Complementar script (Boss)


880123

Pergunta

Ola galera, tudo bom ?

Gostaria de um suporte de voces, para complementar umas coisas nesse script. Esse script cunfiona de tal forma. quem mata o boss ganha 5 items, porem eu quero a tal modificaçao.
como voce pode ve no script ganha 5 items quando mata o monstro. Eu queria q so ganhasse 1 item, e que tivesse a chance de ganhar em %, tipo ... item [1] -- 10% do player ganhar. item [2] -- 5% do player ganhar. Nessa base e lembrando q so ganharaia 1 item. Alguem poderia da essa força pf ! ><

Citar

local config = {
monster = {"Boss"}, -- nome dos monstros, separado por vírgulas.
item = {[1] = 9693, [2] = 9971, [3] = 7440, [4] = 8300, [5] = 12289,}, -- [um numero maior que o anterior] = ID do item1, ID do item2, ID do item3...
qnt = {[1] = 1, [2] = 100, [3] = 1, [4] = 1, [5] = 1,}, -- [um numero maior que o anterior] = quantidade do item1, quantidade do item2, quantidade do item3...
effect = 27, -- efeito ao matar o monstro.
}

function onKill(cid, target)
    if isInArray(config.monster, getCreatureName(target)) then
        for i = 1, #config.item do
            doPlayerAddItem (cid, config.item[i], config.qnt[i])
            local players = getPlayersOnline()
    if #players > 0 then
        local t,v = {},{}
        for _, pid in pairs(players) do
            if not isInArray(t, getPlayerIp(pid)) then 
                t[#t+1] = getPlayerIp(pid)
                v[#v+1] = pid
            end
        end
        end
        end

                doBroadcastMessage("O Boss morreu", MESSAGE_STATUS_WARNING)
        doSendMagicEffect (getThingPos (cid), config.effect)
    end
return true
end

 

Editado por 880123
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
local config = {
    monster = {"Boss"}, -- nome dos monstros, separados por vírgulas.
    items = {
        {itemID = 9693, chance = 10}, -- item [1] -- 10% de chance
        {itemID = 9971, chance = 5},  -- item [2] -- 5% de chance
        -- Adicione o resto dos itens aqui
    },
    effect = 27, -- efeito ao matar o monstro.
}

function onKill(cid, target)
    if isInArray(config.monster, getCreatureName(target)) then
        local player = Player(cid)
        if player then
            local droppedItem = false
            for _, itemData in ipairs(config.items) do
                if math.random(100) <= itemData.chance then
                    player:addItem(itemData.itemID, 1)
                    droppedItem = true
                    break -- Se um item cair, saia do loop.
                end
            end

            if droppedItem then
                doBroadcastMessage("O Boss morreu e você obteve um item!", MESSAGE_STATUS_WARNING)
            else
                doBroadcastMessage("O Boss morreu, mas você não obteve nenhum item.", MESSAGE_STATUS_WARNING)
            end

            doSendMagicEffect(getThingPos(cid), config.effect)
        end
    end
    return true
end

(Não esqueça de adicionar os outros itens)

Neste código, reorganizei a estrutura de configuração para incluir uma tabela chamada items, onde cada item tem um itemID e uma chance em porcentagem de ser dropado. O loop for verifica cada item na tabela items e, com base na chance, decide se o item deve ser dado ao jogador. Se um item é concedido, o loop é interrompido para garantir que o jogador receba apenas um item, mesmo que vários itens na lista tenham uma chance de drop.

Editado por zmovirzynski
Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, zmovirzynski disse:
local config = {
    monster = {"Boss"}, -- nome dos monstros, separados por vírgulas.
    items = {
        {itemID = 9693, chance = 10}, -- item [1] -- 10% de chance
        {itemID = 9971, chance = 5},  -- item [2] -- 5% de chance
        -- Adicione o resto dos itens aqui
    },
    effect = 27, -- efeito ao matar o monstro.
}

function onKill(cid, target)
    if isInArray(config.monster, getCreatureName(target)) then
        local player = Player(cid)
        if player then
            local droppedItem = false
            for _, itemData in ipairs(config.items) do
                if math.random(100) <= itemData.chance then
                    player:addItem(itemData.itemID, 1)
                    droppedItem = true
                    break -- Se um item cair, saia do loop.
                end
            end

            if droppedItem then
                doBroadcastMessage("O Boss morreu e você obteve um item!", MESSAGE_STATUS_WARNING)
            else
                doBroadcastMessage("O Boss morreu, mas você não obteve nenhum item.", MESSAGE_STATUS_WARNING)
            end

            doSendMagicEffect(getThingPos(cid), config.effect)
        end
    end
    return true
end

(Não esqueça de adicionar os outros itens)

Neste código, reorganizei a estrutura de configuração para incluir uma tabela chamada items, onde cada item tem um itemID e uma chance em porcentagem de ser dropado. O loop for verifica cada item na tabela items e, com base na chance, decide se o item deve ser dado ao jogador. Se um item é concedido, o loop é interrompido para garantir que o jogador receba apenas um item, mesmo que vários itens na lista tenham uma chance de drop.

 

1 hora atrás, zmovirzynski disse:
local config = {
    monster = {"Boss"}, -- nome dos monstros, separados por vírgulas.
    items = {
        {itemID = 9693, chance = 10}, -- item [1] -- 10% de chance
        {itemID = 9971, chance = 5},  -- item [2] -- 5% de chance
        -- Adicione o resto dos itens aqui
    },
    effect = 27, -- efeito ao matar o monstro.
}

function onKill(cid, target)
    if isInArray(config.monster, getCreatureName(target)) then
        local player = Player(cid)
        if player then
            local droppedItem = false
            for _, itemData in ipairs(config.items) do
                if math.random(100) <= itemData.chance then
                    player:addItem(itemData.itemID, 1)
                    droppedItem = true
                    break -- Se um item cair, saia do loop.
                end
            end

            if droppedItem then
                doBroadcastMessage("O Boss morreu e você obteve um item!", MESSAGE_STATUS_WARNING)
            else
                doBroadcastMessage("O Boss morreu, mas você não obteve nenhum item.", MESSAGE_STATUS_WARNING)
            end

            doSendMagicEffect(getThingPos(cid), config.effect)
        end
    end
    return true
end

(Não esqueça de adicionar os outros itens)

Neste código, reorganizei a estrutura de configuração para incluir uma tabela chamada items, onde cada item tem um itemID e uma chance em porcentagem de ser dropado. O loop for verifica cada item na tabela items e, com base na chance, decide se o item deve ser dado ao jogador. Se um item é concedido, o loop é interrompido para garantir que o jogador receba apenas um item, mesmo que vários itens na lista tenham uma chance de drop.

Amigo, agradeço por tentar ajudar, porem deu seguinte erro ao matar o boss. Esqueci de comentar q e TFS 0.4

 

Citar

[0:52:07.907] data/creaturescripts/scripts/premio_boss.lua:16: attempt to call global 'Player' (a nil value)

 

Link para o comentário
Compartilhar em outros sites

  • 0
5 minutos atrás, zmovirzynski disse:

Opa,

 

Isso acontece porque eu deixei player genérico, desculpa, você deve atribuir ao seu getPlayerIp(pid), igual está no seu código

Desculpas, n entendi ! Sou mt leigo ! =[

6 minutos atrás, zmovirzynski disse:

Opa,

 

Isso acontece porque eu deixei player genérico, desculpa, você deve atribuir ao seu getPlayerIp(pid), igual está no seu código

Ah, entedi trocar Player por getPlayer. Muitooo obrigo amigo. Funcionou !

11 minutos atrás, zmovirzynski disse:

Opa,

 

Isso acontece porque eu deixei player genérico, desculpa, você deve atribuir ao seu getPlayerIp(pid), igual está no seu código

E, nao consegui nao, deu erro ainda ! =[
o mostro morre, porem n ganha item e da error no console =[

Link para o comentário
Compartilhar em outros sites

  • 0
local config = {
    monster = {"Boss"}, -- nome dos monstros, separado por vírgulas.
    item = {
        [1] = {id = 9693, chance = 10}, -- ID do item1 e chance em porcentagem (exemplo: 10%)
        [2] = {id = 9971, chance = 5},  -- ID do item2 e chance em porcentagem (exemplo: 5%)
        [3] = {id = 7440, chance = 20}, -- ID do item3 e chance em porcentagem (exemplo: 20%)
        [4] = {id = 8300, chance = 15}, -- ID do item4 e chance em porcentagem (exemplo: 15%)
        [5] = {id = 12289, chance = 8}, -- ID do item5 e chance em porcentagem (exemplo: 8%)
    },
    effect = 27, -- efeito ao matar o monstro.
}

function onKill(cid, target)
    if isInArray(config.monster, getCreatureName(target)) then
        local totalChance = 0
        for i = 1, #config.item do
            totalChance = totalChance + config.item[i].chance
        end

        local randomChance = math.random(1, totalChance)
        local accumulatedChance = 0
        local chosenItem = nil

        for i = 1, #config.item do
            accumulatedChance = accumulatedChance + config.item[i].chance
            if randomChance <= accumulatedChance then
                chosenItem = config.item[i]
                break
            end
        end

        if chosenItem then
            doPlayerAddItem(cid, chosenItem.id, 1)
        end

        doBroadcastMessage("O Boss morreu", MESSAGE_STATUS_WARNING)
        doSendMagicEffect(getThingPos(cid), config.effect)
    end
    return true
end

 

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...