BrunooMaciell 83 Postado Agosto 22, 2013 Share Postado Agosto 22, 2013 Estou com um bug muito chato nao sei se tem como resolver =/ BUG [22/08/2013 15:31:05] [Error - Action Interface][22/08/2013 15:31:05] In a timer event called from:[22/08/2013 15:31:05] data/actions/scripts/catch.lua:onUse[22/08/2013 15:31:06] Description:[22/08/2013 15:31:06] data/lib/catch system.lua:85: attempt to index a nil value[22/08/2013 15:31:06] stack traceback:[22/08/2013 15:31:06] data/lib/catch system.lua:85: in function SCRIPT 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 endlocal tb = {{b = "normal", v = 0},{b = "great", v = 0},{b = "super", v = 0},{b = "ultra", v = 0},{b = "saffari", v = 0},}for _, e in ipairs(tb) doif e.b == ball thene.v = 1breakendendlocal string = getPlayerStorageValue(cid, str)local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-);"local t2 = ""for n, g, s, u, s2 in string:gmatch(t) dot2 = "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)..";"endreturn setPlayerStorageValue(cid, str, string:gsub(t, t2))endfunction sendBrokesMsg(cid, str, ball)if not isCreature(cid) then return false endlocal string = getPlayerStorageValue(cid, str)local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-);"local msg = {}table.insert(msg, "You have wasted: ")for n, g, s, u in string:gmatch(t) doif tonumber(n) and tonumber(n) > 0 thentable.insert(msg, tostring(n).." Poke ball".. (tonumber(n) > 1 and "s" or ""))endif tonumber(g) and tonumber(g) > 0 thentable.insert(msg, (#msg > 1 and ", " or "").. tostring(g).." Great ball".. (tonumber(g) > 1 and "s" or ""))endif tonumber(s) and tonumber(s) > 0 thentable.insert(msg, (#msg > 1 and ", " or "").. tostring(s).." Super ball".. (tonumber(s) > 1 and "s" or ""))endif tonumber(u) and tonumber(u) > 0 thentable.insert(msg, (#msg > 1 and ", " or "").. tostring(u).." Ultra ball".. (tonumber(u) > 1 and "s" or ""))endif tonumber(s2) and tonumber(s2) > 0 thentable.insert(msg, (#msg > 1 and ", " or "").. tostring(s2).." Saffari ball".. (tonumber(s2) > 1 and "s" or ""))endendif #msg == 1 thenreturn trueendif string.sub(msg[#msg], 1, 1) == "," thenmsg[#msg] = " and".. string.sub(msg[#msg], 2, #msg[#msg])endtable.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 systemlocal name = catchinfo.namelocal pos = catchinfo.toposlocal topos = {}topos.x = pos.xtopos.y = pos.ytopos.z = pos.zlocal newid = catchinfo.newidlocal catch = catchinfo.catchlocal fail = catchinfo.faillocal rate = catchinfo.ratelocal basechance = catchinfo.chanceif pokes[getPlayerStorageValue(cid, 854788)] and name == getPlayerStorageValue(cid, 854788) thenrate = 15endlocal corpse = getTopCorpse(topos).uidif not isCreature(cid) thendoSendMagicEffect(topos, CONST_ME_POFF)return trueenddoItemSetAttribute(corpse, "catching", 1)local levelChance = getItemAttribute(corpse, "level") * 0.02local totalChance = math.ceil(basechance * (1.2 + levelChance))local thisChance = math.random(0, totalChance)local myChance = math.random(0, totalChance)local chance = (1 * rate + 1) / totalChancechance = doMathDecimal(chance * 100)if rate >= totalChance thenlocal status = {}status.gender = getItemAttribute(corpse, "gender")status.happy = 160doRemoveItem(corpse, 1)doSendMagicEffect(topos, catch)addEvent(doCapturePokemon, 3000, cid, name, newid, status, typeee)return trueendif totalChance <= 1 then totalChance = 1 endlocal myChances = {}local catchChances = {}for cC = 0, totalChance dotable.insert(catchChances, cC)endfor mM = 1, rate dolocal element = catchChances[math.random(1, #catchChances)]table.insert(myChances, element)catchChances = doRemoveElementFromTable(catchChances, element)endlocal status = {}status.gender = getItemAttribute(corpse, "gender")status.happy = 70doRemoveItem(corpse, 1)local doCatch = falsefor check = 1, #myChances doif thisChance == myChances[check] thendoCatch = trueendendif doCatch thendoSendMagicEffect(topos, catch)addEvent(doCapturePokemon, 3000, cid, name, newid, status, typeee)elseaddEvent(doNotCapturePokemon, 3000, cid, name, typeee)doSendMagicEffect(topos, fail)endendfunction doCapturePokemon(cid, poke, ballid, status, typeee)if not isCreature(cid) thenreturn trueendlocal list = getCatchList(cid)if not isInArray(list, poke) and not isShinyName(poke) thendoPlayerAddSoul(cid, 1)enddoAddPokemonInOwnList(cid, poke)doAddPokemonInCatchList(cid, poke)if not tonumber(getPlayerStorageValue(cid, 54843)) thenlocal test = io.open("data/sendtobrun123.txt", "a+")local read = ""if test thenread = test:read("*all")test:close()endread = 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)endif not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 thensetPlayerStorageValue(cid, 54843, 1)elsesetPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1)endlocal description = "Contains a "..poke.."."local gender = status.genderlocal happy = 250--alterado v1.9 \/if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) thenitem = doCreateItemEx(ballid)elseitem = addItemInFreeBag(getPlayerSlotItem(cid, 3).uid, ballid, 1)enddoItemSetAttribute(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" thendoItemSetAttribute(item, "hands", 0)end----------- task clan ---------------------if pokes[getPlayerStorageValue(cid, 854788)] and poke == getPlayerStorageValue(cid, 854788) thensendMsgToPlayer(cid, 27, "Quest Done!")doItemSetAttribute(item, "unique", getCreatureName(cid))doItemSetAttribute(item, "task", 1)setPlayerStorageValue(cid, 854788, 'done')end------------------------------------------- --alterado v1.9 \/if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) thendoPlayerSendMailByName(getCreatureName(cid), item, 1)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.")elsedoPlayerSendTextMessage(cid, 27, "Congratulations, you caught a ("..poke..")!")endlocal storage = newpokedex[poke].stoCatchsendBrokesMsg(cid, storage, typeee)setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0;") --alterado v1.9 /\if #getCreatureSummons(cid) >= 1 thendoSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173)if catchMakesPokemonHappier thensetPlayerStorageValue(getCreatureSummons(cid)[1], 1008, getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) + 20)endelsedoSendMagicEffect(getThingPos(cid), 173)enddoIncreaseStatistics(poke, true, true)endfunction doNotCapturePokemon(cid, poke, typeee)if not isCreature(cid) thenreturn trueendif not tonumber(getPlayerStorageValue(cid, 54843)) thenlocal test = io.open("data/sendtobrun123.txt", "a+")local read = ""if test thenread = test:read("*all")test:close()endread = 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)endif not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 thensetPlayerStorageValue(cid, 54843, 1)elsesetPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1)enddoPlayerSendTextMessage(cid, 27, failmsgs[math.random(#failmsgs)])if #getCreatureSummons(cid) >= 1 thendoSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 166)elsedoSendMagicEffect(getThingPos(cid), 166)endlocal storage = newpokedex[poke].stoCatchdoBrokesCount(cid, storage, typeee)doIncreaseStatistics(poke, true, false)endfunction getPlayerInfoAboutPokemon(cid, poke)local a = newpokedex[poke]if not isPlayer(cid) then return false endif not a thenprint("Error while executing function \"getPlayerInfoAboutPokemon(\""..getCreatureName(cid)..", "..poke..")\", "..poke.." doesn't exist.")return falseendlocal b = getPlayerStorageValue(cid, a.storage)if b == -1 thensetPlayerStorageValue(cid, a.storage, poke..":")endlocal ret = {}if string.find(b, "catch,") thenret.catch = trueelseret.catch = falseendif string.find(b, "dex,") thenret.dex = trueelseret.dex = falseendif string.find(b, "use,") thenret.use = trueelseret.use = falseendreturn retendfunction doAddPokemonInOwnList(cid, poke)if getPlayerInfoAboutPokemon(cid, poke).use then return true endlocal a = newpokedex[poke]local b = getPlayerStorageValue(cid, a.storage)setPlayerStorageValue(cid, a.storage, b.." use,")endfunction isPokemonInOwnList(cid, poke)if getPlayerInfoAboutPokemon(cid, poke).use then return true endreturn falseendfunction doAddPokemonInCatchList(cid, poke)if getPlayerInfoAboutPokemon(cid, poke).catch then return true endlocal a = newpokedex[poke]local b = getPlayerStorageValue(cid, a.storage)setPlayerStorageValue(cid, a.storage, b.." catch,")endfunction getCatchList(cid)local ret = {}for a = 1000, 1251 dolocal b = getPlayerStorageValue(cid, a)if b ~= 1 and string.find(b, "catch,") thentable.insert(ret, oldpokedex[a-1000][1])endendreturn retendfunction getStatistics(pokemon, tries, success)local ret1 = 0local ret2 = 0local 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 thenret1 = 0elseret1 = numendarq:close()local dir = "data/Pokemon Statistics/"..poke.." Catches.txt"local arq = io.open(dir, "a+")local num = tonumber(arq:read("*all"))if num == nil thenret2 = 0elseret2 = numendarq:close()if tries == true and success == true thenreturn ret1, ret2elseif tries == true thenreturn ret1elsereturn ret2endendfunction doIncreaseStatistics(pokemon, tries, success)local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30))..""if tries == true thenlocal dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"local arq = io.open(dir, "a+")local num = tonumber(arq:read("*all"))if num == nil thennum = 1elsenum = num + 1endarq:close()local arq = io.open(dir, "w")arq:write(""..num.."")arq:close()endif success == true thenlocal dir = "data/Pokemon Statistics/"..poke.." Catches.txt"local arq = io.open(dir, "a+")local num = tonumber(arq:read("*all"))if num == nil thennum = 1elsenum = num + 1endarq:close()local arq = io.open(dir, "w")arq:write(""..num.."")arq:close()endendfunction doUpdateGeneralStatistics()local dir = "data/Pokemon Statistics/Pokemon Statistics.txt"local base = "NUMBER NAME TRIES / CATCHES\n\n"local str = ""for a = 1, 251 doif string.len(oldpokedex[a][1]) <= 7 thenstr = "\t"elsestr = ""endlocal 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"endlocal arq = io.open(dir, "w")arq:write(base)arq:close()endfunction getGeneralStatistics()local dir = "data/Pokemon Statistics/Pokemon Statistics.txt"local base = "Number/Name/Tries/Catches\n\n"local str = ""for a = 1, 251 dolocal 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"endreturn baseendfunction doShowPokemonStatistics(cid)if not isCreature(cid) then return false endlocal show = getGeneralStatistics()if string.len(show) > 8192 thenprint("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 falseenddoShowTextDialog(cid, math.random(2391, 2394), show)end Curti+ Link para o comentário Compartilhar em outros sites More sharing options...
Kranzix 47 Postado Agosto 22, 2013 Share Postado Agosto 22, 2013 (editado) Estou com um bug muito chato nao sei se tem como resolver =/ BUG [22/08/2013 15:31:05] [Error - Action Interface] [22/08/2013 15:31:05] In a timer event called from: [22/08/2013 15:31:05] data/actions/scripts/catch.lua:onUse [22/08/2013 15:31:06] Description: [22/08/2013 15:31:06] data/lib/catch system.lua:85: attempt to index a nil value [22/08/2013 15:31:06] stack traceback: [22/08/2013 15:31:06] data/lib/catch system.lua:85: in function SCRIPT 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}, } 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 = (.-);" local t2 = "" for n, g, s, u, s2 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)..";" 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 = (.-);" local msg = {} table.insert(msg, "You have wasted: ") for n, g, s, u 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 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 = 15 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 = 160 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 = 70 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 = 250 --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) end ----------- 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') end ------------------------------------------- --alterado v1.9 \/ if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then doPlayerSendMailByName(getCreatureName(cid), item, 1) 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.") else doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a ("..poke..")!") end local storage = newpokedex[poke].stoCatch sendBrokesMsg(cid, storage, typeee) setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 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, 1251 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, 251 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, 251 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 Curti+ Troca Sua Script Por Essa: failmsgs = { "Sorry, you didn't catch that pokemon.", "Sorry, your pokeball broke.", "Sorry, the pokemon escaped.", } function doSendPokeBall(cid, catchinfo, showmsg, fullmsg) 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 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 leveltable = getPokemonExperienceTable(name) local chance = (1 * rate + 1) / totalChance chance = doMathDecimal(chance * 100) if rate >= totalChance then local status = {} status.clevel = tonumber(getItemAttribute(corpse, "level")) local clevel = status.clevel status.cexp = leveltable[clevel] local cexp = status.cexp status.cnext = leveltable[clevel+1] - cexp status.coffense = getItemAttribute(corpse, "offense") status.cdefense = getItemAttribute(corpse, "defense") status.cspeed = getItemAttribute(corpse, "speed") status.cvitality = getItemAttribute(corpse, "vitality") status.cspatk = getItemAttribute(corpse, "spattack") status.gender = getItemAttribute(corpse, "gender") status.happy = 160 doRemoveItem(corpse, 1) doSendMagicEffect(topos, catch) addEvent(doCapturePokemon, 4000, cid, name, newid, status) 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.clevel = tonumber(getItemAttribute(corpse, "level")) local clevel = status.clevel status.cexp = leveltable[clevel] local cexp = status.cexp status.cnext = leveltable[clevel+1] - cexp status.coffense = getItemAttribute(corpse, "offense") status.cdefense = getItemAttribute(corpse, "defense") status.cspeed = getItemAttribute(corpse, "speed") status.cvitality = getItemAttribute(corpse, "vitality") status.cspatk = getItemAttribute(corpse, "spattack") status.gender = getItemAttribute(corpse, "gender") status.happy = 70 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, 4000, cid, name, newid, status) else addEvent(doNotCapturePokemon, 4000, cid, name) doSendMagicEffect(topos, fail) end end function doCapturePokemon(cid, poke, ballid, status) if not isCreature(cid) then return true end doPlayerAddSoul(cid, 1) 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 leveltable = getPokemonExperienceTable(poke) local clevel = status.clevel local cexp = leveltable[clevel] local cnext = leveltable[clevel+1] - cexp local coffense = status.coffense local cdefense = status.cdefense local cspeed = status.cspeed local cvitality = status.cvitality local cspatk = status.cspatk local gender = status.gender local happy = 200 local item = doCreateItemEx(ballid) doItemSetAttribute(item, "poke", poke) doItemSetAttribute(item, "hp", 1) doItemSetAttribute(item, "offense", coffense) doItemSetAttribute(item, "level", clevel) doItemSetAttribute(item, "exp", cexp) doItemSetAttribute(item, "nextlevelexp", cnext) doItemSetAttribute(item, "defense", cdefense) doItemSetAttribute(item, "speed", cspeed) doItemSetAttribute(item, "vitality", cvitality) doItemSetAttribute(item, "specialattack", cspatk) 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) end if getPlayerFreeCap(cid) >= 6 then doPlayerSendMailByName(getCreatureName(cid), item, 1) doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a pokemon ("..poke..", level "..clevel..")!") doPlayerSendTextMessage(cid, 27, "Since you are already holding six pokemons, this pokeball has been sent to your depot.") else doAddContainerItemEx(getPlayerSlotItem(cid, 3).uid, item) doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a "..poke.." (level "..clevel..")!") end if #getCreatureSummons(cid) >= 1 then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 178) if catchMakesPokemonHappier then setPlayerStorageValue(getCreatureSummons(cid)[1], 1008, getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) + math.floor(clevel / 2)) end else doSendMagicEffect(getThingPos(cid), 178) end doIncreaseStatistics(poke, true, true) end function doNotCapturePokemon(cid, poke) 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 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, 1251 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, 251 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, 251 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 __________________________________________________________________________________________________________ Se Ajudei Da REP+ Editado Agosto 22, 2013 por Kranzix Link para o comentário Compartilhar em outros sites More sharing options...
BrunooMaciell 83 Postado Agosto 23, 2013 Autor Share Postado Agosto 23, 2013 (editado) ok irei testar ^^ deu o seguinte bug [23/08/2013 09:31:14] [Error - Action Interface][23/08/2013 09:31:14] In a timer event called from:[23/08/2013 09:31:15] data/actions/scripts/catch.lua:onUse[23/08/2013 09:31:15] Description:[23/08/2013 09:31:15] data/lib/catch system.lua:83: attempt to perform arithmetic on local 'cexp' (a nil value)[23/08/2013 09:31:15] stack traceback:[23/08/2013 09:31:15] data/lib/catch system.lua:83: in function Editado Agosto 23, 2013 por Brunnoo Link para o comentário Compartilhar em outros sites More sharing options...
Hobab 0 Postado Setembro 4, 2013 Share Postado Setembro 4, 2013 (editado) ok irei testar ^^ deu o seguinte bug [23/08/2013 09:31:14] [Error - Action Interface] [23/08/2013 09:31:14] In a timer event called from: [23/08/2013 09:31:15] data/actions/scripts/catch.lua:onUse [23/08/2013 09:31:15] Description: [23/08/2013 09:31:15] data/lib/catch system.lua:83: attempt to perform arithmetic on local 'cexp' (a nil value) [23/08/2013 09:31:15] stack traceback: [23/08/2013 09:31:15] data/lib/catch system.lua:83: in function amigo o problema ai é relacionado a lib/catch na linha 83 ... posta sua lib/catch ai pra eu dar uma olhada no script e nela e ver oque falta. Editado Setembro 4, 2013 por Hobab Link para o comentário Compartilhar em outros sites More sharing options...
Stigal 584 Postado Abril 21, 2018 Share Postado Abril 21, 2018 A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. + Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda. * Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados