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

Jaden_Moore

Новичок
22
0
Код:
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen())
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatInput, "^/r\s(.*)", out))
    {
        temp := Trim(out1)
        if (temp == "")
            addChatMessageEx(0xFF8CA6, "Используйте ""/r текст""")
        else
        {
            if (!RegExMatch(temp, "\(\(\s.*\s\)\)"))
            Sleep, 100
                SendChat("/me сняв с пояса рацию передал сообщение")
        }
    }
    else if RegExMatch(chatInput, "^/settag\s(.*)", out)
    {
        IniWrite, %out1%, %A_MyDocuments%\GTA San Andreas User Files\SAMP\setting.ini, Setup, Tag
        addChatMessageEx(0xFF8CA6, "Установлен новый тэг: " out1)
    }
}
if (menu==1)
{
punk:="label"+a
Gosub, %punk%
menu:=0
}
return
Numpad2::
IniRead, NickEng2, Setting.ini, INFO, Info2
IniRead, zvanie2, Setting.ini, INFO, Info3
IniRead, Tag2, Setting.ini, INFO, Info5
IniRead, TagD2, Setting.ini, INFO, Info7
IniRead, Razdel2, Setting.ini, INFO, Info9
IniRead, NickRus2, Setting.ini, INFO, Info11
IniRead, Lekcia2, Lekcia.ini, TEXT, Text-1
a:=1
menu:=1
ShowDialog("2", "{800000}[AHK] {BDBDBD}Организация - {A0522D}МО:", "{FFFFFF}1. {FAEBD7}Показать уодостовирение`n{FFFFFF}2. {FAEBD7}Доклад об выезде на поставки {D2B48C}[Фура полная].`n{FFFFFF}3. {FAEBD7}Доклад об выезде на базу {D2B48C}[Фура пустая].`n{FFFFFF}4. {FF0000}Объявите об ЧС на базе!`n{FFFFFF}5. {FAEBD7}Сообщить об построении на Базе.`n{FFFFFF}6. {FAEBD7}Прочитать Лекцию №1.`n{FFFFFF}7. {FAEBD7}Прочитать Лекцию №2.`n{FFFFFF}8. {FAEBD7}Доклад об вылете на поставки {D2B48C}[Вертолёт полный]`n{FFFFFF}9.{FAEBD7} Доклад об вылете на базу {D2B48C}[Вертолёт пустой]`n{FFFFFF}10. {FAEBD7}Доклад с поста {D2B48C}[КПП-1]`n{FFFFFF}11. {FAEBD7}Доклад с поста {D2B48C}[КПП-2]`n{FFFFFF}12. Уволить Бойца{FAEBD7}`n{FFFFFF}13. Принять новобранца{FAEBD7}","Отмена")
return

~UP::
if a>1
{
a:=a-1
}
return
~Down::
if a<b
{
a:=a+1
}
return

label1:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/do В правом кармане брюк у " NickEng2 " лежит удостоверение.")
Sleep 2500
SendChat("/me опустил правую руку в карман и нащупал удостоверение")
Sleep 2500
SendChat("/me лёгким движением руки вытащил руку из кармана")
Sleep 2500
SendChat("/do " NickEng2 " держит удостовирение в правой руке.")
Sleep 2500
SendChat("/me раскрыл удостоверение и показал его человеку напротив")
Sleep 2500
SendChat("/todo Вот...Смотрите.*показывая удостоверение")
Sleep 2500
SendChat("/do В удостовирении - Имя: " NickEng2 " - Дожность: " zvanie2 " - Подразделение: " Razdel2 ".")
Sleep 15000
SendChat("/me лёгким движением руки закрыл удостоверение и спрятал его в карман")
Sleep 2500
SendChat("/do Удостовирение лежит в правом кармане брюк у " NickEng2 ".")
Sleep 2500
return

label2:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/r " Tag2 ": Докладывает: " NickRus2 ". Загурзился. Выезжаю на поставки!")
return

label3:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/r " Tag2 ": Докладывает: " NickRus2 ". Разгурзился, выезжаю на базу!")
return

label4:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/r " Tag2 ": Докладывает: " NickRus2 ". Черезвычайная ситуация! Нападение ОПГ!")
return

label5:
addChatMessageEx(0xBDBDBD, "{FF52A4}[AHK]: {BDBDBD}По - Для продолжения нажмите {ffffff}F2")
KeyWait, vk71, D
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/b " Tag2 ": Всеобщее постраение на плацу. У вас 3 минуты! Кого не будет - Выговор.")
Sleep 60000
SendChat("/b " Tag2 ": Всеобщее постраение на плацу. У вас 2 минуты! Кого не будет - Выговор.")
Sleep 60000
SendChat("/b " Tag2 ": Всеобщее постраение на плацу. У вас 1 минута! Кого не будет - Выговор.")
Sleep 60000
SendChat("/b " Tag2 ": Время ожидания завершено. Начинаю проверять по спискам.")
return

label6:
addChatMessageEx(0xBDBDBD, "{FF52A4}[AHK]: {DDA0DD}Лекция №1 - Для продолжения нажмите {ffffff}F2")
KeyWait, vk71, D
SendMessage, 0x50,, 0x4190419,, A
Sleep, 100
SendChat("/r " Tag2 ": Бойцы, минуту внимания!")
Sleep, 1500
SendChat("/r " Tag2 ": Я " zvanie2 " " NickRus2 " хочу прочитать лекцию...")
Sleep, 1500
SendChat("/r " Tag2 ": На тему - 'Суббординация'.")
Sleep, 1500
SendChat("/r " Tag2 ": В Армии нету таких слов как: 'Привет', 'Как дела?', 'Поговорить можно?' и т.д")
Sleep, 1500
SendChat("/r " Tag2 ": Обращаться строго на 'Вы' и только на 'Вы'.")
Sleep, 1500
SendChat("/r " Tag2 ": Например: Здравия желаю " zvanie2 " " NickRus2 ".")
Sleep, 1500
SendChat("/r " Tag2 ": Покинуть Территорию военной базы можно только по Разрешению.")
Sleep, 1500
SendChat("/r " Tag2 ": Незнание правил, не освобождает от ответсвенности!")
Sleep, 1500
SendChat("/r " Tag2 ": Всем спасибо за внимание. Желаю продуктивной работы!")
Sleep, 100
SendChat("/time")
Sleep, 100
SendInput {F8}
return

label7:
addChatMessageEx(0xBDBDBD, "{FF52A4}[AHK]: {DDA0DD}Лекция №2{BDBDBD} - Для продолжения нажмите {ffffff}F2")
KeyWait, vk71, D
SendMessage, 0x50,, 0x4190419,, A
Sleep, 100
SendChat("/r " Tag2 ": Бойцы, минуту внимания!")
Sleep, 1500
SendChat("/r " Tag2 ": Я " zvanie2 " " NickRus2 " хочу прочитать лекцию... ")
Sleep, 1500
SendChat("/r " Tag2 ": На тему - 'Тир'.")
Sleep, 1500
SendChat("/r " Tag2 ": В связи с низкими показателями огневой подготовки... ")
Sleep, 1500
SendChat("/r " Tag2 ": Было принято решение Ввести 'Тир'.")
Sleep, 1500
SendChat("/r " Tag2 ": Перед тем как уйти в тир...")
Sleep, 1500
SendChat("/r " Tag2 ": Вам нужно спросить Разрешения Офицеров.")
Sleep, 1500
SendChat("/r " Tag2 ": Посещения Тира не по графику - увольнение.")
Sleep, 1500
SendChat("/r " Tag2 ": Незнание правил, не освобождает от ответсвенности!")
Sleep, 1500
SendChat("/r " Tag2 ": Всем спасибо за внимание. Желаю продуктивной работы!")
Sleep, 1500
SendChat("/time")
Sleep, 1000
SendInput {F8}
return

label8:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/r " Tag2 ": Докладывает: " NickRus2 ". Вертолёт - пуст. Вылетаю на загрузку.")
return

label9:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/r " Tag2 ": Докладывает: " NickRus2 ". Загрузился, вылетаю на поставки!")
return

label10:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/r " Tag2 ": Докладывает: " NickRus2 ". Пост: КПП-1. Состояние: Стабильное.")
return

label11:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
if IsPlayerInRangeOfPoint(-15.2274,2064.5266,17.4922,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: КПП-1 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(30.2605,2081.4258,21.8328,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: ПН-1 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(138.8696,1947.4816,19.3666,10)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: КПП-2 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(284.2646,1818.4513,17.6406,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: КПП-3 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(145.3336,1963.9907,35.3681,10)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: Вышка-2 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(105.4034,1901.6055,33.8984,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: Вышка-3 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(162.1265,1930.5018,33.8984,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: Вышка-4 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(-1527.8147,479.7747,7.1875,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: КПП | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(-1509.0648,460.8551,7.1875,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: Цех | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(-1319.3743,458.6777,7.1875,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: Ангары | Состояяние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(-1366.7013,500.8507,11.1953,15)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: Нижняя палуба | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(2720.8381,-2401.1711,13.4609,10)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: КПП-1 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(2729.1423,-2392.3945,29.5937,10)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: Вышка-1 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(27221.1350,-2493.4453,13.4869,10)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: КПП-2 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(2728.5686,-2493.4453,29.5937,30)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: Вышка-2 | Состояние: .{left 1}
    log1 := 1
}
if isPlayerInRangeOfPoint(2761.7837,-2562.9265,13.6328,10)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: Лодочная | Состояние: .{left 1}
    log1 := 1
}
if isPlayerInRangeofPoint(2796.2126,-2555.4270,29.5937,10)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: Вышка-4 | Состояние: .{left 1}
    log1 := 1
}
if isPlayerInRangeofPoint(2735.0659,2558.9087,29.5937,10)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: вышка-5 | Состояние: .{left 1}
    log1 := 1
}
return

label12:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("Привет, моё имя " NickRus2)
return

label16:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput {F6} Привет {enter}
return
return

return

При нажатии на Enter выдаёт и другие отыгровки. Как исправить?
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Код:
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen())
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatInput, "^/r\s(.*)", out))
    {
        temp := Trim(out1)
        if (temp == "")
            addChatMessageEx(0xFF8CA6, "Используйте ""/r текст""")
        else
        {
            if (!RegExMatch(temp, "\(\(\s.*\s\)\)"))
            Sleep, 100
                SendChat("/me сняв с пояса рацию передал сообщение")
        }
    }
    else if RegExMatch(chatInput, "^/settag\s(.*)", out)
    {
        IniWrite, %out1%, %A_MyDocuments%\GTA San Andreas User Files\SAMP\setting.ini, Setup, Tag
        addChatMessageEx(0xFF8CA6, "Установлен новый тэг: " out1)
    }
}
if (menu==1)
{
punk:="label"+a
Gosub, %punk%
menu:=0
}
return
Numpad2::
IniRead, NickEng2, Setting.ini, INFO, Info2
IniRead, zvanie2, Setting.ini, INFO, Info3
IniRead, Tag2, Setting.ini, INFO, Info5
IniRead, TagD2, Setting.ini, INFO, Info7
IniRead, Razdel2, Setting.ini, INFO, Info9
IniRead, NickRus2, Setting.ini, INFO, Info11
IniRead, Lekcia2, Lekcia.ini, TEXT, Text-1
a:=1
menu:=1
ShowDialog("2", "{800000}[AHK] {BDBDBD}Организация - {A0522D}МО:", "{FFFFFF}1. {FAEBD7}Показать уодостовирение`n{FFFFFF}2. {FAEBD7}Доклад об выезде на поставки {D2B48C}[Фура полная].`n{FFFFFF}3. {FAEBD7}Доклад об выезде на базу {D2B48C}[Фура пустая].`n{FFFFFF}4. {FF0000}Объявите об ЧС на базе!`n{FFFFFF}5. {FAEBD7}Сообщить об построении на Базе.`n{FFFFFF}6. {FAEBD7}Прочитать Лекцию №1.`n{FFFFFF}7. {FAEBD7}Прочитать Лекцию №2.`n{FFFFFF}8. {FAEBD7}Доклад об вылете на поставки {D2B48C}[Вертолёт полный]`n{FFFFFF}9.{FAEBD7} Доклад об вылете на базу {D2B48C}[Вертолёт пустой]`n{FFFFFF}10. {FAEBD7}Доклад с поста {D2B48C}[КПП-1]`n{FFFFFF}11. {FAEBD7}Доклад с поста {D2B48C}[КПП-2]`n{FFFFFF}12. Уволить Бойца{FAEBD7}`n{FFFFFF}13. Принять новобранца{FAEBD7}","Отмена")
return

~UP::
if a>1
{
a:=a-1
}
return
~Down::
if a<b
{
a:=a+1
}
return

label1:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/do В правом кармане брюк у " NickEng2 " лежит удостоверение.")
Sleep 2500
SendChat("/me опустил правую руку в карман и нащупал удостоверение")
Sleep 2500
SendChat("/me лёгким движением руки вытащил руку из кармана")
Sleep 2500
SendChat("/do " NickEng2 " держит удостовирение в правой руке.")
Sleep 2500
SendChat("/me раскрыл удостоверение и показал его человеку напротив")
Sleep 2500
SendChat("/todo Вот...Смотрите.*показывая удостоверение")
Sleep 2500
SendChat("/do В удостовирении - Имя: " NickEng2 " - Дожность: " zvanie2 " - Подразделение: " Razdel2 ".")
Sleep 15000
SendChat("/me лёгким движением руки закрыл удостоверение и спрятал его в карман")
Sleep 2500
SendChat("/do Удостовирение лежит в правом кармане брюк у " NickEng2 ".")
Sleep 2500
return

label2:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/r " Tag2 ": Докладывает: " NickRus2 ". Загурзился. Выезжаю на поставки!")
return

label3:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/r " Tag2 ": Докладывает: " NickRus2 ". Разгурзился, выезжаю на базу!")
return

label4:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/r " Tag2 ": Докладывает: " NickRus2 ". Черезвычайная ситуация! Нападение ОПГ!")
return

label5:
addChatMessageEx(0xBDBDBD, "{FF52A4}[AHK]: {BDBDBD}По - Для продолжения нажмите {ffffff}F2")
KeyWait, vk71, D
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/b " Tag2 ": Всеобщее постраение на плацу. У вас 3 минуты! Кого не будет - Выговор.")
Sleep 60000
SendChat("/b " Tag2 ": Всеобщее постраение на плацу. У вас 2 минуты! Кого не будет - Выговор.")
Sleep 60000
SendChat("/b " Tag2 ": Всеобщее постраение на плацу. У вас 1 минута! Кого не будет - Выговор.")
Sleep 60000
SendChat("/b " Tag2 ": Время ожидания завершено. Начинаю проверять по спискам.")
return

label6:
addChatMessageEx(0xBDBDBD, "{FF52A4}[AHK]: {DDA0DD}Лекция №1 - Для продолжения нажмите {ffffff}F2")
KeyWait, vk71, D
SendMessage, 0x50,, 0x4190419,, A
Sleep, 100
SendChat("/r " Tag2 ": Бойцы, минуту внимания!")
Sleep, 1500
SendChat("/r " Tag2 ": Я " zvanie2 " " NickRus2 " хочу прочитать лекцию...")
Sleep, 1500
SendChat("/r " Tag2 ": На тему - 'Суббординация'.")
Sleep, 1500
SendChat("/r " Tag2 ": В Армии нету таких слов как: 'Привет', 'Как дела?', 'Поговорить можно?' и т.д")
Sleep, 1500
SendChat("/r " Tag2 ": Обращаться строго на 'Вы' и только на 'Вы'.")
Sleep, 1500
SendChat("/r " Tag2 ": Например: Здравия желаю " zvanie2 " " NickRus2 ".")
Sleep, 1500
SendChat("/r " Tag2 ": Покинуть Территорию военной базы можно только по Разрешению.")
Sleep, 1500
SendChat("/r " Tag2 ": Незнание правил, не освобождает от ответсвенности!")
Sleep, 1500
SendChat("/r " Tag2 ": Всем спасибо за внимание. Желаю продуктивной работы!")
Sleep, 100
SendChat("/time")
Sleep, 100
SendInput {F8}
return

label7:
addChatMessageEx(0xBDBDBD, "{FF52A4}[AHK]: {DDA0DD}Лекция №2{BDBDBD} - Для продолжения нажмите {ffffff}F2")
KeyWait, vk71, D
SendMessage, 0x50,, 0x4190419,, A
Sleep, 100
SendChat("/r " Tag2 ": Бойцы, минуту внимания!")
Sleep, 1500
SendChat("/r " Tag2 ": Я " zvanie2 " " NickRus2 " хочу прочитать лекцию... ")
Sleep, 1500
SendChat("/r " Tag2 ": На тему - 'Тир'.")
Sleep, 1500
SendChat("/r " Tag2 ": В связи с низкими показателями огневой подготовки... ")
Sleep, 1500
SendChat("/r " Tag2 ": Было принято решение Ввести 'Тир'.")
Sleep, 1500
SendChat("/r " Tag2 ": Перед тем как уйти в тир...")
Sleep, 1500
SendChat("/r " Tag2 ": Вам нужно спросить Разрешения Офицеров.")
Sleep, 1500
SendChat("/r " Tag2 ": Посещения Тира не по графику - увольнение.")
Sleep, 1500
SendChat("/r " Tag2 ": Незнание правил, не освобождает от ответсвенности!")
Sleep, 1500
SendChat("/r " Tag2 ": Всем спасибо за внимание. Желаю продуктивной работы!")
Sleep, 1500
SendChat("/time")
Sleep, 1000
SendInput {F8}
return

label8:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/r " Tag2 ": Докладывает: " NickRus2 ". Вертолёт - пуст. Вылетаю на загрузку.")
return

label9:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/r " Tag2 ": Докладывает: " NickRus2 ". Загрузился, вылетаю на поставки!")
return

label10:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("/r " Tag2 ": Докладывает: " NickRus2 ". Пост: КПП-1. Состояние: Стабильное.")
return

label11:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
if IsPlayerInRangeOfPoint(-15.2274,2064.5266,17.4922,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: КПП-1 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(30.2605,2081.4258,21.8328,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: ПН-1 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(138.8696,1947.4816,19.3666,10)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: КПП-2 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(284.2646,1818.4513,17.6406,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: КПП-3 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(145.3336,1963.9907,35.3681,10)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: Вышка-2 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(105.4034,1901.6055,33.8984,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: Вышка-3 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(162.1265,1930.5018,33.8984,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: Вышка-4 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(-1527.8147,479.7747,7.1875,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: КПП | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(-1509.0648,460.8551,7.1875,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: Цех | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(-1319.3743,458.6777,7.1875,25)
{
SendInput, {F6}/r %Tag2% Докладывает: %NickRus2% | Пост: Ангары | Состояяние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(-1366.7013,500.8507,11.1953,15)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: Нижняя палуба | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(2720.8381,-2401.1711,13.4609,10)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: КПП-1 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(2729.1423,-2392.3945,29.5937,10)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: Вышка-1 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(27221.1350,-2493.4453,13.4869,10)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: КПП-2 | Состояние: .{left 1}
    log1 := 1
}
if IsPlayerInRangeOfPoint(2728.5686,-2493.4453,29.5937,30)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: Вышка-2 | Состояние: .{left 1}
    log1 := 1
}
if isPlayerInRangeOfPoint(2761.7837,-2562.9265,13.6328,10)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: Лодочная | Состояние: .{left 1}
    log1 := 1
}
if isPlayerInRangeofPoint(2796.2126,-2555.4270,29.5937,10)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: Вышка-4 | Состояние: .{left 1}
    log1 := 1
}
if isPlayerInRangeofPoint(2735.0659,2558.9087,29.5937,10)
{
SendInput, {F6}/r %Tag2% | Докладывает: %NickRus2% | Пост: вышка-5 | Состояние: .{left 1}
    log1 := 1
}
return

label12:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendChat("Привет, моё имя " NickRus2)
return

label16:
SendMessage, 0x50,, 0x4190419,, A
Sleep 100
SendInput {F6} Привет {enter}
return
return

return

При нажатии на Enter выдаёт и другие отыгровки. Как исправить?
Подробнее, не?
 

Di3

Участник
432
20
Можно ли как то определить номер строки в chatlog по текту? Т.е допустим в чат логе

RegExMatch(chatlog, ".*Text.*", test)
и уже через test определить номер строки
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Можно ли как то определить номер строки в chatlog по текту? Т.е допустим в чат логе

RegExMatch(chatlog, ".*Text.*", test)
и уже через test определить номер строки
Построчно читаешь chatlog.txt увеличивая интерацию.
В каждой строке ищешь совпадение (регулярки и т.п.)
Интерация = номер строки.
 

Kirill_Origins

Известный
21
1
Можете помочь
upload_2018-4-17_19-44-28.png

AutoHotKey:
Numpad0::
SendMessage, 0x50,, 0x4190419,, A
Sendinput,{F6}/me нажав на кнопку рации "TRola",привёл её в действие{enter}
sleep 2000;
Sendinput,{F6}/me передал данные диспетчеру о обьявлении в федеральный розыск{enter}
sleep 2000;
Sendinput,{F6}/su {Space}
Return

Numpad1::
SendMessage, 0x50,, 0x4190419,, A
Sendinput{F6}/do Электрошокер напряжением 26 вольт прикреплён на тактическом поясе.{Enter}
sleep 2000;
Sendinput{F6}/me быстрым движением руки,схватил электрошокер и нажал кнопку "Power".{Enter}
Return

Numpad2::
SendMessage, 0x50,, 0x4190419,, A
Sendinput{F6}/do Наручники прекреплены к тактическому поясу.{Enter}
sleep 2000;
Sendinput{F6}/me протянув руку к поясу,отстегнул наручники с тактического пояса{Enter}
sleep 2000;
Sendinput{F6}/cuff{Space}
Return

Numpad3::
SendMessage, 0x50,, 0x4190419,, A
Sendinput{F6}/me схватил человека за связку наручников{Enter}
sleep 2000;
Sendinput{F6}/hold{Space}
sleep 2000
Return

Numpad4::
SendMessage, 0x50,, 0x4190419,, A
Sendinput{F6}/me протянув руку к дверце,открыл дверь полицейского крузера{Enter}
sleep 2000;
Sendinput{F6}/me заломя руки человеку,провёл его до сиденья крузера{Enter}
sleep 2000;
Sendinput{F6}/push {Space}
sleep 5000;
/me захлопнул дверь полицейского крузера
sleep 2000
Return

Numpad5::
SendMessage, 0x50,, 0x4190419,, A
Sendinput{F6}Вы имеете право хранить молчание.{Enter}
sleep 2000
Sendinput{F6}Всё,что вы скажите будет показано против вас в суде.{Enter}
sleep 2000
Sendinput{F6}Вы имеете право на адвоката{Enter}
sleep 2000
Sendinput{F6}Если у вас не будет средств на адвоката,он вам будет предоставлен в суде{Enter}
Return
Numpad5::
Sendinput{F6}/me засунув руку в карман рубашки,достал смартфон "TRPhone"{Enter}
sleep 2000
Sendinput{F6}/me проведя пальцем по сенсору экрана,разблокировал смартфон{Enter}
sleep 2000
Sendinput{F6}/me нажав на иконку "База данных МВД",зашёл в базу под агентом ФБР{Enter}
sleep 2000
Sendinput{F6}/me пробив человека по базе МВД,зашёл во вкладку "Уголовные дела"{Enter}
sleep 2000
Sendinput{F6}/me нашёв дело человека,написал в деле "Дело закрыто"{Enter}
sleep 2000
Sendinput{F6}/do В подсумке лежат бланки на составление ареста.{Enter}
sleep 2000
Sendinput{F6}/me сделав нужные записи в бланке,передал бланк в полицейский департамент{Enter}
sleep 2000
Sendinput{F6}/me передал человека в полицейский департамент{Enter}
sleep 2000
Sendinput{F6}/arrest {Space}
Return

Numpad7::
SendMessage, 0x50,, 0x4190419,, A
Sendinput{F6}/m У вас есть 15 секунд чтобы уехать с АЗС!
sleep 2000
Sendinput{F6}/m Иначе вы будете обьявлены в федеральный розыск!

И ещё как сделать так чтобы например ввёл команду /камера и пошла отыгровка
 
Последнее редактирование модератором:

Di3

Участник
432
20

crab1k

Известный
34
4
Можете помочь

AutoHotKey:
Numpad0::
SendMessage, 0x50,, 0x4190419,, A
Sendinput,{F6}/me нажав на кнопку рации "TRola",привёл её в действие{enter}
sleep 2000;
Sendinput,{F6}/me передал данные диспетчеру о обьявлении в федеральный розыск{enter}
sleep 2000;
Sendinput,{F6}/su {Space}
Return

Numpad1::
SendMessage, 0x50,, 0x4190419,, A
Sendinput{F6}/do Электрошокер напряжением 26 вольт прикреплён на тактическом поясе.{Enter}
sleep 2000;
Sendinput{F6}/me быстрым движением руки,схватил электрошокер и нажал кнопку "Power".{Enter}
Return

Numpad2::
SendMessage, 0x50,, 0x4190419,, A
Sendinput{F6}/do Наручники прекреплены к тактическому поясу.{Enter}
sleep 2000;
Sendinput{F6}/me протянув руку к поясу,отстегнул наручники с тактического пояса{Enter}
sleep 2000;
Sendinput{F6}/cuff{Space}
Return

Numpad3::
SendMessage, 0x50,, 0x4190419,, A
Sendinput{F6}/me схватил человека за связку наручников{Enter}
sleep 2000;
Sendinput{F6}/hold{Space}
sleep 2000
Return

Numpad4::
SendMessage, 0x50,, 0x4190419,, A
Sendinput{F6}/me протянув руку к дверце,открыл дверь полицейского крузера{Enter}
sleep 2000;
Sendinput{F6}/me заломя руки человеку,провёл его до сиденья крузера{Enter}
sleep 2000;
Sendinput{F6}/push {Space}
sleep 5000;
/me захлопнул дверь полицейского крузера
sleep 2000
Return

Numpad5::
SendMessage, 0x50,, 0x4190419,, A
Sendinput{F6}Вы имеете право хранить молчание.{Enter}
sleep 2000
Sendinput{F6}Всё,что вы скажите будет показано против вас в суде.{Enter}
sleep 2000
Sendinput{F6}Вы имеете право на адвоката{Enter}
sleep 2000
Sendinput{F6}Если у вас не будет средств на адвоката,он вам будет предоставлен в суде{Enter}
Return
Numpad5::
Sendinput{F6}/me засунув руку в карман рубашки,достал смартфон "TRPhone"{Enter}
sleep 2000
Sendinput{F6}/me проведя пальцем по сенсору экрана,разблокировал смартфон{Enter}
sleep 2000
Sendinput{F6}/me нажав на иконку "База данных МВД",зашёл в базу под агентом ФБР{Enter}
sleep 2000
Sendinput{F6}/me пробив человека по базе МВД,зашёл во вкладку "Уголовные дела"{Enter}
sleep 2000
Sendinput{F6}/me нашёв дело человека,написал в деле "Дело закрыто"{Enter}
sleep 2000
Sendinput{F6}/do В подсумке лежат бланки на составление ареста.{Enter}
sleep 2000
Sendinput{F6}/me сделав нужные записи в бланке,передал бланк в полицейский департамент{Enter}
sleep 2000
Sendinput{F6}/me передал человека в полицейский департамент{Enter}
sleep 2000
Sendinput{F6}/arrest {Space}
Return

Numpad7::
SendMessage, 0x50,, 0x4190419,, A
Sendinput{F6}/m У вас есть 15 секунд чтобы уехать с АЗС!
sleep 2000
Sendinput{F6}/m Иначе вы будете обьявлены в федеральный розыск!

И ещё как сделать так чтобы например ввёл команду /камера и пошла отыгровка
убери ; после 2000
 

SmoykeJ

Известный
6
0
Такой вопрос. Я сделал вот такое ахк себе.
Однако когда я открываю диалог окно будь то /ахкхелп или ПКМ+X ( те что сделал ) они появляются и сразу же удаляются.
Что делать?
Раньше работало нормально. Но почему то сейчас не хочет.

Код:
#include UDF.ahk
#IfWinActive GTA:SA:MP
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
   
    :?:/ахкхелп::
    SendMessage, 0x50,, 0x4190419,, A
        {
        ShowDialog("0", "{ACDBC9}AHK by Drobyshev", "{3EACA8}/rn|/fn{FFFFFF} - НонРп рация`n{3EACA8}/ft{FFFFFF} - Рация с тегом`n{3EACA8}ALT + Num9{FFFFFF} - Часы`n{3EACA8}/повыш id{FFFFFF} - повышение`n{3EACA8}/увал id_причина{FFFFFF} - Увольнение`n{3EACA8}/ПКМ + X{FFFFFF} - Собеседование`n{3EACA8}/vefir{FFFFFF} - Войти в эфир по РП`n{3EACA8}/kefir{FFFFFF} - Выйти из эфира.`n", "Закрыть")
        return
    }
   
   
   
!numpad9::
{
SendMessage, 0x50,, 0x4190419,, A
SendChat("/me закатав рукав посмотрел на часы.")
Sleep 750
SendChat("/c 60")
sleep 750
SendChat("/do Время на часах: " A_Hour ":" A_Min ":" A_Sec "")
sleep 750
SendChat("/do Дата на часах: " A_DD "- " A_MM "-" A_Year "")
Sleep 750
a := 59 - A_Min
b := 60 - A_Sec
SendChat("/do До зарплаты осталось " a " мин. " b " сек.")
return
}

vk02 & vk58::
{
        ID := getIdByPed(getTargetPed())
        Nick := getPlayerNameById(id)
        Nick := RegExReplace(Nick, "_", A_Space)
            ShowDialog("2","{006666}Собеседование с " nick "[" id "]", "{FFFFFF}1.{FFFFFF} Приветствие`n{FFFFFF}2.{FFFFFF} Попросить документы`n{FFFFFF}3.{FFFFFF} РП термины в IC`n{FFFFFF}4.{FFFFFF} Рп термины в OOC`n{FFFFFF}5.{FFFFFF} Вы нам подходите`n{FFFFFF}6.{FFFFFF} Вы нам не подходите`n","Закрыть")
            keywait, enter, d
            line:=getDialogLineNumber()
            sleep, 100
            Gosub, sob%line%
            return
        }
sob1:
{
    sleep 100
    sendchat ("Здравствуйте. Вы на собеседование? .")
    return
}
sob2:
{
    sendchat ("Предоставьте Ваши документы, а именно: паспорт и лицензии.")
    return
}
sob3:
{
sendchat ("Хорошо. Теперь ответьте на пару вопросов.")
sleep 1000
sendchat ("Что такое МГ,ТК,ДМ?")
  Sleep 400
Text = {0080FF}AHK: {FFFFFF}После ответа нажмите{0080FF} "F2"
    addChatMessage(text)
    Sleep 500
    KeyWait, vk71, D
    Sleep 500
sendchat ("Что у меня над головой?")
return
}
sob4:
{
    sendchat ("/n ДМ,ТК,СК,ДБ в смс на номер 299-229.")
return  
}
sob5:
{
      sendchat ("Поздравляю! Вы нам подходите.")
      sleep 1000
      sendchat ("Сейчас я заполню все документы и выдам вам форму, бейджик и рацию.")
      sleep 1000
      sendchat ("/me наклонился и открыл шкафчик.")
      sleep 1000
      sendchat ("/me достал из шкафчика документы, печать и ручку.")
      sleep 1000
      sendchat ("/me положил документы на стол и взял ручку в правую руку.")
      sleep 1000
      sendchat ("/me заполняет документы на имя " nick " о трудоустройстве в LSFM.")
      sleep 1000
      sendchat ("/do Документы заполнены.")
      sleep 1000
      sendchat ("/me взял печать в руки и поставил ещё на договоре.")
      sleep 1000
      sendchat ("/do На договоре стоит печать LSFM.")
      sleep 1000
      sendchat ("/me положил документы обратно в шкафчик.")
      sleep 1000
      sendchat ("/me из уже открытого шкафчика достал форму, рацию и бейджик.")
      sleep 1000
      sendchat ("/do Форма рация и бейджик в руках.")
      sleep 1000
      sendchat ("/me передал форму, бейджик и рацию человеку нарпотив.")
      sleep 1000
      sendchat ("/anim 21")
      sleep 1000
      sendchat ("/invite " id " ")
return  
}
sob6:
{
    sendchat ("К сожалению Вы нам не подходите. Всего доброго.")
return  
}

$~Enter::
if (isInChat() && !isDialogOpen())
{
Sleep, 200
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 256)
if RegExMatch(chatInput, "^/rn (.*)", rn)
{
    if(rn1==none || rn1=="" || rn1==" " || rn1=="  " || rn1=="   ")
    {
        writeString(hGTA, dwAddress, 256)
        addChatMessageEx("FFFFFF", "Введите: /rn [нон-рп сообщение]")
        return
    }
    else
    {
        writeString(hGTA, dwAddress, 256)
        SendChat("/r (( " rn1 " ))")
        return
    }
  }
}
if RegExMatch(chatInput, "^/fn (.*)", fn)
{
    if(fn1=="" || fn1==" " || fn1=="  " || fn1=="   ")
    {
        writeString(hGTA, dwAddress, 256)
        addChatMessageEx("FFFFFF", "Введите: /fn [нон-рп сообщение]")
        return
    }
    else
    {
        writeString(hGTA, dwAddress, 256)
        SendChat("/f (( " fn1 " ))")
        return
    }
}
if RegExMatch(chatInput, "^/ft(.*)", ftr)
{
    writeString(hGTA, dwAddress, 256)
    if(ftr1=="" || ftr1==" " || ftr1=="  " || ftr1=="   ")
    {
        addChatMessageEx("FFFFFF", "Введите: /ft [текст]")
        return
    }
    else
    {
        {
            SendChat("/me нажав кнопку передал сообщение по рации")
            Sleep 300
        }
        writeString(hGTA, dwAddress, 256)
        ft = LS
        SendChat("/f " ft " |" ftr1)
        return
    }
}
if chatInput contains /find
{
    {
        writeString(hGTA, dwAddress, 256)
        SendChat("/do КПК в кармане.")
        Sleep 1000
        SendChat("/me достал КПК и открыл список сотрудников")
        Sleep 1000
        SendChat("/me убрал КПК в карман")
    }
    return
}
if RegExMatch(chatInput, "^/lock(.*)", alock)
{
        Sleep 200
        if (isPlayerDriver() = 1)
        {
            if (getVehicleLockState() == "0")
            {
                SendChat("/me нажал на кнопку центрального замка на приборной панели, тем самым открыл машину")
                return
            }
            else if (getVehicleLockState( ) == "1")
            {
                SendChat("/me потянулся к приборной панели и нажал на кнопку центрального замка, тем самым закрыл машину")
                return
            }
        }
         else
        {
            SendChat("/me достал ключи из кармана и нажал на кнопку [Open/Close]")
            return
        }
    }
if RegExMatch(chatInput, "^/r (.*)", ind)
{
    if (ind1=="" || ind1 == " " || ind1 == "  " || ind1 == "   ")
    {
        addChatMessageEx("FFFFFF", "Введите: /r [текст]")
        Sleep 200
        return
    }
    else
    {
        {
            SendChat("/me нажав кнопку передал сообщение по рации")
            return
        }
    }
}
if RegExMatch(chatInput, "^/f (.*)", ind)
{
    if (ind1=="" || ind1 == " " || ind1 == "  " || ind1 == "   ")
    {
        addChatMessageEx("FFFFFF", "Введите: /f [текст]")
        Sleep 200
        return
    }
    else
    {
        {
            SendChat("/me нажав кнопку передал сообщение по рации")
            return
        }
    }
}
if RegExMatch(chatInput, "^/увал (.*)", vid)
{
    if (vid1=="" || vid1 == " " || vid1 == "  " || vid1 == "   ")
    {
        addChatMessageEx("FFFFFF", "Введите: /увал [id_причина]")
        Sleep 200
        return
    }
    else
    {
        writeString(hGTA, dwAddress, 256)
        RegExMatch(vid1, "(.*)_(.*)", vuval)
        if (vuval1=="" || vuval1 == " " || vuval1 == "  " || vuval1 == "   ")
        {
        addChatMessageEx("FFFFFF", "Введите: /увал [{FF0000}id{FFFFFF}_причина]")
            Sleep 200
            return
        }
        else if (vuval2=="" || vuval2 == " " || vuval2 == "  " || vuval2 == "   ")
        {
        addChatMessageEx("FFFFFF", "Введите: /увал [id_{FF0000}причина{FFFFFF}]")
            Sleep 200
            return
        }
        else
        {
            ft = LS
            vName := getPlayerNameById(vuval1)
            RegExMatch(vName, "(.*)_(.*)", vNameGO)
            SendChat("/do КПК лежит в кармане.")
            Sleep 1000
            SendChat("/me достал КПК")
            Sleep 1000
            SendChat("/me зашел в базу данных Mass Media")
            Sleep 1000
            SendChat("/me анулировал бейджик " vNameGO1 " " VNameGO2 " с причиной: " vuval2 " ")
            Sleep 1000
            {
                SendChat("/me нажав кнопку и передал сообщение по рации")
                Sleep 1000
            }
            SendChat("/f " ft " | Анулировал бейджик №" vuval1 " (" vNameGO1 " " VNameGO2 ") с причиной: " vuval2 " ")
            Sleep 1000
            SendChat("/uninvite " vuval1 " " vuval2 " ")
            return

        }
    }
}
if RegExMatch(chatInput, "^\/повыш (.*)", vid)
    {
        Nick := RegExReplace(getPlayerNameById(var1), "_", " ")
            SendChat("/me открыл шкафчик и достал от туда новую форму и бейджик")
            Sleep 1000
            SendChat("/do Форма и бейджик в руках.")
            Sleep 1000
            SendChat("/me передал " nick " форму и бейджик. ")
            Sleep 1000
            SendChat("/anim 21")
            Sleep 1000
            SendInput {F6}/rang
        return
    }
 

Di3

Участник
432
20
Помогите плез, я сделал вывод информации с таба в блакнот, все работает, в блакноте ID: * LVL: *, как теперь сделать так, чтобы все лвл которые ниже 5, заполнились в другой блокнот.
Если делаю через
loop , read, %lvl%
if (RegExMatch(A_LoopreadLine, "\ID: (.*) LVL: (.*)",p)
{
if ( p2 < 5 )
{
FileAppend,%p2%,%txtlvl%
}
}
в итоге все выводится, но повторяется много раз
 
Последнее редактирование:

Adam_Rockwell

Активный
143
25
Как сделать проверку по ид, афк ли игрок?
Если на даймонде (где при вводе /id пишет, AFK или нет, то делай проверку через regExMatch.

Если сервер никак не может тебе сказать, афк или нет, но это нереализуемо, если игрок вне зоны стрима.
 
  • Нравится
Реакции: Spr!Nt

Di3

Участник
432
20
Если на даймонде (где при вводе /id пишет, AFK или нет, то делай проверку через regExMatch.

Если сервер никак не может тебе сказать, афк или нет, но это нереализуемо, если игрок вне зоны стрима.
игрок в зоне стрима
 

Di3

Участник
432
20
Как сделать проверку на афк на игрока который в зоне стрима.