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

Revalto

Известный
532
225
Ребят, пожалуйста помогите. Я не могу сделать ахк которое сразу после пейдея напишет /capture . Я много уже пытаюсь - но не получается. Если кто-то знает как это сделать - то помогите.
Если кто-то сделает буду очень благодарен
Код:
global file_chat := A_MyDocuments "/GTA San Andreas User Files/SAMP/chatlog.txt"
SetTimer, Chat, 50

Chat:
FileRead, chatlog, % file_chat

if (RegExMatch(chatlog, "Тут типа строчка пейдея", chattext))
{
    save(chatlog) ; Эту функу спизди с UDF допов (чтобы не проебать чат лог)
    SendChat("/capture") ; При нахождении строки пишем /capture
}
Return
Что тут не так?
Код:
if (isInChat() && !isDialogOpen())
{
Sleep 200
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 256)
if (RegExMatch(chatInput, "^/r (.*)",rc))
{
If teg=
addChatMessageEx("FFFFFF", "Вы не выбрали тэг! /teg")
Return
}
{
ShowDialog(3, "Выберите тэг игрока которому вы пишите ", "all(Всем сотрудникам)`nCA(1-2 ранг)`nPO-I(3-5 ранг)`nPO-II(6-7 ранг)`nSTAFF-3(8 ранг)`nSTAFF-2(9 ранг)`nSTAFF-3(10 ранг)", "Закрыть")
Result := LineResult()
if (!Result)
return
Gosub, cteg%Result%
return
Cteg1:
{
Sendchat("/r " teg " to all: " rc1)
}
Return
Cteg2:
{
ShowDialog(1, "id сотрудника", "ID", "Закрыть")
while (isDialogOpen()) {
}
Sendchat("/r " teg " to CA №" readString(hGTA, dwSAMP + 0x12 D8F8, 256) ": " rc1)
}
Return
Cteg3:
{
ShowDialog(1, "id сотрудника", "ID", "Закрыть")
while (isDialogOpen()) {
}
Sendchat("/r " teg " to PO-I №" readString(hGTA, dwSAMP + 0x12D8F8, 256) ": " rc1)
}
Return
Cteg4:
{
ShowDialog(1, "id сотрудника", "ID", "Закрыть")
while (isDialogOpen()) {
}
Sendchat("/r " teg " to PO-II №" readString(hGTA, dwSAMP + 0x12D8F8, 256) ": " rc1)
}
Return
Cteg5:
{
ShowDialog(1, "id сотрудника", "ID", "Закрыть")
while (isDialogOpen()) {
}
Sendchat("/r " teg " to STAFF-3 №" readString(hGTA, dwSAMP + 0x12D8F8, 256) ": " rc1)
}
Return
Cteg6:
{
ShowDialog(1, "id сотрудника", "ID", "Закрыть")
while (isDialogOpen()) {
}
Sendchat("/r " teg " to STAFF-2 №" readString(hGTA, dwSAMP + 0x12D8F8, 256) ": " rc1)
}
Return
Cteg7:
{
ShowDialog(1, "id сотрудника", "ID", "Закрыть")
while (isDialogOpen()) {
}
Sendchat("/r " teg " to STAFF-1 №" readString(hGTA, dwSAMP + 0x12D8F8, 256) ": " rc1)
}
Return

}
}
Return
Быдло код, ты не думай, что все тут самостоятельно искать ошибку в твоем коде. Упоминай в какой строке и что именно не работает...

Скомпилируй его, и кинь другу
Не легче взять все в переменную и циклом пройтись ? Так лучше было бы и быстрее)

Есть код, нужно что бы он активировался после того как определенная клавиша была зажата определенное количество времени, например когда клавиша Numpad0 была зажата в течении 5 секунд. Как это осуществить, поможет кто?
Код:
Numpad0::
SendMessage, 0x50,, 0x4190419,, A
SendChat("/time")
sleep, 300
Sendinput, {F2}
Return
Когда используешь SendChat(text), то
Код:
SendMessage, 0x50,, 0x4190419,, A
в код это вставлять не надо
Доброго времени суток господа ! Такая проблема делаю скрипт для друга, у меня скрипт работает, у друга не активируется на эти же кнопки. В чем может быть дело ? Как исправить
Скомпилируй скрипт и скинь им...
..
 

Petya2282

Новичок
13
1
Ребят,помогите,пожалуйста,не работает авто выдача наказания

  1. ;~ ****** [ВАЖНО] ***************
    {
    chatlog := A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
    FileDelete, %chatlog%

    Words = (warn|kick|ban|mute|jail|skick|hp|setskin|ao|unban|unwarn|skick|unmute|banip|unjail|warnoff|sethp|spcar|plveh|sban|muteoff|spplayer|re|atime)

    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 100
    SendInput,{F6}%match1%{enter}
    clipboard =
    ToolTip
    FileDelete,%A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    Return
 

Revalto

Известный
532
225
Ребят,помогите,пожалуйста,не работает авто выдача наказания

  1. ;~ ****** [ВАЖНО] ***************
    {
    chatlog := A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
    FileDelete, %chatlog%

    Words = (warn|kick|ban|mute|jail|skick|hp|setskin|ao|unban|unwarn|skick|unmute|banip|unjail|warnoff|sethp|spcar|plveh|sban|muteoff|spplayer|re|atime)

    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 100
    SendInput,{F6}%match1%{enter}
    clipboard =
    ToolTip
    FileDelete,%A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    Return
Ну если брать паблик, то да... А если писать самому, то уже работал бы. Ошибка то в чем? В регулярке?
 

Andreykas1421

Новичок
47
0
Как сделать что бы при вводе в диалоговое окно число 1 или 2, игралась разная отыгровка.
Код:
showDialog("1", "2", "3" , "Закрыть")
input, wText, V, {enter}
SendChat(wText)
return
 

markiz.desead

Потрачен
580
464
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Можно ли создать такое АХК, которое необязательно будет включать каждый раз, например, оно будет активироваться автоматически при входе в игру?
 

Revalto

Известный
532
225
Можно ли создать такое АХК, которое необязательно будет включать каждый раз, например, оно будет активироваться автоматически при входе в игру?
Да
Как сделать что бы при вводе в диалоговое окно число 1 или 2, игралась разная отыгровка.
Код:
showDialog("1", "2", "3" , "Закрыть")
input, wText, V, {enter}
SendChat(wText)
return
Код:
if(wText == 1) {
SendChat("Ты ввел 1")
} else if(wText == 2) {
SendChat("Ты ввел 2")
} else if(wText == 3) {
SendChat("Ты ввел 3")
}
 

Revalto

Известный
532
225
  • Нравится
Реакции: markiz.desead

Smer4

Известный
424
51
Вообщем есть у меня текст
1.{ffff00}Самолеты в аэропорту:
2.[AIRLS-1] Shamal
3.[AIRLS-4] Nevada
4.[AIRLS-5] Andromada
и из него надо получить номер строки где написано например " Nevada "
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
AutoHotKey:
string =
(
1.{ffff00}Самолеты в аэропорту:
2.[AIRLS-1] Shamal
3.[AIRLS-4] Nevada
4.[AIRLS-5] Andromada
)

Loop, Parse, string, `n, `r
{
    if (InStr(A_LoopField, "Nevada"))
        MsgBox, % A_Index ": " A_LoopField
}
 

Pooh

Известный
12
0
У меня есть AHK для информации о IP адресах, это с которого зарегистрировались и с которого играют. При вводе команды /getip ID, он верно вводит ник но показывает почему-то информацию о моем IP адресе. Можете помочь чтоб он вылавливал с чата верные строки с IP адресами (R-IP это ип регистрации, IP с которго на данный момент играет).
Вот весь функционал скрипта а так-же прилагаю скриншоты.

if chatInput contains /getip
{
RegExMatch(chatInput, "^/getip (.*)", p)
if (p1 = "")
{
addChatMessage("{f9a300}[AHK] {FFFFFF}Введите команду {2497dd}/infoip [id игрока]")
return
}
nick:=getPlayerNameById(p1)
if (nick = "")
{
addChatMessage("{f9a300}[AHK] {2497dd}Такого {FFFFFF}игрока {2497dd}нет.")
return
}
else
{
Send {f6}/getip %Nick%{enter}
sleep 4000
war1 := getDialogText()
war1 := RegExReplace(war1, "[\s]+")
RegExMatch(war1 , "i)\):(.*)IP" ,regist)
RegExMatch(war1 , "i)послед\.\):(.*)Да" ,posl)
ShowGameText("~n~~n~~n~~n~~n~~n~~r~AHK ~n~~b~IP ~w~checker ~y~/--", 5000, 5)
HttpObj := ComObjCreate("WinHttp.WinHttpRequest.5.1")
HttpObj.SetTimeouts(6000,6000,6000,6000)
HttpObj.Open("GET","http://ip-api.com/xml/" regist1)
HttpObj.Send()
RegExMatch(HttpObj.ResponseText,"<city><!\[CDATA\[(.*)\]\]></city>",City)
HttpObj.ResponseText := ""
HttpObj.Open("GET","/xml/" posl1)
HttpObj.Send()
RegExMatch(HttpObj.ResponseText,"<city><!\[CDATA\[(.*)\]\]></city>",City2)
HttpObj.ResponseText := ""
ShowGameText("~n~~n~~n~~n~~n~~n~~r~AHK ~n~~b~IP ~w~checker ~y~-/-", 5000, 5)
HttpObj.Open("GET","Калькулятор расстояний — считайте расстояния онлайн!(http://ru.distance.to/)" City1 "/" City21)
HttpObj.Send()
RegExMatch(HttpObj.ResponseText,"<h2>(.*)</h2>",infas)
RegExMatch(infas,"<li>По прямой: <span id=.airline.>(.*) km</span></li>",km)
Sleep 1000
addChatMessage("{f9a300}[AHK] {FFFFFF}Nick: {2497dd}" nick)
addChatMessage("{f9a300}[AHK] {FFFFFF}Расположение 1: {2497dd}" City1)
addChatMessage("{f9a300}[AHK] {FFFFFF}Расположение 2: {2497dd}" City21)
addChatMessage("{f9a300}[AHK] {FFFFFF}Расстояние: " km1 " km ")
addChatMessage("{f9a300}[AHK] {FFFFFF}Информации по адресам {FF4500}/dopinfo {FFFFFF}или {FF4500}/adopinfo")
ShowGameText("~n~~n~~n~~n~~n~~n~~r~AHK ~n~~b~IP ~w~checker ~y~--/", 5000, 5)

pr8Ao97.png