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

TopMo3

Участник
121
7
Здравствуйте, я бы хотел реализовать теги, например, что пишешь в чате /prefix [тег] и при вводе например /d нажимаешь пробел, после чего появляется /d [Тег]
 

TopMo3

Участник
121
7
Смотри выше, отвечал такому же.
Или тебе именно через чат нужно сделать?
Да, через чат.

Вроде работает, дальше сам разберешься, не сложно)
Код:
showDialog(1, "Заголовок диалога", "Введите ваш тэг","Enter")
Input, tag, V, {enter}
yourtag:="["tag "]: "
i:=1
return
:?:/r::
if i=1
{
    SendInput,/r %yourtag%
}
else
{
    SendInput,/r{Space}
}
return
Я прочитал ваш пост, но одна проблема, но теги после перезапуска не появляются, создал конфиг, и все настроил, но из-за чего-то не работает.
Вот мой код
 

Вложения

  • test.txt
    199.4 KB · Просмотры: 20
Последнее редактирование модератором:

#Rin

Известный
Всефорумный модератор
1,214
1,036
Я прочитал ваш пост, но одна проблема, но теги после перезапуска не появляются, создал конфиг, и все настроил, но из-за чего-то не работает.
Вот мой код
После перезапуска скрипта данные обнуляются, запись и чтение настроек здесь отсутствует. Что вы ожидали?
 

TopMo3

Участник
121
7
После перезапуска скрипта данные обнуляются, запись и чтение настроек здесь отсутствует. Что вы ожидали?
Вы не понимаете, я настроил, там стоят строки IniWrite и IniRead что ещё надо добавить, чтобы все работало? И в том числе, конфиг сохранил их.
 

TopMo3

Участник
121
7

Вложения

  • test.txt
    199.4 KB · Просмотры: 13
Последнее редактирование модератором:

#Rin

Известный
Всефорумный модератор
1,214
1,036
Вы не понимаете, я настроил, там стоят строки IniWrite и IniRead что ещё надо добавить, чтобы все работало? И в том числе, конфиг сохранил их.
1. Считывание тэга находиться в функции, функция не вызвана, следовательно тэг не прочитается.
2. В команде /d указанно что тэг работает только когда переменная i = 1, после считывания нечего не помечается.
3. Ненужные скобки
4. Считывание тэга обязательно в самом начале.
AutoHotKey:
IniRead, DTag ,local.ini, Text, DTag
If DTag !=
{
i := 1
}
#Include SAMP UDF.ahk
:?:/prefix::
Sleep 120
AntiCrash()
showDialog(1, "Заголовок диалога", "Введите ваш тэг","Enter")
AntiCrash()
Input, tagD, V, {enter}
DTag := "[" tagD "]"
IniWrite, %DTag%, local.ini, TEXT, DTag
i := 1
return
:?:/d::
If i=1
{
SendInput, /d %DTag%
} else {
SendInput, /d{Space}
}
return
 
  • Нравится
Реакции: Vlad Horii

TopMo3

Участник
121
7
1. Считывание тэга находиться в функции, функция не вызвана, следовательно тэг не прочитается.
2. В команде /d указанно что тэг работает только когда переменная i = 1, после считывания нечего не помечается.
3. Ненужные скобки
4. Считывание тэга обязательно в самом начале.
AutoHotKey:
IniRead, DTag ,local.ini, Text, DTag
If DTag !=
{
i := 1
}
#Include SAMP UDF.ahk
:?:/prefix::
Sleep 120
AntiCrash()
showDialog(1, "Заголовок диалога", "Введите ваш тэг","Enter")
AntiCrash()
Input, tagD, V, {enter}
DTag := "[" tagD "]"
IniWrite, %DTag%, local.ini, TEXT, DTag
i := 1
return
:?:/d::
If i=1
{
SendInput, /d %DTag%
} else {
SendInput, /d{Space}
}
return
Все равно после перезагрузки скрипта, нечего не меняется он не пишет тег в /d, кстати из-за чего пишется в ini, DTag= DTag если мне нужно, что он писал именно сам тег, а не DTag.
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Все равно после перезагрузки скрипта, нечего не меняется он не пишет тег в /d, кстати из-за чего пишется в ini, DTag= DTag если мне нужно, что он писал именно сам тег, а не DTag.
Так тоже?
AutoHotKey:
#Include SAMP UDF.ahk
:?:/prefix::
Sleep 120
AntiCrash()
showDialog(1, "Заголовок диалога", "Введите ваш тэг","Enter")
AntiCrash()
Input, tagD, V, {enter}
DTag = [%tagD%]
IniWrite, %DTag%, local.ini, TEXT, DTag
i := 1
return
:?:/d::
IniRead, DTag ,local.ini, Text, DTag
If DTag !=
{
i := 1
}
If i = 1
{
SendInput, /d %DTag%
} else {
SendInput, /d{Space}
}
return
 

Cesar Ballard

Участник
81
5
Качаешь sampudf последней версии, подключаешь и подключаешь его.
Код:
#Include, SAMP-UDF-Developer.ahk

$~Enter:
if (isInChat() && !isDialogOpen()) {
    Sleep, 200
    dwAddress := dwSAMP + 0x12D8F8
    chatText  := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatText, "^\/zap (.*)", var)) {
        Nick := RegExReplace(getPlayerNameById(var1), "_", " ")
        SendChat("/d Mayor. Дело " Nick " рассмотру не подлежит. ООП")
    }
}
Return
Что за дичь? копи пащу код, кидаю в папку отдельный ахк (с этим кодом) в конечном итоге в папке 2 файла (юдф + нужный ахк) и юдф назван как в коде в 1-ой строчке указано, но нихера не пашет. Вообще 0 реакции, а если в 32 анси открывать пишет мол ерор лайн 1 самп юдф не может быть открыт
 

Vlad Horii

Известный
Проверенный
310
171
Что за дичь? копи пащу код, кидаю в папку отдельный ахк (с этим кодом) в конечном итоге в папке 2 файла (юдф + нужный ахк) и юдф назван как в коде в 1-ой строчке указано, но нихера не пашет. Вообще 0 реакции, а если в 32 анси открывать пишет мол ерор лайн 1 самп юдф не может быть открыт
ничего не понял шо ты написал (да я тупой и шо?)
1) Попробуй запихнуть код в сам файл с УДФом. Отпишешь результат.
2) УДФ у тебя точно назван SAMP-UDF-Developer.ahk и расширение точно .ahk?
 
  • Нравится
Реакции: Cesar Ballard

#Rin

Известный
Всефорумный модератор
1,214
1,036
Что за дичь? копи пащу код, кидаю в папку отдельный ахк (с этим кодом) в конечном итоге в папке 2 файла (юдф + нужный ахк) и юдф назван как в коде в 1-ой строчке указано, но нихера не пашет. Вообще 0 реакции, а если в 32 анси открывать пишет мол ерор лайн 1 самп юдф не может быть открыт
Если оба файла находятся в одной папке:
AutoHotKey:
#Include SAMP-UDF-037-R2.ahk
Если подключенный файл находится в другой папке:
Указываем путь
AutoHotKey:
#Include C:\SAMP-UDF-037-R2.ahk
 
  • Нравится
Реакции: Cesar Ballard

Tanaka

Участник
41
10
Что за дичь? копи пащу код, кидаю в папку отдельный ахк (с этим кодом) в конечном итоге в папке 2 файла (юдф + нужный ахк) и юдф назван как в коде в 1-ой строчке указано, но нихера не пашет. Вообще 0 реакции, а если в 32 анси открывать пишет мол ерор лайн 1 самп юдф не может быть открыт
C++:
3 строчка должна выглядеть так:

$~Enter::
 
  • Нравится
Реакции: Cesar Ballard

Cesar Ballard

Участник
81
5
C++:
3 строчка должна выглядеть так:

$~Enter::
спасибо большое.

И ещё, крч когда нажимаю энтер в 1-й строчкой сервер ругается, мол, неверная\несерверная команда, а уже второй делает то на что запрограмированно. Как то избавится 1-ой строчки можно?

Код:
Способ:

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance, Force
#Include, SAMP.ahk

;~ Создаем массивы с номерами строк диалога.

1Array := ["Первый.", "Первый массив.", "Выбрана первая строка."]
2Array := ["Второй.", "Второй массив.", "Выбрана вторая строка."]
3Array := ["Третий.", "Третий массив.", "Выбрана третья строка."]

!1::
Sleep, 100
ShowDialog(2, "Выбор массива", "Первый массив`nВторой массив`nТретий массив", "Закрыть") ;~ Создаем диалог с выбором строк.

Line := LineResult()

if (Line) {
    For k, v in %Line%Array {
        SendChat(v)
        Sleep, 2000
    }
}
return
Код:
Функция LineResult()
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.4
        if (isDialogOpen())
            return LineResult()
        else
            return getDialogLineNumber()
    }
}
Ещё крайне признателен буду если обьясните как этим пользоватся. Если я их совмещаю в 1 (два написанных эти кода) выбивает ошибка на строке

LineResult() {
if (!isDialogOpen()
....

по отдельности вообще скрипт не запускает
 
Последнее редактирование модератором: