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

#Rin

Известный
Всефорумный модератор
1,214
1,036
В общем, есть функция:
PHP:
lovim:
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
if (RegExMatch(Chatlog, "`r`n\Q[" A_Hour ":" A_Min ":" A_Sec "]  Не флуди!\E"))
{
    ...
}
Return
Но я хочу, чтобы задействовались 2 строки вместе с timestamp (Типа так не рубит):
PHP:
lovim:
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
if (RegExMatch(Chatlog, "`r`n\Q[" A_Hour ":" A_Min ":" A_Sec "]  Не флуди!\E`r`n\Q[" A_Hour ":" A_Min ":" A_Sec "]  Не флуди!\E"))
{
    ...
}
Return
Не догоняю крч, хелп
\r\n
 
  • Нравится
Реакции: RellaX

aniskinag

Новичок
1
0
Подскажет может кто? Как сделать что бы АХК видя определённое слово в Чате, отпровляло то слово, которое я закодировал, то есть автовыдача.


Вот что получилось у меня(И то немного баганное).

SetBatchLines -1

chatlog := A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
FileDelete, %chatlog%

Words = (kick|mute|jail|slap|sethp|unmute|unjail|sban|ban|sban|warn|skick|mpskin|o|unban|unwarn|setskin|skick|banip|banoff|warnoff|dellveh|sban)

!F2::
FileRead, Str, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
StringReplace, Str, Str, `r`n, `n, 1
StringReplace, Str, Str, `r, `n, 1

RegExMatch("`n" Str "`n", "i).*\n\[\d+:\d+:\d+]\s*\[A].*?\[.*?]:\s*(/`*" Words "\s.*?)\n", Match)
ToolTip % Clipboard := Match1
FileAppend,%Match1%`n,logachat.ini
SendMessage, 0x50,, 0x4190419,, A
Sleep 500
SendInput,{F6}%match1% {space}
sleep 1000
clipboard =
ToolTip
FileDelete,%A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
sleep 100
Return


Нужно сделать так, что бы выдавалось не по Альт+Ф2, а автоматом. Грубоговоря админское, тоесть в /a пишут: /a /sethp ID кол-во, и АХК автоматом сразу это выполнял.
 

Andy Safino

Участник
69
4
Подскажет может кто? Как сделать что бы АХК видя определённое слово в Чате, отпровляло то слово, которое я закодировал, то есть автовыдача.


Вот что получилось у меня(И то немного баганное).

SetBatchLines -1

chatlog := A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
FileDelete, %chatlog%

Words = (kick|mute|jail|slap|sethp|unmute|unjail|sban|ban|sban|warn|skick|mpskin|o|unban|unwarn|setskin|skick|banip|banoff|warnoff|dellveh|sban)

!F2::
FileRead, Str, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
StringReplace, Str, Str, `r`n, `n, 1
StringReplace, Str, Str, `r, `n, 1

RegExMatch("`n" Str "`n", "i).*\n\[\d+:\d+:\d+]\s*\[A].*?\[.*?]:\s*(/`*" Words "\s.*?)\n", Match)
ToolTip % Clipboard := Match1
FileAppend,%Match1%`n,logachat.ini
SendMessage, 0x50,, 0x4190419,, A
Sleep 500
SendInput,{F6}%match1% {space}
sleep 1000
clipboard =
ToolTip
FileDelete,%A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
sleep 100
Return


Нужно сделать так, что бы выдавалось не по Альт+Ф2, а автоматом. Грубоговоря админское, тоесть в /a пишут: /a /sethp ID кол-во, и АХК автоматом сразу это выполнял.
Loop в помощь
 

index

Известный
126
82
Подскажет может кто? Как сделать что бы АХК видя определённое слово в Чате, отпровляло то слово, которое я закодировал, то есть автовыдача.


Вот что получилось у меня(И то немного баганное).

SetBatchLines -1

chatlog := A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
FileDelete, %chatlog%

Words = (kick|mute|jail|slap|sethp|unmute|unjail|sban|ban|sban|warn|skick|mpskin|o|unban|unwarn|setskin|skick|banip|banoff|warnoff|dellveh|sban)

!F2::
FileRead, Str, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
StringReplace, Str, Str, `r`n, `n, 1
StringReplace, Str, Str, `r, `n, 1

RegExMatch("`n" Str "`n", "i).*\n\[\d+:\d+:\d+]\s*\[A].*?\[.*?]:\s*(/`*" Words "\s.*?)\n", Match)
ToolTip % Clipboard := Match1
FileAppend,%Match1%`n,logachat.ini
SendMessage, 0x50,, 0x4190419,, A
Sleep 500
SendInput,{F6}%match1% {space}
sleep 1000
clipboard =
ToolTip
FileDelete,%A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
sleep 100
Return


Нужно сделать так, что бы выдавалось не по Альт+Ф2, а автоматом. Грубоговоря админское, тоесть в /a пишут: /a /sethp ID кол-во, и АХК автоматом сразу это выполнял.
Используй UDF https://blast.hk/threads/20318/
А по коду:
AutoHotKey:
semiTimerObj := Func("semiTimer")
setTimer, % semiTimerObj, 500


getNewChatLines() ; получаем из чата только новые строки
{
    static prevChatLine
    static prevTimeStamp
 
    if(!checkHandles())
        return
    dwAddress :=    readDWORD(hGTA, dwSAMP + ADDR_SAMP_CHATMSG_PTR) ; тут смотри сам, ADDR_SAMP_CHATMSG_PTR разный для разных версий сампа 0.3.7r1 - 0x21A0E4, 0.3.7r2 - 0x21A0EC, 0.3dl - 0x2ACA10
    if ErrorLevel
        return
 
    chat :=    []
 
    curChatLine :=    readString(hGTA, dwAddress + 0x62C6, 0xFC)
    curTimeStamp :=    readMem(hGTA, dwAddress + 0x62A6, 4, "int")
    if(curTimeStamp != prevTimeStamp || curChatLine != prevChatLine)
    {
        if(prevTimeStamp != "")
            Loop 100
            {
                chatLine :=        readString(hGTA, dwAddress + 0x152 + (100 - A_Index) * 0xFC, 0xFC)
                timestamp :=    readMem(hGTA, dwAddress + 0x132 + (100 - A_Index) * 0xFC, 4, "int")
                if(chatLine == prevChatLine && timestamp == prevTimeStamp)
                    break
                else
                    chat.push(chatLine)
            }
         
        prevChatLine :=        curChatLine
        prevTimeStamp :=    curTimeStamp
    }
    return chat
}

semiTimer()
{
    a := getNewChatLines()
    for k, v in a
        if(regexmatch(v, "регулярка у тебя неверная, проверяй ее на regex101"))
        {
            ; do something
            ; sendChat("text") Например
        }
}
 
Последнее редактирование:

ShoZeOriginal

Новичок
2
0
Вот такая проблема в Samp'e после запуска любого АХК скрипта который взаимодействует с игрой, раскладка в игре с русской не меняется на англ что делать? Даже если ставить в параметрах языковой панели ставить англ по умолчанию.
Скрипты как сам писал мелкие типа биндеров для гос. так и скаченные. Прошу помочь!
 

BH:Pchela

Участник
41
0
У меня не работает SAMP UDF. Другие скрипты, написанные на АХК, идеально работают, а мой простенький тестовый скрипт отказывается выполнять свою функцию. SAMP 0.3.7 R-2.
Код:
#include UDF.ahk

F2::
Showdialog(2,"Хелпер для лидеров","Приветствие`nВыгнать нарушителя`nМладший состав`nУстав`nЛекции`n","Закрыть","Выбор")
return
 
Последнее редактирование:

Dangrl

Новичок
3
0
Что это за ошибка и как её исправить. Внизу как начинаю запуск скрипта,вот такая хрень происходит.
upload_2018-12-20_1-46-1.png
 

Northup

Новичок
8
0
После введённых клавиш и нажатой кнопки [SAVE], программа выводит окно [сохранено]. Но проблема в том, что не работает клавиша Combo.
Как исправить?
AutoHotKey:
Gui, Add, Hotkey, x12 y70 w100 h30 vKeyB,
Gui, Add, Hotkey, x12 y110 w100 h30 vKeyC,
Gui, Add, Hotkey, x12 y150 w100 h30 vKeyD,
Gui, Add, Hotkey, x132 y320 w90 h30 vCombo,
Gui, Add, Button, x62 y370 w100 h30 gSAVE, Button
; Generated using SmartGUI Creator 4.0
Gui, Show, x686 y211 h431 w247,
return
SAVE:
Hotkey, %KeyA%, Off, UseErrorLevel
Hotkey, %KeyB%, Off, UseErrorLevel
Hotkey, %KeyC%, Off, UseErrorLevel
Hotkey, %KeyD%, Off, UseErrorLevel
Hotkey, %Combo%, Off, UseErrorLevel
Hotkey, %KeyA%, On, UseErrorLevel
Hotkey, %KeyB%, On, UseErrorLevel
Hotkey, %KeyC%, On, UseErrorLevel
Hotkey, %KeyD%, On, UseErrorLevel
Hotkey, %Combo%, On, UseErrorLevel
Gui, Submit, NoHide
 MsgBox, Сохранено
 return

Combo:
SendInput, %KeyA% ; /*EULS-4*/
SendInput, {sc11} ;
Sleep, 888
SendInput,  %KeyB% ; /*ECHO STOMP-Q*/
SendInput, %KeyC% ; /*ULT-R*/
SendInput, %KeyD% ; /*METEOR HAMMER-C*/
return
 
Последнее редактирование:

index

Известный
126
82
После введённых клавиш и нажатой кнопки [SAVE], программа выводит окно [сохранено]. Но проблема в том, что не работает клавиша Combo.
Как исправить?
Gui, Add, Hotkey, x12 y70 w100 h30 vKeyB,
Gui, Add, Hotkey, x12 y110 w100 h30 vKeyC,
Gui, Add, Hotkey, x12 y150 w100 h30 vKeyD,
Gui, Add, Hotkey, x132 y320 w90 h30 vCombo,
Gui, Add, Button, x62 y370 w100 h30 gSAVE, Button
; Generated using SmartGUI Creator 4.0
Gui, Show, x686 y211 h431 w247,
return
SAVE:
Hotkey, %KeyA%, Off, UseErrorLevel
Hotkey, %KeyB%, Off, UseErrorLevel
Hotkey, %KeyC%, Off, UseErrorLevel
Hotkey, %KeyD%, Off, UseErrorLevel
Hotkey, %Combo%, Off, UseErrorLevel
Hotkey, %KeyA%, On, UseErrorLevel
Hotkey, %KeyB%, On, UseErrorLevel
Hotkey, %KeyC%, On, UseErrorLevel
Hotkey, %KeyD%, On, UseErrorLevel
Hotkey, %Combo%, On, UseErrorLevel
Gui, Submit, NoHide
MsgBox, Сохранено
return

Combo:
SendInput, %KeyA% ; /*EULS-4*/
SendInput, {sc11} ;
Sleep, 888
SendInput, %KeyB% ; /*ECHO STOMP-Q*/
SendInput, %KeyC% ; /*ULT-R*/
SendInput, %KeyD% ; /*METEOR HAMMER-C*/
return
Чтобы получить значение, записанное в GUIшке "Hotkey" используй GuiControlGet.
Тут на примере более/менее подробно расписано - [Autohotkey] Hotkeys - Pastebin.com(https://pastebin.com/j4hUVwv9) (ошибка на 30й строке, лишний "~").
 

Northup

Новичок
8
0
Если в переменной KeyA ничего не написано, то мы сохраняем клавишу, иначе будет писать - "Введи клавишу" . Что не так?
SAVE:
AutoHotKey:
if (KeyA != ""){
 Gui, submit, NoHide
}else{
 MsgBox, Введи клавишу
}
return
 
Последнее редактирование модератором:

Harold_Sandstorm

Новичок
9
0
Парни, такое дело. Представим ситуацию: военный стоит на КПП и проверяет документы въезжающих/выезжающих. Надо реализовать код, который будет считывать фамилию и звание/ранг человека. И потом, после ввода команды, допустим, /in, было SendChat("/r В расположение части прибыл " rank " " name2) (ранг и фамилия человека, последнего показавшего паспорт). Прошу помощи конкретно со считыванием инфы.
UPD: project - SRP
 

darksoor

Известный
674
353
Парни, такое дело. Представим ситуацию: военный стоит на КПП и проверяет документы въезжающих/выезжающих. Надо реализовать код, который будет считывать фамилию и звание/ранг человека. И потом, после ввода команды, допустим, /in, было SendChat("/r В расположение части прибыл " rank " " name2) (ранг и фамилия человека, последнего показавшего паспорт). Прошу помощи конкретно со считыванием инфы.
UPD: project - SRP
Скрин паспорта скинь.