Помогите с АХК

Статус
В этой теме нельзя размещать новые ответы.

GriffinP

Новичок
Автор темы
13
0
Вообщем, помогите создать скрипт который будет делать так:
Я ввожу команду например: /pzgosn [1 или 2] 1 - Скрипт включен, 2 - Скрипт выключен
Дальше я например пишу: /zgos [Минута]
Если скрипт включен, тогда, когда в чате появляется сообщение [Гос. Новости] [Организация] Имя_Фамилия[ID]: Сообщение
Где [Организация] может быть любая, Имя Фамилия тоже, [ID] тоже и Сообщение тоже.
То, он пишет /d Занимаю гос. волну на Минута которая была указанна до этого.
Если скрипт выключен, тогда, ничего не пишется
 

#Rin

Известный
Всефорумный модератор
1,214
1,043

#Rin

Известный
Всефорумный модератор
1,214
1,043
Так?
AutoHotKey:
$~NumpadEnter::
$~Enter::
If (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    If (RegExMatch(chatInput, "/pzgosn\s([0-9])", out))
    {
        If (out1 == 1)
            addChatMessage("[AHK] Скрипт включен.")
        else if (out1 == 2)
            addChatMessage("[AHK] Скрипт выключен.")
        else
            return
        SetTimer, GNEWS, % (out1 == 1 ? "ON":"OFF")
    }
    If (RegExMatch(chatInput, "/zgos\s([0-9])", out))
    {
        wait := out1 * 1000
        addChatMessage("[AHK] Время сохранено.")
    }
}

GNEWS:
If (RegExMatch(getChatLineEx(0), "\[Гос. Новости\]\s\[(.*)\]\s(.*)\[(.*)\]:\s(.*)", out)) {
    If wait contains 1,2,3,4,5,6,7,8,9,0
        SendChat("/d Занимаю гос. волну на " wait " минут.")
    else
        addChatMessage("[AHK] Вы не указали время.")
}
return
 

GriffinP

Новичок
Автор темы
13
0
Так?
AutoHotKey:
$~NumpadEnter::
$~Enter::
If (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    If (RegExMatch(chatInput, "/pzgosn\s([0-9])", out))
    {
        If (out1 == 1)
            addChatMessage("[AHK] Скрипт включен.")
        else if (out1 == 2)
            addChatMessage("[AHK] Скрипт выключен.")
        else
            return
        SetTimer, GNEWS, % (out1 == 1 ? "ON":"OFF")
    }
    If (RegExMatch(chatInput, "/zgos\s([0-9])", out))
    {
        wait := out1 * 1000
        addChatMessage("[AHK] Время сохранено.")
    }
}

GNEWS:
If (RegExMatch(getChatLineEx(0), "\[Гос. Новости\]\s\[(.*)\]\s(.*)\[(.*)\]:\s(.*)", out)) {
    If wait contains 1,2,3,4,5,6,7,8,9,0
        SendChat("/d Занимаю гос. волну на " wait " минут.")
    else
        addChatMessage("[AHK] Вы не указали время.")
}
return
Большое спасибо :3
 

GriffinP

Новичок
Автор темы
13
0
Так?
AutoHotKey:
$~NumpadEnter::
$~Enter::
If (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    If (RegExMatch(chatInput, "/pzgosn\s([0-9])", out))
    {
        If (out1 == 1)
            addChatMessage("[AHK] Скрипт включен.")
        else if (out1 == 2)
            addChatMessage("[AHK] Скрипт выключен.")
        else
            return
        SetTimer, GNEWS, % (out1 == 1 ? "ON":"OFF")
    }
    If (RegExMatch(chatInput, "/zgos\s([0-9])", out))
    {
        wait := out1 * 1000
        addChatMessage("[AHK] Время сохранено.")
    }
}

GNEWS:
If (RegExMatch(getChatLineEx(0), "\[Гос. Новости\]\s\[(.*)\]\s(.*)\[(.*)\]:\s(.*)", out)) {
    If wait contains 1,2,3,4,5,6,7,8,9,0
        SendChat("/d Занимаю гос. волну на " wait " минут.")
    else
        addChatMessage("[AHK] Вы не указали время.")
}
return
Я немного ошибся
Если скрипт включен, тогда, когда в чате появляется сообщение
[Гос. Новости] [Организация] Имя_Фамилия[ID]: Сообщение
[D] (Организация) Должность Имя_Фамилия[ID]: Сообщение
Где [Организация] может быть любая, Имя Фамилия тоже, [ID] тоже и Сообщение тоже.
Надеюсь возможно что он после двух строк сможет написать.
То, он пишет /d Занимаю гос. волну на Минута которая была указанна до этого.
 

#Rin

Известный
Всефорумный модератор
1,214
1,043
Я немного ошибся
Если скрипт включен, тогда, когда в чате появляется сообщение
[Гос. Новости] [Организация] Имя_Фамилия[ID]: Сообщение
[D] (Организация) Должность Имя_Фамилия[ID]: Сообщение
Где [Организация] может быть любая, Имя Фамилия тоже, [ID] тоже и Сообщение тоже.
Надеюсь возможно что он после двух строк сможет написать.
То, он пишет /d Занимаю гос. волну на Минута которая была указанна до этого.
Строку из чата дай просто.
 

GriffinP

Новичок
Автор темы
13
0
Строку из чата дай просто.
[19:59:31] [D] (ВВС) Генерал армии Sound_Deez[94]: Занимаю государственную волну.
[19:59:32] [Гос. новости] [ВВС] Sound_Deez[94]: Достопочтенные граждане штата. Сейчас пройдёт призыв в Военно-Воздушные Силы
[19:59:33] [Гос. новости] [ВВС] Sound_Deez[94]: Требуется иметь 2-x летнюю прописку, водительское удостоверение
[19:59:34] [Гос. новости] [ВВС] Sound_Deez[94]: Призыв пройдёт в военкомате г. San-Fiero [GPS 1-8-2]
[19:59:35] [D] (ВВС) Генерал армии Sound_Deez[94]: Освобождаю государственную волну.
[19:59:35] [D] (Министерство информации) Министр Richard_Benedict[68]: Займу на 8-ую минуту гос.волну

Иногда бывает 1 строка гос. новостей
[19:59:31] [D] (ВВС) Генерал армии Sound_Deez[94]: Занимаю государственную волну.
[19:59:32] [Гос. новости] [ВВС] Sound_Deez[94]: Сейчас проходит призыв в ВВС. Требуется иметь 2-x летнюю прописку, водительское удостоверение
[19:59:33] [D] (ВВС) Генерал армии Sound_Deez[94]: Освобождаю государственную волну.
[19:59:34] [D] (Министерство информации) Министр Richard_Benedict[68]: Займу на 8-ую минуту гос.волну
 

#Rin

Известный
Всефорумный модератор
1,214
1,043
Лучше уж тогда на строки примерно такого содержания реагирвовать:
[19:59:33] [D] (ВВС) Генерал армии Sound_Deez[94]: Освобождаю государственную волну.
AutoHotKey:
$~NumpadEnter::
$~Enter::
If (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    If (RegExMatch(chatInput, "/pzgosn\s([0-9])", out))
    {
        If (out1 == 1)
            addChatMessage("[AHK] Скрипт включен.")
        else if (out1 == 2)
            addChatMessage("[AHK] Скрипт выключен.")
        else
            return
        SetTimer, GNEWS, % (out1 == 1 ? "ON":"OFF")
    }
    If (RegExMatch(chatInput, "/zgos\s([0-9])", out))
    {
        wait := out1 * 1000
        addChatMessage("[AHK] Время сохранено.")
    }
}

GNEWS:
If (RegExMatch(getChatLineEx(0), "\[D\]\s\((.*)\)\s(.*)\[([0-9])\]:\s(.*)", out)) {
    If wait contains 1,2,3,4,5,6,7,8,9,0
        SendChat("/d Занимаю гос. волну на " wait " минут.")
    else
        addChatMessage("[AHK] Вы не указали время.")
}
return
 

GriffinP

Новичок
Автор темы
13
0
Лучше уж тогда на строки примерно такого содержания реагирвовать:
[19:59:33] [D] (ВВС) Генерал армии Sound_Deez[94]: Освобождаю государственную волну.
AutoHotKey:
$~NumpadEnter::
$~Enter::
If (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    If (RegExMatch(chatInput, "/pzgosn\s([0-9])", out))
    {
        If (out1 == 1)
            addChatMessage("[AHK] Скрипт включен.")
        else if (out1 == 2)
            addChatMessage("[AHK] Скрипт выключен.")
        else
            return
        SetTimer, GNEWS, % (out1 == 1 ? "ON":"OFF")
    }
    If (RegExMatch(chatInput, "/zgos\s([0-9])", out))
    {
        wait := out1 * 1000
        addChatMessage("[AHK] Время сохранено.")
    }
}

GNEWS:
If (RegExMatch(getChatLineEx(0), "\[D\]\s\((.*)\)\s(.*)\[([0-9])\]:\s(.*)", out)) {
    If wait contains 1,2,3,4,5,6,7,8,9,0
        SendChat("/d Занимаю гос. волну на " wait " минут.")
    else
        addChatMessage("[AHK] Вы не указали время.")
}
return
Так он будет реагировать на любые сообщения в /d
Ладно, спасибо что научил меня как сделать так что-бы скрипт реагировал на чат, не здесь так в другом месте пригодится.
 

#Rin

Известный
Всефорумный модератор
1,214
1,043
Так он будет реагировать на любые сообщения в /d
Ладно, спасибо что научил меня как сделать так что-бы скрипт реагировал на чат, не здесь так в другом месте пригодится.
После RegExMatch добавь еще проверку по
if переменная contains Занимаю гос.волну, еще варианты, ну и т.д.
{
 
  • Нравится
Реакции: GriffinP

GriffinP

Новичок
Автор темы
13
0
Так?
AutoHotKey:
$~NumpadEnter::
$~Enter::
If (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    If (RegExMatch(chatInput, "/pzgosn\s([0-9])", out))
    {
        If (out1 == 1)
            addChatMessage("[AHK] Скрипт включен.")
        else if (out1 == 2)
            addChatMessage("[AHK] Скрипт выключен.")
        else
            return
        SetTimer, GNEWS, % (out1 == 1 ? "ON":"OFF")
    }
    If (RegExMatch(chatInput, "/zgos\s([0-9])", out))
    {
        wait := out1 * 1000
        addChatMessage("[AHK] Время сохранено.")
    }
}

GNEWS:
If (RegExMatch(getChatLineEx(0), "\[Гос. Новости\]\s\[(.*)\]\s(.*)\[(.*)\]:\s(.*)", out)) {
    If wait contains 1,2,3,4,5,6,7,8,9,0
        SendChat("/d Занимаю гос. волну на " wait " минут.")
    else
        addChatMessage("[AHK] Вы не указали время.")
}
return
А у меня вопрос, тут путь к чатлогу не нужен?
 

GriffinP

Новичок
Автор темы
13
0
Он из памяти читает.
А возможно сделать так что он берёт не полную фразу? Например
[D] (Организация) Должность Имя_Фамилия[ID]: Освободальше продолжение
Код:
If (RegExMatch(getChatLineEx(0), "\[D\]\s\((.*)\)\s(.*)\ \s(.*)\[(.*)\]:\Освбо\\s\(.*)", out))
Где [D] может быть любая, Организация тоже, Должности, Имя Фамилия тоже и [ID] тоже, а Освобо - определенная фраза.
 

#Rin

Известный
Всефорумный модератор
1,214
1,043
AutoHotKey:
$~NumpadEnter::
$~Enter::
If (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    If (RegExMatch(chatInput, "/pzgosn\s([0-9])", out))
    {
        If (out1 == 1)
            addChatMessage("[AHK] Скрипт включен.")
        else if (out1 == 2)
            addChatMessage("[AHK] Скрипт выключен.")
        else
            return
        SetTimer, GNEWS, % (out1 == 1 ? "ON":"OFF")
    }
    If (RegExMatch(chatInput, "/zgos\s([0-9])", out))
    {
        wait := out1 * 1000
        addChatMessage("[AHK] Время сохранено.")
    }
}

GNEWS:
If (RegExMatch(get, "\[(.*)\]\s\((.*)\)\s(.*)\s(.*)\[(.*)\]:\s(.*)", out)) {
    If out6 contains Освобождаю государственную волну,Освобождаю
    {
        If wait contains 1,2,3,4,5,6,7,8,9,0
            SendChat("/d Занимаю гос. волну на " wait " минут.")
        else
            addChatMessage("[AHK] Вы не указали время.")
    }
}
return
 
Статус
В этой теме нельзя размещать новые ответы.