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

Andy Safino

Участник
69
4
AutoHotKey:
SendInput,{F6}blabla{space}


Если хочешь, чтобы после перезапуска скрипта ники сохранялись, то сделать так:
AutoHotKey:
$~NumpadEnter::
$~Enter::
if (isInChat() and !isDialogOpen())
{
    sleep 250
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
    if (RegExMatch(chatInput, "^/add ([A-z_]+)", var))
    {
        FileAppend, %var1%`n, %A_ScriptDir%\NickName.txt
        addChatMessageEx("{228B22}", "[AHK] {F5F5DC} Скрипт сохранил введённые данные - {FFFF00}" var1)
        Return
    }
}
return

!3::
FileRead, NickName, %A_ScriptDir%\NickName.txt
showDialog(2, "Диалог", NickName, "Cancel")
return
Я конечно рад, помогает, но скрипт не доделан, смотри, я записываю один ник, потом второй, но переменная у меня одна, и в диалоге один ник а не два которые я записал, а в блокноте - два.
 

darksoor

Известный
674
353
Я конечно рад, помогает, но скрипт не доделан, смотри, я записываю один ник, потом второй, но переменная у меня одна, и в диалоге один ник а не два которые я записал, а в блокноте - два.

При выводе диалога скрипт считывает полностью весь файл, возможно его лучше прочитать построчно и из каждой строки доставать необходимые данные. Тебе подсказка, дерзай.
 
Последнее редактирование:

Andy Safino

Участник
69
4
При выводе диалога скрипт считывает полностью весь файл, возможно его лучше прочитать построчно и из каждой строки доставать необходимые данные. Тебе подсказка, дерзай.
Код:
FileReadLine, NickName, %A_ScriptDir%\NickName.txt, %A_Index%. Дописал,Сейчас попробую.

При выводе диалога скрипт считывает полностью весь файл, возможно его лучше прочитать построчно и из каждой строки доставать необходимые данные. Тебе подсказка, дерзай.
Не получается :thinking:
 

Cod

Участник
117
15
Помогите разобраться в одной теме. Я хотел получить через память номер радиостанции, которая сейчас играет, а потом через память её редактировать.
Но я не смог даже нормально получить номер радиостанции, я пробывал много способов, даже типы данных разные ставил. Возможно адресс кривой, взял на этом сайте: Адреса Памяти (SA) — GTAModding.ru(http://gtamodding.ru/wiki/%D0%90%D0%B4%D1%80%D0%B5%D1%81%D0%B0_%D0%9F%D0%B0%D0%BC%D1%8F%D1%82%D0%B8_(SA))
0xBA679A - [byte] ID текущей радиостанции:
 

darksoor

Известный
674
353
Код:
FileReadLine, NickName, %A_ScriptDir%\NickName.txt, %A_Index%. Дописал,Сейчас попробую.


Не получается :thinking:
AutoHotKey:
SendInput,{F6}blabla{space}


Если хочешь, чтобы после перезапуска скрипта ники сохранялись, то сделать так:
AutoHotKey:
$~NumpadEnter::
$~Enter::
if (isInChat() and !isDialogOpen())
{
    sleep 250
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
    if (RegExMatch(chatInput, "^/add ([A-z_]+)", var))
    {
        FileAppend, %var1%`n, %A_ScriptDir%\NickName.txt
        addChatMessageEx("{228B22}", "[AHK] {F5F5DC} Скрипт сохранил введённые данные - {FFFF00}" var1)
        Return
    }
}
return

!3::
FileRead, NickName, %A_ScriptDir%\NickName.txt
showDialog(2, "Диалог", NickName, "Cancel")
return

Этот код отлично работает, не знаю что ты там делаешь не так. Скинь полный код, может у тебя ошибка.
 

Andy Safino

Участник
69
4
Код:
!3::
FileRead, NickName, %A_ScriptDir%\NickName.txt, %A_Index%
showDialog(2, "Диалог", NickName, "Cancel")
return


$~NumpadEnter::
$~Enter::
if (isInChat() and !isDialogOpen())
{
    sleep 250
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
    if (RegExMatch(chatInput, "^/adnick ([A-z_]+)", var))
    {
        FileAppend, %var1%`n, %A_ScriptDir%\NickName.txt
        addChatMessageEx("{228B22}", "[AHK] {F5F5DC} Скрипт сохранил введённые данные - {FFFF00}" var1)
        Return
    }
}
Надо чтобы он в диалог вводил все ники с блокнота которые я записал а не один последний
 

darksoor

Известный
674
353
Код:
!3::
FileRead, NickName, %A_ScriptDir%\NickName.txt, %A_Index%
showDialog(2, "Диалог", NickName, "Cancel")
return


$~NumpadEnter::
$~Enter::
if (isInChat() and !isDialogOpen())
{
    sleep 250
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
    if (RegExMatch(chatInput, "^/adnick ([A-z_]+)", var))
    {
        FileAppend, %var1%`n, %A_ScriptDir%\NickName.txt
        addChatMessageEx("{228B22}", "[AHK] {F5F5DC} Скрипт сохранил введённые данные - {FFFF00}" var1)
        Return
    }
}
Надо чтобы он в диалог вводил все ники с блокнота которые я записал а не один последний

Вот это что?
AutoHotKey:
FileRead, NickName, %A_ScriptDir%\NickName.txt, %A_Index%
; А должно быть FileRead, NickName, %A_ScriptDir%\NickName.txt
У меня и выводит все ники, как ты и хотел.

В конце после отработки клавиши Enter после блоков поставь return
 

Andy Safino

Участник
69
4
Вот это что?
AutoHotKey:
FileRead, NickName, %A_ScriptDir%\NickName.txt, %A_Index%
; А должно быть FileRead, NickName, %A_ScriptDir%\NickName.txt
У меня и выводит все ники, как ты и хотел.

В конце после отработки клавиши Enter после блоков поставь return
У меня там другие значения, вот и не поставил.

Вот это что?
AutoHotKey:
FileRead, NickName, %A_ScriptDir%\NickName.txt, %A_Index%
; А должно быть FileRead, NickName, %A_ScriptDir%\NickName.txt
У меня и выводит все ники, как ты и хотел.

В конце после отработки клавиши Enter после блоков поставь return
Прошу мне добавить в этот же скрипт удаление информации из списка, если у меня там 2 ника:
- Andy Safino
- Petka_Lindberg
Мне надо будет прописать - /delnick Petka_Linberg, после чего он удаляет
 

Overseas

Новичок
16
1
Нужно что бы скрипт делал какое-то действие в тот момент когда я начинаю садиться в авто. Срабатывание именно в тот момент когда я рядом с авто жму Enter. Как это осуществить, подскажите пожалуйста.
 

darksoor

Известный
674
353
У меня там другие значения, вот и не поставил.


Прошу мне добавить в этот же скрипт удаление информации из списка, если у меня там 2 ника:
- Andy Safino
- Petka_Lindberg
Мне надо будет прописать - /delnick Petka_Linberg, после чего он удаляет
AutoHotKey:
$~NumpadEnter::
$~Enter::
if (isInChat() and !isDialogOpen())
{
sleep 250
chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
if (RegExMatch(chatInput, "^/adnick ([A-z_]+)", var))
{
FileAppend, %var1%`n, %A_ScriptDir%\NickName.txt
addChatMessageEx("{228B22}", "[AHK] {F5F5DC}Скрипт сохранил введённые данные - {FFFF00}" var1)
Return
}
    if (RegExMatch(chatInput, "^/delnick ([A-z_]+)", var))
{
        FileRead, text, %A_ScriptDir%\NickName.txt
        if (text not contains var1)
        {
            addChatMessageEx("{228B22}", "[AHK] {F5F5DC}Скрипт не нашёл данного ника в списках.")
            return
        }
Loop, read, %A_ScriptDir%\NickName.txt
        {
            if (A_LoopReadLine)
            {
                if (A_LoopReadLine == var1)
                    newfile := RegExReplace(text, A_LoopReadLine, "")
            }
        }
        FileDelete, %A_ScriptDir%\NickName.txt
        FileAppend, %newfile%, %A_ScriptDir%\NickName.txt
addChatMessageEx("{228B22}", "[AHK] {F5F5DC}Скрипт удалил ник из списка - {FFFF00}" var1)
Return
}
}
return

!3::
NickName := []
Loop, read, %A_ScriptDir%\NickName.txt
{
    if (A_LoopReadLine) {
        if (RegExMatch(A_LoopReadLine, "([A-z_]+)", vars))
        {
            NickName := NickName "`n" vars1 "`n"
        }
    }
}
showDialog(2, "Диалог", NickName, "Cancel")
return
 

TopMo3

Участник
121
7
Привет всем!
У меня вопрос, как сделать префикс в чате? То есть я пишу в /tr [Управляющий] Привет. И как его вырубить, то есть через команду какую-то он не работал
 

TeOdooR

Новичок
24
1
Вобщем, написал я скрипт на авто-нажатие ЛКМ, но что-то не хочет работать, никаких ошибок ахк не выдаёт...
Код:
#IfWinActive GTA:SA:MP
!-::
POINK:
IfWinActive, GTA:SA:MP
Send, {LButton RButton}
Sleep, 40
Send, {LButton LButton}
Sleep, 40
Goto, POINK
!=::Reload
return
 

Cod

Участник
117
15
Вобщем, написал я скрипт на авто-нажатие ЛКМ, но что-то не хочет работать, никаких ошибок ахк не выдаёт...
Код:
#IfWinActive GTA:SA:MP
!-::
POINK:
IfWinActive, GTA:SA:MP
Send, {LButton RButton}
Sleep, 40
Send, {LButton LButton}
Sleep, 40
Goto, POINK
!=::Reload
return
На метку не отправляетесь при запуске, только в конце метки, она просто не запускаеться