Postado Março 27, 2015 10 anos 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 (obg ao @Beeny por fazer essa linda sign <3)
Postado Março 27, 2015 10 anos 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 Março 27, 2015 10 anos 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 (obg ao @Beeny por fazer essa linda sign <3)
Postado Março 27, 2015 10 anos 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 Março 27, 2015 10 anos 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 (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.