Ir para conteúdo

[OTClient] Sistema de Dialogo Otpokemon


Gengo

Posts Recomendados

por curiosidade se eu adicionar isso os outros npc existente fica com essa funçao ou precisa de algo a +
 

function greetCallback(cid)
  doSendDialogNpc(cid, getNpcId(), "Olá jovem, vejo que você conseguiu chegar até aqui!\nClique em Recompensa e fique feliz pela conquista!", "Fechar&Recompensa")
  return true             
end 
Link para o comentário
Compartilhar em outros sites

14 minutos atrás, anderson127 disse:

por curiosidade se eu adicionar isso os outros npc existente fica com essa funçao ou precisa de algo a +
 


function greetCallback(cid)
  doSendDialogNpc(cid, getNpcId(), "Olá jovem, vejo que você conseguiu chegar até aqui!\nClique em Recompensa e fique feliz pela conquista!", "Fechar&Recompensa")
  return true             
end 

greetCallback, que é quando inicia a fala com o npc, logo se você deseja que o seu npc comece dialogando e mostra o modulo de dialogo, você precisa adicionar o trecho de codigo a seguir, lembrando que é para cada npc que você deseje que o modulo de dialogo funcione.

function greetCallback(cid)
  -- Aqui vai a função do dialogo do npc
  return true             
end

npcHandler:setCallback(CALLBACK_GREET, greetCallback)

 

Link para o comentário
Compartilhar em outros sites

Parabéns pelo conteúdo! Vai ser muito útil para vários servidores.

 

Fico feliz que em pleno 2020 ainda há membros como você que trazem conteúdos e recursos novos para a comunidade do Xtibia, pois, muitas pessoas não ajudam em nada e não trazem conteúdos/recursos algum para o fórum, mas, para vir pegar conteúdos novos, aparecem rapidinho! Sendo que muitos desses, tem capacidade para contribuir. 

 

Enfim, fico feliz que ainda contribuam para a comunidade.

Link para o comentário
Compartilhar em outros sites

Agora, luangop disse:

Não sei se é só comigo, mas se eu usar o módulo para mais conversas no mesmo npc, quando eu clico na opção final a janela não 'some' '-'

Entre em contato comigo pelo discord Gengo#8230 ficará mas fácil eu tentar ajudar você do que eu ficar perguntando cada coisa até chegar no problema, assim não fica poluindo muito o tópico com mensagens.

Link para o comentário
Compartilhar em outros sites

10 minutos atrás, Gengo disse:

Entre em contato comigo pelo discord Gengo#8230 ficará mas fácil eu tentar ajudar você do que eu ficar perguntando cada coisa até chegar no problema, assim não fica poluindo muito o tópico com mensagens.

#Resolvido! Foi erro meu, não utilizei o npc disponibilizado e deixei passar em branco a função doSendDialogNpcClose(cid)

Vlw @Gengo

Link para o comentário
Compartilhar em outros sites

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function doBuyPokemonWithCasinoCoins(cid, poke) npcHandler:onSellpokemon(cid) end
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function getPlayerAllTowerItens(cid)
	if getPlayerItemCount(cid, 12163) >= 1000 and getPlayerItemCount(cid, 12161) >= 1000 and getPlayerItemCount(cid, 19500) >= 1500 and getPlayerItemCount(cid, 19501) >= 2000 and getPlayerItemCount(cid, 19540) >= 200 and getPlayerItemCount(cid, 15092) >= 100 and getPlayerItemCount(cid, 15098) >= 100 and getPlayerItemCount(cid, 15094) >= 100 and getPlayerItemCount(cid, 19536) >= 50 then
		return true
	end
	return false
end

function doRemoveItensTower(cid)
	doPlayerRemoveItem(cid, 12163, 1000)
	doPlayerRemoveItem(cid, 12161, 1000)
	doPlayerRemoveItem(cid, 19500, 1500)
	doPlayerRemoveItem(cid, 19501, 2000)
	doPlayerRemoveItem(cid, 19540, 200)
	doPlayerRemoveItem(cid, 15092, 100)
	doPlayerRemoveItem(cid, 15098, 100)
	doPlayerRemoveItem(cid, 15094, 100)
	doPlayerRemoveItem(cid, 19536, 50)
	return true
end

function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then
return false
end

if (msgcontains(msg, 'Embedded Tower') or msgcontains(msg, 'embedded tower')) then

	if getPlayerStorageValue(cid, 509001) >= 1 then
		selfSay("Não preciso mais de sua ajuda, você agora pode explorar a Embedded Tower!")	
		return true
	end

	if getPlayerStorageValue(cid, 659875) == -1 then 
		 selfSay("Antes de tudo preciso checar se eis forte o suficiente para poder entrar lá, você poderia trazer-me {50x Giant Ruby}, {100x Sharpe Leave}, {100x Pawn}, {100x Crimson Feather}, {200x Linearly Guided Hypnosis}, {2000x enchanted gem}, {2000x Rubber Ball}, {1500x Earth Ball}, {1000x Seed}, {1000x water gem}?", cid)
		 talkState[cid] = 1
	else
		 selfSay("Você já fez seus pedidos?", cid)
		 talkState[cid] = 2
	end

elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[cid] == 1 and getPlayerStorageValue(cid, 659875) == -1 then

	  if getPlayerAllTowerItens(cid) then
	
		doRemoveItensTower(cid)
		selfSay("É dito uma lenda à qual a antiga civilização pokémon adorava 3 grandes deuses que trariam prosperidade, hoje são representado-os pelas {Pedra Sagrada da Floresta}, {Pedra Sagrada da Terra} e a {Pedra Sagrada do Mar}, volte quando feito seus {pedidos}!", cid)
		setPlayerStorageValue(cid, 659875, 1)
	  
	  else
	 
         selfSay("Lembre-se, os itens são {50x Giant Ruby}, {100x Sharpe Leave}, {100x Pawn}, {100x Crimson Feather}, {200x Linearly Guided Hypnosis}, {2000x enchanted gem}, {2000x Rubber Ball}, {1500x Earth Ball}, {1000x Seed}, {1000x water gem}...", cid)
         talkState[cid] = 0
         return true
      end
   
elseif msgcontains(msg, 'pedidos') and getPlayerStorageValue(cid, 659875) == 1 then
       selfSay("Você já fez seus pedidos?", cid)
       talkState[cid] = 2
       
elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[cid] == 2 and getPlayerStorageValue(cid, 659875) == 1 then

		if getPlayerStorageValue(cid, 60900) >= 1 and getPlayerStorageValue(cid, 60901) >= 1 and getPlayerStorageValue(cid, 60902) >= 1 then
			setPlayerStorageValue(cid, 509001, 1)
			setPlayerStorageValue(cid, 78501, 1)
			selfSay("Pronto agora você pode acessar a tower!", cid)
			talkState[talkUser] = 0		
		else
			selfSay("Você não fez seus pedidos às 3x pedras sagradas;", cid)
			talkState[talkUser] = 0	
		end
    
elseif (msgcontains(msg, 'no') or msgcontains(msg, 'nao')) then
     selfSay("So good bye...", cid)
     talkState[cid] = 0
     return false 
end

end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

tipo ai eu tenho que adicionar apenas essa funçao que vc falou ou refazer todos os npc mesmo?

Link para o comentário
Compartilhar em outros sites

6 minutos atrás, anderson127 disse:

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function doBuyPokemonWithCasinoCoins(cid, poke) npcHandler:onSellpokemon(cid) end
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function getPlayerAllTowerItens(cid)
	if getPlayerItemCount(cid, 12163) >= 1000 and getPlayerItemCount(cid, 12161) >= 1000 and getPlayerItemCount(cid, 19500) >= 1500 and getPlayerItemCount(cid, 19501) >= 2000 and getPlayerItemCount(cid, 19540) >= 200 and getPlayerItemCount(cid, 15092) >= 100 and getPlayerItemCount(cid, 15098) >= 100 and getPlayerItemCount(cid, 15094) >= 100 and getPlayerItemCount(cid, 19536) >= 50 then
		return true
	end
	return false
end

function doRemoveItensTower(cid)
	doPlayerRemoveItem(cid, 12163, 1000)
	doPlayerRemoveItem(cid, 12161, 1000)
	doPlayerRemoveItem(cid, 19500, 1500)
	doPlayerRemoveItem(cid, 19501, 2000)
	doPlayerRemoveItem(cid, 19540, 200)
	doPlayerRemoveItem(cid, 15092, 100)
	doPlayerRemoveItem(cid, 15098, 100)
	doPlayerRemoveItem(cid, 15094, 100)
	doPlayerRemoveItem(cid, 19536, 50)
	return true
end

function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then
return false
end

if (msgcontains(msg, 'Embedded Tower') or msgcontains(msg, 'embedded tower')) then

	if getPlayerStorageValue(cid, 509001) >= 1 then
		selfSay("Não preciso mais de sua ajuda, você agora pode explorar a Embedded Tower!")	
		return true
	end

	if getPlayerStorageValue(cid, 659875) == -1 then 
		 selfSay("Antes de tudo preciso checar se eis forte o suficiente para poder entrar lá, você poderia trazer-me {50x Giant Ruby}, {100x Sharpe Leave}, {100x Pawn}, {100x Crimson Feather}, {200x Linearly Guided Hypnosis}, {2000x enchanted gem}, {2000x Rubber Ball}, {1500x Earth Ball}, {1000x Seed}, {1000x water gem}?", cid)
		 talkState[cid] = 1
	else
		 selfSay("Você já fez seus pedidos?", cid)
		 talkState[cid] = 2
	end

elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[cid] == 1 and getPlayerStorageValue(cid, 659875) == -1 then

	  if getPlayerAllTowerItens(cid) then
	
		doRemoveItensTower(cid)
		selfSay("É dito uma lenda à qual a antiga civilização pokémon adorava 3 grandes deuses que trariam prosperidade, hoje são representado-os pelas {Pedra Sagrada da Floresta}, {Pedra Sagrada da Terra} e a {Pedra Sagrada do Mar}, volte quando feito seus {pedidos}!", cid)
		setPlayerStorageValue(cid, 659875, 1)
	  
	  else
	 
         selfSay("Lembre-se, os itens são {50x Giant Ruby}, {100x Sharpe Leave}, {100x Pawn}, {100x Crimson Feather}, {200x Linearly Guided Hypnosis}, {2000x enchanted gem}, {2000x Rubber Ball}, {1500x Earth Ball}, {1000x Seed}, {1000x water gem}...", cid)
         talkState[cid] = 0
         return true
      end
   
elseif msgcontains(msg, 'pedidos') and getPlayerStorageValue(cid, 659875) == 1 then
       selfSay("Você já fez seus pedidos?", cid)
       talkState[cid] = 2
       
elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[cid] == 2 and getPlayerStorageValue(cid, 659875) == 1 then

		if getPlayerStorageValue(cid, 60900) >= 1 and getPlayerStorageValue(cid, 60901) >= 1 and getPlayerStorageValue(cid, 60902) >= 1 then
			setPlayerStorageValue(cid, 509001, 1)
			setPlayerStorageValue(cid, 78501, 1)
			selfSay("Pronto agora você pode acessar a tower!", cid)
			talkState[talkUser] = 0		
		else
			selfSay("Você não fez seus pedidos às 3x pedras sagradas;", cid)
			talkState[talkUser] = 0	
		end
    
elseif (msgcontains(msg, 'no') or msgcontains(msg, 'nao')) then
     selfSay("So good bye...", cid)
     talkState[cid] = 0
     return false 
end

end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

tipo ai eu tenho que adicionar apenas essa funçao que vc falou ou refazer todos os npc mesmo?

Ele respondeu: é para cada npc que você deseje que o modulo de dialogo funcione.

Link para o comentário
Compartilhar em outros sites

acontece que eu coloquei e nao foi o npchandler no final
 

function greetCallback(cid)
  -- Aqui vai a função do dialogo do npc
  return true             
end

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
Link para o comentário
Compartilhar em outros sites

1 minuto atrás, anderson127 disse:

acontece que eu coloquei e nao foi o npchandler no final
 


function greetCallback(cid)
  -- Aqui vai a função do dialogo do npc
  return true             
end

npcHandler:setCallback(CALLBACK_GREET, greetCallback)

Manda pm para mim que eu vou ajudar você.

Link para o comentário
Compartilhar em outros sites

e aquele npc ali em cima
 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

function doBuyPokemonWithCasinoCoins(cid, poke) npcHandler:onSellpokemon(cid) end
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function getPlayerAllTowerItens(cid)
	if getPlayerItemCount(cid, 12163) >= 1000 and getPlayerItemCount(cid, 12161) >= 1000 and getPlayerItemCount(cid, 19500) >= 1500 and getPlayerItemCount(cid, 19501) >= 2000 and getPlayerItemCount(cid, 19540) >= 200 and getPlayerItemCount(cid, 15092) >= 100 and getPlayerItemCount(cid, 15098) >= 100 and getPlayerItemCount(cid, 15094) >= 100 and getPlayerItemCount(cid, 19536) >= 50 then
		return true
	end
	return false
end

function doRemoveItensTower(cid)
	doPlayerRemoveItem(cid, 12163, 1000)
	doPlayerRemoveItem(cid, 12161, 1000)
	doPlayerRemoveItem(cid, 19500, 1500)
	doPlayerRemoveItem(cid, 19501, 2000)
	doPlayerRemoveItem(cid, 19540, 200)
	doPlayerRemoveItem(cid, 15092, 100)
	doPlayerRemoveItem(cid, 15098, 100)
	doPlayerRemoveItem(cid, 15094, 100)
	doPlayerRemoveItem(cid, 19536, 50)
	return true
end

function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then
return false
end

if (msgcontains(msg, 'Embedded Tower') or msgcontains(msg, 'embedded tower')) then

	if getPlayerStorageValue(cid, 509001) >= 1 then
		selfSay("Não preciso mais de sua ajuda, você agora pode explorar a Embedded Tower!")	
		return true
	end

	if getPlayerStorageValue(cid, 659875) == -1 then 
		 selfSay("Antes de tudo preciso checar se eis forte o suficiente para poder entrar lá, você poderia trazer-me {50x Giant Ruby}, {100x Sharpe Leave}, {100x Pawn}, {100x Crimson Feather}, {200x Linearly Guided Hypnosis}, {2000x enchanted gem}, {2000x Rubber Ball}, {1500x Earth Ball}, {1000x Seed}, {1000x water gem}?", cid)
		 talkState[cid] = 1
	else
		 selfSay("Você já fez seus pedidos?", cid)
		 talkState[cid] = 2
	end

elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[cid] == 1 and getPlayerStorageValue(cid, 659875) == -1 then

	  if getPlayerAllTowerItens(cid) then
	
		doRemoveItensTower(cid)
		selfSay("É dito uma lenda à qual a antiga civilização pokémon adorava 3 grandes deuses que trariam prosperidade, hoje são representado-os pelas {Pedra Sagrada da Floresta}, {Pedra Sagrada da Terra} e a {Pedra Sagrada do Mar}, volte quando feito seus {pedidos}!", cid)
		setPlayerStorageValue(cid, 659875, 1)
	  
	  else
	 
         selfSay("Lembre-se, os itens são {50x Giant Ruby}, {100x Sharpe Leave}, {100x Pawn}, {100x Crimson Feather}, {200x Linearly Guided Hypnosis}, {2000x enchanted gem}, {2000x Rubber Ball}, {1500x Earth Ball}, {1000x Seed}, {1000x water gem}...", cid)
         talkState[cid] = 0
         return true
      end
   
elseif msgcontains(msg, 'pedidos') and getPlayerStorageValue(cid, 659875) == 1 then
       selfSay("Você já fez seus pedidos?", cid)
       talkState[cid] = 2
       
elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[cid] == 2 and getPlayerStorageValue(cid, 659875) == 1 then

		if getPlayerStorageValue(cid, 60900) >= 1 and getPlayerStorageValue(cid, 60901) >= 1 and getPlayerStorageValue(cid, 60902) >= 1 then
			setPlayerStorageValue(cid, 509001, 1)
			setPlayerStorageValue(cid, 78501, 1)
			selfSay("Pronto agora você pode acessar a tower!", cid)
			talkState[talkUser] = 0		
		else
			selfSay("Você não fez seus pedidos às 3x pedras sagradas;", cid)
			talkState[talkUser] = 0	
		end
    
elseif (msgcontains(msg, 'no') or msgcontains(msg, 'nao')) then
     selfSay("So good bye...", cid)
     talkState[cid] = 0
     return false 
end

end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...