[..] Laisser une touche appuyée

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
megalex
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 01 janv. 2010 14:10
Status : Hors ligne

[..] Laisser une touche appuyée

#1

Message par megalex »

Bonjour tout le monde, j'ai un petit problème avec un de mes script qui es censé appuyer sur une touche durant un certain temps sans la relâcher.

J'ai créer un petit jeu en C++ avec SDL pour tester AutoIt et la touche S sert à attaquer, Q pour se soigner.

j'ai donc cherché dans la documentation de AutoIt et j'ai trouvé un parametre pour Send : Send("{s down}") mais malheureusement sa ne marche pas =( j'ai ajouté un son pour que l'appui de la touche ait le temps d'être reconnu, j'entends le son mais rien ne se passe dans le jeu :X

je vous envoie mon code:
► Afficher le texte
j'espère que vous trouverez le solution.
PS: je n'ai pas encore vu si la fonction qui vérifie la barre de vie marche car je ne l'ai pas encore intégrée a mon jeu ^^'
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Laisser une touche appuyée

#2

Message par Tlem »

Bonjour megalex.
Merci de prendre en compte les règles de ce forum.
Évitez de faire référence à un bot de jeux (orientation d'un script pour automatiser des actions sur un jeux).
J'ai bien noté que vous avez spécifié avoir créé ce jeux, mais le problème de fond reste présent. Un tel script peut facilement être détourné et donc devenir nuisible. Prenez donc soin lorsque vous présentez un problème, de faire en sorte que la notion de bot de jeux soit pratiquement transparente et que le terme jeux ne soit pas utilisé. ;)

Évitez aussi l'utilisation de la coloration syntaxique du code qui est réservée aux forums : Enfin, pour essayer de répondre à votre question, j'ai jeté un coup d'œil à votre script. N'oubliez pas que si vous utilisez la commande Beep(), le deuxième paramètre représente la durée du bip en milli-secondes et donc 300ms est une durée relativement basse pour des actions clavier. ;)
De plus il faut voir si c'est votre application qui à le focus, ou celle que vous voulez contrôler. Peut être que ControlSend() serait plus adapté à votre besoin.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
megalex
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 01 janv. 2010 14:10
Status : Hors ligne

Re: [..] Laisser une touche appuyée

#3

Message par megalex »

Oui merci, j'ai lu attentivement les règles mais je me suis dit que puisque c'est mon jeu et que personne d'autre n'y jouera sa n'étais pas vraiment considérable comme un BOT.

ensuite, je ne voit pas pourquoi ne pas utiliser la coloration sytaxique dans cette partie du forum :X sa permet une meilleur lecture non?

et enfin, tu es sur que 300MS c'est trop peu? car il me semble que le clavier peut plutôt envoyer plus de 10 touche par seconde, mais je vais suivre ton conseil.Et quand je clique sur l'application ou il faire les actions (attaquer) elle a le focus normalement non?

en tout cas merci beacoup pour m'avoir aidé, je vais voir ce que je peut faire en mettant plus de temps lors du Beep().

Et derniere question, le fait que sa e marche pas, sa n'as aucun rapport avec la methode de gestion de la GUI oubien? parceque j'utilise le mode de gestion de la GUI ou on attends que quelque chose se passe, peut-être que cela marcherait mieux avec le mode ou le code tourne en boucle?

Ce qui m'étonne le plus c'est que à l'époque, il y a une année environ, il me semble que j'avais tenté quelque-chose du genre et que sa marchait!
megalex
Niveau 1
Niveau 1
Messages : 7
Enregistré le : ven. 01 janv. 2010 14:10
Status : Hors ligne

Re: [..] Laisser une touche appuyée

#4

Message par megalex »

Juste un petit UP pour dire que j'ai trouvé, et je veux tout de même donner ma solution si vous seriez un jour dans la meme situation que moi.

Pour utiliser la fonction Send() sur un programme en mode administrateur, il faut que le fichier AutoIt soit aussi lancé en mode administrateur!

ou du moins c'est ce qu'il me semble vu que je viens de le lancer en mode administrateur et que sa marche =) plus qu'as remettre mon script comme avant, mais en mode administrateur ^^ merci pour votre aide.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Laisser une touche appuyée

#5

Message par Tlem »

Vous dites que c'est votre jeu; soit mais si je deviens extrémiste, imaginez le père d'un enfant qui ce fabrique une arme pour lui tout seul, mais par imprudence cette arme ce retrouve dans les mains de son fils qui y joue avec un copain ...
Inutile de vous raconter la suite. :roll:

La coloration syntaxique est très consommatrice d'espace dans la base de donnée, c'est pourquoi on essaie de limiter au maximum cette consommation qui devient inutile dans le temps.
Je l'ai pourtant stipulé en rouge et en gras clignotant dans ce message http://www.autoitscript.fr/forum/viewto ... f=35&t=595 , mais cela semble transparent. :?

En ce qui concerne les 300ms, peut être qu'un clavier peut envoyer plus de 10 touches par secondes, mais je doute que vos doigts en sont capables. ;)
Mais le problème n'est pas réellement là, en fait une action qui s'affiche que 300ms n'est pas forcément perceptible sur une interface graphique (cela dépend du PC et de celui qui regarde).
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre