TARGET Script Editor
- Pappyboyington
- Réserviste
- Messages : 885
- Inscription : 11 avr. 2015, 00:27
Re: TARGET Script Editor
de se faire plaisir en ayant tout a porté de main, nah!
- Musky
- Messages : 54
- Inscription : 19 mai 2016, 22:58
Re: TARGET Script Editor
Quelqu'un sait s'il est possible de mettre toutes les actions (MapKey et/ou MapAxis) dans un fichier séparé qui serait appelé depuis le script principal (comme on le fait pour les "define" qu'on place dans le fichier macros et qu'on appelle avec un "include") ?
C'est juste un question de lisibilité, rien de fondamental, mais je n'y arrive pas.
C'est juste un question de lisibilité, rien de fondamental, mais je n'y arrive pas.
- Biluf
- Réserviste
- Messages : 5063
- Inscription : 03 mai 2015, 19:59
Re: TARGET Script Editor
J'ai déjà vu un truc comme ça il me semble.
Je rechercherai dans mon historique au taf
Je rechercherai dans mon historique au taf

- Biluf
- Réserviste
- Messages : 5063
- Inscription : 03 mai 2015, 19:59
Re: TARGET Script Editor
Chose promise, chose due.
Jette un coup d'oeil à ça.
http://www.digitalcombatsimulator.com/en/files/54276/
Jette un coup d'oeil à ça.
http://www.digitalcombatsimulator.com/en/files/54276/
- Musky
- Messages : 54
- Inscription : 19 mai 2016, 22:58
Re: TARGET Script Editor
Nickel.
Pour résumer à ceux que ça intéresse :
Objectif : utiliser des fichiers séparés pour les mappings de touches
- creer vos fichiers *.tmc contenant les mappings. Ceux-ci doivent commencer par la déclaration d'une variable permettant ensuite d'appeler le contenu du fichier
- dans votre fichier principal, vous déclarez les fichiers (include "monfichier.tmc") et plus loin, dans le corps du script (main), vous appelez la variable définie dans le fichier
Pour résumer à ceux que ça intéresse :
Objectif : utiliser des fichiers séparés pour les mappings de touches
- creer vos fichiers *.tmc contenant les mappings. Ceux-ci doivent commencer par la déclaration d'une variable permettant ensuite d'appeler le contenu du fichier
Code : Tout sélectionner
int config_joystick()
{
//Gachette (TG1)
MapKeyIOUMD(&Joystick, TG1,
armes_mitrailleuses, // IU
armes_mitrailleuses, // OU
armes_mitrailleuses, // IM
armes_mitrailleuses, // OM
0, // ID
0) // OD
;
// et toutes les autres en dessous
}
Code : Tout sélectionner
include "target.tmh"
include "map/joystick.tmc"
int main()
{
if(Init(&EventHandle)) return 1;
config_joystick(); // Appel des commandes du joystick
}
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
}
- Biluf
- Réserviste
- Messages : 5063
- Inscription : 03 mai 2015, 19:59
Re: TARGET Script Editor
Merci Musky.
Je me permettrai de mettre à jour mon tuto si ça te dérange pas (un jour).
Je me permettrai de mettre à jour mon tuto si ça te dérange pas (un jour).
- Musky
- Messages : 54
- Inscription : 19 mai 2016, 22:58
Re: TARGET Script Editor
Je ne joue pas beaucoup en ce moment, mais je trifouille du script target à tout va, aussi je me permets de poster l'avancée de mes trouvailles si ça peut servir à quelqu'un. Le premier exemple de valeurs dans le SetSCurve est tiré de cet excellent guide, déjà cité ici http://www.checksix-fr.com/Files/matos/ ... ipt_FR.pdf
1er Objectif : changer la sensibilité du manche à la volée
Le changement des courbes peut se faire en cours de jeu via les commandes SetSCurve (courbe en S pour le manche), SetJCurve (Courbe en J pour les gaz) ou SetCustomCurve (courbe en S personnalisée)
Ainsi, la commande suivante effectue des réglages sur l'axe des X (roulis) du joystick
Les valeurs peuvent être prélevées grâce à l'interface GUI en créant sa courbe, puis en utilisant le bouton "View Script"
Cette fonction peut être affectée à un bouton, et on peut donc facilement basculer entre deux configurations d'axes. Il faut par contre utiliser la commande EXEC et mettre les commandes suivantes entre guillemets, ce qui complique la syntaxe.
Exemple en utilisant le switch EAC :
Si on veut utiliser l'appui sur un bouton, on utilisera la fonction SEQ qui lance l'action suivante de la liste à chaque nouvel appui sur le bouton. Ainsi, par exemple avec le bouton de l'autopilote :
On notera par contre que l'on ne modifie ici que l'axe des X (roulis) du joystick. Si on veut aussi modifier l'axe des Y (tangage), on rajoute juste une ligne. Bien sûr, rien n'empêche d'utiliser des réglages différents pour X et Y.
Rien qu'avec ça, on définit donc deux comportement différents du manche. Mais on peut s'amuser beaucoup plus
2ème objectif : utiliser des courbes personnalisées
Intéressons nous tout d'abord à la fonction SetCustomCurve
Elle débute par l'énonciation du périphérique (&Throttle ou &Joystick), puis l'axe (JOYX ou JOYY) puis une liste de coordonnées relative à un graphique allant de 0 à 100 en abscisses et en ordonnées. La syntaxe est de ce type
SetCustomCurve(&Joystick, JOYX, LIST(0,0, 50,50, 100,100)) qui correspond alors à une courbe linéaire formée de trois points.
L'important est d'abord de créer une liste de points correspondant à la courbe voulue. Le plus simple étant encore de se servir d'un papier et d'un crayon.
Graphique correspondant à la liste de points LIST(0,0, 50,50, 100,100) Graphique correspondant à la liste de points LIST(0,0, 10,30, 50,50, 90,70, 100,100)
Problème : la fonction EXEC ne permet pas d'utiliser une liste, et donc on ne peut pas directement utiliser la fonction SetCustomCurve comme on l'avait fait précédemment avec la fonction SetSCurve. Il faut alors ruser :
-- 1 : déclarer une variable qui contiendra notre liste au début du script principal
int axe_lineaire;
-- 2 : peupler cette variable avec notre liste de coordonnées
axe_lineaire=LIST(0,0, 50,50, 100,100);
-- 3 : utiliser cette variable lors de l'appel à la fonction SetCustomCurve
SetCustomCurve(&Joystick, JOYX, axe_lineaire);
On obtient alors
3eme objectif : alterner entre 3 configurations d'axes personnalisés en utilisant un switch 3 positions
On commence d'abord par créer ses courbes. Pour exemple:
courbes correspondant à une sensibilité faible:
en bleu: LIST(0,36, 10,40, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,60, 100,64)
en orange: LIST(0,30, 10,37, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,63, 100,70)
en jaune: LIST(0,20, 10,35, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,65, 100,80) Pour pouvoir utiliser ces listes dans une fonctions EXEC, il faut qu'elles aient préalablement été stockées dans des variables, et que ces variables aient elles-mêmes été déclarées. De plus, pour permettre ultérieurement une dissociation des courbes pour l'axe des X (roulis) et pour l'axe des Y (tangage), nous allons déclarer deux variables pour chaque courbe. En tout, nous aurons donc 6 variables à déclarer et à peupler.
On peuple ensuite ces variables, dans la boucle main (mais j'imagine qu'il est possible de les décentrer dans un autre fichier). Dans cet exemple, les courbes X et Y sont identiques.
La déclaration d'une courbe sur un switch se ferait alors de la façon suivante, par exemple en utilisant le Pinky Switch
Et le code complet
4eme objectif : alterner entre 6 configurations d'axes personnalisés différentes en utilisant deux switchs
(oui, je sais, c'est inutile, mais c'est rigolo et ça permet de mieux comprendre le fonctionnement de T.A.R.G.E.T. script)
Puisqu'on veut 6 courbes, il nous faudra d'abord créer 3 nouvelles courbes, et donc 3 nouvelles listes de points.
courbes correspondant à une sensibilité moyenne
en bleu: LIST(0,20, 10,30, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,70, 100,80)
en orange : LIST(0,10, 10,35, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,90)
en jaune : LIST(0,0, 10,35, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,100) Si on veut garder la possibilité de différencier l'axe des X et des Y, on aura alors 12 variables à déclarer et à peupler.
On peuple ensuite ces variables.
Mais, comme vous l'aurez deviné, il nous faut alors 2 switchs ayant chacun 3 positions pour pouvoir affecter les 6 courbes. On va donc procéder autrement en utilisant 1 switch 2 positions (pour choisir le niveau faible ou moyen) et 1 switch 3 positions (pour affecter les niveaux 1, 2 et 3 des courbes). Et là, les choses se compliquent puisqu'il va falloir utiliser des conditions if ... else et des drapeaux (flags).
Mon code ici pourrait certainement être plus propre, mais l'utilisation des fonctions de T.A.R.G.E.T. entraîne une interaction avec le langage C qui est semble-t-il particulière. Il faudrait pour faire mieux passer entièrement en programmation C, ce qui est possible, mais bien au delà de mes capacités. Ceux qui sont intéressés se tourneront vers les explications de ivanwfr sur les forums de checksix
La notion de drapeaux (flags) est assez bien documentée, mais j'ai eu plus de difficulté pour les conditions if...else, en particulier avec leur interaction avec la fonction EXEC de T.A.R.G.E.T.
A propos des drapeaux
Les drapeaux doivent être déclarés comme variables de type char en début de script.
En théorie, elles peuvent prendre n'importe quelle valeur, même de type chaîne de caractères, mais je n'ai pas réussi ensuite à faire des tests logiques avec. Je me contenterai donc de leur donner des valeurs numériques.
Pour la première étape, nous considérerons une variable appelée sensibilité qui prendra pour valeur 0 quand on veut les courbes de sensibilité faible, et comme valeur 1 quand on veut les courbes de sensibilité moyenne. Le switch FUEL NORM RIGHT (EFRNORM / EFROVER) sera utilisé pour basculer la valeur de la variable.
On déclare le drapeau en début de script
Dès lors qu'on utilise des conditions et des drapeaux, il peut être utile d'avoir un message visible pour le débogage. On utilise la fonction printf, mais la syntaxe en est compliquée puisqu'elle se situe à l'intérieur de guillemets.
La déclaration des touches EFROVER et EFRNORM devient alors
A propos des conditions if ... else
Le but étant que, selon la position du switch FUEL NORM RIGHT(et donc selon la valeur du drapeau), le switch PINKIE SWITCH nous assigne la valeur de la courbe demandée
-- EFROVER --> drapeau sensibilite = 0 --> sensibilité faible
--> PSB (pinkie switch back) = sensibilité faible niveau 1
--> PSM (pinkie switch middle) = sensibilité faible niveau 2
--> PSF (pinkie switch front) = sensibilité faible niveau 3
-- EFRNORM --> drapeau sensibilite = 1 --> sensibilité moyenne
--> PSB (pinkie switch back) = sensibilité moyenne niveau 1
--> PSM (pinkie switch middle) = sensibilité moyenne niveau 2
--> PSF (pinkie switch front) = sensibilité moyenne niveau 3
Basiquement, pour le premier cas, on a la syntaxe suivante sur PSB
Le principal souci que j'ai rencontré avec ces boucles if, c'est que je n'ai pas trouvé comment effectuer deux actions distinctes avec la même condition. Je dois donc, pour chaque axe, créer une condition, ce qui complique la syntaxe et oblige à utiliser la fonction CHAIN (qui permet d'effectuer plusieurs actions)
L'exemple devient alors, avec une autre syntaxe pour le test logique et pour chaque valeur du pinkie switch
5ème objectif : switcher automatiquement dans la bonne courbe selon la position de chaque switch
Si je ne vous ai pas trop perdus, vous aurez remarqué que mes commandes précédentes occasionnaient le problème suivant :
Si je suis dans une courbe faible niveau 1 et que je veux utiliser une courbe moyenne niveau 1, il faut:
1) basculer le switch EFROVER vers EFRNORM (pour changer le drapeau sensibilite de 0 vers 1)
2) basculer le switch PSB vers PSM (ce qui a pour effet de nous mettre en courbe moyen niveau 2, alors que ce n'est pas souhaité)
3) basculer le switch PSM vers PSB (pour enfin affecter la courbe moyen niveau 1)
On va ici essayer de rendre cela automatique, et donc faire en sorte que n'importe quel changement dans la position d'un des switchs nous mette automatiquement la courbe désirée. Il nous faudra pour cela utiliser un autre drapeau appelé sensibilite_niveau qui prendra comme valeur 1, 2 ou 3 selon le niveau de sensibilité désiré. Elle sera affectée selon les positions respectives PSB, PSM et PSF.
Pour schématiser, le comportement de chacun des switchs sera le suivant :
-- bascule sur EFROVER
--> affectation du drapeau sensibilite à la valeur 0
--> test de la valeur du drapeau sensibilite_niveau et affectation de la courbe faible de niveau correspondante
-- bascule sur EFRNORM
--> affectation du drapeau sensibilite à la valeur 1
--> test de la valeur du drapeau sensibilite_niveau et affectation de la courbe moyenne de niveau correspondante
-- bascule sur PSB
--> affectation du drapeau sensibilite_valeur à la valeur 1
--> test de la valeur du drapeau sensibilite et affectation de la courbe correspondante de niveau 1 (faible ou moyenne)
-- bascule sur PSM
--> affectation du drapeau sensibilite_valeur à la valeur 2
--> test de la valeur du drapeau sensibilite et affectation de la courbe correspondante de niveau 2 (faible ou moyenne)
-- bascule sur PSF
--> affectation du drapeau sensibilite_valeur à la valeur 3
--> test de la valeur du drapeau sensibilite et affectation de la courbe correspondante de niveau 3 (faible ou moyenne)
En code, ça donne ça :
On déclare les variables et les drapeaux dans le début du script
On affecte les valeurs des listes aux variables correspondantes
On déclare les actions pour chaque bouton.
D'abord EFROVER et EFRNORM
Puis PSB, PSM et PSF
Et finalement un code complet à copier/coller
Voilà voilà, je sais que cela n'est guère utile in-game, mais, sait-on jamais, cela pourra tout de même servir à quelqu'un. Si quelqu'un souhaite utiliser / modifier / distribuer ceci, grand bien lui fasse, tout est libre de droit 
1er Objectif : changer la sensibilité du manche à la volée
Le changement des courbes peut se faire en cours de jeu via les commandes SetSCurve (courbe en S pour le manche), SetJCurve (Courbe en J pour les gaz) ou SetCustomCurve (courbe en S personnalisée)
Ainsi, la commande suivante effectue des réglages sur l'axe des X (roulis) du joystick
Code : Tout sélectionner
SetSCurve(&Joystick, JOYX,
5, //Zone neutre de 5% sur la gauche
2, //Zone neutre de 2% au centre
5, //Zone neutre de 5% sur la droite
3, //Réglage de la courbe à 3
0 //Scale/zoom à 0
);
Cette fonction peut être affectée à un bouton, et on peut donc facilement basculer entre deux configurations d'axes. Il faut par contre utiliser la commande EXEC et mettre les commandes suivantes entre guillemets, ce qui complique la syntaxe.
Exemple en utilisant le switch EAC :
Code : Tout sélectionner
MapKey(&Throttle, EACON, //enclenchement du switch EAC vers le haut
EXEC( // ouverture de la fonction EXEC. La suite des commandes doit être mise entre guillemets
"SetSCurve(&Joystick, JOYX,5,2,5,3,0);" // Affectation de la courbe sur l'axe X
) // fin de la fonction EXEC
)
;
MapKey(&Throttle, EACOFF, // affectation d'une courbe différente quand le switch EAC est vers le bas
EXEC(
"SetSCurve(&Joystick, JOYX,0,0,0,0,0);"
)
)
;
Code : Tout sélectionner
MapKey(&Joystick, APENG,
SEQ(
EXEC("SetSCurve(&Joystick, JOYX,5,2,5,3,0);")
,
EXEC("SetSCurve(&Joystick, JOYX,0,0,0,0,0);")
)
)
;
Code : Tout sélectionner
MapKey(&Throttle, EACON, //enclenchement du switch EAC vers le haut
EXEC( // ouverture de la fonction EXEC. La suite des commandes doit être mise entre guillemets
"SetSCurve(&Joystick, JOYX,0,0,0,0,0);" // Affectation de la courbe sur l'axe X
"SetSCurve(&Joystick, JOYY,0,0,0,4,0);" // Affectation d'une courbe différente sur l'axe Y
) // fin de la fonction EXEC
)
;
MapKey(&Throttle, EACOFF, // affectation d'une courbe différente quand le switch EAC est vers le bas
EXEC(
"SetSCurve(&Joystick, JOYX,5,2,5,0,0);"
"SetSCurve(&Joystick, JOYY,5,2,5,0,0);"
)
)
;
2ème objectif : utiliser des courbes personnalisées
Intéressons nous tout d'abord à la fonction SetCustomCurve
Elle débute par l'énonciation du périphérique (&Throttle ou &Joystick), puis l'axe (JOYX ou JOYY) puis une liste de coordonnées relative à un graphique allant de 0 à 100 en abscisses et en ordonnées. La syntaxe est de ce type
SetCustomCurve(&Joystick, JOYX, LIST(0,0, 50,50, 100,100)) qui correspond alors à une courbe linéaire formée de trois points.
L'important est d'abord de créer une liste de points correspondant à la courbe voulue. Le plus simple étant encore de se servir d'un papier et d'un crayon.
Graphique correspondant à la liste de points LIST(0,0, 50,50, 100,100) Graphique correspondant à la liste de points LIST(0,0, 10,30, 50,50, 90,70, 100,100)
Problème : la fonction EXEC ne permet pas d'utiliser une liste, et donc on ne peut pas directement utiliser la fonction SetCustomCurve comme on l'avait fait précédemment avec la fonction SetSCurve. Il faut alors ruser :
-- 1 : déclarer une variable qui contiendra notre liste au début du script principal
int axe_lineaire;
-- 2 : peupler cette variable avec notre liste de coordonnées
axe_lineaire=LIST(0,0, 50,50, 100,100);
-- 3 : utiliser cette variable lors de l'appel à la fonction SetCustomCurve
SetCustomCurve(&Joystick, JOYX, axe_lineaire);
On obtient alors
Code : Tout sélectionner
include "target.tmh"
// déclaration des variables
// -------------------------
int axe_lineaire;
int axe_courbeS;
// -------------------------
//program startup
int main()
{
if(Init(&EventHandle)) return 1; // declare the event handler, return on error
//add initialization code here
// peuplement des variables
// ------------------------
axe_lineaire=LIST(0,0, 50,50, 100,100);
axe_courbeS=LIST(0,0, 10,30, 50,50, 90,70, 100,100);
// ------------------------
// Affectation des axes du joystick au dispositif virtuel crée par target
// ------------------------
MapAxis(&Joystick, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&Joystick, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
// ------------------------
// affectation des touches
// ------------------------
MapKey(&Throttle, EACON,
EXEC(
"SetCustomCurve(&Joystick, JOYX, axe_lineaire);"
"SetCustomCurve(&Joystick, JOYY, axe_lineaire);"
)
)
;
MapKey(&Throttle, EACOFF,
EXEC(
"SetCustomCurve(&Joystick, JOYX, axe_courbeS);"
"SetCustomCurve(&Joystick, JOYY, axe_courbeS);"
)
)
;
// ------------------------
}
//event handler
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
//add event handling code here
}
3eme objectif : alterner entre 3 configurations d'axes personnalisés en utilisant un switch 3 positions
On commence d'abord par créer ses courbes. Pour exemple:
courbes correspondant à une sensibilité faible:
en bleu: LIST(0,36, 10,40, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,60, 100,64)
en orange: LIST(0,30, 10,37, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,63, 100,70)
en jaune: LIST(0,20, 10,35, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,65, 100,80) Pour pouvoir utiliser ces listes dans une fonctions EXEC, il faut qu'elles aient préalablement été stockées dans des variables, et que ces variables aient elles-mêmes été déclarées. De plus, pour permettre ultérieurement une dissociation des courbes pour l'axe des X (roulis) et pour l'axe des Y (tangage), nous allons déclarer deux variables pour chaque courbe. En tout, nous aurons donc 6 variables à déclarer et à peupler.
Code : Tout sélectionner
// déclaration des variables
// code à insérer en début de script, juste après les include et avant la fonction main
//-------------------------------------------------------------
int axeX_sensibilite_faible_1; // courbe faible niveau 1 --> courbe bleue, axe des X
int axeX_sensibilite_faible_2; // courbe faible niveau 2 --> courbe orange, axe des X
int axeX_sensibilite_faible_3; // courbe faible niveau 3 --> courbe jaune, axe des X
int axeY_sensibilite_faible_1;
int axeY_sensibilite_faible_2;
int axeY_sensibilite_faible_3;
//-------------------------------------------------------------
Code : Tout sélectionner
// peuplement des variables avec les valeurs de LIST
// à insérer dans la fonction principale (main)
//-------------------------------------------------------------
axeX_sensibilite_faible_1=LIST(0,36, 10,40, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,60, 100,64);
axeY_sensibilite_faible_1=LIST(0,36, 10,40, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,60, 100,64);
axeX_sensibilite_faible_2=LIST(0,30, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,70);
axeY_sensibilite_faible_2=LIST(0,30, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,70);
axeX_sensibilite_faible_3=LIST(0,20, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,80);
axeY_sensibilite_faible_3=LIST(0,20, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,80);
//-------------------------------------------------------------
Code : Tout sélectionner
// affectation des touches
// ----------------------------------------------------
//PINKY SWITCH (gauche)
{
//PSB (Off/down/back)
MapKey(&Throttle, PSB,
EXEC(
"SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_1);"
"SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_1);"
)
)
;
//PSM (middle/center)
MapKey(&Throttle, PSM,
EXEC(
"SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_2);"
"SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_2);"
)
)
;
//PSF (on/up/front)
MapKey(&Throttle, PSF,
EXEC(
"SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_3);"
"SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_3);"
)
)
;
}
// ----------------------------------------------------
Code : Tout sélectionner
include "target.tmh"
// déclaration des variables
// code à insérer en début de script, juste après les include et avant la fonction main
//-------------------------------------------------------------
int axeX_sensibilite_faible_1; // courbe faible niveau 1 --> courbe bleu, premier schema, axe des X
int axeX_sensibilite_faible_2; // courbe faible niveau 2 --> courbe orange, premier schema, axe des X
int axeX_sensibilite_faible_3; // courbe faible niveau 3 --> courbe jaune, premier schema, axe des X
int axeY_sensibilite_faible_1;
int axeY_sensibilite_faible_2;
int axeY_sensibilite_faible_3;
//------------------------------------------------------------
//program startup
int main()
{
if(Init(&EventHandle)) return 1; // declare the event handler, return on error
//add initialization code here
MapAxis(&Joystick, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&Joystick, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
// peuplement des variables avec les valeurs de LIST
// à insérer dans la fonction principale (main)
//-------------------------------------------------------------
axeX_sensibilite_faible_1=LIST(0,36, 10,40, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,60, 100,64);
axeY_sensibilite_faible_1=LIST(0,36, 10,40, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,60, 100,64);
axeX_sensibilite_faible_2=LIST(0,30, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,70);
axeY_sensibilite_faible_2=LIST(0,30, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,70);
axeX_sensibilite_faible_3=LIST(0,20, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,80);
axeY_sensibilite_faible_3=LIST(0,20, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,80);
//-------------------------------------------------------------
// affectation des touches
// ------------------------
//PINKY SWITCH (gauche)
{
//PSB (Off/down/back)
MapKey(&Throttle, PSB,
EXEC(
"SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_1);"
"SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_1);"
)
)
;
//PSM (middle/center)
MapKey(&Throttle, PSM,
EXEC(
"SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_2);"
"SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_2);"
)
)
;
//PSF (on/up/front)
MapKey(&Throttle, PSF,
EXEC(
"SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_3);"
"SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_3);"
)
)
;
}
// ------------------------
}
//event handler
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
//add event handling code here
}
4eme objectif : alterner entre 6 configurations d'axes personnalisés différentes en utilisant deux switchs
(oui, je sais, c'est inutile, mais c'est rigolo et ça permet de mieux comprendre le fonctionnement de T.A.R.G.E.T. script)
Puisqu'on veut 6 courbes, il nous faudra d'abord créer 3 nouvelles courbes, et donc 3 nouvelles listes de points.
courbes correspondant à une sensibilité moyenne
en bleu: LIST(0,20, 10,30, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,70, 100,80)
en orange : LIST(0,10, 10,35, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,90)
en jaune : LIST(0,0, 10,35, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,100) Si on veut garder la possibilité de différencier l'axe des X et des Y, on aura alors 12 variables à déclarer et à peupler.
Code : Tout sélectionner
// déclaration des variables
// code à insérer en début de script, juste après les include et avant la fonction main
//-------------------------------------------------------------
int axeX_sensibilite_faible_1; // courbe faible niveau 1 --> courbe bleu, premier schema, axe des X
int axeX_sensibilite_faible_2; // courbe faible niveau 2 --> courbe orange, premier schema, axe des X
int axeX_sensibilite_faible_3; // courbe faible niveau 3 --> courbe jaune, premier schema, axe des X
int axeX_sensibilite_moyenne_1; // courbe moyenne niveau 1 --> courbe bleu, deuxième schema, axe des X
int axeX_sensibilite_moyenne_2; // courbe moyenne niveau 2 --> courbe orange, deuxième schema, axe des X
int axeX_sensibilite_moyenne_3; // courbe moyenne niveau 3 --> courbe jaune, deuxième schema, axe des X
int axeY_sensibilite_faible_1;
int axeY_sensibilite_faible_2;
int axeY_sensibilite_faible_3;
int axeY_sensibilite_moyenne_1;
int axeY_sensibilite_moyenne_2;
int axeY_sensibilite_moyenne_3;
//-------------------------------------------------------------
Code : Tout sélectionner
// peuplement des variables avec les valeurs de LIST
// à insérer dans la fonction principale (main)
//-------------------------------------------------------------
axeX_sensibilite_faible_1=LIST(0,36, 10,40, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,60, 100,64);
axeY_sensibilite_faible_1=LIST(0,36, 10,40, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,60, 100,64);
axeX_sensibilite_faible_2=LIST(0,30, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,70);
axeY_sensibilite_faible_2=LIST(0,30, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,70);
axeX_sensibilite_faible_3=LIST(0,20, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,80);
axeY_sensibilite_faible_3=LIST(0,20, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,80);
axeX_sensibilite_moyenne_1=LIST(0,20, 10,30, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,70, 100,80);
axeY_sensibilite_moyenne_1=LIST(0,20, 10,30, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,70, 100,80);
axeX_sensibilite_moyenne_2=LIST(0,10, 10,25, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,90);
axeY_sensibilite_moyenne_2=LIST(0,10, 10,25, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,90);
axeX_sensibilite_moyenne_3=LIST(0,0, 10,25, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,100);
axeY_sensibilite_moyenne_3=LIST(0,0, 10,25, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,100);
//-------------------------------------------------------------
Mon code ici pourrait certainement être plus propre, mais l'utilisation des fonctions de T.A.R.G.E.T. entraîne une interaction avec le langage C qui est semble-t-il particulière. Il faudrait pour faire mieux passer entièrement en programmation C, ce qui est possible, mais bien au delà de mes capacités. Ceux qui sont intéressés se tourneront vers les explications de ivanwfr sur les forums de checksix
La notion de drapeaux (flags) est assez bien documentée, mais j'ai eu plus de difficulté pour les conditions if...else, en particulier avec leur interaction avec la fonction EXEC de T.A.R.G.E.T.
A propos des drapeaux
Les drapeaux doivent être déclarés comme variables de type char en début de script.
En théorie, elles peuvent prendre n'importe quelle valeur, même de type chaîne de caractères, mais je n'ai pas réussi ensuite à faire des tests logiques avec. Je me contenterai donc de leur donner des valeurs numériques.
Pour la première étape, nous considérerons une variable appelée sensibilité qui prendra pour valeur 0 quand on veut les courbes de sensibilité faible, et comme valeur 1 quand on veut les courbes de sensibilité moyenne. Le switch FUEL NORM RIGHT (EFRNORM / EFROVER) sera utilisé pour basculer la valeur de la variable.
On déclare le drapeau en début de script
Code : Tout sélectionner
char sensibilite;
La déclaration des touches EFROVER et EFRNORM devient alors
Code : Tout sélectionner
//EFROVER (Off/down/back)
MapKey(&Throttle, EFROVER,
EXEC(
"sensibilite=0;"
"printf(\"\\xa sensibilite=faible\");"
)
)
;
//EFRNORM (On/up/front)
MapKey(&Throttle, EFRNORM,
EXEC(
"sensibilite=1;"
"printf(\"\\xa sensibilite=moyenne\");"
)
)
;
Le but étant que, selon la position du switch FUEL NORM RIGHT(et donc selon la valeur du drapeau), le switch PINKIE SWITCH nous assigne la valeur de la courbe demandée
-- EFROVER --> drapeau sensibilite = 0 --> sensibilité faible
--> PSB (pinkie switch back) = sensibilité faible niveau 1
--> PSM (pinkie switch middle) = sensibilité faible niveau 2
--> PSF (pinkie switch front) = sensibilité faible niveau 3
-- EFRNORM --> drapeau sensibilite = 1 --> sensibilité moyenne
--> PSB (pinkie switch back) = sensibilité moyenne niveau 1
--> PSM (pinkie switch middle) = sensibilité moyenne niveau 2
--> PSF (pinkie switch front) = sensibilité moyenne niveau 3
Basiquement, pour le premier cas, on a la syntaxe suivante sur PSB
Code : Tout sélectionner
//PSB (Off/down/back)
MapKey(&Throttle, PSB,
EXEC(
"if(sensibilite==1) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_1);"
"else if(sensibilite==0) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_1);"
)
)
;
Le principal souci que j'ai rencontré avec ces boucles if, c'est que je n'ai pas trouvé comment effectuer deux actions distinctes avec la même condition. Je dois donc, pour chaque axe, créer une condition, ce qui complique la syntaxe et oblige à utiliser la fonction CHAIN (qui permet d'effectuer plusieurs actions)
L'exemple devient alors, avec une autre syntaxe pour le test logique et pour chaque valeur du pinkie switch
Code : Tout sélectionner
//PSB (Off/down/back)
MapKey(&Throttle, PSB,
CHAIN(
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_1);"
"else SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_1);"
),
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_1);"
"else SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_1);"
),
EXEC(
"if(sensibilite) printf(\"\\xa sensibilite reglee sur moyen niveau 1\");"
"else printf(\"\\xa sensibilite reglee sur faible niveau 1\");"
)
)
)
;
//PSM (Middle/center)
MapKey(&Throttle, PSM,
CHAIN(
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_2);"
"else SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_2);"
),
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_2);"
"else SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_2);"
),
EXEC(
"if(sensibilite) printf(\"\\xa sensibilite reglee sur moyen niveau 2\");"
"else printf(\"\\xa sensibilite reglee sur faible niveau 2\");"
)
)
)
;
//PSF (On/up/front)
MapKey(&Throttle, PSF,
CHAIN(
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_3);"
"else SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_3);"
),
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_3);"
"else SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_3);"
),
EXEC(
"if(sensibilite) printf(\"\\xa sensibilite reglee sur moyen niveau 3\");"
"else printf(\"\\xa sensibilite reglee sur faible niveau 3\");"
)
)
)
;
Si je ne vous ai pas trop perdus, vous aurez remarqué que mes commandes précédentes occasionnaient le problème suivant :
Si je suis dans une courbe faible niveau 1 et que je veux utiliser une courbe moyenne niveau 1, il faut:
1) basculer le switch EFROVER vers EFRNORM (pour changer le drapeau sensibilite de 0 vers 1)
2) basculer le switch PSB vers PSM (ce qui a pour effet de nous mettre en courbe moyen niveau 2, alors que ce n'est pas souhaité)
3) basculer le switch PSM vers PSB (pour enfin affecter la courbe moyen niveau 1)
On va ici essayer de rendre cela automatique, et donc faire en sorte que n'importe quel changement dans la position d'un des switchs nous mette automatiquement la courbe désirée. Il nous faudra pour cela utiliser un autre drapeau appelé sensibilite_niveau qui prendra comme valeur 1, 2 ou 3 selon le niveau de sensibilité désiré. Elle sera affectée selon les positions respectives PSB, PSM et PSF.
Pour schématiser, le comportement de chacun des switchs sera le suivant :
-- bascule sur EFROVER
--> affectation du drapeau sensibilite à la valeur 0
--> test de la valeur du drapeau sensibilite_niveau et affectation de la courbe faible de niveau correspondante
-- bascule sur EFRNORM
--> affectation du drapeau sensibilite à la valeur 1
--> test de la valeur du drapeau sensibilite_niveau et affectation de la courbe moyenne de niveau correspondante
-- bascule sur PSB
--> affectation du drapeau sensibilite_valeur à la valeur 1
--> test de la valeur du drapeau sensibilite et affectation de la courbe correspondante de niveau 1 (faible ou moyenne)
-- bascule sur PSM
--> affectation du drapeau sensibilite_valeur à la valeur 2
--> test de la valeur du drapeau sensibilite et affectation de la courbe correspondante de niveau 2 (faible ou moyenne)
-- bascule sur PSF
--> affectation du drapeau sensibilite_valeur à la valeur 3
--> test de la valeur du drapeau sensibilite et affectation de la courbe correspondante de niveau 3 (faible ou moyenne)
En code, ça donne ça :
On déclare les variables et les drapeaux dans le début du script
Code : Tout sélectionner
int axeX_sensibilite_faible_1;
int axeX_sensibilite_faible_2;
int axeX_sensibilite_faible_3;
int axeX_sensibilite_moyenne_1;
int axeX_sensibilite_moyenne_2;
int axeX_sensibilite_moyenne_3;
int axeY_sensibilite_faible_1;
int axeY_sensibilite_faible_2;
int axeY_sensibilite_faible_3;
int axeY_sensibilite_moyenne_1;
int axeY_sensibilite_moyenne_2;
int axeY_sensibilite_moyenne_3;
char sensibilite;
char sensibilite_niveau;
Code : Tout sélectionner
axeX_sensibilite_faible_1=LIST(0,37, 10,40, 20,43, 30,45, 40,47, 50,50, 60,53, 70,55, 80,57, 90,60, 100,63);
axeY_sensibilite_faible_1=LIST(0,37, 10,40, 20,43, 30,45, 40,47, 50,50, 60,53, 70,55, 80,57, 90,60, 100,63);
axeX_sensibilite_faible_2=LIST(0,30, 10,37, 20,43, 30,45, 40,47, 50,50, 60,53, 70,55, 80,57, 90,63, 100,70);
axeY_sensibilite_faible_2=LIST(0,30, 10,37, 20,43, 30,45, 40,47, 50,50, 60,53, 70,55, 80,57, 90,63, 100,70);
axeX_sensibilite_faible_3=LIST(0,20, 10,35, 20,43, 30,45, 40,47, 50,50, 60,53, 70,55, 80,57, 90,65, 100,80);
axeY_sensibilite_faible_3=LIST(0,20, 10,35, 20,43, 30,45, 40,47, 50,50, 60,53, 70,55, 80,57, 90,65, 100,80);
axeX_sensibilite_moyenne_1=LIST(0,20, 10,30, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,70, 100,80);
axeY_sensibilite_moyenne_1=LIST(0,20, 10,30, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,70, 100,80);
axeX_sensibilite_moyenne_2=LIST(0,10, 10,25, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,90);
axeY_sensibilite_moyenne_2=LIST(0,10, 10,25, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,90);
axeX_sensibilite_moyenne_3=LIST(0,0, 10,25, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,100);
axeY_sensibilite_moyenne_3=LIST(0,0, 10,25, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,100);
D'abord EFROVER et EFRNORM
Code : Tout sélectionner
// FUEL NORM RIGHT
{
//EFROVER (Off/down/back)
MapKey(&Throttle, EFROVER,
CHAIN(
EXEC(
"sensibilite=0;"
"printf(\"\\xa sensibilite=faible\");"
),
EXEC(
"if (sensibilite_niveau==1) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_1);"
"else if (sensibilite_niveau==2) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_2);"
"else if (sensibilite_niveau==3) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_3);"
),
EXEC(
"if (sensibilite_niveau==1) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_1);"
"else if (sensibilite_niveau==2) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_2);"
"else if (sensibilite_niveau==3) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_3);"
),
EXEC(
"if (sensibilite_niveau==1) printf(\"\\xa sensibilite reglee sur faible niveau 1\");"
"else if (sensibilite_niveau==2) printf(\"\\xa sensibilite reglee sur faible niveau 2\");"
"else if (sensibilite_niveau==3) printf(\"\\xa sensibilite reglee sur faible niveau 3\");"
)
)
)
;
//EFRNORM (On/up/front)
MapKey(&Throttle, EFRNORM,
CHAIN(
EXEC(
"sensibilite=1;printf(\"\\xa sensibilite=moyenne\");"
),
EXEC(
"if (sensibilite_niveau==1) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_1);"
"else if (sensibilite_niveau==2) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_2);"
"else if (sensibilite_niveau==3) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_3);"
),
EXEC(
"if (sensibilite_niveau==1) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_1);"
"else if (sensibilite_niveau==2) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_2);"
"else if (sensibilite_niveau==3) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_3);"
),
EXEC(
"if (sensibilite_niveau==1) printf(\"\\xa sensibilite reglee sur moyenne niveau 1\");"
"else if (sensibilite_niveau==2) printf(\"\\xa sensibilite reglee sur moyenne niveau 2\");"
"else if (sensibilite_niveau==3) printf(\"\\xa sensibilite reglee sur moyenne niveau 3\");"
)
)
)
;
}
Code : Tout sélectionner
//PINKY SWITCH (gauche)
{
//PSB (Off/down/back)
MapKey(&Throttle, PSB,
CHAIN(
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_1);"
"else SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_1);"
),
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_1);"
"else SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_1);"
),
EXEC(
"sensibilite_niveau=1;"
),
EXEC(
"if(sensibilite) printf(\"\\xa sensibilite reglee sur moyen niveau 1\");"
"else printf(\"\\xa sensibilite reglee sur faible niveau 1\");"
)
)
)
;
//PSM (middle/center)
MapKey(&Throttle, PSM,
CHAIN(
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_2);"
"else SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_2);"
),
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_2);"
"else SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_2);"
),
EXEC(
"sensibilite_niveau=2;"
),
EXEC(
"if(sensibilite) printf(\"\\xa sensibilite reglee sur moyen niveau 2\");"
"else printf(\"\\xa sensibilite reglee sur faible niveau 2\");"
)
)
)
;
//PSF (On/up/front)
MapKey(&Throttle, PSF,
CHAIN(
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_3);"
"else SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_3);"
),
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_3);"
"else SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_3);"
),
EXEC(
"sensibilite_niveau=3;"
),
EXEC(
"if(sensibilite) printf(\"\\xa sensibilite reglee sur moyen niveau 3\");"
"else printf(\"\\xa sensibilite reglee sur faible niveau 3\");"
)
)
)
;
}
Code : Tout sélectionner
include "target.tmh"
// déclaration des variables
// code à insérer en début de script, juste après les include et avant la fonction main
//-------------------------------------------------------------
int axeX_sensibilite_faible_1; // courbe faible niveau 1 --> courbe bleu, premier schema, axe des X
int axeX_sensibilite_faible_2; // courbe faible niveau 2 --> courbe orange, premier schema, axe des X
int axeX_sensibilite_faible_3; // courbe faible niveau 3 --> courbe jaune, premier schema, axe des X
int axeX_sensibilite_moyenne_1;
int axeX_sensibilite_moyenne_2;
int axeX_sensibilite_moyenne_3;
int axeY_sensibilite_faible_1;
int axeY_sensibilite_faible_2;
int axeY_sensibilite_faible_3;
int axeY_sensibilite_moyenne_1;
int axeY_sensibilite_moyenne_2;
int axeY_sensibilite_moyenne_3;
//------------------------------------------------------------
char sensibilite;
char sensibilite_niveau;
//program startup
int main()
{
if(Init(&EventHandle)) return 1; // declare the event handler, return on error
//add initialization code here
MapAxis(&Joystick, JOYX, DX_X_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
MapAxis(&Joystick, JOYY, DX_Y_AXIS, AXIS_NORMAL, MAP_ABSOLUTE);
// peuplement des variables avec les valeurs de LIST
// à insérer dans la fonction principale (main)
//-------------------------------------------------------------
axeX_sensibilite_faible_1=LIST(0,36, 10,40, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,60, 100,64);
axeY_sensibilite_faible_1=LIST(0,36, 10,40, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,60, 100,64);
axeX_sensibilite_faible_2=LIST(0,30, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,70);
axeY_sensibilite_faible_2=LIST(0,30, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,70);
axeX_sensibilite_faible_3=LIST(0,20, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,80);
axeY_sensibilite_faible_3=LIST(0,20, 10,36, 20,43, 30,46, 40,48, 50,50, 60,52, 70,54, 80,57, 90,64, 100,80);
axeX_sensibilite_moyenne_1=LIST(0,20, 10,30, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,70, 100,80);
axeY_sensibilite_moyenne_1=LIST(0,20, 10,30, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,70, 100,80);
axeX_sensibilite_moyenne_2=LIST(0,10, 10,25, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,90);
axeY_sensibilite_moyenne_2=LIST(0,10, 10,25, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,90);
axeX_sensibilite_moyenne_3=LIST(0,0, 10,25, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,100);
axeY_sensibilite_moyenne_3=LIST(0,0, 10,25, 20,35, 30,40, 40,45, 50,50, 60,55, 70,60, 80,65, 90,75, 100,100);
//-------------------------------------------------------------
// FUEL NORM RIGHT
{
//EFROVER (Off/down/back)
MapKey(&Throttle, EFROVER,
CHAIN(
EXEC(
"sensibilite=0;"
"printf(\"\\xa sensibilite=faible\");"
),
EXEC(
"if (sensibilite_niveau==1) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_1);"
"else if (sensibilite_niveau==2) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_2);"
"else if (sensibilite_niveau==3) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_3);"
),
EXEC(
"if (sensibilite_niveau==1) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_1);"
"else if (sensibilite_niveau==2) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_2);"
"else if (sensibilite_niveau==3) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_3);"
),
EXEC(
"if (sensibilite_niveau==1) printf(\"\\xa sensibilite reglee sur faible niveau 1\");"
"else if (sensibilite_niveau==2) printf(\"\\xa sensibilite reglee sur faible niveau 2\");"
"else if (sensibilite_niveau==3) printf(\"\\xa sensibilite reglee sur faible niveau 3\");"
)
)
)
;
//EFRNORM (On/up/front)
MapKey(&Throttle, EFRNORM,
CHAIN(
EXEC(
"sensibilite=1;printf(\"\\xa sensibilite=moyenne\");"
),
EXEC(
"if (sensibilite_niveau==1) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_1);"
"else if (sensibilite_niveau==2) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_2);"
"else if (sensibilite_niveau==3) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_3);"
),
EXEC(
"if (sensibilite_niveau==1) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_1);"
"else if (sensibilite_niveau==2) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_2);"
"else if (sensibilite_niveau==3) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_3);"
),
EXEC(
"if (sensibilite_niveau==1) printf(\"\\xa sensibilite reglee sur moyenne niveau 1\");"
"else if (sensibilite_niveau==2) printf(\"\\xa sensibilite reglee sur moyenne niveau 2\");"
"else if (sensibilite_niveau==3) printf(\"\\xa sensibilite reglee sur moyenne niveau 3\");"
)
)
)
;
}
//PINKY SWITCH (gauche)
{
//PSB (Off/down/back)
MapKey(&Throttle, PSB,
CHAIN(
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_1);"
"else SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_1);"
),
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_1);"
"else SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_1);"
),
EXEC(
"sensibilite_niveau=1;"
),
EXEC(
"if(sensibilite) printf(\"\\xa sensibilite reglee sur moyen niveau 1\");"
"else printf(\"\\xa sensibilite reglee sur faible niveau 1\");"
)
)
)
;
//PSM (middle/center)
MapKey(&Throttle, PSM,
CHAIN(
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_2);"
"else SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_2);"
),
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_2);"
"else SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_2);"
),
EXEC(
"sensibilite_niveau=2;"
),
EXEC(
"if(sensibilite) printf(\"\\xa sensibilite reglee sur moyen niveau 2\");"
"else printf(\"\\xa sensibilite reglee sur faible niveau 2\");"
)
)
)
;
//PSF (On/up/front)
MapKey(&Throttle, PSF,
CHAIN(
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_moyenne_3);"
"else SetCustomCurve(&Joystick, JOYX, axeX_sensibilite_faible_3);"
),
EXEC(
"if(sensibilite) SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_moyenne_3);"
"else SetCustomCurve(&Joystick, JOYY, axeY_sensibilite_faible_3);"
),
EXEC(
"sensibilite_niveau=3;"
),
EXEC(
"if(sensibilite) printf(\"\\xa sensibilite reglee sur moyen niveau 3\");"
"else printf(\"\\xa sensibilite reglee sur faible niveau 3\");"
)
)
)
;
}
}
//event handler
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
//add event handling code here
}

Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
- Golgoth21
- Réserviste
- Messages : 857
- Inscription : 09 avr. 2015, 21:28
Re: TARGET Script Editor
Hum !!!!! c'est dense !!!!
Où sont mes aspirine ?
Où sont mes aspirine ?
- Musky
- Messages : 54
- Inscription : 19 mai 2016, 22:58
Re: TARGET Script Editor
J'ai fini la boîte en écrivant le pavé 

- Bed
- Guest
- Messages : 121
- Inscription : 08 avr. 2015, 20:57
Re: TARGET Script Editor
Hello tous, je dépoussière ce sujet figé depuis 4 ans.
2 ans que je ne vole plus trop sur BoX, mais la période dernièrement vécue m'a permis d'y retoucher un peu et me donne surtout l'envie de me refaire un Simpit maison plus "accueillant"
Je me suis pris le chou avec mon Warthog, du coup je reconsidère le Script Editor de Target.
Je viens de relire les précédents messages et regarder en détail, Biluf, tes fichiers ttm et ttc.
L'utilisation de ttm (macro) est un réel plus, je le vois pourtant rarement utilisé dans les configs dispo sur le web (quelque soit le simu).
Questions:
Etant donné l'évolution de BoX depuis quatre ans et l'apparition de nouvelles commandes/avions, accepterais-tu de partager à nouveau tes fichiers updatés (je présume) ttm et ttc ?
Sur la version de 2016, j'ai remarqué que pas mal de touches sur le Throttle restaient vacantes.
Ces affectations de touches sont forcément en relation avec le fichier de config de touches dans BoX, c'est la config par défaut qui est utilisée ? (à quelques modifications près)
Merci et bon vols à tous !
2 ans que je ne vole plus trop sur BoX, mais la période dernièrement vécue m'a permis d'y retoucher un peu et me donne surtout l'envie de me refaire un Simpit maison plus "accueillant"

Je me suis pris le chou avec mon Warthog, du coup je reconsidère le Script Editor de Target.
Je viens de relire les précédents messages et regarder en détail, Biluf, tes fichiers ttm et ttc.
L'utilisation de ttm (macro) est un réel plus, je le vois pourtant rarement utilisé dans les configs dispo sur le web (quelque soit le simu).
Questions:
Etant donné l'évolution de BoX depuis quatre ans et l'apparition de nouvelles commandes/avions, accepterais-tu de partager à nouveau tes fichiers updatés (je présume) ttm et ttc ?
Sur la version de 2016, j'ai remarqué que pas mal de touches sur le Throttle restaient vacantes.
Ces affectations de touches sont forcément en relation avec le fichier de config de touches dans BoX, c'est la config par défaut qui est utilisée ? (à quelques modifications près)
Merci et bon vols à tous !

- Biluf
- Réserviste
- Messages : 5063
- Inscription : 03 mai 2015, 19:59
Re: TARGET Script Editor
Ah désolé je n'utilise plus de Warthog et n'ai plus accès à ce matos. Va falloir le faire à la mimine 

- Golgoth21
- Réserviste
- Messages : 857
- Inscription : 09 avr. 2015, 21:28
Re: TARGET Script Editor
Je peux aider si tu veux. J'ai 3 modes sur ma conf...
- Bed
- Guest
- Messages : 121
- Inscription : 08 avr. 2015, 20:57
Re: TARGET Script Editor
Merci pour ta réponse Biluf, c'était le risque sur un sujet qui date de 4 ans
Peu d'exemples ou de Post sur ce sujet concernant BoX, sans doute plus nécessaire pour des simus comme DCS ou BMS.
Salut Golgoth, je suis preneur si ca ne te gene pas, histoire d'avoir une base à jour pour comprendre et adapter au besoin.
Merci

Peu d'exemples ou de Post sur ce sujet concernant BoX, sans doute plus nécessaire pour des simus comme DCS ou BMS.
Salut Golgoth, je suis preneur si ca ne te gene pas, histoire d'avoir une base à jour pour comprendre et adapter au besoin.
Merci
