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

oPawka

Новичок
23
4
Как сделать переменную? Ну тип, если:
Alkash_Vasily достал кошелёк и передал деньги Vasiliy_Alkashnikov
Vasiliy_Alkashnikov передал вам 5.000$
то как мне записать в переменную именно ник Vasiliy_Alkashnikov, и саму суму передачи мне
 

darksoor

Известный
674
353
Как сделать переменную? Ну тип, если:
Alkash_Vasily достал кошелёк и передал деньги Vasiliy_Alkashnikov
Vasiliy_Alkashnikov передал вам 5.000$
то как мне записать в переменную именно ник Vasiliy_Alkashnikov, и саму суму передачи мне

Читаем чат, ищем регулярное выражение:
AutoHotKey:
RegExMatch(chatlog, "(\w+_\w+)\sпередал\sвам\s(\d+)\$", var)
Где var1 - ник, var2 - сумма.
 
  • Нравится
Реакции: oPawka

oPawka

Новичок
23
4
Как взять ID игрока через ник?

Alkash_Vasily достал кошелёк и передал деньги Vasiliy_Alkashnikov
Vasiliy_Alkashnikov передал вам 5.000$

Как мне взять ID Vasiliy_Alkashnikov?
 

darksoor

Известный
674
353
Как взять ID игрока через ник?

Alkash_Vasily достал кошелёк и передал деньги Vasiliy_Alkashnikov
Vasiliy_Alkashnikov передал вам 5.000$

Как мне взять ID Vasiliy_Alkashnikov?
Функцией из SAMP-UDF.
Чекай описание самого УДФа, там много функций уже готовых и спрашивать не нужно.

AutoHotKey:
getPlayerIdByName(id)
 

darksoor

Известный
674
353
24148803.png



Уровень розыска интересует
Читаешь последнюю строку чата, потом ищешь регуляркой розыск
AutoHotKey:
RegExMatch(getChatLineEx(), "Уровень розыска\:\s(\d)", var)
Где var1 - уровень розыска.

Да и у тебя в коде он ждёт диалога, хотя паспорт отображается в чате. Не сработает.
 

Andy Safino

Участник
69
4
Читаешь последнюю строку чата, потом ищешь регуляркой розыск
AutoHotKey:
RegExMatch(getChatLineEx(), "Уровень розыска\:\s(\d)", var)
Где var1 - уровень розыска.

Да и у тебя в коде он ждёт диалога, хотя паспорт отображается в чате. Не сработает.
Код:
  if (chatInput == "/pas") {
        sendchat("Здравствуйте, Вас беспокоит сотрудник ЛСПД - Andy Safino.")
        Sleep, 1000
        sendchat("Предъявите Ваши документы, уверяю Вас, это обычная проверка.")
        addChatMessage("{fa9005}|{FFFFFF}Скрипт {00CED1}ожидает{00CED1}, {FFFFFF}пока игрок покажет паспорт.")
        while(!isDialogOpen())
            continue
        RegExMatch(getChatLineEx(), "Уровень розыска\:\s(\d)", var)
        SendInput, {enter}
        if (var1 == 0) {
            sendchat("бла бла бла, вернул паспорт")
            sendchat("бла бла бла, вернул паспорт")
        } else if (var1 >= 1) {
            addChatMessage("  {fa9005}|      {FF0000}ВНИМАНИЕ! {FFFFFF}Игрок находится в розыске! Уровень розыска: " var1)
            sendchat("ну типо ты в розыске, бро")
        } else
            addChatMessage("  {fa9005}|      {FF0000}ОШИБКА! {FFFFFF}Не удалось определить розыск")
    }
return
Братик, правильно?
 

darksoor

Известный
674
353
Код:
  if (chatInput == "/pas") {
        sendchat("Здравствуйте, Вас беспокоит сотрудник ЛСПД - Andy Safino.")
        Sleep, 1000
        sendchat("Предъявите Ваши документы, уверяю Вас, это обычная проверка.")
        addChatMessage("{fa9005}|{FFFFFF}Скрипт {00CED1}ожидает{00CED1}, {FFFFFF}пока игрок покажет паспорт.")
        while(!isDialogOpen())
            continue
        RegExMatch(getChatLineEx(), "Уровень розыска\:\s(\d)", var)
        SendInput, {enter}
        if (var1 == 0) {
            sendchat("бла бла бла, вернул паспорт")
            sendchat("бла бла бла, вернул паспорт")
        } else if (var1 >= 1) {
            addChatMessage("  {fa9005}|      {FF0000}ВНИМАНИЕ! {FFFFFF}Игрок находится в розыске! Уровень розыска: " var1)
            sendchat("ну типо ты в розыске, бро")
        } else
            addChatMessage("  {fa9005}|      {FF0000}ОШИБКА! {FFFFFF}Не удалось определить розыск")
    }
return
Братик, правильно?

AutoHotKey:
if (chatInput == "/pas") {
        sendchat("Здравствуйте, Вас беспокоит сотрудник ЛСПД - Andy Safino.")
        Sleep, 1000
        sendchat("Предъявите Ваши документы, уверяю Вас, это обычная проверка.")
        addChatMessage("{fa9005}|{FFFFFF}Скрипт {00CED1}ожидает{00CED1}, {FFFFFF}пока игрок покажет паспорт.")
        Loop {
        if RegExMatch(getChatLineEx(), "Уровень розыска\:\s(\d)", var)
              break
        }
        if (var1 == 0) {
            sendchat("бла бла бла, вернул паспорт")
            sendchat("бла бла бла, вернул паспорт")
        } else if (var1 >= 1) {
            addChatMessage("  {fa9005}|      {FF0000}ВНИМАНИЕ! {FFFFFF}Игрок находится в розыске! Уровень розыска: " var1)
            sendchat("ну типо ты в розыске, бро")
        } else
            addChatMessage("  {fa9005}|      {FF0000}ОШИБКА! {FFFFFF}Не удалось определить розыск")
    }
return

Так наверное правильнее будет.
 
  • Нравится
Реакции: Andy Safino

Adam_Rockwell

Активный
143
25
Через какую функцию в gui можно реализовать перемотку текста, как на этом фото?

Т.е, например текста слишком много, и для его корректного вывода нужно колёсиком мышки спускаться вниз.
 

Вложения

  • 2018-11-13_2-56-04.png
    2018-11-13_2-56-04.png
    6.1 KB · Просмотры: 244

HURACAN

Известный
42
3
Код:
  if (chatInput == "/pas") {
        sendchat("Здравствуйте, Вас беспокоит сотрудник ЛСПД - Andy Safino.")
        Sleep, 1000
        sendchat("Предъявите Ваши документы, уверяю Вас, это обычная проверка.")
        addChatMessage("{fa9005}|{FFFFFF}Скрипт {00CED1}ожидает{00CED1}, {FFFFFF}пока игрок покажет паспорт.")
        while(!isDialogOpen())
            continue
        RegExMatch(getChatLineEx(), "Уровень розыска\:\s(\d)", var)
        SendInput, {enter}
        if (var1 == 0) {
            sendchat("бла бла бла, вернул паспорт")
            sendchat("бла бла бла, вернул паспорт")
        } else if (var1 >= 1) {
            addChatMessage("  {fa9005}|      {FF0000}ВНИМАНИЕ! {FFFFFF}Игрок находится в розыске! Уровень розыска: " var1)
            sendchat("ну типо ты в розыске, бро")
        } else
            addChatMessage("  {fa9005}|      {FF0000}ОШИБКА! {FFFFFF}Не удалось определить розыск")
    }
return
Братик, правильно?

PHP:
!1::
ShowDialog(2, ""   MvdTitl    "Проверка документов","» Попросить предъявить документы`n» Проверка документов","Закрыть")
Result := LineResult()
if (!Result)
    return
Gosub, mpass%Result%
return

mpass1:
        my_nick := getUsername()
        my_nick := RegExReplace(my_nick, "_", " ")
        sendchat("Здравствуйте, Вас беспокоит " zvan " " frak ", " my_nick ".")
        sleep,700
        sendchat("/do На груди висит жетон " frak ".")
        sleep,700
        sendchat("Будьте добры Ваши документы.")
        return
  
mpass2:
                t_a := 0
                flag := 0
                Loop, 20
                {
                    s := 20 - A_Index
                    s := getChatLineEx(s)
                    if s contains Телефон
                    {
                        if s contains Уровень розыска
                        {
                            if s contains Законопослушность
                            {
                                RegExMatch(s,"Телефон\: ([0-9]*)  \|  Уровень розыска\: ([0-9]*)  \|  Законопослушность\: ([0-9]*)",s_p)
                                t_a := s_p2
                                flag := 1
                            }
                        }
                    }
                }
                if (flag == 0)
                {
                addChatMessageEx(0x4285F4, MvdTitl "Скрипт не обнаружил паспорт")
                    SendChat("Спасибо за предоставленные документы.")
                }
                else if (t_a == 0)
                {
                    SendChat("Спасибо за предоставленные документы.")
                }
                else if (t_a > 0)
                {
                addChatMessageEx(0x4285F4, MvdTitl "Игрок в розыске! Уровень розыска: {E57368}" t_a)
                    SendChat("Сэр, Вы в розыске, вам придется пройти за мной!")
                }
return
 
  • Нравится
Реакции: Andy Safino

HURACAN

Известный
42
3
Ребят, как запилить одну тему, система чекает список сотрудников - /find, и тех, кто в онлайне система чекает на ЧС и по /history и по всему, например в блокноте, помогите кто может)
Код:
blfind:
            SendChat("/find")
            sleep, 600
            a := GetDialogText()
            a := RegExReplace(a, "[\s]+")
            RegExMatch(a, "Изнихонлайн:(.*)Напау",p)
            a1 := p1
            a2 := 2
            Result := 0
            filename := "bl.txt"
            ftestt := ""
            Loop, %a1%
            {
                a2 ++
                RegExMatch(getDialogLine(a2),"\[([0-9]*)\]",s)
                name := getPlayerNameById(s1)
                name2 := RegExReplace(name,"_"," ")
                FileEncoding, UTF-8
                test := 0
                Loop, Read, %filename%
                {
                    str := RegExReplace(A_LoopReadLine,"""")
                    dol := ",(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),"
                    RegExMatch(str,dol,p)
                   if (p2 == name || p2 == name2)
                    {
                        Result ++
                        test := 1
                        if (ftestt == "")
                        ftestt := name
                        else
                        ftestt := ", " name
                    }
                }
            }
addChatMessageEx(0x4285F4, MvdTitl "Результат проверки /find на ЧС: {ff5c33}" result " в ЧС МВД")
            sleep, 300
            if (result != 0)
addChatMessageEx(0x4285F4, MvdTitl "Для списка того кто в ЧС МВД введите /bfcheck")
            return




bfcheck:
            if (ftestt == "")
            {
addChatMessageEx(0x4285F4, MvdTitl "Проверка не осуществлена: {ff5c33}/blfind")
                return
            }
            else
            {
                dial := RegExReplace(ftestt,", ","`n")
                sleep, 300
                AntiCrash()
ShowDialog("0","" MvdTitl "Список","{ffffff}" dial,"Закрыть")
                AntiCrash()
                return
            }
return
 

Вложения

  • bl.txt
    504 байт · Просмотры: 8

Andy Safino

Участник
69
4
Код:
blfind:
            SendChat("/find")
            sleep, 600
            a := GetDialogText()
            a := RegExReplace(a, "[\s]+")
            RegExMatch(a, "Изнихонлайн:(.*)Напау",p)
            a1 := p1
            a2 := 2
            Result := 0
            filename := "bl.txt"
            ftestt := ""
            Loop, %a1%
            {
                a2 ++
                RegExMatch(getDialogLine(a2),"\[([0-9]*)\]",s)
                name := getPlayerNameById(s1)
                name2 := RegExReplace(name,"_"," ")
                FileEncoding, UTF-8
                test := 0
                Loop, Read, %filename%
                {
                    str := RegExReplace(A_LoopReadLine,"""")
                    dol := ",(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),"
                    RegExMatch(str,dol,p)
                   if (p2 == name || p2 == name2)
                    {
                        Result ++
                        test := 1
                        if (ftestt == "")
                        ftestt := name
                        else
                        ftestt := ", " name
                    }
                }
            }
addChatMessageEx(0x4285F4, MvdTitl "Результат проверки /find на ЧС: {ff5c33}" result " в ЧС МВД")
            sleep, 300
            if (result != 0)
addChatMessageEx(0x4285F4, MvdTitl "Для списка того кто в ЧС МВД введите /bfcheck")
            return




bfcheck:
            if (ftestt == "")
            {
addChatMessageEx(0x4285F4, MvdTitl "Проверка не осуществлена: {ff5c33}/blfind")
                return
            }
            else
            {
                dial := RegExReplace(ftestt,", ","`n")
                sleep, 300
                AntiCrash()
ShowDialog("0","" MvdTitl "Список","{ffffff}" dial,"Закрыть")
                AntiCrash()
                return
            }
return
ребзя, вот полный код, ничего не менял но при запуске у меня через 2-3 секунды скрипт автоматически выключается.
Код:
SetWorkingDir %A_ScriptDir%
#Include samp udf.ahk

blfind:
            SendChat("/find")
            sleep, 600
            a := GetDialogText()
            a := RegExReplace(a, "[\s]+")
            RegExMatch(a, "Изнихонлайн:(.*)Напау",p)
            a1 := p1
            a2 := 2
            Result := 0
            filename := "bl.txt"
            ftestt := ""
            Loop, %a1%
            {
                a2 ++
                RegExMatch(getDialogLine(a2),"\[([0-9]*)\]",s)
                name := getPlayerNameById(s1)
                name2 := RegExReplace(name,"_"," ")
                FileEncoding, UTF-8
                test := 0
                Loop, Read, %filename%
                {
                    str := RegExReplace(A_LoopReadLine,"""")
                    dol := ",(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),"
                    RegExMatch(str,dol,p)
                   if (p2 == name || p2 == name2)
                    {
                        Result ++
                        test := 1
                        if (ftestt == "")
                        ftestt := name
                        else
                        ftestt := ", " name
                    }
                }
            }
addChatMessageEx(0x4285F4, MvdTitl "Результат проверки /find на ЧС: {ff5c33}" result " в ЧС МВД")
            sleep, 300
            if (result != 0)
addChatMessageEx(0x4285F4, MvdTitl "Для списка того кто в ЧС МВД введите /bfcheck")
            return




bfcheck:
            if (ftestt == "")
            {
addChatMessageEx(0x4285F4, MvdTitl "Проверка не осуществлена: {ff5c33}/blfind")
                return
            }
            else
            {
                dial := RegExReplace(ftestt,", ","`n")
                sleep, 300
                AntiCrash()
ShowDialog("0","" MvdTitl "Список","{ffffff}" dial,"Закрыть")
                AntiCrash()
                return
            }
return
 

madrasso

Потрачен
883
324
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ребзя, вот полный код, ничего не менял но при запуске у меня через 2-3 секунды скрипт автоматически выключается.
Код:
SetWorkingDir %A_ScriptDir%
#Include samp udf.ahk

blfind:
            SendChat("/find")
            sleep, 600
            a := GetDialogText()
            a := RegExReplace(a, "[\s]+")
            RegExMatch(a, "Изнихонлайн:(.*)Напау",p)
            a1 := p1
            a2 := 2
            Result := 0
            filename := "bl.txt"
            ftestt := ""
            Loop, %a1%
            {
                a2 ++
                RegExMatch(getDialogLine(a2),"\[([0-9]*)\]",s)
                name := getPlayerNameById(s1)
                name2 := RegExReplace(name,"_"," ")
                FileEncoding, UTF-8
                test := 0
                Loop, Read, %filename%
                {
                    str := RegExReplace(A_LoopReadLine,"""")
                    dol := ",(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),"
                    RegExMatch(str,dol,p)
                   if (p2 == name || p2 == name2)
                    {
                        Result ++
                        test := 1
                        if (ftestt == "")
                        ftestt := name
                        else
                        ftestt := ", " name
                    }
                }
            }
addChatMessageEx(0x4285F4, MvdTitl "Результат проверки /find на ЧС: {ff5c33}" result " в ЧС МВД")
            sleep, 300
            if (result != 0)
addChatMessageEx(0x4285F4, MvdTitl "Для списка того кто в ЧС МВД введите /bfcheck")
            return




bfcheck:
            if (ftestt == "")
            {
addChatMessageEx(0x4285F4, MvdTitl "Проверка не осуществлена: {ff5c33}/blfind")
                return
            }
            else
            {
                dial := RegExReplace(ftestt,", ","`n")
                sleep, 300
                AntiCrash()
ShowDialog("0","" MvdTitl "Список","{ffffff}" dial,"Закрыть")
                AntiCrash()
                return
            }
return
#SingleInstance в начало, не будет выключаться..
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
#SingleInstance в начало, не будет выключаться..
Это для того что бы определить можно ли включать 2 копии скрипта и т.п.

ребзя, вот полный код, ничего не менял но при запуске у меня через 2-3 секунды скрипт автоматически выключается.
#Persistent
Это вообще вырезанный кусок кода как бы.