Ir para conteúdo
  • Cadastre-se

(Resolvido)Npc que teleporta pedindo item e crystal coins


Ir para solução Resolvido por SoyColombiaa,

Posts Recomendados

Bom dia!

Gostaria de pedir um NPC que teleportasse  para um local e que cobrasse 1 ou 2 itens e Crystal Coins..

Testei vários mais nada funciona, espero que alguém possa ajudar!

Obrigado.

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

Bom dia amigo, é só pegar um script de um NPC, e executar uma ação retirando os Itens, e o crystal coin, e o teleportando, veja só:

 

Crie um arquivo XML na pasta data/npc/ chamado de TravelerTK, e coloque esse código dentro do arquivo:

Spoiler

<?xml version="1.0" encoding="UTF-8"?>

<npc name="Trevor" script="travelertk.lua" walkinterval="2000" floorchange="0">

<health now="100" max="100"/>

<look type="128" head="59" body="76" legs="48" feet="48"/>

</npc>
 

 

Depois, vá na pasta data/npc/scripts e crie um arquivo denominado de travelertk.lua, e coloque esse código dentro do arquivo:

Spoiler

-- Script de Travel feito por Soy Colombia, se for usá-lo, deixe os créditos. --

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

function santaNPC(cid, message, keywords, parameters, node)

if(not npcHandler:isFocused(cid)) then

return false

end

if (parameters.present == true) then

-- Não mexa em nada, em cima. --

doPlayerRemoveItem(cid, ID DO ITEM 1, QUANTIDADE)

doPlayerRemoveItem(cid, ID DO ITEM 2, QUANTIDADE)

doPlayerRemoveItem(cid, 2160, QUANTIDADE-- Crystal Coins

npcHandler:say('Voce foi teleportado para o nome do local.', cid) -- Mensagem que vai aparecer no bate papo após o player ser teletransportado.

doPlayerSendCancel("A viagem custou um item1, um item2 e x Crystal Coins.") -- Mandar uma mensagem em cima do bate papo falando quanto custou. Renomeie os nomes em laranja

elseif getPlayerItemCount(cid,2141) <= 0 then

npcHandler:say('Voce nao tem um item1, ou um item2  ou x Crystal Coins. ', cid) -- Mensagem após o player tentar ser teletransportado mas nao tiver um ou outro item solicitado

end

npcHandler:resetNpc()

return true

end

npcHandler:setMessage(MESSAGE_GREET, "Ola |PLAYERNAME|. Voce desejaria {viajar} para o nome do local?") -- Mensagem que vai aparecer após o player falar "hi"

local noNode = KeywordNode:new({'no'}, santaNPC, {present = false}) -- Não mexa.
local nooNode = KeywordNode:new({'nao'}, santaNPC, {present = false}) -- Não mexa.

local yessNode = KeywordNode:new({'sim'}, santaNPC, {present = true}) -- Não mexa.
local yesNode = KeywordNode:new({'yes'}, santaNPC, {present = true}) -- Não mexa.

local node = keywordHandler:addKeyword({'viajar'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'A viagem vai lhe custar um item1, um item2 e x Crystal Coins. Voce esta disposto a pagar por isso?'}) -- Mensagem que vai aparecer após o player falar viajar, para confirmar a viagem.

node:addChildKeywordNode(yesNode) -- Não mexa.
node:addChildKeywordNode(yessNode) -- Não mexa.

node:addChildKeywordNode(noNode) -- Não mexa.
node:addChildKeywordNode(nooNode) -- Não mexa.

npcHandler:addModule(FocusModule:new()) -- Não mexa.

 

-- Coisas que você precisa saber:

-- Se você quiser mudar o que o player precisa falar pra ser teletransportado, você deve substituir ali onde tem "Voce desejaria {viajar} para...", o {viajar} por {palavra}, assim, vai ficar destacado

-- Se voce quiser trocar as palavras ditas pra confirmar ou sair fora da viagem, mude as palavras azuis ali em "no, nao, sim e yes", tendo sempre em mente que no e não retornam falso e sim e yes retornam verdadeiro.

-- Qualquer dúvida me cite aqui no tópico. It should works.

 

 

Se eu te ajudei, não esqueça de me reputar, isto ajuda muito.

Link para o post
Compartilhar em outros sites
22 minutos atrás, SoyColombiaa disse:

Bom dia amigo, é só pegar um script de um NPC, e executar uma ação retirando os Itens, e o crystal coin, e o teleportando, veja só:

 

Crie um arquivo XML na pasta data/npc/ chamado de TravelerTK, e coloque esse código dentro do arquivo:

  Mostrar conteúdo oculto

<?xml version="1.0" encoding="UTF-8"?>

<npc name="Trevor" script="travelertk.lua" walkinterval="2000" floorchange="0">

<health now="100" max="100"/>

<look type="128" head="59" body="76" legs="48" feet="48"/>

</npc>
 

 

Depois, vá na pasta data/npc/scripts e crie um arquivo denominado de travelertk.lua, e coloque esse código dentro do arquivo:

  Mostrar conteúdo oculto

-- Script de Travel feito por Soy Colombia, se for usá-lo, deixe os créditos. --

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

function santaNPC(cid, message, keywords, parameters, node)

if(not npcHandler:isFocused(cid)) then

return false

end

if (parameters.present == true) then

-- Não mexa em nada, em cima. --

doPlayerRemoveItem(cid, ID DO ITEM 1, QUANTIDADE)

doPlayerRemoveItem(cid, ID DO ITEM 2, QUANTIDADE)

doPlayerRemoveItem(cid, 2160, QUANTIDADE-- Crystal Coins

npcHandler:say('Voce foi teleportado para o nome do local.', cid) -- Mensagem que vai aparecer no bate papo após o player ser teletransportado.

doPlayerSendCancel("A viagem custou um item1, um item2 e x Crystal Coins.") -- Mandar uma mensagem em cima do bate papo falando quanto custou. Renomeie os nomes em laranja

elseif getPlayerItemCount(cid,2141) <= 0 then

npcHandler:say('Voce nao tem um item1, ou um item2  ou x Crystal Coins. ', cid) -- Mensagem após o player tentar ser teletransportado mas nao tiver um ou outro item solicitado

end

npcHandler:resetNpc()

return true

end

npcHandler:setMessage(MESSAGE_GREET, "Ola |PLAYERNAME|. Voce desejaria {viajar} para o nome do local?") -- Mensagem que vai aparecer após o player falar "hi"

local noNode = KeywordNode:new({'no'}, santaNPC, {present = false}) -- Não mexa.
local nooNode = KeywordNode:new({'nao'}, santaNPC, {present = false}) -- Não mexa.

local yessNode = KeywordNode:new({'sim'}, santaNPC, {present = true}) -- Não mexa.
local yesNode = KeywordNode:new({'yes'}, santaNPC, {present = true}) -- Não mexa.

local node = keywordHandler:addKeyword({'viajar'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'A viagem vai lhe custar um item1, um item2 e x Crystal Coins. Voce esta disposto a pagar por isso?'}) -- Mensagem que vai aparecer após o player falar viajar, para confirmar a viagem.

node:addChildKeywordNode(yesNode) -- Não mexa.
node:addChildKeywordNode(yessNode) -- Não mexa.

node:addChildKeywordNode(noNode) -- Não mexa.
node:addChildKeywordNode(nooNode) -- Não mexa.

npcHandler:addModule(FocusModule:new()) -- Não mexa.

 

-- Coisas que você precisa saber:

-- Se você quiser mudar o que o player precisa falar pra ser teletransportado, você deve substituir ali onde tem "Voce desejaria {viajar} para...", o {viajar} por {palavra}, assim, vai ficar destacado

-- Se voce quiser trocar as palavras ditas pra confirmar ou sair fora da viagem, mude as palavras azuis ali em "no, nao, sim e yes", tendo sempre em mente que no e não retornam falso e sim e yes retornam verdadeiro.

-- Qualquer dúvida me cite aqui no tópico. It should works.

 

 

Se eu te ajudei, não esqueça de me reputar, isto ajuda muito.

Olá tudo certo amigo?

Desculpe a ignorância, mais onde fica para eu por as coordenadas para o teleporte?

Link para o post
Compartilhar em outros sites
42 minutos atrás, tirso disse:

Olá tudo certo amigo?

Desculpe a ignorância, mais onde fica para eu por as coordenadas para o teleporte?

Que nada, eu que esqueci de por POSKAOPEKAPO, faça o seguinte, substitui o código do arquivo por este aqui:

Spoiler

-- Script de Travel feito por Soy Colombia, se for usá-lo, deixe os créditos. --

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

function santaNPC(cid, message, keywords, parameters, node)

if(not npcHandler:isFocused(cid)) then

return false

end

if (parameters.present == true) then

-- Não mexa em nada, em cima. --

doPlayerRemoveItem(cid, ID DO ITEM 1, QUANTIDADE)

doPlayerRemoveItem(cid, ID DO ITEM 2, QUANTIDADE)

doPlayerRemoveItem(cid, 2160, QUANTIDADE) -- Crystal Coins

local pos = {x = 1347, y = 1210, z = 7}  -- Coloque a coordenada

doTeleportThing(cid, pos)

npcHandler:say('Voce foi teleportado para o nome do local.', cid) -- Mensagem que vai aparecer no bate papo após o player ser teletransportado.

doPlayerSendCancel("A viagem custou um item1, um item2 e x Crystal Coins.") -- Mandar uma mensagem em cima do bate papo falando quanto custou. Renomeie os nomes em laranja

elseif getPlayerItemCount(cid,2141) <= 0 then

npcHandler:say('Voce nao tem um item1, ou um item2  ou x Crystal Coins. ', cid) -- Mensagem após o player tentar ser teletransportado mas nao tiver um ou outro item solicitado

end

npcHandler:resetNpc()

return true

end

npcHandler:setMessage(MESSAGE_GREET, "Ola |PLAYERNAME|. Voce desejaria {viajar} para o nome do local?") -- Mensagem que vai aparecer após o player falar "hi"

local noNode = KeywordNode:new({'no'}, santaNPC, {present = false}) -- Não mexa.
local nooNode = KeywordNode:new({'nao'}, santaNPC, {present = false}) -- Não mexa.

local yessNode = KeywordNode:new({'sim'}, santaNPC, {present = true}) -- Não mexa.
local yesNode = KeywordNode:new({'yes'}, santaNPC, {present = true}) -- Não mexa.

local node = keywordHandler:addKeyword({'viajar'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'A viagem vai lhe custar um item1, um item2 e x Crystal Coins. Voce esta disposto a pagar por isso?'}) -- Mensagem que vai aparecer após o player falar viajar, para confirmar a viagem.

node:addChildKeywordNode(yesNode) -- Não mexa.
node:addChildKeywordNode(yessNode) -- Não mexa.

node:addChildKeywordNode(noNode) -- Não mexa.
node:addChildKeywordNode(nooNode) -- Não mexa.

npcHandler:addModule(FocusModule:new()) -- Não mexa.

 

-- Coisas que você precisa saber:

-- Se você quiser mudar o que o player precisa falar pra ser teletransportado, você deve substituir ali onde tem "Voce desejaria {viajar} para...", o {viajar} por {palavra}, assim, vai ficar destacado

-- Se voce quiser trocar as palavras ditas pra confirmar ou sair fora da viagem, mude as palavras azuis ali em "no, nao, sim e yes", tendo sempre em mente que no e não retornam falso e sim e yes retornam verdadeiro.

-- Qualquer dúvida me cite aqui no tópico. It should works.

 

Link para o post
Compartilhar em outros sites
15 minutos atrás, SoyColombiaa disse:

Que nada, eu que esqueci de por POSKAOPEKAPO, faça o seguinte, substitui o código do arquivo por este aqui:

  Mostrar conteúdo oculto

-- Script de Travel feito por Soy Colombia, se for usá-lo, deixe os créditos. --

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

function santaNPC(cid, message, keywords, parameters, node)

if(not npcHandler:isFocused(cid)) then

return false

end

if (parameters.present == true) then

-- Não mexa em nada, em cima. --

doPlayerRemoveItem(cid, ID DO ITEM 1, QUANTIDADE)

doPlayerRemoveItem(cid, ID DO ITEM 2, QUANTIDADE)

doPlayerRemoveItem(cid, 2160, QUANTIDADE) -- Crystal Coins

local pos = {x = 1347, y = 1210, z = 7}  -- Coloque a coordenada

doTeleportThing(cid, pos)

npcHandler:say('Voce foi teleportado para o nome do local.', cid) -- Mensagem que vai aparecer no bate papo após o player ser teletransportado.

doPlayerSendCancel("A viagem custou um item1, um item2 e x Crystal Coins.") -- Mandar uma mensagem em cima do bate papo falando quanto custou. Renomeie os nomes em laranja

elseif getPlayerItemCount(cid,2141) <= 0 then

npcHandler:say('Voce nao tem um item1, ou um item2  ou x Crystal Coins. ', cid) -- Mensagem após o player tentar ser teletransportado mas nao tiver um ou outro item solicitado

end

npcHandler:resetNpc()

return true

end

npcHandler:setMessage(MESSAGE_GREET, "Ola |PLAYERNAME|. Voce desejaria {viajar} para o nome do local?") -- Mensagem que vai aparecer após o player falar "hi"

local noNode = KeywordNode:new({'no'}, santaNPC, {present = false}) -- Não mexa.
local nooNode = KeywordNode:new({'nao'}, santaNPC, {present = false}) -- Não mexa.

local yessNode = KeywordNode:new({'sim'}, santaNPC, {present = true}) -- Não mexa.
local yesNode = KeywordNode:new({'yes'}, santaNPC, {present = true}) -- Não mexa.

local node = keywordHandler:addKeyword({'viajar'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'A viagem vai lhe custar um item1, um item2 e x Crystal Coins. Voce esta disposto a pagar por isso?'}) -- Mensagem que vai aparecer após o player falar viajar, para confirmar a viagem.

node:addChildKeywordNode(yesNode) -- Não mexa.
node:addChildKeywordNode(yessNode) -- Não mexa.

node:addChildKeywordNode(noNode) -- Não mexa.
node:addChildKeywordNode(nooNode) -- Não mexa.

npcHandler:addModule(FocusModule:new()) -- Não mexa.

 

-- Coisas que você precisa saber:

-- Se você quiser mudar o que o player precisa falar pra ser teletransportado, você deve substituir ali onde tem "Voce desejaria {viajar} para...", o {viajar} por {palavra}, assim, vai ficar destacado

-- Se voce quiser trocar as palavras ditas pra confirmar ou sair fora da viagem, mude as palavras azuis ali em "no, nao, sim e yes", tendo sempre em mente que no e não retornam falso e sim e yes retornam verdadeiro.

-- Qualquer dúvida me cite aqui no tópico. It should works.

 

Dei um reload mais ele nao cria nem o npc :s

Link para o post
Compartilhar em outros sites
1 minuto atrás, SoyColombiaa disse:

Você importou ele no seu map editor?

Mais será que com o /reload npcs ele nao ativa pelo menos?

Link para o post
Compartilhar em outros sites
Agora, tirso disse:

Mais será que com o /reload npcs ele nao ativa pelo menos?

 

Você só põe um NPC no server importando o XML dele dentro de um editor de mapa, e depois, desligando e ligando o servidor.

É bem simples colocar um NPC.

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

 

Você só põe um NPC no server importando o XML dele dentro de um editor de mapa, e depois, desligando e ligando o servidor.

É bem simples colocar um NPC.

Tendi, tudo bem vou add ele no mapa e ja volto aqui.

 

EDIT

Não deu cara :/ 

EDIT 2

Resolvido obrigado amigo.

@SoyColombiaa

Editado por tirso (veja o histórico de edições)
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