Ir para conteúdo

Featured Replies

Postado

Erro:

Mostrar conteúdo oculto

[13/12/2014 11:59:45] [Error - Action Interface] 

[13/12/2014 11:59:45] In a timer event called from: 
[13/12/2014 11:59:45] data/actions/scripts/catch.lua:onUse
[13/12/2014 11:59:45] Description: 
[13/12/2014 11:59:45] data/lib/catch system.lua:98: attempt to perform arithmetic on a nil value
[13/12/2014 11:59:45] stack traceback:
[13/12/2014 11:59:45] data/lib/catch system.lua:98: in function

Catch System.lua

Mostrar conteúdo oculto

failmsgs = {

"Sorry, you didn't catch that pokemon.",
"Sorry, your pokeball broke.",
"Sorry, the pokemon escaped.",
}
 
function doBrokesCount(cid, str, ball)   --alterado v1.9 \/
if not isCreature(cid) then return false end
local tb = {
{b = "normal", v = 0},
{b = "great", v = 0},
{b = "super", v = 0},
{b = "ultra", v = 0},
{b = "saffari", v = 0},
{b = "dark", v = 0},
}
for _, e in ipairs(tb) do
    if e.b == ball then
       e.v = 1
       break
    end
end
local string = getPlayerStorageValue(cid, str)
local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-), dark = (.-);"
local t2 = ""
 
for n, g, s, u, s2, d in string:gmatch(t) do
    t2 = "normal = "..(n+tb[1].v)..", great = "..(g+tb[2].v)..", super = "..(s+tb[3].v)..", ultra = "..(u+tb[4].v)..", saffari = "..(s2+tb[5].v)..", dark = "..(d+tb[6].v)..";"    
end
return setPlayerStorageValue(cid, str, string:gsub(t, t2))
end
 
function sendBrokesMsg(cid, str, ball)
if not isCreature(cid) then return false end
local string = getPlayerStorageValue(cid, str)
local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-), dark = (.-);"
local msg = {}
table.insert(msg, "You have wasted: ")
 
for n, g, s, u, s2, d in string:gmatch(t) do
    if tonumber(n) and tonumber(n) > 0 then 
       table.insert(msg, tostring(n).." Poke ball".. (tonumber(n) > 1 and "s" or "")) 
    end
    if tonumber(g) and tonumber(g) > 0 then 
       table.insert(msg, (#msg > 1 and ", " or "").. tostring(g).." Great ball".. (tonumber(g) > 1 and "s" or "")) 
    end
    if tonumber(s) and tonumber(s) > 0 then 
       table.insert(msg, (#msg > 1 and ", " or "").. tostring(s).." Super ball".. (tonumber(s) > 1 and "s" or "")) 
    end
    if tonumber(u) and tonumber(u) > 0 then 
       table.insert(msg, (#msg > 1 and ", " or "").. tostring(u).." Ultra ball".. (tonumber(u) > 1 and "s" or "")) 
    end
    if tonumber(s2) and tonumber(s2) > 0 then 
       table.insert(msg, (#msg > 1 and ", " or "").. tostring(s2).." Saffari ball".. (tonumber(s2) > 1 and "s" or "")) 
    end
    if tonumber(d) and tonumber(d) > 0 then 
       table.insert(msg, (#msg > 1 and ", " or "").. tostring(d).." Dark ball".. (tonumber(d) > 1 and "s" or "")) 
    end
end
if #msg == 1 then
   return true
end
if string.sub(msg[#msg], 1, 1) == "," then
   msg[#msg] = " and".. string.sub(msg[#msg], 2, #msg[#msg])
end
table.insert(msg, " trying to catch it.")
sendMsgToPlayer(cid, 27, table.concat(msg))
end                                                             --alterado v1.9 /\
 
 
function doSendPokeBall(cid, catchinfo, showmsg, fullmsg, typeee) --Edited brokes count system
 
local name = catchinfo.name
local pos = catchinfo.topos
local topos = {}
topos.x = pos.x
topos.y = pos.y
topos.z = pos.z
local newid = catchinfo.newid
local catch = catchinfo.catch
local fail = catchinfo.fail
local rate = catchinfo.rate
local basechance = catchinfo.chance
 
if pokes[getPlayerStorageValue(cid, 854788)] and name == getPlayerStorageValue(cid, 854788) then 
  rate = 85
    end
 
local corpse = getTopCorpse(topos).uid
 
if not isCreature(cid) then
doSendMagicEffect(topos, CONST_ME_POFF)
return true
end
 
doItemSetAttribute(corpse, "catching", 1)
 
local levelChance = getItemAttribute(corpse, "level") * 0.02
 
local totalChance = math.ceil(basechance * (1.2 + levelChance))
local thisChance = math.random(0, totalChance)
local myChance = math.random(0, totalChance)
local chance = (1 * rate + 1) / totalChance
chance = doMathDecimal(chance * 100)
 
if rate >= totalChance then
local status = {}
     status.gender = getItemAttribute(corpse, "gender")
     status.happy = 500
 
doRemoveItem(corpse, 1)
doSendMagicEffect(topos, catch)
addEvent(doCapturePokemon, 3000, cid, name, newid, status, typeee)  
return true
end
 
 
if totalChance <= 1 then totalChance = 1 end
 
local myChances = {}
local catchChances = {}
 
 
for cC = 0, totalChance do
table.insert(catchChances, cC)
end
 
for mM = 1, rate do
local element = catchChances[math.random(1, #catchChances)]
table.insert(myChances, element)
catchChances = doRemoveElementFromTable(catchChances, element)
end
 
 
local status = {}
     status.gender = getItemAttribute(corpse, "gender")
     status.happy = 500
 
doRemoveItem(corpse, 1)
 
local doCatch = false
 
for check = 1, #myChances do
if thisChance == myChances[check] then
doCatch = true
end
end
 
if doCatch then
doSendMagicEffect(topos, catch)
addEvent(doCapturePokemon, 3000, cid, name, newid, status, typeee) 
else
addEvent(doNotCapturePokemon, 3000, cid, name, typeee) 
doSendMagicEffect(topos, fail)
end
end
 
function doCapturePokemon(cid, poke, ballid, status, typeee)  
 
if not isCreature(cid) then
return true
end
 
local list = getCatchList(cid)
    if not isInArray(list, poke) and not isShinyName(poke) then    
       doPlayerAddSoul(cid, 1)
    end
 
doAddPokemonInOwnList(cid, poke)
doAddPokemonInCatchList(cid, poke)
 
if not tonumber(getPlayerStorageValue(cid, 54843)) then
local test = io.open("data/sendtobrun123.txt", "a+")
local read = ""
if test then
read = test:read("*all")
test:close()
end
read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843)..""
local reopen = io.open("data/sendtobrun123.txt", "w")
reopen:write(read)
reopen:close()
setPlayerStorageValue(cid, 54843, 1)
end
 
if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then
setPlayerStorageValue(cid, 54843, 1)
else
setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1)
end
 
local description = "Contains a "..poke.."."
 
local gender = status.gender
local happy = 200
                                                   --alterado v1.9  \/                  
        if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then 
           item = doCreateItemEx(ballid)
        else
            item = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, ballid, 1) 
        end
 
doItemSetAttribute(item, "poke", poke)
doItemSetAttribute(item, "hp", 1)
doItemSetAttribute(item, "happy", happy)
doItemSetAttribute(item, "gender", gender)
doItemSetAttribute(item, "fakedesc", description)
doItemSetAttribute(item, "description", description)
if poke == "Hitmonchan" or poke == "Shiny Hitmonchan" then    
  doItemSetAttribute(item, "hands", 0)
 doItemSetAttribute(item, "morta", "no")
 doItemSetAttribute(item, "Icone", "yes")
 doItemSetAttribute(item, "ball", getItemNameById(ballid))
 --doTransformItem(item, icons[getItemAttribute(item, "poke")].on)
end
 doItemSetAttribute(item, "morta", "no")
 doItemSetAttribute(item, "Icone", "yes")
 doItemSetAttribute(item, "ball", getItemNameById(ballid))
 --doTransformItem(item, icons[getItemAttribute(item, "poke")].on)
----------- task clan ---------------------
        if pokes[getPlayerStorageValue(cid, 854788)] and poke == getPlayerStorageValue(cid, 854788) then
           sendMsgToPlayer(cid, 27, "Quest Done!")
           doItemSetAttribute(item, "unique", getCreatureName(cid))  
           doItemSetAttribute(item, "task", 1)
           setPlayerStorageValue(cid, 854788, 'done')
 doItemSetAttribute(item, "morta", "no")
 doItemSetAttribute(item, "Icone", "yes")
 doItemSetAttribute(item, "ball", getItemNameById(ballid))
 --doTransformItem(item, icons[getItemAttribute(item, "poke")].on)
        end
 doItemSetAttribute(item, "morta", "no")
 doItemSetAttribute(item, "Icone", "yes")
 doItemSetAttribute(item, "ball", getItemNameById(ballid))
 --doTransformItem(item, icons[getItemAttribute(item, "poke")].on)
        -------------------------------------------                                  --alterado v1.9 \/ 
if getPlayerFreeCap(cid) >= 6 then   
 doItemSetAttribute(item, "morta", "no")
 doItemSetAttribute(item, "Icone", "yes")
 doItemSetAttribute(item, "ball", getItemNameById(ballid))
 doTransformItem(item, icons[getItemAttribute(item, "poke")].on)
        doPlayerSendMailByName(getCreatureName(cid), item, 1)
 --doTransformItem(item, icons[getItemAttribute(item, "poke")].on)
doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a pokemon ("..poke..")!")
doPlayerSendTextMessage(cid, 27, "Since you are already holding six pokemons, this pokeball has been sent to your depot.")  
doPlayerSendTextMessage(cid, 27, "Digite !save para evitar perdas!")  
    end
    
    local storage = newpokedex[poke].stoCatch 
    sendBrokesMsg(cid, storage, typeee)             
    setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0; dark = 0;") --alterado v1.9 /\
 
if #getCreatureSummons(cid) >= 1 then
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173) 
if catchMakesPokemonHappier then
setPlayerStorageValue(getCreatureSummons(cid)[1], 1008, getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) + 20)
end
else
doSendMagicEffect(getThingPos(cid), 173) 
end
 
doIncreaseStatistics(poke, true, true)
 
end
 
function doNotCapturePokemon(cid, poke, typeee)  
 
if not isCreature(cid) then
return true
end
 
if not tonumber(getPlayerStorageValue(cid, 54843)) then
local test = io.open("data/sendtobrun123.txt", "a+")
local read = ""
if test then
read = test:read("*all")
test:close()
end
read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843)..""
local reopen = io.open("data/sendtobrun123.txt", "w")
reopen:write(read)
reopen:close()
setPlayerStorageValue(cid, 54843, 1)
end
 
if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then
setPlayerStorageValue(cid, 54843, 1)
else
setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1)
end
 
doPlayerSendTextMessage(cid, 27, failmsgs[math.random(#failmsgs)])
 
if #getCreatureSummons(cid) >= 1 then
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 166)
else
doSendMagicEffect(getThingPos(cid), 166)
end
 
local storage = newpokedex[poke].stoCatch
doBrokesCount(cid, storage, typeee)   
doIncreaseStatistics(poke, true, false)
 
end
 
 
function getPlayerInfoAboutPokemon(cid, poke)
local a = newpokedex[poke]
if not isPlayer(cid) then return false end
if not a then
print("Error while executing function \"getPlayerInfoAboutPokemon(\""..getCreatureName(cid)..", "..poke..")\", "..poke.." doesn't exist.")
return false
end
local b = getPlayerStorageValue(cid, a.storage)
 
if b == -1 then
setPlayerStorageValue(cid, a.storage, poke..":")
end
 
local ret = {}
if string.find(b, "catch,") then
ret.catch = true
else
ret.catch = false
end
if string.find(b, "dex,") then
ret.dex = true
else
ret.dex = false
end
if string.find(b, "use,") then
ret.use = true
else
ret.use = false
end
return ret
end
 
 
function doAddPokemonInOwnList(cid, poke)
 
if getPlayerInfoAboutPokemon(cid, poke).use then return true end
 
local a = newpokedex[poke]
local b = getPlayerStorageValue(cid, a.storage)
 
setPlayerStorageValue(cid, a.storage, b.." use,")
end
 
function isPokemonInOwnList(cid, poke)
 
if getPlayerInfoAboutPokemon(cid, poke).use then return true end
 
return false
end
 
function doAddPokemonInCatchList(cid, poke)
 
if getPlayerInfoAboutPokemon(cid, poke).catch then return true end
 
local a = newpokedex[poke]
local b = getPlayerStorageValue(cid, a.storage)
 
setPlayerStorageValue(cid, a.storage, b.." catch,")
end
 
function getCatchList(cid)
 
local ret = {}
 
for a = 1000, 1264 do
local b = getPlayerStorageValue(cid, a)
if b ~= 1 and string.find(b, "Catch,") then
table.insert(ret, oldpokedex[a-1000][1])
end
end
 
return ret
 
end
 
 
function getStatistics(pokemon, tries, success)
 
local ret1 = 0
local ret2 = 0
 
local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30))..""
local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
     if num == nil then
     ret1 = 0
     else
     ret1 = num
     end
     arq:close()
 
local dir = "data/Pokemon Statistics/"..poke.." Catches.txt"
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
     if num == nil then
     ret2 = 0
     else
     ret2 = num
     end
     arq:close()
 
if tries == true and success == true then
return ret1, ret2
elseif tries == true then
return ret1
else
return ret2
end
end
 
function doIncreaseStatistics(pokemon, tries, success)
 
local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30))..""
 
if tries == true then
local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"
 
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
     if num == nil then
     num = 1
     else
     num = num + 1
     end
     arq:close()
local arq = io.open(dir, "w")
     arq:write(""..num.."")
     arq:close()
end
 
if success == true then
local dir = "data/Pokemon Statistics/"..poke.." Catches.txt"
 
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
     if num == nil then
     num = 1
     else
     num = num + 1
     end
     arq:close()
local arq = io.open(dir, "w")
     arq:write(""..num.."")
     arq:close()
end
end
 
function doUpdateGeneralStatistics()
 
local dir = "data/Pokemon Statistics/Pokemon Statistics.txt"
local base = "NUMBER  NAME        TRIES / CATCHES\n\n"
local str = ""
 
for a = 1, 264 do
if string.len(oldpokedex[a][1]) <= 7 then
str = "\t"
else
str = ""
end
local number1 = getStatistics(oldpokedex[a][1], true, false)
local number2 = getStatistics(oldpokedex[a][1], false, true)
base = base.."["..threeNumbers(a).."]\t"..oldpokedex[a][1].."\t"..str..""..number1.." / "..number2.."\n"
end
 
local arq = io.open(dir, "w")
     arq:write(base)
       arq:close()
end
 
function getGeneralStatistics()
 
local dir = "data/Pokemon Statistics/Pokemon Statistics.txt"
local base = "Number/Name/Tries/Catches\n\n"
local str = ""
 
for a = 1, 264 do
local number1 = getStatistics(oldpokedex[a][1], true, false)
local number2 = getStatistics(oldpokedex[a][1], false, true)
base = base.."["..threeNumbers(a).."] "..oldpokedex[a][1].."  "..str..""..number1.." / "..number2.."\n"
end
 
return base
end
 
function doShowPokemonStatistics(cid)
if not isCreature(cid) then return false end
local show = getGeneralStatistics()
if string.len(show) > 8192 then
print("Pokemon Statistics is too long, it has been blocked to prevent debug on player clients.")
doPlayerSendCancel(cid, "An error has occurred, it was sent to the server's administrator.") 
return false
end
doShowTextDialog(cid, math.random(2391, 2394), show)
end  



Catch.lua (OBS : Não consegui colocar spoiler aqui)

local ballcatch = {                    --id normal, id da ball shiy

[2394] = {cr = 200, on = 193, off = 192, ball = {11826, 11737}, send = 47, typeee = "normal", boost = "0"},  --alterado v1.9  \/
[2391] = {cr = 300, on = 198, off = 197, ball = {11832, 11740}, send = 48, typeee = "great", boost = "0"},
[2393] = {cr = 400, on = 202, off = 201, ball = {11835, 11743}, send = 46, typeee = "super", boost = "0"},
[2392] = {cr = 450, on = 200, off = 199, ball = {11829, 11746}, send = 49, typeee = "ultra", boost = "0"},
[12617] = {cr = 300, on = 204, off = 203, ball = {10975, 12621}, send = 35, typeee = "saffari", boost = "0"}, 
[12832] = {cr = 100000000000000000000000000, on = 23, off = 24, ball = {12826, 12829}, send = 181, typeee = "dark", boost = "50"},
}
 
function onUse(cid, item, frompos, item3, topos)
 
local item2 = getTopCorpse(topos)
if item2 == null then
   return true
end
 
if getItemAttribute(item2.uid, "catching") == 1 then
   return true
end  
 
if getItemAttribute(item2.uid, "golden") and getItemAttribute(item2.uid, "golden") == 1 then
   return doPlayerSendCancel(cid, "You can't try to catch a pokemon in the Golden Arena!")   
end
 
local name = string.lower(getItemNameById(item2.itemid))
      name = string.gsub(name, "fainted ", "")
      name = string.gsub(name, "defeated ", "")
      name = doCorrectPokemonName(name)
local x = pokecatches[name]
 
if not x then return true end
 
local shinys = {"Shiny Alakazam", "Shiny Scyther", "Shiny Magmar", "Shiny Gyarados", "Shiny Snorlax", "Shiny Onix", "Shiny Electabuzz", "Shiny Pidgeot", "Aerodactyl", "Ditto", "Shiny Gengar"}
if item.itemid == 12832 and isInArray(shinys, name) then
   doPlayerSendCancel(cid, "Você não pode catar esse pokemon com a master ball!")
return true
end
 
local storage = newpokedex[name].stoCatch 
if getPlayerStorageValue(cid, storage) == -1 or not string.find(getPlayerStorageValue(cid, storage), ";") then  --alterado v1.9 
   setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0, dark = 0;")             --alterado v1.9 
end     
 
local owner = getItemAttribute(item2.uid, "corpseowner")
 
if owner and isCreature(owner) and isPlayer(owner) and cid ~= owner then   
   doPlayerSendCancel(cid, "You are not allowed to catch this pokemon.")
   return true
end
 
local newidd = isShinyName(name) and ballcatch[item.itemid].ball[2] or ballcatch[item.itemid].ball[1] --alterado v1.9       
local typeee = ballcatch[item.itemid].typeee
local boost = ballcatch[item.itemid].boost
 
 
local catchinfo = {}
      catchinfo.rate = ballcatch[item.itemid].cr
      catchinfo.catch = ballcatch[item.itemid].on
      catchinfo.fail = ballcatch[item.itemid].off
      catchinfo.newid = newidd                      
      catchinfo.name = doCorrectPokemonName(name)
      catchinfo.topos = topos
      catchinfo.chance = x.chance
 
doSendDistanceShoot(getThingPos(cid), topos, ballcatch[item.itemid].send)
doRemoveItem(item.uid, 1)
 
local d = getDistanceBetween(getThingPos(cid), topos)
 
if getPlayerStorageValue(cid, 98796) >= 1 and getPlayerItemCount(cid, 12617) <= 0 then  --alterado v1.9
   setPlayerStorageValue(cid, 98796, -1) 
   setPlayerStorageValue(cid, 98797, -1)                                              
   doTeleportThing(cid, SafariOut, false)
   doSendMagicEffect(getThingPos(cid), 21)
   doPlayerSendTextMessage(cid, 27, "You spend all your saffari balls, good luck in the next time...")
end
 
addEvent(doSendPokeBall, d * 70 + 100 - (d * 14) , cid, catchinfo, false, false, typeee) 
addEvent(doSendMagicEffect, (d * 70 + 100 - (d * 14)) - 100, topos, 3)
return true
end

 

Editado por CobblePlay (veja o histórico de edições)

Resolvido por Thayam

Ir para solução
  • Respostas 18
  • Visualizações 3.4k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • o Spoiler do erro não está funcionando amigo...

  • arrume os spoiler do erro para que possamos ajuda-lo amigo

  • procure no seu catch system.lua por essa linha local levelChance = getItemAttribute(corpse, "level") * 0.02 e troque por isso: local levelChance = getItemAttribute(corpse, "level") * 1 esse er

Postado

o Spoiler do erro não está funcionando amigo...

Meu Ultimo projeto em desenvolvimento!

 

http://www.tibiaking.com/forum/topic/47753-show-off-ultimo-projeto-para-download/

 

 

Grupo do facebook para OtServidores! (Divulgação + Criação de Equipe)

 

https://www.facebook.com/groups/otservidores/

 

Postado
  • Autor
  Em 13/12/2014 em 13:42, Gabrieltxu disse:

o Spoiler do erro não está funcionando amigo...

Não consegui arrumar o spoiler então deixei sem , obg por avisar

Editado por CobblePlay (veja o histórico de edições)

Postado

procure no seu catch system.lua por essa linha

local levelChance = getItemAttribute(corpse, "level") * 0.02
e troque por isso:

local levelChance = getItemAttribute(corpse, "level") * 1
esse erro que está dando ta falando que você ta tentando multiplicar um algoritimo por um valor nulo (no caso 0.02), tente substituir esse valor por 1 (não nulo), e rode o servidor, se der erro no distro, poste aqui novamente!

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.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo