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

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

  1. Gveman

    Gveman Новичок

    Регистрация:
    12 мар 2018
    Сообщения:
    3
    Симпатии:
    0
    Я вообще не шарю)))) Вот АХК где я окно не удалял,могу весь скрипт кинуть,но он большой оч

    ; - Auto-МО by Dobryak v.1.0 -
    ; Все функции Вы сможете увидеть при вводе комманды "/helpmo"
    ; Удачного использования!

    #Persistent
    #ifwinactive GTA:SA:MP
    #include SAMP.ahk
    
    ;ini
    IniRead, army, info.ini,INFO,army
    IniRead, tag, info.ini,INFO,tag
    IniRead, post1, info.ini,INFO,post1
    IniRead, post2, info.ini,INFO,post2
    IniRead, post3, info.ini,INFO,post3
    IniRead, zvanie, info.ini,INFO,zvanie
    IniRead, gravirovka, info.ini,INFO,gravirovka
    
    msgbox, Auto-MO by Dobryak v.1.1 запущен! Рекомендуется запускать скрипт до запуска GTA, иначе могут не работать некоторые функции. Список функций: "/helpmo". Удачного пользования!
    lastarm:=getPlayerArmor()
    file = %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    Loop
    {
    ; Ники и прочее...
    Nick:= getUsername()
    RPNick:= getUsername()
    StringReplace, RPNick, RPNick,_,{SPACE}, All
    Fama:= getUsername()
    RegExMatch(Fama, "\Q_\E(.*)\Q\E", Fama)
    StringReplace, Fama, Fama,_,, All
    id:= getId()
    ; >> Броня
    arm:=getPlayerArmor()
    hp:= getPlayerHealth()
    if ( hp = 0 ){
    sleep 10000
    } else {
    if ( arm > lastarm )
    И получается включаю и вылазит 5 окон Auto-MO by Dobryak v.1.1 запущен! Рекомендуется запускать скрипт до запуска GTA, иначе могут не работать некоторые функции. Список функций: "/helpmo". Удачного
    нажимаю "ОК" вылазит +25,и потом лаг и около 1000 окон вылетело
     
    #876 Gveman, 12 мар 2018
    Последнее редактирование модератором: 28 мар 2018
  2. Rellax

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

    Регистрация:
    18 апр 2015
    Сообщения:
    58
    Симпатии:
    10
    Ищи reload, goto, gosub, или кидай фулл код скрипта
     
  3. BH:Pchela

    BH:Pchela Участник

    Регистрация:
    17 авг 2015
    Сообщения:
    14
    Симпатии:
    0
    Сделал команду /apost для автоматического доклада с поста. Как сделать так, чтобы при вводе /apostoff доклады останавливались?
    :?:/apost::
    Send, /apost {Space}
    Input, Number, V, {Enter}
    Loop
    {
        SendChat("/r Докладывает: "Name ". Пост: "Number ". Код: Зеленый.")
        Sleep, 600000
    }
    return
     
  4. Vlad Horii

    Команда форума Проверенный

    Регистрация:
    16 июл 2017
    Сообщения:
    311
    Симпатии:
    198
    :?:/apost::
    Send, /apost {Space}
    Input, Number, V, {Enter}
    setTimer,report,on
    report:
    SendChat("/r Докладывает: "Name ". Пост: "Number ". Код: Зеленый.")
    Sleep, 600000
    return
    :?:/apostoff:: setTimer,report,off
    (Да да расскажите мне что можно сделать на много проще, всё равно буду делать так)
     
    #879 Vlad Horii, 12 мар 2018
    Последнее редактирование: 12 мар 2018
    Cesar Ballard нравится это.
  5. Rinat_Namazov

    Rinat_Namazov В отпуске
    Проверенный

    Регистрация:
    9 авг 2015
    Сообщения:
    742
    Симпатии:
    240
    Не проще сразу таймер на 600000 миллисекунд ставить?
     
  6. Rinat_Namazov

    Rinat_Namazov В отпуске
    Проверенный

    Регистрация:
    9 авг 2015
    Сообщения:
    742
    Симпатии:
    240
    Проще.
    А где 2-ой таймер тока?
     
  7. BH:Pchela

    BH:Pchela Участник

    Регистрация:
    17 авг 2015
    Сообщения:
    14
    Симпатии:
    0
    Тут проблема есть: первый доклад 2 раза отправляется без задержки, а потом уже все правильно
     
  8. Misha Kolashnikov

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

    Регистрация:
    12 янв 2018
    Сообщения:
    80
    Симпатии:
    2
    Привет всем, кому не жалко могут сделать автоматическую отыгровку таких оружий как дубинка, и SD-Pistol
    Например: Я взял оружие "SD-Pistol", через секунду написано: /me достал электрошокер из кобуры.
    И когда я убираю оружие "SD-Pistol" писало: /me убрал электрошокер в кобуру
    И также с дубинкой.
     
  9. Misha Kolashnikov

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

    Регистрация:
    12 янв 2018
    Сообщения:
    80
    Симпатии:
    2
    Я нашел какой-то скрипт с отыгровкой оружием, что не так, если можете отпишите исправленный код, а то не знаю из-за чего не работает.

    ListLines Off
    SetBatchLines -1
    SetKeyDelay 0
    Chat := A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
    #Persistent
    global TazerTo:= -1
    global TazerIn := 0
    global TazerOut:=0
    Loop
    {
    TempWeapon := getPlayerWeaponId()
    if (TempWeapon = 23) or(TempWeapon = 3)
        if not TazerIn
        {
            TazerIn := 1
            if TazerSleep
                SetTimer TakeGun, 100
            else
            SetTimer TakeGun, %SleepOn%
        }
        if (TempWeapon = 24) or (TempWeapon = 25) or (TempWeapon = 29) or (TempWeapon = 31) or (TempWeapon = 17) or (TempWeapon = 1) or (TempWeapon = 5) or (TempWeapon = 14) or (TempWeapon = 30) or (TempWeapon = 33) or (TempWeapon = 34) or (TempWeapon = 43) or (TempWeapon = 46) or (TempWeapon = 15) or (TempWeapon = 36) or (TempWeapon = 2)  {
            if not TazerIn
            {
                TazerIn := 1
                SetTimer TakeGun, %SleepOn%
            }
        }
        if (TempWeapon = 0)
        {
            if (TazerOut > 1) and (TazerTo)
            {
                TazerTo := 0
                SetTimer UnloadGun, %SleepOff%
            }
        }
        Sleep 100
    }
    TakeGun:
    TempWeapon := getPlayerWeaponId()
    if (TempWeapon = 24) and (TazerOut != 2) {
         SendChat("/do Пистолет в кобуре.")
         SendChat("/me быстрым движением правой руки открыл" Female " кобуру и вытащил" Female " пистолет.")
         SendChat("/me снял" Female " пистолет с предохранителя.")
        TazerOut:=2
    }
    if (TempWeapon = 3) and (TazerOut != 3) {
            SendChat("/do Дубинка висит на поясе.")
        SendChat("/me резким движение снял" Female " дубинку с поясного держателя.")
        TazerOut:=3
    }
    if (TempWeapon = 23) and (TazerOut != 4) {
        SendChat("/me снял" Female " электрошокер с пояса")
        TazerOut:=4
    }
    if (TempWeapon = 25) and (TazerOut != 5) {
        SendChat("/me вытащил " Female " дробовик из-за спины")
            SendChat("/me снял" Female " дробовик с предохранителя")
        TazerOut:=5
    }
    if (TempWeapon = 29) and (TazerOut != 6) {
        SendChat("/me взял" Female " MP-5 в руки.")
        TazerOut:=6
    }
    if (TempWeapon = 31) and (TazerOut != 7) {
        SendChat("/me достал" Female " карабин M4 из-за плеча")
            SendChat("/me снял" Female " M4 с предохранителя")
        TazerOut:=7
    }
    if (TempWeapon = 17) and (TazerOut != 8) {
        SendChat("/me надел" Female " противогаз.")
        Sleep 2000
        SendChat("/me достал" Female " светошумовую гранату.")
        TazerOut:=8
    }
    if (TempWeapon = 1) and (TazerOut != 9) {
        SendChat("/me надел" Female " кастет на руку.")
        TazerOut:=9
    }
    if (TempWeapon = 5) and (TazerOut != 10) {
        SendChat("/me взял" Female " бейсбольную биту в руки.")
        TazerOut:=10
    }
    if (TempWeapon = 14) and (TazerOut != 11) {
        SendChat("/me развернул" Female " букет цветов.")
        TazerOut:=11
    }
    if (TempWeapon = 30) and (TazerOut != 12) {
        SendChat("/me взял" Female " автомат АК-47 в руки.")
        TazerOut:=12
    }
    if (TempWeapon = 33) and (TazerOut != 13) {
        SendChat("/me взял" Female " винтовку в руки.")
        TazerOut:=13
    }
    if (TempWeapon = 34) and (TazerOut != 14) {
        SendChat("/me достал" Female " снайперскую винтовку из-за плеча")
            SendChat("/me снял" Female " снайперскую винтовку с предохранителя")
        TazerOut:=14
    }
    if (TempWeapon = 43) and (TazerOut != 15) {
        SendChat("/me достал" Female " фотоаппарат.")
        TazerOut:=15
    }
    if (TempWeapon = 46) and (TazerOut != 16) {
        SendChat("/me одел" Female " парашют на плечи.")
        TazerOut:=16
    }
    if (TempWeapon = 15) and (TazerOut != 17) {
        SendChat("/me достал" Female " элегантную трость.")
        TazerOut:=17
    }
    if (TempWeapon = 36) and (TazerOut != 18) {
        SendChat("/me взял" Female " Stinger в руки.")
        TazerOut:=18
    }
    if (TempWeapon = 2) and (TazerOut != 19) {
        SendChat("/me взял" Female " клюшку в руки.")
        TazerOut:=19
    }
    TazerIn := 0
    TazerTo := 1
    SetTimer TakeGun, Off
    return
    
    UnloadGun:
    TempWeapon := getPlayerWeaponId()
    if not (TempWeapon = 24) and (TazerOut = 2)
    {
                SendChat("/me поставил" Female " пистолет на предохранитель.")
                SendChat("/me быстрым движением руки засунул" Female " пистолет в кобуру и застегнул" Female " ее.")
    }
    if not (TempWeapon = 3) and (TazerOut = 3)
    {
                SendChat("/me повесил" Female " дубинку на пояс.")
                SendChat("/do Дубинка на поясе.")
    }
    if not (TempWeapon = 23) and (TazerOut = 4)
    {
    SendChat("/me повесил" Female " электрошокер на пояс.")
    }
    if not (TempWeapon = 3) and (TazerOut = 5)
    {
                SendChat("/me поставил" Female " дробовик на предохранитель")
                SendChat("/me повесил" Female " дробовик на плечо")
    }
    if not (TempWeapon = 3) and (TazerOut = 6)
    {
    SendChat("/me повесил" Female " MP-5 на плечо.")
    }
    if not (TempWeapon = 31) and (TazerOut = 7)
    {
                SendChat("/me поставил" Female " М4 на предохранитель")
                SendChat("/me повесил" Female " M4 на плечо")
    }
    if not (TempWeapon = 1) and (TazerOut = 9)
    {
    SendChat("/me снял" Female " кастет.")
    }
    if not (TempWeapon = 5) and (TazerOut = 10)
    {
    SendChat("/me спрятал" Female " биту.")
    }
    if not (TempWeapon = 14) and (TazerOut = 11)
    {
    SendChat("/do Цветы не в руках.")
    }
    if not (TempWeapon = 30) and (TazerOut = 12)
    {
    SendChat("/me убрал" Female " АК-47 за спину.")
    }
    if not (TempWeapon = 33) and (TazerOut = 13)
    {
    SendChat("/me убрал" Female " винтовку.")
    }
    if not (TempWeapon = 34) and (TazerOut = 14)
    {
                SendChat("/me поставил" Female " снайперскую винтовку на предохранитель")
                SendChat("/me повесил" Female " снайперскую винтовку на плечо")
    }
    if not (TempWeapon = 43) and (TazerOut = 15)
    {
    SendChat("/me закрыл" Female " крышечкой объектив фотоаппарата.")
    }
    if not (TempWeapon = 46) and (TazerOut = 16)
    {
    SendChat("/me снял" Female " парашют.")
    }
    TazerOut:=0
    SetTimer UnloadGun, Off
    return
     
  10. Rinat_Namazov

    Rinat_Namazov В отпуске
    Проверенный

    Регистрация:
    9 авг 2015
    Сообщения:
    742
    Симпатии:
    240
    Че велосипед придумываете?
    Скачай "Gun List" и все, не парься.
     
  11. Gveman

    Gveman Новичок

    Регистрация:
    12 мар 2018
    Сообщения:
    3
    Симпатии:
    0
    Вот фулл,удалите пожалуйста окно которое вылетает 1000 раз,и комп лагает,alt ctrl delete не спасает даже

    ; - Auto-МО by Dobryak v.1.0 -
    ; Все функции Вы сможете увидеть при вводе комманды "/helpmo" 
    ; Удачного использования!
    
    #Persistent
    #ifwinactive GTA:SA:MP
    #include SAMP.ahk
    
    ;ini
    IniRead, army, info.ini,INFO,army
    IniRead, tag, info.ini,INFO,tag
    IniRead, post1, info.ini,INFO,post1
    IniRead, post2, info.ini,INFO,post2
    IniRead, post3, info.ini,INFO,post3
    IniRead, zvanie, info.ini,INFO,zvanie
    IniRead, gravirovka, info.ini,INFO,gravirovka
    
    msgbox, Auto-MO by Dobryak v.1.1 запущен! Рекомендуется запускать скрипт до запуска GTA, иначе могут не работать некоторые функции. Список функций: "/helpmo". Удачного пользования!
    lastarm:=getPlayerArmor()
    file = %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    Loop
    {
    ; Ники и прочее...
    Nick:= getUsername()
    RPNick:= getUsername()
    StringReplace, RPNick, RPNick,_,{SPACE}, All
    Fama:= getUsername()
    RegExMatch(Fama, "\Q_\E(.*)\Q\E", Fama)
    StringReplace, Fama, Fama,_,, All
    id:= getId()
    ; >> Броня
    arm:=getPlayerArmor()
    hp:= getPlayerHealth()
    if ( hp = 0 ){
    sleep 10000
    } else {
    if ( arm > lastarm )
    {
    Sendinput,{F6}/do Бронежилет в шкафчике.{ENTER}
    Sendinput,{F6}/me плавным движением открыл шкафчик{ENTER}
    Sendinput,{F6}/me плавным движением правой руки взял бронежилет и надел его{ENTER}
    }
    }
    lastarm:=getPlayerArmor()
    ; >> Доклады
    if ( dokl = 1 )
    {
    fileread, read, %file%
    if read contains Докладыва
    {
    filedelete, %file%
    fileappend,, %file%
    SendChat("/r Доклад(ы) приняты! Продолжайте в том же духе!")
    SendChat("/c 60")
    Sleep, 1000
    SendInput, {F8}
    }
    }
    ; >> Еда
    fileread, read, %file%
    if read contains %Nick% взял(а)
    {
    filedelete, %file%
    fileappend,, %file%
    Sendinput,{F6}/eat{ENTER}
    }
    ; >> Металл
    fileread, read, %file%
    if read contains %Nick%[%id%] взял(а) на военном складе
    {
    filedelete, %file%
    fileappend,, %file%
    Sendinput,{F6}/do На спине у %Nick% рюкзак.{ENTER}
    Sendinput,{F6}/me положил металлическую заготовку в рюкзак{ENTER}
    }
    ; Проверка имени
    if !RPNick
    {
    reload
    }
    ; Авто-взятие патронов по рп
    GetPlayerPos(x,y,z)
    if ( x > 311.137756 and x < 312.142700 and y > -166.141953 and y < -165.718048 and autovz = 0)
    {
    Sendinput,{F6}/do На спине у %Nick% рюкзак.{ENTER}
    Sendinput,{F6}/me набирает в рюкзак патроны{ENTER}
    autovz = 1
    } else {
    autovz = 0
    }
    }
    !1::
    if dokl = 1
    {
    dokl = 0
    addChatMessageEx(0x4000FF, "[Auto-MO] {FFFFFF}Авто-ответ на доклады [{FF0000}Выключён{FFFFFF}]")
    }
    else
    {
    dokl = 1
    addChatMessageEx(0x4000FF, "[Auto-MO] {FFFFFF}Авто-ответ на доклады [{FF0000}Включён{FFFFFF}]")
    }
    return
    Numpad1::
    if ( anim = 1 )
    {
        Sendchat("/s Здравия желаю!")
        Sendchat("/me встал по стойке «Смирно»")
        Sendchat("/me выполнил «Воинское приветствие»")
        Sendchat("/anim 58")
    } else {
        Sendchat("/anim")
        sleep 1500
        Sendchat("/s Здравия желаю!")
        Sendchat("/me встал по стойке «Смирно»")
        Sendchat("/me выполнил «Воинское приветствие»")
        Sendchat("/anim 58")
        anim = 1
    }
    return
    
    Numpad7::
    Sendinput,{F6}/do Напротив %Nick% пульт управления КПП.{ENTER}
    Sendinput,{F6}/me ввёл секретный PIN-Code, тем самым открыв/закрыв КПП{ENTER}
    Sendinput,{F6}/gate{ENTER}
    return
    
    Numpad0::
    Sendinput, {F6}/me взглянул на золотые часы с гравировкой "%gravirovka%"{ENTER}
    Sendinput, {F6}/do Время на часах: %A_Hour%:%A_Min%.{ENTER}
    SendChat("/c 60")
    return
    
    Numpad9::
    Sendinput,{F6}/lock 1{ENTER}
    return
    
    Numpad5::
    Sendinput,{F6}/r [%tag%]:{SPACE}
    return
    
    Numpad6::
    Sendinput,{F6}/f %army% |{SPACE}
    return
    
    NumpadDiv::
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: %post1% | Состояние: тихо{ENTER}
    return
    
    NumpadMult::
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: %post2% | Состояние: тихо{ENTER}
    return
    
    NumpadSub::
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: %post3% | Состояние: тихо{ENTER}
    return
    
    NumpadAdd::
    filedelete, %file%
    fileappend,, %file%
    GetPlayerPos(x,y,z)
    if ( x > -1546.098999 and x < -1515.402710 and y > 470.475830 and y < 508.089172 )
    {
    Sendinput,{F6}/f %army% | Докладывает %zvanie% %Fama% | Пост: КПП(А) | Состояние: тихо{ENTER}
    }
    ; Посты СВ
    if ( x > 341.082642 and x < 348.967468 and y > 1786.131592 and y < 1809.139404 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: КПП-1 | Состояние: тихо{ENTER}
    }
    if ( x > 313.566711 and x < 325.066895 and y > 1932.063965 and y < 1970.541748 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: Склад | Состояние: тихо{ENTER}
    }
    if ( x > 259.746521 and x < 274.151611 and y > 1886.650269 and y < 1901.946045 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: Вышка | Состояние: тихо{ENTER}
    }
    if ( x > 341.072357 and x < 372.049774 and y > 2012.942139 and y < 2045.680420 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: ПВО | Состояние: тихо{ENTER}
    }
    if ( x > 306.399109 and x < 319.117126 and y > -169.907547 and y < -158.757004 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: Склад(внутри) | Состояние: тихо{ENTER}
    }
    ; Посты ВМФ
    if ( x > -2256.786621 and x < -2238.514893 and y > 2379.674316 and y < 2385.826904 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: Cклад | Состояние: тихо{ENTER}
    }
    if ( x > 217.408768 and x < 233.806213 and y > 1286.233276 and y < 1293.712280 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: Cклад(Внутри) | Состояние: тихо{ENTER}
    }
    if ( x > -2275.697266 and x < -2272.282227 and y > 2336.769043 and y < 2365.652588 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: КПП-1 | Состояние: тихо{ENTER}
    }
    if ( x > -2300.578857 and x < -2296.042969 and y > 2409.341309 and y < 2440.114502 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: КПП-2 | Состояние: тихо{ENTER}
    }
    if ( x > -2244.083496 and x < -2228.643066 and y > 2335.114746 and y < 2353.569580 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: Вышка | Состояние: тихо{ENTER}
    }
    if ( x > -2302.006348 and x < -2277.656006 and y > 2278.156250 and y < 2294.405762 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: Склад торпед | Состояние: тихо{ENTER}
    }
    ; ВВС
    if ( x > 424.585052 and x < 441.646301 and y > 2553.743408 and y < 2580.151367 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: КПП-1 | Состояние: тихо{ENTER}
    }
    if ( x > 413.421143 and x < 421.407745 and y > 2534.960205 and y < 2542.731201 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: Склад(внутри) | Состояние: тихо{ENTER}
    }
    if ( x > 422.246429 and x < 429.501465 and y > 2531.350586 and y < 2542.289063 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: Склад | Состояние: тихо{ENTER}
    }
    if ( x > 280.125031 and x < 296.717407 and y > 2548.930420 and y < 2569.548584 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: КПП-2 | Состояние: тихо{ENTER}
    }
    if ( x > 382.856995 and x < 392.867950 and y > 2549.834717 and y < 2559.676758 )
    {
    Sendinput,{F6}/r [%tag%]: Докладывает %zvanie% %Fama% | Пост: Вышка | Состояние: тихо{ENTER}
    }
    sleep 300
    if read contains %Nick%
    {
    
    } else {
    filedelete, %file%
    fileappend,, %file%
    addChatMessageEx(0x4000FF, "[Auto-MO] {FFFFFF}Вы стоите не на посту. Список постов - {4000FF}/moposts{FFFFFF}.")
    }
    return
    
    :?:/helpmo::
    KeyWait, Enter
    sleep 100
    ShowDialog("0", "{FFFFFF} - Auto-МО by {4000FF}Dobryak{FFFFFF} v.1.0 - ","{FFFFFF} Cписок функций: `n{FFFFFF} {4000FF}•{FFFFFF} Автоматическая отыгровка взятия бронежилета`n{FFFFFF} {4000FF}•{FFFFFF} Автоматическая отыгровка взятия металла`n{FFFFFF} {4000FF}•{FFFFFF} Автоматический ответ на доклад {E6E6E6}(для офицеров){FFFFFF} | Активация: {4000FF}Alt+1{FFFFFF}`n{FFFFFF} {4000FF}•{FFFFFF} Воинское приветствие | Активация: {4000FF}NumPad 1{FFFFFF}`n{FFFFFF} {4000FF}•{FFFFFF} Открытие КПП {E6E6E6}(/gate){FFFFFF} | Активация: {4000FF}NumPad 7{FFFFFF}`n{FFFFFF} {4000FF}•{FFFFFF} Часы {E6E6E6}(С временем в /do){FFFFFF} | Активация: {4000FF}NumPad 0{FFFFFF}`n{FFFFFF} {4000FF}•{FFFFFF} Открытие личного т/c {E6E6E6}(Без РП){FFFFFF} | Активация: {4000FF}NumPad 9{FFFFFF}`n{FFFFFF} {4000FF}•{FFFFFF} Ввод в рацию с тэгом {E6E6E6}(/r){FFFFFF} | Активация: {4000FF}NumPad 5{FFFFFF}`n{FFFFFF} {4000FF}•{FFFFFF} Ввод в рацию с тэгом армии {E6E6E6}(/f){FFFFFF} | Активация: {4000FF}NumPad 6{FFFFFF}`n{FFFFFF} {4000FF}•{FFFFFF} Доклад со своих постов {E6E6E6}(Надо настроить посты){FFFFFF} | Активация: {4000FF}NumPad /, NumPad *, NumPad -{FFFFFF}`n{FFFFFF} {4000FF}•{FFFFFF} Автоматических доклад с поста {E6E6E6}(Список постов - /moposts){FFFFFF} | Активация: {4000FF} NumPad +{FFFFFF}`n{FFFFFF} {4000FF}•{FFFFFF} Автоматическая запись армии и звания {E6E6E6}(В INI файл){FFFFFF} | Активация: {4000FF}/updatemo{FFFFFF}`n{FFFFFF} {4000FF}•{FFFFFF} Показ военного билета {E6E6E6}(Через /me,/do){FFFFFF} | Активация: {4000FF}/bilet{FFFFFF}`n`n{4000FF}[i]{FFFFFF} Перед использование настройте скрипт {E6E6E6}(В файле info.ini){FFFFFF}`n{4000FF}[i]{FFFFFF} Связь в разработчиком: VK - {E6E6E6}http://vk.com/kesik.dobryak{FFFFFF}`n{4000FF}[i]{FFFFFF} Версия скрипта: 1.0 {E6E6E6}(build 1){FFFFFF}", "Закрыть")
    return
    
    :?:/moposts::
    KeyWait, Enter
    sleep 100
    ShowDialog("0", "{FFFFFF}- Список постов - ", "{FFFFFF} Cписок постов, стоя на кототорых, нажимая кнопку NumPad + автоматически пишет пост:`n`n{FFFFFF} {4000FF}>{FFFFFF} Авианосец {E6E6E6}(Доклад в /f){FFFFFF}`n{FFFFFF} {4000FF}>{FFFFFF} Сухопутные войска:`n{FFFFFF} {4000FF}>{FFFFFF} КПП-1, Склад, Склад(внутри), Вышка, ПВО`n{FFFFFF} {4000FF}>{FFFFFF} Военно-морской флот:`n{FFFFFF} {4000FF}>{FFFFFF} КПП-1, КПП-2, Вышка, Склад торпед, Склад, Склад(внутри)`n{FFFFFF} {4000FF}>{FFFFFF} Военно-воздушные силы:`n{FFFFFF} {4000FF}>{FFFFFF} КПП-1, КПП-2, Вышка, Склад, Склад(внутри)`n{4000FF}[!]{FFFFFF} Если Вы считаете, что тут не хватает какого-либо поста напишите мне в ВК {E6E6E6}(vk.com/kesik.dobryak){FFFFFF}", "Закрыть")
    return
    
    :?:/bilet::
    KeyWait, Enter
    Sendinput,{F6}/me достал из внутреннего кармана формы военное билет{ENTER}
    Sendinput,{F6}/me показал билет. На нём написано...{ENTER}
    Sendinput,{F6}/do "%zvanie% %Fama% | Армия: %army% | Отряд: %tag%"{ENTER}
    Sendinput,{F6}/me cпрятал билет обратно{ENTER}
    return
    
    :?:/updatemo::
    KeyWait, Enter
    Sendinput,{F6}/pass %id%{ENTER}
    Sleep, 1000
    fileread, read, %file%
    RegExMatch(read, "\QРабота: \E(.*)\Q  |  Организация и подразделение: \E", zvanie)
    RegExMatch(read, "\Q  |  Организация и подразделение: Министерство обороны / \E(.*)\Q`n\E", army)
    if ( army = Военно-морской флот )
    {
    army = ВМФ
    }
    if ( army = Военно-воздушные силы )
    {
    army = ВВС
    }
    if ( army = Сухопутные войска )
    {
    army = СВ
    }
    StringReplace, zvanie, zvanie,Работа:%A_SPACE%,, All
    StringReplace, zvanie, zvanie,%A_SPACE%%A_SPACE%|  Организация и подразделение: ,, All
    ;StringReplace, zvanie, zvanie,%A_SPACE%,, All
    IniWrite,%zvanie%,info.ini,INFO,zvanie
    IniWrite,%army%,info.ini,INFO,army
    filedelete, %file%
    fileappend,, %file%
    addChatMessageEx(0x4000FF, "[Auto-MO]{FFFFFF} Информация о фракции успешно обновлена!")
    return
    
    !2::
    SendInput, {F6}/n %Nick%[%id%] взял(а) на военном складе{ENTER}
    return
    
    Так же в папке есть файл "Info" Туда я написал ник,армию.
    И еще 1 файл АХК там,не знаю зачем -_-

    ; ####################
    ; #### SAMP UDF R15.1 ####
    ; SAMP Version: 0.3.7
    ; Written by Chuck_Floyd
    ; https://github.com/FrozenBrain
    ; Modified by Suchty112
    ; https://github.com/Suchty112
    ; Modified by: paul-phoenix
    ; https://github.com/paul-phoenix
    ; Modified by: Agrippa1994
    ; https://github.com/agrippa1994
    ; Modified by: RawDev and ELon
    ; Do not remove these lines.
    ; Добавлен SA-MP-UDF-Addon by [CM}MurKotik
    ; VK: http://vk.com/id350689538
    ; ####################
    
    ; SAMP-RP CHat Colors
    global COLOR_DEPARTAMENT := "0xFFFF8282"
    global COLOR_TIME := "0xA1C114FF"
    global COLOR_WANTED := "0xFFffc801"
    global COLOR_WANTEDME := "0xFFff6347"
    global COLOR_NEWS := "0xFF00d900"
    global COLOR_SMS := "0xFFffff00"
    global COLOR_ME := "0xFFc2a2da"
    global COLOR_ADMIN := "0xFFff6347"
    global COLOR_MDC_HEADER := "0xFF8d8dff"
    global COLOR_MDC_CONTENT := "0xFFFFFFFF"
    global COLOR_CHAT1 := "0xFFc8c8c8"
    global COLOR_CHAT2 := "0xFFaaaaaa"
    global COLOR_CHAT3 := "0xFF6e6e6e"
    global COLOR_WHISPER := "0xFF6e6e6e"
    global COLOR_GOV_HEADER := "0xFFFFFFFF"
    global COLOR_GOV_CONTENT := "0xFF2641fe"
    global COLOR_RACION := "0xFF8d8dff"
    global COLOR_AMMO_TAKE := "0xFF09b000"
    global COLOR_TRY := "0xFFff8000"
    global COLOR_TRY_COMPLETE := "0xFF00ab06"
    global COLOR_TRY_FAILURE := "0xFFc42100"
    global COLOR_ANTIFLOOD := "0xFFffd5bb"
    global COLOR_PASS_HEADER := "0xFFffff00"
    global COLOR_PASS_CONTENT := "0xFFf5deb3"
    global COLOR_LIC_HEADER := "0xFF059bd3"
    global COLOR_LIC_CONTENT := "0xFFc5eefe"
    
    ; Samp-udf-addon
    global ADDR_SET_POSITION := 0xB7CD98
    global ADDR_SET_POSITION_OFFSET := 0x14
    global ADDR_SET_POSITION_X_OFFSET := 0x30
    global ADDR_SET_POSITION_Y_OFFSET := 0x34
    global ADDR_SET_POSITION_Z_OFFSET := 0x38
     
    #886 Gveman, 13 мар 2018
    Последнее редактирование: 13 мар 2018
  12. Patrickkk

    Patrickkk Знающий

    Регистрация:
    2 апр 2016
    Сообщения:
    209
    Симпатии:
    10
    Нужно будет сделать нажатие по определённым координатам, но если так подумать, если у человека другое разрешение экрана - у него на другие координаты будет нажимать, как это решить?
     
  13. Usik.dm

    Usik.dm Активный участник

    Регистрация:
    14 фев 2018
    Сообщения:
    29
    Симпатии:
    0
    Есть данный код:
    #Include E:\SAMP-UDF-Developer.ahk
    $~NumpadEnter::
    $~Enter::
    If (isInChat() && !isDialogOpen())
    {
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatInput, "^\/dok (.*)", p)
        {
    Sendchat("Бла-бла-бла , Жетон: " p1 "")
        }
    }
    return
    Но что бы было по РП нужно в чат вводить /dok 3-3-3(айди пишется через дефисы). Как реализовать так , чтобы при введении /dok 333(любой айди) , в чат писалось: Бла-бла-бла , Жетон:3-3-3(по цифре через дефис)
     
  14. Rinat_Namazov

    Rinat_Namazov В отпуске
    Проверенный

    Регистрация:
    9 авг 2015
    Сообщения:
    742
    Симпатии:
    240
    Че сложного?
    Тем же RegExMatch выделяешь каждый символ.
    Или Loop, Parse
    Или StrSplit
    Документацию читай.
     
  15. Usik.dm

    Usik.dm Активный участник

    Регистрация:
    14 фев 2018
    Сообщения:
    29
    Симпатии:
    0
    А можно кодом? Сложно для меня будет..
     
  16. Rufles

    Rufles Участник

    Регистрация:
    7 июл 2017
    Сообщения:
    9
    Симпатии:
    0
    Ребят,привет. Захотел по изучать AHK скриптинг,и поделать свои скрипты для себя. Сейчас делаю АХК для автошколы, и мне нужно, чтобы в АХК мой id сам писался,и мне не нужно было его прописывать в ручную. К примеру: Захожу я в игру,и у меня id 228, еду в автошколу принимать экзамен,и пишу бомжу свою отыгровку,и в /n чат прошу его показать паспорт, типо /n /pass 228, и как сделать так,чтобы ахк сам определял мой id и писал его? Подскажите пожалуйста
     
  17. Rinat_Namazov

    Rinat_Namazov В отпуске
    Проверенный

    Регистрация:
    9 авг 2015
    Сообщения:
    742
    Симпатии:
    240
    Скачать SAMP UDF, там на русском языке описаны функции.
    В данном случае нужна функция:
    getId()
     
  18. Rufles

    Rufles Участник

    Регистрация:
    7 июл 2017
    Сообщения:
    9
    Симпатии:
    0
    Спасибо

    Снова я. Как писал выше,нужно чтобы АХК сам определял id, выше мне подсказали что нужно делать,но я не совсем понимаю куда нужно вставлять..
    Вот это получается у меня

    И я не понимаю куда нужно вставить это
     
    #893 Rufles, 14 мар 2018
    Последнее редактирование модератором: 28 мар 2018
  19. Rellax

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

    Регистрация:
    18 апр 2015
    Сообщения:
    58
    Симпатии:
    10
    Строчки от 77 до 80 удали, (вот причина)
    if !RPNick
    {
    reload
    }
    Вставить "это" в самое начало скрипта и заменить своё "/начало" на это:
    
    :?:/начало::
    {
    SendMessage, 0x50,, 0x4190419,, A
    Sleep 2000
    SendInput {F6}Здравствуйте,я Ваш инструктор Джеремес Ховкинс,я буду принимать у Вас экзамен.{enter}
    Sleep 2000
    SendInput {F6}Перед началом экзамена предъявите Ваш паспорт.{enter}
    Sleep 2000
    SendInput {F6}/n Введи команду /pass %getId()%{enter}
    }
    return
     
    #894 Rellax, 15 мар 2018
    Последнее редактирование модератором: 28 мар 2018
  20. Rental

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

    Регистрация:
    26 янв 2018
    Сообщения:
    60
    Симпатии:
    1
    При запуске игры часто не работает AHK. Тоесть иногда запускаешь скрипт, заходишь в игру, а он не работает. Перезайдешь в игру и все включается. И так раза два в день бывает, есть догадки почему? В скрипте простые команды, типа нажата кнопка - действия. Samp addon'a нет. Версии udf и samp совпадают. Раньше такого не было. В игре заменены аудио файлы, карта и уст. несколько(где-то 10) скриптов. Перезагрузка скрипта(Reload) не помогает.
     
  21. Rufles

    Rufles Участник

    Регистрация:
    7 июл 2017
    Сообщения:
    9
    Симпатии:
    0
    Извини что может отвлекаю,сделал как ты написал,и вот такое вылазит - картинка
     
  22. Cesar Ballard

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

    Регистрация:
    9 окт 2016
    Сообщения:
    42
    Симпатии:
    1
    B общем, мб кто-то подскажет как реализовать правильно такой прикол.
    Суть скрипта: он будет анализировать состояние ХП игрока (ну т.е. моего персонажа) и когда оно будет близко к 0, или даже 0, но желательно >0 то что бы скрипт юзал опр. набор команд.
    Я понял что надо работать с параметром getPlayerHealth, но ля, как лучше это реализовать.
     
    #897 Cesar Ballard, 15 мар 2018
    Последнее редактирование: 15 мар 2018
  23. Vlad Horii

    Команда форума Проверенный

    Регистрация:
    16 июл 2017
    Сообщения:
    311
    Симпатии:
    198
    myHP := getPlayerHealth()
    if (0 >= myHP)
         msgBox, ты умер
     
    Cesar Ballard нравится это.
  24. Rufles

    Rufles Участник

    Регистрация:
    7 июл 2017
    Сообщения:
    9
    Симпатии:
    0
  25. Rufles

    Rufles Участник

    Регистрация:
    7 июл 2017
    Сообщения:
    9
    Симпатии:
    0
    так ты выше процитировал, там было написано это :
    и в samp udf я видел эту штуку,как понял она нужна для определения id,или я ошибаюсь? Я в этом всём полный дуб,только вчера начал изучать АХК по видео
     
  26. Cesar Ballard

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

    Регистрация:
    9 окт 2016
    Сообщения:
    42
    Симпатии:
    1
    Спасибо конечно, но оно не анализирует.Пашет только если нажать когда уже сдох
     
  27. Rinat_Namazov

    Rinat_Namazov В отпуске
    Проверенный

    Регистрация:
    9 авг 2015
    Сообщения:
    742
    Симпатии:
    240
    Потому что UDF не подключен - ошибки.
    Зачем учишь сразу с UDF, AHK не был создан только для GTA, следовательно нужно выучить его без гта, а поле подключать UDF.

    Не много ли хочешь?
    Самому нужно писать алгоритм определения хп в таймере/потоке/цикле и вести график.

    Если ты даже в коде не прочел, что он выводить сообщение только при хп = 0, вряд ли сделаешь это.
    Если тебе не нужен анализатор, частоты уменьшения хп, то тупо делаешь в if меньше 30 и равно или больше 0.
     
    Vlad Horii нравится это.
  28. Cesar Ballard

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

    Регистрация:
    9 окт 2016
    Сообщения:
    42
    Симпатии:
    1

    Loop
    {
        hp:=getPlayerHealth()
        GetChatLine(0, string)
      
        if hp < 5
        {
      if hp > 0
      {
       if key = 1
       {
        SendChat("/hide m4")
        sleep, 120
        SendChat("/hide deagle")
        key:=0
       }
      }
        }
    }
    
    NumpadAdd::
    if key = 0
    {
        key:=1
        ;ShowGameText("ON", 100, 3)
        SoundBeep
    }
    
    else if key = 1
    {
        key:=0
        ;ShowGameText("OFF", 100, 3)
    }
    
    return
    Вроде бы ж в цикле должно пахать, но нихера
     
  29. Vlad Horii

    Команда форума Проверенный

    Регистрация:
    16 июл 2017
    Сообщения:
    311
    Симпатии:
    198
    присвоить :=
    Сравнить ==
    if key == 1
     
    Cesar Ballard нравится это.
  30. Rinat_Namazov

    Rinat_Namazov В отпуске
    Проверенный

    Регистрация:
    9 авг 2015
    Сообщения:
    742
    Симпатии:
    240
    Это как минимум в 2 раза уменьшить можно.
    Зачем делать 2 условия, если можно условие хп в одном if'e проверять.

    Да и Loop не лучший вариант, бессмысленная нагрузка будет из-за key = 0
    SetTimer будет лучше.
     
  31. Vlad Horii

    Команда форума Проверенный

    Регистрация:
    16 июл 2017
    Сообщения:
    311
    Симпатии:
    198
    Очень давно просили написать подобную фигню, бери код, переделывай под себя.
    F11::
    addChatMessageEx(0xFFFFFF, "Скрипт успешно активирован!!")
    addChatMessageEx(0xFFFFFF, "Автор скрипта: Vlad Horii")
    SetTimer, Act, on
    return
    Act:
    hp := GetPlayerHealth()
    if (hp < 1)
    {
        sendChat("/hide deagle")
        Sleep 100
        sendChat("/hide m4")
        SetTimer, Act, Off
        Sleep 5000
       SetTimer, Act, on
    }
    return
     
    Cesar Ballard нравится это.
  32. Cesar Ballard

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

    Регистрация:
    9 окт 2016
    Сообщения:
    42
    Симпатии:
    1
    Cпасибо за помощь, но сервек как-то непонятно устроен с системой этой. Не успевает даже этот скрипт прятать пушки в самый момент смерти. Уже когда умер лежишь на земле дохлый оно активируется, и то не всегда. Я бы уже забил болт, но есть на другом языке написана данная фича для сервака, но от его почему-то у меня фризы в игре и - фпс и + пинг~400
     
  33. Rinat_Namazov

    Rinat_Namazov В отпуске
    Проверенный

    Регистрация:
    9 авг 2015
    Сообщения:
    742
    Симпатии:
    240
    
    TestCheck == false
    SetTimer, Check, 50
    return
    Check:
    HP := GetPlayerHealth()
    if (HP < 5 || TestCheck == false)
    {
        SendChat("/hide deagle")
        Sleep 100
        SendChat("/hide m4")
        OldHP := HP
        TestCheck := true
    } else if (TestCheck == true || HP > OldHP)
        TestCheck := false
    return
    
    Ну например дигл вроде с 3-ех выстрелов убивает, и естественно хп не успеет стать меньше 5.
    Поэтому как раз нужно вычислять частоту уменьшения хп.
     
    #908 Rinat_Namazov, 15 мар 2018
    Последнее редактирование: 15 мар 2018
  34. Cesar Ballard

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

    Регистрация:
    9 окт 2016
    Сообщения:
    42
    Симпатии:
    1
    Флудит командой при активации, и в итоге отлёт античитом
     
  35. Usik.dm

    Usik.dm Активный участник

    Регистрация:
    14 фев 2018
    Сообщения:
    29
    Симпатии:
    0
    Мда..Ты ещё даже не подключил SAMP-UDF(на этом сайте есть). И если уже подключать ЮДФ , то можно забыть про SendInput
    #Include C:\SAMP-UDF-Developer.ahk ; Путь к файлу Самп юдф
    
    myid := getId() ; Функция
    
    $~NumpadEnter:: ; Активация считывания чатлога при нажатии NumpadEnter.
    $~Enter:: ; Активация считывания чатлога при нажатии Enter.
    If (isInChat() && !isDialogOpen()) ; Проверка на то что открыт чат, но при этом закрыт диалог.
    { ; Если условие соблюдено.
    Sleep 250 ; Задержка в 250 милисекунд, что бы сообщение наверняка отправилось.
    dwAddress := dwSAMP + 0x12D8F8 ; Адрес чатлога в памяти со смещением.
    chatInput := readString(hGTA, dwAddress, 256) ; Чтение памяти.
    If (chatInput = "/proverka")
    {
    Sendchat("/n Введи команду /pass " myid "") ; Отправка сообщения
    }
    } ; Конец проверки чатлога
    return
    
    Как смог, так написал.
    Ссылка на Samp-UDF :
    Blast.hk: AHK - SAMP UDF(https://blast.hk/threads/20318/)

    CM: [Разработка] SAMP UDF | Дорабатываем вместе! | От 04.02.2018 - Форум Cheat-Master.ru(http://cheat-master.ru/forum/149-619860-1)
     
    #910 Usik.dm, 15 мар 2018
    Последнее редактирование: 16 мар 2018