Ir para conteúdo

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
https://xtibia.com/forum/topic/139262-armadilha-npc-com-enigma-para-quests/
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
https://xtibia.com/forum/topic/139262-armadilha-npc-com-enigma-para-quests/#findComment-919863
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
https://xtibia.com/forum/topic/139262-armadilha-npc-com-enigma-para-quests/#findComment-919945
Compartilhar em outros sites

Nossa Otimo script! gostei do que vc falou ali em cima

Vou postar mais coisas, assim que produzir.

 

Por que copiar nem tem graça Posted Image

 

ta certo copia n tem graça!! REP+

Link para o comentário
https://xtibia.com/forum/topic/139262-armadilha-npc-com-enigma-para-quests/#findComment-919995
Compartilhar em outros sites

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