Ir para conteúdo
  • Cadastre-se

(Resolvido)Npc - Task e Teleport


Ir para solução Resolvido por Kemmlly,

Posts Recomendados

Tem como tu criar para mim?! @Kemmlly

E Parecido com aquele outro la que tu fez pro Admnso!

Mensagens:

Player: Hi
Blazar: Hmmm... sinto a sua vontade de mostrar sua força. Vim do "The Volcano" buscando pessoas como você.
Player: "The Volcano"
Blazar: Nasci e vivia em The Volcano, porém fui traído por aqueles malditos isqueiros! Me expulsaram só porque eu utilizava um "túnel proibido" para acessar o continente..
Player: "Tunel Proibido"
Blazar: Existe uma maneira de acessar nossa ilha por dentro do mar, um túnel interliga a ilha ao continente. Tenho uma proposta pra você e posso te levar até a ilha. Quer "saber mais" ?
Player: "Saber mais"
Blazar: Quero que elimine, mate, extermine, o máximo de Blazing Spirits possível, quero ver essa raça cair e não me importo com sua extinção. Se apagar 300 da minha espécie,MENOS EU, ensinarei você a acessar a montanha dentro da ilha, aumentando seu respaw e melhorando suas hunts. "Aceita" ?
Player: Aceita
Blazar: Acordo fechado! Volte aqui com as cinzas daqueles miseráveis. Se quiser ir agora para o The Volcano, só falar "travel" ou "blazing".

Após o player matar os 300 blazing, ele vai ir falar com o npc:

Player: HI
Blazar: Hmmm... sinto a sua vontade de mostrar sua força. Vim do "The Volcano" buscando pessoas como você.
Player: Travel
Blazar: Good Bye, Nome do Player

 

 

#Obs: Todas as palavras dentro das aspas ( " ) serao em azul forte, que e o que sera dito para ir continuando a falar..

Obs; Pode por qualquer addon :d
 

Link para o post
Compartilhar em outros sites
3 horas atrás, Mathwsz disse:

Tem como tu criar para mim?! @Kemmlly

E Parecido com aquele outro la que tu fez pro Admnso!

Mensagens:

Player: Hi
Blazar: Hmmm... sinto a sua vontade de mostrar sua força. Vim do "The Volcano" buscando pessoas como você.
Player: "The Volcano"
Blazar: Nasci e vivia em The Volcano, porém fui traído por aqueles malditos isqueiros! Me expulsaram só porque eu utilizava um "túnel proibido" para acessar o continente..
Player: "Tunel Proibido"
Blazar: Existe uma maneira de acessar nossa ilha por dentro do mar, um túnel interliga a ilha ao continente. Tenho uma proposta pra você e posso te levar até a ilha. Quer "saber mais" ?
Player: "Saber mais"
Blazar: Quero que elimine, mate, extermine, o máximo de Blazing Spirits possível, quero ver essa raça cair e não me importo com sua extinção. Se apagar 300 da minha espécie,MENOS EU, ensinarei você a acessar a montanha dentro da ilha, aumentando seu respaw e melhorando suas hunts. "Aceita" ?
Player: Aceita
Blazar: Acordo fechado! Volte aqui com as cinzas daqueles miseráveis. Se quiser ir agora para o The Volcano, só falar "travel" ou "blazing".

Após o player matar os 300 blazing, ele vai ir falar com o npc:

Player: HI
Blazar: Hmmm... sinto a sua vontade de mostrar sua força. Vim do "The Volcano" buscando pessoas como você.
Player: Travel
Blazar: Good Bye, Nome do Player

 

 

#Obs: Todas as palavras dentro das aspas ( " ) serao em azul forte, que e o que sera dito para ir continuando a falar..

Obs; Pode por qualquer addon :d
 

 

Amanhã pela manhã faço pra você .

Link para o post
Compartilhar em outros sites
  • Solução

npc.lua

local destino = {x = 1004, y = 1021, z = 7} -- Coordenadas do destino
	

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)

local storageinicio = 8887 -- Storage que inicia a quest
local storagequest = 8888 -- Storage da quest
local storagemonstro = 8889 -- Storage que faz a contagem do monstro
local monstro = "cyclops" -- Nome do monstro
local quantidade = 300 -- Quantidade de monstros para terminar a task
	if (not npcHandler:isFocused(cid)) then
		return false
	end
	
	local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
	if (msgcontains(msg, 'the volcano')) and getPlayerStorageValue(cid, storageinicio) == 1 and getPlayerStorageValue(cid, storagequest) ~= 1 then
			local contagem = getPlayerStorageValue(cid, storagemonstro)
			if contagem == -1 then contagem = 1 end
			selfSay('Voce nao terminou sua tarefa ainda, falta matar '..string.sub((contagem)-(quantidade), 2)..' '..monstro..'. Complete sua tarefa e retorne aqui.', cid)
			elseif (msgcontains(msg, 'the volcano')) and getPlayerStorageValue(cid, storageinicio) ~= 1 then
			talkState[talkUser] = 1
			selfSay('Nasci e vivia em The Volcano, porem fui traido por aqueles malditos isqueiros! Me expulsaram so porque eu utilizava um {tunel proibido} para acessar o continente..', cid)
			elseif msgcontains(msg, 'the volcano') and getPlayerStorageValue(cid, storagequest) == 1 then
			selfSay('Voce ja completou sua missao, serei eternamente grato, siga seu caminho em paz!', cid)
			elseif msgcontains(msg, 'tunel proibido') and talkState[talkUser] == 1 then
			talkState[talkUser] = 2
			selfSay('Existe uma maneira de acessar nossa ilha por dentro do mar, um tunel interliga a ilha ao continente. Tenho uma proposta pra voce e posso te levar ate a ilha. Quer {saber mais} ?', cid)
			elseif msgcontains(msg, 'saber mais') and talkState[talkUser] == 2 then
			selfSay('Quero que elimine, mate, extermine, o maximo de Blazing Spirits possivel, quero ver essa raca cair e nao me importo com sua extincao. Se apagar 300 da minha especie, MENOS EU, ensinarei voce a acessar a montanha dentro da ilha, aumentando seu respaw e melhorando suas hunts. {aceita} ?', cid)
			talkState[talkUser] = 3
			elseif msgcontains(msg, 'aceita') and talkState[talkUser] == 3 then
			talkState[talkUser] = 4
			setPlayerStorageValue(cid, storageinicio, 1)
			setPlayerStorageValue(cid, storagemonstro, 0)
			selfSay('Acordo fechado! Volte aqui com as cinzas daqueles miseraveis. Se quiser ir agora para o The Volcano, sa falar {travel} ou {blazing}.', cid)
			elseif msgcontains(msg, 'travel') then
			doTeleportThing(cid, destino)
			selfSay('Boa viagem.', cid)
			else return false	
			end
	return true
end

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

npc.xml

<npc name="NOME DO NPC" script="data/npc/scripts/NORME DO ARQUIVO.lua" access="5" lookdir="1">
<health now="1000" max="1000"/>
<look type="54" head="45" body="67" legs="79" feet="10" addons="1"/>
	<parameters>
		<parameter key="message_greet" value="Hmmm... sinto a sua vontade de mostrar sua força. Vim do {The Volcano} buscando pessoas como você." />
	</parameters>
</npc>

 

em creaturescripts/scripts, crie um arquivo taskblazing.lua

function onKill(cid, target, lastHit)

local storageinicio = 8887 -- Storage que inicia a quest
local storagequest = 8888 -- Storage da quest
local storagemonstro = 8889 -- Storage que faz a contagem do monstro
local monstro = "cyclops" -- Nome do monstro

if(isMonster(target) == true) then

local n = string.lower(getCreatureName(target))

if getPlayerStorageValue(cid, storageinicio) >= 1 and n == monstro then
local contagem = getPlayerStorageValue(cid, storagemonstro)
setPlayerStorageValue(cid, storagemonstro, contagem+1)
if contagem >= 300 then setPlayerStorageValue(cid, storagequest, 1) end
end

end
return true
end

em login.lua adicione a tag

registerCreatureEvent(cid, "taskblazing")

creaturescripts.xml

<event type="kill" name="taskblazing" event="script" value="taskblazing.lua"/>

 

Se os storages que eu escolhi não estiverem sendo usado no seu ot, deixe eles no script, se quiser mudar, mude com atenção nos dois scripts para não haver erro.

Lembre-se de mudar o nome do bixo no local correto e de escrever o nome corretamente para a contagem ser feita. Altere também as coordenadas do local que você quer teleportar o player.

Link para o post
Compartilhar em outros sites

Perfeito Amigo> ReP+

 

Só uma coisa tem como coloca quando mata o blazing aparece um:

doPlayerSendCancel(cid,"Acaba de mata 1 Blazing.")

 

todas vez que mata um blazing irá aparecé

 

Acaba de mata 1 Blazing.

Acaba de mata 2 Blazing.

Acaba de mata 3 Blazing.

 

ate 299, quando chega 300 vai aparece outra mensagem só que na tela:

 

"Voce acaba de mata os 300 blazing vá até o blazar e ganhe sua recompensa".

 

Editado por Admnwso (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
58 minutos atrás, Admnwso disse:

Perfeito Amigo> ReP+

 

Só uma coisa tem como coloca quando mata o blazing aparece um:

doPlayerSendCancel(cid,"Acaba de mata 1 Blazing.")

 

todas vez que mata um blazing irá aparecé

 

Acaba de mata 1 Blazing.

Acaba de mata 2 Blazing.

Acaba de mata 3 Blazing.

 

ate 299, quando chega 300 vai aparece outra mensagem só que na tela:

 

"Voce acaba de mata os 300 blazing vá até o blazar e ganhe sua recompensa".

 

Tem sim, pela manhã faço isso, nada demorado, mas estou pelo cel.

Link para o post
Compartilhar em outros sites
2 horas atrás, Admnwso disse:

Aguardando, Obrigado.

 

Bom, se você quiser, só alterar no script pra ficar exatamente como pediu, acredito que saiba como, mas, fiz de uma forma diferente.

Se mandar um sendcancel vai sumir rapidamente depois de um hit de outro monstro ou spell e o jogador não vai acompanhar, fiz de uma forma que ele registra no default em laranja, assim o player vê quantos ja matou a hora que quiser pois fica registrado, e quando finalizar aparece um popup na tela com a mensagem que voce pediu, mas só no monstro de numero 300, o 301 ja nao aparece mais, para o caso de o player estiver no meio da cave e ter q sair matando e nao ficar aparecendo toda hora.

function onKill(cid, target, lastHit)

local storageinicio = 8887 -- Storage que inicia a quest
local storagequest = 8888 -- Storage da quest
local storagemonstro = 8889 -- Storage que faz a contagem do monstro
local monstro = "cyclops" -- Nome do monstro

if(isMonster(target) == true) then

local n = string.lower(getCreatureName(target))
if getPlayerStorageValue(cid, storageinicio) >= 1 and n == monstro then
local contagem = getPlayerStorageValue(cid, storagemonstro)
if contagem == -1 then contagem = 1 end
setPlayerStorageValue(cid, storagemonstro, contagem+1)
if n == monstro then
doPlayerSendTextMessage(cid, 19, 'Voce matou '..contagem..' Blazings.')
end
if contagem == 300 then
setPlayerStorageValue(cid, storagequest, 1)
doPlayerPopupFYI(cid,'Voce acaba de matar os 300 Blazing va ate o Blazar e ganhe sua recompensa')
end
end

end
return true
end

Testa aí e me fala.

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo