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

#Rin

Известный
Всефорумный модератор
1,214
1,036
так ты выше процитировал, там было написано это :

и в samp udf я видел эту штуку,как понял она нужна для определения id,или я ошибаюсь? Я в этом всём полный дуб,только вчера начал изучать АХК по видео
Потому что UDF не подключен - ошибки.
Зачем учишь сразу с UDF, AHK не был создан только для GTA, следовательно нужно выучить его без гта, а поле подключать UDF.

Спасибо конечно, но оно не анализирует.Пашет только если нажать когда уже сдох
Не много ли хочешь?
Самому нужно писать алгоритм определения хп в таймере/потоке/цикле и вести график.

Если ты даже в коде не прочел, что он выводить сообщение только при хп = 0, вряд ли сделаешь это.
Если тебе не нужен анализатор, частоты уменьшения хп, то тупо делаешь в if меньше 30 и равно или больше 0.
 
  • Нравится
Реакции: Vlad Horii

Cesar Ballard

Участник
81
5
Потому что UDF не подключен - ошибки.
Зачем учишь сразу с UDF, AHK не был создан только для GTA, следовательно нужно выучить его без гта, а поле подключать UDF.


Не много ли хочешь?
Самому нужно писать алгоритм определения хп в таймере/потоке/цикле и вести график.

Если ты даже в коде не прочел, что он выводить сообщение только при хп = 0, вряд ли сделаешь это.
Если тебе не нужен анализатор, частоты уменьшения хп, то тупо делаешь в if меньше 30 и равно или больше 0.


Код:
Loop
{
    hp:=getPlayerHealth()
    GetChatLine(0, string)
  
    if hp < 5
    {
  if hp > 0
  {
   if key = 1
   {
    SendChat("/hide m4")
    sleep, 120
    SendChat("/hide deagle")
    key:=0
   }
  }
    }
}

NumpadAdd::
if key = 0
{
    key:=1
    ;ShowGameText("ON", 100, 3)
    SoundBeep
}

else if key = 1
{
    key:=0
    ;ShowGameText("OFF", 100, 3)
}

return

Вроде бы ж в цикле должно пахать, но нихера
 

Vlad Horii

Известный
Проверенный
310
171
Код:
Loop
{
    hp:=getPlayerHealth()
    GetChatLine(0, string)
 
    if hp < 5
    {
  if hp > 0
  {
   if key = 1
   {
    SendChat("/hide m4")
    sleep, 120
    SendChat("/hide deagle")
    key:=0
   }
  }
    }
}

NumpadAdd::
if key = 0
{
    key:=1
    ;ShowGameText("ON", 100, 3)
    SoundBeep
}

else if key = 1
{
    key:=0
    ;ShowGameText("OFF", 100, 3)
}

return

Вроде бы ж в цикле должно пахать, но нихера
присвоить :=
Сравнить ==
if key == 1
 
  • Нравится
Реакции: Cesar Ballard

#Rin

Известный
Всефорумный модератор
1,214
1,036
Код:
NumpadAdd::
if key = 0
{
    key:=1
    ;ShowGameText("ON", 100, 3)
    SoundBeep
}

else if key = 1
{
    key:=0
    ;ShowGameText("OFF", 100, 3)
}

return
Это как минимум в 2 раза уменьшить можно.
Код:
    if hp < 5
    {
  if hp > 0
  {
   if key = 1
   {
    SendChat("/hide m4")
    sleep, 120
    SendChat("/hide deagle")
    key:=0
   }
  }
    }
}
Зачем делать 2 условия, если можно условие хп в одном if'e проверять.

Да и Loop не лучший вариант, бессмысленная нагрузка будет из-за key = 0
SetTimer будет лучше.
 

Vlad Horii

Известный
Проверенный
310
171
Код:
Loop
{
    hp:=getPlayerHealth()
    GetChatLine(0, string)
 
    if hp < 5
    {
  if hp > 0
  {
   if key = 1
   {
    SendChat("/hide m4")
    sleep, 120
    SendChat("/hide deagle")
    key:=0
   }
  }
    }
}

NumpadAdd::
if key = 0
{
    key:=1
    ;ShowGameText("ON", 100, 3)
    SoundBeep
}

else if key = 1
{
    key:=0
    ;ShowGameText("OFF", 100, 3)
}

return

Вроде бы ж в цикле должно пахать, но нихера
Очень давно просили написать подобную фигню, бери код, переделывай под себя.
AutoHotKey:
F11::
addChatMessageEx(0xFFFFFF, "Скрипт успешно активирован!!")
addChatMessageEx(0xFFFFFF, "Автор скрипта: Vlad Horii")
SetTimer, Act, on
return
Act:
hp := GetPlayerHealth()
if (hp < 1)
{
    sendChat("/hide deagle")
    Sleep 100
    sendChat("/hide m4")
    SetTimer, Act, Off
    Sleep 5000
   SetTimer, Act, on
}
return
 
  • Нравится
Реакции: Cesar Ballard

Cesar Ballard

Участник
81
5
Очень давно просили написать подобную фигню, бери код, переделывай под себя.
AutoHotKey:
F11::
addChatMessageEx(0xFFFFFF, "Скрипт успешно активирован!!")
addChatMessageEx(0xFFFFFF, "Автор скрипта: Vlad Horii")
SetTimer, Act, on
return
Act:
hp := GetPlayerHealth()
if (hp < 1)
{
    sendChat("/hide deagle")
    Sleep 100
    sendChat("/hide m4")
    SetTimer, Act, Off
    Sleep 5000
   SetTimer, Act, on
}
return

Cпасибо за помощь, но сервек как-то непонятно устроен с системой этой. Не успевает даже этот скрипт прятать пушки в самый момент смерти. Уже когда умер лежишь на земле дохлый оно активируется, и то не всегда. Я бы уже забил болт, но есть на другом языке написана данная фича для сервака, но от его почему-то у меня фризы в игре и - фпс и + пинг~400
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
AutoHotKey:
TestCheck == false
SetTimer, Check, 50
return
Check:
HP := GetPlayerHealth()
if (HP < 5 || TestCheck == false)
{
    SendChat("/hide deagle")
    Sleep 100
    SendChat("/hide m4")
    OldHP := HP
    TestCheck := true
} else if (TestCheck == true || HP > OldHP)
    TestCheck := false
return
Ну например дигл вроде с 3-ех выстрелов убивает, и естественно хп не успеет стать меньше 5.
Поэтому как раз нужно вычислять частоту уменьшения хп.
 
Последнее редактирование:

Cesar Ballard

Участник
81
5
AutoHotKey:
SetTimer, Check, 50
return
Check:
HP := GetPlayerHealth()
if (HP < 5 || TestCheck == false)
{
    SendChat("/hide deagle")
    Sleep 100
    SendChat("/hide m4")
    OldHP := HP
    TestCheck := true
} else if (TestCheck == true || HP > OldHP)
    TestCheck := false
return
Ну например дигл вроде с 3-ех выстрелов убивает, и естественно хп не успеет стать меньше 5.
Поэтому как раз нужно вычислять частоту уменьшения хп.
Флудит командой при активации, и в итоге отлёт античитом
 

Usik.dm

Участник
30
0
Мда..Ты ещё даже не подключил SAMP-UDF(на этом сайте есть). И если уже подключать ЮДФ , то можно забыть про SendInput
Lua:
#Include C:\SAMP-UDF-Developer.ahk ; Путь к файлу Самп юдф

myid := getId() ; Функция

$~NumpadEnter:: ; Активация считывания чатлога при нажатии NumpadEnter.
$~Enter:: ; Активация считывания чатлога при нажатии Enter.
If (isInChat() && !isDialogOpen()) ; Проверка на то что открыт чат, но при этом закрыт диалог.
{ ; Если условие соблюдено.
Sleep 250 ; Задержка в 250 милисекунд, что бы сообщение наверняка отправилось.
dwAddress := dwSAMP + 0x12D8F8 ; Адрес чатлога в памяти со смещением.
chatInput := readString(hGTA, dwAddress, 256) ; Чтение памяти.
If (chatInput = "/proverka")
{
Sendchat("/n Введи команду /pass " myid "") ; Отправка сообщения
}
} ; Конец проверки чатлога
return
Как смог, так написал.
Ссылка на Samp-UDF :
Blast.hk: AHK - SAMP UDF(https://blast.hk/threads/20318/)

CM: [Разработка] SAMP UDF | Дорабатываем вместе! | От 04.02.2018 - Форум Cheat-Master.ru(http://cheat-master.ru/forum/149-619860-1)
 
Последнее редактирование:

crab1k

Известный
34
4
Мда..Ты ещё даже не подключил SAMP-UDF(на этом сайте есть). И если уже подключать ЮДФ , то можно забыть про SendInput
Lua:
#Include C:\SAMP-UDF-Developer.ahk ; Путь к файлу Самп юдф

myID := getId() ; Функция

$~NumpadEnter:: ; Активация считывания чатлога при нажатии NumpadEnter.
$~Enter:: ; Активация считывания чатлога при нажатии Enter.
If (isInChat() && !isDialogOpen()) ; Проверка на то что открыт чат, но при этом закрыт диалог.
{ ; Если условие соблюдено.
Sleep 250 ; Задержка в 250 милисекунд, что бы сообщение наверняка отправилось.
dwAddress := dwSAMP + 0x12D8F8 ; Адрес чатлога в памяти со смещением.
chatInput := readString(hGTA, dwAddress, 256) ; Чтение памяти.
If (chatInput = "/proverka")
{
Sendchat("/n Введи команду /pass %myID%") ; Отправка сообщения
}
} ; Конец проверки чатлога
return
Как смог, так написал.
Ссылка на Samp-UDF :
Blast.hk: AHK - SAMP UDF(https://blast.hk/threads/20318/)

CM: [Разработка] SAMP UDF | Дорабатываем вместе! | От 04.02.2018 - Форум Cheat-Master.ru(http://cheat-master.ru/forum/149-619860-1)
Зачем в SendChat %%?
 

Rental

Участник
60
1
При запуске игры часто не работает AHK. Тоесть иногда запускаешь скрипт, заходишь в игру, а он не работает. Перезайдешь в игру и все включается. И так раза два в день бывает, есть догадки почему? В скрипте простые команды, типа нажата кнопка - действия. Samp addon'a нет. Версии udf и samp совпадают. Раньше такого не было. В игре заменены аудио файлы, карта и уст. несколько(где-то 10) скриптов. Перезагрузка скрипта(Reload) не помогает.
 

TopMo3

Участник
121
7
Всем привет!
Извините за глупые вопросы, просто не нашел что-то подобного типа, и решил спросить у вас.
- Я хочу сделать, чтобы в АХК писался мой ник, только без _ | Например: Здравствуйте, я ваш лечующий врач Nick Name.
- Как сделать, чтобы мой напарник моего Клиста, не работало проверка ближнего getClosestPlayerId, а на другой клист работало.
 

RellaX

Известный
80
9
Всем привет!
Извините за глупые вопросы, просто не нашел что-то подобного типа, и решил спросить у вас.
- Я хочу сделать, чтобы в АХК писался мой ник, только без _ | Например: Здравствуйте, я ваш лечующий врач Nick Name.
- Как сделать, чтобы мой напарник моего Клиста, не работало проверка ближнего getClosestPlayerId, а на другой клист работало.
1) rpnickbez := RegExReplace(getUsername(), "_", " ")
Пример: SendChat("privet, ja " rpnickbez ", kak dela?")
2)
Код:
$~1::
colormy := colorToStr(getPlayerColor(getId()))
colorplayer := colorToStr(getPlayerColor(getClosestPlayerId()))
if (colormy != colorplayer)
{
;Твой клист и клист игрока отличаются
}
else
{
;Твой клист и клист игрока одинаковы (Это твой напарник)
}
Return
 
  • Нравится
Реакции: Cesar Ballard

#Rin

Известный
Всефорумный модератор
1,214
1,036
1) rpnickbez := RegExReplace(getUsername(), "_", " ")
Пример: SendChat("privet, ja " rpnickbez ", kak dela?")
2)
Код:
$~1::
colormy := colorToStr(getPlayerColor(getId()))
colorplayer := colorToStr(getPlayerColor(getClosestPlayerId()))
if (colormy != colorplayer)
{
;Твой клист и клист игрока отличаются
}
else
{
;Твой клист и клист игрока одинаковы (Это твой напарник)
}
Return
Смысл переводить цвет клиста в нормальный вид, лишняя нагрузка ведь.
 

CyberSuslik

Участник
88
12
Доброго времени суток уважаемые форумчане. Нужна ваша помощь в одном вопросе. Ситуация следующая: Требуется создать AHK скрипт, который будет читать информацию с диалогового окна сервера, и выводить определенную информацию из прочитанной в игровой чат. Для примера на сервере Samp есть определенное диалоговое окно с информацией. Нужно что бы скрипт брал определенный текст из этого окна и писал этот текст в игровой чат.
Подскажите пожалуйста в каком направлении копать. Спасибо.
 
Последнее редактирование: