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

swift_taylor

Новичок
2
0
Строку из чатлога предоставь, скажи, что из строки вывести.
Также предоставь путь до чатлога.
Путь чатлога - C:\VMP\logs\vmp-2019-03-13.txt
В предыдущем посте строки чатлога. Вывести нужно рандомный промокод, в первом случае это P~B~B~LB~R~~R~G~C~M~B~X~R~Y~Y~TX~O~~B~D~Q~U~Y~V~Q~K. И ввести в чат без знаков ~. Еще перепроверю чатлоги, не понимаю почему он такой длинный, возможно что-то лишнее.
BLBGMXYTXDUVK - вот какой промокод получается из этой строки в данном случае, возможно другие знаки означают цвет букв - пока не понятно.
P~B~B~LB~R~~R~G~C~M~B~X~R~Y~Y~TX~O~~B~D~Q~U~Y~V~Q~K =BLBGMXYTXDUVK .

[21:51:25.221] [ Info] [ClassicChat] [3] ~p~И второй промокод:~r~
[21:51:25.221] [ Info] [ClassicChat] [3] ~w~~O~R~O~~B~J~R~A~R~MO~Q~~B~B~B~~O~Y~Y~F~B~P~R~Q~R~~Y~O~Y~SR~G~~Y~A
[21:51:31.548] [ Info] [ClassicChat] [3] ~g~Рандом-промокод ~w~RJAMOBYFPQOSRA ~g~АКТИВИРОВАН!



[23:39:53.844] [ Info] [ClassicChat] [3] ~w~~B~X~Y~K~G~Q~Q~KI~R~X~Q~~Q~~Y~O~Q~E~C~O~Y~W~Y~~B~X~G~KA~Q~
[23:39:53.868] [ Info] [ClassicChat] [3] ~b~Активируй первым и получи ~g~$2000
[23:39:53.868] [ Info] [ClassicChat] [3] ~p~И второй промокод:~r~
[23:39:53.875] [ Info] [ClassicChat] [3] ~w~~B~G~O~T~Q~N~C~F~C~~R~VU~B~~Q~W~B~T~O~EY~C~~Y~T~O~H~C~J
[23:39:53.875] [ Info] [ClassicChat] [3] ~b~Активируй его первым и получи ~g~$2000

[23:40:03.525] [ Info] [ClassicChat] [3] ~g~Рандом-промокод ~w~XKQKIXOEOWXKA ~g~АКТИВИРОВАН!
[23:40:03.537] [ Info] [ClassicChat] [3] ~g~Победитель: ~w~Daniel_Bell ~b~Приз: ~g~$2000
[23:40:03.537] [ Info] [ClassicChat] [3] ~y~Промокоды появляются примерно раз в 30-180 минут
[23:40:04.866] [ Info] [ClassicChat] [3] ~g~Рандом-промокод ~w~GTNFVUWTEYTHJ ~g~АКТИВИРОВАН!

еще один пример промокода. В чате весь промокод указан белым шрифтом.

[19:02:54.637] [ Info] [ClassicChat] [3] ~p~Рандом-промокод:~r~
[19:02:54.645] [ Info] [ClassicChat] [3] ~w~~Q~I~B~S~O~J~O~~Q~V~O~Q~O~~C~P~C~~G~V~R~X~P~I~G~G~G~
[19:02:54.645] [ Info] [ClassicChat] [3] ~b~Активируй первым и получи ~g~$5000
[19:02:54.645] [ Info] [ClassicChat] [3] ~p~И второй промокод:~r~
[19:02:54.658] [ Info] [ClassicChat] [3] ~w~Y~P~~P~~G~G~R~F~R~~O~OE~C~~R~B~Y~L~Q~Y~Q~~G~A~P~A~P~~Q~Q
[19:02:54.658] [ Info] [ClassicChat] [3] ~b~Активируй его первым и получи ~g~$2000
[19:03:00.022] [ Info] [ClassicChat] [3] ~g~Рандом-промокод ~w~ISJVQPVXIG ~g~АКТИВИРОВАН!
[19:03:03.049] [ Info] [ClassicChat] [3] ~g~Рандом-промокод ~w~YGFOEBLYAAQ ~g~АКТИВИРОВАН!
что-то я засомневался что получится это вывести отсеяв лишние символы)
 
Последнее редактирование:

CaJlaT

Овощ
Модератор
2,806
2,604
В функции addChatMessageEx() не обязательно в первом параметре ставить скобки.

AutoHotKey:
#NoEnv
#SingleInstance force
#Include SAMP-UDF.ahk
#IfWinActive GTA:SA:MP

$~NumpadEnter::
$~Enter::
if (!isInChat()) || (isDialogOpen())
   Return
Sleep 250
blockChatInput()
tempText := readString(hGTA, dwSAMP + 0x12D8F8, 256)
tempCmd := StrSplit(tempText, " ")[1]
unblockChatInput()

if (tempCmd == "/cens")
{
   if (RegExMatch(tempText, "^" tempCmd "\s(\d{1,3})$", string))
   {
      nick := getPlayerNameById(string1) ; никнейм по ID
      score := getPlayerScoreById(string1) ;уровень по ID
      addChatMessageEx("fc0000", "[МУТ] {ff8400}У игрока " nick "[" string1 "] " score " уровень.") ;вывод уровня в чат
      if(score < 50)
         SendChat("/mute " string1 " 15 цензура")
      if(score >= 50 && score < 70)
         SendChat("/mute " string1 " 30 цензура")
      if(score >= 70)
         SendChat("/mute " string1 " 50 цензура")
   }
   Else
         addChatMessageEx("fc0000", "[МУТ] {ff8400}Используйте: {00ff04}" tempCmd " [id]") ;Если неверно использовал команду
}
return
не знаю почему, но не работает, может быть у меня SAMP-UDF какой-то кривой?
DocP8.png
 
Последнее редактирование:

Tiva

Известный
76
1
Привет, если не сложно помоги. нужно сделать так чтобы когда ты наводил ПКМ на человека в сампе (когда будет треугольник там) и нажимал на кнопку например "X" Вылазило диалог и можно было выбрать Показать пасспорт ( с его идом) надеть оружие и т.д. Кто поможет буду очень благодарен.
P.S. желательно распишите за что они отвечают.)
 
Последнее редактирование:

dan|0

Новичок
2
0
Кто шарит, помогите сделать ahk для выдачи оффлайн наказаний (Для админов)
Тобишь, после проверки форума, что-бы не сворачивать по 100 раз игру и не писать много строк в простом ahk, прошу помощи что-бы те кто хорошо шарят или те у кого уже есть такой скрипт помогли.
Фунционал - после ввода всех ников и нарушений, нажимая на кливишу, скрипт все выдает, но может столкнуться с проблемой того, что игрок в данный момент онлайн и что-бы лично не вводить все это, он автоматичесеи выдаст ему в онайне не в ОФФЛАЙНЕ
Для примера могу дать скрипт CZAR, он сделал для Evovle RP, а мне нужен для GTARP (CRMP)
 

James Hawk

Известный
919
217
Помогите пожалуйста, к програмированию это не относится... Но все же. Не можете подсказать, где найти гайды по АХК скриптингу? На ютубе, как таковых нет.(
Ютуб, форумы бх/см. Было бы желание - уже бы нашёл
 

Tiva

Известный
76
1
Привет, если не сложно помоги. нужно сделать так чтобы когда ты наводил ПКМ на человека в сампе (когда будет треугольник там) и нажимал на кнопку например "X" Вылазило диалог и можно было выбрать Показать пасспорт ( с его идом) надеть оружие и т.д. Кто поможет буду очень благодарен.
P.S. желательно распишите за что они отвечают.)



Нашёл ответ вот
C++:
!1::
{
  Player_id := getIdByPed(getTargetPed()) ; Get player ID
  Player_name := RegExReplace(getPlayerNameById(PId),"_"," ") ; Get player name
  My_name := RegExReplace(getUsername(), "_", " ") ; Get your name
  Player_pos := getPedCoordinates(getTargetPed()) ; Get player pos (array)
  if(Player_id == -1) {
   addChatMessage("{0070BA}[AHK]: {FF3333}Ошибка! {BDBDBD} Вы не захватили игрока.")
   return
  } else {
   ShowDialog("2", "{0070BA}Lesson", "{FFFFFF}*{DCDCDC}Захвачен: {FFFF00}" Player_name " {FFFFFF}[" Player_id "{FFFFFF}]`nПоздороваться`nСпросить документы`nПозвать игрока`nКоординаты пользователя: {BDBDBD}" Player_pos[0] Player_pos[1] Player_Pos[2], "Ok")
   NextStep := 1
   Result := LineResult()
   if(!Result)
     return
   if(Result == "2") {
       SendChat("/hi " Player_id)
       } else if (Result == "3") {
           SendChat("Здравствуйте, я Офицер полиции Лос-Сантос " My_name ", покажите ваши документы.")
       } else if (Result == "4") {
           SendChat("/s " Player_name " подойди пожалуйста к " My_name)
       } else if (Result == "5") {
           addChatMessage("Вы скопировали координаты игрока {FFFFFF}" Player_name)
           Clipboard := Player_pos[0] Player_pos[1] Player_Pos[2]
       }
   }
}
return

LineResult() {
if (!isDialogOpen())
return false
if (getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
return false
while (!GetKeyState("LButton", "P") && !GetKeyState("Enter", "P") && !GetKeyState("Esc", "P"))
continue
if (GetKeyState("Enter", "P"))
return getDialogLineNumber()
else if (GetKeyState("Esc", "P"))
return false
else {
   KeyWait, LButton
   KeyWait, LButton, D T0.25
   if (ErrorLevel)
   return LineResult()
   else
   return getDialogLineNumber()
   }
}
 

Magov1733

Новичок
20
0
Играю на ARP, как указать строку в паспорте для проверки? к примеру надо проверить паспорт игрока на уровень розыска что бы выводилось в чате "имеется N уровень розыска." и т.п.
 

BASS_DEVSOFTWARE

Известный 🇺🇦
Друг
264
568
Играю на ARP, как указать строку в паспорте для проверки? к примеру надо проверить паспорт игрока на уровень розыска что бы выводилось в чате "имеется N уровень розыска." и т.п.
Паспорт же в чате отображается?
Регулярным выражением из строки. Подробно как вытащить из строки нужные нам числа - https://blast.hk/threads/31713/
 

Magov1733

Новичок
20
0
Паспорт же в чате отображается?
Регулярным выражением из строки. Подробно как вытащить из строки нужные нам числа - https://blast.hk/threads/31713/
На advance rp паспорт переделали в диалоговое окно, как вытащить информацию из строки "Уровень розыска"?
 

xdswd

Известный
365
251
Как сделать чтобы при действии одной кнопки работала другая.
К примеру:
Код:
WheelUp (колесо мыши вверх) -- UP (стрелка вверх)
 

James Hawk

Известный
919
217
Как сделать чтобы при действии одной кнопки работала другая.
К примеру:
Код:
WheelUp (колесо мыши вверх) -- UP (стрелка вверх)
Один из вариантов
Код:
WheelDown::
WheelUp::
     SendInput, {up}
Либо, если не сработает нажатие
Код:
SendInput, {up down}
sleep, 20
SendInput, {up up}
 
  • Нравится
Реакции: xdswd