Ir para conteúdo
  • 0

Action Erro Ajuda Por favor


babiloniax

Pergunta

Boa galera estou com um erro em actions.lua do meu servidor tfs 1.3 preciso de ajuda não consegui resolver esse erro.

action.lua

 

Lua Script Error: [Action Interface] data/actions/scripts/tools/shovel.lua:onUse data/actions/lib/actions.lua:322: attempt to index local 'player' (a nil value) stack traceback:         [C]: in function '__index'         data/actions/lib/actions.lua:322: in function <data/actions/lib/actions. lua:219> 

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
Em 24/07/2020 em 13:55, Yan18 disse:

Está dentro do spoiler código.

o log de erro do distro listou um arquivo diferente do actions.lua na qual tu cita.

 

Em 05/07/2020 em 11:27, babiloniax disse:

Lua Script Error: [Action Interface] data/actions/scripts/tools/shovel.lua:onUse

 

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

  • 0
24 minutos atrás, Poccnn disse:

o log de erro do distro listou um arquivo diferente do actions.lua na qual tu cita.

 

 

Não amigo, é aquele script mesmo, o log está falando que a função onShovel do arquivo actions.lua da pasta lib (e não da pasta scripts) deu erro. 

Link para o comentário
Compartilhar em outros sites

  • 0
Em 05/07/2020 em 11:27, babiloniax disse:

Lua Script Error: [Action Interface] data/actions/scripts/tools/shovel.lua:onUse data/actions/lib/actions.lua:322: attempt to index local 'player' (a nil value) stack traceback:         [C]: in function '__index'         data/actions/lib/actions.lua:322: in function <data/actions/lib/actions. lua:219> 

 

9 horas atrás, Yan18 disse:

Não amigo, é aquele script mesmo, o log está falando que a função onShovel do arquivo actions.lua da pasta lib (e não da pasta scripts) deu erro. 

 

Link para o comentário
Compartilhar em outros sites

  • 0
20 minutos atrás, Poccnn disse:

Lua Script Error: [Action Interface] data/actions/scripts/tools/shovel.lua:onUse data/actions/lib/actions.lua:322: attempt to index local 'player' (a nil value) stack traceback:         [C]: in function '__index'         data/actions/lib/actions.lua:322: in function <data/actions/lib/actions. lua:219> 

Exatamente, é o que você citou ai. Acho que você ainda não entendeu a origem do erro.

 

O log está falando que a função onUseShovel (ou onShovel dependendo da base) que foi criada no arquivo actions.lua da pasta Lib está dando erro na função onUse(quando usa a Shovel) no arquivo shovel.lua da pasta tools. Esse arquivo shovel.lua apenas da um return da função onUseShovel que fica na pasta actions.lua de Lib (Data/Actions/Lib/actions.lua), que é o arquivo que o amigo criador do tópico postou no spoiler códigos, ou seja, o problema provavelmente está ali mesmo.

 

@babiloniax

 

Cara, é o seguinte, você informou no seu tópico que o seu server é TFS 1.2, eu comparei o seu actions.lua de Lib, mais especificamente a função onUseShovel que está dando problema com o do meu TFS 1.3, e a função onUseShovel do TFS 1.3 tem muito menos linhas do que a do seu servidor.

 

Vamos fazer um teste, usa a do que eu tenho aqui, vê se persistirá o problema, e caso não dê problemas, tentamos encontrar o problema na função original do seu server. Eu já substitui para você, apenas troque tudo no seu actions.lua (da pasta Lib) por esse:

Spoiler

local groundIds = {354, 355} -- pick usable ground
local sandIds = {231, 9059} -- desert sand
local holeId = { -- usable rope holes, for rope spots see global.lua
    294, 369, 370, 383, 392, 408, 409, 410, 427, 428, 429, 430, 462, 469, 470, 482,
    484, 485, 489, 924, 1369, 3135, 3136, 4835, 4837, 7933, 7938, 8170, 8249, 8250,
    8251, 8252, 8254, 8255, 8256, 8276, 8277, 8279, 8281, 8284, 8285, 8286, 8323,
    8567, 8585, 8595, 8596, 8972, 9606, 9625, 13190, 14461, 19519, 21536, 23713,
    26020
}
local holes = {468, 481, 483, 7932, 23712} -- holes opened by shovel

local JUNGLE_GRASS = { 2782, 3985, 19433 }
local WILD_GROWTH = { 1499, 11099, 2101, 1775, 1447, 1446}

local fruits = {2673, 2674, 2675, 2676, 2677, 2678, 2679, 2680, 2681, 2682, 2684, 2685, 5097, 8839, 8840, 8841}

local lava = {
    Position(32808, 32336, 11),
    Position(32809, 32336, 11),
    Position(32810, 32336, 11),
    Position(32808, 32334, 11),
    Position(32807, 32334, 11),
    Position(32807, 32335, 11),
    Position(32807, 32336, 11),
    Position(32807, 32337, 11),
    Position(32806, 32337, 11),
    Position(32805, 32337, 11),
    Position(32805, 32338, 11),
    Position(32805, 32339, 11),
    Position(32806, 32339, 11),
    Position(32806, 32338, 11),
    Position(32807, 32338, 11),
    Position(32808, 32338, 11),
    Position(32808, 32337, 11),
    Position(32809, 32337, 11),
    Position(32810, 32337, 11),
    Position(32811, 32337, 11),
    Position(32811, 32338, 11),
    Position(32806, 32338, 11),
    Position(32810, 32338, 11),
    Position(32810, 32339, 11),
    Position(32809, 32339, 11),
    Position(32809, 32338, 11),
    Position(32811, 32336, 11),
    Position(32811, 32335, 11),
    Position(32810, 32335, 11),
    Position(32809, 32335, 11),
    Position(32808, 32335, 11),
    Position(32809, 32334, 11),
    Position(32809, 32333, 11),
    Position(32810, 32333, 11),
    Position(32811, 32333, 11),
    Position(32806, 32338, 11),
    Position(32810, 32334, 11),
    Position(32811, 32334, 11),
    Position(32812, 32334, 11),
    Position(32813, 32334, 11),
    Position(32814, 32334, 11),
    Position(32812, 32333, 11),
    Position(32810, 32334, 11),
    Position(32812, 32335, 11),
    Position(32813, 32335, 11),
    Position(32814, 32335, 11),
    Position(32814, 32333, 11),
    Position(32813, 32333, 11)
}

local function revertItem(position, itemId, transformId)
    local item = Tile(position):getItemById(itemId)
    if item then
        item:transform(transformId)
    end
end

local function removeRemains(toPosition)
    local item = Tile(toPosition):getItemById(2248)
    if item then
        item:remove()
    end
end

local function revertCask(position)
    local caskItem = Tile(position):getItemById(2249)
    if caskItem then
        caskItem:transform(5539)
        position:sendMagicEffect(CONST_ME_MAGIC_GREEN)
    end
end

local cutItems = {
    [3794] = 3959, [3795] = 3959, [3796] = 3958, [3797] = 3958, [3798] = 3958, [3799] = 3958,
    [1614] = 2251, [1615] = 2251, [1616] = 2251, [1619] = 2251, [1650] = 2253, [1651] = 2253,
    [1652] = 2253, [1653] = 2253, [1658] = 2252, [1659] = 2252, [1660] = 2252, [1661] = 2252,
    [1666] = 2252, [1667] = 2252, [1668] = 2252, [1669] = 2252, [1670] = 2252, [1671] = 2252,
    [1672] = 2252, [1673] = 2252, [1674] = 2253, [1676] = 2252, [1677] = 2253, [1714] = 2251,
    [1715] = 2251, [1716] = 2251, [1724] = 2252, [1725] = 2252, [1726] = 2252, [1727] = 2252,
    [1728] = 2254, [1729] = 2254, [1730] = 2254, [1731] = 2254, [1732] = 2254, [1733] = 2254,
    [1735] = 2254, [1775] = 2250, [2034] = 2252, [4996] = 2252, [2116] = 2254, [2116] = 2254,
    [2117] = 2254, [2118] = 2254, [2119] = 2254, [6123] = 2254, [2080] = 2254, [2081] = 2254,
    [2082] = 2254, [2083] = 2254, [2084] = 2254, [2085] = 2254, [2093] = 2250, [2094] = 2250,
    [2095] = 2250, [2098] = 2250, [2099] = 2250, [2101] = 2250, [2106] = 2250, [2105] = 2250,
    [2562] = 2257, [2581] = 2258, [2582] = 2258, [2582] = 2258, [2583] = 2258, [3805] = 6267,
    [3806] = 6267, [3807] = 2252, [3808] = 2252, [3809] = 2252, [3810] = 2252, [3811] = 2255,
    [3812] = 6267, [3813] = 2252, [3814] = 2252, [3815] = 2252, [3816] = 2252, [3817] = 2252,
    [3818] = 2252, [3819] = 2252, [3820] = 2252, [3821] = 2255, [3832] = 2255, [3833] = 2255,
    [3834] = 2255, [3835] = 2255, [6356] = 2257, [6357] = 2257, [6358] = 2257, [6359] = 2257,
    [6360] = 2257, [6361] = 2257, [6363] = 2257, [6368] = 2250, [6369] = 2250, [6370] = 2250,
    [6371] = 2250, [1738] = 2250, [1739] = 2251, [1740] = 2250, [1741] = 2255, [1747] = 2250,
    [1748] = 2250, [1749] = 1750, [1750] = 2254, [1751] = 2254, [1752] = 2254, [1753] = 2254,
    [1770] = 2251, [1774] = 2250, [6085] = 2254, [7481] = 2251, [7482] = 2251, [7483] = 2251,
    [7484] = 2250, [7706] = 2251, [7707] = 2251, [1738] = 2250, [1739] = 2251, [6109] = 2254,
    [6110] = 2254, [6111] = 2254, [6112] = 2254, [7538] = 7544, [7539] = 7545, [7585] = 7586,
    [29087] = 0, [29088] = 0
}

local function containsId(table, id)
    for i, v in pairs(table) do
        if (i == id) then
            return true
        end
    end

    return false
end

function onDestroyItem(player, item, fromPosition, target, toPosition, isHotkey)
    if not target or type(target) ~= "userdata" or not target:isItem() then
        return false
    end

    if target:hasAttribute(ITEM_ATTRIBUTE_UNIQUEID) or target:hasAttribute(ITEM_ATTRIBUTE_ACTIONID) then
        return false
    end

    if toPosition.x == CONTAINER_POSITION then
        player:sendCancelMessage(Game.getReturnMessage(RETURNVALUE_NOTPOSSIBLE))
        return true
    end

    local targetId = target.itemid
    local destroyId = cutItems[targetId] or ItemType(targetId):getDestroyId()
    if destroyId == 0 then
        if targetId ~= 29087 and targetId ~= 29088 then
            return false
        end
    end

    if math.random(7) == 1 then
        local item = Game.createItem(destroyId, 1, toPosition)
        if item ~= nil then
            item:decay()
        end

        -- Against The Spider Cult (Spider Eggs)
        if targetId == 7585 then
            local eggStorage = player:getStorageValue(Storage.TibiaTales.AgainstTheSpiderCult)
            if eggStorage >= 1 and eggStorage < 5 then
                player:setStorageValue(Storage.TibiaTales.AgainstTheSpiderCult, math.max(1, eggStorage) + 1)
            end

            Game.createMonster("Giant Spider", Position(33181, 31869, 12))
        end

        -- Move items outside the container
        if target:isContainer() then
            for i = target:getSize() - 1, 0, -1 do
                   local containerItem = target:getItem(i)
                if containerItem then
                    containerItem:moveTo(toPosition)
                end
            end
        end
        if targetId == 29087 or targetId == 29088 then -- energy barrier na threatned dreams quest (feyrist)
            addEvent(Game.createItem, math.random(13000, 17000), targetId, 1, toPosition)
        end
        target:remove(1)
    end

    toPosition:sendMagicEffect(CONST_ME_POFF)
    return true
end

function onUseRope(player, item, fromPosition, target, toPosition, isHotkey)
    if toPosition.x == CONTAINER_POSITION then
        return false
    end

    local targetId = target.itemid

    local tile = Tile(toPosition)
    local ground = tile:getGround()
    if ground and isInArray(ropeSpots, ground.itemid) or tile:getItemById(14435) then
        player:teleportTo(toPosition:moveUpstairs())
        if targetId == 8592 then
            if player:getStorageValue(Storage.RookgaardTutorialIsland.tutorialHintsStorage) < 22 then
                player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You have successfully used your rope to climb out of the hole. Congratulations! Now continue to the east.')
            end
        end
        return true
    elseif isInArray(holeId, targetId) then
        toPosition.z = toPosition.z + 1
        tile = Tile(toPosition)
        if tile then
            local thing = tile:getTopVisibleThing()
            if thing:isItem() and thing:getType():isMovable() then
                return thing:moveTo(toPosition:moveUpstairs())
            elseif thing:isCreature() and thing:isPlayer() then
                return thing:teleportTo(toPosition:moveUpstairs())
            end
        end

        player:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE)
        return true
    end

    return false
end

function onUseShovel(player, item, fromPosition, target, toPosition, isHotkey)
    local tile = Tile(toPosition)
    if not tile then
        return false
    end

    local ground = tile:getGround()
    if not ground then
        return false
    end

    local groundId = ground:getId()
    if table.contains(holes, groundId) then
        ground:transform(groundId + 1)
        ground:decay()

        toPosition.z = toPosition.z + 1
        tile:relocateTo(toPosition)
        player:addAchievementProgress("The Undertaker", 500)
    elseif target.itemid == 20230 then -- swamp digging
        if (player:getStorageValue(PlayerStorageKeys.swampDigging)) <= os.time() then
            local chance = math.random(100)
            if chance >= 1 and chance <= 42 then
                player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You dug up a dead snake.")
                player:addItem(3077)
            elseif chance >= 43 and chance <= 79 then
                player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You dug up a small diamond.")
                player:addItem(2145)
            elseif chance >= 80 then
                player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You dug up a leech.")
                player:addItem(20138)
            end
            player:setStorageValue(PlayerStorageKeys.swampDigging, os.time() + 7 * 24 * 60 * 60)
            player:getPosition():sendMagicEffect(CONST_ME_GREEN_RINGS)
        end
    elseif table.contains(sandIds, groundId) then
        local randomValue = math.random(1, 100)
        if target.actionid == actionIds.sandHole and randomValue <= 20 then
            ground:transform(489)
            ground:decay()
        elseif randomValue == 1 then
            Game.createItem(2159, 1, toPosition)
            player:addAchievementProgress("Gold Digger", 100)
        elseif randomValue > 95 then
            Game.createMonster("Scarab", toPosition)
        end
        toPosition:sendMagicEffect(CONST_ME_POFF)
    else
        return false
    end

    return true
end

function onUsePick(player, item, fromPosition, target, toPosition, isHotkey)
    local stonePos = Position(32648, 32134, 10)
    if (toPosition == stonePos) then
        local tile = Tile(stonePos)
        local stone = tile:getItemById(1285)
        if (stone) then
            stone:remove(1)
            toPosition:sendMagicEffect(CONST_ME_POFF)
            addEvent(function() Game.createItem(1285, 1, stonePos) end, 20000)

            return true
        end
    end

    local targetId, targetActionId = target.itemid, target.actionid
    if isInArray({354, 355}, targetId) and (target:hasAttribute(ITEM_ATTRIBUTE_UNIQUEID) or target:hasAttribute(ITEM_ATTRIBUTE_ACTIONID)) then
        target:transform(392)
        target:decay()
        toPosition:sendMagicEffect(CONST_ME_POFF)
        
    elseif targetId == 23759 then
        target:remove()
        toPosition:sendMagicEffect(CONST_ME_POFF)
        player:addItem(23760, 1)
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You picked a beautiful lion's mane flower.")

    -- shiny stone refining
    elseif target.itemid == 11227 then
        local chance = math.random(1,100)

        if chance == 1 then
            player:addItem(2160, 1) -- 1% chance of getting crystal coin
        elseif chance <= 6 then
            player:addItem(2148, 1) -- 5% chance of getting gold coin
        elseif chance <= 51 then
            player:addItem(2152, 1) -- 45% chance of getting platinum coin
        else
            player:addItem(2145, 1) -- 49% chance of getting small diamond
        end
        target:getPosition():sendMagicEffect(CONST_ME_BLOCKHIT)
        target:remove(1)

    elseif targetId == 11227 then
        target:remove(1)
        toPosition:sendMagicEffect(CONST_ME_POFF)
        player:addItem(2152, 10)

    elseif targetId == 7200 then
        target:transform(7236)
        target:decay()
        toPosition:sendMagicEffect(CONST_ME_HITAREA)

    elseif targetId == 468 then
        target:transform(469)
        target:decay()
        toPosition:sendMagicEffect(CONST_ME_HITAREA)

    elseif targetId == 6299 then
        target:transform(482)
        target:decay()
        toPosition:sendMagicEffect(CONST_ME_HITAREA)

    elseif targetId == 23712 then
        target:transform(23713)
        target:decay()
        toPosition:sendMagicEffect(CONST_ME_HITAREA)

    elseif targetId == 481 then
        target:transform(482)
        target:decay()
        toPosition:sendMagicEffect(CONST_ME_HITAREA)

    elseif targetId == 483 then
        target:transform(484)
        target:decay()
        toPosition:sendMagicEffect(CONST_ME_HITAREA)

    elseif targetId == 7932 then
        target:transform(7933)
        target:decay()
        toPosition:sendMagicEffect(CONST_ME_HITAREA)

    elseif targetId == 103 and targetActionId == 4205 then
        if player:getStorageValue(Storage.TibiaTales.IntoTheBonePit) ~= 1 then
            return false
        end

        local remains = Game.createItem(2248, 1, toPosition)
        if remains then
            remains:setActionId(4206)
        end
        toPosition:sendMagicEffect(CONST_ME_HITAREA)
        addEvent(removeRemains, 60000, toPosition)

    --sea of light
    elseif targetId == 8634 then
        if target.actionid == 4224 then
            if player:getStorageValue(Storage.SeaOfLightQuest.Questline) == 4 and player:getStorageValue(target.actionid) ~= 1 then
                player:addItem(10614, 1)
                toPosition:sendMagicEffect(CONST_ME_ENERGYHIT)
                player:setStorageValue(target.actionid, 1)
                player:setStorageValue(Storage.SeaOfLightQuest.Questline, 5)
                player:say("*crush*", TALKTYPE_MONSTER_SAY)
            end
        end

    -- Shadows of Yalahar
    elseif targetId == 8933 then
        if player:getStorageValue(Storage.ShadownofYalahar.Questline) == 10 then
        player:sendTextMessage(TALKTYPE_ORANGE_1, 'You have unearthed a crystal!')
        player:addItem(10169, 1)
        toPosition:sendMagicEffect(CONST_ME_POFF)
        end

    -- grimvale quest
    elseif targetId == 24731 then
        if player:getStorageValue(Storage.Grimvale.SilverVein) < os.time() then
            local chance = math.random(1, 10)
            if chance >= 5 then
                player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Even after a thorough and frustrating search you could not find enough liquified silver in this vein to fill a flask.')
            elseif chance <= 4 then
                player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Carefully you gather some of the liquified silver from this vein in a small flask. You now feel strangely affected to the moon.')
                player:addItem(24714)
                target:transform(4475)
                addEvent(revertItem, 10 * 60 * 1000, toPosition, 4475, 24731)
            end
            player:setStorageValue(Storage.Grimvale.SilverVein, os.time() + 2 * 60)
        else
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You are still exhausted from earlier attempts. Getting liquid silver out of the mountain needs concentration and a steady hand.')
        end

    --The Ice Islands Quest, Nibelor 1: Breaking the Ice
    elseif targetId == 3621 and targetActionId == 12026 then
        local missionProgress, pickAmount = player:getStorageValue(Storage.TheIceIslands.Mission02), player:getStorageValue(Storage.TheIceIslands.PickAmount)
        if missionProgress < 1 or pickAmount >= 3 or player:getStorageValue(Storage.TheIceIslands.Questline) ~= 3 then
            return false
        end

        player:setStorageValue(Storage.TheIceIslands.PickAmount, math.max(0, pickAmount) + 1)
        player:setStorageValue(Storage.TheIceIslands.Mission02, missionProgress + 1) -- Questlog The Ice Islands Quest, Nibelor 1: Breaking the Ice

        if pickAmount >= 2 then
            player:setStorageValue(Storage.TheIceIslands.Questline, 4)
            player:setStorageValue(Storage.TheIceIslands.Mission02, 4) -- Questlog The Ice Islands Quest, Nibelor 1: Breaking the Ice
        end

        local crackItem = Tile(toPosition):getItemById(7185)
        if crackItem then
            crackItem:transform(7186)
            addEvent(revertItem, 60 * 1000, toPosition, 7186, 7185)
        end

        local chakoyas = {"chakoya toolshaper", "chakoya tribewarden", "chakoya windcaller"}
        Game.createMonster(chakoyas[math.random(#chakoyas)], toPosition)
        toPosition:sendMagicEffect(CONST_ME_TELEPORT)

    elseif targetId == 1304 then
    --The Pits of Inferno Quest
        if target.uid == 1022 then
            for i = 1, #lava do
                Game.createItem(5815, 1, lava)
            end
            target:transform(2256)
            toPosition:sendMagicEffect(CONST_ME_SMOKE)

    -- naginata quest
        elseif targetActionId == 50058 then
            local stoneStorage = Game.getStorageValue(GlobalStorage.NaginataStone)
            if stoneStorage ~= 5 then
                Game.setStorageValue(GlobalStorage.NaginataStone, math.max(0, stoneStorage) + 1)
            elseif stoneStorage == 5 then
                target:remove(1)
                Game.setStorageValue(GlobalStorage.NaginataStone)
            end
            toPosition:sendMagicEffect(CONST_ME_POFF)
            doTargetCombatHealth(0, player, COMBAT_PHYSICALDAMAGE, -31, -39, CONST_ME_NONE)
        end

     --The Banshee Quest
    elseif targetId == 9025 and targetActionId == 101 then
        target:transform(392)
        target:decay()
        toPosition:sendMagicEffect(CONST_ME_POFF)

     -- The Hidden City of Beregar Quest
    elseif targetActionId == 50090 then
        if player:getStorageValue(Storage.hiddenCityOfBeregar.WayToBeregar) == 1 then
            player:teleportTo(Position(32566, 31338, 10))
        end

    elseif targetActionId == 50114 then
        if Tile(Position(32617, 31513, 9)):getItemById(1027) and Tile(Position(32617, 31514, 9)):getItemById(1205) then
            local rubbleItem = Tile(Position(32619, 31514, 9)):getItemById(5709)
            if rubbleItem then
                rubbleItem:remove(1)
            end
        else
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You can't remove this pile since it's currently holding up the tunnel.")
        end

    -- Pythius The Rotten (Firewalker Boots)
    elseif targetActionId == 50127 then
        if player:getStorageValue(Storage.QuestChests.FirewalkerBoots) == 1 then
            return false
        end
        target:remove(1)

        local stoneItem = Tile(toPosition):getItemById(1304)
        if stoneItem then
            stoneItem:remove(1)
        end

        iterateArea(
            function(position)
                local groundItem = Tile(position):getGround()
                if groundItem and groundItem.itemid == 598 then
                    groundItem:transform(5815)
                end
            end,
            Position(32550, 31373, 15),
            Position(32551, 31379, 15)
        )
        iterateArea(
            function(position)
                position:sendMagicEffect(CONST_ME_POFF)
            end,
            Position(32551, 31374, 15),
            Position(32551, 31379, 15)
        )

        local portal = Game.createItem(1387, 1, Position(32551, 31376, 15))
        if portal then
            portal:setActionId(50126)
        end

        -- The Asure
    elseif targetActionId == 50091 then
        player:teleportTo(Position(32960, 32676, 4))

        -- Wrath of the emperor quest
    elseif targetId == 12296 then
        player:addItem(12295, 1)
        player:say("The cracked part of the table lets you cut out a large chunk of wood with your pick.", TALKTYPE_MONSTER_SAY)

    elseif targetId == 22671 then
        target:transform(392)
        target:decay()
    end
--Lower Roshamuul
if (target ~= nil) and target:isItem() and (target:getId() == 22469) then
    if math.random(100) > 50 then
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Crushing the stone produces some fine gravel.")
        target:transform(22467)
        target:decay()
    else
        Game.createMonster("Frazzlemaw", toPosition)
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Crushing the stone yields nothing but slightly finer, yet still unusable rubber.")
        target:transform(22468)
        target:decay()
    end
        return true
    end
    return true
end

function onUseMachete(player, item, fromPosition, target, toPosition, isHotkey)
    local targetId = target.itemid
    if isInArray(JUNGLE_GRASS, targetId) then
        target:transform(targetId == 19433 and 19431 or targetId - 1)
        target:decay()
        return true
    end

    if isInArray(WILD_GROWTH, targetId) then
        toPosition:sendMagicEffect(CONST_ME_POFF)
        target:remove()
        return true
    end

    return onDestroyItem(player, item, fromPosition, target, toPosition, isHotkey)
end

function onUseCrowbar(player, item, fromPosition, target, toPosition, isHotkey)
    if not isInArray({2416, 10515}, item.itemid) then
        return false
    end

    local targetActionId, targetUniqueId = target.actionid, target.uid

    -- In Service Of Yalahar Quest
    if targetUniqueId == 3071 then
        if player:getStorageValue(Storage.InServiceofYalahar.SewerPipe01) < 1 then
--            doSetMonsterOutfit(player, 'skeleton', 3 * 1000)
            fromPosition:sendMagicEffect(CONST_ME_ENERGYHIT)
            player:setStorageValue(Storage.InServiceofYalahar.SewerPipe01, 1)
            player:setStorageValue(Storage.InServiceofYalahar.Mission01, player:getStorageValue(Storage.InServiceofYalahar.Mission01) + 1) -- StorageValue for Questlog 'Mission 01: Something Rotten'
            local position = player:getPosition()
            for x = -1, 1 do
                for y = -1, 1 do
                    position = position + Position(x, y, 0)
                    position:sendMagicEffect(CONST_ME_YELLOWENERGY)
                end
            end
        end

    elseif targetUniqueId == 3072 then
        if player:getStorageValue(Storage.InServiceofYalahar.SewerPipe02) < 1 then
            player:setStorageValue(Storage.InServiceofYalahar.SewerPipe02, 1)
            player:setStorageValue(Storage.InServiceofYalahar.Mission01, player:getStorageValue(Storage.InServiceofYalahar.Mission01) + 1) -- StorageValue for Questlog 'Mission 01: Something Rotten'
            local position = player:getPosition()
            for x = -1, 1 do
                for y = -1, 1 do
                    if math.random(2) == 2 then
                        position = position + Position(x, y, 0)
                        Game.createMonster('rat', position)
                        position:sendMagicEffect(CONST_ME_TELEPORT)
                    end
                end
            end
        end

    elseif targetUniqueId == 3073 then
        if player:getStorageValue(Storage.InServiceofYalahar.SewerPipe03) < 1 then
            player:say('You have used the crowbar on a grate.', TALKTYPE_MONSTER_SAY)
            player:setStorageValue(Storage.InServiceofYalahar.SewerPipe03, 1)
            player:setStorageValue(Storage.InServiceofYalahar.Mission01, player:getStorageValue(Storage.InServiceofYalahar.Mission01) + 1) -- StorageValue for Questlog 'Mission 01: Something Rotten'
        end

    elseif targetUniqueId == 3074 then
        if player:getStorageValue(Storage.InServiceofYalahar.SewerPipe04) < 1 then
--            doSetMonsterOutfit(player, 'bog raider', 5 * 1000)
            player:say('You have used the crowbar on a knot.', TALKTYPE_MONSTER_SAY)
            player:setStorageValue(Storage.InServiceofYalahar.SewerPipe04, 1)
            player:setStorageValue(Storage.InServiceofYalahar.Mission01, player:getStorageValue(Storage.InServiceofYalahar.Mission01) + 1) -- StorageValue for Questlog 'Mission 01: Something Rotten'
        end

    elseif targetActionId == 100 then
        local targetId = target.itemid

        -- Postman Quest
        if targetId == 2593 then
            if player:getStorageValue(Storage.postman.Mission02) == 1 then
                player:setStorageValue(Storage.postman.Mission02, 2)
                toPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)
            end

        -- The Ape City - Mission 7
        elseif targetId == 5539 then
            local cStorage = player:getStorageValue(Storage.TheApeCity.Casks)
            if cStorage < 3 then
                player:setStorageValue(Storage.TheApeCity.Casks, math.max(0, cStorage) + 1)
                target:transform(2249)
                toPosition:sendMagicEffect(CONST_ME_EXPLOSIONAREA)
                addEvent(revertCask, 3 * 60 * 1000, toPosition)
            end
        end

    -- Secret Service Quest
    elseif targetActionId == 12566 and player:getStorageValue(Storage.secretService.TBIMission06) == 1 then
        local yellPosition = Position(32204, 31157, ?
        if player:getOutfit().lookType == 137 then -- amazon lookType
            player:setStorageValue(Storage.secretService.TBIMission06, 2)
            Game.createMonster('barbarian skullhunter', yellPosition) -- say
            player:say("Nooooo! What have you done??", TALKTYPE_MONSTER_SAY, false, 0, yellPosition)
            yellPosition.y = yellPosition.y - 1
            Game.createMonster('barbarian skullhunter', yellPosition)
        end
    else
        return false
    end

    return true
end

function onUseSpoon(player, item, fromPosition, target, toPosition, isHotkey)
    local targetId = target.itemid

    --The Ice Islands Quest
    if targetId == 388 then
        if player:getStorageValue(Storage.TheIceIslands.Questline) >= 20 then
            if player:getStorageValue(Storage.TheIceIslands.SulphurLava) < 1 then
                player:addItem(7247, 1) -- fine sulphur
                player:setStorageValue(Storage.TheIceIslands.SulphurLava, 1)
                toPosition:sendMagicEffect(CONST_ME_MAGIC_RED)
                player:say('You retrive a fine sulphur from a lava hole.', TALKTYPE_MONSTER_SAY)
            end
        end

    elseif targetId == 4184 then
        if player:getStorageValue(Storage.TheIceIslands.Questline) >= 20 then
            if player:getStorageValue(Storage.TheIceIslands.SporesMushroom) < 1 then
                player:addItem(7251, 1)
                player:setStorageValue(Storage.TheIceIslands.SporesMushroom, 1)
                toPosition:sendMagicEffect(CONST_ME_MAGIC_RED)
                player:say('You retrive spores from a mushroom.', TALKTYPE_MONSTER_SAY)
            end
        end

    -- What a foolish Quest - Mission 8 (Sulphur)
    elseif targetId == 8573 or targetId == 388 then
        if player:getStorageValue(Storage.WhatAFoolishQuest.Questline) ~= 21
                or player:getStorageValue(Storage.WhatAFoolishQuest.InflammableSulphur) == 1 then
            return false
        end

        player:setStorageValue(Storage.WhatAFoolishQuest.InflammableSulphur, 1)
        player:addItem(8204, 1) -- easily inflammable sulphur
        toPosition:sendMagicEffect(CONST_ME_YELLOW_RINGS)
    else
        return false
    end

    return true
end

function onUseScythe(player, item, fromPosition, target, toPosition, isHotkey)
    if not isInArray({2550, 10513}, item.itemid) then
        return false
    end

    local targetId, targetActionId = target.itemid, target.actionid
    if targetId == 5465 then
        target:transform(5464)
        target:decay()
        Game.createItem(5467, 1, toPosition)
        return true
    end

    if targetId == 2739 then
        target:transform(2737)
        target:decay()
        Game.createItem(2694, 1, toPosition)
        return true
    end
        -- Secret Library
    if targetActionId == 64028 then
        player:teleportTo(Position(32515, 32535, 12))
        return true
    end

    return onDestroyItem(player, item, fromPosition, target, toPosition, isHotkey)
end

function onUseSickle(player, item, fromPosition, target, toPosition, isHotkey)
    if target.itemid == 5465 then
        target:transform(5464)
        target:decay()
        Game.createItem(5467, 1, toPosition)
    end
    return true
end

function onUseKitchenKnife(player, item, fromPosition, target, toPosition, isHotkey)
    if not isInArray({2566, 10511, 10515}, item.itemid) then
        return false
    end

    local targetId = target.itemid

    -- by vikingtibia
    if targetId == 2992 then
        --if player:getStorageValue(Storage.TheIceIslands.Questline) >= 21 then
            --if player:getStorageValue(cid, 41600) >= 0  then
                player:addItem(13159, 1)
                target:transform(2993)
                --player:setStorageValue(Storage.TheIceIslands.FrostbiteHerb, 1)
                toPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)
                player:say('You cut a Rabbits Foot from a rabbit.', TALKTYPE_MONSTER_SAY)

        end

    --The Ice Islands Quest
    if targetId == 7261 then
        if player:getStorageValue(Storage.TheIceIslands.Questline) >= 20 then
            if player:getStorageValue(Storage.TheIceIslands.FrostbiteHerb) < 1 then
                player:addItem(7248, 1)
                player:setStorageValue(Storage.TheIceIslands.FrostbiteHerb, 1)
                toPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)
                player:say('You cut a leaf from a frostbite herb.', TALKTYPE_MONSTER_SAY)
            end
        end

    elseif targetId == 2733 then
        if player:getStorageValue(Storage.TheIceIslands.Questline) >= 20 then
            if player:getStorageValue(Storage.TheIceIslands.FlowerCactus) < 1 then
                player:addItem(7245, 1)
                player:setStorageValue(Storage.TheIceIslands.FlowerCactus, 1)
                target:transform(2723)
                addEvent(revertItem, 60 * 1000, toPosition, 2723, 2733)
                toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN)
                player:say('You cut a flower from a cactus.', TALKTYPE_MONSTER_SAY)
            end
        end

    elseif targetId == 4017 then
        if player:getStorageValue(Storage.TheIceIslands.Questline) >= 20 then
            if player:getStorageValue(Storage.TheIceIslands.FlowerBush) < 1 then
                player:addItem(7249, 1)
                player:setStorageValue(Storage.TheIceIslands.FlowerBush, 1)
                target:transform(4014)
                addEvent(revertItem, 60 * 1000, toPosition, 4014, 4017)
                toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN)
                player:say('You cut a flower from a bush.', TALKTYPE_MONSTER_SAY)
            end
        end

    -- What a foolish Quest (Mission 1)
    elseif target.actionid == 4200 then
        if toPosition.x == 32349 and toPosition.y == 32361 and toPosition.z == 7 then
            player:addItem(7476, 1)
            player:say('The stubborn flower has ruined your knife but at least you got it.', TALKTYPE_MONSTER_SAY, false, player, toPosition)
            item:remove(1)
        else
            player:say('This flower is too pathetic.', TALKTYPE_MONSTER_SAY, false, player, toPosition)
        end

    -- What a foolish Quest (Mission 5)
    elseif targetId == 7480 then
        if player:getStorageValue(Storage.WhatAFoolishQuest.EmperorBeardShave) == 1 then
            player:say('God shave the emperor. Some fool already did it.', TALKTYPE_MONSTER_SAY)
            return true
        end

        player:setStorageValue(Storage.WhatAFoolishQuest.EmperorBeardShave, 1)
        player:say('This is probably the most foolish thing you\'ve ever done!', TALKTYPE_MONSTER_SAY)
        player:addItem(7479, 1)
        Game.createMonster('dwarf guard', Position(32656, 31853, 13))

    -- What a foolish Quest (Mission ?
    elseif targetId == 4008 then
        if player:getStorageValue(Storage.WhatAFoolishQuest.Questline) ~= 22
                or player:getStorageValue(Storage.WhatAFoolishQuest.SpecialLeaves) == 1 then
            return false
        end

        player:setStorageValue(Storage.WhatAFoolishQuest.SpecialLeaves, 1)
        player:addItem(8109, 1)
        toPosition:sendMagicEffect(CONST_ME_BLOCKHIT)

    elseif isInArray(fruits, targetId) and player:removeItem(6278, 1) then
        target:remove(1)
        player:addItem(6279, 1)
        player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
    else
        return false
    end

    return true
end

 

Editado por Yan18
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...