Ir para conteúdo

Pergunta

Galera sera q alguem pode me ajudar? estou tendo problemas com alguns npcs do meu servidor. Eles funciona normal mais quando eu falo HI e vou pra bem longe sem falar bye eles ainda fica como se tivesse falando comigo, quando eu volto eles ainda estao esperando respostas de mim. 

 

E na distro fica varias vezes repetindo o mesmo erro

 

ERRO:

  Mostrar conteúdo oculto

 

Script mayor2:

  Mostrar conteúdo oculto

 

Tem varios npc igual a esse que da esse erro na distro tem um parecido mais nao da, e esta a mesma coisa

 

Esse nao da erro:

  Mostrar conteúdo oculto

 

Rep + pra quem ajudar

@Danihcv @dalvorsn @Yan Liima

Editado por Spring Trap
Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/
Compartilhar em outros sites

Posts Recomendados

  • 0
  Em 30/05/2016 em 03:20, Danihcv disse:

@Spring Trap, como que tá os arquivos .xml desses npcs?

Expand  

 

Todos estão do mesmo jeito so muda o nome e a looktype

<npc name="Mayor" script="data/npc/scripts/mayor2.lua" walkinterval="2000" floorchange="0" access="5" level="1" maglevel="1">
    <health now="150" max="150"/>
    <look type="314" head="132" body="79" legs="97" feet="132" corpse="2212"/>
</npc>

 

Editado por Spring Trap
Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/#findComment-1694308
Compartilhar em outros sites

  • 0
local focus = 0local talk_start = 0local target = 0local following = falselocal attacking = falsefunction onThingMove(creature, thing, oldpos, oldstackpos)endfunction onCreatureAppear(creature)endfunction onCreatureDisappear(cid, pos)      if focus == cid then          selfSay('Good bye then.')          focus = 0          talk_start = 0      endendfunction onCreatureTurn(creature)endfunction msgcontains(txt, str)      return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))endfunction onCreatureSay(cid, type, msg)      msg = string.lower(msg)    if msgcontains(msg, 'hi') then	selfSay('Hey Can you give me 1 Bandit King Hood?.')              focus = cid          talk_start = os.clock()      elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then          selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk to you in a minute.')    elseif focus == cid then        talk_start = os.clock()	if msgcontains(msg, 'yes') then        if getPlayerStorageValue(cid,6004) >= 1 then        selfSay('Sorry You Cant Do this quest.') return true            elseif not doPlayerRemoveItem(cid, 5879, 1) then        selfSay('Sorry Dont have that items.') return true    	end         doPlayerAddItem(cid,5919,1)         setPlayerStorageValue(cid,6004,1)         selfSay('Thanks take this')         focus = 0         talk_start = 0end     elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then            selfSay('Good bye, ' .. getCreatureName(cid) .. '!')            focus = 0            talk_start = 0        endendfunction onThink()    doNpcSetCreatureFocus(focus)      if (os.clock() - talk_start) > 45 then          if focus > 0 then              selfSay('Next Please...')          end              focus = 0      end     if focus ~= 0 then         if getDistanceToCreature(focus) > 5 then             selfSay('Good bye then.')             focus = 0         end     endend

 

Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/#findComment-1694309
Compartilhar em outros sites

  • 0
  Em 30/05/2016 em 16:41, Mendiguinho91 disse:
local focus = 0local talk_start = 0local target = 0local following = falselocal attacking = falsefunction onThingMove(creature, thing, oldpos, oldstackpos)endfunction onCreatureAppear(creature)endfunction onCreatureDisappear(cid, pos)      if focus == cid then          selfSay('Good bye then.')          focus = 0          talk_start = 0      endendfunction onCreatureTurn(creature)endfunction msgcontains(txt, str)      return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))endfunction onCreatureSay(cid, type, msg)      msg = string.lower(msg)    if msgcontains(msg, 'hi') then	selfSay('Hey Can you give me 1 Bandit King Hood?.')              focus = cid          talk_start = os.clock()      elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then          selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk to you in a minute.')    elseif focus == cid then        talk_start = os.clock()	if msgcontains(msg, 'yes') then        if getPlayerStorageValue(cid,6004) >= 1 then        selfSay('Sorry You Cant Do this quest.') return true            elseif not doPlayerRemoveItem(cid, 5879, 1) then        selfSay('Sorry Dont have that items.') return true    	end         doPlayerAddItem(cid,5919,1)         setPlayerStorageValue(cid,6004,1)         selfSay('Thanks take this')         focus = 0         talk_start = 0end     elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then            selfSay('Good bye, ' .. getCreatureName(cid) .. '!')            focus = 0            talk_start = 0        endendfunction onThink()    doNpcSetCreatureFocus(focus)      if (os.clock() - talk_start) > 45 then          if focus > 0 then              selfSay('Next Please...')          end              focus = 0      end     if focus ~= 0 then         if getDistanceToCreature(focus) > 5 then             selfSay('Good bye then.')             focus = 0         end     endend

 

Expand  

 

Continua com o mesmo erro so que em outra linha

[Error - NpcScript Interface] data/npc/scripts/mayor2.lua:onThinkDescription: ata/npc/scripts/mayor2.lua:64: attempt to compare number with nilstack traceback:data/npc/scripts/mayor2.lua:64: in function <data/npc/scripts/mayor2.lua:55>

E nao tem como dar bye mais

 

O erro sempre causava quando o personagem nao dava BYE e ia pra bem longe. creio que seja erro de distance

Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/#findComment-1694312
Compartilhar em outros sites

  • 0

Gente eu descobri qual é o motivo do erro, na verdade todos os npcs igual a este estão dando erro, até o que eu disse q nao estava

Ele funciona normal se tu falar com o npc e tals e ir embora sem falar bye. O problema é que se você falar HI e ir em bora para outra posição Z ele vai fica dando erro na distro

até o jogador estiver na posição Z que o npc esta ai o npc irá dar good bye automaticamente

 

Achei que o outro npc nao estava dando erro porque ele fica na posição Z: 7 e nao tem escadas por perto para subir o solo e descer, já o mayor tinha por isso dava erro

 

Meu npc.lua

  Mostrar conteúdo oculto

 

Um amigo meu disse pra mim tentar adaptar essa função:

function getDistanceToCreature(id)	if id == 0 or id == nil then		selfGotoIdle()	end	cx, cy, cz = getCreaturePosition(id)	if cx == nil then		return nil	end	sx, sy, sz = selfGetPosition()	return math.max(math.abs(sx-cx), math.abs(sy-cy))	end

Alguém pode ajudaaarr por favor nao sei o que fazer :/ 

 

@Danihcv pode ajudar?

Editado por Spring Trap
Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/#findComment-1694478
Compartilhar em outros sites

  • 0

@Spring Trap, fiz a adaptação. Vê se resolve:

  Mostrar conteúdo oculto

 

Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/#findComment-1694494
Compartilhar em outros sites

  • 0
  Em 01/06/2016 em 23:44, Danihcv disse:

@Spring Trap, fiz a adaptação. Vê se resolve:

  Mostrar conteúdo oculto

 

Expand  

 

Deu erro ;/:

agora quando falo HI ele nao diz nada

 

ERRO:

Error - NpcScript Interface] data/npc/scripts/mayor2.lua:onCreatureSayDescription: stack traceback:data/npc/lib/npc.lua:40: in function 'getDistanceToCreature'data/npc/scripts/mayor2.lua:40: in function <data/npc/scripts/mayor2.lua:36>

Tentei trocar a função la do mayor2 de getDistanceToCreature para getNpcDistanceToCreature e deu isso

[Error - NpcScript Interface] data/npc/scripts/mayor2.lua:onCreatureSayDescription: data/npc/lib/npc.lua:40: attempt to perform arithmetic on global 'cx' (a table value)stack traceback:data/npc/lib/npc.lua:40: in function 'getNpcDistanceToCreature'data/npc/scripts/mayor2.lua:40: in function <data/npc/scripts/mayor2.lua:36>

a linha 40 do mayor2 é essa

if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 and getCreatureCondition(cid, CONDITION_INFIGHT) == false then

Troquei por

if msgcontains(msg, 'hi') then

E o npc voltou falar comigo so que deu varios erros na distro:

[Error - NpcScript Interface] data/npc/scripts/mayor2.lua:onThinkDescription: data/npc/lib/npc.lua:40: attempt to perform arithmetic on global 'cx' (a table value)stack traceback:data/npc/lib/npc.lua:40: in function 'getNpcDistanceToCreature'data/npc/scripts/mayor2.lua:85: in function <data/npc/scripts/mayor2.lua:76>

 

Editado por Spring Trap
Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/#findComment-1694497
Compartilhar em outros sites

  • 0

O erro tava no código que teu amigo mandou (bem que eu tinha achado uma coisa estranha nele).

Vê se o npc.lua assim funciona:

  Mostrar conteúdo oculto

 

Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/#findComment-1694503
Compartilhar em outros sites

  • 0
  Em 02/06/2016 em 00:58, Danihcv disse:

O erro tava no código que teu amigo mandou (bem que eu tinha achado uma coisa estranha nele).

 

Vê se o npc.lua assim funciona:

  Mostrar conteúdo oculto

 

Expand  

 

Agora deu esse:

[Error - NpcScript Interface] data/npc/scripts/mayor2.lua:onCreatureSayDescription: data/npc/lib/npc.lua:40: attempt to index global 's' (a number value)stack traceback:data/npc/lib/npc.lua:40: in function 'getNpcDistanceToCreature'data/npc/scripts/mayor2.lua:40: in function <data/npc/scripts/mayor2.lua:36>

Ta foda man :( 

Editado por Spring Trap
Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/#findComment-1694504
Compartilhar em outros sites

  • 0

@Spring Trap, estranho... Tenta assim:

 

  Mostrar conteúdo oculto

 

Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/#findComment-1694508
Compartilhar em outros sites

  • 0
  Em 02/06/2016 em 03:30, Danihcv disse:

@Spring Trap, estranho... Tenta assim:

 

  Mostrar conteúdo oculto

 

Expand  

 

Funcionou man pqp obrigado mesmo, de coracao man sempre salvando minha vida kk <3

Agora ta de boa nao da mais erro e o npc funciona normal

 

So que mais pra frente daria bug nao ne?

ja que o original e esse:

function getNpcDistanceToCreature(id)
	if(not id or id == 0) then
		selfIdle()
		return nil
	end

	local c = getCreaturePosition(id)
	if(not c.x or c.x == 0) then
		return nil
	end

	local s = getCreaturePosition(getNpcId())
	if(not s.x or s.x == 0 or s.z ~= c.z) then
		return nil
	end

	return math.max(math.abs(s.x - c.x), math.abs(s.y - c.y))
end

E tu fez uma function bem menor

Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/#findComment-1694528
Compartilhar em outros sites

  • 0

@Spring Trap, faltou eu botar um return nil.

Eu reli a function original aí, e a minha function ficou menor pq eu tinha pensado que uma checagem ali era desnecessária, mas não é não.
A function correta ficaria assim:

function getNpcDistanceToCreature(id)
	if id == 0 or id == nil then
		selfIdle()
		return nil
	end

	c = getCreaturePosition(id)
	if c == nil then
		return nil
	end

	s = getNpcPos()
	if s.z ~= c.z then
		return nil
	end
	return math.max(math.abs(s.x-c.x), math.abs(s.y-c.y))
end

 

Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/#findComment-1694535
Compartilhar em outros sites

  • 0
  Em 02/06/2016 em 18:12, Danihcv disse:

@Spring Trap, faltou eu botar um return nil.

Eu reli a function original aí, e a minha function ficou menor pq eu tinha pensado que uma checagem ali era desnecessária, mas não é não.
A function correta ficaria assim:

function getNpcDistanceToCreature(id)
	if id == 0 or id == nil then
		selfIdle()
		return nil
	end

	c = getCreaturePosition(id)
	if c == nil then
		return nil
	end

	s = getNpcPos()
	if s.z ~= c.z then
		return nil
	end
	return math.max(math.abs(s.x-c.x), math.abs(s.y-c.y))
end

 

Expand  

 

ERRO

[Error - NpcScript Interface] 
data/npc/scripts/mayor2.lua:onThink
Description: 
data/npc/scripts/mayor2.lua:85: attempt to compare number with nil
stack traceback:
data/npc/scripts/mayor2.lua:85: in function <data/npc/scripts/mayor2.lua:76>

 

Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/#findComment-1694539
Compartilhar em outros sites

  • 0

@Danihcv então nao e so ele ta dando em todos  o erro de antes voltou. Quando vou pra outra posicao Z ele da o erro

 

  Mostrar conteúdo oculto

 

Link para o comentário
https://xtibia.com/forum/topic/240930-erro-npc/#findComment-1694566
Compartilhar em outros sites

×
×
  • Criar Novo...