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

madrasso

Потрачен
883
324
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
спасибо тебе, действительно помогло и считает теперь правильно. И действительно, пока не знаешь - кажется что сложно, а оказывается проще некуда.
У меня осталась тут нерешенной ещё одна проблема. Она уже никак не относится к тому, на что ты ответил. Просто сообщение есть, но на него никто не ответил, возможно не заметили. В общем, у меня проблема с использованием SendChat. Пробовал разные удф, но результат всегда один - краш игры. Предполагаю что через какое-то количество использований данной команды что-то происходит, что и приводит к крашу, ибо скрипты где SendChat используется очень редко работают намного дольше, чем те, где SendChat флудит со sleep 1072 ( задержку менял, результат всё равно один - краш). Может ты знаешь в чём проблема? в гугле искал, была у кого-то такая проблема, но он ответил, что она сама решилась и он не знает в чём решение. В ответах к той теме тоже никто ничего не ответил. Извини за много текста.

SAMP 0.3.7 R1 поставь

Как на счёт в скуп пойти? Я там лучше объясню. Пиши: oPawka
Не юзаю скайп
 
Последнее редактирование модератором:

Andy Safino

Участник
69
4
Привет ребят, помогите со скриптом! Сама суть скрипта:
Я узнал своё Имя путём -
opp := getUserName()
далее написал вот так.
addChatMessage("{0070ba}[AHK] Имя: " opp "")
Ничего не выходит и после слов AHK - пустое место, помогите пожалуйста.
Мне тоже помогите с этим) даже когда меняю в Scite4 на ANSI, или запускаю скрипт с таким значением все ровно! Может ошибочка?
 

madrasso

Потрачен
883
324
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

_DeAs_

Новичок
27
1
как читать строки с данного диалогового окна и будучи выводить определенную строчку в чат?
17379
 

madrasso

Потрачен
883
324
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как читать строки с данного диалогового окна и будучи выводить определенную строчку в чат?
17379
getdialogtext(), потом через регулярку выводи нужную тебе строку и данные из неё, что за сервер? Знакомое что-то :)
 

madrasso

Потрачен
883
324
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
адванс)0))
не сидел в АХК с января, каким образом через регулярку вывести?
regexmatch(getdialogtext(), "Сегодняшняя дата:\s+(.*)", readl)
addchatmessage(readl) - выводит полностью строку
addchatmessage(readl1) - выводит 10 августа 2018 г.
 

Arthur22

Новичок
11
1
Код:
Name := getUsername()
F1::
addChatMessage("{FFFFFF}Добро пожаловать, " Name "!")
return
Не отображается после «Добро пожаловать -» имя а лишь пустое место
Мне кажется это из-за запятой. Попробуй перед ней поставить `, чтобы вышло. "addChatMessage("{FFFFFF}Добро пожаловать`, " Name "!")"
 

Taka Yeka

Новичок
5
0
Хочу сделать так, нажимаешь в диалоговое окно "Дать выговор", дальше открывается чат /дать ** (вместо * нужно ввести ид игрока), ввожу ид дальше идет отыгровка и на этом скрипт остановливается. Но если вручную пишу /дать id, у меня ничего не происходит..
Что делать? Незнаю объяснил вам проблему или нет...
Вот код:

Mabel1:
SendInput, {F6}/дать{space}
input, id, V, {enter}
SendMessage, 0x50,, 0x4190419,, A
sleep 200
Sendchat("/do В кармане лежит КПК.")
sleep 2150
Sendchat("/me достал КПК и зашел в Базу Данных Сотрудников Радиоцентра SF-N")
sleep 2150
Sendchat("/me обновил информацию о сотруднике")
sleep 2150
Sendchat("/me убрал КПК обратно в карман")
sleep 2150
Sendinput, {F6}/fwarn %id% SF-N |{space}
return
exit
 

Hensy

Новичок
4
0
Хочу сделать так, нажимаешь в диалоговое окно "Дать выговор", дальше открывается чат /дать ** (вместо * нужно ввести ид игрока), ввожу ид дальше идет отыгровка и на этом скрипт остановливается. Но если вручную пишу /дать id, у меня ничего не происходит..
Что делать? Незнаю объяснил вам проблему или нет...
Вот код:

Mabel1:
SendInput, {F6}/дать{space}
input, id, V, {enter}
SendMessage, 0x50,, 0x4190419,, A
sleep 200
Sendchat("/do В кармане лежит КПК.")
sleep 2150
Sendchat("/me достал КПК и зашел в Базу Данных Сотрудников Радиоцентра SF-N")
sleep 2150
Sendchat("/me обновил информацию о сотруднике")
sleep 2150
Sendchat("/me убрал КПК обратно в карман")
sleep 2150
Sendinput, {F6}/fwarn %id% SF-N |{space}
return
exit
Код:
#Include samp udf.ahk

;--Функция LineResult()
LineResult() {
if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
return false
while (isDialogOpen())
continue
if(GetKeyState("Esc", "P"))
return false
return getDialogLineNumber()
}
;------------------------------

:?:/диалог:: ; команда по вкусу
showDialog(2, "Helper","[1]Уволить игрока`n[2]Выдать выговор", "ОК")
Result := LineResult()
if (!Result)
return
Gosub, dil%Result%
return
dil1:
addChatMessage("{0070ba}[AHK] {bdbdbd}Используйте: {FFFFFF}/uninv [id] [причина]")
dil2:
addChatMessage("{0070ba}[AHK] {bdbdbd}Используйте: {FFFFFF}/дать [id] [причина]")
return
$~Enter::
if (isInChat() && !isDialogOpen())
Sleep 200
dwAddress := dwSAMP + 0x12D8F8
chatInput := readString(hGTA, dwAddress, 256)
{
if(RegExMatch(chatInput, "^/uninv"))
    {
    if(RegExMatch(chatInput, "^/uninv (\d{1,3}) (.*)", info))
        {
             Name := getPlayerNameById(info1)
             NickName := RegExReplace(Name, "_", " ") ;Вывод ника без " _ "
             ArrayToSendChat(["/me достал КПК из кармана" ,"/me зашёл в базу данных МВД","/me аннулировал жетон сотрудника","/me положил КПК обратно в карман",    "/uninvite " info1 " " info2])
                SendChat("/f " NickName " уволен. Причина: " info2 )
        }
    else addChatMessage("{0070ba}[AHK] {bdbdbd}Используйте: {FFFFFF}/uninv [id] [причина]")
}
}
if(RegExMatch(chatInput, "^/дать")) ;команда по вкусу ----
    {
    if(RegExMatch(chatInput, "^/дать (\d{1,3}) (.*)", info))
        {
             Name := getPlayerNameById(info1)
             NickName := RegExReplace(Name, "_", " ") ;Вывод ника без " _ "
             ArrayToSendChat(["/me достал КПК из кармана" ,"/me зашёл в базу данных СМИ","/me выдал выговор сотруднику","/me положил КПК обратно в карман",    "/дать " info1 " " info2])
                SendChat("/f " NickName " выдан выговор. Причина: " info2 )
                Sleep(200)
                FileAppend, Выговоры: %nick% | %info2% | %A_DD%.%A_MM%.%A_Year%`, %A_Hour%.%A_Min%.%A_Sec%, %A_ScriptDir%/test.txt
        }
    else addChatMessage("{0070ba}[AHK] {bdbdbd}Используйте: {FFFFFF}/дать [id] [причина]")
}
return

Мне кажется это из-за запятой. Попробуй перед ней поставить `, чтобы вышло. "addChatMessage("{FFFFFF}Добро пожаловать`, " Name "!")"
0 еффекта
 
Последнее редактирование модератором:

Northup

Новичок
8
0
Мучаюсь с GUI. Хочу, что бы, когда прописываешь в HotKey переменную, она сохранялась определённой кнопкой. Создать комбо клавиш

Gui, Add, Hotkey, x22 y50 w60 h30 vKeyQ,
Gui, Add, Hotkey, x22 y100 w60 h30 vKeyW,
Gui, Add, Hotkey, x22 y150 w60 h30 vKeyE,
Gui, Add, Hotkey, x22 y200 w60 h20 vKeyR,
Gui, Add, Hotkey, x272 y300 w90 h30 vKeyCombo,
Gui, Add, Button, x152 y300 w80 h20 gGO, Button
Gui, Show, x499 y303 h379 w406, New GUI Window
Return
GuiClose:
ExitApp
GO:
Hotkey, %KeyQ%, On, UseErrorLevel
Hotkey, %KeyW%, On, UseErrorLevel
Hotkey, %KeyE%, On, UseErrorLevel
Hotkey, %KeyR%, On, UseErrorLevel
Hotkey, %KeyCombo%, On, UseErrorLevel
Gui, Submit, NoHide
MsgBox, ExitApp, save
return
Combo:
SendInput, {%KeyQ%}{%KeyE%}{%KeyW%}{%KeyR%}
return
 
Последнее редактирование:

Arthur22

Новичок
11
1
Установи кодировку ANSI 32-bit. Для этого перейди в Мой Компьютер\диск С\Program Files\Autohotkey, дальше запусти Installer, нажми на Modify, затем на ANSI 32-bit и в конце на APPLY.

Мучаюсь с GUI. Хочу, что бы, когда прописываешь в HotKey переменную, она сохранялась определённой кнопкой. Создать комбо клавиш

Gui, Add, Hotkey, x22 y50 w60 h30 vKeyQ,
Gui, Add, Hotkey, x22 y100 w60 h30 vKeyW,
Gui, Add, Hotkey, x22 y150 w60 h30 vKeyE,
Gui, Add, Hotkey, x22 y200 w60 h20 vKeyR,
Gui, Add, Hotkey, x272 y300 w90 h30 vKeyCombo,
Gui, Add, Button, x152 y300 w80 h20 gGO, Button
Gui, Show, x499 y303 h379 w406, New GUI Window
Return
GuiClose:
ExitApp
GO:
Hotkey, %KeyQ%, On, UseErrorLevel
Hotkey, %KeyW%, On, UseErrorLevel
Hotkey, %KeyE%, On, UseErrorLevel
Hotkey, %KeyR%, On, UseErrorLevel
Hotkey, %KeyCombo%, On, UseErrorLevel
Gui, Submit, NoHide
MsgBox, ExitApp, save
return
Combo:
SendInput, {%KeyQ%}{%KeyE%}{%KeyW%}{%KeyR%}
return

Читор, скрипты для инвокера он тут создаёт.
Код:
Gui, Add, Hotkey, x22 y50 w60 h30 vKeyQ, 
Gui, Add, Hotkey, x22 y100 w60 h30 vKeyW, 
Gui, Add, Hotkey, x22 y150 w60 h30 vKeyE, 
Gui, Add, Hotkey, x22 y200 w60 h20 vKeyR, 
Gui, Add, Hotkey, x272 y300 w90 h30 vKeyCombo, 
Gui, Add, Button, x152 y300 w80 h20 gGO, Button
Gui, Show, x499 y303 h379 w406, New GUI Window
Return
GuiClose:
ExitApp
GO:
Gui, Submit, NoHide
Hotkey, %KeyCombo%, Combo
MsgBox, Настройки сохранены
return

Combo:
SendInput, {%KeyQ%}{%KeyE%}{%KeyW%}{%KeyR%}
return

Хочу сделать так, нажимаешь в диалоговое окно "Дать выговор", дальше открывается чат /дать ** (вместо * нужно ввести ид игрока), ввожу ид дальше идет отыгровка и на этом скрипт остановливается. Но если вручную пишу /дать id, у меня ничего не происходит..
Что делать? Незнаю объяснил вам проблему или нет...
Вот код:

Mabel1:
SendInput, {F6}/дать{space}
input, id, V, {enter}
SendMessage, 0x50,, 0x4190419,, A
sleep 200
Sendchat("/do В кармане лежит КПК.")
sleep 2150
Sendchat("/me достал КПК и зашел в Базу Данных Сотрудников Радиоцентра SF-N")
sleep 2150
Sendchat("/me обновил информацию о сотруднике")
sleep 2150
Sendchat("/me убрал КПК обратно в карман")
sleep 2150
Sendinput, {F6}/fwarn %id% SF-N |{space}
return
exit

Код:
~Space::
if (isInChat() && !isDialogOpen())
{
    blockChatInput()
    Sleep 170
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    unblockChatInput()
    Sleep, 30
    If chatInput != /дать
        return
    goto, Mabel1
}
return
Mabel1:
SendInput, ^{sc1E}
SendInput, /дать{space}
input, id, V, {enter}
SendMessage, 0x50,, 0x4190419,, A
sleep 200
Sendchat("/do В кармане лежит КПК.")
sleep 2150
Sendchat("/me достал КПК и зашел в Базу Данных Сотрудников Радиоцентра SF-N")
sleep 2150
Sendchat("/me обновил информацию о сотруднике")
sleep 2150
Sendchat("/me убрал КПК обратно в карман")
sleep 2150
Sendinput, {F6}/fwarn %id% SF-N |{space}
return
exit
 
Последнее редактирование модератором:
  • Нравится
Реакции: Northup