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

RellaX

Известный
80
9
Как сделать скрипт
При вводе строки в чат предположим:
/увал 228 Причина
необходимо сделать, чтобы id и причина записывались в разные переменные
в случае с id подошла обычная регулярка с \d
а вот как выделить причину (слов может быть несколько)
Как пример:
PHP:
if (RegExMatch(chtext, "i)^/uval\s([0-9]{1,3})\s(.*)$", uval))
    {
        uvalname := getPlayerNameById(uval1)
        if (uvalname)
            SendChat("/uninvite " uval1 " " uval2 )
        else
            addChatMessageEx("bebebe", "[{f44141}Ошибка{bebebe}] Игрока с ID: {f44141}" uval1 " {bebebe}нету на сервере!")
    }
 
  • Нравится
Реакции: Stan.Lamare

Overseas

Новичок
16
1
Помогите пожалуйста. Мне нужно что бы в одном скрипте было 2 ветки. Назову вот этот кусок "основной веткой":
Код:
~Delete::
if(isInChat())
Return
SendMessage, 0x50,, 0x4190419,, A
SendChat("/me достал бланк и КПК из заднего кармана, включил КПК, нашёл владельца     транспортного средства по номеру авто")
sleep, 2300
SendChat("/me вписал в бланк владельца, сумму и причину штрафа, указал дату и подпись, затем поставил печать ""LSPD""")
sleep, 2300
SendChat("/me заполнил электронную информацию о штрафе в КПК, выключил КПК и положил  обратно в карман, передал бланк гражданину напротив")
sleep, 2300
Sendinput, {F6}/ticket%A_Space%%A_Space%КоАП | LSPD{Home}{Right 8}
KeyWait, Enter , D
sleep, 500
SendChat("/time")
sleep, 300
Sendinput, {F2}
Return
Необходимо что бы во время активации данного скрипта на "Delete", он начинал идти по основной ветке, но в тоже время ожидал нажатия например клавиши "End", при нажатии которой, основная ветка перестала бы выполняться и активировалась бы вторичная ветка (с другой отыгровкой, в данном случае мне хотелось бы иметь отыгровку отмены заполнения штрафа).
При том клавиша "End" уже используется в другом скрипте, то есть нужно что бы на момент активности данного, не срабатывал тот другой с этой же кнопкой, если вдруг я ее нажму.
 
Последнее редактирование:

Tiva

Известный
76
1
Нужно чтобы когда открывал ahk. Он создал ini файл.
После в игре я написал /num [номер телеофна]
И в /n напишите МГ РП ТК на норме [тот номер который я написал в /num]
 

#saniwe

глаза пофикси
218
107
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вопрос решил, ля инет херовый удалить не могу - грузит и все. модеры будут - дельните
 
Последнее редактирование:

Leopoldywka

Новичок
11
5
Помогите, нашёл на просторах форума скрипт, но в нём много не нужных мне функций, я захотел урезать его и вышло это
AutoHotKey:
#SingleInstance Force
#Persistent
#NoEnv
#Include udf.ahk
#IfWinActive GTA:SA:MP
SendMode Input
SetWorkingDir %A_ScriptDir%

IfnotExist, %A_ScriptDir%\Settings
{
   FileCreateDir, %A_ScriptDir%\Settings
}
IfnotExist, %A_ScriptDir%\Settings\settings.ini
{
   URLDownloadToFile, https://drive.google.com/uc?authuser=0&id=1um--DPxjtOBwyj5qzr6MSYt7Ntq0cl9L&export=download, %A_ScriptDir%\Settings\settings.ini
}

set := ""
set = %A_ScriptDir%\Settings\settings.ini
global set

IniRead, lastReloadScr, %set%, settings, ReloadScr
IniRead, lastExitScr, %set%, settings, ExitScr
IniRead, CorrectChat, %set%, settings, CorrectChat
IniRead, Accent, %set%, settings, Accent

Menu, Tray, add, Open, Open
Menu, Tray, add,
Menu, Tray, add, Reload, mReload
Menu, Tray, add,
Menu, Tray, add, Exit, Close
Menu, Tray, NoStandard

Gui, Font, S10 CDefault, Verdana
Gui, Add, Hotkey, x12 y9 w70 h20 vReloadScr, %lastReloadScr% 
Gui, Add, Text, x92 y9 w160 h20, Перезагрузка скрипта.
Gui, Add, Hotkey, x12 y39 w70 h20 vExitScr, %lastExitScr%
Gui, Add, Text, x92 y39 w160 h20, Деактивация скрипта.
Gui, Add, CheckBox, x12 y69 w230 h20 Checked%CorrectChat% vCorrectChat, Корректировка предложений.
Gui, Add, Edit, x12 y99 w170 h20 +Text vAccent, %Accent%
Gui, Add, Text, x192 y99 w60 h20, Акцент.
Gui, Add, Button, x22 y129 w100 h30 gClose, Выход
Gui, Add, Button, x132 y129 w100 h30 gSave, Сохранить
Gui, Font, S8 CGreen, Verdana
Gui, Show, w259 h170, AutoAccent
return

if (Window = 1)
   goto Open
else goto Save
Return

Open:
Gui, Show, Center, AutoAccent
return

Save:
Gosub SaveConfig
Gui, Hide
TrayTip, AutoAccent, Настройки сохранены.
return

Close:
ExitApp

mReload:
Reload
sleep 500
return

SaveConfig:
Gui, Submit, NoHide

Hotkey, %lastReloadScr%, LabelReloadScr, Off, UseErrorLevel
Hotkey, %ReloadScr%, LabelReloadScr, On , UsEerrorlevel
IniWrite, %ReloadScr% , %set%, settings, ReloadScr
lastReloadScr := ReloadScr

Hotkey, %lastExitScr%, LabelExitScr, Off, UseErrorLevel
Hotkey, %ExitScr%, LabelExitScr, On , UsEerrorlevel
IniWrite, %ExitScr% , %set%, settings, ExitScr
lastExitScr := ExitScr

IniWrite, %CorrectChat%, %set%, settings, CorrectChat


IniWrite, %Accent%, %set%, settings, Accent
if !Accent
   Accent := ""
else Accent := "[" Accent "]: "

IniWrite, %Tag%, %set%, settings, Tag
Tag := Tag " "
Return

LabelReloadScr:
PrintLow("~g~Script Reload", "500")
goto mReload
Return

LabelExitScr:
addChatMessageEx("FFFFFF","• {00CC00}[Успешно] {FFFFFF}Cкрипт был деактивирован.")
goto Close
Return

!E::
SendChat("/lock")
return

chatProcessed:
if (Emotions = 1) {
   For k, elem in ArraySmile 
   {
      if RegExMatch(chatInput, "^" elem[1] "$")
      {
         if (elem[2] = -1)
            SendChat(chatInput)
         else Sendchat("/me " elem[2])
         Exit
      }
   }
}
if RegExMatch(chatInput,"^[\(\)][\(\)]?$") {
   SendChat(chatInput)
   Exit
}
if (CorrectChat = 1)
   chatInput := converting(chatInput)
SendChat(Accent chatInput)
return

cmdProcessed:
if RegExMatch(chatInput, "^\/me (.*)$", text) {
   StringLower, text1, text1
   SendChat("/me " text1)
}
else if RegExMatch(chatInput, "^\/do (.*)$", text) {
   text1 := converting(text1)
   SendChat("/do " text1)
}
else if RegExMatch(chatInput, "^\/r (.*)$", text) {
   if (CorrectChat = 1) and !RegExMatch(text1, "^\(\(")
      text1 := converting(text1)
   SendChat("/r " text1)
}
; ========
; ========
; ========
else if RegExMatch(chatInput, "^\/f (\Q" Tag "\E)(.*)", text) {
   if RegExMatch(text2, "^(?:\s+)?$") {
      Exit
   }
   if RegExMatch(text2, "[Кк]хм|[Кк]хе|[Кк]хэ|[Кк]хемс")
      text1 := ""
   if !RegExMatch(text2, "^\(\(")
      text2 := converting(text2)
   SendChat("/f " text1 text2)
}


ArrayToSendChat(sleepTime, Array) {
   Loop % Array.MaxIndex()-1 
   {
      SendChat(Array[A_Index])
      sleep % sleepTime
   }
   SendChat(Array[Array.MaxIndex()])
}


CalcTheTime(Hour, Min, Sec, time)
{
   if Sec-time < 0 {
      LSec := 60-abs(Sec-time)
      if Min = 0 
      {
         LMin := 59
         if Hour = 0
            LHour := 23
         else LHour := Hour-1
      }
      else 
      {
         LMin := Min-1
         LHour := Hour
      }
   } 
   else {
      LHour := Hour
      LMin := Min
      LSec := Sec-time
   } 
   return [LHour, LMin, LSec]
}

addNull(value) ; Дописывает незначащий ноль, если это необходимо. (Чисто для красоты)
{
   if strlen(value) = 1
      return "0" value
   else return value
}


converting(text)
{
   RegExMatch(text,"(\s+)?$", space)
   text := RTrim(text, " ")
   RegExMatch(text, "(.{1})(.*)", value)
   StringUpper, value1, value1
   if StrLen(text) = 1
   {
      value1 := ""
      value2 := text
   }
   if RegExMatch(value2,"\.$") or RegExMatch(value2,"\!$") or RegExMatch(value2,"\?$")
      return value1 value2 space1
   else return value1 value2 "." space1
}
Проблема в том, что большинство функций не работают, help
 

#saniwe

глаза пофикси
218
107
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Помогите, нашёл на просторах форума скрипт, но в нём много не нужных мне функций, я захотел урезать его и вышло это
AutoHotKey:
#SingleInstance Force
#Persistent
#NoEnv
#Include udf.ahk
#IfWinActive GTA:SA:MP
SendMode Input
SetWorkingDir %A_ScriptDir%

IfnotExist, %A_ScriptDir%\Settings
{
   FileCreateDir, %A_ScriptDir%\Settings
}
IfnotExist, %A_ScriptDir%\Settings\settings.ini
{
   URLDownloadToFile, https://drive.google.com/uc?authuser=0&id=1um--DPxjtOBwyj5qzr6MSYt7Ntq0cl9L&export=download, %A_ScriptDir%\Settings\settings.ini
}

set := ""
set = %A_ScriptDir%\Settings\settings.ini
global set

IniRead, lastReloadScr, %set%, settings, ReloadScr
IniRead, lastExitScr, %set%, settings, ExitScr
IniRead, CorrectChat, %set%, settings, CorrectChat
IniRead, Accent, %set%, settings, Accent

Menu, Tray, add, Open, Open
Menu, Tray, add,
Menu, Tray, add, Reload, mReload
Menu, Tray, add,
Menu, Tray, add, Exit, Close
Menu, Tray, NoStandard

Gui, Font, S10 CDefault, Verdana
Gui, Add, Hotkey, x12 y9 w70 h20 vReloadScr, %lastReloadScr%
Gui, Add, Text, x92 y9 w160 h20, Перезагрузка скрипта.
Gui, Add, Hotkey, x12 y39 w70 h20 vExitScr, %lastExitScr%
Gui, Add, Text, x92 y39 w160 h20, Деактивация скрипта.
Gui, Add, CheckBox, x12 y69 w230 h20 Checked%CorrectChat% vCorrectChat, Корректировка предложений.
Gui, Add, Edit, x12 y99 w170 h20 +Text vAccent, %Accent%
Gui, Add, Text, x192 y99 w60 h20, Акцент.
Gui, Add, Button, x22 y129 w100 h30 gClose, Выход
Gui, Add, Button, x132 y129 w100 h30 gSave, Сохранить
Gui, Font, S8 CGreen, Verdana
Gui, Show, w259 h170, AutoAccent
return

if (Window = 1)
   goto Open
else goto Save
Return

Open:
Gui, Show, Center, AutoAccent
return

Save:
Gosub SaveConfig
Gui, Hide
TrayTip, AutoAccent, Настройки сохранены.
return

Close:
ExitApp

mReload:
Reload
sleep 500
return

SaveConfig:
Gui, Submit, NoHide

Hotkey, %lastReloadScr%, LabelReloadScr, Off, UseErrorLevel
Hotkey, %ReloadScr%, LabelReloadScr, On , UsEerrorlevel
IniWrite, %ReloadScr% , %set%, settings, ReloadScr
lastReloadScr := ReloadScr

Hotkey, %lastExitScr%, LabelExitScr, Off, UseErrorLevel
Hotkey, %ExitScr%, LabelExitScr, On , UsEerrorlevel
IniWrite, %ExitScr% , %set%, settings, ExitScr
lastExitScr := ExitScr

IniWrite, %CorrectChat%, %set%, settings, CorrectChat


IniWrite, %Accent%, %set%, settings, Accent
if !Accent
   Accent := ""
else Accent := "[" Accent "]: "

IniWrite, %Tag%, %set%, settings, Tag
Tag := Tag " "
Return

LabelReloadScr:
PrintLow("~g~Script Reload", "500")
goto mReload
Return

LabelExitScr:
addChatMessageEx("FFFFFF","• {00CC00}[Успешно] {FFFFFF}Cкрипт был деактивирован.")
goto Close
Return

!E::
SendChat("/lock")
return

chatProcessed:
if (Emotions = 1) {
   For k, elem in ArraySmile
   {
      if RegExMatch(chatInput, "^" elem[1] "$")
      {
         if (elem[2] = -1)
            SendChat(chatInput)
         else Sendchat("/me " elem[2])
         Exit
      }
   }
}
if RegExMatch(chatInput,"^[\(\)][\(\)]?$") {
   SendChat(chatInput)
   Exit
}
if (CorrectChat = 1)
   chatInput := converting(chatInput)
SendChat(Accent chatInput)
return

cmdProcessed:
if RegExMatch(chatInput, "^\/me (.*)$", text) {
   StringLower, text1, text1
   SendChat("/me " text1)
}
else if RegExMatch(chatInput, "^\/do (.*)$", text) {
   text1 := converting(text1)
   SendChat("/do " text1)
}
else if RegExMatch(chatInput, "^\/r (.*)$", text) {
   if (CorrectChat = 1) and !RegExMatch(text1, "^\(\(")
      text1 := converting(text1)
   SendChat("/r " text1)
}
; ========
; ========
; ========
else if RegExMatch(chatInput, "^\/f (\Q" Tag "\E)(.*)", text) {
   if RegExMatch(text2, "^(?:\s+)?$") {
      Exit
   }
   if RegExMatch(text2, "[Кк]хм|[Кк]хе|[Кк]хэ|[Кк]хемс")
      text1 := ""
   if !RegExMatch(text2, "^\(\(")
      text2 := converting(text2)
   SendChat("/f " text1 text2)
}


ArrayToSendChat(sleepTime, Array) {
   Loop % Array.MaxIndex()-1
   {
      SendChat(Array[A_Index])
      sleep % sleepTime
   }
   SendChat(Array[Array.MaxIndex()])
}


CalcTheTime(Hour, Min, Sec, time)
{
   if Sec-time < 0 {
      LSec := 60-abs(Sec-time)
      if Min = 0
      {
         LMin := 59
         if Hour = 0
            LHour := 23
         else LHour := Hour-1
      }
      else
      {
         LMin := Min-1
         LHour := Hour
      }
   }
   else {
      LHour := Hour
      LMin := Min
      LSec := Sec-time
   }
   return [LHour, LMin, LSec]
}

addNull(value) ; Дописывает незначащий ноль, если это необходимо. (Чисто для красоты)
{
   if strlen(value) = 1
      return "0" value
   else return value
}


converting(text)
{
   RegExMatch(text,"(\s+)?$", space)
   text := RTrim(text, " ")
   RegExMatch(text, "(.{1})(.*)", value)
   StringUpper, value1, value1
   if StrLen(text) = 1
   {
      value1 := ""
      value2 := text
   }
   if RegExMatch(value2,"\.$") or RegExMatch(value2,"\!$") or RegExMatch(value2,"\?$")
      return value1 value2 space1
   else return value1 value2 "." space1
}
Проблема в том, что большинство функций не работают, help

Это фулл скрипт или урезан тобою уже?
 

#saniwe

глаза пофикси
218
107
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
help
SendChat("ss " ididid " " Ок )
ss id выводит, а "ok" не выводит
 

zetlnd

Новичок
1
0
в чем проблема:
Код:
suspend
enter::
suspend
sendinput {enter}
SendMessage, 0x50,, 0x4190419,, A
keywait vk0D, d
PostMessage, 0x50,, 0x4090409,, A
sendinput {enter}
return
по-идеи должна работать так: изначально при запуске в состоянии "suspend", при нажатии энтер выходит из "suspend", переключает язык на "русский"(0x4190419); ....
ожидая клавиши "enter(vk0D)", только после нажатия переключает на язык "английский"(0x4090409).
а работает все подряд.. т.е игнорируя "keywait" как будто бы там и вовсе нет.. в чем my probl;ems?
 

iAmerican

Известный
Друг
615
257
Напишите скрипт что бы зажимало ПКМ И ЛКМ по кнопке и по этой же кнопке отжимало.
Заранее спс
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Напишите скрипт что бы зажимало ПКМ И ЛКМ по кнопке и по этой же кнопке отжимало.
Заранее спс
AutoHotKey:
stats := false
$~X:: ; Активация на X.
stats := !stats
Send, % "{RButton " (stats ? "Down" : "Up") "}{LButton " (stats ? "Down" : "UP") "}"
return
 
  • Нравится
Реакции: iAmerican

#saniwe

глаза пофикси
218
107
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как правильно сделать? Пример ниже.
Hariro_Beriro[26]: {FFCD00}help

Код:
global file_chat := A_MyDocuments "/GTA San Andreas User Files/SAMP/chatlog.txt"
SetTimer, Chat, 50

save(chatlog) {
    static logschat:=A_MyDocuments "\GTA San Andreas User Files\SAMP\ChatLogs\"
    static chat:=A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
    FileCreateDir, % logschat A_MM "-" A_YYYY
    FileAppend, % chatlog, % logschat A_MM "-" A_YYYY "\" A_DD "." A_MM "." A_YYYY ".txt"
    FileDelete, % chat
    return
}

Chat() {
    FileRead, chatlog, % file_chat

    if (RegExMatch(chatlog, "([A-z_]{4,24}) ID (\d{1,3})", chattext))
    {
        save(chatlog)
        sendChat("pm " chattext1 " )
    }
}