NO

Npc Que Joga Jokenpô

Por Nostradamus, 11 de jun. de 2007 em NPCs, monsters e raids

script
29
6.7k
NostradamusN
11 de junho de 2007 às 10:37

Explicação

 

Já jogou Jokenpô? Também é chamado de pedra, tesoura ou papel.

O jogo consiste no seguinte:

 

Uma pessoa escolhe pedra, tesoura ou papel.

O adversário faz o mesmo.

No mesmo tempo ambos mostram o escolhido e o resultado é o seguinte:

 

Tesoura ganha de papel

Tesoura perde de pedra

Papel ganha de pedra

 

NPC

 

Bom, o npc faz isso. Mas a diferença é que ele não mostrará as mãos, mas assim que você falar pedra, tesoura ou mesmo papel, ele falará o dele. Mas ele não "roubará" já que ele escolherá randômicamente.

 

 

Crie um arquivo chamado jokenpo.lua em: data\npc\scripts

 

------ NPC Jokenpô -------------
-- Data de criação:
--11/06/07 -> 10:30 - 10:32 
--Autor do script: Nostradamus
--Tipo: Release
---------------------------------------

-- Configuração-------------------
local price_to_play = 1 -- preço para se jogar em gps
local price = 200 -- preço para aposta
---------------------------------------
local focus = 0
local talk_start = 0
local npc_random = math.random(1, 3)
-- sendo 1 = pedra
-- sendo 2 = tesoura
-- sendo 3 = papel

function onCreatureAppear(creature) end
function onCreatureTurn(creature) end
function onCreatureChangeOutfit(creature) end

function onCreatureDisappear(cid, pos)
  if focus == cid then
	  selfSay('Tchau né!?')
	  focus = 0
	  talk_start = 0
  end
end





function msgcontains(txt, str)
  return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end


function onCreatureSay(cid, type, msg)
  msg = string.lower(msg)

  if (msgcontains(msg, 'hi') and focus == 0) and getDistanceToCreature(cid) < 4 then
	  selfSay('Olá ' .. getCreatureName(cid) .. '! O que acha de apostarmos ' .. price .. 'gps numa disputa de jokenpô? Se quiser, escolha "pedra", "tesoura" ou "papel".')
	  focus = cid
	talk_state = 0
	  talk_start = os.clock()

  elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
	  selfSay(getCreatureName(cid) .. ', por favor aguarde sua vez.')

  elseif focus == cid then
	talk_start = os.clock()

	if msgcontains(msg, 'pedra') and talk_state == 0 then
		talk_start = os.clock()
		talk_state = 0
			if doPlayerRemoveMoney(cid, price_to_play) == 1 then
					if  npc_random == 2 then
						selfSay('Parabéns! Você acaba de ganhar ' .. price .. '!')
						doPlayerAddMoney(cid, price)
					elseif npc_random == 3 then
						selfSay('Que pena, você perdeu  ' .. price .. '. Mais sorte da próxima vez.')
						doPlayerRemoveMoney(cid, price)
					else 
						selfSay('Empatamos!')
					end

			talk_state = 1
			else
			selfSay('Você não tem dinheiro o suficiente para jogar.')
			end				

		talk_state = 0
	end

	if msgcontains(msg, 'tesoura') and talk_state == 0 then
		talk_start = os.clock()
		talk_state = 0
			if doPlayerRemoveMoney(cid, price_to_play) == 1 then
					if  npc_random == 3 then
						selfSay('Parabéns! Você acaba de ganhar ' .. price .. '!')
						doPlayerAddMoney(cid, price)
					elseif npc_random == 1 then
						selfSay('Que pena, você perdeu  ' .. price .. '. Mais sorte da próxima vez.')
						doPlayerRemoveMoney(cid, price)
					else 
						selfSay('Empatamos!')
					end

			talk_state = 1
			else
			selfSay('Você não tem dinheiro o suficiente para jogar.')
			end				

		talk_state = 0
	end

	if msgcontains(msg, 'papel') and talk_state == 0 then
		talk_start = os.clock()
		talk_state = 0
			if doPlayerRemoveMoney(cid, price_to_play) == 1 then
					if  npc_random == 1 then
						selfSay('Parabéns! Você acaba de ganhar ' .. price .. '!')
						doPlayerAddMoney(cid, price)
					elseif npc_random == 2 then
						selfSay('Que pena, você perdeu  ' .. price .. '. Mais sorte da próxima vez.')
						doPlayerRemoveMoney(cid, price)
					else 
						selfSay('Empatamos!')
					end

			talk_state = 1
			else
			selfSay('Você não tem dinheiro o suficiente para jogar.')
			end				

		talk_state = 0
	end

	if msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
		selfSay('Até mais, ' .. getCreatureName(cid) .. '!')
		focus = 0
		talk_start = 0
	end
  end
end





function onThink()
doNpcSetCreatureFocus(focus)
  if (os.clock() - talk_start) > 45 then
	  if focus > 0 then
		  selfSay('Próximo por favor...')
	  end
		  focus = 0
  end
if focus ~= 0 then
	if getDistanceToCreature(focus) > 3 then
		selfSay('Antes de sair, é educado a pessoa falar tchau!')
		focus = 0
	end
end
end

 

A variável price_to_play determina o preço para se jogar.

A variável price determina o valor da aposta.

 

Agora vamos fazer o XML do NPC em: data\npc\

 

Crie um arquivo chamado Gamer2.xml

 

<?xml version="1.0"?>

<npc name="Gamer2" script="data/npc/scripts/jokempo.lua" autowalk="0" floorchange="0">

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

<look type="133" head="20" body="39" legs="45" feet="7"/>

</npc>

 

Aí depois, é só mudar o nome do npc caso queira, e mudar a aparência do mesmo à gosto.

 

Até mais, espero que tenham gostado.

 

Não testei, mas provavelmente irá funcionar.

Editado Junho 11 por Nostradamus

Raphael LionR
11 de junho de 2007 às 10:38

Boa Yuji...

Não sabia de seus dotes como scripter.

 

Abraço,

Raphael Lion.

JvchequerJ
14 de junho de 2007 às 05:58

Mais 1 excelente NPC (Y)

 

Bem legal esse, mais eu não sou muito bom em jokenpô :X

 

P.S: O NPC sempre roba :p

 

Cya

14 de junho de 2007 às 09:29

Aqui no XTibia só tem gente boa, primeiro o npc ladrão, depois o npc policial e agora esse!!Muito ROX, o xtibia é muito bom mesmo!!!Adorei o NPC vo coloca no meu ot, com ele nosso "ibope"(rsrs) vai almentar

 

VLW

Felipe MoraesF
14 de junho de 2007 às 09:50

nossa kra,vc sempre trazendo coisas novas,e interessantes...

mtu bacana esse npc ai,da ate pra apostar com ele :)...

parabens...mtu rox msm

NostradamusN
14 de junho de 2007 às 20:49

@JV Chequer

Quem treinou esse NPC foi o próprio Chuck Norris, portanto ele não rouba e sim ganha todas :)

 

(NOTA: Na verdade a chance é de 50% para cada)

LordfireL
14 de junho de 2007 às 21:18

UAU

Você tem esse dom mais do que ninguém

Nunca vi NPCs melhores que os seus

Aí também tem aquele do Black Jack né ;)

MustorzeM
15 de junho de 2007 às 16:54

suahsiasuhaish < q sux!!!!!!!!!!!!

NostradamusN
15 de junho de 2007 às 22:24

@Mustorze

Porque não mostra suas "incríveis" habilidades e faz melhor? :)

OakleyO
15 de junho de 2007 às 23:02

LOL

 

RoXXXX

 

muito loko isso véi

 

parabens aew c funfar pq vc flo q nem testo

 

mais muito loko aew

 

//OAkley

ExordiumE
16 de junho de 2007 às 13:21

hudsahuhusdhua

isso sim eh inovador, muito bom :D

1 mês depois...
raul90R
02 de julho de 2007 às 16:17

nus meos tempos de muleke adorava jogar jokempo

 

mt bom cara

xD

 

 

eh soh por papel q ganha xP

Editado Julho 3 por Raul90

BloodsB
02 de julho de 2007 às 18:11

Eu abri um server aqui em casa e puis ele.... bem loco vlw ai.

Obs: O npc me robo 90k mas eu ganhei 100 gp xD

1 mês depois...
kaioK
26 de agosto de 2007 às 23:42

putz,que loko hahaha...só falta npc de corrida agora XD

1 mês depois...
vashroxV
07 de setembro de 2007 às 11:45

Parabens cara,continue assim.