Ir para conteúdo
  • 0

Npc que da informação,npc que da item


Pluzetti

Pergunta

Galera alguem poderia me fazer um favor?

 

O favor trata-se de um npc que da informação,vou demonstrar como seria:

 

 

Hi

Npc: Ola Kevintwo,esta fazenda pertenceu a um grande domador de monstros,mas um dia ele saiu de viagem e nunca mais retornou,tome leve com vc esse item que ele me deixo( akie eu olhoo no mapa editor e vejo um item dahorinha,mas pode ser dineiro apenas para testar

 

 

Esse seria 1 npc:

 

O outro seria:

 

 

Eu procurando pelo mapa e axo esse npc perdido,ae eu começo a fala com ele,ele me leva para aquela cidade onde tem uma fazenda e me da 1 item,que eu possa editar qual item ira ser gerado,e com isso o player ganha 2 lvl sera possivel fazer para mim?

 

Editado por Pluzetti
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Primeiro NPC:

 

 

 

Vá em data/npcs/scripts, copie qualquer arquivo de lá, cole na mesma pasta e renomeie para "fazendagain" sem as aspas. Agora, abra com o bloco de notas e cola isso dentro:

 

 

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

local gain, amount = 2148, 100 -- ID/QUANTIDADE

 

if(msgcontains(msg, 'hi') or msgcontains(msg, 'hello')) then

if getPlayerStorageValue (cid,9429) == -1 then

selfSay('Ola Kevintwo, esta fazenda pertenceu a um grande domador de monstros, mas, um dia ele saiu de viagem e nunca mais retornou. Pegue, leve com você essa relíquia que ele me deixou!', cid)

doPlayerAddItem(cid,gain,amount)

talkState[talkUser] = 0

elseif msgcontains(msg, 'hi') and getPlayerStorageValue(cid,9429) == 1 then

selfSay('Oque você quer? Já te dei a relíquia.', cid)

talkState[talkUser] = 0

end

return true

end

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

Muito bem, agora volte para a pasta data/npc e copie qualquer arquivo .xml que tenha lá. Ai você renomeia para Fazendeiro, abra com o bloco de notas e cole isso dentro:

 

 

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

<npc name="Fazendeiro" script="fazendagain.lua" walkinterval="2000" floorchange="0">

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

<look type="139" head="132" body="79" legs="97" feet="132" corpse="2212"/>

</npc>

 

 

 

 

 

Agora basta ir no RME e colocar o NPC no mapa. Ou dentro do game, ir na conta do GOD, ir no local aonde o NPC vai ficar e falar

/n Fazendeiro

 

Mas após reiniciar o server ele não vai estar mais lá. o recomendado é usar o MAP EDITOR para isso :)

 

 

~~

 

O Segundo NPC poderia explicar melhor?Qual é esse NPC? É o domador de animais que o primeiro npc fala?

 

Oque acontece? Teleporta o player pra onde?Oque o player gaanha?COmo funciona , dê mais detalhes.

Editado por Roksas
Link para o comentário
Compartilhar em outros sites

  • 0

Roksas Seguinte o primeiro npc eu falo hi eo npc fala 18:40 Fazendeiro: Welcome, [ADM] Kevintwo! I have been expecting you....oq eu falo? para continuar a conversa com fazendeiro? eo 2 é assim

 

 

eu axo o npc perdido e começo fala com ele e ele fala vc pode me levar de volta?eu falo yes e ele teleporta junto com npc ae depois disso ele continua a conversa e da 1 item ao player e ele entra dentro da fazenda de monstros

Link para o comentário
Compartilhar em outros sites

  • 0

O primeiro troca por esse e tenta falar, hi, depois help ou quest

 

 

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

local gain, amount = 2148, 100 -- ID/QUANTIDADE

 

if(msgcontains(msg, 'help') or msgcontains(msg, 'quest')) then

talkState[talkUser] = 0

if getPlayerStorageValue (cid,94299) == -1 then

selfSay('Ola '..getCreatureName..' esta fazenda pertenceu a um grande domador de monstros, mas, um dia ele saiu de viagem e nunca mais retornou. Pegue, leve com você essa relíquia que ele me deixou!', cid)

doPlayerAddItem(cid,gain,amount)

setPlayerStorageValue(cid,94299,1)

else

selfSay('Oque você quer? Já te dei a relíquia.', cid)

talkState[talkUser] = 0

end

return true

end

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Link para o comentário
Compartilhar em outros sites

  • 0

Roksas continua a mesma coisa :/

 

ERRO

 

 

[23/03/2013 20:08:33] [Error - Npc interface]

[23/03/2013 20:08:33] data/npc/scripts/fazendagain.lua:onCreatureSay

[23/03/2013 20:08:33] Description:

[23/03/2013 20:08:33] data/npc/scripts/fazendagain.lua:22: attempt to concatenate global 'getCreatureName' (a function value)

[23/03/2013 20:08:33] stack traceback:

[23/03/2013 20:08:33] data/npc/scripts/fazendagain.lua:22: in function 'callback'

[23/03/2013 20:08:33] data/npc/lib/npcsystem/npchandler.lua:390: in function 'onCreatureSay'

[23/03/2013 20:08:33] data/npc/scripts/fazendagain.lua:8: in function <data/npc/scripts/fazendagain.lua:8>

 

Editado por Pluzetti
Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado por corrigir Slicer.

 

Troque para esse Pluzetti:

 

 

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

local gain, amount = 2148, 100 -- ID/QUANTIDADE

 

if(msgcontains(msg, 'help') or msgcontains(msg, 'quest')) then

talkState[talkUser] = 0

if getPlayerStorageValue (cid,94299) == -1 then

selfSay('Ola '..getCreatureName(cid)..' esta fazenda pertenceu a um grande domador de monstros, mas, um dia ele saiu de viagem e nunca mais retornou. Pegue, leve com você essa relíquia que ele me deixou!', cid)

doPlayerAddItem(cid,gain,amount)

setPlayerStorageValue(cid,94299,1)

else

selfSay('Oque você quer? Já te dei a relíquia.', cid)

talkState[talkUser] = 0

end

return true

end

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Link para o comentário
Compartilhar em outros sites

  • 0

Tipo, do jeito que você falou ele se teleportaria junto com o player, mas não seria melhor, ter 2 dele? Ou seja, um npc fala com ele, ai teleporta o player pro outro npc? Ai é como se os dois fossem teleportados. Mas ai pra onde ele for teleportado, nao da pra ir a pé, tendeu? Pros players não o verem.

 

Porque se teleportar, o NPC vai sumir certo? Ele vai tar em outra posição. E se chegar outro player pra fazer essa quest e ele não tiver lá? '-'

 

Não sabe outra hipótese? Que possamos fazer, ou quer daquele jeito?2 NPCS. Um teleportar para o outro..

Link para o comentário
Compartilhar em outros sites

  • 0

Roksas pode ser assim ele fala o pq ele sumiu ae ele entrega tal item e leva o player de volta ao Fazendeiro ae ele fala com fazendeiro eo fazendeiro da 1 item pode ser?

 

Se não conseguir pode ser o de 2 npcs

Editado por Pluzetti
Link para o comentário
Compartilhar em outros sites

  • 0

Tenta assim, data/npc/scripts, crie um arquivo chamado sumido.lua e adicione isso dentro:

 

 

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

local gain, amount, fazenda = 2148, 100, {x = 500, y = 332, z = 7} -- ID / QUANTIDADE / POSITION

 

if(msgcontains(msg, 'help') or msgcontains(msg, 'quest')) then

talkState[talkUser] = 0

if getPlayerStorageValue (cid,94399) == -1 then

selfSay('Ola '..getCreatureName(cid)..', que bom que me achou, eu fugi da fazenda, estava querendo me libertar um pouco dos animais, agora não sei voltar para casa. Obrigado por me ajudar, aqui uma recompensa!', cid)

doPlayerAddItem(cid,gain,amount)

doTeleportThing(cid,fazenda)

setPlayerStorageValue(cid,94399,1)

else

selfSay('Oque você quer? Já te agradeci pela ajuda!.', cid)

talkState[talkUser] = 0

end

return true

end

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

Aonde está vermelho, você configura o item que o sumido da, a quantidade e a posição do NPC fazendeiro!

 

~~

Agora em data/npc, crie um arquivo chamado Sumido.xml e adicione isso dentro:

 

 

 

 

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

<npc name="Domador" script="sumido.lua" walkinterval="2000" floorchange="0">

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

<look type="128" head="132" body="79" legs="97" feet="132" corpse="2212"/>

</npc>

 

 

 

Agora troque aquele primeiro NPC por esse:

 

 

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

local gain, amount = 2148, 100 -- ID/QUANTIDADE

 

if(msgcontains(msg, 'help') or msgcontains(msg, 'quest')) then

talkState[talkUser] = 0

if getPlayerStorageValue (cid,94299) == -1 then

selfSay('Ola '..getCreatureName(cid)..' esta fazenda pertenceu a um grande domador de monstros, mas, um dia ele saiu de viagem e nunca mais retornou. Pegue, leve com você essa relíquia que ele me deixou!', cid)

doPlayerAddItem(cid,gain,amount)

setPlayerStorageValue(cid,94299,1)

else

selfSay('Oque você quer? Já te dei a relíquia.', cid)

talkState[talkUser] = 0

end

end

if(msgcontains(msg, 'help') or msgcontains(msg, 'quest')) then

talkState[talkUser] = 0

if getPlayerStorageValue(cid,94399) == 1 then

selfSay('Obrigado por salvar o nosso domador de animais, aqui uma recompensa para você!', cid)

setPlayerStorageValue(cid,94399,2)

else

selfSay('Já encontrou para mim o domador, não preciso mais de você!',cid)

end

return true

end

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

 

Como vai fazer, vai no Fazendeiro, fala:

hi, help ou quest.

Ai ele vai te dar o item e a missão. Ai você vai e procura o sumido, pra fazer ele aparecer é

 

/n Domador

 

Agora você fala, hi, help ou quest

Ai ele vai te agradecer, te teleportar e dar outro item.

Depois você fala com o fazendeiro, ele vai te agradecer por ter encontrado o domador e te dar o premio!

 

Do jeito que pediu, aonde está vermelho nos códigos é aond vc muda as configs. bjs

Link para o comentário
Compartilhar em outros sites

  • 0

Roksas [23/03/2013 21:58:44] [Warning - Npc::loadFromXml] Cannot load npc file (data/npc/Domador.xml).

[23/03/2013 21:58:44] Info: failed to load external entity "data/npc/Domador.xml" oq sera?

 

 

Tera como colocar para o fazendeiro remover o item que o Domador da? PS: o erro do domador ainda consiste

Editado por Pluzetti
Link para o comentário
Compartilhar em outros sites

  • 0

na pasta data/npc, pra por o Domador.xml, você copiou algum arquivo de lá ou criou? Verifique se o arquivo já não era .xml e você pos + 1 .xml

ficando Domador.xml.xml

Link para o comentário
Compartilhar em outros sites

  • 0

Roksas to com os erros:

 

Eu do /n Domador e ele nao aparece da akele erro em cima

O player fala com o fazendeiro ele fala 22:14 Fazendeiro: Oque você quer? Já te dei a relíquia.

22:14 Fazendeiro: Já encontrou para mim o domador, não preciso mais de você! mas sem ter achado o domador sem ele ter dado o item

 

 

 

Criei um char lvl 5 ele nao tem o item o npc fazendeiro fala isso:

 

22:18 Robert: hi

22:18 Fazendeiro: Welcome, Robert! I have been expecting you.

22:18 Robert: help

22:18 Fazendeiro: Ola Robert esta fazenda pertenceu a um grande domador de monstros, mas, um dia ele saiu de viagem e nunca mais retornou. Pegue, leve com você essa relíquia que ele me deixou!

22:18 Fazendeiro: Já encontrou para mim o domador, não preciso mais de você!

Editado por Pluzetti
Link para o comentário
Compartilhar em outros sites

  • 0

Troca o primeiro por esse aqui, e me fala todos os IDS, que o domador da, todos que o fazendeiro da, etc.

 

 

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

local gain, amount = 2148, 100 -- ID/QUANTIDADE

local gain2, amount2 = 2149, 100 -- ID DO SEGUNDO ITEM / QUANTIDADE

 

if(msgcontains(msg, 'help') or msgcontains(msg, 'quest')) then

talkState[talkUser] = 0

if getPlayerStorageValue (cid,9929) == -1 then

selfSay('Ola '..getCreatureName(cid)..' esta fazenda pertenceu a um grande domador de monstros, mas, um dia ele saiu de viagem e nunca mais retornou. Pegue, leve com você essa relíquia que ele me deixou!', cid)

doPlayerAddItem(cid,gain,amount)

setPlayerStorageValue(cid,9929,1)

else

selfSay('Oque você quer? Já te dei a relíquia.', cid)

talkState[talkUser] = 0

end

end

if(msgcontains(msg, 'help') or msgcontains(msg, 'quest')) then

talkState[talkUser] = 0

if getPlayerStorageValue(cid,9939) == 1 then

selfSay('Obrigado por salvar o nosso domador de animais, aqui uma recompensa para você!', cid)

doPlayerAddItem(cid,gain2,amount2)

setPlayerStorageValue(cid,9939,2)

elseif getPlayerStorageValue(cid,9939) == 2 then

selfSay('Já encontrou para mim o domador, não preciso mais de você!',cid)

end

return true

end

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

Aonde ta vermelho poe o item que o primeiro item que da, e o segundo quando acha o domador.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...