Ir para conteúdo
  • 0

Sistema de Catch


Wicke

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
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0
1 hora atrás, 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>

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

Link para o comentário
Compartilhar em outros sites

  • 0
4 horas atrás, 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

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
Compartilhar em outros sites

  • 0
10 horas atrás, 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!

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

Link para o comentário
Compartilhar em outros sites

  • 0
5 horas atrás, DarkWore disse:

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

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
Compartilhar em outros sites

  • 0
19 horas atrás, Wicke disse:

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

Sem título.png

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
Compartilhar em outros sites

  • 0
6 horas atrás, 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.

Da source voce fala?

Link para o comentário
Compartilhar em outros sites

  • 0
Em 30/07/2020 em 21: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

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

 

Link para o comentário
Compartilhar em outros sites

  • 0
7 horas atrás, DarkWore disse:

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

 

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!

8 horas atrás, 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

Link para o comentário
Compartilhar em outros sites

  • 0
5 horas atrás, 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!

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
Compartilhar em outros sites

  • 0
2 horas atrás, 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

 

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
Compartilhar em outros sites

  • 0
9 horas atrás, 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>

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

catch system.lua

Link para o comentário
Compartilhar em outros sites

  • 0
23 minutos atrás, 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

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
Compartilhar em outros sites

  • 0
12 horas atrás, 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!

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
Compartilhar em outros sites

  • 0
17 horas atrás, 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

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
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

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