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

CaJlaT

Овощ
Модератор
2,809
2,596
Что-то не канает, можно полностью код?
ошибку выдёт?

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
    }
}
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
    }
}
return
 

Takashi Sakurai

Новичок
5
0
ошибку выдёт?

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
    }
}
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
    }
}
return
Просто вообще ничего не происходит когда допустим пишу: /fn тест ахк
ошибку выдёт?

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
    }
}
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
    }
}
return
Код:
#NoEnv
#Include, SAMP-UDF-Developer.ahk
#IfWinActive GTA:SA:MP
#SingleInstance Force
SendMessage, 0x50,, 0x4190419,, A
{
    !f::
    SendChat("/do Рация весит на поясе.")
    Sleep 500
    SendChat("/me поднес рацию ко рту и что-то сказал")
    SendInput, {F6}/f{SPACE}
    return
}
{
    !c::
    SendChat("/call 060")
    Sleep 500
    SendChat("/me закатил рукав и взлянул на часы")
    return
}

    $~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 1000
            SendChat("/me открыл список сотрудников Компании ""Sakurai"" ")
            Sleep 1000
            SendChat("/me нашел сотрудника по имени " UvalNick " ")
            sleep 1000
            SendChat("/me вынес " Uvalnick " из списка сотрудников")
            sleep 1000
            SendChat("/uninvite " string1 " " string2 "")
        }
        else
        addChatMessageEx("800080", "{800080}[Дальнобойщик GRP] {FF0000}Ошибка, введите {ff0000}" tempCmd " [id] [reason].") ;Если неверно использовал команду
    }
}
return
{
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
    }
}
return
"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "C:\Users\virus\OneDrive\Рабочий стол\Новая папка (3)\script — копия.ahk"
C:\Users\virus\OneDrive\Рабочий стол\Новая папка (3)\script — копия.ahk (59) : ==> Missing "}"
>Exit code: 2 Time: 0.4287
Просто вообще ничего не происходит когда допустим пишу: /fn тест ахк

Код:
#NoEnv
#Include, SAMP-UDF-Developer.ahk
#IfWinActive GTA:SA:MP
#SingleInstance Force
SendMessage, 0x50,, 0x4190419,, A
{
    !f::
    SendChat("/do Рация весит на поясе.")
    Sleep 500
    SendChat("/me поднес рацию ко рту и что-то сказал")
    SendInput, {F6}/f{SPACE}
    return
}
{
    !c::
    SendChat("/call 060")
    Sleep 500
    SendChat("/me закатил рукав и взлянул на часы")
    return
}

    $~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 1000
            SendChat("/me открыл список сотрудников Компании ""Sakurai"" ")
            Sleep 1000
            SendChat("/me нашел сотрудника по имени " UvalNick " ")
            sleep 1000
            SendChat("/me вынес " Uvalnick " из списка сотрудников")
            sleep 1000
            SendChat("/uninvite " string1 " " string2 "")
        }
        else
        addChatMessageEx("800080", "{800080}[Дальнобойщик GRP] {FF0000}Ошибка, введите {ff0000}" tempCmd " [id] [reason].") ;Если неверно использовал команду
    }
}
return
{
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
    }
}
return
"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "C:\Users\virus\OneDrive\Рабочий стол\Новая папка (3)\script — копия.ahk"
C:\Users\virus\OneDrive\Рабочий стол\Новая папка (3)\script — копия.ahk (59) : ==> Missing "}"
>Exit code: 2 Time: 0.4287
А, все, тут неправильно return были прописаны - исправил. Спасибо!
Просто вообще ничего не происходит когда допустим пишу: /fn тест ахк

Код:
#NoEnv
#Include, SAMP-UDF-Developer.ahk
#IfWinActive GTA:SA:MP
#SingleInstance Force
SendMessage, 0x50,, 0x4190419,, A
{
    !f::
    SendChat("/do Рация весит на поясе.")
    Sleep 500
    SendChat("/me поднес рацию ко рту и что-то сказал")
    SendInput, {F6}/f{SPACE}
    return
}
{
    !c::
    SendChat("/call 060")
    Sleep 500
    SendChat("/me закатил рукав и взлянул на часы")
    return
}

    $~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 1000
            SendChat("/me открыл список сотрудников Компании ""Sakurai"" ")
            Sleep 1000
            SendChat("/me нашел сотрудника по имени " UvalNick " ")
            sleep 1000
            SendChat("/me вынес " Uvalnick " из списка сотрудников")
            sleep 1000
            SendChat("/uninvite " string1 " " string2 "")
        }
        else
        addChatMessageEx("800080", "{800080}[Дальнобойщик GRP] {FF0000}Ошибка, введите {ff0000}" tempCmd " [id] [reason].") ;Если неверно использовал команду
    }
}
return
{
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
    }
}
return
"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "C:\Users\virus\OneDrive\Рабочий стол\Новая папка (3)\script — копия.ahk"
C:\Users\virus\OneDrive\Рабочий стол\Новая папка (3)\script — копия.ahk (59) : ==> Missing "}"
>Exit code: 2 Time: 0.4287

А, все, тут неправильно return были прописаны - исправил. Спасибо!
Зато появилась другая проблема, когда делаю что-то по типу
Код:
{
:?:/mas::
SendInput, {F6}/me достал маску из внутреннего кармана пиджака{ENTER}
Sleep 500
SendInput, {F6}/me расправил её и натянул на голову{ENTER}
Sleep 500
SendInput, {F6}/mask{ENTER}
return
}
Он выдает мне только одну строку, что бы я не писал.
Код:
#NoEnv
#Include, SAMP-UDF-Developer.ahk
#IfWinActive GTA:SA:MP
#SingleInstance Force
SendMessage, 0x50,, 0x4190419,, A
{
    !f::
    SendChat("/do Рация весит на поясе.")
    Sleep 500
    SendChat("/me поднес рацию ко рту и что-то сказал")
    SendInput, {F6}/f{SPACE}
    return
}
{
    !c::
    SendChat("/call 060")
    Sleep 500
    SendChat("/me закатил рукав и взлянул на часы")
    return
}
{
:?:/mas::
SendInput, {F6}/me достал маску из внутреннего кармана пиджака{ENTER}
Sleep 500
SendInput, {F6}/me расправил её и натянул на голову{ENTER}
return
}
    $~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 1000
            SendChat("/me открыл список сотрудников Компании ""Sakurai"" ")
            Sleep 1000
            SendChat("/me нашел сотрудника по имени " UvalNick " ")
            sleep 1000
            SendChat("/me вынес " Uvalnick " из списка сотрудников")
            sleep 1000
            SendChat("/uninvite " string1 " " string2 "")
        }
        else
        addChatMessageEx("800080", "{800080}[Дальнобойщик GRP] {FF0000}Ошибка, введите {ff0000}" tempCmd " [id] [reason].") ;Если неверно использовал команду
return
    }
}
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
    }
}
return
Полный код.
 
Последнее редактирование:

CaJlaT

Овощ
Модератор
2,809
2,596
Просто вообще ничего не происходит когда допустим пишу: /fn тест ахк

Код:
#NoEnv
#Include, SAMP-UDF-Developer.ahk
#IfWinActive GTA:SA:MP
#SingleInstance Force
SendMessage, 0x50,, 0x4190419,, A
{
    !f::
    SendChat("/do Рация весит на поясе.")
    Sleep 500
    SendChat("/me поднес рацию ко рту и что-то сказал")
    SendInput, {F6}/f{SPACE}
    return
}
{
    !c::
    SendChat("/call 060")
    Sleep 500
    SendChat("/me закатил рукав и взлянул на часы")
    return
}

    $~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 1000
            SendChat("/me открыл список сотрудников Компании ""Sakurai"" ")
            Sleep 1000
            SendChat("/me нашел сотрудника по имени " UvalNick " ")
            sleep 1000
            SendChat("/me вынес " Uvalnick " из списка сотрудников")
            sleep 1000
            SendChat("/uninvite " string1 " " string2 "")
        }
        else
        addChatMessageEx("800080", "{800080}[Дальнобойщик GRP] {FF0000}Ошибка, введите {ff0000}" tempCmd " [id] [reason].") ;Если неверно использовал команду
    }
}
return
{
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
    }
}
return
"C:\Program Files\AutoHotkey\AutoHotkey.exe" /ErrorStdOut "C:\Users\virus\OneDrive\Рабочий стол\Новая папка (3)\script — копия.ahk"
C:\Users\virus\OneDrive\Рабочий стол\Новая папка (3)\script — копия.ahk (59) : ==> Missing "}"
>Exit code: 2 Time: 0.4287

А, все, тут неправильно return были прописаны - исправил. Спасибо!

Зато появилась другая проблема, когда делаю что-то по типу
Код:
{
:?:/mas::
SendInput, {F6}/me достал маску из внутреннего кармана пиджака{ENTER}
Sleep 500
SendInput, {F6}/me расправил её и натянул на голову{ENTER}
Sleep 500
SendInput, {F6}/mask{ENTER}
return
}
Он выдает мне только одну строку, что бы я не писал.
Код:
#NoEnv
#Include, SAMP-UDF-Developer.ahk
#IfWinActive GTA:SA:MP
#SingleInstance Force
SendMessage, 0x50,, 0x4190419,, A
{
    !f::
    SendChat("/do Рация весит на поясе.")
    Sleep 500
    SendChat("/me поднес рацию ко рту и что-то сказал")
    SendInput, {F6}/f{SPACE}
    return
}
{
    !c::
    SendChat("/call 060")
    Sleep 500
    SendChat("/me закатил рукав и взлянул на часы")
    return
}
{
:?:/mas::
SendInput, {F6}/me достал маску из внутреннего кармана пиджака{ENTER}
Sleep 500
SendInput, {F6}/me расправил её и натянул на голову{ENTER}
return
}
    $~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 1000
            SendChat("/me открыл список сотрудников Компании ""Sakurai"" ")
            Sleep 1000
            SendChat("/me нашел сотрудника по имени " UvalNick " ")
            sleep 1000
            SendChat("/me вынес " Uvalnick " из списка сотрудников")
            sleep 1000
            SendChat("/uninvite " string1 " " string2 "")
        }
        else
        addChatMessageEx("800080", "{800080}[Дальнобойщик GRP] {FF0000}Ошибка, введите {ff0000}" tempCmd " [id] [reason].") ;Если неверно использовал команду
return
    }
}
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
    }
}
return
Полный код.
Не правильно делаешь.... Сначало хоткей, вотлм открывай скобку
AutoHotKey:
~!f ; ~ для того, чтобы кнопки не блокировались, ибо ахк блокирует нажатие кнопок, которые ты забиндил
{
SendChat("Я научился писать код в скобках!")
}
 

Takashi Sakurai

Новичок
5
0
Не правильно делаешь.... Сначало хоткей, вотлм открывай скобку
AutoHotKey:
~!f ; ~ для того, чтобы кнопки не блокировались, ибо ахк блокирует нажатие кнопок, которые ты забиндил
{
SendChat("Я научился писать код в скобках!")
}
Благодарю.
Как сделать, по такому типу кода можно было еще делать команды?
Пишет о дубликации клавиши Enter. В первом случае там увольнение, преобразование ника в ID, а тут хочу смена формы.
Как сделать такое ?
Вот код.
Код:
    $~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("ff0000", "Ошибка, вы не ввели причину!")
                return
            }
            UvalNick := getPlayerNameById(string1)
            UvalNick := RegExReplace(UvalNick, "_", " ", "")
            SendChat("/me достал личный КПК")
            Sleep 1000
            SendChat("/me открыл список сотрудников Компании ""Sakurai"" ")
            Sleep 1000
            SendChat("/me нашел сотрудника по имени " UvalNick " ")
            sleep 1000
            SendChat("/me вынес " Uvalnick " из списка сотрудников")
            sleep 1000
            SendChat("/uninvite " string1 " " string2 "")
        }
        else
        addChatMessageEx("ff0000", "{ff0000}[Дальнобойщик GRP] {ffffff}Ошибка, введите {ffffff}" tempCmd " [id] [reason].") ;Если неверно использовал команду
return
    }
}
if (tempCmd == "/fn")
{
   if (RegExMatch(tempText, "^" tempCmd " (.*)$", string))
   {
           if (string1 <= 0)
        {
            AddChatMessageEx("ff0000", "[AHK by Takashi] {ffffff}Ошибка, введите " tempCmd " [text].")
            return
        }
        SendChat("/f (( " string1 " ))")
        return
    }
    else
    {
        AddChatMessageEx("ff0000", "[AHK by Takashi] {ffffff}Ошибка, введите " tempCmd " [text].")
        return
    }
}
return
 

CaJlaT

Овощ
Модератор
2,809
2,596
Благодарю.
Как сделать, по такому типу кода можно было еще делать команды?
Пишет о дубликации клавиши Enter. В первом случае там увольнение, преобразование ника в ID, а тут хочу смена формы.
Как сделать такое ?
Вот код.
Код:
    $~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("ff0000", "Ошибка, вы не ввели причину!")
                return
            }
            UvalNick := getPlayerNameById(string1)
            UvalNick := RegExReplace(UvalNick, "_", " ", "")
            SendChat("/me достал личный КПК")
            Sleep 1000
            SendChat("/me открыл список сотрудников Компании ""Sakurai"" ")
            Sleep 1000
            SendChat("/me нашел сотрудника по имени " UvalNick " ")
            sleep 1000
            SendChat("/me вынес " Uvalnick " из списка сотрудников")
            sleep 1000
            SendChat("/uninvite " string1 " " string2 "")
        }
        else
        addChatMessageEx("ff0000", "{ff0000}[Дальнобойщик GRP] {ffffff}Ошибка, введите {ffffff}" tempCmd " [id] [reason].") ;Если неверно использовал команду
return
    }
}
if (tempCmd == "/fn")
{
   if (RegExMatch(tempText, "^" tempCmd " (.*)$", string))
   {
           if (string1 <= 0)
        {
            AddChatMessageEx("ff0000", "[AHK by Takashi] {ffffff}Ошибка, введите " tempCmd " [text].")
            return
        }
        SendChat("/f (( " string1 " ))")
        return
    }
    else
    {
        AddChatMessageEx("ff0000", "[AHK by Takashi] {ffffff}Ошибка, введите " tempCmd " [text].")
        return
    }
}
return
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("ff0000", "Ошибка, вы не ввели причину!")
                return
            }
            UvalNick := getPlayerNameById(string1)
            UvalNick := RegExReplace(UvalNick, "_", " ", "")
            SendChat("/me достал личный КПК")
            Sleep 1000
            SendChat("/me открыл список сотрудников Компании ""Sakurai"" ")
            Sleep 1000
            SendChat("/me нашел сотрудника по имени " UvalNick " ")
            sleep 1000
            SendChat("/me вынес " Uvalnick " из списка сотрудников")
            sleep 1000
            SendChat("/uninvite " string1 " " string2 "")
        }
        else
        addChatMessageEx("ff0000", "{ff0000}[Дальнобойщик GRP] {ffffff}Ошибка, введите {ffffff}" tempCmd " [id] [reason].") ;Если неверно использовал команду
return
    }
}
if (tempCmd == "/fn")
{
   if (RegExMatch(tempText, "^" tempCmd " (.*)$", string))
   {
           if (string1 <= 0)
        {
            AddChatMessageEx("ff0000", "[AHK by Takashi] {ffffff}Ошибка, введите " tempCmd " [text].")
            return
        }
        SendChat("/f (( " string1 " ))")
        return
    }
    else
    {
        AddChatMessageEx("ff0000", "[AHK by Takashi] {ffffff}Ошибка, введите " tempCmd " [text].")
        return
    }
}
/*
Тут вставляешь код для команды, например вот команда без аргуметнов (без считывания информации после ввода /cmd):
if (tempCmd == "/cmd")
{
    Код....
    return
}
Вот код для команды с аргументом:
if (tempCmd == "/cmd")
{
   if (RegExMatch(tempText, "^" tempCmd " (.*)$", string)) - проверка, есть ли аргумент после кмд
    {
        если есть, то тут код идёт дальше
    }
     else - если нет аргуметнов, то выдаёт ошибку
    {
        AddChatMessageEx("ff0000", "[AHK by Takashi] {ffffff}Ошибка, введите " tempCmd " [text].")
        return
    }
}
*/
return
хочу смена формы
А вообще, можешь написать в ВК и я напишу код для твоей фракции на твоём сервере.
ВК в подписи
 
Последнее редактирование:

клешь рояль

Известный
1,255
551
AutoHotKey:
alt::
If GetKeyState("alt")
 Send {lshift down}
sleep 100
send {RButton down}
sleep 1
send {rbutton up}
sleep 1
send {lshift up}
sleep 200
return
Надо что бы код работал в цикле пока была зажата клавиша, пробовал так но не получается, помогите пожалуйста
 

CaJlaT

Овощ
Модератор
2,809
2,596
AutoHotKey:
alt::
If GetKeyState("alt")
Send {lshift down}
sleep 100
send {RButton down}
sleep 1
send {rbutton up}
sleep 1
send {lshift up}
sleep 200
return
Надо что бы код работал в цикле пока была зажата клавиша, пробовал так но не получается, помогите пожалуйста
AutoHotKey:
Твоя кнопка::
While GetKeyState("Твоя кнопка", "P")
{
    ;Твой код
}
Return
 
  • Нравится
Реакции: клешь рояль

NOOBPAndA

Участник
101
12
Что то я не могу понять функцию RegExMath. Вики-справочник уже много раз перечетал но многое непонятно.
AutoHotKey:
Твоя кнопка::
While GetKeyState("Твоя кнопка", "P")
{
    ;Твой код
}
Return
Скоко лет ты учил АХК что бы понять функцию RegExMath?
 

degrando

Известный
362
127
Что то я не могу понять функцию RegExMath. Вики-справочник уже много раз перечетал но многое непонятно.

Скоко лет ты учил АХК что бы понять функцию RegExMath?
 
  • Нравится
Реакции: CaJlaT

CaJlaT

Овощ
Модератор
2,809
2,596
Что то я не могу понять функцию RegExMath. Вики-справочник уже много раз перечетал но многое непонятно.

Скоко лет ты учил АХК что бы понять функцию RegExMath?
Учил по этому гайду
 

Frig

Новичок
8
0
как сделать так, чтобы например в /mn стрелочка шла вниз?(Diamond RP)
 

CaJlaT

Овощ
Модератор
2,809
2,596
как сделать так, чтобы например в /mn стрелочка шла вниз?(Diamond RP)
AutoHotKey:
$~Enter::
  if (IsInChat() && (getDialogStyle() != 1 || getDialogStyle() != 3))
{
    blockChatInput()
    Sleep 200
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if ((getDialogStyle() == 1 || getDialogStyle() == 3))
    {
        writeString(hGTA, dwAddress, "")
    }
if(RegExMatch(chatInput, "^/mn"))
{
    if(RegExMatch(chatInput, "^/mn (\d{1,3})", string))
    {
        unBlockChatInput()
        SendChat("/mn")
        wait 400
        If (isDialogOpen() = 1)
            {
                SetdialogIndex(string1)
                send {enter}
            }
        return
    }
    else
    {
        unBlockChatInput()
        SendChat("/mn")
        return
    }
}
else
  {
    if (chatInput != "")
    {
      unBlockChatInput()
      SendChat(chatInput)
      writeString(hGTA, dwAddress, "")
    }
  }
}
return
Не забудь подключить инклудом самп-юдф
 

Frig

Новичок
8
0
AutoHotKey:
$~Enter::
  if (IsInChat() && (getDialogStyle() != 1 || getDialogStyle() != 3))
{
    blockChatInput()
    Sleep 200
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if ((getDialogStyle() == 1 || getDialogStyle() == 3))
    {
        writeString(hGTA, dwAddress, "")
    }
if(RegExMatch(chatInput, "^/mn"))
{
    if(RegExMatch(chatInput, "^/mn (\d{1,3})", string))
    {
        unBlockChatInput()
        SendChat("/mn")
        wait 400
        If (isDialogOpen() = 1)
            {
                SetdialogIndex(string1)
                send {enter}
            }
        return
    }
    else
    {
        unBlockChatInput()
        SendChat("/mn")
        return
    }
}
else
  {
    if (chatInput != "")
    {
      unBlockChatInput()
      SendChat(chatInput)
      writeString(hGTA, dwAddress, "")
    }
  }
}
return
Не забудь подключить инклудом самп-юдф
Чувак, что я не правильно написал? Просто открывается окно и все. Я еще не шарю
#IfWinActive GTA:SA:MP
F3::
{
SendInput, {F6}/kvidd{Enter}
SendInput, {down}{enter}{enter}
}
Return