Криво работающая функция

Статус
В этой теме нельзя размещать новые ответы.

Smer4

Известный
Автор темы
425
51
Есть такая, ну, не функция но код помощника в ловле еду в тюряге на ARZ RP
C++:
Power:
{
#UseHook, on
    if isDialogOpen()
    {
        addchatMessage("Закройте диалог!")
        return
    }
    Loop{
        SendInput, {LAlt down}
        Sleep, 1
        SendInput, {LAlt up}
        if i = 1
            Max := getDialogLineCount()
        String := getDialogLine(i)
        IfInString, String, Готовое
        {
            Sleep, 100 ; для прогрузки диалога
            setDialogIndex( i)
            SendInput, {Enter}
            i = 1
            max = 1
            break
        }
        if GetKeyState("numpad2","P")
        {
            addChatMessage("Вы вручную завершили работу скрипта.")
            break
        }
        if i = %Max%
        {
            i = 1
            string = -1
            SendInput, {Esc}
        }
        i++
    }
}
И почему то он работает чётко через раз!, объясните мне пж, а я в bugFix вам благодарочку напишу)
 

Smer4

Известный
Автор темы
425
51
Неплохо бы тексты возможных диалогов приложить, с которыми ведется работа. И для кода использовать теги [ code = Autohotkey ][ / code ]
Работа идет не с текстдравами, а с диалогами.

До готовности мяса в печи такой диалог.
sa-mp-041.png


А после готовности такой
sa-mp-042.png


Неплохо бы тексты возможных диалогов приложить, с которыми ведется работа. И для кода использовать bb [ code = Autohotkey ][ / code ]
Что за теги понятия не имею, просвети если не лень.
 
Последнее редактирование:

index

Известный
125
82
AutoHotKey:
; Открываем диалог, если не открыт
; если не открыт - также делаем:
while(!isInDialog())
    continue
for k, v in StrSplit(GetDialogText(), "`r`n")
    if(InStr(v, "Готовое"))
    {
        setDialogIndex(k)
        SendInput, {Enter}
        break
    }
; Если надо - закрываем диалог

Если нужно, чтобы все это постоянно повторялось - запихни в цикл или в таймер.
 
  • Нравится
Реакции: Smer4

Smer4

Известный
Автор темы
425
51
Решил проблему, зачем то переписав функцию, но не суть, вся проблема была в том что скрипт пытался прочитать несуществующий диалог, проверка на открытый диалог все решила.
code -
C++:
Power:
{
    Max := getDialogLineCount()
    i = 1
    #UseHook, on
    if isDialogOpen()
    {
        addchatMessage("Закройте диалог!")
       return
    }
   Loop{
    start:
    SendInput, {LAlt down}
    Sleep,1
    SendInput, {LAlt up}
    if isDialogOpen()
    {
    string := getDialogLine(i)
    IfInString, string, Готовое
    {
        sleep, 100
        setDialogIndex(i)
        SendInput, {Enter}
        i = 1
        addchatmessage("Найдено "string)
        break
    }
    addchatmessage(string)
    if GetKeyState("NUMPAD2","P"){
    addChatMessage("Вы вручную завершили работу скрипта.")
    break
    }
    if i = %max%
    {
        i = 0
        SendInput, {Esc}
    }
    i++
}
goto, start
}
}
return

AutoHotKey:
; Открываем диалог, если не открыт
; если не открыт - также делаем:
while(!isInDialog())
    continue
for k, v in StrSplit(GetDialogText(), "`r`n")
    if(InStr(v, "Готовое"))
    {
        setDialogIndex(k)
        SendInput, {Enter}
        break
    }
; Если надо - закрываем диалог

Если нужно, чтобы все это постоянно повторялось - запихни в цикл или в таймер.
Хех не чекнул твоё сообщение, сам додумался, но спасибо.
 
Статус
В этой теме нельзя размещать новые ответы.