Ir para conteúdo

Jerom's Family Necklace Quest


MUTAN0

Posts Recomendados

Como ta dificil encontrar missoes em OtServs, hoje eu trago em primeira mão uma missao pro Seu OT.

Os scripts são meus, então eu peço que não retirem os créditos.

Não tirem daqui para botar em outro forum sem minha autorização, pois se eu achar isso copiado com certeza irei reportar.

 

IDs principais;

Rake (ID: 2549)

Papagaio na arvore (ID: 6094)

Piano (ID: 2080 - 2083)

 

Recomendo para:

TFS 0.3 - 8.31

Ou mais.

 

Essa quest, é uma propria, mas a ideia veio de uma quest do global, onde você ajuda uma menina a resgatar um anel.

 

Introdução da quest:

O player chega no NPC Ana, que está com alguns problemas com um colar de sua familia.

O player promete ajuda-la, e então ela relata ter entrado um papagaio em seu quarto e roubado esse colar.

Ela ainda diz que o papagaio voou para uma montanha, e pode estar em alguma arvore, por isso ela da ao player uma Rake para poder alcançar o papagaio.

imagem1.jpg

O player recebe o Rake, e vai em busca do papagaio...Ao acha-lo, ele "cutuca" o papagaio na arvore com a Rake.

O player entao perde a Rake, e ganha o colar perdido, que seria o colar que Ana procura tao desesperadamente.

imagem2.jpg

O player volta até Ana, e mostra que conseguiu seu colar roubado pelo papagaio.

Ela diz que não tem algo a dar como recompensa, mas diz que se o player tocar em seu piano ele pode ter uma surpresa.

imagem3.jpg

O player vai e toca no piano, ao tocar ele é lançado em uma sala com um baú, que tem sua recompensa.

Abre um bau, ganha a recompensa.

Entra no Teleport ao lado, e sai feliz da vida com sua missão feita.

sala_reward.jpg

 

O colar que vou usar é um que já tem em seu OT, e ele é assim:

You see jerom's family necklace.

It weighs 6.30 oz.

---------------------------------------------------

Agora, mão na massa;

 

Primeiro vamos criar o NPC.

data\npc: Crie um arquivo XML, nomeie para Ana (nome da nossa NPC).

Dentro, isso:

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

<npc name="Ana" script="data/npc/scripts/necklace.lua" walkinterval="2000" floorchange="0">

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

<look type="140" head="97" body="15" legs="12" feet="15" addons="0"/>

<parameters>

<parameter key="message_greet" value="Hi |PLAYERNAME|."/>

</parameters>

</npc>

data\npc\scripts: Crie um arquivo LUA, renomeie para necklace.

Dentro, isso:

-- Script by MUTAN0 --

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, 'mission') then

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

selfSay('A parrot came into my room and took the collar of the family...', cid)

selfSay('...My father will be angry if you know that I lost that necklace which went through many generations...', cid)

selfSay('...You would be able to climb the mountain and rescue the necklace, right?', cid)

talkState[talkUser] = 1

elseif getPlayerStorageValue(cid,10002) == 1 then

selfSay('Managed to recover my lost necklace with a parrot ??', cid)

talkState[talkUser] = 2

elseif getPlayerStorageValue(cid,10002) == 2 then

selfSay('Thank you for your help.', cid)

talkState[talkUser] = 0

focus = 0

end

 

elseif talkState[talkUser] == 1 then

if msgcontains(msg, 'yes') then

selfSay('Take that, will serve to achieve the parrot if he is in a tree...', cid)

selfSay('...When you get the necklace, bring back to me, please. Now go.', cid)

talkState[talkUser] = 2

setPlayerStorageValue(cid,10002,1)

doPlayerAddItem(cid, 2549)

else

selfSay('Good Bye then.', cid)

talkState[talkUser] = 0

focus = 0

end

 

 

elseif talkState[talkUser] == 2 then

if msgcontains(msg, 'yes') then

if getPlayerStorageValue(cid,10001) >= 1 then

if getPlayerItemCount(cid,8584) >= 1 then

if doPlayerRemoveItem(cid,8584,1) == 1 then

setPlayerStorageValue(cid,10005,1)

setPlayerStorageValue(cid,10002,2)

selfSay('As I am not what you give as a reward ... touch my piano, and you have a surprise.', cid)

end

else

selfSay('You don\'t have the necklace of my family.', cid)

talkState[talkUser] = 0

end

else

selfSay('Find a parrot, Must be in the mountains, in a tree.', cid)

talkState[talkUser] = 0

end

elseif msgcontains(msg, 'no') then

selfSay('When you have a necklace come back here, please.', cid)

talkState[talkUser] = 0

end

 

return true

end

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

NPC tá criado, agora vamos para as Actions.

 

Precisamos criar a Rake, para o player alcançar o papagaio na arvore;

data\actions\scripts\tools: Crie um arquivo LUA, renomeie para rake.

Dentro isso:

-- Script by MUTAN0 --

function onUse(cid, item, fromPosition, itemEx, toPosition)

 

treepos = {x=toPosition.x, y=toPosition.y, z=toPosition.z}

 

 

if itemEx.itemid == 0 then

return 0

end

 

if itemEx.itemid == 6094 and treepos.x == 443 and treepos.y == 679 and treepos.z == 7 then

if getPlayerStorageValue(cid,10002) >= 1 then

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

doPlayerAddItem(cid, 8584)

doRemoveItem(item.uid, 1)

doSendMagicEffect(toPosition, CONST_ME_POFF)

setPlayerStorageValue(cid,10001,1)

else

doPlayerSendTextMessage(cid,22,"Sorry, not possible.")

end

else

doPlayerSendTextMessage(cid,22,"Sorry, not possible.")

end

end

return 1

end

treepos.x == 443 and treepos.y == 679 and treepos.z == 7 then

Aqui voce muda as coordenadas. Essas coordenadas são onde fica a arvore com o papagaio.

No meu caso fica em x=443,y=679,z=7.

Em Actions.XML, adicione:

<action itemid="2549" script="tools/rake.lua"/>

 

Agora por ultimo, mas não menos importante, o Piano.

data\actions\scripts\other: Crie um arquivo LUA chamado piano.

Dentro, isso:

-- Script by MUTAN0 --

newpos = {x=239, y=226, z=8}

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

if item.uid == 10010 then

if getPlayerStorageValue(cid,10005) >= 1 then

doTeleportThing(cid, newpos)

doSendMagicEffect(fromPosition, CONST_ME_SOUND_YELLOW)

else

doPlayerSendTextMessage(cid,22,"Sorry, not possible.")

end

return TRUE

end

return FALSE

end

{x=239, y=226, z=8}

Aqui é a coordenada da sala da recompensa, onde o player é teleportado ao acabar a missão e clicar no piano.

Não esqueça de criar a sala da recompensa, comforme as coordenadas, e nessa sala botar o chest com a quest e o teleport para sair da sala.

10010

O UniqueID que vai no Piano.

 

Dicas:

Faça uma casa para botar a menina Ana.

A arvore com o papagaio bote em uma montanha perto da casa dela, se for sua opção bote alguns bixos pelo caminho da montanha.

 

Valeu pessoal, espero que vocês curtam.

Eu curti bastante :smile_positivo:

Valeu, abraços.

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

Gostei.

 

Tanto do script (Elaboração) quanto ao tópico (Organização).

 

Irei utilizar tal em meu próximo ATS, que em breve creio eu, será lançado.

 

 

Parabéns, e continue trazendo conteúdo para a comunidade X-Tibia.

 

//Walcker~

Link para o comentário
Compartilhar em outros sites

@Up:

Sem problemas.

Apenas troque essa parte:

elseif talkState[talkUser] == 2 then

if msgcontains(msg, 'yes') then

if getPlayerStorageValue(cid,10001) >= 1 then

if getPlayerItemCount(cid,8584) >= 1 then

if doPlayerRemoveItem(cid,8584,1) == 1 then

setPlayerStorageValue(cid,10005,1)

setPlayerStorageValue(cid,10002,2)

selfSay('As I am not what you give as a reward ... touch my piano, and you have a surprise.', cid)

end

 

Por essa:

elseif talkState[talkUser] == 2 then

if msgcontains(msg, 'yes') then

if getPlayerStorageValue(cid,10001) >= 1 then

if getPlayerItemCount(cid,8584) >= 1 then

if doPlayerRemoveItem(cid,8584,1) == 1 then

doPlayerAddItem(cid, itemid, count/subtype)

setPlayerStorageValue(cid,10002,2)

selfSay('Thanks for the help, take this gift as a form of gratitude.', cid)

end

 

@yasha, Slinix:

Poxa, muuuuuuito obrigado pelo carinho e por terem usado.

Gosto muito quando consigo ajudar.

 

 

Valeu á todos.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 1 month later...

Em relação ao script, está perfect melhor impossivel alem de ter a devida missão tem no caso a opção (no) que em certos scripts que eu vejo em outros lugares são inesistentes..Eu irei aproveita-lo bem em meu ats tbm mais só que irei modificar a parte do piano para abrir uma passagen secreta.

 

 

Só uma pergunta.. No caso se eu quiser edita-lo, poderia colocar mais missões para o player fazer nesse mesmo script? (No caso esse script tem 3 partes, daria pra fazer com o mesmo mais de 4 ou 5?)... Pois já tentei fazer uma vez com outro script e não tive sucesso, Se puder dar suporte a isso agradeço..

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...