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.