Ir para conteúdo

Featured Replies

Postado

Boa tarde tiibanos, estou com um problema gravíssimo no meu servidor

chega a uma certa hora, alguns players nao conseguem mais minerar e dá esse seguinte erro

Quote

Description: 
data/actions/scripts/mining.lua:97: attempt to compare number with nil
stack traceback:
	data/actions/scripts/mining.lua:97: in function 'getMiningInfo'
	data/actions/scripts/mining.lua:196: in function 

 

Script Mining

 

Quote

------------------------------------------------------

-- Script by: Lwkass

-- Mod: Vittu

-- Version: 2.0

-- Tested in: TFS 0.4

---------------------------

-- Configurations --

---------------------------

local STORAGE_SKILL_LEVEL = 10002

local STORAGE_SKILL_TRY = 10003

    local config = {

     levels = {

         {level = {0,9}, quant = {1,2}, percent = 10},

         {level = {10,19}, quant = {1,2}, percent = 11},

         {level = {20,29}, quant = {1,2}, percent = 11},

         {level = {30,39}, quant = {1,2}, percent = 12},

         {level = {40,49}, quant = {1,2}, percent = 12},

         {level = {50,59}, quant = {1,2}, percent = 12},

         {level = {60,69}, quant = {1,3}, percent = 13},

         {level = {70,79}, quant = {1,3}, percent = 13},

         {level = {80,89}, quant = {1,3}, percent = 13},

         {level = {90,99}, quant = {1,3}, percent = 14},

         {level = {100}, quant = {1,4}, percent = 14}

     },

     rocks = {3607, 3620, 3618, 3619, 3617, 1304,1358, 1285, 1286, 1287, 1288, 1289,1290, 3616, 3628, 3629, 3630, 3631, 3657, 3658, 3624, 3625, 3626, 3627, 1296, 1297, 1298, 1299, 3608, 1291, 1292, 1356, 1305, 1306, 1307, 3615}, -- Id das rochas que podem ser quebradas

     stones = {},  -- Modelo = {rock_id, rock_id}

     default_stone = 5880,  -- pedra padrão

     rock_delay = 480, -- Tempo de volta da rocha (Em segundos)

     bonus_chance = 1    , -- Chance (em porcentagem) de se conseguir um bonus de exp

     bonus_exp = 1 -- Bonus extra

    }

------------------------------------

-- END Configurations ---

------------------------------------

function getMiningLevel(cid)

    return getPlayerStorageValue(cid, STORAGE_SKILL_LEVEL)

end

function setPlayerMiningLevel(cid, n)

    setPlayerStorageValue(cid, STORAGE_SKILL_LEVEL, n)

end

function addMiningLevel(cid, n)

    setPlayerMiningLevel(cid, getMiningLevel(cid) + (isNumber(n) and n or 1))

    setMiningTry(cid, 0)

end

function getMiningInfo(cid)

    for i = 1, #config.levels do

        min = config.levels.level[1]; max = config.levels.level[2]

        if (getMiningLevel(cid) >= min and getMiningLevel(cid) <= max) then

            return {quantity = {min = config.levels.quant[1], max = config.levels.quant[2]}, chance = config.levels.percent}

        end

    end

end

function getStoneByRock(rockid)

    for i = 1, #config.stones do

        if (config.stones[2] == rockid) then

            return config.stones[1]

        end

    end

    return config.default_stone

end

function getMiningTries(cid)

    return getPlayerStorageValue(cid, STORAGE_SKILL_TRY)

end

function setMiningTry(cid, n)

    setPlayerStorageValue(cid, STORAGE_SKILL_TRY, n)

end

function addMiningTry(cid, bonus)

    setMiningTry(cid, getMiningTries(cid) + 1 + (bonus and config.bonus_exp or 0))


    if (getMiningTries(cid) >= getMiningExpTo(getMiningLevel(cid))) then -- Up

        doPlayerSendTextMessage(cid, 22, "You advanced from level " .. getMiningLevel(cid) .. " to level ".. (getMiningLevel(cid) + 1) .." in mining.")


        if ((getMiningLevel(cid)+1) == getMiningMaxLevel()) then

            doPlayerSendTextMessage(cid, 22, "Max level reached in mining.")

        end


        addMiningLevel(cid)

        doSendMagicEffect(getCreaturePosition(cid), math.random(28,30))

        setMiningTry(cid, 0)

    end

end

function getMiningExpTo(level)

    return ((level*1.5)+((level+1)*7))

end

function getMiningMaxLevel()

    return config.levels[#config.levels].level[#config.levels[#config.levels].level]

end

---------------------------


function onUse(cid, item, fromPosition, itemEx, toPosition)

    rock = { id = itemEx.itemid, uid = itemEx.uid, position = toPosition }

    player = { position = getCreaturePosition(cid) }


    if (getMiningLevel(cid) < 0) then

        setPlayerMiningLevel(cid, 0)

    end


    if (isInArray(config.rocks, rock.id)) then

        addMiningTry(cid)


        if (math.random(1,100) <= getMiningInfo(cid).chance) then

            local collected = math.random(getMiningInfo(cid).quantity.min, getMiningInfo(cid).quantity.max)

            doPlayerAddItem(cid, getStoneByRock(rock.id), collected)

            doPlayerSendTextMessage(cid, 22, "You got " .. collected .. " gold" .. (collected > 1 and "s" or "") .. " iron ores.")


            if (math.random(1,100) <= config.bonus_chance) then -- Bonus calc

                addMiningTry(cid, true)

                doSendAnimatedText(player.position, "Bonus!", COLOR_ORANGE)

            end


            event_rockCut(rock)

        else

            if (math.random(1,100) <= (10-getMiningInfo(cid).chance/10)) then

                doPlayerSendTextMessage(cid, 22, "You got nothing.")

                event_rockCut(rock)

            else

                doSendMagicEffect(rock.position, 3)

                doSendAnimatedText(rock.position, "Poff!", COLOR_GREEN)

            end

        end

    else

        doPlayerSendCancel(cid, "This can't be cut.")

    end

end

function event_rockCut(rock)

    addEvent(event_rockGrow, config.rock_delay * 2000, rock.position, rock.id)


    doSendMagicEffect(rock.position, 3)

    doSendAnimatedText(rock.position, "Tack!", COLOR_GREEN)

    doItemSetAttribute(rock.uid, "name", "A trunk of " .. getItemNameById(rock.id))

end

function event_rockGrow(rockPos, old_id)

    local rock = getThingFromPos(rockPos).uid

    doTransformItem(rock, old_id)

    doItemSetAttribute(rock, "name", getItemNameById(old_id))

    doSendMagicEffect(rockPos, 3)

end

--Lumberjack 2.0 by: Lwkass
 

 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo