Ir para conteúdo
  • 0

Ajude Me Ncp


Monkey Returne

Pergunta

Torneio.lua 
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
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 creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then
if getPlayerItemCount(cid, torneio.revivePoke) >= 1 then
selfSay('Voce nao Pode entrar no torneio com {revives}, por favor guarde eles e volte a falar comigo novamente.', cid)
return true
end
selfSay('Voce quer Participar no torneio por'..torneio.price..' HD?', cid)
talkState[talkUser] = 2

elseif talkState[talkUser] == 2 then
if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then
selfSay('As Inscrisoes para o torneiro terminaram, volte mais tarde', cid)
return true
end
if doPlayerRemoveMoney(cid, torneio.price) then
doTeleportThing(cid, torneio.waitPlace)
doPlayerSendTextMessage(cid, 21, "Bem vindo, esta e a sala de espera, voce espera aqui enquanto o torneio nao começa. Hora de inicio: {"..torneio.endHour.."}.")
else
selfSay('Voce não tem dinheiro suficiente ('..torneio.price..').', cid)
end
else
selfSay('Certeza que voce não quer Participar?Ok, ate a Proxima', cid)
talkState[talkUser] = 0
end
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Torneio.xml
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Nick" script="torneio.lua" walkinterval="999000" floorchange="0">
<health now="150" max="150"/>
<look type="1806" head="20" body="100" legs="50" feet="99" corpse="111"/>]
<parameters>
<parameter key="message_greet" value="Ola |PLAYERNAME|. Sou o NIKE, Encarregado pelo Torneio diario caso queira entrar diga: {torneio}."/>
        </parameters>
</npc>

Ajuda me estou com problema o npc fala duas veses e no default queria no chat npcs

post-386936-0-72549900-1455319764_thumb.jpg

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

@[member=Monkey Returne], deixe assim:

 

Torneio.lua:

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

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

local talkState = {}

function greetCallback(cid)
    npcHandler:say('Ola '..getCreatureName(cid)..'. Sou o NIKE, Encarregado pelo Torneio diario caso queira entrar diga: {torneio}.', cid)
    npcHandler:addFocus(cid)
return false
end

function creatureSayCallback(cid, type, msg)
	if(not npcHandler:isFocused(cid)) then
	return false
	end

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then
		if getPlayerItemCount(cid, torneio.revivePoke) >= 1 then
			selfSay('Voce nao Pode entrar no torneio com {revives}, por favor guarde eles e volte a falar comigo novamente.', cid)
		return true
		end
	selfSay('Voce quer Participar no torneio por'..torneio.price..' HD?', cid)
	talkState[talkUser] = 2

	elseif talkState[talkUser] == 2 then
		if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
			if os.date("%X") < torneio.startHour or os.date("%X") > torneio.endHour then
				selfSay('As Inscrisoes para o torneiro terminaram, volte mais tarde', cid)
			return true
			end
			if doPlayerRemoveMoney(cid, torneio.price) then
				doTeleportThing(cid, torneio.waitPlace)
				doPlayerSendTextMessage(cid, 21, "Bem vindo, esta e a sala de espera, voce espera aqui enquanto o torneio nao começa. Hora de inicio: {"..torneio.endHour.."}.")
			else
				selfSay('Voce não tem dinheiro suficiente ('..torneio.price..').', cid)
			end
		else
		selfSay('Certeza que voce não quer Participar?Ok, ate a Proxima', cid)
		talkState[talkUser] = 0
		end
	end
end

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Torneio.xml:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Nick" script="torneio.lua" walkinterval="999000" floorchange="0">
<health now="150" max="150"/>
<look type="1806" head="20" body="100" legs="50" feet="99" corpse="111"/>
</npc>
Link para o comentário
Compartilhar em outros sites

  • 0

Não deu nenhum erro? Qual a distro que vc usa?

 

Vc entende de scripts? Pq eu ñ manjo de ots derivados, e ñ sei dizer se esse npc foi feito corretamente em certas partes (envolvendo uma variavel global chamada torneio)...

Link para o comentário
Compartilhar em outros sites

  • 0

Entao Essse essse e de tibia ja testei ele funfa ne tibia e poketibia

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
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 creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
-- Conversa Jogador/NPC
if(msgcontains(msg, 'oi')) then
selfSay('Olá |PLAYERNAME|. Para recuperar o hp do seu pokémon é preciso estar usando ele, ou com ele dentro da sua PokeBag. Você deve se aproximar do NPC Nurse Joy e falar Hi ou Oi.Diga {sim} para continuar a conversa', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'sim')) then
selfSay('Você está atrasado vá ao laboratório Pegar seu pokémon', cid)
talkState[talkUser] = 2
end
return TRUE
end
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Delia Ketchum" script="Delia Ketchum.lua" walkinterval="999000" floorchange="0">
<health now="150" max="150"/>
<look type="1433" head="20" body="100" legs="50" feet="99" corpse="111"/>]
<parameters>
<parameter key="message_greet" value="Olá |PLAYERNAME|. Para recuperar o hp do seu pokémon e preciso estar usando ele, ou com ele dentro da sua PokeBag. Você deve se aproximar do NPC Nurse Joy e falar Hi ou Oi.Diga {sim} para continuar a conversa."/>
<parameter key="message_farewell" value="Ate mais." />
<parameter key="message_walkaway" value="Ate mais." />
</parameters>
</npc>
Mesmo Problema ele fala 2 vesez

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...