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

madrasso

Потрачен
883
324
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Name := getUsername()
F1::
addChatMessage("{FFFFFF}Добро пожаловать, " Name "!")
return
Не отображается после «Добро пожаловать -» имя а лишь пустое место
А мне не ответили
AutoHotKey:
F1::
Name := getUsername()
addChatMessage("{FFFFFF}Добро пожаловать, " Name "!")
return

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

И так стоит 0.3.7 р1. Скачивал здесь же на форуме
ну тогда не знаю, у меня все ок, без крашей, хоть флуди каждую секунду.

Кодировка какая, от имени админа?
 
Последнее редактирование модератором:

Glebio Panamera

Новичок
1
0
Привет, не шарю в коде, помогите сделать 2 диалоговых окна по типу номер 2
одно окно сделано, как сделать второе?
Код:
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance, Force
#Include, SAMP.ahk
#NoEnv

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

1Array := ["Здравствуйте, вы на собеседование?"]
2Array := ["Покажите паспорт и лицензии.", "/n /pass ID | /lic ID"]
3Array := ["Что такое ДМ, ТК?"]
4Array := ["/n РП ТК МГ в /n"]
5Array := ["Почему вы хотите работать в АвтоШколе?"]
6Array := ["Поздравляю, вы приняты!", "/принять"]
7Array := ["Вы нам не подходите, покиньте очередь."]

numpad7::
Sleep, 100
ShowDialog(2, "AutoShcool by Glebio", "Приветствие`nПроверить Документы`nТермины в IC`nТермины в OOC`nПомему именно Автошкола?`nПрошёл`nНе прошёл", "Закрыть") ;~ Создаем диалог с выбором строк.

Line := LineResult()

if (Line) {
    For k, v in %Line%Array {
        SendChat(v)
        Sleep, 2000
    }
}
return

:?:/принять::
{
SendMessage, 0x50,, 0x4190419,, A
Sleep 1000
SendInput {F6}/me достал из кейса трудовой договор {enter}
Sleep 2000
SendInput {F6}/me передал договор человку напротив{enter}
Sleep 2000
SendInput {F6}/do В договоре написаны следующие пункты:{Enter}
Sleep 2000
SendInput {F6}/do 1. Рекомендуем ознакомиться с требованиями к повышению.{enter}
Sleep 2000
SendInput {F6}/do 2. Рекомендуем ознакомиться с Уставом "AutoSchool", ППЛ.{enter}
Sleep 2000
SendInput {F6}/me передал форму новому сотруднику{enter}
Sleep 2000
SendInput {F6}/invite{space}
}


Код:
Функция 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()
    }
}
 

Destrout

Новичок
8
0
Как сделать так, чтобы когда в чате пишется например: Охранник тюрьмы Tim_Collazo открыл камеру №1.
И когда ты надел наручники на заключённого и обыскиваешь, то в докладе писался автоматически номер этой камеры?
Пример: /r вИЖ 9, 10-46 №1, end.
 

Nagenbl4

Новичок
107
2
Нужен человек, который очень хорошо разбирается в ахк и готов выполнить заказ за деньги, пишите в ЛС.
 

denzwdw[fwfa

Новичок
53
4
Как сделать что бы можно было написать в текстовый документ тест,а при в самп при воде команды появлялся этот текст в диалоговом окне
 

Anton Nixon

Активный
474
48
Нужна помощь, как сделать чтобы при вводе команды /uval можно было указать не только id, но и причину Пример: /uval [id] [причина]. Получается только записать с id, но нужно еще и причину указывать
 

Amil

Новичок
1
0
Помогите сделать скрипт пожалуйста! Я работаю в СМИ а там между обьявлениями сми должно быть 15 секунд разницы я хочу успевать всегда быть первым помогите сделать для этого биндер
!NumPad2::
ready:
file = %A_MyDocuments%\GTA San Andreas User Files\CR-MP\GenerationC\chatlog.txt
FileRead, read, %file%
FileDelete %file%
FileAppend %file%
FileRead, read, %file%
if read contains --» Обьявление
{
yes:
Send {NumpadEnter}
goto yes
}
SoundPlay, *48
Exit
sleep 16000
goto ready

return
F3::Reload
 

denzwdw[fwfa

Новичок
53
4
Как сделать что бы нажимать на тест и открывался другой диалог
Код:
ShowDialog("2", "МВД | Административный, Уголовный кодексы штата, ПДД, Устав МВД.", " Административный кодекс`n Уголовный кодекс штата`n ПДД`n Устав МВД", "Продолжить", "Закрыть")
Return
 

madrasso

Потрачен
883
324
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
upload_2018-8-15_18-18-38.png

ахахахаха, НИХУЯ СЕБЕ МАССИВ

Как сделать что бы нажимать на тест и открывался другой диалог
Код:
ShowDialog("2", "МВД | Административный, Уголовный кодексы штата, ПДД, Устав МВД.", " Административный кодекс`n Уголовный кодекс штата`n ПДД`n Устав МВД", "Продолжить", "Закрыть")
Return
смотри 56-59 страницу, я где то уже показывал ( точнее действие по нажатию кнопки в диалоге, в действии просто записываешь новый диалог и все )

Помогите сделать скрипт пожалуйста! Я работаю в СМИ а там между обьявлениями сми должно быть 15 секунд разницы я хочу успевать всегда быть первым помогите сделать для этого биндер
!NumPad2::
ready:
file = %A_MyDocuments%\GTA San Andreas User Files\CR-MP\GenerationC\chatlog.txt
FileRead, read, %file%
FileDelete %file%
FileAppend %file%
FileRead, read, %file%
if read contains --» Обьявление
{
yes:
Send {NumpadEnter}
goto yes
}
SoundPlay, *48
Exit
sleep 16000
goto ready

return
F3::Reload
не пойму зачем твой, тупой код, который не при каком условии ничего не вытащит из чат лога, ибо сбрасывает его, а после читает..

Перепиши по новому, что именно тебе надо, я понял что биндер, но что он должен делать и на что реагировать.

Как сделать что бы можно было написать в текстовый документ тест,а при в самп при воде команды появлялся этот текст в диалоговом окне
AutoHotKey:
fileread, dialog, путь к диалогу
showdialog("тип диалога", "название", dialog, "кнопка закрытия")
 
Последнее редактирование модератором:

Tenkara

Потрачен
380
171
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Помогите сделать скрипт пожалуйста! Я работаю в СМИ а там между обьявлениями сми должно быть 15 секунд разницы я хочу успевать всегда быть первым помогите сделать для этого биндер
!NumPad2::
ready:
file = %A_MyDocuments%\GTA San Andreas User Files\CR-MP\GenerationC\chatlog.txt
FileRead, read, %file%
FileDelete %file%
FileAppend %file%
FileRead, read, %file%
if read contains --» Обьявление
{
yes:
Send {NumpadEnter}
goto yes
}
SoundPlay, *48
Exit
sleep 16000
goto ready

return
F3::Reload
На каком сервере? код дерьмецо

Как сделать что бы можно было написать в текстовый документ тест,а при в самп при воде команды появлялся этот текст в диалоговом окне
Код (лень переписывать под тебя, разберешься)

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

madrasso

Потрачен
883
324
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нужна помощь, как сделать чтобы при вводе команды /uval можно было указать не только id, но и причину Пример: /uval [id] [причина]. Получается только записать с id, но нужно еще и причину указывать
AutoHotKey:
$~Enter::
if (isInChat() && !isDialogOpen())
{
    Sleep 200
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if RegExMatch(chatInput, "/rpuval (\d+) (.*)", xz) {
        sendchat("бла-бла-бла отыгровка")
        sendchat("/uval " xz1 " " xz2)
    }
}
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

( shit-code, страшно такое отправлять )
AutoHotKey:
:?:/дать::
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
 

Andreykas1421

Новичок
47
0
Нашёл так называем hp чекер не могу понять, как сделать что бы после отказа скрипт прекращал работу.
Код:
global Minut := 0.01
global timer_HealChecker := Minut*60*1000
global antiFlood := true

; Данный скрипт требует версии 1.0.25.13.
Gui, Add, Text,, First name:
Gui, Add, Text,, Last name:
Gui, Add, Edit, vFirstName ym ; Опция ym начинает новую колонку элементов управления.
Gui, Add, Edit, vLastName
Gui, Add, Button, default, OK ; Метка ButtonOK (если она существует) будет запущена при нажатии кнопки.
Gui, Show,, Simple Input Example
SetTimer, HealChecker, On
return

HealChecker:
if (antiFlood)
{
    Loop
    {
  if (getPlayerHealth() <= 40 and getPlayerHealth() >= 0)
  {
   addChatMessageEx("FFFFFF", "[ХП помощник]:Используй аптечку у тебя " getPlayerHealth() " хп. Использовать - [1], отказ - [2]")
   Loop,
   {
    if (getkeystate("1", "P"))
    {
     sendchat("/usemed")
     break
    }
    if (getkeystate("2", "P"))
    {
     addChatMessageEx("FFFFFF", "[ХП помощник]: Вы отказались от помощи")
     break
    }
   }
   antiFlood := false
   SetTimer, HealChecker, % timer_HealChecker
   break
  }
  else
  {
   antiFlood := false
   SetTimer, HealChecker, 1000
   break
  }
    }
    return
}
antiFlood := true
return
 

Revalto

Известный
532
225
Нашёл так называем hp чекер не могу понять, как сделать что бы после отказа скрипт прекращал работу.
Код:
global Minut := 0.01
global timer_HealChecker := Minut*60*1000
global antiFlood := true

; Данный скрипт требует версии 1.0.25.13.
Gui, Add, Text,, First name:
Gui, Add, Text,, Last name:
Gui, Add, Edit, vFirstName ym ; Опция ym начинает новую колонку элементов управления.
Gui, Add, Edit, vLastName
Gui, Add, Button, default, OK ; Метка ButtonOK (если она существует) будет запущена при нажатии кнопки.
Gui, Show,, Simple Input Example
SetTimer, HealChecker, On
return

HealChecker:
if (antiFlood)
{
    Loop
    {
  if (getPlayerHealth() <= 40 and getPlayerHealth() >= 0)
  {
   addChatMessageEx("FFFFFF", "[ХП помощник]:Используй аптечку у тебя " getPlayerHealth() " хп. Использовать - [1], отказ - [2]")
   Loop,
   {
    if (getkeystate("1", "P"))
    {
     sendchat("/usemed")
     break
    }
    if (getkeystate("2", "P"))
    {
     addChatMessageEx("FFFFFF", "[ХП помощник]: Вы отказались от помощи")
     break
    }
   }
   antiFlood := false
   SetTimer, HealChecker, % timer_HealChecker
   break
  }
  else
  {
   antiFlood := false
   SetTimer, HealChecker, 1000
   break
  }
    }
    return
}
antiFlood := true
return
Говно код просто, все можно было бы сделать в несколько раз легче..

Код:
SetTimer, HealChecker, 50

HealChecker() {
    if (getPlayerHealth() <= 40 && getPlayerHealth() >= 0) {
        addChatMessageEx("FFFFFF", "[ХП помощник]:Используй аптечку у тебя " getPlayerHealth() " хп. Использовать - [1], отказ - [2]")
        SetTimer, HealChecker, off
        Loop,
        {
            if (getkeystate("1", "P")) {
                sendchat("/usemed")
                SetTimer, HealChecker, 50
                break
            }
            if (getkeystate("2", "P")) {
                addChatMessageEx("FFFFFF", "[ХП помощник]: Вы отказались от помощи | ХП помошник отключен!")
                break
            }
       }
    }
}
 
Последнее редактирование:

Andreykas1421

Новичок
47
0
Говно код просто, все можно было бы сделать в несколько раз легче..

Код:
SetTimer, HealChecker, 50

HealChecker() {
    if (getPlayerHealth() <= 40 && getPlayerHealth() >= 0) {
        addChatMessageEx("FFFFFF", "[ХП помощник]:Используй аптечку у тебя " getPlayerHealth() " хп. Использовать - [1], отказ - [2]")
        SetTimer, HealChecker, off
        Loop,
        {
            if (getkeystate("1", "P")) {
                sendchat("/usemed")
                SetTimer, HealChecker, 50
                break
            }
            if (getkeystate("2", "P")) {
                addChatMessageEx("FFFFFF", "[ХП помощник]: Вы отказались от помощи | ХП помошник отключен!")
                break
            }
       }
    }
}
Окей, да работает, но после отказа он выключается полностью, а нужно если ты отказался и если через некоторое время пополнил ХП до 100 и у тебя опять же меньше чем 40 хп, скрипт опять работал, думаю ясно пояснил...