PedroWarlock Posted January 15, 2012 Share Posted January 15, 2012 Hello! I would like to be sent the 7 key 2 times, so I tried it with the help of this script: (I'm Brazilian and not speak much English ... if I said something wrong, then correct me) expandcollapse popup;================================================================ ; Identificação dos joystick's 0=joy2, 1=joy2, 2=joy3, 3=joy4... ;================================================================ If Not FileExists(".\Joysticks.ini") Then; verifica se o arquivo existe e se não existir cria o arquivo FileWriteLine(".\Joysticks.ini", "[identificação] --> Se não reconhecer use o comando DXDIAG para ver a ID do seu joystick "); grava no arquivo FileWriteLine(".\Joysticks.ini", ""); grava uma linha em branco FileWriteLine(".\Joysticks.ini", "Joystick_1 = 0"); grava ID do joystick 1 FileWriteLine(".\Joysticks.ini", "Joystick_2 = 1"); grava ID do joystick 2 EndIf Local $tJOYINFO1, $stSTR; informações dos joysticks Local $sJOYID1 = IniRead(".\Joysticks.ini", "identificação", "Joystick_1", ""); identifica o joystick 1 ;Local $sJOYID2 = IniRead(".\Joysticks.ini", "identificação", "Joystick_2", "") ; identifica o joystick 2 $stSTR = "int x;int y;int z;int buttons" $tJOYINFO1 = DllStructCreate($stSTR); Cria uma estrutura a ser utilizada em DllCall p/ joystick 1 ;$tJOYINFO2 = DllStructCreate($stSTR); Cria uma estrutura a ser utilizada em DllCall p/ joystick 2 ; Quando usar operações binárias tipo: ; --> If BitAnd($Val, 128) ; use dessa forma: ; --> If $Val - 128 > 0, é duas vezes mais rápida!!! ; Switch é rápido, Select também é (porém mais lento) e If é extremamente lento (principalmente em uma única linha!!!) While 1 DllCall("winmm.dll", "int", "joyGetPos", "int", $sJOYID1, "ptr", DllStructGetPtr($tJOYINFO1)); solicita função dll $vBT_Joy1 = DllStructGetData($tJOYINFO1, "buttons"); Retorna os dados dos botões player 1 Select Case $vBT_Joy1 - 1 = 0 ; BitAND($vBT_Joy1, 1) MsgBox("", "OK", "O botão 1 do joystick 1 foi pressionado", 2);botão 1 Case $vBT_Joy1 - 2 = 0 ; BitAND($vBT_Joy1, 2) MsgBox("", "OK", "O botão 2 do joystick 1 foi pressionado", 2);botão 2 Case $vBT_Joy1 - 4 = 0 ; BitAND($vBT_Joy1, 4) MsgBox("", "OK", "O botão 3 do joystick 1 foi pressionado", 2);botão 3 Case $vBT_Joy1 - 8 = 0 ; BitAND($vBT_Joy1, 8) MsgBox("", "OK", "O botão 4 do joystick 1 foi pressionado", 2);botão 4 Case $vBT_Joy1 - 16 = 0 ; BitAND($vBT_Joy1, 16) MsgBox("", "OK", "O botão 5 do joystick 1 foi pressionado", 2);botão 5 Case $vBT_Joy1 - 32 = 0 ; BitAND($vBT_Joy1, 32) MsgBox("", "OK", "O botão 6 do joystick 1 foi pressionado", 2);botão 6 Case $vBT_Joy1 - 64 = 0 ;BitAND($vBT_Joy1, 64) Send ($vBT_Joy1 - 64 = 0) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<!!!!!!!!! tried to put it here, but it did not work!!!!!!!!!!!!!! sleep (300) send ($vBT_Joy1 - 64 = 0) ;MsgBox("", "OK", "O botão 7 do joystick 1 foi pressionado", 2);botão 7 Case $vBT_Joy1 - 128 = 0 ; BitAND($vBT_Joy1, 128) MsgBox("", "OK", "O botão 8 do joystick 1 foi pressionado", 2);botão 8 Case $vBT_Joy1 - 256 = 0 ; BitAND($vBT_Joy1, 256) MsgBox("", "OK", "O botão 9 do joystick 1 foi pressionado", 2);botão 9 EndSelect ;$iY1 = DllStructGetData($tJOYINFO1, "y"); Retorna os dados cima e baixo player 1 ;$iX1 = DllStructGetData($tJOYINFO1, "x"); Retorna os dados esquerda e direita player 1 ;Select ; Case $iY1 = 0 ; MsgBox("", "OK", "a seta para cima do joystick 1 foi pressionada", 2); cima player 1 ; Case $iY1 = 32767 ; MsgBox("", "OK", "a seta para baixo do joystick 1 foi pressionada", 2); 32767 = joystick físico e 35999 = joystick virtual ; Case $iX1 = 0 ; MsgBox("", "OK", "a seta para esq. do joystick 1 foi pressionada", 2); esquerda player 1 ; Case $iX1 = 32767 ; MsgBox("", "OK", "a seta para dir. do joystick 1 foi pressionada", 2); 32767 = joystick físico e 35999 = joystick virtual ;EndSelect ; DllCall("winmm.dll", "int", "joyGetPos", "int", $sJOYID2, "ptr", DllStructGetPtr($tJOYINFO2)); solicita função dll ; $vBT_Joy2 = DllStructGetData($tJOYINFO2, "buttons"); Retorna os dados dos botões player 2 ; Select ; Case $vBT_Joy2 - 1 > 0 ; BitAND($vBT_Joy1, 1) ; MsgBox("", "OK", "O botão 1 do joystick 2 foi pressionado", 2);botão 1 ; Case $vBT_Joy2 - 2 > 0 ; BitAND($vBT_Joy1, 2) ; MsgBox("", "OK", "O botão 2 do joystick 2 foi pressionado", 2);botão 2 ; Case $vBT_Joy2 - 4 > 0 ; BitAND($vBT_Joy1, 4) ; MsgBox("", "OK", "O botão 3 do joystick 2 foi pressionado", 2);botão 3 ; Case $vBT_Joy2 - 8 > 0 ; BitAND($vBT_Joy1, 8) ; MsgBox("", "OK", "O botão 4 do joystick 2 foi pressionado", 2);botão 4 ; Case $vBT_Joy2 - 16 > 0 ; BitAND($vBT_Joy1, 16) ; MsgBox("", "OK", "O botão 5 do joystick 2 foi pressionado", 2);botão 5 ; Case $vBT_Joy2 - 32 > 0 ; BitAND($vBT_Joy1, 32) ; MsgBox("", "OK", "O botão 6 do joystick 2 foi pressionado", 2);botão 6 ; Case $vBT_Joy2 - 64 > 0 ; BitAND($vBT_Joy1, 64) ; MsgBox("", "OK", "O botão 7 do joystick 2 foi pressionado", 2);botão 7 ; Case $vBT_Joy2 - 128 > 0 ; BitAND($vBT_Joy1, 128) ; MsgBox("", "OK", "O botão 8 do joystick 2 foi pressionado", 2);botão 8 ; Case $vBT_Joy2 - 256 > 0 ; BitAND($vBT_Joy1, 256) ; MsgBox("", "OK", "O botão 9 do joystick 2 foi pressionado", 2);botão 9 ; EndSelect ; $iY2 = DllStructGetData($tJOYINFO2, "y"); Retorna os dados cima e baixo player 2 ; $iX2 = DllStructGetData($tJOYINFO2, "x"); Retorna os dados esquerda e direita player 2 ; Select ; Case $iY2 = 0 ; MsgBox("", "OK", "a seta para cima do joystick 2 foi pressionada", 2); cima player 1 ; Case $iY2 > 32767 ; MsgBox("", "OK", "a seta para baixo do joystick 2 foi pressionada", 2); 32767 = joystick físico e 35999 = joystick virtual ; Case $iX2 = 0 ; MsgBox("", "OK", "a seta para esq. do joystick 2 foi pressionada", 2); esquerda player 1 ; Case $iX2 > 32767 ; MsgBox("", "OK", "a seta para dir. do joystick 2 foi pressionada", 2); 32767 = joystick físico e 35999 = joystick virtual ; EndSelect ; GUIGetMsg() por si só, já deixa a CPU aliviada e não rouba tempo do usuário... GUIGetMsg() ; Sleep(50); dá um intervalo de 50 milisegundos WEnd $tJOYINFO1 = 0;libera a memoria alocada pela estrutura do joystick 1 $tJOYINFO2 = 0 ;libera a memoria alocada pela estrutura do joystick 2 Exit (0); encerra o script Link to comment Share on other sites More sharing options...
Developers Jos Posted January 15, 2012 Developers Share Posted January 15, 2012 Have you followed the advice I gave in your previous topic on this item? SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now