SCRIPTS TARGET TM WARTHOG etc
#76
moi je recherche quelqu'un pour faire joujou avec Target et le LUA de DCS A-10c. J'ai reussi a extraire des données de FC2, a les afficher dans le output window de Target, mais sous A-10, mon LUA donne rien du tout, et le lua , c'est pas mon truc !
Dresseur de cochon (sauvage)
script & boutons souris ?
#77j'ai cherché mais pas trouvé... et ça me surprend si ça n'est pas possible parce que ça existait dans foxy...
peut-on et comment faire pour émuler les boutons souris gauche droit et centre dans Target script ?
peut-on et comment faire pour émuler les boutons souris gauche droit et centre dans Target script ?
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
#78
MapKey(&Joystick, S1, PULSE+MOUSE_RIGHT);
MapKey(&Joystick, H4P, PULSE+MOUSE_CENTER);
et enfin MOUSE_LEFT
<en utilisant le bouton view script de la GUI, tu trouvais ça en 5 secondes :-)
MapKey(&Joystick, H4P, PULSE+MOUSE_CENTER);
et enfin MOUSE_LEFT
<en utilisant le bouton view script de la GUI, tu trouvais ça en 5 secondes :-)
Dresseur de cochon (sauvage)
#79
pas pensé...
merci d'aider les handicapés du neurone !
merci d'aider les handicapés du neurone !
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
probleme compilation script
#80je comprends pas pourquoi il renvoie une erreur :
" struct field expected "
avec ces deux lignes :
MapKey(&RMFD, OSB01, CHAIN( LOCK+DOWN+KP., DOWN+KP8, LOCK));
MapKey(&RMFD, OSB02, CHAIN( LOCK+UP+KP8, UP+KP., LOCK));
" struct field expected "
avec ces deux lignes :
MapKey(&RMFD, OSB01, CHAIN( LOCK+DOWN+KP., DOWN+KP8, LOCK));
MapKey(&RMFD, OSB02, CHAIN( LOCK+UP+KP8, UP+KP., LOCK));
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
Problèmes programmation des LEDs
#81en faisant des essais de gestion des LEDs j'ai cette ligne qui s'exécute nickel
MapKey(&LMFD, OSB02, CHAIN( LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1), D(250), LED(&LMFD, LED_INTENSITY, 255), D(250), LED(&LMFD, LED_INTENSITY, 50), D(), LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1)));
mais par contre celle-là me revoie l'erreur
Runtime Error: Symbol not found: LED_ONOFF in main ( line 58 in _LEDs.tmc )
ou encore
Runtime Error: Symbol not found: LED_INTENSITY in main ( line 59 in _LEDs.tmc ) (si on supprime la première partie)
NB pas d'erreur à la compilation et le script se lance EDIT : erreur qui persiste malgrés réinstall Target
ligne en cause :
MapKey(&LMFD, OSB01,CHAIN( LED(&Throttle, LED_ONOFF, LED_CURRENT+LED5), D(250), LED(&Throttle, LED_INTENSITY, 0)));
Target 1.0.11.304 et firmwares : dernières versions
Question : est-ce un bug ?
On pourrait programmer avec script les Leds des MFDs mais pas de la throttle ?
je dis ça parce que l'equivalent dans Target GUI s'exécute mais ne marche pas non plus : aucune action sur la throttle !! EDIT : ça remarche après réinstall de Target... le fichier hid.tmh n'était pas à jour ???!!!
MapKey(&LMFD, OSB02, CHAIN( LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1), D(250), LED(&LMFD, LED_INTENSITY, 255), D(250), LED(&LMFD, LED_INTENSITY, 50), D(), LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1)));
mais par contre celle-là me revoie l'erreur
Runtime Error: Symbol not found: LED_ONOFF in main ( line 58 in _LEDs.tmc )
ou encore
Runtime Error: Symbol not found: LED_INTENSITY in main ( line 59 in _LEDs.tmc ) (si on supprime la première partie)
NB pas d'erreur à la compilation et le script se lance EDIT : erreur qui persiste malgrés réinstall Target
ligne en cause :
MapKey(&LMFD, OSB01,CHAIN( LED(&Throttle, LED_ONOFF, LED_CURRENT+LED5), D(250), LED(&Throttle, LED_INTENSITY, 0)));
Target 1.0.11.304 et firmwares : dernières versions
Question : est-ce un bug ?
On pourrait programmer avec script les Leds des MFDs mais pas de la throttle ?
je dis ça parce que l'equivalent dans Target GUI s'exécute mais ne marche pas non plus : aucune action sur la throttle !! EDIT : ça remarche après réinstall de Target... le fichier hid.tmh n'était pas à jour ???!!!
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
#82
Encore + bizarrre : on dirait que c'est de pire en pire !!!
messages d'erreurs à l'exécution du script de la doc :
Compile Succeeded.
Physical USB HID devices managed by script!
Currently plugged USB HID devices[4]:
1: "Joystick - HOTAS Warthog" - "USB\VID_044F&PID_0402&REV_0100"
2: "F16 MFD 1" - "USB\VID_044F&PID_B351&REV_0100"
3: "Throttle - HOTAS Warthog" - "USB\VID_044F&PID_0404&REV_0100"
4: "F16 MFD 2" - "USB\VID_044F&PID_B352&REV_0100"
USB HID device "Throttle - HOTAS Warthog"(USB\VID_044F&PID_0404\6&1DC17EE4&0&4) selected
USB HID device "Joystick - HOTAS Warthog"(USB\VID_044F&PID_0402\6&1A53C6CC&0&2) selected
USB HID device "F16 MFD 1"(USB\VID_044F&PID_B351\6&1DC17EE4&0&7) selected
USB HID device "F16 MFD 2"(USB\VID_044F&PID_B352\6&1DC17EE4&0&2) selected
USB HID device with hardware id "VID_044F&PID_0400" cannot be found
USB HID device with hardware id "VID_044F&PID_B10A" cannot be found
Virtual HID devices managed by script!
Connecting virtual joystick...Done
Device name set to Thrustmaster Combined
Connecting virtual keyboard...Done
Connecting virtual mouse...Done
main returned 0
Runtime error in Execute: Symbol not found: LED_INTENSITY, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_INTENSITY, 43));"
Runtime error in Execute: Symbol not found: LED_INTENSITY, in "ActKey(PULSE+KEYON+LED(&LMFD, LED_INTENSITY, 20));"
Runtime error in Execute: Symbol not found: LED_INTENSITY, in "ActKey(PULSE+KEYON+LED(&RMFD, LED_INTENSITY, 20));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED1));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED2));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED3));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED4));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED5));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));"
script :
LEDS_Initialize = CHAIN( EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_INTENSITY, 43));"),
EXEC("ActKey(PULSE+KEYON+LED(&LMFD, LED_INTENSITY, 20));"),
EXEC("ActKey(PULSE+KEYON+LED(&RMFD, LED_INTENSITY, 20));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED2));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED3));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED4));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED5));"),
EXEC("ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));"),
EXEC("ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));")
MapKey(&LMFD, OSB01, PULSE+LEDS_Initialize);
messages d'erreurs à l'exécution du script de la doc :
Compile Succeeded.
Physical USB HID devices managed by script!
Currently plugged USB HID devices[4]:
1: "Joystick - HOTAS Warthog" - "USB\VID_044F&PID_0402&REV_0100"
2: "F16 MFD 1" - "USB\VID_044F&PID_B351&REV_0100"
3: "Throttle - HOTAS Warthog" - "USB\VID_044F&PID_0404&REV_0100"
4: "F16 MFD 2" - "USB\VID_044F&PID_B352&REV_0100"
USB HID device "Throttle - HOTAS Warthog"(USB\VID_044F&PID_0404\6&1DC17EE4&0&4) selected
USB HID device "Joystick - HOTAS Warthog"(USB\VID_044F&PID_0402\6&1A53C6CC&0&2) selected
USB HID device "F16 MFD 1"(USB\VID_044F&PID_B351\6&1DC17EE4&0&7) selected
USB HID device "F16 MFD 2"(USB\VID_044F&PID_B352\6&1DC17EE4&0&2) selected
USB HID device with hardware id "VID_044F&PID_0400" cannot be found
USB HID device with hardware id "VID_044F&PID_B10A" cannot be found
Virtual HID devices managed by script!
Connecting virtual joystick...Done
Device name set to Thrustmaster Combined
Connecting virtual keyboard...Done
Connecting virtual mouse...Done
main returned 0
Runtime error in Execute: Symbol not found: LED_INTENSITY, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_INTENSITY, 43));"
Runtime error in Execute: Symbol not found: LED_INTENSITY, in "ActKey(PULSE+KEYON+LED(&LMFD, LED_INTENSITY, 20));"
Runtime error in Execute: Symbol not found: LED_INTENSITY, in "ActKey(PULSE+KEYON+LED(&RMFD, LED_INTENSITY, 20));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED1));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED2));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED3));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED4));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED5));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));"
Runtime error in Execute: Symbol not found: LED_ONOFF, in "ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));"
script :
LEDS_Initialize = CHAIN( EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_INTENSITY, 43));"),
EXEC("ActKey(PULSE+KEYON+LED(&LMFD, LED_INTENSITY, 20));"),
EXEC("ActKey(PULSE+KEYON+LED(&RMFD, LED_INTENSITY, 20));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED2));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED3));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED4));"),
EXEC("ActKey(PULSE+KEYON+LED(&Throttle, LED_ONOFF, LED_CURRENT-LED5));"),
EXEC("ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));"),
EXEC("ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));")
MapKey(&LMFD, OSB01, PULSE+LEDS_Initialize);
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
#83
Moi, je joue avec ce que j'ai trouvé pour le Throttle dans hid.tmh:
Code : Tout sélectionner
int led_ramp(alias o)
{
// ramp down leds (if on)
GameOutput(&o, OUT_ID_LED_5 , 0); Sleep(100);
GameOutput(&o, OUT_ID_LED_4 , 0); Sleep(100);
GameOutput(&o, OUT_ID_LED_3 , 0); Sleep(100);
GameOutput(&o, OUT_ID_LED_2 , 0); Sleep(100);
GameOutput(&o, OUT_ID_LED_1 , 0); Sleep(100);
// backlight off
GameOutput(&o, OUT_ID_LED_BACKLIGHT, 0); Sleep(100);
// ramp up leds
GameOutput(&o, OUT_ID_LED_1 , 1); Sleep(100);
GameOutput(&o, OUT_ID_LED_2 , 1); Sleep(100);
GameOutput(&o, OUT_ID_LED_3 , 1); Sleep(100);
GameOutput(&o, OUT_ID_LED_4 , 1); Sleep(100);
GameOutput(&o, OUT_ID_LED_5 , 1); Sleep(100);
// backlight full intensity
GameOutput(&o, OUT_ID_LED_INTENSITY, 255);
GameOutput(&o, OUT_ID_LED_BACKLIGHT, 1); Sleep(500);
// ramp down leds and backlight
GameOutput(&o, OUT_ID_LED_INTENSITY, 215);
GameOutput(&o, OUT_ID_LED_1 , 0);
GameOutput(&o, OUT_ID_LED_INTENSITY, 172);
GameOutput(&o, OUT_ID_LED_2 , 0); Sleep(100);
GameOutput(&o, OUT_ID_LED_INTENSITY, 129);
GameOutput(&o, OUT_ID_LED_3 , 0); Sleep(100);
GameOutput(&o, OUT_ID_LED_INTENSITY, 86);
GameOutput(&o, OUT_ID_LED_4 , 0); Sleep(100);
GameOutput(&o, OUT_ID_LED_INTENSITY, 43);
GameOutput(&o, OUT_ID_LED_5 , 0); Sleep(100);
}
#84
voilà où est le pb : moi j'ai pas ça dans mon hid.tmh...
install à revoir ? ... je creuse...
EDIT : Reinstall TArget : c'est corrigé ! les scripts marchent.
NB :
si comme moi vous utilisez un dossier Target dans Mes Documents, pensez à mettre à jour les fichiers tmh que vous y aurez recopiés depuis le dossier d'installatin de Target, car sinon ils restent obsolètes après une mise à jour... (boulet du jour inside !!!)
install à revoir ? ... je creuse...
EDIT : Reinstall TArget : c'est corrigé ! les scripts marchent.
NB :
si comme moi vous utilisez un dossier Target dans Mes Documents, pensez à mettre à jour les fichiers tmh que vous y aurez recopiés depuis le dossier d'installatin de Target, car sinon ils restent obsolètes après une mise à jour... (boulet du jour inside !!!)
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
#85
Ok, bonne remarque. En fait je n'avais pas idée qu'il fallait se méfiier de ce que fait le compilateur avec ses include. Pour le moment, je n'ai pas encore eu affaire aux mises à jour. Je me suis contenté de recopier les .tmh dans mon espace de test juste pour consultation. Mais du coup, c'est bon à savoir!
problème avec la notion de compteur
#86petit exercice pratique et théorique :
on crée un compteur.
l'appui sur RMFD SYMU l'initialise à 4
le script devrait allumer les 2 LEDS des deux MFDs
à l'appui de S2 le compteur devrait être décrémenté et une LED devrait s'éteindre
mais ça marche pas...
pourquoi ?
le script :
include "target.tmh"
int CountBombs;
int main()
{
if(Init(&EventHandle)) return 1;
SetKBRate(32, 50);
SetKBLayout(KB_FR);
// SYMU on RMFD
MapKey(&RMFD,SYMU, CHAIN( EXEC("CountBombs = 4;"), EXEC("ActKey(PULSE+KEYON+'p');") ));
// Pause / Unpause Game and init counters
MapKey(&Joystick, S2, CHAIN(EXEC("ActKey(PULSE+Bomb_Release_1);"),
EXEC("CountBombs = CountBombs - 1;"),
BombCounter_UpdateLEDS()));
}
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
}
int BombCounter_UpdateLEDS()
{ //==== {{{
if (CountBombs <= 0) {
CountBombs = 0;
}
if (CountBombs == 4) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT+LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT+LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2));
flash_Down();
}
if (CountBombs == 3) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT+LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2));
flash_Down();
}
if (CountBombs == 2) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2));
flash_Down();
}
if (CountBombs == 1) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2));
flash_Down();
}
if (CountBombs == 0) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));
flash_Down();
}
} // ====}}}
int flash_Down()
{ //==== {{{
Sleep(250);
ActKey(PULSE+KEYON+LED(&LMFD, LED_INTENSITY, 20));
ActKey(PULSE+KEYON+LED(&RMFD, LED_INTENSITY, 20));
} // ====}}}
int flash_Up()
{ //==== {{{
Sleep(250);
ActKey(PULSE+KEYON+LED(&LMFD, LED_INTENSITY, 255));
ActKey(PULSE+KEYON+LED(&RMFD, LED_INTENSITY, 255));
} // ====}}}
Si je met des printf(" comment");
j'ai l'impression que le script exécute le test compteur négatif AVANT l'initialisation, et donc après quand le script tourne, j'ai pas un compteur à 4...
on crée un compteur.
l'appui sur RMFD SYMU l'initialise à 4
le script devrait allumer les 2 LEDS des deux MFDs
à l'appui de S2 le compteur devrait être décrémenté et une LED devrait s'éteindre
mais ça marche pas...
pourquoi ?
le script :
include "target.tmh"
int CountBombs;
int main()
{
if(Init(&EventHandle)) return 1;
SetKBRate(32, 50);
SetKBLayout(KB_FR);
// SYMU on RMFD
MapKey(&RMFD,SYMU, CHAIN( EXEC("CountBombs = 4;"), EXEC("ActKey(PULSE+KEYON+'p');") ));
// Pause / Unpause Game and init counters
MapKey(&Joystick, S2, CHAIN(EXEC("ActKey(PULSE+Bomb_Release_1);"),
EXEC("CountBombs = CountBombs - 1;"),
BombCounter_UpdateLEDS()));
}
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
}
int BombCounter_UpdateLEDS()
{ //==== {{{
if (CountBombs <= 0) {
CountBombs = 0;
}
if (CountBombs == 4) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT+LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT+LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2));
flash_Down();
}
if (CountBombs == 3) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT+LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2));
flash_Down();
}
if (CountBombs == 2) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2));
flash_Down();
}
if (CountBombs == 1) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2));
flash_Down();
}
if (CountBombs == 0) {
flash_Up();
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));
ActKey(PULSE+KEYON+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));
flash_Down();
}
} // ====}}}
int flash_Down()
{ //==== {{{
Sleep(250);
ActKey(PULSE+KEYON+LED(&LMFD, LED_INTENSITY, 20));
ActKey(PULSE+KEYON+LED(&RMFD, LED_INTENSITY, 20));
} // ====}}}
int flash_Up()
{ //==== {{{
Sleep(250);
ActKey(PULSE+KEYON+LED(&LMFD, LED_INTENSITY, 255));
ActKey(PULSE+KEYON+LED(&RMFD, LED_INTENSITY, 255));
} // ====}}}
Si je met des printf(" comment");
j'ai l'impression que le script exécute le test compteur négatif AVANT l'initialisation, et donc après quand le script tourne, j'ai pas un compteur à 4...
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
#87
J'ai tracé le code à l’extrême en remplaçant les commande aux MFCD par des printf parceque je n'en ai pas... et ça semble bien faire ce qu'il faut:
Code : Tout sélectionner
[SIZE="1"]include "target.tmh"
int CountBombs;
int Bomb_Release_1 = 'b'; // test - ivanwfr
int main()
{
if(Init(&EventHandle)) return 1;
SetKBRate(32, 50);
SetKBLayout(KB_FR);
// SYMU on RMFD - Pause/Unpause Game and init counters
MapKey(&Joystick
, S1
, CHAIN(
EXEC("printf(\"\\xaS1--- CHAIN(1): CountBombs = 4 ;\\xa\"); CountBombs = 4 ;")
, EXEC("printf( \"S1... CHAIN(1): ActKey(PULSE+KEYON+'p');\\xa\"); ActKey(PULSE+KEYON+'p');")
)
);
MapKey(&Joystick
, S2
, CHAIN(
EXEC("printf(\"\\xaS2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1);\\xa\"); ActKey(PULSE+Bomb_Release_1);")
, EXEC("printf( \"S2... CHAIN(2): CountBombs = CountBombs - 1 ;\\xa\"); CountBombs = CountBombs - 1 ;")
, EXEC("printf( \"S2... CHAIN(3): BombCounter_UpdateLEDS() ;\\xa\"); BombCounter_UpdateLEDS() ;")
)
);
}
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
}
int BombCounter_UpdateLEDS()
{ //==== {{{
if (CountBombs < 0) {
printf("if(CountBombs < 0)\xa");
CountBombs = 0;
printf(" CountBombs = 0;\xa");
}
if (CountBombs == 4) {
printf("if(CountBombs == 4)\xa");
flash_Up();
flash_Down();
}
if (CountBombs == 3) {
printf("if(CountBombs == 3)\xa");
flash_Up();
flash_Down();
}
if (CountBombs == 2) {
printf("if(CountBombs == 2)\xa");
flash_Up();
flash_Down();
}
if (CountBombs == 1) {
printf("if(CountBombs == 1)\xa");
flash_Up();
flash_Down();
}
if (CountBombs == 0) {
printf("if(CountBombs == 0)\xa");
flash_Up();
flash_Down();
}
} // ====}}}
int flash_Down()
{ //==== {{{
Sleep(250);
printf("flash_Down\xa");
} // ====}}}
int flash_Up()
{ //==== {{{
Sleep(250);
printf("flash_Up\xa");
} // ====}}}
[/SIZE]
Code : Tout sélectionner
[SIZE="1"]S1--- CHAIN(1): CountBombs = 4 ;
S1... CHAIN(1): ActKey(PULSE+KEYON+'p');
S2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1);
S2... CHAIN(2): CountBombs = CountBombs - 1 ;
S2... CHAIN(3): BombCounter_UpdateLEDS() ;
if(CountBombs == 3)
flash_Up
flash_Down
S2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1);
S2... CHAIN(2): CountBombs = CountBombs - 1 ;
S2... CHAIN(3): BombCounter_UpdateLEDS() ;
if(CountBombs == 2)
flash_Up
flash_Down
S2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1);
S2... CHAIN(2): CountBombs = CountBombs - 1 ;
S2... CHAIN(3): BombCounter_UpdateLEDS() ;
if(CountBombs == 1)
flash_Up
flash_Down
S2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1);
S2... CHAIN(2): CountBombs = CountBombs - 1 ;
S2... CHAIN(3): BombCounter_UpdateLEDS() ;
if(CountBombs == 0)
flash_Up
flash_Down
S2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1);
S2... CHAIN(2): CountBombs = CountBombs - 1 ;
S2... CHAIN(3): BombCounter_UpdateLEDS() ;
if(CountBombs < 0)
CountBombs = 0;
if(CountBombs == 0)
flash_Up
flash_Down
S2--- CHAIN(1): ActKey(PULSE+Bomb_Release_1);
S2... CHAIN(2): CountBombs = CountBombs - 1 ;
S2... CHAIN(3): BombCounter_UpdateLEDS() ;
if(CountBombs < 0)
CountBombs = 0;
if(CountBombs == 0)
flash_Up
flash_Down
[/SIZE]
#88
justement, je suis pas sur que les printf soient représentatifs dans ce cas
car justement tu n'as pas les MFDs...
j'aimerais avoir l'avis de Dimebug... avec les MFDs...
car justement tu n'as pas les MFDs...
j'aimerais avoir l'avis de Dimebug... avec les MFDs...
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
#90
je crois que tu te compliques la vie, tu force le status de toutes les led a chaque fois alors qu'elle vont s’éteindre en suivant un ordre logique que tu définis dans ta fonction "maison" dans mon cas c'est "Bombsleds".
Ca pourrais etre interessant de cree une fonction de management de test led qui interroge constament (avec un reexec) le statut de Countbombs et pilote les led en consequence, de cette maniere, pas besoin des les initialiser.
De maniere basique :
include "target.tmh"
int CountBombs;
//program startup
int main()
{
if(Init(&EventHandle)) return 1; // declare the event handler, return on error
// SYMU on RMFD will init counter MFDs led and Pause/unpause
MapKey(&RMFD,SYMU, CHAIN(PULSE+'p',
EXEC("CountBombs = 4;"),
LED(&RMFD, LED_ONOFF, LED_CURRENT+LED1),
LED(&RMFD, LED_ONOFF, LED_CURRENT+LED2),
LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1),
LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2)));
MapKey(&Joystick, S2, CHAIN(PULSE+'b', EXEC("CountBombs = CountBombs - 1;"), EXEC("Bombsleds();")));
}
int Bombsleds()
{
if(CountBombs == 4) ActKey(KEYON+PULSE+ 0);
else if(CountBombs == 3) ActKey(KEYON+PULSE+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));
else if (CountBombs == 2) ActKey(KEYON+PULSE+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
else if (CountBombs == 1) ActKey(KEYON+PULSE+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));
else ActKey(KEYON+PULSE+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));
}
//event handler
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
//add event handling code here
}
Ca pourrais etre interessant de cree une fonction de management de test led qui interroge constament (avec un reexec) le statut de Countbombs et pilote les led en consequence, de cette maniere, pas besoin des les initialiser.
De maniere basique :
include "target.tmh"
int CountBombs;
//program startup
int main()
{
if(Init(&EventHandle)) return 1; // declare the event handler, return on error
// SYMU on RMFD will init counter MFDs led and Pause/unpause
MapKey(&RMFD,SYMU, CHAIN(PULSE+'p',
EXEC("CountBombs = 4;"),
LED(&RMFD, LED_ONOFF, LED_CURRENT+LED1),
LED(&RMFD, LED_ONOFF, LED_CURRENT+LED2),
LED(&LMFD, LED_ONOFF, LED_CURRENT+LED1),
LED(&LMFD, LED_ONOFF, LED_CURRENT+LED2)));
MapKey(&Joystick, S2, CHAIN(PULSE+'b', EXEC("CountBombs = CountBombs - 1;"), EXEC("Bombsleds();")));
}
int Bombsleds()
{
if(CountBombs == 4) ActKey(KEYON+PULSE+ 0);
else if(CountBombs == 3) ActKey(KEYON+PULSE+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));
else if (CountBombs == 2) ActKey(KEYON+PULSE+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));
else if (CountBombs == 1) ActKey(KEYON+PULSE+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));
else ActKey(KEYON+PULSE+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));
}
//event handler
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
//add event handling code here
}
Dresseur de cochon (sauvage)
#91
effectivement, approche bcp plus efficace !
merci Dimebug !
vais tester qd j'arais un moment...
evidemment c'est pour faire qqch de + compliqué ... mais je commence par le simple...
merci Dimebug !
vais tester qd j'arais un moment...
evidemment c'est pour faire qqch de + compliqué ... mais je commence par le simple...
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
#92
voila une autre façon de le faire :
Je crée un processus qui demarre en meme temps que je definis 4 bombes (RMFD sym up)
Ce processus manage l'affichage des led en fonction du compteur et non pas de mes actions sur S2
A noter, la façon dont j'initialise les leds (1 ligne de code par device)
Je n'ai pas eu a créer de fonction en dehors de la boucle mais pour cela j'ai abuser d'EXEC.
include "target.tmh"
int CountBombs, BombsDisplay;
//program startup
int main()
{
if(Init(&EventHandle)) return 1; // declare the event handler, return on error
//Bomb display is a function created to manage MFD LED depending the number of time S2 have been pressed
BombsDisplay = CHAIN(EXEC("if (CountBombs == 3) ActKey(KEYON+PULSE+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));"),
EXEC("if (CountBombs == 2) ActKey(KEYON+PULSE+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("if (CountBombs == 1) ActKey(KEYON+PULSE+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("if (CountBombs == 0) ActKey(KEYON+PULSE+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));"));
REXEC(1, 300, "ActKey(KEYON+BombsDisplay);", RNOSTOP);
// SYMU on RMFD will init counter MFDs led and Pause/unpause
MapKey(&RMFD,SYMU, CHAIN(PULSE+'p', //pluse 'p' key
EXEC("CountBombs = 4;"), //initialize number of bombs
REXEC(1, 300, "ActKey(KEYON+BombsDisplay);", RNOSTOP), //Launch LED management task
LED(&RMFD, LED_ONOFF, LED1+LED2), //Turn on RMFD Leds
LED(&LMFD, LED_ONOFF, LED1+LED2))); //Turn on LMFD Leds
MapKey(&Joystick, S2, CHAIN(PULSE+'b', EXEC("CountBombs = CountBombs - 1;"))); //Pluse 'b' key and substract1 bomb
}
//event handler
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
//add event handling code here
}
Je crée un processus qui demarre en meme temps que je definis 4 bombes (RMFD sym up)
Ce processus manage l'affichage des led en fonction du compteur et non pas de mes actions sur S2
A noter, la façon dont j'initialise les leds (1 ligne de code par device)
Je n'ai pas eu a créer de fonction en dehors de la boucle mais pour cela j'ai abuser d'EXEC.
include "target.tmh"
int CountBombs, BombsDisplay;
//program startup
int main()
{
if(Init(&EventHandle)) return 1; // declare the event handler, return on error
//Bomb display is a function created to manage MFD LED depending the number of time S2 have been pressed
BombsDisplay = CHAIN(EXEC("if (CountBombs == 3) ActKey(KEYON+PULSE+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED2));"),
EXEC("if (CountBombs == 2) ActKey(KEYON+PULSE+LED(&RMFD, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("if (CountBombs == 1) ActKey(KEYON+PULSE+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED1));"),
EXEC("if (CountBombs == 0) ActKey(KEYON+PULSE+LED(&LMFD, LED_ONOFF, LED_CURRENT-LED2));"));
REXEC(1, 300, "ActKey(KEYON+BombsDisplay);", RNOSTOP);
// SYMU on RMFD will init counter MFDs led and Pause/unpause
MapKey(&RMFD,SYMU, CHAIN(PULSE+'p', //pluse 'p' key
EXEC("CountBombs = 4;"), //initialize number of bombs
REXEC(1, 300, "ActKey(KEYON+BombsDisplay);", RNOSTOP), //Launch LED management task
LED(&RMFD, LED_ONOFF, LED1+LED2), //Turn on RMFD Leds
LED(&LMFD, LED_ONOFF, LED1+LED2))); //Turn on LMFD Leds
MapKey(&Joystick, S2, CHAIN(PULSE+'b', EXEC("CountBombs = CountBombs - 1;"))); //Pluse 'b' key and substract1 bomb
}
//event handler
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
//add event handling code here
}
Dresseur de cochon (sauvage)
#93
vi , c'est ce que j'ai fait ce midi...
est-ce plus efficace ou consommant moins de ressources ou ça n'a aucun impact ?
est-ce plus efficace ou consommant moins de ressources ou ça n'a aucun impact ?
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
#94
ca consomme plus car tu a une fonction qui loop, c'est pour ca que je l'ai mise a 300 millisecondes, mais 500 suffirait. Globalement , les EXEC sont voraces, ceci dit, c'est pas avec ca que tu fera ramer un PC.
Dresseur de cochon (sauvage)
#95
si tu parles anglais j'ai un client pour toi : http://www.scsimulations.com/showthread ... 1#post7962dimebug a écrit :moi je recherche quelqu'un pour faire joujou avec Target et le LUA de DCS A-10c. J'ai reussi a extraire des données de FC2, a les afficher dans le output window de Target, mais sous A-10, mon LUA donne rien du tout, et le lua , c'est pas mon truc !
je te laisses l'initiative du contact si tu es interessé
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
#96
j'ai un peu de mal à mettre au point les scripts par manque d'exemples de syntaxe dans la doc.
par exemple si on veut utiliser des
include "*.tmc"
pour eviter de recopier tout le temps les memes fonctions entre differents profils ou/et appeler des fonctions répétitives dans ces scripts...
si on appelle la fonction dans le script principal il suffit de saisir :
mon_nom_function();
mais à posteriori, dans un MapKey(), il faut passer par :
EXEC("mon_nom_function();")
et la fonction appellée dans le script*.tmc, dépendant du premier :
int mon_nom_function()
{
[INDENT]// le script secondaire
[/INDENT]}
possede la structure ci dessus.
Mais peut-on y mettre :
EXEC("...");
EXEC("...");
sur plusieurs lignes
ou est-on obligé de passer par un :
CHAIN(
plusieurs lignes type ActKey ou PULSE+KEYON+ et , à la fin de ligne
);
bref, y a t il des règles précises . et où peut - on les trouver à défaut du manuel ? ou ne peut on faire que par essai / erreur sans comprendre vraiment ? (du moins je me pose des questions : c'est pas forcément intuitif ou logique du moins au début...)
car il est clair qu'on peut avoir des scripts qui se compilent sans erreur mais ne marchent pas, et des scripts pratiquement justes qui ne se compilent pas à cause d'une parenthèse ou virgule en trop... c'est classique...
et quand on veut faire des programmations de mappages par "modes interdépendant" cela devient un peu lassant à tester si on bute sur la syntaxe...
je ne parles pas des exemples cités dans le manuel bien sûr, ni de lignes de simples tests ou opération mathématiques ou affectations de valeur à des variables, où on retrouve à priori la syntaxe du C.
par exemple si on veut utiliser des
include "*.tmc"
pour eviter de recopier tout le temps les memes fonctions entre differents profils ou/et appeler des fonctions répétitives dans ces scripts...
si on appelle la fonction dans le script principal il suffit de saisir :
mon_nom_function();
mais à posteriori, dans un MapKey(), il faut passer par :
EXEC("mon_nom_function();")
et la fonction appellée dans le script*.tmc, dépendant du premier :
int mon_nom_function()
{
[INDENT]// le script secondaire
[/INDENT]}
possede la structure ci dessus.
Mais peut-on y mettre :
EXEC("...");
EXEC("...");
sur plusieurs lignes
ou est-on obligé de passer par un :
CHAIN(
plusieurs lignes type ActKey ou PULSE+KEYON+ et , à la fin de ligne
);
bref, y a t il des règles précises . et où peut - on les trouver à défaut du manuel ? ou ne peut on faire que par essai / erreur sans comprendre vraiment ? (du moins je me pose des questions : c'est pas forcément intuitif ou logique du moins au début...)
car il est clair qu'on peut avoir des scripts qui se compilent sans erreur mais ne marchent pas, et des scripts pratiquement justes qui ne se compilent pas à cause d'une parenthèse ou virgule en trop... c'est classique...
et quand on veut faire des programmations de mappages par "modes interdépendant" cela devient un peu lassant à tester si on bute sur la syntaxe...
je ne parles pas des exemples cités dans le manuel bien sûr, ni de lignes de simples tests ou opération mathématiques ou affectations de valeur à des variables, où on retrouve à priori la syntaxe du C.
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
J'ai fait ce parcours, ça pourrait donc te servir...
#97Comme j'ai passé pas mal d'heures à faire exactement ce type de recherche, je pense que si tu fouilles dans le code en attachement, tu risques d'y trouver quelques éléments utiles.
Ivan
Ivan
- Pièces jointes
-
[L’extension « zip » a été désactivée et ne peut plus être affichée.]
#98
les exemples du manuel sont justement simple pour que la structure soit facilement ex tractable.
La plupart des fonctions (mapkey ectt...)sont en faite des capsules préfabriqués avec des cases que l'on rempli avec les bon paramètres. C'est ce qui rend l’écriture du script simple.
Des que l'on sort de ce schéma, on se heurte a la structure du C, même si certains flag comme "EXEC" permette de créer des ponts ou de se simplifier la vie.
Avec EXEC, on ne fait que tricher ou contourner la difficulté des choses
on peut créer des fonctions de 2 manières bien distinctes, dans et en dehors de la boucle. Les plus simples passent dans la boucle a grand renfort d'exec, les plus complexe sont plus gérables en dehors (les contraintes de syntaxe son celle du C, plus celles du script et ça s’avère parfois plus pratique).
Si tu rames, pose toi toujours ces questions :
Quelle est la logique de fonctionnement de ce que je faire. Ce schéma doit être abouti, tu dois, avant de commencer a écrire, savoir comment tu va gérer les choses et avec quelle methode/fonctions.
Ecrit ta fonction avec des output simple (pas de macros, justre des keysyrokes) au depart. C'est trop bête de perdre du temps sur des fautes de frappe.
Utilise la possibilité d'afficher des choses dans l'output window de target, de cette maniere, il devient plus facile de debugger ton "programme", tu peux poser des jalons qui t'indique le franchissement d'une étape ou l’état d'une variable.
Commence ta fonction dans un script seul, puis quand ca marche inclue la dans ton script principal.
Il faut être minutieux, et checker chaque étape.
et quand tu as finis, comment puis je simplifier/optimiser ?
Il y a plein de façon d'arriver a un résultat, la voie simple avec plein d’étape, la voie optimisé, la voie créative.
Le seul truc, c'est qu'il faut pratiquer, et tres regulierement, sinon a chaque reprise c'est dur. Achète toi un bouquin d'initiation au C, ca peut aider a avoir une meilleure vision des choses, mais la maîtrise, viens en pratiquant, en faisant des erreurs, y'a pas de secret, même avec un livre très complet, ici, ce qui compte c'est avant tout la structure logique de ton processus. Avoir un regard d’analyse et de critique permanent sur ce que les autres font ou ce que tu fais et le meilleur moyen d'apprendre.
La solution n'est pas dans les livres, elle est dans la façon dont tu utilises tes outils et décide des outils que tu te crée.
Si tu tâtonne, ça ne marche pas du premier coup, c'est normal. Si tu y arrive vraiment pas, c'est simplement que tu as sauté une étape et que la maîtrise de quelque chose t’échappe.
La plupart des fonctions (mapkey ectt...)sont en faite des capsules préfabriqués avec des cases que l'on rempli avec les bon paramètres. C'est ce qui rend l’écriture du script simple.
Des que l'on sort de ce schéma, on se heurte a la structure du C, même si certains flag comme "EXEC" permette de créer des ponts ou de se simplifier la vie.
Avec EXEC, on ne fait que tricher ou contourner la difficulté des choses
on peut créer des fonctions de 2 manières bien distinctes, dans et en dehors de la boucle. Les plus simples passent dans la boucle a grand renfort d'exec, les plus complexe sont plus gérables en dehors (les contraintes de syntaxe son celle du C, plus celles du script et ça s’avère parfois plus pratique).
Si tu rames, pose toi toujours ces questions :
Quelle est la logique de fonctionnement de ce que je faire. Ce schéma doit être abouti, tu dois, avant de commencer a écrire, savoir comment tu va gérer les choses et avec quelle methode/fonctions.
Ecrit ta fonction avec des output simple (pas de macros, justre des keysyrokes) au depart. C'est trop bête de perdre du temps sur des fautes de frappe.
Utilise la possibilité d'afficher des choses dans l'output window de target, de cette maniere, il devient plus facile de debugger ton "programme", tu peux poser des jalons qui t'indique le franchissement d'une étape ou l’état d'une variable.
Commence ta fonction dans un script seul, puis quand ca marche inclue la dans ton script principal.
Il faut être minutieux, et checker chaque étape.
et quand tu as finis, comment puis je simplifier/optimiser ?
Il y a plein de façon d'arriver a un résultat, la voie simple avec plein d’étape, la voie optimisé, la voie créative.
Le seul truc, c'est qu'il faut pratiquer, et tres regulierement, sinon a chaque reprise c'est dur. Achète toi un bouquin d'initiation au C, ca peut aider a avoir une meilleure vision des choses, mais la maîtrise, viens en pratiquant, en faisant des erreurs, y'a pas de secret, même avec un livre très complet, ici, ce qui compte c'est avant tout la structure logique de ton processus. Avoir un regard d’analyse et de critique permanent sur ce que les autres font ou ce que tu fais et le meilleur moyen d'apprendre.
La solution n'est pas dans les livres, elle est dans la façon dont tu utilises tes outils et décide des outils que tu te crée.
Si tu tâtonne, ça ne marche pas du premier coup, c'est normal. Si tu y arrive vraiment pas, c'est simplement que tu as sauté une étape et que la maîtrise de quelque chose t’échappe.
Dresseur de cochon (sauvage)
#99
merci pour la méthode, mais ça je sais déjà ; après c'est vrai que n'étant pas programmeur de formation, et un peu rouillé, il y a qqs tatonnements.
En fait ta réponse à ma question c'est : on peut ecrire les fonctions que l'on veut avec la syntaxe du C.
Aujourd'hui j'ai eu du temps et suis arrivé à externaliser dans des sous routine (appel par include) pas mal de fonctions, et qui marchent
pour les calculs, boucles if else etc ... cf langage C
pour les instructions qui vont servir à Mapkey, : syntaxe de target, mais avec parfois qqs modifs...
Là où on manque d'infos c'est sur les limites de ce qui est dans le C mais pas géré par Target et vice versa...
Donc les contributions comme celle de irvanwfr sont très appréciables... merci pour le code partagé ! C'est pile le genre de choses que je voulais faire ! tu as du t'amuser pour mettre tout ça au point !!!!
Quand j'aurais avancé un peu je vais essayé de poster qqs exemples types documentés... mais ça risque de prendre un peu de temps...
En fait ta réponse à ma question c'est : on peut ecrire les fonctions que l'on veut avec la syntaxe du C.
Aujourd'hui j'ai eu du temps et suis arrivé à externaliser dans des sous routine (appel par include) pas mal de fonctions, et qui marchent
pour les calculs, boucles if else etc ... cf langage C
pour les instructions qui vont servir à Mapkey, : syntaxe de target, mais avec parfois qqs modifs...
Là où on manque d'infos c'est sur les limites de ce qui est dans le C mais pas géré par Target et vice versa...
Donc les contributions comme celle de irvanwfr sont très appréciables... merci pour le code partagé ! C'est pile le genre de choses que je voulais faire ! tu as du t'amuser pour mettre tout ça au point !!!!
Quand j'aurais avancé un peu je vais essayé de poster qqs exemples types documentés... mais ça risque de prendre un peu de temps...
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm
#100
bon y en a un où je butte :
fichier _HATCorners.tmcfichier principal.tmc :
ce qui est en jaune ne marche pas...
fichier _HATCorners.tmc
Code : Tout sélectionner
// HAT3
int H3UR()
{[INDENT] if( (Joystick[H3U] & Joystick[H3R]) & !(Joystick[H3U] | Joystick[H3R]) ) {
[/INDENT][INDENT] return 1;
[/INDENT]}[INDENT] else{
[/INDENT][INDENT] return 0;
[/INDENT]}
}
Code : Tout sélectionner
include "_HATCorners.tmc"
int main()
{
// HAT3 Snapviews management using UDLR and corners
MapKey(&Joystick, H3U, SEQ(
CHAIN( LOCK+DOWN+USBKey_KPPoint, DOWN+USBKey_KP8, LOCK),
CHAIN( LOCK+UP+USBKey_KP8, UP+USBKey_KPPoint, LOCK)
));
MapKey(&Joystick, H3L, SEQ(
CHAIN( LOCK+DOWN+USBKey_KPPoint, DOWN+USBKey_KP4, LOCK),
CHAIN( LOCK+UP+USBKey_KP4, UP+USBKey_KPPoint, LOCK)
));
MapKey(&Joystick, H3R, SEQ(
CHAIN( LOCK+DOWN+USBKey_KPPoint, DOWN+USBKey_KP6, LOCK),
CHAIN( LOCK+UP+USBKey_KP6, UP+USBKey_KPPoint, LOCK)
));
MapKey(&Joystick, H3D, SEQ(
CHAIN( LOCK+DOWN+USBKey_KPPoint, DOWN+USBKey_KP2, LOCK),
CHAIN( LOCK+UP+USBKey_KP2, UP+USBKey_KPPoint, LOCK)
)); [color=Yellow]
if( H3UR()==1){
SEQ(
CHAIN( LOCK+DOWN+USBKey_KPPoint, DOWN+USBKey_KP9, LOCK),
CHAIN( LOCK+UP+USBKey_KP9, UP+USBKey_KPPoint, LOCK)
);
};[/color]
}
[SIGPIC]http://www.kirikoo.net/images/8WoodMAn- ... 212448.png[/img][/SIGPIC]
(\_/)
(_'.') ..i72600k@4.5GHz + AsusSabertoothZ77 + 16Go GSkill10700 + AC Noctua + Raptor + Win7x64Ult + WH MFDs SaitekThr 1920x1080x3 dt 1 tactile 6950 2G
(")_(")[/align]
(")_(")[/align]
Forbidden Planet = SF , video, old goodie a écrit : http://en.wikipedia.org/wiki/Forbidden_Planet http://www.forbidden-planet.org/forbidden-planet/http://www.jeffbots.com/forbiddenplanet.html http://web.archive.org/web/200412110934 ... fbhome.htm