Вопросы по AHK-скриптингу

Patrickkk

Участник
162
19
Как сделать чтобы когда я закрываю АХК, с ним закрывались и плагины которые я запускал туда через Run ?
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
плагины которые я запускал туда через Run
Плагины?
Ну а вообще знать названия этих "плагинов" и после поиска их индификатора процесса закрывать процесс ну либо любой другой метод закрытия.
 
Последнее редактирование:

asdzxcjqwe

¯\_(ツ)_/¯
Друг
621
704
Как сделать чтобы когда я закрываю АХК, с ним закрывались и плагины которые я запускал туда через Run ?

AutoHotKey:
#NoEnv
#SingleInstance force
#Persistent
OnExit, onClose

while(true)
    sleep 1

!1:: Run C:\Program Files (x86)\Sanny Builder 3\sanny.exe

onClose:
    pid := DllCall("GetCurrentProcessId", "uint")
    for process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process Where ParentProcessId = " pid)
        run % "taskkill /f /pid " process.processId,, hide
    if A_ExitReason == "Reload"
        Reload
ExitApp
 

Patrickkk

Участник
162
19
AutoHotKey:
#NoEnv
#SingleInstance force
#Persistent
OnExit, onClose

while(true)
    sleep 1

!1:: Run C:\Program Files (x86)\Sanny Builder 3\sanny.exe

onClose:
    pid := DllCall("GetCurrentProcessId", "uint")
    for process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process Where ParentProcessId = " pid)
        run % "taskkill /f /pid " process.processId,, hide
    if A_ExitReason == "Reload"
        Reload
ExitApp
Очень благодарен, но можно описание к коду, что что делает? :dd
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Очень благодарен, но можно описание к коду, что что делает? :dd
Вот это делает:
Как сделать чтобы когда я закрываю АХК, с ним закрывались и плагины которые я запускал туда через Run ?
А так первая часть особо роли не играет.
Только:
AutoHotKey:
OnExit, onClose
Перейдет к метки onClose, при закрытии нашего скрипта
Вторая часть это Dll вызов в WinAPI для получения нужного pid процесса.
А далее их закрытие посредством той же виндовс через taskkill.
 

Patrickkk

Участник
162
19
Вот это делает:

А так первая часть особо роли не играет.
Только:
AutoHotKey:
OnExit, onClose
Перейдет к метки onClose, при закрытии нашего скрипта
Вторая часть это Dll вызов в WinAPI для получения нужного pid процесса.
А далее их закрытие посредством той же виндовс через taskkill.
спа си бо
 

TopMo3

Участник
121
7
Возможно сделать через АХК скрипт, автологин.
Т.е.
Например пишешь в игре команду /alogin.
Открывается меню и пишет.
Введите пароль
Потом
Введите безопасный пароль
После чего это все сохраняется, и когда заходишь в игру автоматически писалось.
 

Aforikss

Новичок
4
0
Как я могу через ахк реализовать в сампе быстрый набор команды, например, чтобы мне сделать дигл мне не нужно было писать /makegun 2 [количество патрон],
вместо этого я могу написать просто /dg [количество патрон], помогите.
 

Dragon Nikki

Новичок
5
1
Кто может подсказать, что это такое и как с этим работать?


\{424242\}\(([A-zА-я0-9]+)\)\[(\d+)]

Вот сам код:

Код:
F3::
gocmd := ""
chatlog := A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
loop, read, % chatlog
{
    f := Format("{:L}", A_LoopReadLine) ; переводим всё в нижний регистр для облегчения поиска
    if f contains увал псж,увал меня,увал по сж,увал по собственному
    {
        if RegExMatch(f, "\{424242\}\(([A-zА-я0-9]+)\)\[(\d+)]", playerinfo) ; playerinfo1 - nick, playerinfo2 - id
            gocmd := "/uninvite " playerinfo2 " СЖ"
    }
}
if strlen(gocmd)
    sendinput {f6}%gocmd%{enter}
; а лучше без {enter} и самому его нажимать, а то вдруг че
return
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Кто может подсказать, что это такое и как с этим работать?


\{424242\}\(([A-zА-я0-9]+)\)\[(\d+)]

Вот сам код:

Код:
F3::
gocmd := ""
chatlog := A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
loop, read, % chatlog
{
    f := Format("{:L}", A_LoopReadLine) ; переводим всё в нижний регистр для облегчения поиска
    if f contains увал псж,увал меня,увал по сж,увал по собственному
    {
        if RegExMatch(f, "\{424242\}\(([A-zА-я0-9]+)\)\[(\d+)]", playerinfo) ; playerinfo1 - nick, playerinfo2 - id
            gocmd := "/uninvite " playerinfo2 " СЖ"
    }
}
if strlen(gocmd)
    sendinput {f6}%gocmd%{enter}
; а лучше без {enter} и самому его нажимать, а то вдруг че
return
Это регулярки. В интернете ищи уроки.
 

Kolya_Kortez

Участник
49
3
Как сделать, проверку успешен ли /try или нет , если не успешен, повторять , до тех пор, пока не будет успешно.

Код:
Sendinput, {F6}/me осмотрел пациента{ENTER}
            Sleep, 1500
            Sendinput, {F6}/do Медицинская сумка на плече.{ENTER}
            Sleep, 1000
            Sendinput, {F6}/me достал полиуретановый бинт из медицинской сумки{ENTER}
            Sleep, 600
            Sendinput, {F6}/try зафиксировал конечность{ENTER}

Заранее спасибо за помощь)
 

TopMo3

Участник
121
7
Напишите код, который будет писать, когда тебя убили.
[AHK] Вас убил игрок (ник).
Буду благодарен.
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Два разных вопроса.
Код уже был в вопросах по AHK, ищи.

Как сделать, проверку успешен ли /try или нет , если не успешен, повторять , до тех пор, пока не будет успешно.

Код:
Sendinput, {F6}/me осмотрел пациента{ENTER}
            Sleep, 1500
            Sendinput, {F6}/do Медицинская сумка на плече.{ENTER}
            Sleep, 1000
            Sendinput, {F6}/me достал полиуретановый бинт из медицинской сумки{ENTER}
            Sleep, 600
            Sendinput, {F6}/try зафиксировал конечность{ENTER}

Заранее спасибо за помощь)
Регуляркой чат читаешь и все.
 

Shpic

Известный
27
1
Добрый день. Вот есть код, нашел на просторах ентирнета:
AutoHotKey:
if (isPlayerDriverMod()==1)
   {
   NumberPre:=NumberPre+1
   if (NumberPre==2)
      {
      s := "0"
      p := getStreamedInPlayersInfo()
      For i, o in p
         {
         if(getTargetVehicleModelNameById(i)!="PoliceCar" and getTargetVehicleModelNameById(i)!="" and getTargetVehicleModelNameById(i)!="HPV1000" and getTargetVehicleModelNameById(i)!="Enforcer" getTargetVehicleModelNameById(i)!="Sultan" and isTargetInAnyVehiclebyIdMod(i)=="1" and i==IdInCar)
            {
            s:="1"
            ModelCar:=getTargetVehicleModelNameById(IdInCar)
            SendChat("/m Водитель " ModelCar "!")
            sleep 1200
            SendChat("/m Если вы сейчас же не остановитесь, мы будем стрелять!")
            NumberPre:=0
            }
         }
      if (s==0)
         NumberPre:="1"
      }
   if (NumberPre==1)
      {
      IdInCar:=getClosestPlayerIdCar()
      ModelCar:=getTargetVehicleModelNameById(IdInCar)
      if (IdInCar!=-1)
         {
         Random rand, 1, 4
         if (rand==1)
            {
            SendChat("/m Водитель " ModelCar "!")
            sleep 1200
            SendChat("/m Немедленно прижмитесь к обочине и остановитесь или откроем огонь!")
            }
         if (rand==2)
            {
            SendChat("/m Водитель " ModelCar " прижмитесь к обочине")
            sleep 1200
            SendChat("/m В противном случае нам придется открыть огонь!")
            }
         if (rand==3)
            {
            SendChat("/m Водитель " ModelCar " сбавьте скорость!")
            sleep 1200
            SendChat("/m Вам придется прижаться к обочине и остановится или начнем стрелять!")
            }
         if (rand==4)
            {
            SendChat("/m Водитель " ModelCar " остановитесь на обочине")
            sleep 1200
            SendChat("/m Или нам придется открыть по вам огонь!")
            }
         }
      else
         NumberPre:="0"
      }
   }
if (isPlayerDriverMod()==0)
   {
   NumberPre:=NumberPre+1
   if (NumberPre==2)
      {
      s := "0"
      p := getStreamedInPlayersInfo()
      For i, o in p
         {
         if(getTargetVehicleModelNameById(i)!="PoliceCar" and getTargetVehicleModelNameById(i)!="" and getTargetVehicleModelNameById(i)!="HPV1000" and getTargetVehicleModelNameById(i)!="Enforcer" and isTargetInAnyVehiclebyIdMod(i)=="1" and i==IdInCar)
            {
            s:=1
            ModelCar:=getTargetVehicleModelNameById(IdInCar)
            SendChat("/m Водитель " ModelCar "!")
            sleep 1200
            SendChat("/m Если вы сейчас же не остановитесь, мы будем стрелять!")
            NumberPre:=0
            }
         }
      if (s==0)
         NumberPre:="1"
      }
   if (NumberPre==1)
      {
      model:=[]
      name:=[]
      s := 0
      p := getStreamedInPlayersInfo()
      id :=[]
      MainMenu:=""
      For i, o in p
         {
         if(getTargetVehicleModelNameById(i)!="PoliceCar" and getTargetVehicleModelNameById(i)!="" and getTargetVehicleModelNameById(i)!="HPV1000" and getTargetVehicleModelNameById(i)!="Enforcer" and isTargetInAnyVehiclebyIdMod(i)=="1")
            {
            s:=s+1
            id[S] := i
            model[S]:=getTargetVehicleModelNameById(i)
            name[S]:=getPlayerNameById(i)
            MainMenu:= MainMenu "Водитель - " name[S] ", Марка машины -" model[S] ", Введите " s ".`n"
            }
         }
      MainMenu:= MainMenu "Для отмены операции введите 0."
      if (s==0)
         NumberPre:="0"
      if (s==1)
         {
         IdInCar:=id[1]
         ModelCar:=getTargetVehicleModelNameById(IdInCar)
         Random rand, 1, 4
         if (rand==1)
            {
            SendChat("/m Водитель " ModelCar "!")
            sleep 1200
            SendChat("/m Немедленно прижмитесь к обочине и остановитесь или откроем огонь!")
            }
         if (rand==2)
            {
            SendChat("/m Водитель " ModelCar " прижмитесь к обочине")
            sleep 1200
            SendChat("/m В противном случае нам придется открыть огонь!")
            }
         if (rand==3)
            {
            SendChat("/m Водитель " ModelCar " сбавьте скорость!")
            sleep 1200
            SendChat("/m Вам придется прижаться к обочине и остановится или начнем стрелять!")
            }
         if (rand==4)
            {
            SendChat("/m Водитель " ModelCar " остановитесь на обочине")
            sleep 1200
            SendChat("/m Или нам придется открыть по вам огонь!")
            }
         }
      if (s>1)
         {
         ShowDialog("1", "Выбор машины:", MainMenu, "Сообщить")
         Input,vi, V, {Enter}
         if (vi>=1 and vi<=s)
            {
            IdInCar:=id[vi]
            ModelCar:=getTargetVehicleModelNameById(IdInCar)
            Random rand, 1, 4
            if (rand==1)
               {
               SendChat("/m Водитель " ModelCar "!")
               sleep 1200
               SendChat("/m Немедленно прижмитесь к обочине и остановитесь или откроем огонь!")
               }
            if (rand==2)
               {
               SendChat("/m Водитель " ModelCar " прижмитесь к обочине")
               sleep 1200
               SendChat("/m В противном случае нам придется открыть огонь!")
               }
            if (rand==3)
               {
               SendChat("/m Водитель " ModelCar " сбавьте скорость!")
               sleep 1200
               SendChat("/m Вам придется прижаться к обочине и остановится или начнем стрелять!")
               }
            if (rand==4)
               {
               SendChat("/m Водитель " ModelCar " остановитесь на обочине")
               sleep 1200
               SendChat("/m Или нам придется открыть по вам огонь!")
               }
            }
         else
            NumberPre:="0"
         }
      }
   }
return
Но он какой то не рабочий, запускаться не хочет, где тут поправки нужны ?
Заранее спасибо!
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Добрый день. Вот есть код, нашел на просторах ентирнета:
AutoHotKey:
if (isPlayerDriverMod()==1)
   {
   NumberPre:=NumberPre+1
   if (NumberPre==2)
      {
      s := "0"
      p := getStreamedInPlayersInfo()
      For i, o in p
         {
         if(getTargetVehicleModelNameById(i)!="PoliceCar" and getTargetVehicleModelNameById(i)!="" and getTargetVehicleModelNameById(i)!="HPV1000" and getTargetVehicleModelNameById(i)!="Enforcer" getTargetVehicleModelNameById(i)!="Sultan" and isTargetInAnyVehiclebyIdMod(i)=="1" and i==IdInCar)
            {
            s:="1"
            ModelCar:=getTargetVehicleModelNameById(IdInCar)
            SendChat("/m Водитель " ModelCar "!")
            sleep 1200
            SendChat("/m Если вы сейчас же не остановитесь, мы будем стрелять!")
            NumberPre:=0
            }
         }
      if (s==0)
         NumberPre:="1"
      }
   if (NumberPre==1)
      {
      IdInCar:=getClosestPlayerIdCar()
      ModelCar:=getTargetVehicleModelNameById(IdInCar)
      if (IdInCar!=-1)
         {
         Random rand, 1, 4
         if (rand==1)
            {
            SendChat("/m Водитель " ModelCar "!")
            sleep 1200
            SendChat("/m Немедленно прижмитесь к обочине и остановитесь или откроем огонь!")
            }
         if (rand==2)
            {
            SendChat("/m Водитель " ModelCar " прижмитесь к обочине")
            sleep 1200
            SendChat("/m В противном случае нам придется открыть огонь!")
            }
         if (rand==3)
            {
            SendChat("/m Водитель " ModelCar " сбавьте скорость!")
            sleep 1200
            SendChat("/m Вам придется прижаться к обочине и остановится или начнем стрелять!")
            }
         if (rand==4)
            {
            SendChat("/m Водитель " ModelCar " остановитесь на обочине")
            sleep 1200
            SendChat("/m Или нам придется открыть по вам огонь!")
            }
         }
      else
         NumberPre:="0"
      }
   }
if (isPlayerDriverMod()==0)
   {
   NumberPre:=NumberPre+1
   if (NumberPre==2)
      {
      s := "0"
      p := getStreamedInPlayersInfo()
      For i, o in p
         {
         if(getTargetVehicleModelNameById(i)!="PoliceCar" and getTargetVehicleModelNameById(i)!="" and getTargetVehicleModelNameById(i)!="HPV1000" and getTargetVehicleModelNameById(i)!="Enforcer" and isTargetInAnyVehiclebyIdMod(i)=="1" and i==IdInCar)
            {
            s:=1
            ModelCar:=getTargetVehicleModelNameById(IdInCar)
            SendChat("/m Водитель " ModelCar "!")
            sleep 1200
            SendChat("/m Если вы сейчас же не остановитесь, мы будем стрелять!")
            NumberPre:=0
            }
         }
      if (s==0)
         NumberPre:="1"
      }
   if (NumberPre==1)
      {
      model:=[]
      name:=[]
      s := 0
      p := getStreamedInPlayersInfo()
      id :=[]
      MainMenu:=""
      For i, o in p
         {
         if(getTargetVehicleModelNameById(i)!="PoliceCar" and getTargetVehicleModelNameById(i)!="" and getTargetVehicleModelNameById(i)!="HPV1000" and getTargetVehicleModelNameById(i)!="Enforcer" and isTargetInAnyVehiclebyIdMod(i)=="1")
            {
            s:=s+1
            id[S] := i
            model[S]:=getTargetVehicleModelNameById(i)
            name[S]:=getPlayerNameById(i)
            MainMenu:= MainMenu "Водитель - " name[S] ", Марка машины -" model[S] ", Введите " s ".`n"
            }
         }
      MainMenu:= MainMenu "Для отмены операции введите 0."
      if (s==0)
         NumberPre:="0"
      if (s==1)
         {
         IdInCar:=id[1]
         ModelCar:=getTargetVehicleModelNameById(IdInCar)
         Random rand, 1, 4
         if (rand==1)
            {
            SendChat("/m Водитель " ModelCar "!")
            sleep 1200
            SendChat("/m Немедленно прижмитесь к обочине и остановитесь или откроем огонь!")
            }
         if (rand==2)
            {
            SendChat("/m Водитель " ModelCar " прижмитесь к обочине")
            sleep 1200
            SendChat("/m В противном случае нам придется открыть огонь!")
            }
         if (rand==3)
            {
            SendChat("/m Водитель " ModelCar " сбавьте скорость!")
            sleep 1200
            SendChat("/m Вам придется прижаться к обочине и остановится или начнем стрелять!")
            }
         if (rand==4)
            {
            SendChat("/m Водитель " ModelCar " остановитесь на обочине")
            sleep 1200
            SendChat("/m Или нам придется открыть по вам огонь!")
            }
         }
      if (s>1)
         {
         ShowDialog("1", "Выбор машины:", MainMenu, "Сообщить")
         Input,vi, V, {Enter}
         if (vi>=1 and vi<=s)
            {
            IdInCar:=id[vi]
            ModelCar:=getTargetVehicleModelNameById(IdInCar)
            Random rand, 1, 4
            if (rand==1)
               {
               SendChat("/m Водитель " ModelCar "!")
               sleep 1200
               SendChat("/m Немедленно прижмитесь к обочине и остановитесь или откроем огонь!")
               }
            if (rand==2)
               {
               SendChat("/m Водитель " ModelCar " прижмитесь к обочине")
               sleep 1200
               SendChat("/m В противном случае нам придется открыть огонь!")
               }
            if (rand==3)
               {
               SendChat("/m Водитель " ModelCar " сбавьте скорость!")
               sleep 1200
               SendChat("/m Вам придется прижаться к обочине и остановится или начнем стрелять!")
               }
            if (rand==4)
               {
               SendChat("/m Водитель " ModelCar " остановитесь на обочине")
               sleep 1200
               SendChat("/m Или нам придется открыть по вам огонь!")
               }
            }
         else
            NumberPre:="0"
         }
      }
   }
return
Но он какой то не рабочий, запускаться не хочет, где тут поправки нужны ?
Заранее спасибо!
Слишком по быдлокодскому, пиши функцию.
Да и скрин ошибки в студию.
 
Последнее редактирование модератором: