Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Olá pessoal eu estava fazendo um sisteminha aqui para meu servidor porém eu tive um erro relacionado a tabela, gostaria da ajuda de vocês para conseguir concerta-lo se possivel uma explicação do motivo desse erro.

 

Erro:


[31/05/2016 09:19:18] [Error - Npc interface] 
[31/05/2016 09:19:18] data/npc/scripts/DayCarre.lua:onCreatureSay
[31/05/2016 09:19:18] Description: 
[31/05/2016 09:19:18] data/npc/scripts/DayCarre.lua:20: attempt to index global 'item' (a nil value)
[31/05/2016 09:19:18] stack traceback:
[31/05/2016 09:19:18]     data/npc/scripts/DayCarre.lua:20: in function <data/npc/scripts/DayCarre.lua:12>

 

Codigo:

 

 


function onCreatureTurn(creature)
end

function msgcontains(txt, str)
return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end

local talkState = {}
local focus = 0
local talk_start = 0

function onCreatureSay(cid, type, msg)
local msg = string.lower(msg)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

local tables = {
[12127] = {preco = 10, storage = 1212, storagese = 1213, tempo = 24 * 60 * 60, pokemon = "Arcanine"}
}

local tb = tables[item.itemid]
local temp = os.time() + tb.tempo

if not (getDistanceToCreature(cid) <= 3) then
    return true
end

if msgcontains(string.lower(msg), 'hi') then
    if focus ~= 0 and focus ~= cid then
       selfSay(getCreatureName(cid) .. ' aguarde...')
       return true
    else
        focus = cid
        talk_start = os.clock()
    end
end

        if msgcontains(string.lower(msg), 'hi') then            
                selfSay('Oi! Voce deseja {checar}, {entregar} ou {retirar}?')
                talkState[talkUser] = 1
                
        elseif msgcontains(string.lower(msg), 'checar') and talkState[talkUser] == 1 then
            if getPlayerStorageValue(cid, tb.storage) < temp then
                selfSay('Seu pokemon ja esta pronto.')
            else    
                selfSay('Ainda falta [' .. getPlayerStorageValue(cid, tb.storage) < temp ..'], Para seu pokemon esta pronto')
                talkState[talkUser] = 0                
                focus = 0
                tchau = true
            end
            
        elseif msgcontains(string.lower(msg), 'entregar') and talkState[talkUser] == 1 then
            if getPlayerStorageValue(cid, tb.storagese) > 1 then
                selfSay('Voce já tem um ovo comigo, espere terminar')    
            return true end
            
            if getPlayerItemCount(cid, 2160) < tb.preco then
                selfSay('Voce nao tem dinheiro necessesario para compeltar essa acao')    
            return true end
            
            if getPlayerItemCount(cid, tb) < 1 then
                selfSay('Voce nao tem nenhum ovo listado')    
            return true end
            
                doPlayerRemoveItem(cid, tb, 1)
                setPlayerStorageValue(cid, tb.storage, temp)                
                setPlayerStorageValue(cid, tb.storagese, 1)
                selfSay('Seu ovo estara pronto em breve, toda vez que possivel cheque o ovo para acompanhar o progresso!')
                talkState[talkUser] = 0
                focus = 0
                tchau = true
                
        elseif msgcontains(string.lower(msg), 'retirar') and talkState[talkUser] == 1 then        
            if getPlayerStorageValue(cid, tb.storage) < temp then        
                setPlayerStorageValue(cid, tb.storagese, -1)
                addPokeToPlayer(cid, tb.pokemon, 0)
                selfSay('Uau, seu ovo foi chocado parabens agora voce tem um ' ..tb.pokemon..'.')
                talkState[talkUser] = 0
                focus = 0
                tchau = true                
                return true
        end
        
    if tchau then
            tchau = false
            doCreatureSetLookDir(getThis(), lookNpcDir)
            selfSay('Tchau.')
        end
end
end

function onThink()
    if focus  ~= 0 then
        if getDistanceToCreature(focus) > 3 then
            tchau = true
            focus = 0
        end

        if (os.clock() - talk_start) > 15 then
            if focus > 0 then
                tchau = true
                focus = 0
            end
        end
        doNpcSetCreatureFocus(focus)
    end

        if tchau then
            tchau = false
            selfSay('Tchau.')
        end
end
 

 

Editado por AllanH (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
local tb = tables[item.itemid]

A variável "item" não existe nesta função, não entendi o que você quis fazer.

Se tu me explicar, posso tentar ajudar.

Não dou suporte via PM, crie um tópico caso tenha dúvidas.

Isso previne que outras pessoas com a mesma dúvida criem tópicos desnecessários.

Link para o post
Compartilhar em outros sites
11 minutos atrás, Talesigorvr disse:

local tb = tables[item.itemid]

A variável "item" não existe nesta função, não entendi o que você quis fazer.

Se tu me explicar, posso tentar ajudar.

Seria assim.

 

Eu estou tentando fazer um sistema de DayCare, para pokemon ou seja.

Checar - Quanto tempo falta para o ovo estiver pronto (Usei storage+os.time)

Entregar - Será quando o npc removerá o [item.itemid] e removerá o item + quantidade referente ao preço, setaria a storage e a storage + os.time.

Remover - Após o player perde a storage do os.time o npc irá adicionar a ele o pokemon.

 

Sendo que não será só um ovo será varios.

 

local tables = {
[Ovo] = {preco = Quantidade, storage = Storage do Os.time, storagese = Storage de Segurança, tempo = Tempo do os.time, pokemon = Nome do Pokemon}
}

Link para o post
Compartilhar em outros sites

Tu tem que dar um ovo pro NPC? Tu fala o nome do ovo pra ele e ele remove, é isso?

Não dou suporte via PM, crie um tópico caso tenha dúvidas.

Isso previne que outras pessoas com a mesma dúvida criem tópicos desnecessários.

Link para o post
Compartilhar em outros sites
1 hora atrás, Talesigorvr disse:

Tu tem que dar um ovo pro NPC? Tu fala o nome do ovo pra ele e ele remove, é isso?

Não exatamente o npc iria checar se o player teria o ovo no bag e de acordo com o id do ovo teria configurações diferentes.

Link para o post
Compartilhar em outros sites

Tem como fazer assim:

for k, v in ipairs (tables) do
	if getPlayerItemCount (cid, k) then
		-- o que vai acontecer caso ele tenha algum ovo.
		break
	else
		-- o que vai acontecer caso ele não tenha nenhum ovo.
	end
end

 

Editado por Talesigorvr (veja o histórico de edições)

Não dou suporte via PM, crie um tópico caso tenha dúvidas.

Isso previne que outras pessoas com a mesma dúvida criem tópicos desnecessários.

Link para o post
Compartilhar em outros sites
2 minutos atrás, Talesigorvr disse:

Tem como fazer assim:


for k, v in pairs (tables) do
	if getPlayerItemCount (cid, k) then
		-- o que vai acontecer caso ele tenha algum ovo.
		break
	else
		-- o que vai acontecer caso ele não tenha nenhum ovo.
	end
end

 

Mais no caso grande parte das funções usa a tabela (tb = table[item.itemid])

Link para o post
Compartilhar em outros sites

É ipairs, errei ali.

Tenta assim:

function onCreatureTurn(creature)
end

function msgcontains(txt, str)
return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end

local talkState = {}
local focus = 0
local talk_start = 0

function onCreatureSay(cid, type, msg)
	local msg = string.lower(msg)
	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

	local tables = {
	[12127] = {preco = 10, storage = 1212, storagese = 1213, tempo = 24 * 60 * 60, pokemon = "Arcanine"}
	}

	local tb = 0

	for k, v in ipairs (tables) do
		if getPlayerItemCount (cid, k) >= 1 then
			tb = tables[k]
			break
		end
	end

	local temp = os.time() + tb.tempo

	if not (getDistanceToCreature(cid) <= 3) then return true end

	if msgcontains(string.lower(msg), 'hi') then
		if focus ~= 0 and focus ~= cid then
			selfSay(getCreatureName(cid) .. ' aguarde...')
			return true
		else
			focus = cid
			talk_start = os.clock()
		end
	end

	if msgcontains(string.lower(msg), 'hi') then            
		selfSay('Oi! Voce deseja {checar}, {entregar} ou {retirar}?')
		talkState[talkUser] = 1		
	elseif msgcontains(string.lower(msg), 'checar') and talkState[talkUser] == 1 then
		if tb ~= 0 then
			if getPlayerStorageValue(cid, tb.storage) < temp then
				selfSay('Seu pokemon ja esta pronto.')
			else    
				selfSay('Ainda falta [' .. getPlayerStorageValue(cid, tb.storage) < temp ..'], Para seu pokemon esta pronto')
				talkState[talkUser] = 0                
				focus = 0
				tchau = true
			end
		end
	elseif msgcontains(string.lower(msg), 'entregar') and talkState[talkUser] == 1 then
		if tb ~= 0 then
			if getPlayerStorageValue(cid, tb.storagese) > 1 then
				selfSay('Voce já tem um ovo comigo, espere terminar')    
				return true 
			end
				
			if getPlayerItemCount(cid, 2160) < tb.preco then
				selfSay('Voce nao tem dinheiro necessesario para compeltar essa acao')    
				return true
			end
				
			doPlayerRemoveItem(cid, tb, 1)
			setPlayerStorageValue(cid, tb.storage, temp)                
			setPlayerStorageValue(cid, tb.storagese, 1)
			selfSay('Seu ovo estara pronto em breve, toda vez que possivel cheque o ovo para acompanhar o progresso!')
			talkState[talkUser] = 0
			focus = 0
			tchau = true
		else
			selfSay('Voce nao tem nenhum ovo listado')    
			return true
		end
	elseif msgcontains(string.lower(msg), 'retirar') and talkState[talkUser] == 1 then
		if tb ~= 0 then
			if getPlayerStorageValue(cid, tb.storage) < temp then        
				setPlayerStorageValue(cid, tb.storagese, -1)
				addPokeToPlayer(cid, tb.pokemon, 0)
				selfSay('Uau, seu ovo foi chocado parabens agora voce tem um ' ..tb.pokemon..'.')
				talkState[talkUser] = 0
				focus = 0
				tchau = true                
				return true
			end
		end
			
		if tchau then
			tchau = false
			doCreatureSetLookDir(getThis(), lookNpcDir)
			selfSay('Tchau.')
		end
	end
end

function onThink()
	if focus  ~= 0 then
		if getDistanceToCreature(focus) > 3 then
			tchau = true
			focus = 0
		end

		if (os.clock() - talk_start) > 15 then
			if focus > 0 then
				tchau = true
				focus = 0
			end
		end
	doNpcSetCreatureFocus(focus)
	end

	if tchau then
		tchau = false
		selfSay('Tchau.')
	end
end

 

Não dou suporte via PM, crie um tópico caso tenha dúvidas.

Isso previne que outras pessoas com a mesma dúvida criem tópicos desnecessários.

Link para o post
Compartilhar em outros sites

eu acho melhor que checar o itemID, fazer a tabela iniciar pelo nome do pokemon, por exemplo:

 

local msg = msg:lower()
local t = {
["arcanine"] = {price = 10, storages = {1212,1213}, time = 24 * 60 * 60, egg_ID = 12127}
}
local var = t[msg]
if not var then
-- escopo
end

 

ai o player poderia checar só os pokemon que ele quisesse ver, por exemplo eu quero ver como esta o arcanine e pikachu

 

ai eu falo

 

 

hi

checar

pikachu(ou arcanine)

 

e vejo o tempo, sem precisar fazer um loop para isso...

sem falar que daria para fazer uma talk, mostrando numa janela quantos % falta para o pokemon "nascer" e o tempo

 

Exemplo:

 

NAME - PERCENT - TIME

 

Pikachu -- 95% -- Left 02:00 hours

Arcanine -- 47% -- Left: 04:57 hours

 

 

Editado por Vodkart (veja o histórico de edições)

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

TalesIgor:



[31/05/2016 16:19:41] [Error - Npc interface] 
[31/05/2016 16:19:41] data/npc/scripts/DayCarre.lua:onCreatureSay
[31/05/2016 16:19:41] Description: 
[31/05/2016 16:19:41] data/npc/scripts/DayCarre.lua:29: attempt to index local 'tb' (a number value)
[31/05/2016 16:19:41] stack traceback:
[31/05/2016 16:19:41]     data/npc/scripts/DayCarre.lua:29: in function <data/npc/scripts/DayCarre.lua:12>

 

Vodkart

Refiz o sistema porémcContinua o mesmo erro parece que o script não está conseguindo checar a tabela.



[31/05/2016 16:23:12] [Error - Npc interface] 
[31/05/2016 16:23:13] data/npc/scripts/DayCarre.lua:onCreatureSay
[31/05/2016 16:23:13] Description: 
[31/05/2016 16:23:13] data/npc/scripts/DayCarre.lua:24: attempt to index local 'var' (a nil value)
[31/05/2016 16:23:13] stack traceback:
[31/05/2016 16:23:13]     data/npc/scripts/DayCarre.lua:24: in function <data/npc/scripts/DayCarre.lua:12>

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo