Ir para conteúdo

Featured Replies

Postado
  • Autor

troca onde tá isInArea por isInRange, se o erro persisistir abre seu data/lib/032-position.lua  e cola oque tem dentro dele aqui.
tem dois lugares pra trocar na lib.

O problema do barrier é que seu server não tem a função de pegar a vida atual do monstro:

data/creaturescripts/scripts/Barrier.lua:4: attempt to call global 'getCreatureHealth' (a nil value)

Verifica se vc tem algum script que utilize uma função parecida com essa e daí vc substitui na linha 4 do creaturescripts de barrier por essa função parecida;
Na dúvida tenta com getPlayerHealth(cid) apesar de eu achar que não é esse o nome

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

  • Respostas 175
  • Visualizações 19.9k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • só um adendo: Eu coloquei aquele mesmo efeito das shurikens que tem no vídeo (pelo que eu soube o fox fez essa atualização recentemente mas eu nunca entrei no server deles pra ver como é e resolvi faz

  • curtiu o evento? Se achar mais algum erro pode me falar que eu arrumo, to dando suporte pra esses meus scripts tb

  • troca a linha do broadcast por isso aqui:   if getPlayerGuildId(killer) >= 1 and getPlayerGuildName(killer) then         doBroadcastMessage("[Gran Tower] "..getCreatureName(killer).." just de

Posted Images

Postado

Infelizmente não deu certo trocar isInArea por isInRange.

[27/03/2015 09:23:55] [Error - Npc interface] 
[27/03/2015 09:23:55] data/npc/scripts/Melkrapo.lua:onCreatureSay
[27/03/2015 09:23:55] Description: 
[27/03/2015 09:23:55] data/lib/032-position.lua:2: attempt to index global 'position' (a nil value)
[27/03/2015 09:23:55] stack traceback:
[27/03/2015 09:23:55] 	data/lib/032-position.lua:2: in function 'isInRange'
[27/03/2015 09:23:55] 	data/lib/046-Gran Tower.lua:119: in function 'getGranTowerGuild'
[27/03/2015 09:23:55] 	data/npc/scripts/Melkrapo.lua:22: in function 'callback'
[27/03/2015 09:23:55] 	data/npc/lib/npcsystem/npchandler.lua:383: in function 'onCreatureSay'
[27/03/2015 09:23:55] 	data/npc/scripts/Melkrapo.lua:8: in function <data/npc/scripts/Melkrapo.lua:8>

E do Barrier também não funciono e não achei a função parecida.

[27/03/2015 09:25:59] [Error - CreatureScript Interface] 
[27/03/2015 09:25:59] data/creaturescripts/scripts/Barrier.lua:onStatsChange
[27/03/2015 09:25:59] Description: 
[27/03/2015 09:25:59] data/creaturescripts/scripts/Barrier.lua:4: attempt to call global 'getPlayerHealth' (a nil value)
[27/03/2015 09:25:59] stack traceback:
[27/03/2015 09:25:59] 	data/creaturescripts/scripts/Barrier.lua:4: in function <data/creaturescripts/scripts/Barrier.lua:1>

E aqui está meu 032-position. 

function isInRange(pos, fromPosition, toPosition)
	return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.z >= fromPosition.z and position.x <= toPosition.x and position.y <= toPosition.y and position.z <= toPosition.z)
end

function getDistanceBetween(firstPosition, secondPosition)
	local x, y = math.abs(firstPosition.x - secondPosition.x), math.abs(firstPosition.y - secondPosition.y)
	local diff = math.max(x, y)
	if(firstPosition.z ~= secondPosition.z) then
		diff = diff + 9 + 6
	end

	return diff
end

function getDirectionTo(pos1, pos2)
	local dir = NORTH
	if(pos1.x > pos2.x) then
		dir = WEST
		if(pos1.y > pos2.y) then
			dir = NORTHWEST
		elseif(pos1.y < pos2.y) then
			dir = SOUTHWEST
		end
	elseif(pos1.x < pos2.x) then
		dir = EAST
		if(pos1.y > pos2.y) then
			dir = NORTHEAST
		elseif(pos1.y < pos2.y) then
			dir = SOUTHEAST
		end
	else
		if(pos1.y > pos2.y) then
			dir = NORTH
		elseif(pos1.y < pos2.y) then
			dir = SOUTH
		end
	end
	return dir
end

function getCreatureLookPosition(cid)
	return getPosByDir(getThingPos(cid), getCreatureLookDirection(cid))
end

function getPosByDir(fromPosition, direction, size)
	local n = size or 1

	local pos = fromPosition
	if(direction == NORTH) then
		pos.y = pos.y - n
	elseif(direction == SOUTH) then
		pos.y = pos.y + n
	elseif(direction == WEST) then
		pos.x = pos.x - n
	elseif(direction == EAST) then
		pos.x = pos.x + n
	elseif(direction == NORTHWEST) then
		pos.y = pos.y - n
		pos.x = pos.x - n
	elseif(direction == NORTHEAST) then
		pos.y = pos.y - n
		pos.x = pos.x + n
	elseif(direction == SOUTHWEST) then
		pos.y = pos.y + n
		pos.x = pos.x - n
	elseif(direction == SOUTHEAST) then
		pos.y = pos.y + n
		pos.x = pos.x + n
	end

	return pos
end

function doComparePositions(pos, posEx)
	return pos.x == posEx.x and pos.y == posEx.y and pos.z == posEx.z
end

function getArea(pos, rangeX, rangeY)
	local t = {}
	for i = (pos.x - rangeX), (pos.x + rangeX) do
		for j = (pos.y - rangeY), (pos.y + rangeY) do
			table.insert(t, {x = i, y = j, z = pos.z})
		end
	end

	return t
end

Postado
  • Autor

sua source e sua datapack estão incompletas!! sugiro que troque urgentemente pra evitar problemas no futuro. E não é pra menos estar dando erro, dá uma olhada nisso:

function isInRange(pos, fromPosition, toPosition)
    return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.z >= fromPosition.z and position.x <= toPosition.x and position.y <= toPosition.y and position.z <= toPosition.z)
end

a sua function isInRange usa como parametro pos, fromPosition e toPosition mas em nenhum momento ele usa pos e ele tá usando position (que não foi declarado):: Por isso os erros.

Usa meu 032-position.lua

function isInRange(position, fromPosition, toPosition)
	return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.z >= fromPosition.z and position.x <= toPosition.x and position.y <= toPosition.y and position.z <= toPosition.z)
end

function getDistanceBetween(firstPosition, secondPosition)
	local x, y = math.abs(firstPosition.x - secondPosition.x), math.abs(firstPosition.y - secondPosition.y)
	local diff = math.max(x, y)
	if(firstPosition.z ~= secondPosition.z) then
		diff = diff + 9 + 6
	end

	return diff
end

function getDirectionTo(pos1, pos2)
	local dir = NORTH
	if(pos1.x > pos2.x) then
		dir = WEST
		if(pos1.y > pos2.y) then
			dir = NORTHWEST
		elseif(pos1.y < pos2.y) then
			dir = SOUTHWEST
		end
	elseif(pos1.x < pos2.x) then
		dir = EAST
		if(pos1.y > pos2.y) then
			dir = NORTHEAST
		elseif(pos1.y < pos2.y) then
			dir = SOUTHEAST
		end
	else
		if(pos1.y > pos2.y) then
			dir = NORTH
		elseif(pos1.y < pos2.y) then
			dir = SOUTH
		end
	end
	return dir
end

function getCreatureLookPosition(cid)
	return getPosByDir(getThingPos(cid), getCreatureLookDirection(cid))
end

function getPosByDir(fromPosition, direction, size)
	local n = size or 1

	local pos = fromPosition
	if(direction == NORTH) then
		pos.y = pos.y - n
	elseif(direction == SOUTH) then
		pos.y = pos.y + n
	elseif(direction == WEST) then
		pos.x = pos.x - n
	elseif(direction == EAST) then
		pos.x = pos.x + n
	elseif(direction == NORTHWEST) then
		pos.y = pos.y - n
		pos.x = pos.x - n
	elseif(direction == NORTHEAST) then
		pos.y = pos.y - n
		pos.x = pos.x + n
	elseif(direction == SOUTHWEST) then
		pos.y = pos.y + n
		pos.x = pos.x - n
	elseif(direction == SOUTHEAST) then
		pos.y = pos.y + n
		pos.x = pos.x + n
	end

	return pos
end

function doComparePositions(pos, posEx)
	return pos.x == posEx.x and pos.y == posEx.y and pos.z == posEx.z
end

function getArea(pos, rangeX, rangeY)
	local t = {}
	for i = (pos.x - rangeX), (pos.x + rangeX) do
		for j = (pos.y - rangeY), (pos.y + rangeY) do
			table.insert(t, {x = i, y = j, z = pos.z})
		end
	end

	return t
end



Agora sobre a barrier, desativa o creaturescript removendo a tag no xml do monstro até vc trocar de source pra uma que tenha a função getCreatureHealth(uid)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado

Valeu pela lib, agora meu chars com Guild podem entrar.

O problema e que eu sou novato em Ot, tem como me explicar como funciona essa parte de soucer e datapack e como trocalas ?

Postado
  • Autor

Source funciona assim, é um monte de arquivos que tem informações sobre como o servidor vai rodar, funções que ele tem e tudo mais, daí vc compila esses arquivos em um executável, que é oque vc abre pra abrir seu server. Datapack é a pasta data do seu servidor, nela vc tem todas as informações do seu server. Se você não tem a função no seu server então provavelmente ela não foi compilada na source, o jeito é editar a source (caso vc tenha esses arquivos) ou trocar de source (mudar o executavel). A menos que a função seja feita no datapack. Nesse caso, dizemos que ela é lua-made. Uma lib não é nada mais, nada menos que um conjunto de funções lua-made num arquivo.

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo