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

Widness

Новичок
25
4
Проблема в следующем, пишу бота для водителя трамвая на Arizona rp. Проблема в расчете остановочного пути. Нашел и подогнал формулу, вроде подходит ((speed/10)*(speed/10)+5.3). Проблема в том, что если остановка находиться сразу за поворотом, он не доезжает до нее. AHK уже умеет останавливаться по кнопке, разгонятся и поддерживать скорость по кнопке, по кнопке рассчитывать тормозной путь и в случае чего останавливаться. Пока это мало похоже на готового бота, я пока тестирую отдельно функции.

Какие пути решение проблемы есть?


Num1 - разгон и поддержка скорости
Num2 - остановка
Num4 - расчет тормозного пути и остановка.

Код:
AutoHotKey:
#include UDF.ahk
global go := false

while(true)
{
    while(getVehicleSpeed()<60)
    {
        if(global go)
        {  
            speed:=getVehicleSpeed()
            SendInput, {w down}
        }
    }
    if(global go)
    {  
        SendInput, {w up}
    }
}

numpad1::
global go := true
return

numpad2::
coord:=getCoordinates()
addChatMessage("x: " coord[1] " y: " coord[2] " z: " coord[3])
SendInput, {w up}
while(getVehicleSpeed()>0.37)
{
    speed:=getVehicleSpeed()
    SendInput, {s down}
}
SendInput, {s up}
global go := false
return


numpad3::ExitApp

numpad4::
s:=getDist(getCoordinates(), CoordsFromRedmarker())
speed:=getVehicleSpeed()
tormoz:=(speed/10)*(speed/10)+5.3
if((s-tormoz)<0){
    coord:=getCoordinates()
    addChatMessage("x: " coord[1] " y: " coord[2] " z: " coord[3])
    addChatMessage("{E28C1B}Тормози!!")
    SendInput, {w up}
    while(getVehicleSpeed()>0.37)
    {
        speed:=getVehicleSpeed()
        SendInput, {s down}
    }
    SendInput, {s up}
    global go := false
    return
}
addChatMessage("Полный путь: " s)
addChatMessage("Тормозной путь: " tormoz)
addChatMessage("Скорость: " speed)
return
 
  • Вау
Реакции: NOOBPAndA
Проблема в следующем, пишу бота для водителя трамвая на Arizona rp. Проблема в расчете остановочного пути. Нашел и подогнал формулу, вроде подходит ((speed/10)*(speed/10)+5.3). Проблема в том, что если остановка находиться сразу за поворотом, он не доезжает до нее. AHK уже умеет останавливаться по кнопке, разгонятся и поддерживать скорость по кнопке, по кнопке рассчитывать тормозной путь и в случае чего останавливаться. Пока это мало похоже на готового бота, я пока тестирую отдельно функции.

Какие пути решение проблемы есть?


Num1 - разгон и поддержка скорости
Num2 - остановка
Num4 - расчет тормозного пути и остановка.

Код:
AutoHotKey:
#include UDF.ahk
global go := false

while(true)
{
    while(getVehicleSpeed()<60)
    {
        if(global go)
        { 
            speed:=getVehicleSpeed()
            SendInput, {w down}
        }
    }
    if(global go)
    { 
        SendInput, {w up}
    }
}

numpad1::
global go := true
return

numpad2::
coord:=getCoordinates()
addChatMessage("x: " coord[1] " y: " coord[2] " z: " coord[3])
SendInput, {w up}
while(getVehicleSpeed()>0.37)
{
    speed:=getVehicleSpeed()
    SendInput, {s down}
}
SendInput, {s up}
global go := false
return


numpad3::ExitApp

numpad4::
s:=getDist(getCoordinates(), CoordsFromRedmarker())
speed:=getVehicleSpeed()
tormoz:=(speed/10)*(speed/10)+5.3
if((s-tormoz)<0){
    coord:=getCoordinates()
    addChatMessage("x: " coord[1] " y: " coord[2] " z: " coord[3])
    addChatMessage("{E28C1B}Тормози!!")
    SendInput, {w up}
    while(getVehicleSpeed()>0.37)
    {
        speed:=getVehicleSpeed()
        SendInput, {s down}
    }
    SendInput, {s up}
    global go := false
    return
}
addChatMessage("Полный путь: " s)
addChatMessage("Тормозной путь: " tormoz)
addChatMessage("Скорость: " speed)
return
if(global go) это как так получилось)
 
  • Нравится
Реакции: CaJlaT

NOOBPAndA

Участник
101
12
А как вывести какую либо инфу с окошка /stats или /find на ДРП, через rexExMath? Но как?
 
Последнее редактирование:

degrando

Известный
362
127
  • Нравится
Реакции: NOOBPAndA

NOOBPAndA

Участник
101
12
Кинь инфу с окошка

Кинь инфу с окошка
/stats
45626

/find
45628
 

NOOBPAndA

Участник
101
12
Блять
f2::
if isDialogOpen() = 1 {
open := getDialogText()
msgbox, %open%
}
else {
msgox открой диалог бля
}
return
Хотел вывести из /stats свой лвл, но почему то выводится дата, что не так?

---------------------------
AutoHotkey Script (4).ahk
---------------------------
{FFFFFF}Номер аккаунта: {0099ff}777777
{FFFFFF}Имя: {0099ff}Tony_Barrera
{FFFFFF}Уровень: {0099ff}7
{FFFFFF}Очки опыта: {0099ff}15 из {0099ff}18
{FFFFFF}Предупреждений: {0099ff}0

{FFFFFF}Номер телефона: {0099ff}777777
{FFFFFF}На счету телефона: {0099ff}0

{FFFFFF}Законопослушность: {0099ff}17
{FFFFFF}Уровень розыска: {0099ff}0
{FFFFFF}Купоны рулетки: {0099ff}0
{FFFFFF}Бриллианты: {0099ff}0
{FFFFFF}Фишки Four Dragons: {0099ff}0
{FFFFFF}Фишки Royale: {0099ff}0
{FFFFFF}Семейные очки: {0099ff}0

{FFFFFF}Пол: {0099ff}Мужской
{FFFFFF}Возраст: {0099ff}22
{FFFFFF}Муж/Жена: {0099ff}Отсутствует
{FFFFFF}Национальность: {0099ff}Русский

{FFFFFF}Организация: {0099ff}Отсутствует
{FFFFFF}Работа/Должность: {0099ff}Водитель автобуса
{FFFFFF}Ранг: {0099ff}0
{FFFFFF}Выговоров: {0099ff}0

{FFFFFF}Дома: {0099ff}Отсутствуют
{FFFFFF}Бизнесы: {0099ff}Отсутствуют
{FFFFFF}Отель: {0099ff}Отсутствует

{FFFFFF}Время: {0099ff}19:35:24
{FFFFFF}Дата: {0099ff}15.12.2019

---------------------------
ОК
---------------------------
Вот код

AutoHotKey:
!1::
dlog := getDialogText()
if RegExMatch(dlog,"\{\w\w\w\w\w\w\}*Уровень:.*\{\w\w\w\w\w\w\}(.*)",qq) and if isDialogOpen() = 1
{
 AddChatMessage("LVL "qq1)   
}else{
 AddChatMessage("Not Found")   
}
 

CaJlaT

Овощ
Модератор
2,806
2,604
Хотел вывести из /stats свой лвл, но почему то выводится дата, что не так?

---------------------------
AutoHotkey Script (4).ahk
---------------------------
{FFFFFF}Номер аккаунта: {0099ff}777777
{FFFFFF}Имя: {0099ff}Tony_Barrera
{FFFFFF}Уровень: {0099ff}7
{FFFFFF}Очки опыта: {0099ff}15 из {0099ff}18
{FFFFFF}Предупреждений: {0099ff}0

{FFFFFF}Номер телефона: {0099ff}777777
{FFFFFF}На счету телефона: {0099ff}0

{FFFFFF}Законопослушность: {0099ff}17
{FFFFFF}Уровень розыска: {0099ff}0
{FFFFFF}Купоны рулетки: {0099ff}0
{FFFFFF}Бриллианты: {0099ff}0
{FFFFFF}Фишки Four Dragons: {0099ff}0
{FFFFFF}Фишки Royale: {0099ff}0
{FFFFFF}Семейные очки: {0099ff}0

{FFFFFF}Пол: {0099ff}Мужской
{FFFFFF}Возраст: {0099ff}22
{FFFFFF}Муж/Жена: {0099ff}Отсутствует
{FFFFFF}Национальность: {0099ff}Русский

{FFFFFF}Организация: {0099ff}Отсутствует
{FFFFFF}Работа/Должность: {0099ff}Водитель автобуса
{FFFFFF}Ранг: {0099ff}0
{FFFFFF}Выговоров: {0099ff}0

{FFFFFF}Дома: {0099ff}Отсутствуют
{FFFFFF}Бизнесы: {0099ff}Отсутствуют
{FFFFFF}Отель: {0099ff}Отсутствует

{FFFFFF}Время: {0099ff}19:35:24
{FFFFFF}Дата: {0099ff}15.12.2019

---------------------------
ОК
---------------------------
Вот код

AutoHotKey:
!1::
dlog := getDialogText()
if RegExMatch(dlog,"\{\w\w\w\w\w\w\}*Уровень:.*\{\w\w\w\w\w\w\}(.*)",qq) and if isDialogOpen() = 1
{
AddChatMessage("LVL "qq1) 
}else{
AddChatMessage("Not Found") 
}
вот пример с диалога на гранде (они похожи)

AutoHotKey:
t := strsplit(getDialogText(), "`n")
RegExMatch(t[1], ".*\}(.*)", m), MyName := m1

MyName := RegExReplace(MyName, "_", " ")

addChatMessageEx("{800080}", "[СМИ GRP]: {66CDAA}Данные получены.")
addChatMessageEx("{800080}", "[СМИ GRP]: {66CDAA}Ник: " MyName "")
в данном случае переменная t означает номер строки диалога
 
  • Нравится
Реакции: NOOBPAndA

NHacker1271

Известный
156
16
Привет, не могу реализовать проверку на нажатие клавиши.
Если я нажимаю 1, а затем 2, то всё работает.
Но когда нажимаю 2, а затем 1, то не работает.
AddChatMessage("1 или 2?")
KeyWait, 1, d
AddChatMessage("Вы нажали 1")
KeyWait, 2, d
AddChatMessage("Вы нажали 2")
 

Randewoo

Потрачен
110
33
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет, не могу реализовать проверку на нажатие клавиши.
Если я нажимаю 1, а затем 2, то всё работает.
Но когда нажимаю 2, а затем 1, то не работает.
AddChatMessage("1 или 2?")
KeyWait, 1, d
AddChatMessage("Вы нажали 1")
KeyWait, 2, d
AddChatMessage("Вы нажали 2")
Потому что это надо указывать в хоткеях, а не в по очередных кейваитах
 

NHacker1271

Известный
156
16
Потому что это надо указывать в хоткеях, а не в по очередных кейваитах
Покажи как надо.
Неужели так..
AutoHotKey:
AddChatMessage("Нажмите Y либо N")
s := 1
~Y::
if (s == 1) {
    AddChatMessage("Вы нажали Y")
    s := 0
}
~N::
if (s == 1) {
    AddChatMessage("Вы нажали N")
    s := 0
}
 

Randewoo

Потрачен
110
33
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Покажи как надо.
Неужели так..
AutoHotKey:
AddChatMessage("Нажмите Y либо N")
s := 1
~Y::
if (s == 1) {
    AddChatMessage("Вы нажали Y")
    s := 0
}
~N::
if (s == 1) {
    AddChatMessage("Вы нажали N")
    s := 0
}
Да. это самый логичный способ.
 

kovshik

Известный
109
60
Подскажите, я написал бот который зацикливает использование удочки для рыбалки. Но мне нужно чтобы бы после цикла скрипт не повторялся, а ждал пока появится пиксель определённого цвета , затем шёл клик левой кнопки до того момента пока пиксель определённого цвета не появится в другом месте, а потом все повторялось снова
рыбалка:
F5:: Pause, ON
F4::
    Loop
{
    BlockInput, SendAndMouse
        SendInput, {sc17}
        sleep, 100
        Click Left 550,394 ,
        sleep, 100
        Click Left 550, 520,
    BlockInput, Default
}
return