Assigner une touche à l'utilisation d'un script

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Assigner une touche à l'utilisation d'un script

Re: Assigner une touche à l'utilisation d'un script

Post by MAX9275 » 01 Sep 2021, 11:59

Bonjour

Je rebondis sur ce poste pour ma demande un peu similaire mais en plus simple

Je cherche à faire un script anti recul assez simple mais avec différente sensibilité avec une assignation touche et dans le même script.



par exemple , quand j'appuie sur la touche f1 , l'anti recul est à une certaine vitesse quand j'appuie sur la touche de ma souris , et en appuyant sur f2 une autre sensibilité plus importante


j'ai essayé de le faire mais à chaque fois mon fichier et corrompu car " je ne code pas bien " , et je pense que ca doit être tout bête ...

merci pour votre aide en tout cas !

;)

PAR EXEMPLE TOUCHE F1 :

Code: Select all

~LButton::
Loop
If GetKeyState("LButton","P")
{
MouseXY(0,1) 
sleep 22
}
else
break
Return
mouseXY(x,y)
{
DllCall("mouse_event",int,1,int,x,int,y,uint,0,uint,0)
}
------------------------------------------------------
PAR EXEMPLE TOUCHE F2 :

Code: Select all

~LButton::
Loop
If GetKeyState("LButton","P")
{
MouseXY(0,5) 
sleep 22
}
else
break
Return
mouseXY(x,y)
{
DllCall("mouse_event",int,1,int,x,int,y,uint,0,uint,0)
}

}

Re: Assigner une touche à l'utilisation d'un script

Post by blastedmodzz » 31 May 2020, 15:43

merci beaucoup et merci encore pour ton aide !

Re: Assigner une touche à l'utilisation d'un script

Post by joedf » 30 May 2020, 10:50

Parfait, et alors... bonne chance! :+1:

Re: Assigner une touche à l'utilisation d'un script

Post by blastedmodzz » 30 May 2020, 10:34

en effet merci pour l'information, pour le coup je n'ai pas vraiment besoin d'une action différente en fonction de l'arme, c'est surtout pour le SAPI que j'utilise plusieurs noms, mais cela va m'être utile pour plus tard étant donné que je compte ajouter une fonction anti recul adaptée à l'arme

Re: Assigner une touche à l'utilisation d'un script

Post by joedf » 29 May 2020, 15:48

Oui bien sur! :thumbup:

Tu peux faire ça

Code: Select all

#If ( (slotA == 1 and memA == "p2020") or (slotA == 1 and memA == "hemlok") )
~$LButton::
While GetKeyState("LButton","P")
{
	Send, {LButton}
	Random, rand, 97, 148
	Sleep, rand
}
return
ou encore mieux, si tu veux faire qqch un peu différemment pour chaque condition :

Code: Select all

#If (slotA == 1 and memA == "hemlok")
~$LButton::
While GetKeyState("LButton","P")
{
	Send, {LButton}
	Random, rand, 97, 148
	Sleep, rand
}
return

#If (slotA == 1 and memA == "p2020")
~$LButton::
While GetKeyState("LButton","P")
{
	Send, {LButton}
	Random, rand, 97, 148
	Sleep, rand
}
return

Re: Assigner une touche à l'utilisation d'un script

Post by blastedmodzz » 29 May 2020, 14:33

Code: Select all

#If (slotA == 1 and memA == "p2020")
~$LButton::
While GetKeyState("LButton","P")
{
	Send, {LButton}
	Random, rand, 97, 148
	Sleep, rand
}
return
Il y a 4 conditions pour le moment, est ce qu'un argument if x = 1 OR x = 2 ...existe ou pas ?

Re: Assigner une touche à l'utilisation d'un script

Post by joedf » 29 May 2020, 14:13

Soucis 1: Tu dois mettre ~ devant $LButton:: pour ne pas blocker le clic normal.
Soucis 2: Je ne suis pas certain pourquoi tu as deux blocs en dessous le while, en plus un loop... ça ne fonctionne pas de cette façon.
la commande Random devrait se trouver a l'intérieur du loop, sinon la variable rand ne changera pas

Essayes ça

Code: Select all

~$LButton::
if (slotA == 1 and memA == "p2020") {
	While GetKeyState("LButton","P")
	{
		Send, {LButton}
		Random, rand, 97, 148
		Sleep, rand
	}
}
return
En fait, il serait même mieux de faire ceci...
Le rapidfire sera seulement actif quand la condition est respectée

Code: Select all

#If (slotA == 1 and memA == "p2020")
~$LButton::
While GetKeyState("LButton","P")
{
	Send, {LButton}
	Random, rand, 97, 148
	Sleep, rand
}
return

Re: Assigner une touche à l'utilisation d'un script

Post by blastedmodzz » 29 May 2020, 10:49

En effet les guillemets étaient nécessaires merci, j'ai eu plusieurs autres problèmes après ça que j'ai réussi à fixer, le premier était que le loop ne s'arrêtait plus même si je relâchais le clic, l'autre annulait complètement mon clic si rien ne correspondait au If. De plus, j'avais oublier de remplacer memA par memB pour l'emplacement 2, ce qui causait également un problème.

Code: Select all

    While GetKeyState("LButton","P")
    {
    	Send, {LButton}
    	Sleep, rand
    }
    {  <- c'était d'ici
    	Send, {LButton}
    	Sleep, rand
    } <- à ici qui causait la majorité des soucis
    
Merci énormément pour ton aide joedf, grâce à toi j'ai pu réussir ce script.

Voici le code complet si quelqu'un en a besoin :
Spoiler

Re: Assigner une touche à l'utilisation d'un script

Post by joedf » 29 May 2020, 07:52

Les comparaison avec texte nécessitent des guillemets sinon, c'est interprété comme une expression ou une variable.
donc je pense que tu veux qqch comme (slotB == 1 and memB == "p2020") ou (slotB == 1 and memB == "hemlok")
plutôt que (slotB == 1 and memB == p2020) ou (slotB == 1 and memB == hemlok).

Re: Assigner une touche à l'utilisation d'un script

Post by blastedmodzz » 29 May 2020, 06:34

je précisais que c'était un exemple mais finalement grâce à ton aide j'ai pu trouver comment faire ce que je voulais, malheureusement, j'ai un petit soucis..

Là, tout marche correctement, quand j'appuie sur 1, SlotA=1, SlotB=0 et quand j'appuie sur 2 SlotA=0, SlotB=1, quand j'appuie sur F1 ou F2, en fonction de si c'est SlotA ou SlotB qui est à 1, il assigne l'arme à la touche 1 ou 2 et le SAPI donne bien le nom de la bonne arme, mon soucis se passe au niveau du clic, à la commande $LButton: en gros, j'ai les if qui vérifient au moment ou je clique si la valeur de SlotA ou SlotB est égale a 1 et aussi que memA/memB ait bien le nom d'une arme (hemlok ou p2020) mon problème c'est que même si memA ne correspond pas le rapidfire s'enclenche..

Script actuel entier :
Spoiler

Re: Assigner une touche à l'utilisation d'un script

Post by joedf » 28 May 2020, 14:48

C trop mélangeant... :crazy:
Maintenant c rapidfire seulement sur l'arme #1 et F1 active/deactive le rapidfire sur larme #1.

Code: Select all

; par joedf
; Aide pour blastedmodzz
; https://www.autohotkey.com/boards/viewtopic.php?f=55&t=76533

useRapidFire := false


; pression de la touche 1 : SlotA = 1, SlotB =0
~$*1:: SlotA := 1, SlotB := 0

; pression de la touche 2 : SlotA = 0, SlotB =1
~$*2:: SlotA := 0, SlotB := 1

; pression de la touche 3 ou G : SlotA = 0, SlotB =0
~$*3::
~$*G::
SlotA := 0, SlotB := 0
return

; pression de la touche F1 :
F1::
useRapidFire := !useRapidFire
return

#If (SlotA == 1 and SlotB == 0)
~$*LButton::
RapidFire:
if (useRapidFire){
	While GetKeyState("LButton","P")
	{
		;Send, {LButton}
		Random, rand, 97, 138
		ToolTip %rand%
		Sleep, rand
	}
}
return

Re: Assigner une touche à l'utilisation d'un script

Post by blastedmodzz » 28 May 2020, 14:01

joedf wrote:
28 May 2020, 13:54
Donc, si comprend bien le but de F1 c'est de simplement Activer et Déactiver le rapidfire? :think:
non pas vraiment :/

Exemple :
Arme 1 : P2020
Arme 2 : R99

Si j'ai besoin du rapidfire pour l'arme 1, donc, j'appuie sur 1, là, le script défini SlotA à 1 et SlotB à 0, en suite j'appuie sur F1, là, le script assigne le rapidfire au SlotA, donc en gros, si j'appuie sur 2/3 ou G, le rapidfire ne marche plus mais si j'appuie sur 1, là, il reconnait que le rapidfire est assigné et l'active

Re: Assigner une touche à l'utilisation d'un script

Post by joedf » 28 May 2020, 13:54

Donc, si comprend bien le but de F1 c'est de simplement Activer et Déactiver le rapidfire? :think:

Re: Assigner une touche à l'utilisation d'un script

Post by blastedmodzz » 28 May 2020, 11:57

Et bien ça marche et je t'en remercie mais il y a un petit soucis, le script s'active donc bien si slotA = 1/slotB = 0 et inversement (donc si j'ai mon arme 1 ou 2 en main) mais du coup, c'est en permanence justement.

Le but de la touche F1 serait celui ci :
Admettons que j'ai besoin du rapidfire pour l'arme 1, j'appuie donc sur 1 (ce qui en jeu équipe l'arme 1) et que pour le script définirait la valeur de SlotA sur 1 et SlotB sur 0, en suite j'appuie sur F1 pour que le rapidfire marche quand j'utilise l'arme 1.

Si c'est brouillon je m'en excuse, ayant peu de connaissances en AHK j'ai du mal à l'expliquer.. J'ai joint plus haut le gros script dont je m'inspire qui fait actuellement cette fonction, en gros ce script sert d'anti recul, en appuyant sur 1/2 il définir SlotA/B à 1, en suite si j'appuie sur F1/F2/F3/F4 etc il assigne une arme à la touche 1/2 et quand je clique ça agit en fonction de l'arme choisie, le but serait justement de pouvoir assigner la fonction du rapidfire à la touche 1 ou 2 et qu'elle ne se déclenche que si j'ai appuyé sur 1 ou 2 et que le rapidfire est assigné à cette touche

Re: Assigner une touche à l'utilisation d'un script

Post by joedf » 28 May 2020, 10:11

Ok... Essayes ça? :geek:

Code: Select all

; par joedf
; Aide pour blastedmodzz
; https://www.autohotkey.com/boards/viewtopic.php?f=55&t=76533

; pression de la touche 1 : SlotA = 1, SlotB =0
~$*1:: SlotA := 1, SlotB := 0

; pression de la touche 2 : SlotA = 0, SlotB =1
~$*2:: SlotA := 0, SlotB := 1

; pression de la touche 3 ou G : SlotA = 0, SlotB =0
~$*3::
~$*G::
SlotA := 0, SlotB := 0
return

; pression de la touche F1 :
F1::

; - Si SlotA = 1 et SlotB = 0 le script garde en mémoire que la fonction 
;   assignée au clic gauche doit d'activer uniquement si SlotA = 1 et SlotB = 0
if (SlotA == 1 and SlotB == 0) {
	Hotkey, ~$*LButton, RapidFire
	Hotkey, ~$*RButton, FaitRien
}

; - Si SlotA = 0 et SlotB = 1 le script garde en mémoire que la fonction 
;   assignée au clic gauche doit d'activer uniquement si SlotA = 0 et SlotB = 1
if (SlotA == 0 and SlotB == 1) {
	Hotkey, ~$*RButton, RapidFire
	Hotkey, ~$*LButton, FaitRien
}

; pression du clic gauche : Si j'ai appuyé sur F1 pour la touche 1, alors, 
; si SlotA = 1 et SlotB = 0, le script se déclenche, si j'ai appuyé sur 2/3/G, 
; le script détecte que SlotA n'est pas égal à 1 et ne déclenche pas le rapidfire
return

FaitRien:
return

RapidFire:
key := Trim(A_thisHotkey," `t$~*")
While GetKeyState(key,"P")
{
	Send, {%key%}
	Random, rand, 97, 138
	Sleep, rand
}
return

Re: Assigner une touche à l'utilisation d'un script

Post by blastedmodzz » 28 May 2020, 04:48

Désolé en effet c'est un peu brouillon :/
alors le script serait censé agir comme ça :

Si j'appuie sur 1, il définit la valeur de SlotA à 1 et SlotB à 0, si j'appuie sur 2, SlotA = 0, SlotB = 1, si j'appuie sur 3 ou G, il mets les deux valeurs à 0
Les SlotA/B serviraient au script à savoir si j'utilise l'arme 1 ou 2 pendant que je joue.
Maintenant, admettons que j'utilise l'arme 1, SlotA est donc à 1 et SlotB à 0, si j'appuie sur F1, j'aimerai qu'il assigne donc ce script à la touche 1, donc si j'appuie sur 2, il détecte que le script est pas assigné à cette touche et ne se déclenche pas.
Script que j'utilise pour le rapidfire :

Code: Select all

    $LButton::
Random, rand, 97, 138
    loop
    While GetKeyState("LButton","P")
    {
    	Send, {LButton}
    	Sleep, rand
    }
    {
    	Send, {LButton}
    	Sleep, rand
    }
Pour résumer
pression de la touche 1 : SlotA = 1, SlotB =0
pression de la touche 2 : SlotA = 0, SlotB =1
pression de la touche 3 ou G : SlotA = 0, SlotB =0
pression de la touche F1 :
- Si SlotA = 1 et SlotB = 0 le script garde en mémoire que la fonction assignée au clic gauche doit d'activer uniquement si SlotA = 1 et SlotB = 0
- Si SlotA = 0 et SlotB = 1 le script garde en mémoire que la fonction assignée au clic gauche doit d'activer uniquement si SlotA = 0 et SlotB = 1
pression du clic gauche : Si j'ai appuyé sur F1 pour la touche 1, alors, si SlotA = 1 et SlotB = 0, le script se déclenche, si j'ai appuyé sur 2/3/G, le script détecte que SlotA n'est pas égal à 1 et ne déclenche pas le rapidfire

Re: Assigner une touche à l'utilisation d'un script

Post by joedf » 27 May 2020, 17:54

Je suis pas certain de comprendre ce que tu cherches à faire... :/
Peut-être si tu me le décrit plus schématiquement?

Par exemple:
F1 -> fait ceci
3 -> Fait cela
F2 -> fait ceci, si variable = qqch

:think: ?

Re: Assigner une touche à l'utilisation d'un script

Post by blastedmodzz » 27 May 2020, 14:46

c'est assez.. gros.. mais voici le code complet du script dont je parlais, je n'ai pas besoin de récupérer les patern en soi c'est juste la base qui m'intéresse, assigner une arme à la touche 1/2 et agir en fonction de l'arme assignée à cette touche quand je clique, malheureusement, avec mon niveau plus que nul, je comprends pas grand chose..

Code: Select all

#NoEnv
#KeyHistory, 0
#SingleInstance force
#MaxThreadsBuffer on
#Persistent
;#NoTrayIcon ;if you care (not reccomend)
SetBatchLines, -1
ListLines, Off
SetWorkingDir %A_ScriptDir%

;-----editplz-----
sens:=3.5 ;Edit this to your in-game sens
bind_bhop=Numpad1 ;This button should be binded sub-crouch[hold] key in Game setting
subjumpkey=Numpad9 ;This button should be binded sub-Jump key in Game setting
subshootkey=Numpad0 ;This button should be binded sub-Attack key in Game setting

bind_1=1
bind_2=2
bind_run=3 ;Run key
bind_reset=f6 ;Reset button
bind_granade=g ;Granade key
bind_r31=f1
bind_r9=f2
bind_pros=f3
bind_pro=f4
bind_lstar=f5
bind_flat=f7
bind_devo=f8
bind_hav=f9
;----hotkey registor-----
Hotkey, ~$*%bind_1%, key_1
Hotkey, ~$*%bind_2%, key_2
Hotkey, ~$*%bind_run%, key_3
Hotkey, ~$*%bind_r31%, r301
Hotkey, ~$*%bind_r9%, r99
Hotkey, ~$*%bind_pros%, prowlerselect
Hotkey, ~$*%bind_pro%, prowler
Hotkey, ~$*%bind_lstar%, lstar
Hotkey, ~$*%bind_flat%, flatline
Hotkey, ~$*%bind_devo%, devotion
Hotkey, ~$*%bind_hav%, havoc
Hotkey, ~$*%bind_reset%, key_reset
Hotkey, ~$*%bind_granade%, key_granade
Hotkey, ~$*%bind_bhop%, key_bhop

; ~~~~~~~~~~~~~~~~~Pattern~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
no_pattern := {}
r301_pattern := {1: "-3.5,10.4,80", 2: "4.4,10.6,80", 3: "-6.4,9.5,80"
,4: "-1.2,10.0,80", 5: "-5.3,7.6,80", 6: "-0.4,4.1,80"
,7: "-1.8,3.3,80", 8: "-4.1,1.9,80", 9: "-2.4,3.3,80"
,10: "-3.2,1.0,80", 11: "0.0,3.3,80", 12: "2.0,2.2,80"
,13: "5.0,2.8,80", 14: "4.7,2.3,80", 15: "5.0,1.9,80"
,16: "5.2,0.9,80", 17: "3.2,0.9,80", 18: "0.0,2.2,80"
,19: "-1.1,4.2,80", 20: "-3.1,2.8,80", 21: "-3.6,1.3,80"
,22: "-3.6,0.0,80", 23: "-2.6,1.4,80", 24: "-2.4,1.4,80"
,25: "-3.0,0.0,80", 26: "0.0,0.0,80", 27: "0.0,0.0,80"
,28: "0.0,0.0,80", 29: "0.0,0.0,80", 30: "0.0,0.0,80"}

r99_pattern := {1: "-1.6,7,53", 2: "0.1,7,53", 3: "2.3,5.9,53"
,4: "-1.8,10.2,53", 5: "-3.3,14.9,53", 6: "-6.3,13,53"
,7: "-5.5,9.7,53", 8: "-2.5,8.8,53", 9: "0.2,9,52"
,10: "2.3,7.8,52", 11: "4.5,7.3,52", 12: "0.9,6.1,52"
,13: "1.6,8.5,52", 14: "-1.1,4,52", 15: "-4.9,1,52"
,16: "-2.3,2.8,52", 17: "-4.5,1.5,52", 18: "4,2.3,52"
,19: "0,2,52", 20: "2.5,1.7,52", 21: "3.5,1.7,52"
,22: "4,2.6,52", 23: "3.5,2,52", 24: "4.6,2,52"
,25: "2,1.5,52", 26: "2,2,52", 27: "-5,3,52"
,28: "-5,0,52", 29: "-5,1,52", 30: "0,0,52"}

prowlerselect_pattern := {1: "2,15.2,120", 2: "2,11.7,120", 3: "2,12.9,120"
,4: "2,12.4,120", 5: "3,9.4,120", 6: "3,10.6,120"
,7: "3,9.0,120", 8: "3,8.5,120", 9: "-2,3.9,120"
,10: "-3,6.0,120", 11: "-3,6.0,120", 12: "-3,6.4,120"
,13: "-3,6.9,120", 14: "-3,3.9,120", 15: "3,7.8,120"
,16: "3,4.8,120", 17: "3,3.7,120", 18: "0,3.9,120"
,19: "0,6.0,120", 20: "0.0,5.3,120", 21: "0.0,0.0,120"}

prowler_pattern := {1: "0.7,17.3,36", 2: "0.3,15.0,36", 3: "0.3,14.3,36"}

lstar_pattern := {1: "0,5,37", 2: "0,5,37", 3: "0,5,37"
,4: "2,5,37", 5: "2,5,37", 6: "2,5,37"
,7: "2,5,37", 8: "2,5,37", 9: "2,5,37"
,10: "0,5,32", 11: "0,5,32", 12: "0,5,37"
,13: "0,5,32", 14: "0,5,32", 15: "0,5,32"
,16: "0,5,42", 17: "0,5,42", 18: "0,5,42"
,19: "0,5,42", 20: "0,5,42", 21: "0,5,42"
,22: "0,5,42", 23: "0,5,55", 24: "0,5,55"
,25: "0,5,55", 26: "0,5,55", 27: "0,5,55"
,28: "0,5,55", 29: "0,5,55", 30: "0,5,55"
,31: "0,5,55", 32: "0,5,55", 33: "0,5,55"
,34: "0,5,55", 35: "0,5,55", 36: "0,5,55"
,37: "0,5,55", 38: "0,5,55", 39: "0,5,55"
,40: "0,5,55", 41: "0,5,55", 42: "0,5,55"
,43: "0,5,55", 44: "0,5,55", 45: "0,5,55"}

flatline_pattern := {1: "3.0,15.2,110", 2: "1.5,5.3,110", 3: "9.6,10.1,110", 4: "6.3,7.5,110"
,5: "3.3,9.7,110", 6: "-1.3,9.7,110", 7: "-4.5,2.6,110", 8: "-10.6,-2.0,110"
,9: "-2.7,-1.3,110", 10: "-3.9,3.5,110", 11: "-1.7,6.6,110", 12: "4.5,2.0,110"
,13: "9.9,4.4,110", 14: "5.1,1.9,110", 15: "9.6,-1.6,110", 16: "4.2,2.1,110"
,17: "1.8,8.3,110", 18: "3.3,8.1,110", 19: "6.9,4.9,110", 20: "9.0,2.3,110"
,21: "3.9,0.6,113", 22: "-1.2,5,113", 23: "-7.9,2.5,113", 24: "-5.5,2,113"
,25: "-8.8,2.2,113", 26: "-9.1,1.5,113", 27: "-8.8,1,113"}



devotion_pattern := {1: "0.0,0.0,40", 2: "0.8,24.5,180", 3: "0.3,20.0,170"
,4: "0.3,23.5,140", 5: "2.0,23.2,120", 6: "3.1,19.5,100"
,7: "2.8,12.6,85", 8: "2.8,10.6,85", 9: "6.2,4.8,85"
,10: "2.8,6.4,85", 11: "3.1,5.8,68", 12: "4.8,7.1,68"
,13: "5.0,4.4,68", 14: "6.2,2.3,68", 15: "7.6,1.8,68"
,16: "7.0,0.5,68", 17: "4.2,-1.6,68", 18: "6.2,1.6,68"
,19: "-1.4,4.6,68", 20: "0.0,5.3,66", 21: "-3.9,3.9,66"
,22: "-4.5,2.3,66", 23: "-4.5,2.5,66", 24: "-6.7,3.0,66"
,25: "-7.0,3.0,66", 26: "-3.1,3.2,66", 27: "1.7,3.7,66"
,28: "-1.4,4.8,66", 29: "-3.6,4.4,66", 30: "-5.0,3.5,70"
,31: "-6.2,2.1,70", 32: "-5.6,-0.5,70", 33: "-5.6,-0.5,70"
,34: "-4.8,3.7,70", 35: "-4.8,3.7,67", 36: "-0.8,4.1,67"
,37: "-2.8,3.5,67", 38: "2.0,3.5,67", 39: "2.0,3.5,66"
,40: "-1.4,3.7,67", 41: "-1.4,2.8,67", 42: "-3.6,1.6,67"
,43: "-1.4,2.3,67", 44: "0.0,3.0,67", 45: "3.6,1.8,67"}

havoc_pattern := {1: "0.0,0.0,460", 2: "-1.1,10.8,84", 3: "5.5,11.9,84"
,4: "-4.8,10.4,84", 5: "2.6,10.8,84", 6: "-4.6,11.0,84"
,7: "-2.0,11.1,84", 8: "-3.7,11.1,84", 9: "-0.9,11.1,84"
,10: "2.8,11.1,84", 11: "5.5,10.3,84", 12: "2.8,11.1,84"
,13: "0.9,10.1,84", 14: "-2.0,10.1,84", 15: "-2.0,10.1,84"
,16: "-3.7,8,83", 17: "-2.8,7,83", 18: "-2.0,5,83"
,19: "-0.9,5.5,83", 20: "0.9,4,84", 21: "2.0,2.8,84"
,22: "2.8,2.8,84", 23: "2.0,2.8,84", 24: "0.9,2.8,84"
,25: "-0.9,2.5,84", 26: "-2.0,2.5,84", 27: "0.0,2,84"
,28: "0.0,2,84", 29: "0.0,2,84", 30: "0.0,2,84"
,31: "0.0,2,84", 32: "0.0,2,84", 33: "0.0,0.0,100"}
;~~~~~~~~~~~~~~~~~~~~~~~Base state~~~~~~~~~~~~~~~~~~~~~~~~~~
slotA:=1 ;Slot1 activate memory Var
slotB:=0 ;Slot2 activate memory Var
memA:=non ,memB:=non ;Weapon pattern memory Var
memR1:=0 memR2:=0 ;Fire-mode memory Var
active_pattern:=no_pattern
modifier:= 3.4/sens
rate=10
volume=80
SAPI := ComObjCreate("SAPI.SpVoice")
SAPI.rate:=rate
SAPI.volume:=volume
rapidmode:=0

isCursorShown()
{
StructSize := A_PtrSize + 16
VarSetCapacity(InfoStruct, StructSize)
NumPut(StructSize, InfoStruct)
DllCall("GetCursorInfo", UInt, &InfoStruct)
Result := NumGet(InfoStruct, 8)
if Result > 1
Return 1
else
Return 0
}
Loop {
Sleep 50
if isCursorShown() == 1
mice:=1
else
mice:=0
}

; ~~~~~~~~~~~~~~~~~Base activation~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
key_1:
slotA:=1
slotB:=0
active_pattern:=%memA%_pattern
rapidmode:=memR1
SAPI.Speak(memA)
return

key_2:
slotA:=0
slotB:=1
active_pattern:=%memB%_pattern
rapidmode:=memR2
SAPI.Speak(memB)
return

key_3:
key_granade:
active_pattern:=no_pattern
rapidmode:=()
if GetKeyState(bind_run,"P")
SAPI.Speak("courir")
else if GetKeyState(bind_granade,"P")
SAPI.Speak("granade")
return

key_reset:
active_pattern:=no_pattern
slotA:=1
slotB:=0
memA:=non
memB:=non
memR1:=0
memR2:=0
rapidmode:=0
SAPI.Speak("réset")
return

; ~~~~~~~~~~~~~~~~~~~~~~~~~~Weapon Profile~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Full-Auto Weapon section
r301:
r99:
lstar:
flatline:
devotion:
havoc:

prowlerselect:
{
nullA := A_thislabel
active_pattern:=%nullA%_pattern
rapidmode:=0
if (slotA)
memA:=nullA ,memR1:=0
else
memB:=nullA ,memR2:=0
SAPI.Speak(nullA)
}
return

;Tap or burst weapon section
prowler:
{
nullA := A_thislabel
active_pattern:=%nullA%_pattern
rapidmode:=0
if (slotA)
memA:=nullA ,memR1:=1
else
memB:=nullA ,memR2:=1
SAPI.Speak(nullA)
}
return

; ~~~~~~~~~~~~~~~~~~~~~~Main~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
key_bhop:
sleep 150
while GetKeyState(bind_bhop, "P")
{
Random, foo, 50, 100
Send % subjumpkey
Sleep %foo%
send {space}
sleep %foo%
}
return

#IF mice=0 ; Disable switch cursor shown (start line)
~$*LButton::
sleep 5
loop {
if (rapidmode) ;For Tap Weapon
{
if a_index<3 ; remove bug
click
else
random, foo2, 1, 2
if(foo2=1)
click
else
send % subshootkey
}
x := strsplit(active_pattern[a_index],",")[1] ;using str insteed of normal array for easly edit pattern
y := strsplit(active_pattern[a_index],",")[2]
t := strsplit(active_pattern[a_index],",")[3]
dllcall("mouse_event","UInt",0x01,"UInt",x*modifier,"UInt",y*modifier)
sleep t
} until !GetKeyState("LButton","P") || a_index > active_pattern.maxindex()
return
#IF ; Disable switch cursor shown (end line)

~end::
SAPI.Speak("bye")
Exitapp
return

Re: Assigner une touche à l'utilisation d'un script

Post by blastedmodzz » 27 May 2020, 14:41

Bonjour, merci pour votre réponse mais dans ce cas, comment faire pour que le script détecte que je ne suis pas en train de courir ou que je n'utilise pas un grenade ? (3/G)
bind_run=3
bind_granade=g

Hotkey, ~$*%bind_run%, key_3
Hotkey, ~$*%bind_granade%, key_granade
désolé si ma question est bête mais je suis pas vraiment doué avec AutoHotkey :/
pour être honnête je me base sur un script que j'utilisais auparavant qui marchait pour environ 6/7 armes, en appuyant sur 1 puis F2 par exemple il assignait une arme à 1, puis si j'appuyais sur 2 puis F4 il en assignait une autre ou si je n'appuyais sur aucun F, il ne faisait rien, la base que j'ai vient de ce que j'ai pu "comprendre" et récupérer dans ce script.. :/

Re: Assigner une touche à l'utilisation d'un script

Post by joedf » 27 May 2020, 13:02

Je pense qu'il serait plus simple si tu fait une section/fonction séparer pour assigner les touches.

Code: Select all

F1::
bind_1:=1
bind_2:=0
gosub, UpdateHotkeys
return

F2::
bind_1:=0
bind_2:=1
gosub, UpdateHotkeys
return

UpdateHotkeys:
;unbind and rebind, fonctionne si c'est seulement les mêmes touches, ex: 1 ou 2
Hotkey, ~$*%bind_1%, Off
Hotkey, ~$*%bind_2%, Off
Hotkey, ~$*%bind_1%, key_1
Hotkey, ~$*%bind_2%, key_2
Return

Top