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

CaJlaT

Овощ
Модератор
2,824
2,649
Версия УДФ и самп R-2
AutoHotKey:
:?:/дигл::
showDialog(2, "{00FF00}Дигл","[1]Сборка`n[2]Разборкавка", "ОК")
NextStep := 1
nomer  := LineResult()
if (!nomer )
return
if (nomer = "1") {

SendChat("/do Пистолет в кобуре.")
Sleep 1666
SendChat("/me правой рукой достал пистолет Desert Eagle из кобуры")
Sleep 1999
SendChat("/me левой рукой снял пистолет с предохранителя, затем снял затвор")
Sleep 1999
SendChat("/me осмотрел патронник на отсутствие патрон")
Sleep 1999
SendChat("/me вынул обойму с патронами левой рукой, положил её на стол")
Sleep 1999
SendChat("/me левой рукой снял ствольную крышку с пистолета, положил на стол")
Sleep 1999
SendChat("/me снял затворную раму с пистолета, положил на стол")
Sleep 1999
SendChat("/me снял пружину с затворной рамы пистолета, положил на стол")
Sleep 1999
}
else if ( nomer = "2" ) {
SendChat("/do Пистолет лежит на столе в разобранном состоянии.")
Sleep 1999
SendChat("/me левой рукой взял пружину со стола, присоединил к затворной раме")
Sleep 1999
SendChat("/me взял затворную раму со стола, присоединил к пистолету")
Sleep 1999
SendChat("/me взял ствольную крышку со стола, присоединил к пистолету")
Sleep 1999
SendChat("/me левой рукой взял обойму с патронами со стола, вставил в пистолет")
Sleep 1999
SendChat("/me перезарядил пистолет левой рукой, затем поставил его на предохранитель")
Sleep 1999
SendChat("/me правой рукой положил пистолет Desert Eagle в кобуру ")
Sleep 1999
}
return
у тебя есть эта функция в коде?
42604
Добавил функцию
AutoHotKey:
LineResult() {
    if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
    return false
    while (isDialogOpen())
    continue
    if(GetKeyState("Esc", "P"))
    return false
    return getDialogLineNumber()
}
у меня всё работает, возможно R2 виноват, хз
42606
 

NOOBPAndA

Участник
101
12
у тебя есть эта функция в коде? Добавил функцию
AutoHotKey:
LineResult() {
    if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
    return false
    while (isDialogOpen())
    continue
    if(GetKeyState("Esc", "P"))
    return false
    return getDialogLineNumber()
}
у меня всё работает, возможно R2 виноват, хз
если я скчаю самп r 1 то и удф нужно r 1?
 

ReganRomov

Участник
51
14
Эта функция не пойдет, нужен RegExMatch.
Администратор (.*)\[(\d+)\] для (.*)\\[(\d+)\]: (.*)
(( Администратор {АдминаНик и ИД} для {МойНик и ИД}: ТЕКСТ )) - так по чатлогу
Кто сможет помочь?
 

Вложения

  • Безымянный.png
    Безымянный.png
    38.4 KB · Просмотры: 106

CaJlaT

Овощ
Модератор
2,824
2,649
Эта функция не пойдет, нужен RegExMatch.
Администратор (.*)\[(\d+)\] для (.*)\\[(\d+)\]: (.*)
(( Администратор {АдминаНик и ИД} для {МойНик и ИД}: ТЕКСТ )) - так по чатлогу
Кто сможет помочь?
скинь строчку из чатлога и добавь задержку перед отправкой сообщения "/n да я тут", ибо моментально отвечать будет
 

ReganRomov

Участник
51
14

CaJlaT

Овощ
Модератор
2,824
2,649
AutoHotKey:
while(true)
{
cl = %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    Words = ([Вв][Ыы].тут?|[Тт]ут?|[Бб]от?|[Bb]ot?|[Тт]ы.тут?);тут можешь менять ключевые фразы
    FileRead, clog, % cl
    if (RegExMatch(clog, "Администратор (.*)_(.*) \[(.*)\] для (.*)_(.*) \[(.*)\]\: " Words "", string))
    {
        FileDelete, % cl ;удаляется чатлог, чтобы не флудило
        sleep 4000
        SendChat("/n я тут")
    }
}
P.s: Не забудь подключть SAMP-udf
 

Takashi Sakurai

Новичок
5
0
привет всем.
Как сделать допустим увольнение по РП.
Типа: :?:/uninv:: и рядом дописывать ID. Типа преобразование ID в Ник в отыгровке
AutoHotKey:
    :?:/uninv::
    SendChat("/me достал личный КПК")
    Sleep 500
    SendChat("/me открыл список сотрудников Компании "Sakuri", ")
    Sleep 500
    SendChat("/нашел нужного сотрудника *ник сотрудника* ")
 

degrando

Известный
362
127
привет всем.
Как сделать допустим увольнение по РП.
Типа: :?:/uninv:: и рядом дописывать ID. Типа преобразование ID в Ник в отыгровке
AutoHotKey:
    :?:/uninv::
    SendChat("/me достал личный КПК")
    Sleep 500
    SendChat("/me открыл список сотрудников Компании "Sakuri", ")
    Sleep 500
    SendChat("/нашел нужного сотрудника *ник сотрудника* ")
Через часик жди, дома буду
 

CaJlaT

Овощ
Модератор
2,824
2,649
привет всем.
Как сделать допустим увольнение по РП.
Типа: :?:/uninv:: и рядом дописывать ID. Типа преобразование ID в Ник в отыгровке
AutoHotKey:
    :?:/uninv::
    SendChat("/me достал личный КПК")
    Sleep 500
    SendChat("/me открыл список сотрудников Компании "Sakuri", ")
    Sleep 500
    SendChat("/нашел нужного сотрудника *ник сотрудника* ")
активация через команду при помощи ":?:/command::" не считывает аргументы (данные после команды)!
Чтобы работало подключай samp-udf в с крипт и делай так:

AutoHotKey:
$~NumpadEnter::
$~Enter::
if (!isInChat()) || (isDialogOpen())
   Return
Sleep 250
blockChatInput()
tempText := readString(hGTA, dwSAMP + 0x12D8F8, 256)
tempCmd := StrSplit(tempText, " ")[1]
unblockChatInput()
if (tempCmd == "/uninv")
{
   if (RegExMatch(tempText, "^" tempCmd "\s(\d{1,3}) (.*)$", string))
   {
        if (string1 >= 0)
        {
            if (string2 <= 0)
            {
                AddChatMessageEx("ff00ff", "Ошибка, вы не ввели причину!")
                return
            }
            UvalNick := getPlayerNameById(string1)
            UvalNick := RegExReplace(UvalNick, "_", "")
            SendChat("/me достал личный КПК")
            Sleep 500
            SendChat("/me открыл список сотрудников Компании ""Sakuri"", ")
            Sleep 500
            SendChat("/me нашел нужного сотрудника " UvalNick " ")
            sleep 500
            SendChat("/me вынес его из списка сотрудников")
            sleep 500
            SendChat("/uninvite " string1 " " string2 "")
        }
        else
        addChatMessageEx("800080", "{800080}[Дальнобойщик GRP] {66CDAA}Ошибка, введите {ff0000}" tempCmd " [id] [reason].") ;Если неверно использовал команду
    return
    }
}
return
 

CaJlaT

Овощ
Модератор
2,824
2,649
Как сделать НонРП рацию. Благодарю
AutoHotKey:
?/fn::

    SendInput, {F6}/f ((*text*))
    return
под /uninv добавь

AutoHotKey:
if (tempCmd == "/fn")
{
   if (RegExMatch(tempText, "^" tempCmd " (.*)$", string))
   {
           if (string1 <= 0)
        {
            AddChatMessageEx("ff0000", "Ошибка, введите " tempCmd " [text].")
            return
        }
        SendChat("/f (( " string1 " ))")
        return
    }
    else
    {
        AddChatMessageEx("ff0000", "Ошибка, введите " tempCmd " [text].")
        return
    }
}
Вроде должно работать xD
 

Takashi Sakurai

Новичок
5
0
под /uninv добавь

AutoHotKey:
if (tempCmd == "/fn")
{
   if (RegExMatch(tempText, "^" tempCmd " (.*)$", string))
   {
           if (string1 <= 0)
        {
            AddChatMessageEx("ff0000", "Ошибка, введите " tempCmd " [text].")
            return
        }
        SendChat("/f (( " string1 " ))")
        return
    }
    else
    {
        AddChatMessageEx("ff0000", "Ошибка, введите " tempCmd " [text].")
        return
    }
}
Вроде должно работать xD
Что-то не канает, можно полностью код?