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

NHacker1271

Известный
156
16
А файл чатлога читать медленно. На счет зависимости - этот код под UDF R18 (убрал [sampVersion] после ADDR_SAMP_CHATMSG_PTR в 12 строчке, чтобы вопросов лишних не было), который работает под всеми версиями samp (0.3.7r1,r2, 0.3dl) без необходимости подстройки. Комментарий с оффсетом был для тех, кто пользуется предыдущими версиями udf.

В конце концов, если это ужасно - покажи как будет идеально :thinking:
Поддерживаю
 

never_dk

Новичок
9
0
Как сделать что бы находился путь к корневой папке ГТА ведь у всех установлена она по разному и на разные диски...?
 

Phoenixxx_CZAR

Известный
61
31
А файл чатлога читать медленно.
Не умеешь нормально читать - не говори.
который работает под всеми версиями samp
Я говорю не зависомости от сампа, а от гташки в общем. Ты делаешь это только для одной игры что очень тупо, можно подумать хорошо головой и сделать под любые, если у них есть файл.
Как сделать что бы находился путь к корневой папке ГТА ведь у всех установлена она по разному и на разные диски...?
В реестре есть путь к gta_sa.exe.
 

index

Известный
126
82
Не умеешь нормально читать - не говори.
А замерил - действительно. Чтение 2х строчек ANSI длиной 128 символов из файла на диске (5400rpm) занимает в среднем примерно столько же времени, сколько чтение 2х строчек чата через getChatLineEx() (0.3мсек). Вероятно, чтение памяти другого процесса через winAPI - не самая быстрая операция.

Но, с другой стороны, если скриптов которым нужен чат несколько - лучше читать через память, иначе будет "борьба" между процессами - кто быстрее прочитает файл чатлога и переместит/удалит его.
Я говорю не зависомости от сампа, а от гташки в общем. Ты делаешь это только для одной игры что очень тупо, можно подумать хорошо головой и сделать под любые, если у них есть файл.
Все зависит от поставленных задач. Мои задачи чтения чата (как и большинства здесь присутствующих) связаны только с gta samp.
В конце концов написание такой функи для чего другого - вполне тривиальная задача, решаемая за небольшой отрезок времени.
 

Leopoldywka

Новичок
11
5
В общем, хочу написать мини шпору, т.е. по нажатию кнопки открывается диалог и там человек вводит пункт устава, после чего из ini файла в чат выводится сам пункт. Как это вообще замутить?
 

never_dk

Новичок
9
0
Помогите сделать код, как найти путь к ГТА??? Я пытался но не получалось ничего! Можно привер или код желательно
 

WAMAH_KING

Новичок
7
0
У меня вопросик , а можно ли читая через память исключить появление строк по схожему признаку , к примеру в начале строчки идет LS | , я смогу только активировать
Код:
:?:/radoff::
SendMessage, 0x50,, 0x4190419,, A
addChatMessage("Радио отключено")
SetTimer, Chat, 1

Chat() {
    GetChatLine(0, chatlog)

    if (RegExMatch(chatlog, "LS |", chattext))
    {
       removeChatLine(line = 0)
     sleep 10
     if (RegExMatch(chatlog, "LS |", chattext))
    {
    removeChatLine(line = 0)
    sleep 10
    loop
    }
    else if {
    RegExMatch(chatlog, "LS |", chattext))
    {
     GetChatLine(line = 0)
     sleep 10
     }
     return
    
    
}
}
return
}
return
Только косяк , он у меня начинает просто чистить чат до момента , когда произошел запуск функции и вот вопрос , можно ли удалять только строчки с LS | и второй . можно ли как то по команде выключить функцию
 

TeOdooR

Новичок
24
1
Может кто-нибудь поделиться кодом на массивах для выбора строки при открытом диалоге? Буду благодарен
 

WAMAH_KING

Новичок
7
0
где у меня ошибка ?
Код:
!vk5A::
    {
     showDialog(1, "{FFA500}Универсальный скрипт", "{FFFFFF}Введите причину доклад`n{FFA500}[1] {FFFFFF}Отправился на СО `n{FFA500}[2] {FFFFFF}Прибыл на СО `n{FFA500}[3] {FFFFFF}Закончил загрузку на СО`n{FFA500}[4] {FFFFFF}Прибыл на базу `n","Готово","Закрыть")
       Input, dokladsnb, v,  {LButton}{Enter}{esc}{f6}{vk54}
       if dokladsnb = 1 {
   SendMessage, 0x50,, 0x4190419,, A
     SendChat("/r Докладывает: " myname " | Отправиляюсь на СО | Транспорт: " getVehicleModelName())
     sleep 200
     SendChat("/time")
     SendInput,{F8}
   ArrayToSendChat(ArrayLicV)
        return
    }
    else if dokladsnb = 2 {
    SendMessage, 0x50,, 0x4190419,, A
     SendChat("/r Докладывает: " myname " | Прибыл на СО, начинаю загрузку | Транспорт: " getVehicleModelName())
     sleep 200
     SendChat("/loadgun")
     sleep 100
    addChatMessage("{FFFFFF}Подойдите к загрузочному маркеру и нажмите {FFC800}F2 ")
        KeyWait, vk71, D
        sleep 100
        SendChat("/time")
        sleep 100
     SendInput,{F8}
    ArrayToSendChat(ArrayLicV)
        return
    }
    else if dokladsnb = 3 {
    SendMessage, 0x50,, 0x4190419,, A
     SendChat("/r Докладывает: " myname " | Загрузился на СО, еду на базу | Транспорт: " getVehicleModelName())
     sleep 200
     addChatMessage("{FFFFFF}Подойдите к загрузочному маркеру и нажмите {FFC800}F2 ")
        KeyWait, vk71, D
        sleep 100
        SendChat("/time")
        sleep 100
     SendInput,{F8}
    ArrayToSendChat(ArrayLicV)
        return
    }
     else if dokladsnb = 4 {
    SendMessage, 0x50,, 0x4190419,, A
     SendChat("/r Докладывает: " myname " | Прибыл на базу, начинаю разгрузку | Транспорт: " getVehicleModelName())
     sleep 200
     SendChat("/unloadgun")
     sleep 100
     addChatMessage("{FFFFFF}Подойдите к загрузочному маркеру и нажмите {FFC800}F2 ")
        KeyWait, vk71, D
        sleep 100
        SendChat("/time")
        sleep 100
     SendInput,{F8}
    ArrayToSendChat(ArrayLicV)
        return
    }
    }
 

Вложения

  • upload_2019-1-14_20-56-59.png
    upload_2019-1-14_20-56-59.png
    10.6 KB · Просмотры: 236

TeOdooR

Новичок
24
1
где у меня ошибка ?
Код:
!vk5A::
    {
     showDialog(1, "{FFA500}Универсальный скрипт", "{FFFFFF}Введите причину доклад`n{FFA500}[1] {FFFFFF}Отправился на СО `n{FFA500}[2] {FFFFFF}Прибыл на СО `n{FFA500}[3] {FFFFFF}Закончил загрузку на СО`n{FFA500}[4] {FFFFFF}Прибыл на базу `n","Готово","Закрыть")
       Input, dokladsnb, v,  {LButton}{Enter}{esc}{f6}{vk54}
       if dokladsnb = 1 {
   SendMessage, 0x50,, 0x4190419,, A
     SendChat("/r Докладывает: " myname " | Отправиляюсь на СО | Транспорт: " getVehicleModelName())
     sleep 200
     SendChat("/time")
     SendInput,{F8}
   ArrayToSendChat(ArrayLicV)
        return
    }
    else if dokladsnb = 2 {
    SendMessage, 0x50,, 0x4190419,, A
     SendChat("/r Докладывает: " myname " | Прибыл на СО, начинаю загрузку | Транспорт: " getVehicleModelName())
     sleep 200
     SendChat("/loadgun")
     sleep 100
    addChatMessage("{FFFFFF}Подойдите к загрузочному маркеру и нажмите {FFC800}F2 ")
        KeyWait, vk71, D
        sleep 100
        SendChat("/time")
        sleep 100
     SendInput,{F8}
    ArrayToSendChat(ArrayLicV)
        return
    }
    else if dokladsnb = 3 {
    SendMessage, 0x50,, 0x4190419,, A
     SendChat("/r Докладывает: " myname " | Загрузился на СО, еду на базу | Транспорт: " getVehicleModelName())
     sleep 200
     addChatMessage("{FFFFFF}Подойдите к загрузочному маркеру и нажмите {FFC800}F2 ")
        KeyWait, vk71, D
        sleep 100
        SendChat("/time")
        sleep 100
     SendInput,{F8}
    ArrayToSendChat(ArrayLicV)
        return
    }
     else if dokladsnb = 4 {
    SendMessage, 0x50,, 0x4190419,, A
     SendChat("/r Докладывает: " myname " | Прибыл на базу, начинаю разгрузку | Транспорт: " getVehicleModelName())
     sleep 200
     SendChat("/unloadgun")
     sleep 100
     addChatMessage("{FFFFFF}Подойдите к загрузочному маркеру и нажмите {FFC800}F2 ")
        KeyWait, vk71, D
        sleep 100
        SendChat("/time")
        sleep 100
     SendInput,{F8}
    ArrayToSendChat(ArrayLicV)
        return
    }
    }
Должно работать
Код:
!vk5A::
    {
     showDialog(1, "{FFA500}Универсальный скрипт", "{FFFFFF}Введите причину доклад`n{FFA500}[1] {FFFFFF}Отправился на СО `n{FFA500}[2] {FFFFFF}Прибыл на СО `n{FFA500}[3] {FFFFFF}Закончил загрузку на СО`n{FFA500}[4] {FFFFFF}Прибыл на базу `n","Готово","Закрыть")
       Input, dokladsnb, v,  {LButton}{Enter}{esc}{f6}{vk54}
{
       if (dokladsnb = "1")
       {
   SendMessage, 0x50,, 0x4190419,, A
     SendChat("/r Докладывает: " myname " | Отправиляюсь на СО | Транспорт: " getVehicleModelName())
     sleep 200
     SendChat("/time")
     SendInput,{F8}
   ArrayToSendChat(ArrayLicV)
        return
    }
    if (dokladsnb = "2")
    {
    SendMessage, 0x50,, 0x4190419,, A
     SendChat("/r Докладывает: " myname " | Прибыл на СО, начинаю загрузку | Транспорт: " getVehicleModelName())
     sleep 200
     SendChat("/loadgun")
     sleep 100
    addChatMessage("{FFFFFF}Подойдите к загрузочному маркеру и нажмите {FFC800}F2 ")
        KeyWait, vk71, D
        sleep 100
        SendChat("/time")
        sleep 100
     SendInput,{F8}
    ArrayToSendChat(ArrayLicV)
        return
    }
    if (dokladsnb = "3")
    {
    SendMessage, 0x50,, 0x4190419,, A
     SendChat("/r Докладывает: " myname " | Загрузился на СО, еду на базу | Транспорт: " getVehicleModelName())
     sleep 200
     addChatMessage("{FFFFFF}Подойдите к загрузочному маркеру и нажмите {FFC800}F2 ")
        KeyWait, vk71, D
        sleep 100
        SendChat("/time")
        sleep 100
     SendInput,{F8}
    ArrayToSendChat(ArrayLicV)
        return
    }
if (dokladsnb = "4")
{
    SendMessage, 0x50,, 0x4190419,, A
     SendChat("/r Докладывает: " myname " | Прибыл на базу, начинаю разгрузку | Транспорт: " getVehicleModelName())
     sleep 200
     SendChat("/unloadgun")
     sleep 100
     addChatMessage("{FFFFFF}Подойдите к загрузочному маркеру и нажмите {FFC800}F2 ")
        KeyWait, vk71, D
        sleep 100
        SendChat("/time")
        sleep 100
     SendInput,{F8}
    ArrayToSendChat(ArrayLicV)
        return
 }
   }
    }
 

kizn

О КУ)))
Всефорумный модератор
2,405
2,054
Добрый день, ночь
Нужен самый простой скрипт, я just не шарю в ахк
Чтоб при ЗАжатии W - ЗАжимало Ctrl
При нажатии Numpad 1 - нажималось T, набиралось /hub
 

Di3

Участник
432
20
Есть функция которая крч КАПС в нормальный текст делает?)
ПРИВЕТ => привет , либо Привет > ПРИВЕТ