segunda-feira, 11 de janeiro de 2010

Jogando tibia com wiimote



Faz um tempo já que prometi um tutorial lá no tibiabr. Agora que estou com um tempo livre vou postar. Na verdade é bem simples você vai precisar apenas de um programa, o GlovePIE. Não se esqueça que você também vai precisar de um bluetooth dongle e de um softwere de gerenciamento bluetooth. Eu uso o BlueSoleil mas ele é pago, contudo você pode usá-lo por 30 dias para testar. Os links estão a baixo, se não estiver seguro procure os programas em um site de sua confiança.

GlovePIE - http://www.baixaki.com.br/download/glovepie.htm
BluSoleil - http://www.baixaki.com.br/download/bluesoleil.htm

Para conectar o Wiimote ative o bluetooth do seu PC, fique apertando varias vezes os botões 1 e 2 do controle até que o computador encontre o encontre. Ele vai aparecer como dispositivo de interface humana e então o ative. Pronto agora ele esta conectado.

Depois de baixar o GlovePIE descompacte-o e abra o glovepie.exe. Ele já abre com uma janela pronta para começar a escrever o algoritmo. Quem tem conhecimentos de programação terá muita facilidade para lidar com o programa. Aos que são leigos: com um pouco de força de vontade da pra aprender a usar o programa. Há vários exemplos dentro da pasta WiimoteScripts e é uma boa idéia dar uma olhada neles, é bem provável que se ache algo para incorporar ao seu script. Vou colocar escrito aqui o algoritmo que eu usei, é só copiar e colar no programa.

debug = "X="+wiimote.Nunchuk.JoyX+' Y='+wiimote.Nunchuk.JoyY+' Z='+Wiimote.RawForceZ
//Botões
Key.Ctrl = Wiimote.Nunchuk.CButton
Key.F12 = Wiimote.Nunchuk.ZButton
Keyboard.F10 = Wiimote.Up
Keyboard.F11 = Wiimote.Down
Keyboard.F1 = Wiimote.Left
Keyboard.F3 = Wiimote.Right
Keyboard.Esc = Wiimote.Home
Key.F8 = Wiimote.Plus
key.Shift and Key.F1 = Wiimote.Minus
Key.F9 = Wiimote.Two
Key.F4 = Wiimote.One

//direções
//norte
if Wiimote.Nunchuk.JoyY < -0.9
key.NUMPAD8 = true
Wait 100 ms
key.NUMPAD8 = false
endif
//nordeste
if Wiimote.Nunchuk.JoyX > 0.6 and Wiimote.Nunchuk.JoyY < -0.6
key.NUMPAD9 = true
Wait 100 ms
key.NUMPAD9 = false
endif
//leste
if Wiimote.Nunchuk.JoyX > 0.9
key.NUMPAD6 = true
Wait 100 ms
key.NUMPAD6 = false
endif
//sudeste
if Wiimote.Nunchuk.JoyX > 0.6 and Wiimote.Nunchuk.JoyY > 0.6
key.NUMPAD3 = true
Wait 100 ms
key.NUMPAD3 = false
endif
//sul
if Wiimote.Nunchuk.JoyY > 0.9
key.NUMPAD2 = true
Wait 100 ms
key.NUMPAD2 = false
endif
//sudoeste
if Wiimote.Nunchuk.JoyX < -0.6 and Wiimote.Nunchuk.JoyY > 0.6
key.NUMPAD1 = true
Wait 100 ms
key.NUMPAD1 = false
endif
//oeste
if Wiimote.Nunchuk.JoyX < -0.9
key.NUMPAD4 = true
Wait 100 ms
key.NUMPAD4 = false
endif
//noroeste
if Wiimote.Nunchuk.JoyX < -0.6 and Wiimote.Nunchuk.JoyY < -0.6
key.NUMPAD7 = true
Wait 100 ms
key.NUMPAD7 = false
endif

//Aqui vai a parte do algoritmo do mouse, vale lembrar que essa parte não fui eu que fiz e também não sei o autor
Mouse.LeftButton = Wiimote.A
Mouse.RightButton = Wiimote.B

//Valor que faz a variavel ficar com valor 0
var.x = Wiimote.RawForceX -7.00
var.y = Wiimote.RawForceY -18.00
var.z = Wiimote.RawForceZ -7.00

//precision
var.sense0 = 500
var.thresh0x = 5
var.thresh0y = 2

var.sense = 300
var.threshx = 10
var.threshy = 5

var.sense2 = 100
var.thresh2x = 15
var.thresh2y = 8

var.sense3 = 50
var.thresh3x = 20
var.thresh3y = 12

//first sensitivity setting
//xaxis
if var.x > var.thresh0x
mouse.x = mouse.x - 1/var.sense0
endif
if var.x < -var.thresh0x
mouse.x = mouse.x + 1/var.sense0
endif

//yaxis
if var.z > var.thresh0y
mouse.y = mouse.y - 1/var.sense0
endif
if var.z < -var.thresh0y
mouse.y = mouse.y + 1/var.sense0
endif


//second sensitivity setting
//xaxis
if var.x > var.threshx
mouse.x = mouse.x - 1/var.sense
endif
if var.x < -var.threshx
mouse.x = mouse.x + 1/var.sense
endif

//yaxis
if var.z > var.threshy
mouse.y = mouse.y - 1/var.sense
endif
if var.z < -var.threshy
mouse.y = mouse.y + 1/var.sense
endif

//third sensitivity setting
//xaxis
if var.x > var.thresh2x
mouse.x = mouse.x - 1/var.sense2
endif
if var.x < -var.thresh2x
mouse.x = mouse.x + 1/var.sense2
endif

//yaxis
if var.z > var.thresh2y
mouse.y = mouse.y - 1/var.sense2
endif
if var.z < -var.thresh2y
mouse.y = mouse.y + 1/var.sense2
endif

//fourth sensitivity setting
//xaxis
if var.x > var.thresh3x
mouse.x = mouse.x - 1/var.sense3
endif
if var.x < -var.thresh3x
mouse.x = mouse.x + 1/var.sense3
endif

//yaxis
if var.z > var.thresh3y
mouse.y = mouse.y - 1/var.sense3
endif
if var.z < -var.thresh3y
mouse.y = mouse.y + 1/var.sense3
endif


Salve no seu PC com o nome que quiser depois aperte RUN então enjoy it. =)


AVANÇADO - O mouse é um problema nesse algoritmo acima, para meche-lo você não o aponta para o monitor, é preciso inclinar o controle para controlar o mouse. Há, contudo, outra maneira, mas é preciso o sensor infravermelho (que na verdade são apenas leds que emitem luzes em infravermelho, se você colocar uma câmera digital na frente dele da para ver as luzes) que se coloca em cima da TV. Se for usado o aparelho então o mouse ficar bem mais ágil pelo simples fato de que você irá apontar para onde ele deve ir. Se for usar o "sensor" n se esqueça de que ele deve estar conectado a uma fonte de energia. Eu já usei deste modo mas acho que n salvei o programa, de qualquer modo há um arquivo chamado Wiimouse IR.PIE dentro da pasta Wiimote Scripts. É só uma questão de fazer alguns ajustes e substituir no script acima.

Qualquer dúvida é só perguntar. Sugestões e criticas construtivas são muito bem vindas =)

Um comentário:

  1. Aew, no lugar da sensor bar pode colocar 2 velas acesas, uma do lado da outra, espaçadas em 20cm + ou -, ja vi fazerem isso e funciona.

    ResponderExcluir