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

RTD

Потужно
Модератор
399
470
Вообщем мне нужно при активации функции active (у тебя актив), что-бы работали больше 2ух клавиш с биндами, если же функция выключена , эти клавиши не выполняют бинды
Так?

Код:
active := Object("vk31", false, "vk32", false)
F1::
array := ["Клавиша 1`t" (active.vk31 ? "{32CD32}Активна":"{dd0000}Не активна"), "Клавиша 2`t" (active.vk32 ? "{32CD32}Активна":"{dd0000}Не активна")]
showDialog(2, "Управление клавишами", ArrayToTextDialog(array), "Ок")
result := LineResult()
if (!result)
    Return
for i, e in active
    if (A_Index = result)
        active[i] := !e
Return
~vk31::
if (!active.vk31)
    return
addChatMessage("1 работает")
Return
~vk32::
if (!active.vk32)
    Return
addChatMessage("2 работает")
Return

ArrayToTextDialog(array) {
    for i, e in array
        text .= e "`n"
    return text
}

LineResult() {
    if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
        return false
    while (isDialogOpen())
        continue
    if (GetKeyState("Esc", "P"))
        return false
    return getDialogLineNumber()
}
 

RTD

Потужно
Модератор
399
470
Так ты прицелься на него и потом активируй бинд...
Код:
Labeles1:
addChatMessageEx(0xFFFFFF, "Выбранный игрок - " getIdByPed(getTargetPed()))
return
 
  • Нравится
Реакции: ShadowBroker

Dexide

Новичок
45
1
Так?

Код:
active := Object("vk31", false, "vk32", false)
F1::
array := ["Клавиша 1`t" (active.vk31 ? "{32CD32}Активна":"{dd0000}Не активна"), "Клавиша 2`t" (active.vk32 ? "{32CD32}Активна":"{dd0000}Не активна")]
showDialog(2, "Управление клавишами", ArrayToTextDialog(array), "Ок")
result := LineResult()
if (!result)
    Return
for i, e in active
    if (A_Index = result)
        active[i] := !e
Return
~vk31::
if (!active.vk31)
    return
addChatMessage("1 работает")
Return
~vk32::
if (!active.vk32)
    Return
addChatMessage("2 работает")
Return

ArrayToTextDialog(array) {
    for i, e in array
        text .= e "`n"
    return text
}

LineResult() {
    if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
        return false
    while (isDialogOpen())
        continue
    if (GetKeyState("Esc", "P"))
        return false
    return getDialogLineNumber()
}

Что-то не работает), можно подстроить под этот код? А то не совсем понял что у тебя тут написано)0

Код:
#Persistent
#SingleInstance FORCE
#Include E:\Games\Grand Theft Auto\Mods\АХК Скрипты\MultiAHK for Arizona RP\Multi AHK\SAMP-UDF.ahk

CommandProcessor := new CommandProcessor()
CommandProcessor.SetStatusProcessor(true)

oname = {FF52A4} Multi AHK {FFFFFF}by {EEB440}Dementor
hotkey_func := false
SetTimer, Chat, 100
return


~F6::
~ESC::
menu := 0
return
~LButton::
Time := A_TickCount
while(isDialogOpen())
{
    if (A_TickCount - Time > 500)
        return
}
checkdialogMenu:
if (isDialogButton1Selected()  ==  1)
    menu := 0
IfWinNotActive, GTA:SA:MP
    return
if (menu == 1)
{
    menu := 0
    line := getDialogLineNumber()
    if (line == 1)
            {
                        if (hotkey_func == false) {
                        hotkey_func := true
                        goto ohotkey
                         }
                        else if (hotkey_func == true) {
                         hotkey_func := false
                         goto ohotkey
                        }   
            }
}
return


Chat:
chat := A_MyDocuments "/GTA San Andreas User Files/SAMP/chatlog.txt"
FileRead, chatlog, % chat
save(chatlog)
return

~Enter::
if(CommandProcessor.StatusProcessor)
{
    if(IsChatActive()==1)
    {
        blockChatInput()
        while(IsChatActive()==1)
        continue
        unBlockChatInput()
        TextChat := GetChatText()
        if(SubStr(TextChat, 1, 1) = "/")
        {
            InputCMD := StrSplit(TextChat, A_Space)
            InputCMD := InputCMD[1]
            CommandProcessor.TempCmd := InputCMD
            CommandProcessor.TempText := TextChat
            if(CommandProcessor.CommandArray.HasKey(InputCMD))
            {
                ClearTextDialog()
                SetTimer, % CommandProcessor.CommandArray[InputCMD], -1
            }
            else
            {
                SendChat(TextChat)
                ClearTextDialog()
            }
        }
        else
        {
            if(TextChat != "")
            {
                CommandProcessor.TempText := TextChat
                SendChat(TextChat)
                ClearTextDialog()
            }
        }
    }
}
goto, checkdialogMenu
return

f1_key:
~F1::
menu := 1
text := ["{FF52A4}1.{BDBDBD} Hotkeys test`t" (hotkey_func ? "{32CD32}Активен" : "{dd0000}Выключен")]
ShowDialog("2", oname, gettext(text)[1] , "Закрыть")
return


kp:
chatInput := CommandProcessor.TempText
dialogs:
return


ohotkey:
vk31::
if (&& hotkey_func)
{
    addChatMessage("1")
}
return
 

RTD

Потужно
Модератор
399
470
Что-то не работает), можно подстроить под этот код? А то не совсем понял что у тебя тут написано)0

Код:
#Persistent
#SingleInstance FORCE
#Include E:\Games\Grand Theft Auto\Mods\АХК Скрипты\MultiAHK for Arizona RP\Multi AHK\SAMP-UDF.ahk

CommandProcessor := new CommandProcessor()
CommandProcessor.SetStatusProcessor(true)

oname = {FF52A4} Multi AHK {FFFFFF}by {EEB440}Dementor
hotkey_func := false
SetTimer, Chat, 100
return


~F6::
~ESC::
menu := 0
return
~LButton::
Time := A_TickCount
while(isDialogOpen())
{
    if (A_TickCount - Time > 500)
        return
}
checkdialogMenu:
if (isDialogButton1Selected()  ==  1)
    menu := 0
IfWinNotActive, GTA:SA:MP
    return
if (menu == 1)
{
    menu := 0
    line := getDialogLineNumber()
    if (line == 1)
            {
                        if (hotkey_func == false) {
                        hotkey_func := true
                        goto ohotkey
                         }
                        else if (hotkey_func == true) {
                         hotkey_func := false
                         goto ohotkey
                        }  
            }
}
return


Chat:
chat := A_MyDocuments "/GTA San Andreas User Files/SAMP/chatlog.txt"
FileRead, chatlog, % chat
save(chatlog)
return

~Enter::
if(CommandProcessor.StatusProcessor)
{
    if(IsChatActive()==1)
    {
        blockChatInput()
        while(IsChatActive()==1)
        continue
        unBlockChatInput()
        TextChat := GetChatText()
        if(SubStr(TextChat, 1, 1) = "/")
        {
            InputCMD := StrSplit(TextChat, A_Space)
            InputCMD := InputCMD[1]
            CommandProcessor.TempCmd := InputCMD
            CommandProcessor.TempText := TextChat
            if(CommandProcessor.CommandArray.HasKey(InputCMD))
            {
                ClearTextDialog()
                SetTimer, % CommandProcessor.CommandArray[InputCMD], -1
            }
            else
            {
                SendChat(TextChat)
                ClearTextDialog()
            }
        }
        else
        {
            if(TextChat != "")
            {
                CommandProcessor.TempText := TextChat
                SendChat(TextChat)
                ClearTextDialog()
            }
        }
    }
}
goto, checkdialogMenu
return

f1_key:
~F1::
menu := 1
text := ["{FF52A4}1.{BDBDBD} Hotkeys test`t" (hotkey_func ? "{32CD32}Активен" : "{dd0000}Выключен")]
ShowDialog("2", oname, gettext(text)[1] , "Закрыть")
return


kp:
chatInput := CommandProcessor.TempText
dialogs:
return


ohotkey:
vk31::
if (&& hotkey_func)
{
    addChatMessage("1")
}
return
Нет.
Я не использую командные процесоры и такой метод взаимодействия с диалогом как у тебя.
 

Dexide

Новичок
45
1
Нет.
Я не использую командные процесоры и такой метод взаимодействия с диалогом как у тебя.
Понял, но твоя версия у меня не работает почему то) Можешь исправить? И еще, можно как-то сделать подмену слова в чате? Например выводится в чат "Использовал спранк" меняется на "Использовал аптечку"?
 
Последнее редактирование:

RTD

Потужно
Модератор
399
470
Понял, но твоя версия у меня не работает почему то) Можешь исправить? И еще, можно как-то сделать подмену слова в чате? Например выводится в чат "Использовал спранк" меняется на "Использовал аптечку"?
Кодировку AHK на Ansi-32bit и SAMP UDF последней версии.
Да
 

Teez

Известный
76
2
Нужен рандомайзер Букв ( А,Б,В,Г,Д и т.д. )для ахк помогите сделать пж
Заранее спасибо.
 
Последнее редактирование:

ufdhbi

Известный
Проверенный
1,460
866
заполняешь массив буквами, потом
ran = random(0,33)
massiv[ran]
 

Tiva

Известный
76
1
Всем привет, у меня тут проблема. Хочу создать диалоги и.т.д с SAMP UDF.
Если просто делать биндер то работает нормано

#ifWinActive GTA:SA:MP
!Z::
{
SendMessage, 0x50,, 0x4190419,, A
SendInput {F6}*ВАШ ТЕКСТ*{enter}
sleep 2000
SendInput {F6}*ВАШ ТЕКСТ*{enter}
}
return
А если диалог то не работает. Вот так я делаю может что то не то?

#include SAMP.ahk
NumPad5::
ShowDialog("1", "Dialog", "Пример диалога`nБла бла", "Закрыть")
Return
Версия SAMP UDF. R12.0.3
Gta чистая только самп и все.
Скачал от сюда GitHub - Suchty112/SAMP-UDF-for-AutoHotKey: [SAMP 0.3z R 2]Eine Sammlung von Funktionen für die Verbindung von AutoHotKey mit San Andreas Multiplayer.(https://github.com/Suchty112/SAMP-UDF-for-AutoHotKey)
 

RTD

Потужно
Модератор
399
470
Ща бы взять SAMP UDF для 0.3z, когда ща юзают клиент 0.3.7
 
  • Нравится
Реакции: JEEMBО

giovanni1337

Известный
10
0
Коротко говоря, помогите, пожалуйста. Я не разбираюсь в АХК, только очень поверхностно. Мне нужен AHK для /giverank.
Пример: /rank ID Rang (/rank 45 8)
И отыгровка
/me передал погоны Мл.Лейтенанта
/giverank 45 8
 

JEEMBО

Известный
Друг
1,239
584
Коротко говоря, помогите, пожалуйста. Я не разбираюсь в АХК, только очень поверхностно. Мне нужен AHK для /giverank.
Пример: /rank ID Rang (/rank 45 8)
И отыгровка
/me передал погоны Мл.Лейтенанта
/giverank 45 8
Код:
:?:rank:: // Команда активации в чат
SendMessage, 0x50,, 0x4190419,, A
Sendinput, {F6}/me передал погоны Мл.Лейтенанта{ENTER} // Можешь сам подогнать отыгровки как тебе нужно
Sleep,1000 // Задержка в милисекундах
Sendinput, {F6}/giverank {Space} // Открывается чат,остается ввести только ID игрока и ранг
Return
 
  • Нравится
Реакции: Cesar Ballard