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

TopMo3

Участник
121
7
Вот ещё один вопрос, как сделать, например такую ситуацию.
Вот у меня бинде написаноЖ
- Здравствуйте, вы не желаете взять листовку.
И потом остальной бинд.
Ну я хочу сделать так.

Когда например я напишу /list
Потом пишется:
- Здравствуйте, вы не желаете взять листовку.
И пишет, если человек хочет взять листовку, нажмите F12.
Если не хочет, нажмите F11.
Когда нажал F12
Пишет
/me достал листовку
/me передал листовку
/do На листовке написано: Слушайте радио-станцию SF | FM.
А если нажал на F11
Тогда пишет
- Вы многое теряете! Потом будете желеть!
 

TopMo3

Участник
121
7
Код:
loop
{
Input , OutputVar, L1 V, {F11}{F12}
    if (ErrorLevel = "EndKey:F11") or (ErrorLevel = "EndKey:F12")
    break
}
if ErrorLevel = EndKey:F11
{
; code
}
else
if ErrorLevel = EndKey:F12
{
; code
}
return
Вроде так, не проверял, но должно пахать
Да работает, а можно сделать, чтобы скрипт писал в чат, чтобы нажать F11 или F12
 

Phoenixxx_CZAR

Известный
61
31
Быдло код какой-то у вас.

AutoHotKey:
Loop
{
    GetChatLine(0, out) ; Получение последней строки из чатлога.
    If out contains Ты тут,Вы тут,Вы здесь,Ты здесь,вы здесь,ты здесь,ты тут,вы тут    ; Список вопросов от администрации.
    {
        Random, var, 1, 5 ; Рандом список ответов.
        If (var == 1) {
            SendChat("Да, я тут, просто занят чуть чуть.")
        } else if (var == 2) {
            SendChat("Да.")
        } else if (var == 3) {
            SendChat("Да, я тут.")
        } else if (var == 4) {
            SendChat("Что?")
        } else if (var == 5) {
            SendChat("Что надо?")
        }
    }
}
А у тебя не быдло код? :D
 

Phoenixxx_CZAR

Известный
61
31
Неа, но этот код не работает :D
В ВК с ним поговорил.
Есть такая хуйня которая делает текст в нижний регистр, так меньше проверок на слова будет.
Так же это бредово выглядит:
AutoHotKey:
Random, var, 1, 5 ; Рандом список ответов.
If (var == 1)
{
    SendChat("Да, я тут, просто занят чуть чуть.")
}
else if (var == 2)
{
    SendChat("Да.")
}
else if (var == 3)
{
    SendChat("Да, я тут.")
}
else if (var == 4)
{
    SendChat("Что?")
}
else if (var == 5)
{
    SendChat("Что надо?")
}
Можно сделать функу которая будет выбирать рандомное значение из массива.
Например вот:
AutoHotKey:
RandomMessage(array)
{
    if (IsObject(array))
    {
        Random, random, 1, % array.MaxIndex()
        Return array[random]
    }
    Return array
}
И юзать ее так:
AutoHotKey:
SendChat(RandomMessage(["Сообщение 1", "Сообщение 2"]))
 

Phoenixxx_CZAR

Известный
61
31
Надеюсь что последний вопрос.
Код:
#Persistent
#IfWinActive GTA:SA:MP
#Include SAMP.ahk


while true
{
    Filedelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    Fileappend, , %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    loop
    {
    label:
    Loop, Read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
        {  
            IfInString, A_LoopReadLine, БАНКОВСКИЙ ЧЕК
            {
            goto, label1
            }
            else IfInString, A_LoopReadLine, Server closed the connection
            {
            goto, label2
            }
            else IfInString, A_LoopReadLine, Добро пожаловать на Advance RolePlay
            {
            goto, label3
            }
            else IfInString, A_LoopReadLine, Сервер возобновит работу в течение минуты
            {
            goto, label4
            }
        }
      
    WinMaximize, GTA:SA:MP
  
    SetTimer, CheckPayDay1, 1000
    return

    CheckPayDay1:
    if (A_Min == 59 && A_Sec == 40 || A_Min == 29 && A_Sec == 01 || A_Min == 31 && A_Sec == 01)
        {
            WinMaximize GTA:SA:MP
            SendInput {F6}/afk
        }

    goto, label
    label1:
    Filedelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    Fileappend, , %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
        {
        WinMaximize GTA:SA:MP
        sleep 100
        Send {vk57 down}
        sleep 500
        Send {vk57 up}
        Sendinput {F6}/afk{Enter}
        }
  
    goto, label
    label2:
    Filedelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    Fileappend, , %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
        {
            WinMaximize GTA:SA:MP
            sleep 100
            SendInput, {f6}/recon 15{Enter}
            sleep 1000
        }
  
    goto, label
    label3:
    Filedelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    Fileappend, , %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    Sleep 3000
    Loop, Read, file.txt
        {
            WinMaximize GTA:SA:MP
            sleep 100
            Sendinput %A_LoopReadLine%{Enter}
            sleep 2000
            Send {vk57 down}
            sleep 500
            Send {vk57 up}
            Sendinput {F6}/afk{Enter}
        }
  
    goto, label
    label4:
    Filedelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    Fileappend, , %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
        {
            WinMinimize GTA:SA:MP
            sleep 100
            SendInput {F6}/recon 180{Enter}
            sleep 16000
        }
    }
}  

return

F2:: WinMinimize GTA:SA:MP
F12:: Pause
End:: Reload
Home:: ExitApp

Есть такой код, предназначен типо для анти афк. Но прикол в том что долго в афк стоять нельзя, примерно раз в пол часа он должен совершать какое либо действие. и уходить в афк. А в 59 минут 40 секунд он должен выходить из афк и ждать сообщения БАНКОВСКИЙ ЧЕК после чего сразу же уходить в афк. Но у меня проблемка есть, сворачивается игра по непонятным причинам и из-за этого есть команда "WinMinimize GTA:SA:MP". И не работает 2 таймер в скрипте. Так вот, можно это реализовать проще и понадежней ??? (Команды /recon 15-180 и /afk это команды Cleo и SAMPFUNCS скриптов)


А, и как сделать задержку перед ответом в 1-2 секунды ???
Я тебе на сером форуме уже отвечал.
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Есть такая хуйня которая делает текст в нижний регистр, так меньше проверок на слова будет.
Так же это бредово выглядит:
AutoHotKey:
Random, var, 1, 5 ; Рандом список ответов.
If (var == 1)
{
    SendChat("Да, я тут, просто занят чуть чуть.")
}
else if (var == 2)
{
    SendChat("Да.")
}
else if (var == 3)
{
    SendChat("Да, я тут.")
}
else if (var == 4)
{
    SendChat("Что?")
}
else if (var == 5)
{
    SendChat("Что надо?")
}
Можно сделать функу которая будет выбирать рандомное значение из массива.
Например вот:
AutoHotKey:
RandomMessage(array)
{
    if (IsObject(array))
    {
        Random, random, 1, % array.MaxIndex()
        Return array[random]
    }
    Return array
}
И юзать ее так:
AutoHotKey:
SendChat(RandomMessage(["Сообщение 1", "Сообщение 2"]))
Пилить целую функцию, когда она используется только 1 раз не привык.
 

_DeAs_

Новичок
27
1
Подскажите пожалуйста, как сделать запоминание числа, которое я написал раннее в чат запомнилось?
Например ранее написал /ans 21 Слежу
И при написании ban ID на которого пожаловались и причина шел автоматом ответ 21 ID, что кого я забанил - наказан
 

LelKek

Известный
5
0
Как сделать так чтобы в GUI сохранялись хоткеи которые я нажал (после перезапуска AHK), в ахк - нолик
Навсякий случай, вот как выглядит GUI
 

Вложения

  • code.txt
    1.3 KB · Просмотры: 12
  • gui.png
    gui.png
    18.5 KB · Просмотры: 366

#Rin

Известный
Всефорумный модератор
1,214
1,036
Подскажите пожалуйста, как сделать запоминание числа, которое я написал раннее в чат запомнилось?
Например ранее написал /ans 21 Слежу
И при написании ban ID на которого пожаловались и причина шел автоматом ответ 21 ID, что кого я забанил - наказан
А запоминать ID того на кого пожаловались как будем?
Игроки же не отвечают по какому-либо шаблону.

Есть у меня в голова кое какая реализация, но геморойная конечно она.
 

LelKek

Известный
5
0

Cod

Участник
117
15
Если вдумываться, то главным там являются Ini операции, короче, вписал я настройки, и нихуя!
Lua:
IniRead, Line, value.ini, Basic, Line ; Загрузка настроек из ini файла.

Gui, Add, Edit, x32 y30 w220 h20 vLine, %Line% ; Создаём переменную для сохранения.
Gui, Add, Button, x32 y80 w120 h40 gSaveConfig, Сохранить
Gui, Add, Button, x162 y80 w120 h40 gApplyConfig, Применить
Gui, Add, Button, x292 y80 w120 h40 gGuiClose, Выход
Gui, Show, w422 h130, Заголовок
return

GuiClose:
ExitApp

SaveConfig:
{
    Gui, Submit, NoHide
    IniWrite, %Line%, value.ini, Basic, Line  ; Указываем, переиенную которую нужно сохранить, название файла с настройками(какой хотите), название селекции в которой будут пункты, название пункта
}
Return



ApplyConfig: ; Нужно только если нужно сохранять бинды (HotKey)
Return