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

Gazyka

Известный
2
0
Здравствуйте, подскажите пожалуйста, как сделать так, чтобы при помощи udf можно было передвигаться вверх, вниз, подтверждать (или же просто эмулировать нажатия клавиш {Up}, {Down}, {Enter}) по диалоговому окну, в свернутом режиме сампа? Благодаря команда " SendChat("/house") " в свернутом режиме открывается диалог с меню дома, а с передвижением тупик :c
Заранее спасибо)
 

Revalto

Известный
532
225
Здравствуйте, подскажите пожалуйста, как сделать так, чтобы при помощи udf можно было передвигаться вверх, вниз, подтверждать (или же просто эмулировать нажатия клавиш {Up}, {Down}, {Enter}) по диалоговому окну, в свернутом режиме сампа? Благодаря команда " SendChat("/house") " в свернутом режиме открывается диалог с меню дома, а с передвижением тупик :c
Заранее спасибо)
Врятли кто ответит кроме как использовать Send, ... Где то была функция выбора пункта из списка... Если не найдешь, то перепиши функцию getDialogLine(index)
Хелп, у меня работает этот скрипт, а у других 3-ёх людей нет. ахк.rar(https://drive.google.com/open?id=161XW0cCVizK1gPSiqZUIIMV2kiJ1KYe5)
Скомпилируй в ANSI32 и скинь им готовым скриптом, тогда все будет работать)
 

Nifailo

Новичок
26
0
Врятли кто ответит кроме как использовать Send, ... Где то была функция выбора пункта из списка... Если не найдешь, то перепиши функцию getDialogLine(index)

Скомпилируй в ANSI32 и скинь им готовым скриптом, тогда все будет работать)
А как если скомпилировать в ANSI32 и сделать его готовым скриптом?
 

Nifailo

Новичок
26
0
Всем привет. У меня такая проблема. Активация на любые кнопки работает: Пример: NumPad3::. А если я делаю активацию какой-либо на комманду, пример: :?:ahelp::, то у меня появляется диалог и потом сразу-же пропадает. Хелп посаны
 

darksoor

Известный
673
353
Всем привет. У меня такая проблема. Активация на любые кнопки работает: Пример: NumPad3::. А если я делаю активацию какой-либо на комманду, пример: :?:ahelp::, то у меня появляется диалог и потом сразу-же пропадает. Хелп посаны

Установи АХК в ANSI-32, да и делай как на примере ниже:
Код:
#Include SAMP-UDF.ahk ;обязательно подключаешь SAMP UDF.. Найти его можешь на этом форуме
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen())
{
    Sleep 200
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
      if (chatInput = /command) ; если введешь в чат команду /command сработает код, что ниже в блоке
      {
           ; Тут твой код
      }
}
Return

Думаю разберёшься. Если будут вопросы, то пиши - помогу чем смогу.
 

Revalto

Известный
532
225
Установи АХК в ANSI-32, да и делай как на примере ниже:
Код:
#Include SAMP-UDF.ahk ;обязательно подключаешь SAMP UDF.. Найти его можешь на этом форуме
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen())
{
    Sleep 200
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
      if (chatInput = /command) ; если введешь в чат команду /command сработает код, что ниже в блоке
      {
           ; Тут твой код
      }
}
Return

Думаю разберёшься. Если будут вопросы, то пиши - помогу чем смогу.
Сделаю поправки, мелочи несут говнокодерство...
Код:
#Include SAMP-UDF.ahk ;обязательно подключаешь SAMP UDF.. Найти его можешь на этом форуме
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen()) {
    Sleep 200
    if (readString(hGTA, dwSAMP + 0x12D8F8, 256) == "/command") { ; если введешь в чат команду /command сработает код, что ниже в блоке
         ; Тут твой код
    }
}
return
 

darksoor

Известный
673
353
Сделаю поправки, мелочи несут говнокодерство...
Код:
#Include SAMP-UDF.ahk ;обязательно подключаешь SAMP UDF.. Найти его можешь на этом форуме
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen()) {
    Sleep 200
    if (readString(hGTA, dwSAMP + 0x12D8F8, 256) == "/command") { ; если введешь в чат команду /command сработает код, что ниже в блоке
         ; Тут твой код
    }
}
return

Говнокодерство? Хм..
Если человеку потребуется сделать ещё одну команду, он будет прописывать постоянно readString(hGTA, dwSAMP + 0x12D8F8, 256).

Твой комментарий не несет никакой смысловой нагрузки. Лучше бы людям помогал, а не критиковал из-за одной строки в коде, которая не является быдлокодом!
 

Revalto

Известный
532
225
Установи АХК в ANSI-32, да и делай как на примере ниже:
Код:
#Include SAMP-UDF.ahk ;обязательно подключаешь SAMP UDF.. Найти его можешь на этом форуме
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen())
{
    Sleep 200
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
      if (chatInput = /command) ; если введешь в чат команду /command сработает код, что ниже в блоке
      {
           ; Тут твой код
      }
}
Return

Думаю разберёшься. Если будут вопросы, то пиши - помогу чем смогу.
Где твои знания кодера?
А как же операторы? = присваивать, ==
А где же ковычки на /command ? Это тебе не переменная, а текст...

Код:
#Include SAMP-UDF.ahk ;обязательно подключаешь SAMP UDF.. Найти его можешь на этом форуме
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen()) {
    Sleep 200
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
    if (chatInput == "/command") { ; если введешь в чат команду /command сработает код, что ниже в блоке
        addChatMessage("Ты ввел: /command") ; тут твой код
        return
    }
}
return

Не понимаю модера, который тупо удаляет сообщения в которых говорится правда...
 

#Rin

Известный
Всефорумный модератор
1,214
1,037
А как же операторы? = присваивать, ==
А где же ковычки на /command ? Это тебе не переменная, а текст...
В AHK есть expression и traditional метод.
Если бы if был бы без скобок (traditional метод), можно было бы использовать просто =, в случае с if со скобками (expression метод) нужно использовать ==.
@#darksoor скорее всего попутал.

if (readString(hGTA, dwSAMP + 0x12D8F8, 256) == "/command")
До этого был код с уделом на будущие.

Все ошибки учили и эта версия пойдет:
Код:
#Include SAMP-UDF.ahk ;обязательно подключаешь SAMP UDF.. Найти его можешь на этом форуме
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen()) {
    Sleep 200
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
    if (chatInput == "/command") { ; если введешь в чат команду /command сработает код, что ниже в блоке
        addChatMessage("Ты ввел: /command") ; тут твой код
        return
    }
}
return
 
  • Нравится
Реакции: darksoor

darksoor

Известный
673
353
Где твои знания кодера?
А как же операторы? = присваивать, ==
А где же ковычки на /command ? Это тебе не переменная, а текст...

Код:
#Include SAMP-UDF.ahk ;обязательно подключаешь SAMP UDF.. Найти его можешь на этом форуме
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen()) {
    Sleep 200
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
    if (chatInput == "/command") { ; если введешь в чат команду /command сработает код, что ниже в блоке
        addChatMessage("Ты ввел: /command") ; тут твой код
        return
    }
}
return

Не понимаю модера, который тупо удаляет сообщения в которых говорится правда...

Вот тут с тобой соглашусь, ошибся. Можно просто поправить, а не говорить, что код говно! (хоть он и рабочий как ни странно)
 

TemaMinsky

Новичок
27
3
помогите есть ли или можно сделать /trinvite id и чтобы по близости принимал людей
 

darksoor

Известный
673
353
помогите есть ли или можно сделать /trinvite id и чтобы по близости принимал людей

Вот код с проверками - есть ли данный игрок в зоне стрима, онлайн ли данный id
Код:
#Include SAMP-UDF.ahk ;обязательно подключаешь SAMP UDF.. Найти его можешь на этом форуме.
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen())
{
    Sleep 200
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
    if (RegExMatch(chatInput, "^/trinvite (\d{1,3})$", info))
    {
            nick := getPlayerNameById(info1)
            if (!nick)
            {
                AddChatMessageEx("{FF0000}", "[Информация]:{F5F5DC} Ошибка! Игрок не в сети.")
                return
            }
            if (isPlayerInStreamById(info1))
                SendChat("/trinvite " info1)
            else AddChatMessageEx("{FF0000}", "[Информация]:{F5F5DC} Ошибка! Игрок {0070ba}" nick "[" info1 "] {F5F5DC}далеко от Вас.")
     }
}
return
 

TemaMinsky

Новичок
27
3
Вот код с проверками - есть ли данный игрок в зоне стрима, онлайн ли данный id
Код:
#Include SAMP-UDF.ahk ;обязательно подключаешь SAMP UDF.. Найти его можешь на этом форуме.
$~NumpadEnter::
$~Enter::
if (isInChat() && !isDialogOpen())
{
    Sleep 200
    chatInput := readString(hGTA, dwSAMP + 0x12D8F8, 256)
    if (RegExMatch(chatInput, "^/trinvite (\d{1,3})$", info))
    {
            nick := getPlayerNameById(info1)
            if (!nick)
            {
                AddChatMessageEx("{FF0000}", "[Информация]:{F5F5DC} Ошибка! Игрок не в сети.")
                return
            }
            if (isPlayerInStreamById(info1))
                SendChat("/trinvite " info1)
            else AddChatMessageEx("{FF0000}", "[Информация]:{F5F5DC} Ошибка! Игрок {0070ba}" nick "[" info1 "] {F5F5DC}далеко от Вас.")
     }
}
return

UoGLXBTm_Aw.jpg

Ec-FxkTKZ5M.jpg
 
Последнее редактирование: