Ir para conteúdo

Featured Replies

Postado

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.

  • Respostas 9
  • Visualizações 570
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Bodak Reborn
    Bodak Reborn

    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.

  • Bodak Reborn
    Bodak Reborn

    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 ten

  • Bodak Reborn
    Bodak Reborn

    É 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.f

Postado
  • Autor
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])

Postado

É 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.

Postado

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

 

Postado
  • Autor

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>

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.6k

Informação Importante

Confirmação de Termo