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

Тема в разделе "AutoHotKey", создана пользователем gwplayer, 8 авг 2017.

  1. gwplayer

    Друг

    Регистрация:
    20 мар 2013
    Сообщения:
    207
    Симпатии:
    66
    Приветствую! Во избежании создания тем на подобии "Помогите с ахк" была создана данная тема.

    Примечание:
    • Задавая вопрос, убедитесь, что его нет в списке частых вопросов и что на него ещё не отвечали (воспользуйтесь поиском).
    • Отвечая, убедитесь, что ваш ответ корректен.
    • Старайтесь как можно точнее выразить мысль, а если проблема связана с кодом, то обязательно прикрепите его к сообщению, используя блок [code=autohotkey]здесь мог бы быть ваш код[/code]
    • Если ответ был полезный, не забудьте отблагодарить, нажав на кнопку "Мне нравится!".
     
    #1 gwplayer, 8 авг 2017
    Последнее редактирование модератором: 8 апр 2018
    eiuhuth, iAmerican, Breakaway и 3 другим нравится это.
  2. DimanProgram

    DimanProgram Новичок

    Регистрация:
    8 авг 2017
    Сообщения:
    2
    Симпатии:
    1
    Мне нужен бот для авто докладов в самп каждые 10 минут и указывать напарника в докладе если такой есть! прошу помогите пожалуйста, а и еще прошу скажите как убрать ?????? вместо букв в бинде просто постоянно менять язык это бред
     
    KuPyXa154 нравится это.
  3. asdzxcjqwe

    asdzxcjqwe ¯\_(ツ)_/¯
    Друг

    Регистрация:
    13 фев 2017
    Сообщения:
    471
    Симпатии:
    438
    меняй скриптом
    SendMessage, 0x50,, 0x4090409,, A ; английский
    SendMessage, 0x50,, 0x4190419,, A ; русский
    PostMessage, 0x50,, 0x4090409,, A ; английский
    PostMessage, 0x50,, 0x4190419,, A ; русский

    поменяй язык по умолчанию на английский, чтобы не приходилось менять скриптом, должно помочь как мне
    также, в samp.cfg убрать ime=1, если есть (или поставить на 0)

    [​IMG]
     
    #3 asdzxcjqwe, 9 авг 2017
    Последнее редактирование: 9 авг 2017
  4. dmitri4

    dmitri4 Знающий

    Регистрация:
    8 май 2017
    Сообщения:
    291
    Симпатии:
    34
    Нужна помощь. Нужно подправить код:
    Stroka := RegExMatch(A_LoopReadLine, ".*\[..:..:..\]\s" ranknick "\[" rankid "\]\s(.*)\[.*\].*")
    if(Stroka==1)
    NashloStroky:=A_LoopReadLine
    }
    RegExMatch(NashloStroky, ".*\[..:..:..\]\s" ranknick "\[" rankid "\]\s(.*)\[.*\].*", rank)
    if(rank1!="")

    суть скрипта в том что он считывает с логов ранг игрока и выводит на экран но код не совсем корректный, если не трудно подправьте под такие строчки
    [13:15:59] Члены организации Online:
    [13:15:59] На работе:
    [13:15:59] [58] Nick_Nick ранг: 1 [Рядовой]
    [13:15:59] [68] Nick_Nick ранг: 5 [Ст.Сержант]
    Спасибо
     
  5. asdzxcjqwe

    asdzxcjqwe ¯\_(ツ)_/¯
    Друг

    Регистрация:
    13 фев 2017
    Сообщения:
    471
    Симпатии:
    438
    rankinfo := ""
    if RegExMatch(A_LoopReadLine, "\[" rankid "\] " ranknick " ранг: (\d+) \[([А-я.]+)\]", match)
        rankinfo := "номер ранга: " match1 ", наименование ранга: " match2
    addChatMessageEx(0xFFFFFF, (strlen(rankinfo) ? rankinfo : "игрок с таким id и ником не найден"))
     
  6. Fartuk)

    Fartuk) Участник

    Регистрация:
    11 авг 2017
    Сообщения:
    5
    Симпатии:
    1
    Доброго времени суток, вообще, необходима помощь с AHK скриптом... Пытался сделать так, что бы через диалоговое окно была возможность выполнять различные действия, в моем случае отправку текстовых сообщений в чат. Но при выборе строчки, скрипт реагирует лишь на стрелки на клавиатуре. Возможно ли сделать так, чтобы скрипт так же воспринимал мышку? Заранее спасибо :З

    b:=13
    ~F6::
    menu:=0
    return
    
    F3::
    addMessageToChatWindow("{DBA901}[...]: " COL_WHITE "Text")
    a:=1
    menu:=1
    ShowDialog("2", "{A818FF}Название{A818FF}", "Первая строка`nВторая строка`nТретья строка`nЧетвертая строка`n`nПятая строка`nШестая строка`nСедьмая строка`nВосьмая строка`nДевятая строка`nДесятая строка`nОдинадцатая строка`nДвенадцатая строка`nТринадцатая строка","Отмена")
    return
    
    ~UP::
    if a>1
    {
    a:=a-1
    }
    return
    ~Down::
    if a<b
    {
    a:=a+1
    }
    return
    
    ~Enter::
    if (menu==1) 
    {
    punk:="label"+a
    Gosub, %punk%
    menu:=0
    }
    return
    
    label1:
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    Sendinput, {F6}Text{enter}
    return
    
    label2:
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    Sendinput, {F6}Text{enter}
    Return
    
    label3:
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    Sendinput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    return
    
    label4:
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    Sendinput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    return
    
    label5:
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    Sendinput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    return
    
    label6:
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    SendInput, {F6}Text{enter}
    return
    
    label7:
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    SendInput, {F6}Text{enter}
    return
    
    label8:
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    SendInput, {F6}Text{enter}
    return
    
    label9:
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    SendInput, {F6}Text{enter}
    return
    
    label10:
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    SendInput, {F6}Text{enter}
    return
    
    label11:
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    SendInput, {F6}Text{enter}
    return
    
    label12:
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    return
    
    label13:
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    Sleep 500
    SendInput, {F6}Text{enter}
    addMessageToChatWindow("{DBA901}[...]: " COL_WHITE "Text")
    return
     
  7. Shimo

    Shimo Новичок

    Регистрация:
    11 мар 2016
    Сообщения:
    1
    Симпатии:
    1
    Способ:
    
    #NoEnv
    SendMode Input
    SetWorkingDir %A_ScriptDir%
    #SingleInstance, Force
    #Include, SAMP.ahk
    
    ;~ Создаем массивы с номерами строк диалога.
    
    1Array := ["Первый.", "Первый массив.", "Выбрана первая строка."]
    2Array := ["Второй.", "Второй массив.", "Выбрана вторая строка."]
    3Array := ["Третий.", "Третий массив.", "Выбрана третья строка."]
    
    !1::
    Sleep, 100
    ShowDialog(2, "Выбор массива", "Первый массив`nВторой массив`nТретий массив", "Закрыть") ;~ Создаем диалог с выбором строк.
    
    Line := LineResult()
    
    if (Line) {
        For k, v in %Line%Array {
            SendChat(v)
            Sleep, 2000
        }
    }
    return
    Функция LineResult()
    LineResult() {
        if (!isDialogOpen())
            return false
        if (getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
            return false
        while(!GetKeyState("LButton", "P") && !GetKeyState("Enter", "P") && !GetKeyState("Esc", "P"))
            continue
        if (GetKeyState("Enter", "P"))
            return getDialogLineNumber()
        else if (GetKeyState("Esc", "P"))
            return false
        else{
            KeyWait, LButton
            KeyWait, LButton, D T0.4
            if (isDialogOpen())
                return LineResult()
            else
                return getDialogLineNumber()
        }
    }
     
    Cesar Ballard нравится это.
  8. denzwdw[fwfa

    denzwdw[fwfa Постоянный участник

    Регистрация:
    2 авг 2017
    Сообщения:
    53
    Симпатии:
    2
    как сделать чтобы команда срабатывала после нажатия enter в ахк

    :?:/pas 1::
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 1200
    SendInput {F6}/me Досконально изучил паспорт.{enter}
    Sleep 2200
    SendInput {F6}/me сообщил диспетчеру.{enter}
    SendInput {F6}Спасибо за предоставление Ваших документов, можете идти.{Enter}
    Sleep 2200
    return

    :?:/pas 2::
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 1200
    SendInput {F6}/me получил сообщение от диспетчера о подозреваемом{Enter}
    Sleep 2200
    SendInput {F6}Вы находитесь в Федеральном розыске, Вам придется пройти со мной! .{enter}
    return
     
  9. dmitri4

    dmitri4 Знающий

    Регистрация:
    8 май 2017
    Сообщения:
    291
    Симпатии:
    34
    Если я правильно тебя понял
    :?:/pas 1::
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 1000
    SendInput {F6}/me Досконально изучил паспорт.{enter}
    Sleep 3000
    SendInput {F6}/me сообщил диспетчеру.{enter}
    Sleep 3000
    SendInput {F6}Спасибо за предоставление Ваших документов, можете идти.{Enter}
    Sleep 1000
    return

    :?:/pas 2::
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 1000
    SendInput {F6}/me получил сообщение от диспетчера о подозреваемом{Enter}
    Sleep 3000
    SendInput {F6}Вы находитесь в Федеральном розыске, Вам придется пройти со мной! .{enter}
    return
     
  10. denzwdw[fwfa

    denzwdw[fwfa Постоянный участник

    Регистрация:
    2 авг 2017
    Сообщения:
    53
    Симпатии:
    2
    Смотри при воде /pas я нажимаю на пробел и у меня сразу отыгровка,а как мне сделать что бы я отправил а потом уже отыгровка
     
  11. Vlad Horii

    Проверенный

    Регистрация:
    16 июл 2017
    Сообщения:
    327
    Симпатии:
    205
    
    :*:/pas 1::
    SendInput {F6}/pass 1{enter}
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 1000
    SendInput {F6}/me Досконально изучил паспорт.{enter}
    Sleep 3000
    SendInput {F6}/me сообщил диспетчеру.{enter}
    Sleep 3000
    SendInput {F6}Спасибо за предоставление Ваших документов, можете идти.{Enter}
    Sleep 1000
    return
    
    гы логично же))
    Лучше использовать:
    :*:/text::
     
    Cesar Ballard нравится это.
  12. denzwdw[fwfa

    denzwdw[fwfa Постоянный участник

    Регистрация:
    2 авг 2017
    Сообщения:
    53
    Симпатии:
    2
    Спасибо можете еще помочь они в одной папке[​IMG]
     
  13. Belo4ka_belka1

    Belo4ka_belka1 Участник

    Регистрация:
    19 авг 2017
    Сообщения:
    8
    Симпатии:
    1
    Трабл с overlay возник. Подключил его, создал кусочек кода с текстом, жму кнопку и игра сразу вылетает, без ошибок. Отключил антивирус, ShadowPlay, гташку чистую поставил, вылетает так же. Использовал ANSI 32 bit AHK, попробовал 32 бит юникод, запускаю игру с включенным скриптом: один раз вылезла ошибка: ссылка, больше я её получить не смог. Потом уже игра вылетать перестала, сейчас уже просто ничего не показывает. АХК выполняется от имени админа, никаких фрапсов и тому подобного нету, чистый экран. Вот код:
    
    SendMode Input
    SetWorkingDir %A_ScriptDir%
    #UseHook
    #NoEnv
    #SingleInstance force
    #include %A_ScriptDir%\plugins\SAMP-UDF-Developer.ahk
    #include %A_ScriptDir%\overlay.ahk
    Dx9SetParam("use_window", "1")
    Dx9SetParam("window", "GTA:SA:MP")
    Dx9SetParam("process", "gta_sa.exe")
    global fn := "Times New Roman"
    global date := "22.10.1999"
    text_overlay := -1
    
    !Я::
    if ( WinActive("GTA:SA:MP")) {
    text_overlay := Dx9TextCreate(fn, 10, false, false, 20, 180, 0xFFFFFF00, date, false, true)
    }
    return
    
    !Ч::
    if ( WinActive("GTA:SA:MP")) {
         Dx9TextSetString(text_overlay, date)
    }
    return
    
    Есть на соседнем форуме худ на АХК, он работает на ура, а я более чем уверен, что там тоже dx9 overlay используется. Кто-нибудь может что подсказать?
     
  14. SKEEZYSHOW

    SKEEZYSHOW Новичок

    Регистрация:
    8 авг 2017
    Сообщения:
    1
    Симпатии:
    1
    Ребят, как сделать авто обновление скрипта ? Типо вводишь команду и скрипт сам скачивает фаил и обновляется.
     
  15. denzwdw[fwfa

    denzwdw[fwfa Постоянный участник

    Регистрация:
    2 авг 2017
    Сообщения:
    53
    Симпатии:
    2
    Как сделать скрипт на проверку Чс
     
  16. Belo4ka_belka1

    Belo4ka_belka1 Участник

    Регистрация:
    19 авг 2017
    Сообщения:
    8
    Симпатии:
    1
    denzwdw[fwfa, сначала нужно определить ЧС чего.
     
  17. denzwdw[fwfa

    denzwdw[fwfa Постоянный участник

    Регистрация:
    2 авг 2017
    Сообщения:
    53
    Симпатии:
    2
    находится ли игрок в чс мвд например
     
  18. HatiGreez

    HatiGreez Знающий

    Регистрация:
    11 июл 2017
    Сообщения:
    265
    Симпатии:
    17
    Доброго времени суток, требуется помощь с AHK. Вот я для примера написал небольшой пример снизу. По идеи. при нажатии Alt+1 должно выводить сообщение, к примеру "Мой id: 250". но при нажатии получаю "Мой id:-1" и так со всеми опкодами, пишет -1.

    #Include samp.ahk
    #SingleInstance
    !1::
    addChatMessage("Мой id:" getId())
     
  19. Belo4ka_belka1

    Belo4ka_belka1 Участник

    Регистрация:
    19 авг 2017
    Сообщения:
    8
    Симпатии:
    1
    Ничего не решит твой набор параметров, ни один из них не относится к UDF. TheKontulup, добавь скрипт а так же ahk.exe в исключения антивируса, а если у тебя АХК не ANSI 32 bit то переустанавливай на анси. Этого хватит.
     
  20. asdzxcjqwe

    asdzxcjqwe ¯\_(ツ)_/¯
    Друг

    Регистрация:
    13 фев 2017
    Сообщения:
    471
    Симпатии:
    438
    запускай скрипт в кодировке ANSI

    [​IMG]
     
    HamBurgeR нравится это.
  21. melanris

    melanris Участник

    Регистрация:
    6 апр 2017
    Сообщения:
    5
    Симпатии:
    0
    #NoEnv
    #Include %A_ScriptDir%\samp-udf.ahk
    
    author = FYP
    website = BlastHack.Net
    v1 := 0, v3 := 0, v4 := 0
    
    while(true)
    {
        if(!IsSAMPAvailable())
        {
            v1 := 0, v3 := 0, v4 := 0
            continue
        }
       
        if(isPlayerDriver() != -1 || getPlayerHealth() == 0.0)
            continue
       
        writeMemory(hGTA, 0x5109AC, 0xEB, 1, "byte")
        writeMemory(hGTA, 0x5109C5, 0xEB, 1, "byte")
        writeMemory(hGTA, 0x5231A6, 0xEB, 1, "byte")
        writeMemory(hGTA, 0x52322D, 0xEB, 1, "byte")
        writeMemory(hGTA, 0x5233BA, 0xEB, 1, "byte")
       
        v5 := readDWORD(hGTA, ADDR_CPED_PTR) + 0x718
        v5 := readMem(hGTA, v5, 1, "byte") + 1
       
        if(v5 < 3 || v5 > 7 || getPlayerWeaponId() == 34)
            continue
       
        if(GetKeyState("RButton", "P"))
        {
            if(v1 == 0)
            {
                v10 := readMem(hGTA, 0x52169D, 4, "uint")
                v11 := readMem(hGTA, 0x5216A1, 2, "byte")
                writeBytes(hGTA, 0x52169D, "90909090")
                writeBytes(hGTA, 0x5216A1, "9090")
                v1 := 1
            }
            if(v3 == 0)
            {
                if v5 between 6 and 7
                {
                    v2 := readMem(hGTA, 0xB6F250, 4, "uint")
                    if(v2 <= 50.0 || v4 == 1)
                    {
                        v12 := readMem(hGTA, 0x5216BE, 4, "uint")
                        v13 := readMem(hGTA, 0x5216C2, 2, "byte")
                        writeBytes(hGTA, 0x5216BE, "90909090")
                        writeBytes(hGTA, 0x5216C2, "9090")
                        v3 := 1
                        v4 := 0
                    }
                }
            }
        } else
        {
            if(v1 == 1)
            {
                writeMemory(hGTA, 0x52169D, v10, 4, "uint")
                writeMemory(hGTA, 0x5216A1, v11, 2, "byte")
                v1 := 0
            }
            if(v3 == 1)
            {
                writeMemory(hGTA, 0x5216BE, v12, 4, "uint")
                writeMemory(hGTA, 0x5216C2, v13, 2, "byte")
                v3 := 0
            }
        }
    }
    
    $~WheelUp::
        if(!v1)
            return
        v2 := readFloat(hGTA, 0xB6F250) - 2.0
        if(v2 < 4.0)
            v2 := 4.0
        writeFloat(hGTA, 0xB6F250, v2)
        if(v3 == 0)
            v4 := 1
    return
    
    $~WheelDown::
        if(!v1)
            return
        v2 := readFloat(hGTA, 0xB6F250) + 2.0
        if(v2 > 70.0)
            v2 := 70.0
        writeFloat(hGTA, 0xB6F250, v2)
        if(v3 == 0)
            v4 := 1
    return
    
    Помогите сделать в этом ahk ExtraWS по оси Y возвращение прицела на исходную точку после выстрела
     
  22. Cortazar

    Cortazar Новичок

    Регистрация:
    24 авг 2017
    Сообщения:
    1
    Симпатии:
    0
    Ребят, я новичок в скриптинге АХК, хотел сделать для сампа запрет дела в /d по id
    Например: /zap 345
    И оно выкидует в /d чат: Mayor. Дело Vladimir Pozdnyakov рассмотру не подлежит. ООП.
    Как это сделать? Кто подскажет?
     
  23. Tanaka

    Tanaka Активный участник

    Регистрация:
    14 янв 2017
    Сообщения:
    40
    Симпатии:
    11
    Качаешь sampudf последней версии, подключаешь и подключаешь его.
    #Include, SAMP-UDF-Developer.ahk
    
    $~Enter:
    if (isInChat() && !isDialogOpen()) {
        Sleep, 200
        dwAddress := dwSAMP + 0x12D8F8
        chatText  := readString(hGTA, dwAddress, 256)
        if (RegExMatch(chatText, "^\/zap (.*)", var)) {
            Nick := RegExReplace(getPlayerNameById(var1), "_", " ")
            SendChat("/d Mayor. Дело " Nick " рассмотру не подлежит. ООП")
        }
    }
    Return
    
     
    Cesar Ballard нравится это.
  24. denzwdw[fwfa

    denzwdw[fwfa Постоянный участник

    Регистрация:
    2 авг 2017
    Сообщения:
    53
    Симпатии:
    2
    Можно ли при нажатие кнопки что бы менялось разрешение экрана.
     
  25. Zefir2511

    Zefir2511 Знающий

    Регистрация:
    9 апр 2017
    Сообщения:
    295
    Симпатии:
    32
    Всем привет.
    Вот есть рабочий код в ахк.Как сделать что бы после того как он сделал что было задумано,ахк скрипт автоматичскии удалялся.
     
  26. asdzxcjqwe

    asdzxcjqwe ¯\_(ツ)_/¯
    Друг

    Регистрация:
    13 фев 2017
    Сообщения:
    471
    Симпатии:
    438
    
    msgbox ky
    Run %comspec% /c del /q /s "%A_ScriptFullPath%" && exit,, Hide
    ExitApp
     
  27. RandeVulll

    RandeVulll Участник

    Регистрация:
    7 июл 2016
    Сообщения:
    5
    Симпатии:
    0
    Пари всем привет у меня такой вопрос, не могу понять как связать чекер ЧС с игрой...
    Мне необходимо что-бы в игре (SAMP)
    ^x::
    {
    id := getIdByPed(getTargetPed())
    if id > -1
    goto next
    else
    return
    next:
    nick := getPlayerNameById(id)
    lvl := getPlayerScoreById(id)
    text := ("{00FFFF}Вы навели на{FFFFFF} ID: " id " | Nick: " nick " | Lvl: " lvl "")
    addChatMessage(text)
    SendChat("/history " nick " ")
    Return
    }
    После того как я нажимаю Ctrl+X помимо этого происходил чек человека на ЧС..
    Вот код чекера:
    ~$Enter::
    if (isInChat() = 1 && IsDialogOpen() = 0)
    {
    sleep 200
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if chatInput contains /check
        {
            filedelete, %a_temp%/history.txt
            RegExMatch(chatInput, "^/check (.*)", p)
            csk:=getPlayerNameById(p1)
            idans := getPlayerIdByName(csk)
            if p1 =
            {
            addChatMessageEx("{FF8C00}","{FF8C00}[AHK]:{ffb300} Используйте /check <id>")
                Return
            }
            if idans = -1
            {
            addChatMessageEx("{FF8C00}","{FF8C00}[AHK]:{ffb300} Такого игрока на сервере нет")
                Return
            }
            nick := getPlayerNameById(p1)
            FileRead, csniki, %DIR%blacklist.txt
            sleep, 50
            If RegExMatch(csniki, nick)
            {
                sleep, 50
            addChatMessageEx("{FF8C00}","{FF8C00}[AHK]: {ffb300}Игрок {3399FF}" nick " {ff0000}находится{ffb300} в черном списке")
                return
            }
            else
            {
                sleep, 50
            addChatMessageEx("{FF8C00}","{FF8C00}[AHK]: {ffb300}Игрок {3399FF}" nick " {00b300}не находится{ffb300} в черном списке")
                sleep, 500
            addChatMessageEx("{FF8C00}","{FF8C00}[AHK]: {ffb300}Проверяем историю ников игрока на ЧС...")
                sleep, 500
                SendChat("/history " csk)
                sleep, 1000
                niki := getDialogText()
            send, {esc}
                sleep, 150
                fileappend, %niki%, %a_temp%/history.txt
                Loop, read, %a_temp%/history.txt
                {
                    FileReadLine, nickiki, %a_temp%/history.txt, %A_Index%
                    fileread, var, %DIR%BlackList.txt
                    if nothist contains %nickiki%
                    {
                    addChatMessageEx("{FF8C00}","{FF8C00}[AHK]:{ffb300} История изменения имён {3399FF}" csk "{ffb300} пуста")
                        filedelete, %a_temp%/history.txt
                        return
                    }
                    if var contains %nickiki%
                    {
                    fileappend, {FF8C00}[AHK]: {3399FF}%nickiki% {ff0000}находится{ffb300} в черном списке`n, %a_temp%/result.txt
                    }
                    else
                    {
                    fileappend, {FF8C00}[AHK]: {3399FF}%nickiki% {00b300}не находится{ffb300} в черном списке`n, %a_temp%/result.txt
                    }
                }
                fileread, nicks123, %a_temp%/result.txt
            ShowDialog("0", "{ffcc00}AHK - История ников " csk "", nicks123,"Отмена")
                filedelete, %a_temp%/history.txt
                filedelete, %a_temp%/result.txt
                return
            }
        }
    Кто понимает, отпишите пожалуйста, я сейчас туплю, в скайпе я могу более понятно выразить идею..
     
  28. HatiGreez

    HatiGreez Знающий

    Регистрация:
    11 июл 2017
    Сообщения:
    265
    Симпатии:
    17
    Помогите пожалуйста. Листая эту тему, я наткнулся на данный ответ. Мне как раз надо было сделать диалоговое окно с функцией выбором. Но хотелось бы сделать так, чтобы при выборе определённого пункта в списке кидало на какую-то метку, после чего она делала свою работу. К примеру, метки met: , met2: , met3, met4.
     
  29. Artur_iOS

    Artur_iOS Знающий

    Регистрация:
    18 мар 2017
    Сообщения:
    214
    Симпатии:
    86
    !1::
    ShowDialog(2, "Выбери действие", "Пункт №1`nПункт №2", "Ок")
    Result := LineResult()
    if (!Result)
        return
    Gosub, Label%Result%
    return
    Label1:
    addChatMessageEx("FFFFFF", "Выбран 1-ый пункт")
    return
    Label2:
    addChatMessageEx("FFFFFF", "Выбран 2-ой пункт")
    return
    LineResult() {
        if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
            return false
        while (isDialogOpen())
            continue
        if(GetKeyState("Esc", "P"))
            return false
        return getDialogLineNumber()
    }
     
    Cesar Ballard нравится это.
  30. HatiGreez

    HatiGreez Знающий

    Регистрация:
    11 июл 2017
    Сообщения:
    265
    Симпатии:
    17
    От души спасибо! Теперь открылись много новых возможностей.
     
  31. HatiGreez

    HatiGreez Знающий

    Регистрация:
    11 июл 2017
    Сообщения:
    265
    Симпатии:
    17
    Уж извиняюсь, что часто обращаюсь, но так такого, что я не в совершенстве знаю ahk. В чём суть вопроса: в UDF.ahk нашёл опкод isDialogButtonSelected(Button id) , но не совсем понял как его использовать, много раз пробовал, но ничего особо не работало. Помогите, пожалуйста, на данном примере так, чтобы при нажатии на "Ок" отправлялось одно сообщение, а при "отмена" отправлялось другое сообщение:
    !1::
    showDialog("0", "Шапка диалога", "Текст диалога", "Ок", "Отмена")
    return

    И ещё, подскажите, как создавать окно с кодом на форуме, да бы не писать как я выше.
     
  32. asdzxcjqwe

    asdzxcjqwe ¯\_(ツ)_/¯
    Друг

    Регистрация:
    13 фев 2017
    Сообщения:
    471
    Симпатии:
    438
    функцию, а не опкод

    теги code

    Примеры использования уже были, один из примеров: (использовать samp-udf последней версии)
    
    $~LButton::
    $~Enter::
        if(!isDialogOpen())
            return
        if(GetKeyState("LButton", "P"))
        {
            Sleep, isDialogButtonSelected(1) ? 150 : 50
            if(isDialogOpen() || isDialogButtonSelected(2))
                return
        }
        title := getDialogCaption()
        index := getDialogIndex()
        id := getDialogId()
        if(title == "Первое меню") ; либо title, либо id, на своё усмотрение
        {
            SCM(CWHITE, "Выбран " index " пункт")
        }
        else if(title == "Второе меню")
        {
            cmenu%index% := !cmenu%index%
            if(!GetKeyState("LButton", "P"))
                Sleep, 150
            showDialog(4, "Второе меню", "Godmode`t" (cmenu1 ? enb : dis) "" nl "Carshot`t" (cmenu2 ? enb : dis) "" nl "Airbrake`t" (cmenu3 ? enb : dis), "Выбрать", "Закрыть")
        }
    return
    
    ^1::
        showDialog(2, "Первое меню", "Пункт 1`nПункт 2`nПункт 3`nПункт 4`nПункт 5`nПункт 6`nПункт 7`nПункт 8`nПункт 9", "Выбрать", "Закрыть")
    return
    
    ^2::
        enb := "{00FF00}Enabled", dis := "{FF0000}Disabled", nl := "`n{FFFFFF}"
        showDialog(4, "Второе меню", "Godmode`t" (cmenu1 ? enb : dis) "" nl "Carshot`t" (cmenu2 ? enb : dis) "" nl "Airbrake`t" (cmenu3 ? enb : dis), "Выбрать", "Закрыть")
    return
     
  33. denzwdw[fwfa

    denzwdw[fwfa Постоянный участник

    Регистрация:
    2 авг 2017
    Сообщения:
    53
    Симпатии:
    2
    не работает простая команда.Подскажите в чем проблема?
    if chatInput contains /rn
        {
            RegExMatch(chatInput, "i)^/rn (.*)", p)
            if p =
            {
            addChatMessage("{ADFF2F}[AHK] Введите /rn [Текст]")
                return
            }
            sendChatMessage("/r (( "    p1    " ))")
        }
        if chatInput contains /fn
        {
            RegExMatch(chatInput, "i)^/fn (.*)", p)
            if p =
            {
            addChatMessage("{ADFF2F}[AHK] Введите /fn [Текст]")
                return
            }
            sendChatMessage("/f (( "    p1    " ))")
        }
     
  34. Artur_iOS

    Artur_iOS Знающий

    Регистрация:
    18 мар 2017
    Сообщения:
    214
    Симпатии:
    86
    
    $~vkD::
    if (IsInChat() && !IsDialogOpen()) {
        Sleep, 200
        chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
        if (RegExMatch(chatInput, "^\/(r|f)n\s(.*)$", value) {
            SendChat("/" value1 " " value2)
        }
    }
    return
    UDF - http://rebres.ru/AutoHotKey/SAMP-UDF-Developer.ahk
    Кодировка АХК - Ansi-32bit
     
  35. denzwdw[fwfa

    denzwdw[fwfa Постоянный участник

    Регистрация:
    2 авг 2017
    Сообщения:
    53
    Симпатии:
    2
    [​IMG]