Ir para conteúdo
  • 0

Sistema de Catch


Pergunta

catch system.luaAlguem poderia me ajudar, bom estou capturando pokemon no server, porem toda vez q eu capturo aparece erro o pokemon vai morto para o cp eu queria apenas tirar o warning e q pokemon pudesse ficar vivo no dp alguem poderia me ajudar?

Erro:

[30/07/2020 19:15:12] [Error - Action Interface] 
[30/07/2020 19:15:13] In a timer event called from: 
[30/07/2020 19:15:13] datapack/actions/scripts/catch.lua:onUse
[30/07/2020 19:15:13] Description: 
[30/07/2020 19:15:13] datapack/lib/catch system.lua:401: attempt to index local 'arq' (a nil value)
[30/07/2020 19:15:13] stack traceback:
[30/07/2020 19:15:13]     datapack/lib/catch system.lua:401: in function 'doIncreaseStatistics'
[30/07/2020 19:15:13]     datapack/lib/catch system.lua:237: in function <datapack/lib/catch system.lua:154>

Editado por Wicke
Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0
  Em 30/07/2020 em 22:15, Wicke disse:

catch system.luaAlguem poderia me ajudar, bom estou capturando pokemon no server, porem toda vez q eu capturo aparece erro o pokemon vai morto para o cp eu queria apenas tirar o warning e q pokemon pudesse ficar vivo no dp alguem poderia me ajudar?

Erro:

[30/07/2020 19:15:12] [Error - Action Interface] 
[30/07/2020 19:15:13] In a timer event called from: 
[30/07/2020 19:15:13] datapack/actions/scripts/catch.lua:onUse
[30/07/2020 19:15:13] Description: 
[30/07/2020 19:15:13] datapack/lib/catch system.lua:401: attempt to index local 'arq' (a nil value)
[30/07/2020 19:15:13] stack traceback:
[30/07/2020 19:15:13]     datapack/lib/catch system.lua:401: in function 'doIncreaseStatistics'
[30/07/2020 19:15:13]     datapack/lib/catch system.lua:237: in function <datapack/lib/catch system.lua:154>

Expand  

Esse erro que da é porque ele está tentando abrir esse arquivo nesse diretório: 

local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"
local arq = io.open(dir, "a+")

Coloque os TXTs com o nome de todos os poke ou comente o código.

 

Segue o código com correção dos pokes mortos para o DP

catch system.luaFetching info...

Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761405
Compartilhar em outros sites

  • 0
  Em 31/07/2020 em 00:13, DarkWore disse:

Esse erro que da é porque ele está tentando abrir esse arquivo nesse diretório: 

local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"
local arq = io.open(dir, "a+")

Coloque os TXTs com o nome de todos os poke ou comente o código.

 

Segue o código com correção dos pokes mortos para o DP

catch system.lua 13 kB · 2 downloads

Expand  

Tipo em relaçao ao txt ja tem la porem continua o erro sempre q captura e obrigado o da ball mortal deu certo!

Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761435
Compartilhar em outros sites

  • 0
  Em 31/07/2020 em 04:42, Wicke disse:

Tipo em relaçao ao txt ja tem la porem continua o erro sempre q captura e obrigado o da ball mortal deu certo!

Expand  

Manda uma print de como está os TXTs dentro da pasta.

Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761443
Compartilhar em outros sites

  • 0
  Em 31/07/2020 em 14:53, DarkWore disse:

Manda uma print de como está os TXTs dentro da pasta.

Expand  

Entao esta ai, Sabe se teria q fazer mais algo? Pq pelo q eu vi esta certo

Sem título.png

Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761449
Compartilhar em outros sites

  • 0
  Em 31/07/2020 em 20:14, Wicke disse:

Entao esta ai, Sabe se teria q fazer mais algo? Pq pelo q eu vi esta certo

Sem título.png

Expand  

Esses são os parâmetros da io.open:

file = io.open (filename [, mode])

Tente trocar o modo do a+ pelo r+ e teste.

Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761476
Compartilhar em outros sites

  • 0
  Em 01/08/2020 em 15:58, DarkWore disse:

Esses são os parâmetros da io.open:

file = io.open (filename [, mode])

Tente trocar o modo do a+ pelo r+ e teste.

Expand  

Da source voce fala?

Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761482
Compartilhar em outros sites

  • 0
  Em 31/07/2020 em 00:13, DarkWore disse:

Esse erro que da é porque ele está tentando abrir esse arquivo nesse diretório: 

local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"
local arq = io.open(dir, "a+")

Coloque os TXTs com o nome de todos os poke ou comente o código.

 

Segue o código com correção dos pokes mortos para o DP

catch system.lua 13 kB · 4 downloads

Expand  
local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"
local arq = io.open(dir, "r+") --<<<<<<<<<<<<<<<

 

Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761486
Compartilhar em outros sites

  • 0
  Em 02/08/2020 em 00:46, DarkWore disse:
local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"
local arq = io.open(dir, "r+") --<<<<<<<<<<<<<<<

 

Expand  

Olha eu fiz isso porem nao deu certo nao, Mudei todos de a+ pra r+ e msm assim n foi 

Windows porem executei e continua dando o erro!

  Em 02/08/2020 em 00:07, luangop disse:

Está rodando em linux ou windos? Se for windows, execute o servidor como administrador, o windows pode estar impedindo o server de manipular o .txt

Expand  
Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761493
Compartilhar em outros sites

  • 0
  Em 02/08/2020 em 08:08, Wicke disse:

Olha eu fiz isso porem nao deu certo nao, Mudei todos de a+ pra r+ e msm assim n foi 

Windows porem executei e continua dando o erro!

Expand  

Aqui está todas as funções relacionadas a statistics do meu OT, ve se funciona. Se ainda der erro deve ser algo na sua source sei lá, pq aqui ta perfeito.

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

 

Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761495
Compartilhar em outros sites

  • 0
  Em 02/08/2020 em 14:00, luangop disse:

Aqui está todas as funções relacionadas a statistics do meu OT, ve se funciona. Se ainda der erro deve ser algo na sua source sei lá, pq aqui ta perfeito.

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

 

Expand  

Bom entao descobri o pq nao estava lendo, porem agora esta com erro de Brocke ao falhar em capturar o pokemon aparece o seguinte erro!

Oq nao estava deixando ler o Pokemon Statistc era q a data estava com nome errado.

 

[02/08/2020 13:04:56] [Error - Action Interface] 
[02/08/2020 13:04:56] In a timer event called from: 
[02/08/2020 13:04:56] datapack/actions/scripts/catch.lua:onUse
[02/08/2020 13:04:56] Description: 
[02/08/2020 13:04:56] datapack/lib/catch system.lua:27: attempt to perform arithmetic on local 's2' (a string value)
[02/08/2020 13:04:56] stack traceback:
[02/08/2020 13:04:56]     datapack/lib/catch system.lua:27: in function 'doBrokesCount'
[02/08/2020 13:04:56]     datapack/lib/catch system.lua:318: in function <datapack/lib/catch system.lua:281>

Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761503
Compartilhar em outros sites

  • 0
  Em 02/08/2020 em 16:06, Wicke disse:

Bom entao descobri o pq nao estava lendo, porem agora esta com erro de Brocke ao falhar em capturar o pokemon aparece o seguinte erro!

Oq nao estava deixando ler o Pokemon Statistc era q a data estava com nome errado.

 

[02/08/2020 13:04:56] [Error - Action Interface] 
[02/08/2020 13:04:56] In a timer event called from: 
[02/08/2020 13:04:56] datapack/actions/scripts/catch.lua:onUse
[02/08/2020 13:04:56] Description: 
[02/08/2020 13:04:56] datapack/lib/catch system.lua:27: attempt to perform arithmetic on local 's2' (a string value)
[02/08/2020 13:04:56] stack traceback:
[02/08/2020 13:04:56]     datapack/lib/catch system.lua:27: in function 'doBrokesCount'
[02/08/2020 13:04:56]     datapack/lib/catch system.lua:318: in function <datapack/lib/catch system.lua:281>

Expand  

Corrigido, só não está com a correção que você fez no nome da pasta data.

catch system.luaFetching info...

Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761534
Compartilhar em outros sites

  • 0
  Em 03/08/2020 em 01:24, DarkWore disse:

Corrigido, só não está com a correção que você fez no nome da pasta data.

catch system.lua 13 kB · 1 download

Expand  

Bom entao deu outro erro, porem mudei so pra ver em vez de deixar 

saffari = "..(x+tb[5].v)..";"

Coloquei

saffari = "..(s+tb[5].v)..";"

Esse foi o unico jeito q tentei q deu certo, e paro o erro, porem nao sei se pode ocorrer algo futuro.

e se colocar "s2" dava o erro tbm!

Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761539
Compartilhar em outros sites

  • 0
  Em 03/08/2020 em 01:53, Wicke disse:

Bom entao deu outro erro, porem mudei so pra ver em vez de deixar 

saffari = "..(x+tb[5].v)..";"

Coloquei

saffari = "..(s+tb[5].v)..";"

Esse foi o unico jeito q tentei q deu certo, e paro o erro, porem nao sei se pode ocorrer algo futuro.

e se colocar "s2" dava o erro tbm!

Expand  

a super ball está utilizando o s, isso pode ocasionar algum problema futuro, recomendo que troque a letra por outra, qualquer coisa envie o erro que ocorreu aqui.

Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761547
Compartilhar em outros sites

  • 0
  Em 03/08/2020 em 01:24, DarkWore disse:

Corrigido, só não está com a correção que você fez no nome da pasta data.

catch system.lua 13 kB · 3 downloads

Expand  

Ocorreu esse msm erro

datapack/lib/catch system.lua:27: attempt to perform arithmetic on local 's2' (a string value)

Porem em vez de ser "s2" foi com "x"

Link para o comentário
https://xtibia.com/forum/topic/252123-sistema-de-catch/#findComment-1761554
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...