Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

QUIZ

Fala, grande reino! Tudo beleza?

Eu estava aqui a deriva, sem nada para fazer, quando um colega me chamou no msn e pediu para eu revisar um código que ele havia feito para um NPC. A função era bem simples, o tal NPC iria fazer perguntas ao jogador que devia responder-las corretamente, caso errasse, duas criaturas configuráveis iriam aparecer.

Quando eu dei uma olhada no código, tomei um grande susto, era algo caótico, tudo embaralhado. Se você quer dar uma olhada, tenha certeza de ter um coração forte.

Mostrar conteúdo oculto

Claro que eu, como scripter, não podia deixar algo tão caótico reinar sobre os servidores alheios. Decidi então apagar tudo, recriar o NPC do zero, preservando a função que ele deveria desempenhar. Veja abaixo!
INSTALAÇÃO E CONFIGURAÇÃO data/npc/scripts

--[[

NPC de Perguntas e Respostas

Criado por Bruno Lopes / Lpz


© 2011 TibiaKing

]]--


local focuses = {}

local talk_start = 0


local topic = {}


local var = 0


local quiz = {

	[1] = {"What is the ring of mana?", "energy ring"},

	[2] = {"Who sells addons?", "raphael"}

}


local monster = {"Orc", 2}


local prize = {

	question = 100,

	all = 10000

}


function onCreatureSay(cid, type, msg)

	local msg = msg:lower() or ""

	if getNpcDistanceTo(cid) > 3 then

		return false

	end


	if doMessageCheck(msg, {"hi", "hello"}) and not(isFocused(cid, focuses)) then

		selfSay("Hello, ".. getCreatureName(cid) ..". Can you answer my questions? heh...", cid)

		addFocus(cid, focuses)

		selfFocus(cid)

		topic[cid] = 100

		talk_start = os.clock()

	elseif doMessageCheck(msg, {"hi", "hello"}) and #focuses ~= 0 then

		selfSay("Sorry, ".. getCreatureName(cid) ..". I am talking with another person, wait!", cid)

	end


	if doMessageCheck(msg, {"bye", "farewell", "goodbye"}) and isFocused(cid, focuses) then

		selfSay("Bye-bye, hehe!", cid)

		removeFocus(cid, focuses)

	end


	if topic[cid] == 100 then

		if doMessageCheck(msg, "yes") then

			selfSay("To start my challenge, just say {ready}. I will ask you some questions.", cid)

			topic[cid] = 1

		elseif doMessageCheck(msg, "no") then

			selfSay("Huh? Why are you here then?", cid)

			removeFocus(cid, focuses)

			topic[cid] = 0

		end

	elseif topic[cid] == 1 then

		if var == 0 then

			if doMessageCheck(msg, "ready") then

				var = 1

				selfSay(quiz[var][1], cid)

			end

		elseif var >= 1 then

			if var <= #quiz then

				if doMessageCheck(msg, quiz[var][2]) then

					selfSay("CORRECT!", cid)

					doPlayerAddMoney(cid, prize.question)

					var = var+1

					if var > #quiz then

						selfSay("CONGRATULATIONS! YOU HAVE FINISHED ALL QUESTIONS!", cid)

						doPlayerAddMoney(cid, prize.all)

					else

						selfSay(quiz[var][1], cid)

					end

				else

					selfSay("YOU HAVE WRONG MY QUESTION! GUARDS, COME HERE!", cid)

					var = 0

					topic[cid] = 0

					removeFocus(cid, focuses)

					for i = 1, monster[2] do

						doCreateMonster(monster[1], getNpcPos())

					end

				end

			end

		end

	end	

	return true

end


function onThink()

	for _, cid in ipairs(focuses) do

		if isPlayer(cid) and isFocused(cid, focuses) then

			if os.clock() > (talk_start + 180) then

				talk_start = 0

				selfSay("Hmph!")

				closeShopWindow(cid)

				removeFocus(cid, focuses)

			elseif getNpcDistanceTo(cid) > 3 then

				talk_start = 0

				selfSay("How Rude!")

				closeShopWindow(cid)

				removeFocus(cid, focuses)

			end

		end

	end

	lookAtFocus(focuses)

end

Bom, eu fiz o arquivo .lua que você iria associar a algum npc de seu servidor, deixo o arquivo .xml por sua conta. Como é um NPC que faz perguntas, você pode configurar o seu NPC do jeito que você quiser, com as perguntas que você quiser. Veja abaixo como proceder:

local quiz = {

	[1] = {"What is the ring of mana?", "energy ring"},

	[2] = {"Who sells addons?", "raphael"}

}

Para adicionar novas perguntas, basta você colocar uma vírgula na última linha e criar uma nova linha conforme o modelo:

local quiz = {

	[1] = {"What is the ring of mana?", "energy ring"},

	[2] = {"Who sells addons?", "raphael"},

        [3] = {"PERGUNTA", "RESPOSTA"},

        [4] = {"PERGUNTA", "RESPOSTA"}

}

Há também algumas outras configurações básicas para você fazer, as criaturas que irão aparecer caso o jogador erre a pergunta e a quantidade. Também você pode configurar a quantidade de dinheiro que o jogador ganha quando acerta uma pergunta e a quantidade de dinheiro do prêmio final.

local monster = {"Orc", 2}


local prize = {

	question = 100,

	all = 10000

}


OBSERVAÇÕES Para evitar quaisquer erros no script, substitua o conteúdo de npc.lua em data/npc/lib por este que estou passando abaixo:


É isso aê, galerinha do tibiaKing!

Até o próximo tópico. :)

Mostrar conteúdo oculto

Editado por Lpz (veja o histórico de edições)

  • Respostas 22
  • Visualizações 5.6k
  • Created
  • Última resposta

Top Posters In This Topic

Postado

Cara, ficou muito bom mesmo o resultado!

Como dito, fácil de configurar!

Reputado!

@Lpz

Bem vindo a equipe dos Aprendizes! ;)

E-mail para contato: gigo_xl@hotmail.com

Quer ter um fórum mais organizado? Cumpra as regras!

EU VOLTEI GAROTAS!

31/12/2011

Atenciosamente,

Guilherme Salviati.

  • 2 weeks later...
Postado

que putaria é essa cara?agora fikei irrato que bosta seu ripperzinho vc q criou?AHAHAHAHAHAHAHAHAA

MENTIRA!

esse script eu usava em 2010 no meu otserver, tenho imagens no blog dele irei tentar procurar na net é q deletei o site! esse npc peguei no tibiaking e lembro que é igualzinho !

ta uma putaria isso podem procurar em npc lá na area de script do tibiaking q tem esse npc!!

aff

OLHA ESSES APRENDIZES Q VC COLOCAM, POXA AGORA FIKEI IRRATO QUE ISSO PORFAVOR REMOVEM O TOPICO E FALEI COM O COLEX ELE N AUTORIZOU A ELE POSTAR!

LINK ORIGINAL:

http://www.tibiaking.com/forum/topic/23955-npc-quiz-tutorial/

FOI VOCE QUE CRIOU? SEU RIPPERZINHO.. NAO SABE NEM RIPPAR!!

VC NAO MERECE APRENDIZ!

Editado por DevilMoon (veja o histórico de edições)

cachorro_magro.jpg      

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo