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

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

  1. RandeVulll

    RandeVulll Пользователь

    Регистрация:
    07.07.2016
    Сообщения:
    5
    Симпатии:
    0
    Репутация:
    0
    if chatInput = /ahkset
    {
    SendChat("/mn")
    sleep 500
    SendInput, {Enter}
    sleep 500
    text := getDialogText()
    text := RegExReplace(text, A_Tab, "")
    text := RegExReplace(text, "{FFFFFF}", "")
    text := RegExReplace(text, "{0099FF}", "")
    RegExMatch(text, "Имя:([_A-Za-z]+)`n", nm)
    nm1 := RegExReplace(nm1, "_", " ")
    RegExMatch(text, "Номер телефона:([0-9]+)`n", tel)
    RegExMatch(text, "Работа / должность:(.*)`nРанг", rbt)
    RegExMatch(text, "Ранг:([0-9]+)`n", rng)
    if RegExMatch(text, "Замужем за:")
    {
    RegExMatch(text, "Пол:(.*)`nЗамужем", sex)
    }
    if RegExMatch(text, "Женат на:")
    {
    RegExMatch(text, "Пол:(.*)`nЖенат", sex)
    }
    AddChatMessageEx("0xFFFFFF", "Имя: {97004B}" nm1)
    sleep 100
    AddChatMessageEx("0xFFFFFF", "Телефон: {97004B}" tel1)
    sleep 100
    AddChatMessageEx("0xFFFFFF", "Должность: {97004B}" rbt1)
    sleep 100
    AddChatMessageEx("0xFFFFFF", "Ранг: {97004B}" rng1)
    sleep 100
    AddChatMessageEx("0xFFFFFF", "Пол: {97004B}" sex1)
    SendInput, {Enter}
    IniWrite, %nm1%, %DIRSET%, Info, NAME
    IniWrite, %tel1%, %DIRSET%, Info, TEL
    IniWrite, %rbt1%, %DIRSET%, Info, WRK
    IniWrite, %rng1%, %DIRSET%, Info, RANG
    IniWrite, %sex1%, %DIRSET%, Info, SEX
    proverka := 1
    IniWrite, %proverka%, %DIRSET%, Info, Proverka
    return
    }
    вообщем получается, он считавает данные, сюда надо просто добавить строку считывания строки "Бизнес:"
    • И вывод если там что-то то есть, в переменную, то есть, например что-бы на номер отсылалась смс с названием бизнеса и его номер, в случае если есть
    • если нету бизнеса, то ничего, просто считывает и все.
    Как это делается?
     
    #401 RandeVulll, 12 янв 2018
    Последнее редактирование модератором: 13 янв 2018
  2. fiasco552

    fiasco552 Новичок

    Регистрация:
    15.08.2017
    Сообщения:
    3
    Симпатии:
    0
    Репутация:
    0
    Спасибо, помогли. Но вот возникла еще одна задача, возможно ли, id полученное таргетом ( getTargetPed() ) Записать в память, чтобы его можно было потом использовать? К примеру, я навелся на педа, получил через таргет id, а потом последний полученный id прописывался в addchatmessageEx к примеру. Спасибо заранее.
     
  3. Vlad Horii

    Vlad Horii Известный пользователь

    Регистрация:
    16.07.2017
    Сообщения:
    101
    Симпатии:
    10
    Репутация:
    8
    target := getTargetPed() ; не уверен что именно getTargetPed, это сам проверь, сейчас не у компа. :( Но суть ты понял
    
     
  4. fiasco552

    fiasco552 Новичок

    Регистрация:
    15.08.2017
    Сообщения:
    3
    Симпатии:
    0
    Репутация:
    0
    Что такое getTargetPed(), Я знаю, я имел ввиду, чтобы не держать таргет, а чтобы прицелился, отпустил, но id в память как-то записался, и уже не держа таргета активировать скрипт с этим id, ну вроде объяснил)
     
  5. Rinat_Namazov

    Rinat_Namazov Известный пользователь

    Регистрация:
    09.08.2015
    Сообщения:
    68
    Симпатии:
    9
    Репутация:
    7
    
    ~RButton::
    ids := getIdByPed(getTargetPed())
    return
    
     
  6. vadzlo

    vadzlo Пользователь

    Регистрация:
    09.10.2016
    Сообщения:
    24
    Симпатии:
    0
    Репутация:
    0
    В общем, может кто-то шарит или имеет какой-то образец кода в ахк с такой последовательностью действий

    Пример:

    На Х сервере есть некая администрация, и там типа меряются пиписками кто быстрее ответит. Прилетел какой-то вопрос ты хоба /команда ID ответ

    Но ответ иногда заеб писать, и пользоватся клео шпора не всегда по кайфу ибо оно глюканафты часто ловит

    А хотелось бы иметь след. пример скрипта.
    Я записываю некий текст в код ахк, потом в игре не нажатием горячих кнопок, а допустим, я прописал для кода команду в чат в игре, пускай будет /help ID игрока определённому игроку с тем ID что я указал летит ответ
    типа пример: /adm ID {определяет ай ди тот шо я указал в /help ID} что бы отрыть тачку поедьте туда-то туда, и стелайте то и то.
     
  7. Misha Kolashnikov

    Misha Kolashnikov Пользователь

    Регистрация:
    12.01.2018
    Сообщения:
    10
    Симпатии:
    0
    Репутация:
    0
    Здравствуйте, я бы хотел реализовать теги, например, что пишешь в чате /prefix [тег] и при вводе например /d нажимаешь пробел, после чего появляется /d [Тег]
     
  8. Vlad Horii

    Vlad Horii Известный пользователь

    Регистрация:
    16.07.2017
    Сообщения:
    101
    Симпатии:
    10
    Репутация:
    8
    Смотри выше, отвечал такому же.
    Или тебе именно через чат нужно сделать?
     
  9. Misha Kolashnikov

    Misha Kolashnikov Пользователь

    Регистрация:
    12.01.2018
    Сообщения:
    10
    Симпатии:
    0
    Репутация:
    0
    Да, через чат.

    Я прочитал ваш пост, но одна проблема, но теги после перезапуска не появляются, создал конфиг, и все настроил, но из-за чего-то не работает.
    Вот мой код
     

    Вложения:

    • test.txt
      Размер файла:
      199,4 КБ
      Просмотров:
      3
    #409 Misha Kolashnikov, 12 янв 2018
    Последнее редактирование модератором: 13 янв 2018
  10. Vlad Horii

    Vlad Horii Известный пользователь

    Регистрация:
    16.07.2017
    Сообщения:
    101
    Симпатии:
    10
    Репутация:
    8
    Буду дома, проверю.
    Нахуй вы это скобки суете куда попало?)
     
  11. Misha Kolashnikov

    Misha Kolashnikov Пользователь

    Регистрация:
    12.01.2018
    Сообщения:
    10
    Симпатии:
    0
    Репутация:
    0
    Какие скобки? Вы про что?
     
  12. Rinat_Namazov

    Rinat_Namazov Известный пользователь

    Регистрация:
    09.08.2015
    Сообщения:
    68
    Симпатии:
    9
    Репутация:
    7
    После перезапуска скрипта данные обнуляются, запись и чтение настроек здесь отсутствует. Что вы ожидали?
     
  13. Misha Kolashnikov

    Misha Kolashnikov Пользователь

    Регистрация:
    12.01.2018
    Сообщения:
    10
    Симпатии:
    0
    Репутация:
    0
    Вы не понимаете, я настроил, там стоят строки IniWrite и IniRead что ещё надо добавить, чтобы все работало? И в том числе, конфиг сохранил их.
     
  14. Rinat_Namazov

    Rinat_Namazov Известный пользователь

    Регистрация:
    09.08.2015
    Сообщения:
    68
    Симпатии:
    9
    Репутация:
    7
    Код суда
     
  15. Misha Kolashnikov

    Misha Kolashnikov Пользователь

    Регистрация:
    12.01.2018
    Сообщения:
    10
    Симпатии:
    0
    Репутация:
    0
    Немного формулировочку подправлю, теги в рацию не появляются, но работают везде, кроме тегов в рации.
     

    Вложения:

    • test.txt
      Размер файла:
      199,4 КБ
      Просмотров:
      4
    #415 Misha Kolashnikov, 12 янв 2018
    Последнее редактирование модератором: 13 янв 2018
  16. Rinat_Namazov

    Rinat_Namazov Известный пользователь

    Регистрация:
    09.08.2015
    Сообщения:
    68
    Симпатии:
    9
    Репутация:
    7
    1. Считывание тэга находиться в функции, функция не вызвана, следовательно тэг не прочитается.
    2. В команде /d указанно что тэг работает только когда переменная i = 1, после считывания нечего не помечается.
    3. Ненужные скобки
    4. Считывание тэга обязательно в самом начале.
    
    IniRead, DTag ,local.ini, Text, DTag
    If DTag !=
    {
    i := 1
    }
    #Include SAMP UDF.ahk
    :?:/prefix::
    Sleep 120
    AntiCrash()
    showDialog(1, "Заголовок диалога", "Введите ваш тэг","Enter")
    AntiCrash()
    Input, tagD, V, {enter}
    DTag := "[" tagD "]"
    IniWrite, %DTag%, local.ini, TEXT, DTag
    i := 1
    return
    :?:/d::
    If i=1
    {
    SendInput, /d %DTag%
    } else {
    SendInput, /d{Space}
    }
    return
    
     
    Vlad Horii нравится это.
  17. Misha Kolashnikov

    Misha Kolashnikov Пользователь

    Регистрация:
    12.01.2018
    Сообщения:
    10
    Симпатии:
    0
    Репутация:
    0
    Все равно после перезагрузки скрипта, нечего не меняется он не пишет тег в /d, кстати из-за чего пишется в ini, DTag= DTag если мне нужно, что он писал именно сам тег, а не DTag.
     
  18. Rinat_Namazov

    Rinat_Namazov Известный пользователь

    Регистрация:
    09.08.2015
    Сообщения:
    68
    Симпатии:
    9
    Репутация:
    7
    Так тоже?
    
    #Include SAMP UDF.ahk
    :?:/prefix::
    Sleep 120
    AntiCrash()
    showDialog(1, "Заголовок диалога", "Введите ваш тэг","Enter")
    AntiCrash()
    Input, tagD, V, {enter}
    DTag = [%tagD%]
    IniWrite, %DTag%, local.ini, TEXT, DTag
    i := 1
    return
    :?:/d::
    IniRead, DTag ,local.ini, Text, DTag
    If DTag !=
    {
    i := 1
    }
    If i = 1
    {
    SendInput, /d %DTag%
    } else {
    SendInput, /d{Space}
    }
    return
    
     
  19. vadzlo

    vadzlo Пользователь

    Регистрация:
    09.10.2016
    Сообщения:
    24
    Симпатии:
    0
    Репутация:
    0
    Что за дичь? копи пащу код, кидаю в папку отдельный ахк (с этим кодом) в конечном итоге в папке 2 файла (юдф + нужный ахк) и юдф назван как в коде в 1-ой строчке указано, но нихера не пашет. Вообще 0 реакции, а если в 32 анси открывать пишет мол ерор лайн 1 самп юдф не может быть открыт
     
  20. Vlad Horii

    Vlad Horii Известный пользователь

    Регистрация:
    16.07.2017
    Сообщения:
    101
    Симпатии:
    10
    Репутация:
    8
    ничего не понял шо ты написал (да я тупой и шо?)
    1) Попробуй запихнуть код в сам файл с УДФом. Отпишешь результат.
    2) УДФ у тебя точно назван SAMP-UDF-Developer.ahk и расширение точно .ahk?
     
    Последние данные очков репутации:
    Misha Kolashnikov: -1 Очки (Помог.) 13 янв 2018
    vadzlo нравится это.
  21. Rinat_Namazov

    Rinat_Namazov Известный пользователь

    Регистрация:
    09.08.2015
    Сообщения:
    68
    Симпатии:
    9
    Репутация:
    7
    Если оба файла находятся в одной папке:
    
    #Include SAMP-UDF-037-R2.ahk
    
    Если подключенный файл находится в другой папке:
    Указываем путь
    
    #Include C:\SAMP-UDF-037-R2.ahk
    
     
    Последние данные очков репутации:
    Misha Kolashnikov: 1 Очко (Помог с рацией.) 13 янв 2018
    vadzlo нравится это.
  22. Tanaka

    Tanaka Активный пользователь

    Регистрация:
    14.01.2017
    Сообщения:
    40
    Симпатии:
    8
    Репутация:
    2
    3 строчка должна выглядеть так:
    
    $~Enter::
     
    Последние данные очков репутации:
    vadzlo: 1 Очко (шаришь) 13 янв 2018
    vadzlo нравится это.
  23. vadzlo

    vadzlo Пользователь

    Регистрация:
    09.10.2016
    Сообщения:
    24
    Симпатии:
    0
    Репутация:
    0
    спасибо большое.

    И ещё, крч когда нажимаю энтер в 1-й строчкой сервер ругается, мол, неверная\несерверная команда, а уже второй делает то на что запрограмированно. Как то избавится 1-ой строчки можно?

    Ещё крайне признателен буду если обьясните как этим пользоватся. Если я их совмещаю в 1 (два написанных эти кода) выбивает ошибка на строке

    LineResult() {
    if (!isDialogOpen()
    ....

    по отдельности вообще скрипт не запускает
     
    #423 vadzlo, 12 янв 2018
    Последнее редактирование модератором: 13 янв 2018
  24. Misha Kolashnikov

    Misha Kolashnikov Пользователь

    Регистрация:
    12.01.2018
    Сообщения:
    10
    Симпатии:
    0
    Репутация:
    0
    Работает, но глюк в local.ini, из-за чего-то он сохраняет не тег, который я писывал для /d, а пишет DTag хотя, у меня стоит например надпись Хит, а он сохраняет не Хит, а DTag, а так работает, буду благодарен, если отпишешь, из-за чего так.

    Из-за чего может не работать?


    global TazerIn:=0
    global TazerOut:=0
    global TazerTo:=0
    global WeaponDrawn:=0
    
    UnloadGun:
    if (WeaponDrawn = 1)
    {
    if not (getPlayerWeaponId() = 24) and (TazerOut = 2)
    {
    SendChat("/me поставив пистолет на предохранитель, убрал" Female " его в кобуру")
    WeaponDrawn:=0
    TazerOut:=0
    }
    if not (getPlayerWeaponId() = 3)  and (TazerOut = 3)
    {
    SendChat("/me повесил" Female " дубинку на пояс")
    WeaponDrawn:=0
    TazerOut:=0
    }
    if not (getPlayerWeaponId() = 23)  and (TazerOut = 4)
    {
    SendChat("/me убрал" Female " taser x-26 в кобуру на поясе")
    WeaponDrawn:=0
    TazerOut:=0
    }
    if not (getPlayerWeaponId() = 25)  and (TazerOut = 5)
    {
    SendChat("/me поставив дробовик на предохранитель, повесил" Female " его на плечо")
    WeaponDrawn:=0
    TazerOut:=0
    }
    if not (getPlayerWeaponId() = 34) and (TazerOut = 6)
    {
    SendChat("/me поставив снайперскую винтовку на предохранитель, повесил" Female " его на плечо")
    WeaponDrawn:=0
    TazerOut:=0
    }
    if not (getPlayerWeaponId() = 31)  and (TazerOut = 7)
    {
    SendChat("/me поставив автомат на предохранитель, повесил" Female " его на плечо")
    WeaponDrawn:=0
    TazerOut:=0
    }
    if not (getPlayerWeaponId() = 30) and (TazerOut = 8)
    {
    SendChat("/me поставив автомат на предохранитель, повесил" Female " его на плечо")
    WeaponDrawn:=0
    TazerOut:=0
    }
    if not (getPlayerWeaponId() = 17) and (TazerOut = 9)
    {
    SendChat("/me убирает газовую гранату в нагрудный карман бронежилета")
    TazerOut:=0
    WeaponDrawn:=0
    }
    if not (getPlayerWeaponId() = 33) and (TazerOut = 10)
    {
    SendChat("/me ставит винтовку на предохранитель, вешает её на плечо")
    TazerOut:=0
    WeaponDrawn:=0
    }
    if not (getPlayerWeaponId() = 29) and (TazerOut = 11)
    {
    SendChat("/me поставив пистолет-пулемёт на предохранитель, повесил" Female " его на плечо")
    TazerOut:=0
    WeaponDrawn:=0
    }
    if not (getPlayerWeaponId() = 1) and (TazerOut = 12)
    {
    SendChat("/me снял" Female " кастет.")
    TazerOut:=0
    WeaponDrawn:=0
    }
    if not (getPlayerWeaponId() = 14) and (TazerOut = 13)
    {
    SendChat("/me убрал" Female " цветы в маленькую сумку на поясе")
    TazerOut:=0
    WeaponDrawn:=0
    }
    if not (getPlayerWeaponId() = 5) and (TazerOut = 14)
    {
    SendChat("/me убрал" Female " биту в сумку на спине")
    TazerOut:=0
    WeaponDrawn:=0
    }
    if not (getPlayerWeaponId() = 43) and (TazerOut = 15)
    {
    SendChat("/me закрыл" Female " крышечкой объектив фотоаппарата")
    TazerOut:=0
    WeaponDrawn:=0
    }
    if not (getPlayerWeaponId() = 46) and (TazerOut = 16)
    {
    SendChat("/me снял" Female " парашют")
    TazerOut:=0
    WeaponDrawn:=0
    }
    if not (getPlayerWeaponId() = 8) and (TazerOut = 17)
    {
    SendChat("/me убрал" Female " катану в чехол на поясе")
    TazerOut:=0
    WeaponDrawn:=0
    }
    Sleep 1000
    goto, UnloadGun
    }
    else
    {
    goto, TakeGun
    }
    return
    TakeGun:
    if (WeaponDrawn = 0)
    {
    if (getPlayerWeaponId() = 24)  and (TazerOut != 2)
    {
    SendChat("/me достав пистолет из кобуры, снял" Female " его с предохранителя")
    TazerOut:=2
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 3) and (TazerOut != 3)
    {
    SendChat("/me резким движением правой руки снял" Female " дубинку с пояса")
    TazerOut:=3
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 23)  and (TazerOut != 4)
    {
    SendChat("/me достав taser x-26 из кобуры, положил" Female " палец на курок")
    TazerOut:=4
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 25)  and (TazerOut != 5)
    {
    SendChat("/me сняв дробовик с плеча, переключил" Female " предохранитель")
    TazerOut:=5
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 34)  and (TazerOut != 6)
    {
    SendChat("/me сняв снайперскую винтовку с сплеча, переключил" Female " предохранитель")
    TazerOut:=6
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 31)  and (TazerOut != 7)
    {
    SendChat("/me сняв автомат с плеча, переключил" Female " предохранитель")
    TazerOut:=7
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 30)  and (TazerOut != 8)
    {
    SendChat("/me сняв автомат с плеча, переключил" Female " предохранитель")
    TazerOut:=8
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 17)  and (TazerOut != 9)
    {
    SendChat("/me достал" Female " из нагрудного кармана бронежилета газовую гранат")
    SendChat("/do Газовая граната в правой руке")
    TazerOut:=9
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 33)  and (TazerOut != 10)
    {
    SendChat("/me сняв винтовку с плеча, снял" Female " её с предохранителя")
    TazerOut:=10
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 29)  and (TazerOut != 11)
    {
    SendChat("/me сняв пистолет-пулемёт с плеча, снял" Female " его с предохранителя")
    TazerOut:=11
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 1)  and (TazerOut != 12)
    {
    SendChat("/me надел" Female " кастет на правую руку")
    TazerOut:=12
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 14)  and (TazerOut != 13)
    {
    SendChat("/me развернул" Female " букет цветов")
    TazerOut:=13
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 5)  and (TazerOut != 14)
    {
    SendChat("/me завел" Female " правую руку за спину")
    SendChat("/me достал" Female " биту из сумки на спине")
    TazerOut:=14
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 43)  and (TazerOut != 15)
    {
    SendChat("/me достал" Female " фотоаппарат")
    TazerOut:=15
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 46)  and (TazerOut != 16)
    {
    SendChat("/me одел" Female " парашют на плечи")
    TazerOut:=16
    WeaponDrawn:=1
    }
    if (getPlayerWeaponId() = 8)  and (TazerOut != 17)
    {
    SendChat("/me вытащил" Female " катану из чехла на поясе")
    TazerOut:=17
    WeaponDrawn:=1
    }
    Sleep 1000
    goto, TakeGun
    }
    else
    {
    goto, UnloadGun
    }
    return
     
    #424 Misha Kolashnikov, 13 янв 2018
    Последнее редактирование модератором: 13 янв 2018
  25. Artur_iOS

    Artur_iOS Известный пользователь

    Регистрация:
    18.03.2017
    Сообщения:
    108
    Симпатии:
    31
    Репутация:
    8
    Из-за того что ты скопировал код Годарка не понимая его.
     
  26. Misha Kolashnikov

    Misha Kolashnikov Пользователь

    Регистрация:
    12.01.2018
    Сообщения:
    10
    Симпатии:
    0
    Репутация:
    0
    И? Я вообще спросил из-за чего он не работает, я АХК скачал, и результата 0..
     
  27. Rinat_Namazov

    Rinat_Namazov Известный пользователь

    Регистрация:
    09.08.2015
    Сообщения:
    68
    Симпатии:
    9
    Репутация:
    7
    Потому что там указано условие работающая только когда определенная переменная равна чему-то

    Попробуй заменить одну строчку на эту
    
    DTag := "[" tag "]"
    
    Вообще не сильно понял вопрос, AHK сохраняет файл в таком виде:
    
    [TEXT]
    DTag=[FBI]
    
    Какой сервер?
    Для этого нужно составить регулярку, а для его составления нужнен пример текста из диалога с учетом цветов {FFFFFF}
     
    #427 Rinat_Namazov, 13 янв 2018
    Последнее редактирование модератором: 13 янв 2018
  28. RandeVulll

    RandeVulll Пользователь

    Регистрация:
    07.07.2016
    Сообщения:
    5
    Симпатии:
    0
    Репутация:
    0
    ARP-C Chocolat
     
  29. Rinat_Namazov

    Rinat_Namazov Известный пользователь

    Регистрация:
    09.08.2015
    Сообщения:
    68
    Симпатии:
    9
    Репутация:
    7
    Как по мне удобнее работать со строками чем извлекать статистику считав сразу весь диалог.
    
    RegExMatch(getDialogLine(24), "Бизнес:\s+(.*)", biz)
    addChatMessageEx(0xFFFFFF, "Бизнес: " biz1)
    IniWrite, %biz1%, %DIRSET%, Info, BIZ
    
     
  30. Tanaka

    Tanaka Активный пользователь

    Регистрация:
    14.01.2017
    Сообщения:
    40
    Симпатии:
    8
    Репутация:
    2
    blockInput()/ubBlockInput()
    Но лучше юзать модифицированный КП от Тумкина, а также модицифированный UDF, вроде как,последней версии.
    
    #Include, SAMP.ahk ;---Подключение СПЕЦИАЛЬНОГО SAMP UDF.
    
    CommandProcessor := new CommandProcessor()      ;---Регистрация класса.
    CommandProcessor.SetStatusProcessor(true)       ;---Включение/отключение класса. true - включить, false - выключить.
    CommandProcessor.RegisterCommand("/ahk", "AHK") ;---Первый параметр название команды, второй - метка на которую скрипт перейдет (не функция).
    CommandProcessor.RegisterCommand("/help", "Help")
    return
    
    AHK:
    addChatMessageEx(0xFFFFFF, "Введенная команда: " TempCmd)             ;---TempCmd  - Команда, которую ты ввел.
    addChatMessageEx(0xFFFFFF, "Введенный тект после команды: " TempText) ;---TempText - текст, который ты ввел после команды.
    return
    
    Help:
    addChatMessageEx(0xFFFFFF, "Помощь")
    return
    
    #Include, CP.ahk ;---Подключение МОДИФИЦИРОВАННОГО КП by Tumkin.
    

    Пример: написал в /d "бла-бла", а в /d уже отправляется твой тэг(который ты сохранил) и текст "бла-бла"
    Про КП и UDF читай выше.
    #Include, SAMP.ahk
    
    CommandProcessor := new CommandProcessor()
    CommandProcessor.SetStatusProcessor(true)
    
    CommandProcessor.RegisterCommand("/savetag", "sTag")
    CommandProcessor.RegisterCommand("/d", "dRac")
    return
    
    sTag:
    IniWrite, % TempText, Tag.ini, Settings, tag
    return
    
    dRac:
    IniRead, iTag, Tag.ini, Settings, tag
    addChatMessageEx(0xFFFFFF, "/d " iTag " бла-бла")
    return
    
    #Include, CP.ahk
     
    #430 Tanaka, 13 янв 2018
    Последнее редактирование модератором: 16 янв 2018 в 23:55
    vadzlo нравится это.
  31. Fartuk)

    Fartuk) Пользователь

    Регистрация:
    11.08.2017
    Сообщения:
    5
    Симпатии:
    0
    Репутация:
    0
    
    #NoEnv
    SendMode Input
    SetWorkingDir %A_ScriptDir%
    #SingleInstance, Force
    #Include, SAMP.ahk
    F4::
    addChatMessageEx("DBA901", "{DBA901}[Текст]: Текст")
    Sleep 1000
    addChatMessageEx("DBA901", "{DBA901}[Текст]: " COL_WHITE "Текст")
    Sleep 1000
    addChatMessageEx("DBA901", "{DBA901}[Текст]: " COL_WHITE "Текст")
    Sleep 1000
    
    1Array := ["1"]
    2Array  := ["2"]
    3Array  := ["3"]
    4Array  := ["Текст"]
    5Array  := ["Текст"]
    6Array  := ["Текст"]
    7Array  := ["Текст"
    8Array  := ["Текст"]
    9Array  := ["Текст"]
    10Array  := ["Текст"]
    11Array  := ["Текст"]
    12Array  := ["Текст"]
    13Array  := ["Текст"]
    
    ~F3::
    
    
    Sleep, 100
    ShowDialog(2, "{A818FF}Текст", "Текст`nТекст`nТекст`nТекст`nТекст`n {FFA812}Текст`n {FFA812}Текст`n {FFA812}Текст`n {01A7A7}Текст`n {01A7A7}Текст`n {01A7A7}Текст`n {008A02}Текст`n {FF0000}Текст", "Закрыть")
    Line := Lineresult()
    
    if (Line != 15 && Line != 14) {
        For k, v in %Line%Array {
            SendChat(v)
            Sleep, 1500
        }
    }
    else {
        SendChat(%Line%Array[R])
    }
    Нужна помощь, интересуют 2 вопроса.
    1) Как сделать так, чтобы при выборе в диалоговом окне "Текст", открывало новое диалоговое окно "Текст1" и там уже были варианты "1,2 ,3" и так далее.
    2) Есть, к примеру, 3 варианта написания текста в чат (Текст1, Текст2, Текст3). Как сделать так, чтобы скрипт выбрал 1 вариант самостоятельно, ну как бы рандом.
    Буду очень признателен, если подскажите, всем печенек :З
     
  32. Rinat_Namazov

    Rinat_Namazov Известный пользователь

    Регистрация:
    09.08.2015
    Сообщения:
    68
    Симпатии:
    9
    Репутация:
    7
    1 вопрос не понял, появляется диалог с выбором отыгровки, но при этом рандом? Чего?
    Насчет второго можно использовать это, а можно написать функцию по типу RandomSendChat("Чебурек 1", "Чебурек 2", "Чебурек 3")
    
    Random, var, 1, 3
    If var = 1
    {
    SendChat("Чебурек номер 1")
    }
    If var = 2
    {
    SendChat("Чебурек номер 2")
    }
    If var = 3
    {
    SendChat("Чебурек номер 3")
    }
    
     
  33. Fartuk)

    Fartuk) Пользователь

    Регистрация:
    11.08.2017
    Сообщения:
    5
    Симпатии:
    0
    Репутация:
    0
    Эти 2 вопроса друг от друга не зависят, просто нужно, чтобы при открытии одного диалогового окна, там можно было открыть новое. Типо "Список чего-то" и при выборе этой кнопки открывалось новое диалоговое окно, в котором будут варианты, которые выводятся в чат.
     
  34. Rinat_Namazov

    Rinat_Namazov Известный пользователь

    Регистрация:
    09.08.2015
    Сообщения:
    68
    Симпатии:
    9
    Репутация:
    7
    Легче всего это реализовать на этом, пример скрипта с субменю есть там же
    *ТыК*
     
  35. Fartuk)

    Fartuk) Пользователь

    Регистрация:
    11.08.2017
    Сообщения:
    5
    Симпатии:
    0
    Репутация:
    0
    Попробовал сделать, по этому способу, вылезла ошибка, как исправить? :с 111.PNG
     
  36. Rinat_Namazov

    Rinat_Namazov Известный пользователь

    Регистрация:
    09.08.2015
    Сообщения:
    68
    Симпатии:
    9
    Репутация:
    7
    Ошибка ссылается на что что используется вызов неизвестной функции.
    Нужно скачать SAMP UDF последней версии для своего клиента: *ТыК*
     
  37. Artur_iOS

    Artur_iOS Известный пользователь

    Регистрация:
    18.03.2017
    Сообщения:
    108
    Симпатии:
    31
    Репутация:
    8
    Удивительно, как ты сам не додумался то? Элементарно все. Учи основы...
    Пример на 5 диалогов которые зависимы от 1-о
    ArraysDialog1 := [["Бинд строки 1", "Диалог 1"],["Бинд строки 2", "Диалог 1"],["Бинд строки 3", "Диалог 1"]]
    ArraysDialog2 := [["Бинд строки 1", "Диалог 2"], ["Бинд строки 2", "Диалог 2"]]
    ArraysDialog3 := [["Бинд строки 1", "Диалог 3"], ["Бинд строки 2", "Диалог 3"]]
    ArraysDialog4 := [["Бинд строки 1", "Диалог 4"], ["Бинд строки 2", "Диалог 4"], ["Бинд строки 3", "Диалог 4"]]
    ArraysDialog5 := [["Бинд строки 1", "Диалог 5"], ["Бинд строки 2", "Диалог 5"], ["Бинд строки 3", "Диалог 5"]]
    
    ~F3::
    Sleep, 100
    ShowDialog(2, "Диалог 1", "Новый диалог`nТекст`nТекст`nТекст", "Ок") ;1 диалог
    line := LineResult()
    if (line = 1) {
        showDialog(2, "Диалог 2", "text1`nНовый диалог`ntext2`nНовый диалог", "Ок") ;2 диалог
        line := LineResult()
        if (line = 1 || line = 3)  {
            for i,e in ArraysDialog2[(line = 3 ? 2:1)] { ;line = 3 ? 2:1 - если line = 3, то вернуть 2, иначе 1
                SendChat(e)
                Sleep, 2000
            }
        }else if (line = 2) {
            showDialog(2, "Диалог 4", "text1`ntext2`ntext3`nНовый диалог", "Ок") ;4 диалог
            line := LineResult()
            if (line < 4) {
                for i,e in ArraysDialog4[line] {
                    SendChat(e)
                    Sleep, 2000
                }
            }else if (line = 4) {
                showDialog(2, "Диалог 5", "text1`ntext2`ntext3", "Ок") ;5 диалог
                line := LineResult()
                for i,e in ArraysDialog5[line] {
                    SendChat(e)
                    Sleep, 2000
                }
            }
        }else if (line = 4) {
            showDialog(2, "Диалог 3", "text`ntext", "Ок") ;3 диалог
            line := LineResult()
            for i,e in ArraysDialog3[line] {
                SendChat(e)
                Sleep, 2000
            }
        }
    }else{
        for i,e in ArraysDialog1[line - 1] { ;line - 1 потому что 1-я строка пропускается
            SendChat(e)
        }
    }
    Return
    
    LineResult() {
        if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
            return false
        while (isDialogOpen())
            continue
        if(GetKeyState("Esc", "P"))
            return false
        return getDialogLineNumber()
    }
    2) Пример на почти неограниченное кол-во строк(биндов)
    !1::
    SendChatRandom([["1-й бинд 1-я строка", "1-й бинд 2-я строка"], ["2-й бинд 1-я строка", "2-й бинд 2-я строка"], ["3-й бинд 1-я строка", "3-й бинд 2-я строка", "3-й бинд 3-я строка"]])
    Return
    SendChatRandom(arraysBind) {
        Random, index, 1, arraysBind.MaxIndex()
        for i,e in arraysBind[index] {
            SendChat(e)
            Sleep, 2000
        }
    }
     
  38. Fartuk)

    Fartuk) Пользователь

    Регистрация:
    11.08.2017
    Сообщения:
    5
    Симпатии:
    0
    Репутация:
    0
    Спасибо вам большое)
     
  39. t_nagga

    t_nagga Новичок

    Регистрация:
    14.01.2018
    Сообщения:
    3
    Симпатии:
    0
    Репутация:
    0
    Ребята,нужна помощь.
    В общем: нужен ахк код,который при вводе допустим команды /qwe автоматически с определенной задержкой писал допустим команду /asd и ближайший ID ко мне через пробел.Как то так :)
    Пример: Я ввожу команду /qwe,у меня прописывается команда /asd [ближайший ID].Через 1 минуту опять,но уже автоматически,пишет эту же команду /asd [ближайший ID(кроме того,который уже был].
    Для сампа.
     
    #439 t_nagga, 14 янв 2018
    Последнее редактирование: 14 янв 2018
  40. AdamRockwell

    AdamRockwell Пользователь

    Регистрация:
    11.01.2018
    Сообщения:
    9
    Симпатии:
    0
    Репутация:
    0
    Как одним скриптом закрыть другой скрипт?

    открывать я умею (run, script.ahk) , а закрыть как?

    Process, Close, scriph.ahk - не помогает.