Ищу скрипт "реакция на чат"

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

talberom

Известный
Автор темы
98
14
Имеется такая строка:
Администратор Sam_Mason: Раздача | Первый кто напишет в репорт "+", получит ничего.
Хочу найти скрипт, который считывает строку, значение в кавычках и автоматически отправляет значение в репорт
/report +
Заранее спасибо.
 
Решение
AutoHotKey:
if (RegExMatch(GetChatLineEx(), "Администратор .*: Раздача \| Первый кто напишет в репорт "(.*)", получит ничего.", out)) {
SendChat("/report " out1)
}
Тебе даже подсветка БХ говорит, что ты (.*) вставил как переменную.
Способ №1 на чистом UDF:
AutoHotKey:
#SingleInstance, Force
#Persistent
#NoEnv

#Include, %A_ScriptDir%\SAMP.ahk

#If, WinActive("GTA:SA:MP")

!1::
{
    addChatMessageEx(0xBDBDBD, "Работает - не трогай")
    Loop {
        if (RegExMatch(getChatLineEx(), "i)^Администратор \w+: Раздача \| Первый кто напишет в репорт ""(?P<text>.*)"", получит ничего.?$", o)) {
            while (isDialogOpen())
                continue
            SendChat("/report " o["text"])
        }
    }
}
return[/FONT][/SIZE]
Способ...

NHacker1271

Известный
156
16
AutoHotKey:
#SingleInstance, Force
#Include, samp.ahk
#IfWinActive, GTA:SA:MP

Loop {
    if (RegExMatch(getChatLineEx(), "Администратор .*: Раздача \| Первый кто напишет в репорт ""(.*)"", получит ничего.", out)) {
        Sendchat("/report " out1)
    }
}
return
 
Последнее редактирование:
  • Нравится
Реакции: talberom
AutoHotKey:
if (RegExMatch(GetChatLineEx(), "Администратор .*: Раздача \| Первый кто напишет в репорт "(.*)", получит ничего.", out)) {
SendChat("/report " out1)
}
Тебе даже подсветка БХ говорит, что ты (.*) вставил как переменную.
Способ №1 на чистом UDF:
AutoHotKey:
#SingleInstance, Force
#Persistent
#NoEnv

#Include, %A_ScriptDir%\SAMP.ahk

#If, WinActive("GTA:SA:MP")

!1::
{
    addChatMessageEx(0xBDBDBD, "Работает - не трогай")
    Loop {
        if (RegExMatch(getChatLineEx(), "i)^Администратор \w+: Раздача \| Первый кто напишет в репорт ""(?P<text>.*)"", получит ничего.?$", o)) {
            while (isDialogOpen())
                continue
            SendChat("/report " o["text"])
        }
    }
}
return[/FONT][/SIZE]
Способ №2 через Callback chat reader (для того, чоб глаз радовался и все дела эти):
Сам Callback chat reader - https://blast.hk/threads/39147/
AutoHotKey:
#SingleInstance, Force
#Persistent
#NoEnv

#Include, <UDF>
#Include, <READER>

messages := new ChatReader()
messages.addCallback("msg_events")

msg_events(text) {

    if (RegExMatch(text, "i)^Администратор \w+: Раздача \| Первый кто напишет в репорт ""(?P<text>.*)"", получит ничего.?$", o)) {
        while (isDialogOpen())
        continue
        SendChat("/report " o["text"])
    }
}
 
Последнее редактирование:
  • Нравится
Реакции: talberom

talberom

Известный
Автор темы
98
14
Тебе даже подсветка БХ говорит, что ты (.*) вставил как переменную.
Способ №1 на чистом UDF:
AutoHotKey:
#SingleInstance, Force
#Persistent
#NoEnv

#Include, <UDF>

#If, WinActive("GTA:SA:MP")

!1::
{
    addChatMessageEx(0xBDBDBD, "Работает - не трогай")
    Loop {
        if (RegExMatch(getChatLineEx(), "i)^Администратор \w+: Раздача \| Первый кто напишет в репорт ""\+"", получит ничего.?$")) {
            while (isDialogOpen())
                continue
            SendChat("/report +")
        }
    }
}
return
Способ №2 через Callback chat reader (для того, чоб глаз радовался и все дела эти):
Сам Callback chat reader - https://blast.hk/threads/39147/
AutoHotKey:
#SingleInstance, Force
#Persistent
#NoEnv

#Include, <UDF>
#Include, <READER>

messages := new ChatReader()
messages.addCallback("msg_events")

msg_events(text) {
    if (RegExMatch(text, "i)^Администратор \w+: Раздача \| Первый кто напишет в репорт ""\+"", получит ничего.?$")) {
        while (isDialogOpen())
            continue
        SendChat("/report +")
    }
}
работает, если открыт диалог, верно?
 
работает, если открыт диалог, верно?
Нет, если вдруг так случилось, что ты ввел команду и у тебя открылся диалог, скрипт ждет, пока диалог закроется и сразу же напишет /report +
 

NHacker1271

Известный
156
16
Оно не работает....
Оу, меня regex101 подвёл, вчера был не за компом, думал работает, ну тогда ладно!

45393
 
Оу, меня regex101 подвёл, вчера был не за компом, думал работает, ну тогда ладно!

Посмотреть вложение 45393
1) Зачем ты юзаешь "все, что угодно"? Это самый медленный флаг.
2) Во втором случае, зачем ты уже юзаешь "все, что угодно" и еще вносишь это в несуществующую переменную?
Очень плохая регулярка.
 

NHacker1271

Известный
156
16
1) Зачем ты юзаешь "все, что угодно"? Это самый медленный флаг.
Хорошо, ну и чем же твой код лучше?
2) Во втором случае, зачем ты уже юзаешь "все, что угодно" и еще вносишь это в несуществующую переменную?
Переменная нужна для отправки её в чат, как было и написано в теме.
 
Хорошо, ну и чем же твой код лучше?

Переменная нужна для отправки её в чат, как было и написано в теме.

Ты уверен? Ты нигде не используешь эту полученную переменную.
 

NHacker1271

Известный
156
16
Ты уверен? Ты нигде не используешь эту полученную переменную.
AutoHotKey:
#SingleInstance, Force
#Include, samp.ahk
#IfWinActive, GTA:SA:MP

Loop {
    if (RegExMatch(getChatLineEx(), "Администратор .*: Раздача \| Первый кто напишет в репорт ""(.*)"", получит ничего.", out)) {
        Sendchat("/report " out1)
    }
}
return
 

talberom

Известный
Автор темы
98
14
#SingleInstance, Force #Persistent #NoEnv #Include, <UDF> #If, WinActive("GTA:SA:MP") !1:: { addChatMessageEx(0xBDBDBD, "Работает - не трогай") Loop { if (RegExMatch(getChatLineEx(), "i)^Администратор \w+: Раздача \| Первый кто напишет в репорт ""\+"", получит ничего.?$")) { while (isDialogOpen()) continue SendChat("/report +") } } } return
SAMP.ahk - samp.udf.
45407
Не понимаю, почему не работает
 
Статус
В этой теме нельзя размещать новые ответы.