Catch Pda
-
Quem Está Navegando 0 membros estão online
Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
Por Nysman
Olá, pessoal do TK.
Estou com um problema bem chato que estou a dias atrás para resolver mas não consigo, nesses últimos dias adc um sistema de gender no meu otp.
Funciona tudo corretamente, porém na distro acusa esse erro:
[17/12/2023 22:31:40] [Error - Action Interface]
[17/12/2023 22:31:40] In a timer event called from:
[17/12/2023 22:31:40] data/actions/scripts/catch.lua:onUse
[17/12/2023 22:31:40] Description:
[17/12/2023 22:31:40] data/actions/scripts/catch.lua:599: attempt to index local 'status' (a nil value)
[17/12/2023 22:31:40] stack traceback:
[17/12/2023 22:31:40] data/actions/scripts/catch.lua:599: in function <data/actions/scripts/catch.lua:582>
Meu catch:
-
Por yurirzu
Olá tenho uma duvida, eu peguei um base de pokemon e estou desenvolvendo um servidor de digimon, entao peguei um pokemon para criar um digimon, ja fiz alteraçoes e esta tudo ok, porem quando eu dou catch no digimon ele volta a ser pokemon exemplo:
Criançao na base de um Caterpie e agora é Botamon
Capiturei um Botamon porem dps quando invoco ele vira um Caterpie dnv
-
Por Arthasz Walker
Olá à todos da comunidade, primeiramente quero pedir desculpas caso eu tenha criado o tópico na sessão errada, eu ainda não sei bem como funciona as sessões (rs).
Então, eu estou aqui para pedir ajuda com um script que eu retirei daqui do fórum para implementar no meu servidor e eu queria que ele ficasse de uma forma mais legal e competitiva, segue o script:
Catch System por Skill
O que eu venho pedir é o seguinte, atualmente no sistema ele não verifica se você já capturou o pokémon, possibilitando assim que uma pessoa possa capturar vários pokémons do mesmo e ainda sim subir a skill.
(Exemplo: Caso um player capture 10 rattatas ele irá continuar upando, pois não tem verificação se o player já capturou aquele pokemon).
O que eu queria é que somente no primeiro caught de cada pokémon ele recebesse uma porcentagem para upar o skill, e também se possível queria que as rates de cada pokémon fosse diferente, pois, creio que ficaria meio injusto um rattata dando 20% de skill de caught e um shiny também dando o mesmo 20%.
Quem puder me ajudar ficarei bastante agradecido.
-
Por Lucas Barreto
Meu servidor de poketibia esta acusando esse erro, constantemente:
E esse tambem: (quando coloco com ip na VPS da isso, quando uso no meu PC com 127.0.0.1 fica sem esse erro)
Se puderem me ajudar, fico grato.
Segue os arquivos citados nos erros
Goback.lua
Catch System.lua
-
Por ZORAN
Olá amigos, estou retornando a ajustar um serve que possuo e quero posta-lo quando eu terminar parte dele ou todo, mais provável parte.
Eu estou com um erro que não pude corrigir então venho pedir a ajuda de vocês para ajustar este erro.
Erro: Ao capturar um pokemon, a pokeball e enviada para o depot com o pokemon morto, depois torna a pokebola impossível de se mover, impossibilitando o uso da mesma.
Aqui esta o script do Catch.lua // Pasta actions
local ballcatch = { [2394] = {cr = 3, on = 24, off = 23, ball = 11826, send = 47, typeee = "normal"}, [2391] = {cr = 6, on = 198, off = 197, ball = 11832, send = 48, typeee = "great"}, [2393] = {cr = 10, on = 202, off = 201, ball = 11835, send = 46, typeee = "super"}, [2392] = {cr = 15, on = 200, off = 199, ball = 11829, send = 49, typeee = "ultra"}, } 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 local name = string.lower(getItemNameById(item2.itemid)) name = string.gsub(name, "fainted ", "") name = string.gsub(name, "defeated ", "") local x = pokecatches[doCorrectPokemonName(name)] -------------------------------------------------------------------------------- local storage = newpokedex[doCorrectPokemonName(name)].stoCatch --edited brokes count system if getPlayerStorageValue(cid, storage) == -1 then setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0") end -------------------------------------------------------------------------------- if not x then return true end local owner = getItemAttribute(item2.uid, "corpseowner") if owner and isCreature(owner) and isPlayer(owner) and cid ~= owner then --alterado v1.5 doPlayerSendCancel(cid, "You are not allowed to catch this pokemon.") return true end ----------------------------------------------------- newidd = ballcatch[item.itemid].ball typeee = ballcatch[item.itemid].typeee ----------------------------------------------------- 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) addEvent(doSendPokeBall, d * 70 + 100 - (d * 14) , cid, catchinfo, false, false, typeee) --edited brokes count system addEvent(doSendMagicEffect, (d * 70 + 100 - (d * 14)) - 100, topos, 3) return true end Aqui esta o Catch System.lua // Pasta lib
failmsgs = { "Sorry, you didn't catch that pokemon.", "Sorry, your pokeball broke.", "Sorry, the pokemon escaped.", } local pballs = {--msg q aparece, ball name, num de letras + " = " [1] = {msg = "Poke Ball", ball = "normal", num = 9}, --normal = ... 9 letras [2] = {msg = "Great Ball", ball = "great", num = 8}, --great = ... 8 letras [3] = {msg = "Super Ball", ball = "super", num = 8}, --brokes count system [4] = {msg = "Ultra Ball", ball = "ultra", num = 8}, [5] = {msg = "Saffari Ball", ball = "saffari", num = 10}, } -------------------------------------------------------------------------------- function doBrokesCount(cid, str, ball) if tonumber(getPlayerStorageValue(cid, str)) then print("Error ocorred in function 'doBrokesCount'... storage "..str.." is a number value") print("Storage will be changed to the correct table...") doPlayerSendTextMessage(cid, 27, "A error ocorred... Warning sent to Game Masters!") setPlayerStorageValue(cid, str, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0") return true end local s = string.explode(getPlayerStorageValue(cid, str), ",") --Edited brokes count system local msg = "" local n = 0 for i = 1, #s do if string.find(tostring(s[i]), ball) then local d, e = s[i]:find(""..pballs[i].ball.." = (.-)") local st2 = string.sub(s[i], d + pballs[i].num, e +5) local num = tonumber(st2)+1 if num == 0 and ball == pballs[i].ball then num = 1 end if i == #s then msg = msg..""..ball.." = "..num n = n +1 else msg = msg..""..ball.." = "..num..", " n = n +1 end else if i == #s then msg = msg..s[i] else msg = msg..s[i]..", " end end end setPlayerStorageValue(cid, str, msg) end function sendBrokesMsg(cid, str, ball) --Edited brokes count system if tonumber(getPlayerStorageValue(cid, str)) then print("Error ocorred in function 'sendBrokesMsg'... storage "..str.." is a number value") print("Storage will be changed to the correct table...") doPlayerSendTextMessage(cid, 27, "A error ocorred... warning sent to game masters!") setPlayerStorageValue(cid, str, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0") return true end local t = string.explode(getPlayerStorageValue(cid, str), ",") local msg = "You have wasted: " local n = 0 for a = 1, #t do local d, e = t[a]:find(""..pballs[a].ball.." = (.-)") local st2 = string.sub(t[a], d + pballs[a].num, e +5) if tonumber(st2) == 0 and pballs[a].ball == ball then st2 = 1 end if tonumber(st2) ~= 0 then if n ~= 0 and a ~= #t then msg = msg..", " end if tonumber(st2) ~= 1 then msg = msg..st2.." "..pballs[a].msg.."s" n = n +1 else msg = msg..st2.." "..pballs[a].msg n = n +1 end end end msg = msg.." to catch it." doPlayerSendTextMessage(cid, 27, msg) end -------------------------------------------------------------------------------- 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 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, typeee) --Edited brokes count system 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, typeee) --Edited brokes count system else addEvent(doNotCapturePokemon, 4000, cid, name, typeee) --Edited brokes count system doSendMagicEffect(topos, fail) end end function doCapturePokemon(cid, poke, ballid, status, typeee) --Edited brokes count system if not isCreature(cid) then return true end local list = getCatchList(cid) if not isInArray(list, poke) and not isShinyName(poke) then --Edited catch system 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 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 --alterado v2.6 if getPlayerFreeCap(cid) >= 6 or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then --edited proteçao item = doCreateItemEx(ballid) else item = doAddContainerItem(getPlayerSlotItem(cid, 3).uid, ballid, 1) end 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 --edited passiva hitmonchan doItemSetAttribute(item, "hands", 0) end local storage = newpokedex[poke].stoCatch --alterado v2.6 if getPlayerFreeCap(cid) >= 6 or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then --edited proteçao 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.") -------------------------------------------------------------------------------- sendBrokesMsg(cid, storage, typeee) --Edited brokes count system setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0") else doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a "..poke.." (level "..clevel..")!") -------------------------------------------------------------------------------- sendBrokesMsg(cid, storage, typeee) --edited brokes count system setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0") 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, typeee) --Edited brokes count system 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) --edited brokes count system -------------------------------------------------------------------------------- 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 Não usei Spoiler para não ter bug e etc...
Caso precise de outro arquivo ou script e só pedir, agradeço a ajuda desde já!
Um grande abraço e fiquem com Deus!
-
Posts Recomendados
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.