Ir para conteúdo

[Armadilha] Npc Com Enigma. (Para Quests)


nailannob

Posts Recomendados

Não sei se existe um script igual, mas estou postando o meu.



Precisei de um npc que apresentasse um enigma.

 

Descrição:

Um npc que pode ser usado em quests. Pede ao player para resolver o enigma.

 

Função:

Se o player acertar a resposta poderá passar por um certo 'stone tile' ou porta.

Se o player errar a resposta será 'sumonado' um certo monstro em um certo SQM.

 

Vá até data/npc/ duplique um arquivo XML de algum npc.

Mude o nome para Servo e cole isto:

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

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

 

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

<look type="325" head="114" body="94" legs="114" feet="0" addons="2"/>

 

<parameters>

<parameter key="message_greet" value="Eai, soube que esta querendo entrar no {inferno}, para fazer uma quest."/>

</parameters>

 

</npc>

Legenda:



Na cor : Nome do NPC que será mostrado no OT.

 

 

Vá até data/npc/scripts/ duplique um arquivo.lua de algum script de outro npc.

Mude o nome para port_inf e cole isto:

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

 

selfSay('Você não está com medo de mim? Para entrar terá que me responder uma pergunta. Quer tentar quando? Diga: {agora} ou {nunca}.', cid)

talkState[talkUser] = 2

 

 

elseif talkState[talkUser] == 2 then

 

if msgcontains(msg, 'agora') then

selfSay('Qual a cor do cavalo branco de napoleão?', cid)

talkState[talkUser] = 3

 

elseif msgcontains(msg, 'nunca') then

 

selfSay('Okay, então diga {bye}.', cid)

talkState[talkUser] = 1

 

end

 

elseif talkState[talkUser] == 3 then

 

if msgcontains(msg, 'branca') then

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

setPlayerStorageValue(cid,31313,1)

selfSay('Você acertou, continue a quest! Vá para o Sul!', cid)

else

selfSay('Você já pode entrar. Não precisava vir aqui denovo.', cid)

end

 

else

doSummonCreature("Apocalypse",{x=0,y=0,z=0})

selfSay('Você errou, mate esse monstro. Depois tente denovo! haha!', cid)

end

 

 

end

 

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Legenda:



Na cor : O enigma que será falado pelo NPC.

Na cor : A resposta correta.

Na cor : Número da storage: no caso, numero do actionid que terá que ser adicionado no tile/porta.

Na cor : Nome do monstro que será 'sumonado' se o player errar a resposta.

Na cor : Cordenadas de onde aparecerá o monstro.

 

Depois disso, adicione o actionid no tile/porta que o player poderá passar só após responder o enigma.

No meu caso adicionei o actionid: 313131 em uma Stone Tile.

 

Agora é só importar o NPC no seu RME ou seu outro Map Editor.

E mudar as falas do NPC se quiser ou se precisar. -Mas tome cuidado com as palavras que precisam ser faladas.

 

Pronto! Seu npc está pronto!



Meu resultado:

post-258199-072657300 1281588611_thumb.jpg

 

Meu primeiro tópico e também meu primeiro script. Podem me corrigir e me xingar se estiver um lixo.

Se tiver algo inútil no código, me avisem. É que foi tudo baseado no Henricus.

Dúvida: Alguém sabe se há uma possibilidade/script onde o npc faria perguntas variadas aleatoriamente?

 

Falow. Espero que tenha ajudado alguém.

 

Créditos: 50% para mim e 50% para o cara que fez o Henricus (npc da Inquisition).

Link para o comentário
Compartilhar em outros sites

Hum para o seu primeiro script não está nada mal,

eu mesmo não sei meche muito em npc rs

 

o seu NPC é super util para quest,eu ja tive a mesma ideia sua

enfim Parabens e quero ver novos trabalhos seus por aqui!

 

 

REP +

 

abraços

Link para o comentário
Compartilhar em outros sites

Não testei, mas creio sei bem útil (podendo ser utilizado no deserto e tal...).

Parabéns pelo esforço, tanto de modificar o script quanto de trazer conteúdo ao XTibia.

 

O tópico ficou muito bem organizado também, bem explicado e tudo mais. E espero que continue assim.

Link para o comentário
Compartilhar em outros sites

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