Ir para conteúdo

Criando Missões !


Junior001

Posts Recomendados

Então vou tentar te explicar um pouco de como funciona esse sistema de SAGA que você esta querendo então vou pegar o do Iruka mesmo so para te explicar:

Primeiramente tu vai criar o npc que vai pedir para fazer a saga no meu caso vai ser o Mizuki entao vai na pasta npc e cria o npc.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Mizuki" script="data/npc/scripts/pergaminho.lua" walkinterval="2000" speed="0" floorchange="0">
<health now="100" max="100"/>
<look type="160" head="19" body="113" legs="95" feet="115" addons="0"/>
<parameters>
<parameter key="message_greet" value="Ola shinobi, ouvi dizer que nao esta muito bem na academia..queres alguma {ajuda} shinobi?" />
</parameters>
</npc>

e depois na pasta script eu vou criar o script do meu npc:

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, 'ajuda')) then
selfSay('Entao, ouvi falar que tem um "pergaminho" muito poderoso, acredito que se conseguir ele podera aprender qualquer jutsu.', cid)
end
---------------------------------------------------------
if(msgcontains(msg, 'pergaminho')) then
selfSay('Entao quer mesmo aprender todos os jutsus? muito bom, ouvi falar que que no predio do hokage tem um bau, e nele existe um pergaminho, pegue o pergaminho e me encontre na "floresta"', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'floresta') and talkState[talkUser] == 1) then
if (getPlayerStorageValue(cid,89745) > 0) then
selfSay('Voce ja terminou essa missao.', cid)
else
if(doPlayerRemoveItem(cid, 2396, 75) == TRUE) then
setPlayerStorageValue(cid,601,1)
doPlayerAddExperience(cid,1000)
doPlayerAddItem(cid,10135,1)
selfSay('Obrigado! Como recompensa pegue e leia esse livro, eh de un clan antigo, podera aprender muito com ele...{voce leu o livro}... (you received 1000 points of experience)', cid)
else
selfSay('Exato, saia de konoha e va caminhando para west encontrara na entrada da floresta perdida duas rochas, depois segue o caminho e ira me achar la, vou te ensinar a ler o pergaminho la.', cid)
end
end
return true
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Configurando esse primeiro npc:
sempre no script onde estiver:
if(msgcontains(msg, 'ajuda'))
vai ser a fala do player onde esta em vermelho.
ainda no script sempre onde estiver:
selfSay('Entao, ouvi falar que tem um "pergaminho" muito poderoso, acredito que se conseguir ele podera aprender qualquer jutsu.', cid)
vai ser a fala do npc onde esta em vermelho.
onde estiver assim veja:
if(doPlayerRemoveItem(cid, 2396, 75) == TRUE) then
será a tag do item que o player terá de ter para fazer a saga ou seja o item que o npc vai remover de seu slot
onde está em laranja é a id do item que vai remover no meu caso é o pergaminho secreto entao essa é a id do meu pergaminho entao olhe o item que você vai querer.
onde esta:
doPlayerAddItem(cid,10135,1)
isso serve para tipo de recompença caso você queira colocar uma recompença para o player
onde está roxo. é a id do item que o player vai receber de recopença e onde esta verde. é a quantidade do item que o player vai receber.
doPlayerAddExperience(cid,1000)
Aqui é a quantidade de Experiencia que o player vai receber apos a missao ser cumprida.
PRONTO O PRIMEIRO NPC ESTÀ PRONTO VAMOS PARA O SEGUNDO.
no meu caso vai ser o IRUKA. entao na pasta npc eu vou criar um arquivo.xml
e vou colocar o script:

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Iruka" script="data/npc/scripts/irukasensei.lua" walkinterval="2000" speed="0" floorchange="0">
<health now="100" max="100"/>
<look type="219" head="19" body="113" legs="95" feet="115" addons="0"/>
<parameters>
<parameter key="message_greet" value="Humph.. haha.. seu espirito shinobi eh muito grande dentro de voce, vejo que recuperou o {pergaminho}." />
</parameters>
</npc>

depois na pasta script vou criar um arquivo.lua e vou por o seguinte script:

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, 'pergaminho')) then
selfSay('Muito bem shinobi, esse pergaminho eh muito antigo e uma {reliquia} secreta de nossa aldeia.', cid)
end
---------------------------------------------------------
if(msgcontains(msg, 'reliquia')) then
selfSay('Por sua bravura em combate quando me {devolver} esse pergaminho, te darei o titulo de Genin, por esse enorme espirito shinobi que ha dentro de voce.', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'devolver') and talkState[talkUser] == 1) then
if (getPlayerStorageValue(cid,89745) > 0) then
selfSay('Voce ja terminou essa missao.', cid)
else
if(doPlayerRemoveItem(cid, 2155, 1) == TRUE) then
setPlayerStorageValue(cid,89745,1)
doPlayerAddExperience(cid,7000)
doPlayerAddItem(cid,10140,1)
selfSay('Muito Bem Genin, de agora em diante tambem tera acesso a lugares que os guardas deixao apenas genin passarem, como recompensa tome esse livro, esta anotado varios jutsus nele...{voce leu o livro}... (you received 7000 points of experience)', cid)
else
selfSay('Ueh.. cade o pergaminho? nao me digas que perdeu? volte e pegue ele...', cid)
end
end
return true
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Configurando o Segundo NPC:
Não irei explicar umas coisas que ja expliquei no primeiro npc como
if(msgcontains(msg, 'pergaminho'))
e
selfSay('Muito bem shinobi, esse pergaminho eh muito antigo e uma {reliquia} secreta de nossa aldeia.', cid)
que são as falas do npc e do player.
if(doPlayerRemoveItem(cid, 2155, 1) == TRUE) then
aqui também ta explicado la em cima.
doPlayerAddExperience(cid,7000)
aqui também.
doPlayerAddItem(cid,10140,1)
aqui tabém.
é isso ae do que você mais precisa no npc ta explicado ae xD
Espero ter ajudado.

OBS: Como não tem como criar novo tópico na area de tutoriais de scripting eu coloquei aqui mesmo caso esteja em area errada por favor movam para min xD

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

  • 2 months later...
×
×
  • Criar Novo...