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

bh.cheat

Известный
13
0
Помогите , кто шарит. Значение getVehiclePointerById(pog) - возвращает указатель на транспорт по id игрока, как я понял. Проблема в том, что он указывает id ближайшего чела в машине (кто сидит ближе, на заднем сидении например.) Нужно, чтобы он указывал конкретно id того, кто за рулем. Помогите разобраться.

Код:
Numpad8::
SendMessage, 0x50,, 0x4190419,, A
pog:=getClosestPlayerIdCarNotCopFBI()
if(!checkHandles())
   return
dwAddr := getVehiclePointerById(pog)
fSpeedX := readMem(hGTA, dwAddr + ADDR_VEHICLE_X, 4, "float")
fSpeedY := readMem(hGTA, dwAddr + ADDR_VEHICLE_Y, 4, "float")
fSpeedZ := readMem(hGTA, dwAddr + ADDR_VEHICLE_Z, 4, "float")
fVehicleSpeed :=  sqrt((fSpeedX * fSpeedX) + (fSpeedY * fSpeedY) + (fSpeedZ * fSpeedZ))
fVehicleSpeed := (fVehicleSpeed * 100) * 1
fVehicleSpeed := Round(fVehicleSpeed)
if (fSpeedY==0)
   {
   if (fSpeedX>0)
      fVehicleAtan:="1.57"
   else if (fSpeedX>0)
      fVehicleAtan:="-1.57"
   else if (fSpeedX==0)
      {
      AddMessageToChatWindow("Преступник не в машине или стоит на месте")
      return
      }
   }
else
   {
   fVehicledelta := fSpeedY / fSpeedX
   fVehicleAtan:=ATan(fVehicledelta)
   }
if (fSpeedX>0)
   {
   if (fVehicleAtan<-1.1781)
      naprav:="юг"
   if (fVehicleAtan>-1.1781 and fVehicleAtan<-0.3927)
      naprav:="юго-восток"
   if (fVehicleAtan>-0.3927 and fVehicleAtan<0.3927)
      naprav:="восток"
   if (fVehicleAtan>0.3927 and fVehicleAtan<1.1781)
      naprav:="северо-восток"
   if (fVehicleAtan>1.1781)
      naprav:="север"
   }
if (fSpeedX<0)
   {
   if (fVehicleAtan<-1.1781)
      naprav:="север"
   if (fVehicleAtan>-1.1781 and fVehicleAtan<-0.3927)
      naprav:="северо-запад"
   if (fVehicleAtan>-0.3927 and fVehicleAtan<0.3927)
      naprav:="запад"
   if (fVehicleAtan>0.3927 and fVehicleAtan<1.1781)
      naprav:="юго-запад"
   if (fVehicleAtan>1.1781)
      naprav:="юг"
   }
fVehicleid := getTargetVehicleModelIdById(pog)
if (fVehicleid>400 && fVehicleid<611)
   fVehicleModel := ovehicleNamesImpad[fVehicleid-399]
else
   fVehicleModel:="Автомобиль"
kv:=getPlayerCity()
SendChat("/r Требуется перехват, " fVehicleModel " с номерами x" pog "yz, едет в " kv " на " naprav ".")
return
 

DeMoN3D

Известный
366
76
Здравствуйте, помогите с кодом, совершил где-то маленькую оплошность(ибо ничего в этом не понимаю) и не знаю, как исправить.
Задумка такая:
в чате появляется строка "текст-текст-текст /to [цифры]"
и по нажатию кнопки скрипт вводит команду с цифрами из строки "/to [цифры]"
Код:
#include SAMPDEV.ahk
#IfWinActive GTA:SA:MP

Loop {
    if (!active)
        Continue
    lastline := GetChatLine(0, Out)
    if (RegExMatch(lastline, ".* /to [\d+]", number)) {
        SendChat("/to " number)
    }
}
!5:: ; Активация/ Деактивация
active := !active
addChatMessageEx("FFFFFF", "Автоответчик " (active ? "включен":"выключен"))
Return
 
Последнее редактирование:

Extraktoris

Новичок
5
1
Всем привет. Я не очень шарю в ахк и мне нужна помощь.
Я хочу создать ахк, которое сразу после пейдея напишит команду /time.
Активировал ахк и оно само после пейдея напишет /time
Спасибо заранее.
 
  • Нравится
Реакции: Andy Safino

Tenkara

Потрачен
380
171
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
90f86739ac37.png
Мне жаль тебя. В удф добавь функцию
 

madrasso

Потрачен
883
324
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Здравствуйте, помогите с кодом, совершил где-то маленькую оплошность(ибо ничего в этом не понимаю) и не знаю, как исправить.
Задумка такая:
в чате появляется строка "текст-текст-текст /to [цифры]"
и по нажатию кнопки скрипт вводит команду с цифрами из строки "/to [цифры]"
Код:
#include SAMPDEV.ahk
#IfWinActive GTA:SA:MP

Loop {
    if (!active)
        Continue
    lastline := GetChatLine(0, Out)
    if (RegExMatch(lastline, ".* /to [\d+]", number)) {
        SendChat("/to " number)
    }
}
!5:: ; Активация/ Деактивация
active := !active
addChatMessageEx("FFFFFF", "Автоответчик " (active ? "включен":"выключен"))
Return
Во первых, регулярка с цифрами не "захватывается", это делается скобками ()
Во-вторых, number - это фулл строка, а тебе надо только цифры, в твоем случае будет number1 (1 - первое "захватывающиеся" выражение)
И третье, [] в твоем случае не нужно, ибо у тебя там одно выражение ищется (цифры), как-то так
AutoHotKey:
#include SAMPDEV.ahk
#IfWinActive GTA:SA:MP

Loop {
    if (!active)
        Continue
    lastline := GetChatLine(0, Out)
    if (RegExMatch(lastline, ".* /to (\d+)", number)) {
        SendChat("/to " number1)
    }
}
!5:: ; Активация/ Деактивация
active := !active
addChatMessageEx("FFFFFF", "Автоответчик " (active ? "включен":"выключен"))
Return
 
  • Нравится
Реакции: DeMoN3D

DeMoN3D

Известный
366
76
Во первых, регулярка с цифрами не "захватывается", это делается скобками ()
Во-вторых, number - это фулл строка, а тебе надо только цифры, в твоем случае будет number1 (1 - первое "захватывающиеся" выражение)
И третье, [] в твоем случае не нужно, ибо у тебя там одно выражение ищется (цифры), как-то так
AutoHotKey:
#include SAMPDEV.ahk
#IfWinActive GTA:SA:MP

Loop {
    if (!active)
        Continue
    lastline := GetChatLine(0, Out)
    if (RegExMatch(lastline, ".* /to (\d+)", number)) {
        SendChat("/to " number1)
    }
}
!5:: ; Активация/ Деактивация
active := !active
addChatMessageEx("FFFFFF", "Автоответчик " (active ? "включен":"выключен"))
Return
upload_2018-8-17_13-38-43.png

всё равно ничего не происходит
 

Extraktoris

Новичок
5
1
Всем привет. Я не очень шарю в ахк и мне нужна помощь.
Я хочу создать ахк, которое сразу после пейдея напишит команду /capture. Например в 14:00 напишет /capture.
Активировал ахк и оно само после пейдея напишет /capture
Я по ошибке написал /time в прошлом сообщении.
Спасибо заранее
 

DeMoN3D

Известный
366
76
Всем привет. Я не очень шарю в ахк и мне нужна помощь.
Я хочу создать ахк, которое сразу после пейдея напишит команду /capture. Например в 14:00 напишет /capture.
Активировал ахк и оно само после пейдея напишет /capture
Я по ошибке написал /time в прошлом сообщении.
Спасибо заранее
AutoHotKey:
#include SAMPDEV.ahk
#IfWinActive GTA:SA:MP

Loop {
    if (!active)
        Continue
way = %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt ; Путь к ЧатЛогу

FileDelete, %way%  ; Удаляем ЧатЛог
Loop
{
FileRead, file, %way%  ; Читаем ЧатЛог
IfInString, file, банковский чек ; Ищем в ЧатЛоге фразу
{
Sleep 1500 ; Задержка
sendChat("/capture")
FileDelete, %way%  ; Удаляем ЧатЛог
}
}
return
}
!5:: ; Активация/ Деактивация
active := !active
addChatMessageEx("FFFFFF", "Автоответчик " (active ? "включен":"выключен"))
Return
я не профессионал, но у меня такое работает. Нужный текст меняй на свой
 

Revalto

Известный
532
225
А как прописать путь что бы он работал на любом пк
К примеру %A_ScriptDir%\Settings.txt
выебнуться захотел?
в if ошибки нету, ахк и так нормально воспринимает это. Про ранг да, затупил, точнее невнимателен был.
Причем тут выебон, если ты допускаешь ошибку, переменной rang ты фулл строку выводишь. Как можно писать код через жопу?

AutoHotKey:
#include SAMPDEV.ahk
#IfWinActive GTA:SA:MP

Loop {
    if (!active)
        Continue
way = %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt ; Путь к ЧатЛогу

FileDelete, %way%  ; Удаляем ЧатЛог
Loop
{
FileRead, file, %way%  ; Читаем ЧатЛог
IfInString, file, банковский чек ; Ищем в ЧатЛоге фразу
{
Sleep 1500 ; Задержка
sendChat("/capture")
FileDelete, %way%  ; Удаляем ЧатЛог
}
}
return
}
!5:: ; Активация/ Деактивация
active := !active
addChatMessageEx("FFFFFF", "Автоответчик " (active ? "включен":"выключен"))
Return
я не профессионал, но у меня такое работает. Нужный текст меняй на свой
Не намекаю, но советую лучше использовать такой чек:
Код:
global file_chat := A_MyDocuments "/GTA San Andreas User Files/SAMP/chatlog.txt"
SetTimer, Chat, 50

Chat() {
FileRead, chatlog, % file_chat

if (RegExMatch(chatlog, "Текст поиска", chattext))
{
    save(chatlog)
    addChatMessage(chattext1)
}
}
Return

Причины: Будет побыстрее, да и есть шансы остановить цикл, если это надо.

Окей, да работает, но после отказа он выключается полностью, а нужно если ты отказался и если через некоторое время пополнил ХП до 100 и у тебя опять же меньше чем 40 хп, скрипт опять работал, думаю ясно пояснил...
Ну вы в начале просили, полное отключение скрипта после отказа, я сделал отключение скрипта. То что вы сейчас хотите, я не совсем понял...
 

DeMoN3D

Известный
366
76
К примеру %A_ScriptDir%\Settings.txt

Причем тут выебон, если ты допускаешь ошибку, переменной rang ты фулл строку выводишь. Как можно писать код через жопу?


Не намекаю, но советую лучше использовать такой чек:
Код:
global file_chat := A_MyDocuments "/GTA San Andreas User Files/SAMP/chatlog.txt"
SetTimer, Chat, 50

Chat() {
FileRead, chatlog, % file_chat

if (RegExMatch(chatlog, "Текст поиска", chattext))
{
    save(chatlog)
    addChatMessage(chattext1)
}
}
Return

Причины: Будет побыстрее, да и есть шансы остановить цикл, если это надо.


Ну вы в начале просили, полное отключение скрипта после отказа, я сделал отключение скрипта. То что вы сейчас хотите, я не совсем понял...
upload_2018-8-17_15-46-31.png
 

Andreykas1421

Новичок
47
0
К примеру %A_ScriptDir%\Settings.txt

Причем тут выебон, если ты допускаешь ошибку, переменной rang ты фулл строку выводишь. Как можно писать код через жопу?


Не намекаю, но советую лучше использовать такой чек:
Код:
global file_chat := A_MyDocuments "/GTA San Andreas User Files/SAMP/chatlog.txt"
SetTimer, Chat, 50

Chat() {
FileRead, chatlog, % file_chat

if (RegExMatch(chatlog, "Текст поиска", chattext))
{
    save(chatlog)
    addChatMessage(chattext1)
}
}
Return

Причины: Будет побыстрее, да и есть шансы остановить цикл, если это надо.


Ну вы в начале просили, полное отключение скрипта после отказа, я сделал отключение скрипта. То что вы сейчас хотите, я не совсем понял...
Что бы после отказа он можно так сказать "засыпал" и если тебе нанесут опять же урон, и он будет меньше чем заданное число, он тебе предлагал опять вылечится, если же ты опять отказался, он опять "засыпает" и после нанесения урона тебе опять же идёт сообщение о лечении.
 

bh.cheat

Известный
13
0
Есть функция , чтобы выводился id водителя ближайшего к тебе автомобиля в чат?
 

chixiro

Новичок
13
0
Не так давно просил о помощи не переключался язык, справился. теперь проблема в другом, когда пишу например *antistan* язык автоматически переключается на русский, и получаю *anешыефn*, кто разбирается - помогите)
КОД СКРИПTА:
vk66::
SendMessage, 0x50,, 0x4190419,, A
SendInput,n
return
vk61::
SendMessage, 0x50,, 0x4190419,, A
SendInput,т
return
vk62::
SendMessage, 0x50,, 0x4190419,, A
SendInput,ь
return
vk63::
SendMessage, 0x50,, 0x4190419,, A
SendInput,б
return
vk64::
SendMessage, 0x50,, 0x4190419,, A
SendInput,ю
return
vk65::
SendMessage, 0x50,, 0x4190419,, A
SendInput,m
return
vk6a::
SendMessage, 0x50,, 0x4190419,, A
SendInput,.
return
vkdc::
SendMessage, 0x50,, 0x4190419,, A
SendInput,,
return
!vka0::
SendInput, {Shift down}{LAlt down}
SendInput, {Shift up}{LAlt up}
return
 

Revalto

Известный
532
225
Что бы после отказа он можно так сказать "засыпал" и если тебе нанесут опять же урон, и он будет меньше чем заданное число, он тебе предлагал опять вылечится, если же ты опять отказался, он опять "засыпает" и после нанесения урона тебе опять же идёт сообщение о лечении.
Сделай задержку на Timer, после отказа опять включи таймер и все
Есть функция , чтобы выводился id водителя ближайшего к тебе автомобиля в чат?
Вроде есть, где то видел
Не так давно просил о помощи не переключался язык, справился. теперь проблема в другом, когда пишу например *antistan* язык автоматически переключается на русский, и получаю *anешыефn*, кто разбирается - помогите)
КОД СКРИПTА:
vk66::
SendMessage, 0x50,, 0x4190419,, A
SendInput,n
return
vk61::
SendMessage, 0x50,, 0x4190419,, A
SendInput,т
return
vk62::
SendMessage, 0x50,, 0x4190419,, A
SendInput,ь
return
vk63::
SendMessage, 0x50,, 0x4190419,, A
SendInput,б
return
vk64::
SendMessage, 0x50,, 0x4190419,, A
SendInput,ю
return
vk65::
SendMessage, 0x50,, 0x4190419,, A
SendInput,m
return
vk6a::
SendMessage, 0x50,, 0x4190419,, A
SendInput,.
return
vkdc::
SendMessage, 0x50,, 0x4190419,, A
SendInput,,
return
!vka0::
SendInput, {Shift down}{LAlt down}
SendInput, {Shift up}{LAlt up}
return
Не легче просто использовать SendChat("") ? Тогда язык даже переключать не прийдется)
А так я не понял твоего вопроса...