Ir para conteúdo
Propaganda

Posts Recomendados

OPA GALERINHA HOJE TRAGO AQUI UM SISTEMA DE KILL DROP, ELE FUNCIONA ASSIM: VOCE COLOCA NO CODIGO O ITEM QUE VC DESEJA, E O EFEITO.

 


local itens = {
    -- Cada item tem um id, um efeito e uma mensagem
    {id = 12162, efeito = 173, mensagem = "DROP ESPECIAL."},
    {id = 12161, efeito = 173, mensagem = "Você usou uma pedra vermelha."},
    {id = 1002, efeito = 173, mensagem = "Você usou uma pedra verde."},
    {id = 1003, efeito = 173, mensagem = "Você usou uma pedra amarela."}
}


local function isDrop(itemid)
    for i, item in ipairs(itens) do
        if item.id == itemid then
            return true
        end
    end
    return false
end

local function getEffectAndMessage(itemid)
    for i, item in ipairs(itens) do
        if item.id == itemid then
            return item.efeito, item.mensagem
        end
    end
    return nil
end

local function sendTimedAnimatedText(cid, pos, text, color, duration)
    if not isCreature(cid) then
        return true
    end
    local ticks = duration / 1000 
    local interval = 1 
    local totalTicks = ticks / interval
    local currentTick = 0

    local function sendText()
        if currentTick >= totalTicks then
            return
        end
        currentTick = currentTick + 1
        doSendAnimatedText(pos, text, color)
        addEvent(sendText, interval * 1000) 
    end

    sendText()
end

local function sendTimedMagicEffect(pos, effect, duration)
    if not pos or not effect then
        return
    end
    doSendMagicEffect(pos, effect)
    addEvent(doSendMagicEffect, duration, pos, CONST_ME_NONE)
end

local function useItem(cid, position, corpseid)
    if not isCreature(cid) then
        return true
    end
    local corpse = getTileItemById(position, corpseid).uid
    if corpse <= 1 or not isContainer(corpse) then
        return true
    end
    local player = getCreatureMaster(cid)
    if not isPlayer(player) then
        return true
    end
    local itemsToAdd = {}
    local itemsToRemove = {} 
    for slot = 0, (getContainerSize(corpse) - 1) do
        local item = getContainerItem(corpse, slot)
        if item.uid > 1 then
            if isDrop(item.itemid) then
                local effect, message = getEffectAndMessage(item.itemid)
                table.insert(itemsToAdd, {itemid = item.itemid, count = item.type})
                sendTimedMagicEffect(position, effect, 10000) 
                sendTimedAnimatedText(position, message, math.random(150, 190), 10000) 
                table.insert(itemsToRemove, item.uid)
            end
        end
    end
   
    for _, uid in ipairs(itemsToRemove) do
        doRemoveItem(uid)
    end
    
    for _, itemData in ipairs(itemsToAdd) do
        doPlayerAddItem(player, itemData.itemid, itemData.count)
    end
end


function onKill(cid, target, lastHit)
    if not ehMonstro(target) then
        return true
    end
    local corpse = getMonsterInfo(getCreatureName(target)).lookCorpse
    addEvent(useItem, 5, getCreatureSummons(cid)[1], getThingPos(target), corpse)
    return true
end

registra isso no login.lua \/
registerCreatureEvent(cid, "killdrop")

isso no creaturescript.lua
<event type="kill" name="killdrop" event="script" value="killdrop.lua"/>

APÓS REGISTRADO E CONFIGURADO O SCRIPT FUNCIONARA DA SEGUINTE FORMA:
SEMPRE QUE UM DESSES ITENS CAIR DO CORPO DO POKEMON ELES IRAO AUTOMATICO PARA A BAG DO PLAYER

CASO QUEIRAM TESTAR FIQUEM A VONTADE, JA FIZ TESTE PELO /M E O LOOT VAI PRA QUEM INVOCO NO CASO EU, E FIZ NA PESCA COM PLAYER O OUTRO PLAYER MATO MAIS NAO OBTEVE O LOOT, E SIM EU, POIS FOI EU QUE O SCRIPT MARCO COMO ALVO.

 

Link para o comentário
https://tibiadevs.com/forums/topic/332-kill-drop-automatic/
Compartilhar em outros sites

  • Moderador

Tópico Aprovado!
Somos gratos por sua contribuição, com certeza será útil para toda a comunidade! ❤️  RE
P+

muito bom Kevin.

Link para o comentário
https://tibiadevs.com/forums/topic/332-kill-drop-automatic/#findComment-1696
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
  • Criar Novo...