Sistema de Catch

Wicke
Por Wicke
em Scripts

Wicke

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 24/04/16Posts: 339Gênero: Masculino

catch system.lua
13.86 KB3 downloads
Alguem 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>

 

PEDRO.png

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

DarkWore

Ex - Moderador
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 23/05/17Posts: 584Gênero: MasculinoChar no Tibia: Não Tenho
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
13.87 KB16 downloads

uHtXRtd.png.3908e825830f508573fee9a45063e737.png

 

Não dou suporte via PM, em caso de duvidas abra um tópico na seção correta e aguarde ser respondido.

Wicke

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 24/04/16Posts: 339Gênero: Masculino
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!

 

PEDRO.png

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

DarkWore

Ex - Moderador
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 23/05/17Posts: 584Gênero: MasculinoChar no Tibia: Não Tenho
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.

uHtXRtd.png.3908e825830f508573fee9a45063e737.png

 

Não dou suporte via PM, em caso de duvidas abra um tópico na seção correta e aguarde ser respondido.

Wicke

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 24/04/16Posts: 339Gênero: Masculino
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

 

PEDRO.png

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

DarkWore

Ex - Moderador
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 23/05/17Posts: 584Gênero: MasculinoChar no Tibia: Não Tenho
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.

uHtXRtd.png.3908e825830f508573fee9a45063e737.png

 

Não dou suporte via PM, em caso de duvidas abra um tópico na seção correta e aguarde ser respondido.

Wicke

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 24/04/16Posts: 339Gênero: Masculino
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?

 

PEDRO.png

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

luangop

OT admin
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/11/09Posts: 57Gênero: MasculinoChar no Tibia: [ADM] Luan

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

DarkWore

Ex - Moderador
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 23/05/17Posts: 584Gênero: MasculinoChar no Tibia: Não Tenho
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.87 KB16 downloads

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

 

uHtXRtd.png.3908e825830f508573fee9a45063e737.png

 

Não dou suporte via PM, em caso de duvidas abra um tópico na seção correta e aguarde ser respondido.

Wicke

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 24/04/16Posts: 339Gênero: Masculino
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

 

PEDRO.png

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

luangop

OT admin
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/11/09Posts: 57Gênero: MasculinoChar no Tibia: [ADM] Luan
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

 

Wicke

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 24/04/16Posts: 339Gênero: Masculino
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>

 

PEDRO.png

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

DarkWore

Ex - Moderador
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 23/05/17Posts: 584Gênero: MasculinoChar no Tibia: Não Tenho
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
13.86 KB10 downloads

uHtXRtd.png.3908e825830f508573fee9a45063e737.png

 

Não dou suporte via PM, em caso de duvidas abra um tópico na seção correta e aguarde ser respondido.

Wicke

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 24/04/16Posts: 339Gênero: Masculino
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!

 

PEDRO.png

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

DarkWore

Ex - Moderador
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 23/05/17Posts: 584Gênero: MasculinoChar no Tibia: Não Tenho
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.

uHtXRtd.png.3908e825830f508573fee9a45063e737.png

 

Não dou suporte via PM, em caso de duvidas abra um tópico na seção correta e aguarde ser respondido.