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

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

  1. Andreykas1421

    Andreykas1421 Участник

    Регистрация:
    23 май 2018
    Сообщения:
    20
    Симпатии:
    0
    Не идет сохранение в текстовый документ последних 2-х строчек, а именно 12,13,27,28кто может помочь?
    ReadSettings:
    IniRead,EditHos, config.ini, Setup, EditHos
    IniRead,YourName,config.ini, Text, YourName
    IniRead,Edit1,config.ini, Text, Edit1
    IniRead,Edit2,config.ini, Text, Edit2
    IniRead,Edit3,config.ini, Text, Edit3
    IniRead,Edit4,config.ini, Text, Edit4
    IniRead, Hotkey1, config.ini, Text, Hotkey1a
    IniRead, Hotkey2, config.ini, Text, Hotkey2a
    IniRead, Hotkey3, config.ini, Text, Hotkey3a
    IniRead, Hotkey4, config.ini, Text, Hotkey4a
    IniRead,Frac, config.ini, Setup, Frac
    IniRead,Nick,config.ini, Text, Nick
    return
    Save:
    Gui, Submit, NoHide
    IniWrite, %EditHos%, config.ini, Setup, EditHos
    IniWrite, %YourName%,config.ini, Text, YourName
    IniWrite, %Edit1%,config.ini, Text, Edit1
    IniWrite, %Edit2%,config.ini, Text, Edit2
    IniWrite, %Edit3%,config.ini, Text, Edit3
    IniWrite, %Edit4%,config.ini, Text, Edit4
    IniWrite, %Hotkey1%,config.ini, Text, Hotkey1
    IniWrite, %Hotkey2%,config.ini, Text, Hotkey2
    IniWrite, %Hotkey3%,config.ini, Text, Hotkey3
    IniWrite, %Hotkey4%,config.ini, Text, Hotkey4
    IniRead,  %Nick%, config.ini, Setup, Nick
    IniRead,  %Frac%,config.ini, Text, Fracs
    
     
  2. Revalto

    Revalto Интересующийся

    Регистрация:
    13 фев 2016
    Сообщения:
    146
    Симпатии:
    24
    IniWrite, Value, C:\Temp\myfile.ini, section2, key

    [section2]
    Key=Value
    ;////////////////////////////////////////////////////////////////////////////

    IniRead, OutputVar, C:\Temp\myfile.ini, section2, key
    MsgBox, The value is %OutputVar%.
     
  3. dron989

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

    Регистрация:
    8 фев 2016
    Сообщения:
    30
    Симпатии:
    1
    Помогите. как сделать, чтоб начинать например с 50 до 100 а не с 0
    DELETE::
    Loop 100
    {
    SendInput %A_Index%{Enter}
    Sleep 1000
    }
    END::Pause
     
  4. Andreykas1421

    Andreykas1421 Участник

    Регистрация:
    23 май 2018
    Сообщения:
    20
    Симпатии:
    0
    Как сделать что бы при команде, к примеру /time, делался скрин и отправлялся в определённую папку, которую сам же и создаст, думаю ясно описал)
     
  5. Revalto

    Revalto Интересующийся

    Регистрация:
    13 фев 2016
    Сообщения:
    146
    Симпатии:
    24
    DELETE::
    num := 50
    Loop 100
    {
    SendInput %num%{Enter}
    Sleep 1000
    num += 1
    }
    return
    Чекаешь чат и нажимаешь F8...
     
    #1720 Revalto, 10 июл 2018
    Последнее редактирование: 10 июл 2018
    dron989 нравится это.
  6. Andreykas1421

    Andreykas1421 Участник

    Регистрация:
    23 май 2018
    Сообщения:
    20
    Симпатии:
    0
    Неправильно понял, к примеру я нажимаю alt+1 , создаётся папка к примеру "Доклад" и в неё уже идет данный скрин
    !1::
    sendChat("/time")
    sendChat("F8")
     
  7. Revalto

    Revalto Интересующийся

    Регистрация:
    13 фев 2016
    Сообщения:
    146
    Симпатии:
    24
    Чекаешь чат и перемещаешь скрин в папку..
     
  8. Andreykas1421

    Andreykas1421 Участник

    Регистрация:
    23 май 2018
    Сообщения:
    20
    Симпатии:
    0
    А автоматически как можно сделать?
    Видел данную функцию в одном АХК
     
  9. Revalto

    Revalto Интересующийся

    Регистрация:
    13 фев 2016
    Сообщения:
    146
    Симпатии:
    24
    В цикл помести ._.
     
  10. Andreykas1421

    Andreykas1421 Участник

    Регистрация:
    23 май 2018
    Сообщения:
    20
    Симпатии:
    0
    А по подробнее*?)
     
  11. Revalto

    Revalto Интересующийся

    Регистрация:
    13 фев 2016
    Сообщения:
    146
    Симпатии:
    24
    while / loop / setTimer
     
  12. #Kritika

    #Kritika Новичок

    Регистрация:
    8 июл 2018
    Сообщения:
    4
    Симпатии:
    0
    ЛС проверь.
     
  13. Misha Kolashnikov

    Misha Kolashnikov Постоянный участник

    Регистрация:
    12 янв 2018
    Сообщения:
    81
    Симпатии:
    2
    Можете подсказать из-за чего не работает скрипт? И как его решить проблему.

    {
        numpad0::
        NearIdCar := NearPlayerInCar(90)
        ModelName :=""
        if (NearIdCar >= 0)
        {
            ModelName := getTargetVehicleModelNameById(NearIdCar)
        }
        if ModelName !=
        {
            if (ModelName = "Coach") or (ModelName = "Bus")
            sendChat("/m Водитель автобуса, немедленно прижмитесь к обочине!")
            else if (ModelName = "Cabbie") or (ModelName = "Taxi")
            sendChat("/m Водитель такси, немедленно прижмитесь к обочине!")
            else if (ModelName = "Tanker") or (ModelName = "Linerunner")  or (ModelName = "Roadtrain")
            sendChat("/m Водитель грузовика, немедленно прижмитесь к обочине!")
            else if (ModelName = "PCJ-600") or (ModelName = "Faggio") or (ModelName = "Freeway") or (ModelName = "Sanchez") or (ModelName = "FCR-900") or (ModelName = "NRG-500") or (ModelName = "BF-400") or (ModelName = "Wayfarer")
            sendChat("/m Водитель мотоцикла " ModelName    " номер, немедленно прижмитесь к обочине!")
            else if (ModelName = "Quad")
            sendChat("/m Водитель квадроцикла " ModelName    " немедленно прижмитесь к обочине!")
            else
            sendChat("/m Водитель автомобиля " ModelName    " немедленно прижмитесь к обочине!"       
    Return
        {
    }
    
     
  14. *Lester*

    *Lester* Новичок

    Регистрация:
    10 июн 2018
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте.
    У меня такая вот просьба. Мне нужен AHK скрипт чтобы он писал в чат доклад, потом для МЕНЯ в чате появлялась надпись в чате " Нажмите F3 для следующего поста", и когда я жму появляется следующий доклад. Надеюсь понятно объяснил. Самому сделать не получилось, т.к. в AHK 0.Буду очень благодарен
     
    #1729 *Lester*, 11 июл 2018 в 10:27
    Последнее редактирование: 11 июл 2018 в 10:46
  15. Harryss

    Harryss Участник

    Регистрация:
    7 мар 2015
    Сообщения:
    22
    Симпатии:
    1
    Не могу разобраться, как оптимизировать две кнопки в диалоге UDF. Вот код, кнопки "Открыть" и "Закрыть", все мои старания приводили к тому, что "Закрыть" действовало как "Открыть", и "Открыть" как "Закрыть", единственным вариантом было просто поменять их местами. Но это неудобно и непривычно, "Открыть" всегда делают слева, поэтому хочу чтобы две кнопки адекватно работали.
    checkdialogMenu:
    if (isDialogButton1Selected() == 1)
    {
      menu := 0
    }
     
  16. NeviL

    NeviL Интересующийся

    Регистрация:
    18 мар 2013
    Сообщения:
    118
    Симпатии:
    20
    помогите сделать
    нажатие ALT потом Стрелки вверх или в низ ENTER потом число 6 и ENTER и в чат надпись /selldrugs "ближайший ид игрока" "6" "1"
    в краце ALT>стрелка вниз>ENTER>6>ENTER
    и команда /selldrugs каждые 2 мин
     
  17. Vladimir Minski

    Vladimir Minski Участник

    Регистрация:
    2 июл 2018
    Сообщения:
    10
    Симпатии:
    0
    Можно ли как-то сделать, чтобы после отправки команды /time в чат, раскладка переключалась на английскую, если стоит русская?
    В AHK не много понимаю, не бейте палками.
    :)
    !2::
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 100
    SendInput {F6}/time{enter}
    Sleep 100
    Return
     
    #1732 Vladimir Minski, 11 июл 2018 в 11:02
    Последнее редактирование: 11 июл 2018 в 11:08
  18. Harryss

    Harryss Участник

    Регистрация:
    7 мар 2015
    Сообщения:
    22
    Симпатии:
    1
    Ну вот именно для того кода, который ты сейчас скинул подойдет обычный SendMessage. Поставь это после 3-ей строки.
    SendMessage, 0x50,, 0x4090409,, A
     
    Vladimir Minski нравится это.
  19. JuneFAQ

    JuneFAQ Участник

    Регистрация:
    3 дек 2017
    Сообщения:
    8
    Симпатии:
    0
    Ребят такая проблема. Писал простой бинд для САМПа.
    Было очень много ошибок, первый день с АХК, все исправил, кроме одной: Пишет: Unexpected "{"
    Я не знаю с чём это может быть связано. При запуске АХК эта ошибка появляется в 3 строке.
    А во 2 строке всё нормально. Помогите решить. Вот скрин.
    Изображение загружено на фотохостинг Япикс(http://yapx.ru/v/BzrY1)
     
  20. Dennisis

    Dennisis Новичок

    Регистрация:
    20 янв 2018
    Сообщения:
    1
    Симпатии:
    0
    Всем привет. Хочу сделать скрипт, который будет работать только у игрока с определенным ником. Как-то у меня был такой код, но я его потерял, кто может подсказать ?
     
  21. Marcus Mikel

    Marcus Mikel Участник

    Регистрация:
    10 июл 2014
    Сообщения:
    16
    Симпатии:
    0
    if (chatInput="/rre") || if (chatInput="/rre ")
    {
    {
    Random, rrer, 0, 299
    SendInput, {F6}/re %rrer%{Enter}
    return
    }
    else
    {
    IfInString, A_LoopReadLine, [Ошибка] Вы ввели свой ID!
    }
    }
    как сделать что бы при том когда в чат напишет: [Ошибка] Вы ввели свой ID!, команда повторилась и выбрала другого человека от 0 до 299?
     
  22. Marcus Mikel

    Marcus Mikel Участник

    Регистрация:
    10 июл 2014
    Сообщения:
    16
    Симпатии:
    0
    Я думаю сделать АХК и вначале прописать через nickname := getUsername() и там уже писать что при том если ник = такой то, то скрипт работает, в ином случае АХК выключается или выдаёт ошибку и не работает. Пробуй, я сам код не смогу написать :)
     
  23. Marcus Mikel

    Marcus Mikel Участник

    Регистрация:
    10 июл 2014
    Сообщения:
    16
    Симпатии:
    0
    Я что то не понимаю смысл команды exit в каждой строке, а по этой проблеме, попробуй скинь скрипт сюда
     
  24. JuneFAQ

    JuneFAQ Участник

    Регистрация:
    3 дек 2017
    Сообщения:
    8
    Симпатии:
    0
    Вот. Тут в формате .txt
    И вот сам код.
    #IfWinActive GTA:SA:MP
    g::send,{f6}"/me снял рюкзак с плеч, после чего открыл рюкзак" {enter} exit
    sleep 2000send,{f6}"/do Рюкзак на полу." {enter} exit
    sleep 2000send,{f6}"/do Аптечка в рюкзаке." {enter} exit
    sleep 2000send,{f6}"/me достал из рюкзака аптечку, после чего взял аптечку в руки" {enter} exit
    sleep 2000send,{f6}"/me закрыл рюкзак, после чего, движением правой руки, открыл аптечку" {enter} exit
    sleep 2000send,{f6}"/do В аптечке лежит бинт." {enter} exit
    sleep 2000send,{f6}"/me достал из аптечки бинт, после чего взял бинт в руки" {enter} exit
    sleep 2000send,{f6}"/me положил аптечку на землю" {enter} exit
    sleep 2000send,{f6}"/do Бинт в руках." {enter} exit
    sleep 2000send,{f6}"/me раскрутил бинт, после чего, используя зубы, откусил раскрученный кусок бинта" {enter} exit
    sleep 2000send,{f6}"/me рассмотрел человека напротив" {enter} exit
    sleep 2000send,{f6}"/do У человека напротив ранение правой руки." {enter} exit
    sleep 2000send,{f6}"/me взял руку человека, после чего обмотал руку бинтом" {enter} exit
    sleep 2000send,{f6}"/me взял два конца бинта, после чего связал их в узел" {enter} exit
    sleep 2000send,{f6}"/do У человека напротив перевязка на правой руке." {enter} exit
    return
    
     

    Вложения:

  25. Marcus Mikel

    Marcus Mikel Участник

    Регистрация:
    10 июл 2014
    Сообщения:
    16
    Симпатии:
    0
    Пробуй, не проверял. В следующий раз sleep TIME на новой строке пиши
     

    Вложения:

  26. Harryss

    Harryss Участник

    Регистрация:
    7 мар 2015
    Сообщения:
    22
    Симпатии:
    1
    Ребята, нужна срочно помощь. Для более менее освоенных это будет легкой просьбой - как сделать для диалога две работающих кнопки?! Чтобы первая при нажатии делала то же самое что Enter, а вторая просто закрывала диалог? Моя проблема в том, что я не могу оптимизировать работу двух кнопок - работает нормально лишь одна, приходится выбирать. Использую isDialogButton1Selected , как его грамотно использовать для двух?
     
  27. Ashynja

    Ashynja Участник

    Регистрация:
    Четверг
    Сообщения:
    6
    Симпатии:
    0
    Как сделат так что бы при вводе /лекции высвечевалося окошко во всеми лекциямикоторые я забиндил???
     
  28. Andreykas1421

    Andreykas1421 Участник

    Регистрация:
    23 май 2018
    Сообщения:
    20
    Симпатии:
    0
    Как сделать что бы нажатии к примеру на 1, в чат выводился текст, но после второго нажатия на 1, оно переставало действовать.
    
    !1::
    addChatMessage("{ffffff}[ {00afff}Проверка {ffffff}] Выбрано: {1fff00}нажмите 1.")
    addChatMessage("{ffffff}[ {00afff}Проверка {ffffff}] Выбрано: {1fff00}нажмите 2.")
    addChatMessage("{ffffff}[ {00afff}Проверка {ffffff}] Выбрано: {1fff00}нажмите 3.")
    addChatMessage("{ffffff}[ {00afff}Проверка {ffffff}] Выбрано: {1fff00}нажмите 4.")
    addChatMessage("{ffffff}[ {00afff}Проверка {ffffff}] Выбрано: {1fff00}нажмите 5.")
    return
    
     
    #1743 Andreykas1421, 12 июл 2018 в 15:57
    Последнее редактирование: 12 июл 2018 в 16:27
  29. Revalto

    Revalto Интересующийся

    Регистрация:
    13 фев 2016
    Сообщения:
    146
    Симпатии:
    24
    Наченем с того, что за { и } за пределами активаций?, Так же при использовании второй проверки, вы не внесли данные для проверки. Формат: if(проверка) { ;code }

    Это выглядит как заказ. Не думаю, что есть желающие писать бесплатно...

    #include UDF_037.ahk ; UDF_037.ahk - это название  файла UDF
    
    ;=============================================
    ; Обнуление переменной при нажатии ESC и F6
    ;=============================================
    ~ESC::
    ~F6::
    menu:=0
    return
    
    ;=============================================
    ; Кнопки вызова диалогов
    ;=============================================
    F3::
    menu := 1
    ShowDialog(2, "Диалог 1", "Первая`nВторая", "X")
    return
    F4::
    menu := 2
    ShowDialog(2, "Диалог с подменю", "Лекции`nПункт без доп. меню", "X")
    return
    
    ~LButton::
    Time := A_TickCount
    while(isDialogOpen())
    {
        if (A_TickCount - Time > 500)
        {
      Return
        }
    }
    checkdialogMenu:
    if (isDialogButton1Selected() == 1)
    {
        menu := 0
    }
    ifWinNotActive, GTA:SA:MP
    {
        return
    }
    
    ;=============================================
    ; Проверка на активное меню
    ;=============================================
    if (menu == 1)
    {
        menu := 0
        line_num  := getDialogLineNumber()
        line_text  := getDialogLine(line_num)
    
        addChatMessage("Выбрано: " line_text)
        return
    }
    else if (menu == 2)
    {
        menu := 0
        line_num  := getDialogLineNumber()
        line_text  := getDialogLine(line_num)
    
        if (line_num == 1)
        {
      showDialog(2, "Подменю", "Первый пукнкт`nВторой пункт", "X")
      menu := 3
        }
        else if (line_num == 2)
      addChatMessage("Выбрано: " line_text)
        return
    }
    else if (menu == 3)
    {
        menu := 0
        line_num  := getDialogLineNumber()
        line_text  := getDialogLine(line_num)
    
        addChatMessage("В подменю выбрано: " line_text)
        return
    }
    return
    
    ~Enter::
    gosub, checkdialogMenu
    return#include UDF_037.ahk ; UDF_037.ahk - это название  файла UDF
    
    ;=============================================
    ; Обнуление переменной при нажатии ESC и F6
    ;=============================================
    ~ESC::
    ~F6::
    menu:=0
    return
    
    ;=============================================
    ; Кнопки вызова диалогов
    ;=============================================
    F3::
    menu := 1
    ShowDialog(2, "Диалог 1", "Первая`nВторая", "X")
    return
    F4::
    menu := 2
    ShowDialog(2, "Диалог с подменю", "Лекции`nПункт без доп. меню", "X")
    return
    
    ~LButton::
    Time := A_TickCount
    while(isDialogOpen())
    {
        if (A_TickCount - Time > 500)
        {
      Return
        }
    }
    checkdialogMenu:
    if (isDialogButton1Selected() == 1)
    {
        menu := 0
    }
    ifWinNotActive, GTA:SA:MP
    {
        return
    }
    
    ;=============================================
    ; Проверка на активное меню
    ;=============================================
    if (menu == 1)
    {
        menu := 0
        line_num  := getDialogLineNumber()
        line_text  := getDialogLine(line_num)
    
        addChatMessage("Выбрано: " line_text)
        return
    }
    else if (menu == 2)
    {
        menu := 0
        line_num  := getDialogLineNumber()
        line_text  := getDialogLine(line_num)
    
        if (line_num == 1)
        {
      showDialog(2, "Подменю", "Первый пукнкт`nВторой пункт", "X")
      menu := 3
        }
        else if (line_num == 2)
      addChatMessage("Выбрано: " line_text)
        return
    }
    else if (menu == 3)
    {
        menu := 0
        line_num  := getDialogLineNumber()
        line_text  := getDialogLine(line_num)
    
        addChatMessage("В подменю выбрано: " line_text)
        return
    }
    return
    
    ~Enter::
    gosub, checkdialogMenu
    return
    Не могу помочь, без предоставления кода. P.S. скрин удален.

    if(getUsername() != "Samuel_Revalto")
         return
    Зачем вы 2 раза открываете скобки при if? Уже грубая ошибка. А так чекайте чат на наличии фразы и все.

    Не понял вопроса...
    :?:/лекция::
    ShowDialog(2, "Диалог с подменю", "Лекции`nПункт без доп. меню", "X")
    return
    Зачем постоянно задавать вопрос, на который был уже ответ?
    ; для продолжения нажмите - 1, для отказа - 2
    loop
    {
    if (getkeystate("1", "P"))
    {
    ; действия
    break
    }
    else if (getkeystate("2", "P"))
    {
    ; вы нам не подходите..
    return
    }
    }
    ; действия
    P - это проверка на то, физически нажата клавиша или нет (сам нажал на клавиатуре или это сделал скрипт)
    А D указывают обычно снизу и это значит, что клавиша нажата от слова "Down(вниз)". U - "Up(вверх)" например:
    GetKeyState, state, sc2F, P
    If state = D
        MsgBox, клавиша нажата
    If state = U
        MsgBox, клавиша отпущена
     
    Harryss нравится это.
  30. Revalto

    Revalto Интересующийся

    Регистрация:
    13 фев 2016
    Сообщения:
    146
    Симпатии:
    24
    Плохое решение учиться на готовых решениях. Может быть это и показатель, как надо писать код. Лучше пробовать самому с 0 используя документации! А если вам просто нужен готовый код и не желаете учить AHK, то идите сразу заказывайте скрипт...
     
  31. Harryss

    Harryss Участник

    Регистрация:
    7 мар 2015
    Сообщения:
    22
    Симпатии:
    1
     
  32. Toopie

    Toopie Участник

    Регистрация:
    21 янв 2018
    Сообщения:
    8
    Симпатии:
    1
    ну тут ты фифти-фифти прав.
    я в пхп 3 года и прошел middle аттестацию и скажу так
    я учился не по документации, только посмотрел в оф документалке пару функций и пошел наяривать
    и теперь я понимаю как именно работает та или иная функция, почему она так работает, лучше самому все осваивать и немного смотреть на чужие коды, чем читать документалку
     
  33. Ashynja

    Ashynja Участник

    Регистрация:
    Четверг
    Сообщения:
    6
    Симпатии:
    0
    Как сделат продолжнение действия?
    Например: ввел я в чат /медикаменты И мне отыгрует РП загрузку медикаментов,а после этого в чат писали типо "Для розгрузки медикаментов нажмите "1" "
     
  34. Revalto

    Revalto Интересующийся

    Регистрация:
    13 фев 2016
    Сообщения:
    146
    Симпатии:
    24
    Я PHP выучил за 1-2 недели, уже имею по нему сертификат. Документации не обязательно читать, тебе достаточно знать, что значит функция. Примеры в документациях по использованию есть и этого достаточно.

    Выше отвечал на этот вопрос. Буквально через 2 комментария...
     
  35. Ashynja

    Ashynja Участник

    Регистрация:
    Четверг
    Сообщения:
    6
    Симпатии:
    0
    Так?
    :?:/собес::
    SendInput,{F6}Вы на собеседование?
    
    ; для продолжения нажмите - 1, для отказа - 2
    loop
    {
    if (getkeystate("1", "P"))
    {
    ; Отлично,покажите паспорт лицензии и мед карту!
    break
    }
    else if (getkeystate("2", "P"))
    {
    ; Кхем....
    return
    }
    }
    ; Кхем.....