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

Morello

Известный
33
0
AutoHotKey:
NonRPNick := getPlayerNameById(id)
RPplayerNick := RegExReplace(getPlayerNameById(id), "_", " ")
Name, Surname := RegExMatch(id,"(\w+)_(\w+)")
addChatMessage("ID: "id )
addChatMessage("RP Nick: "RPplayerNick)
addChatMessage("Имя: "Name )
addChatMessage("Фамилия: "Surname )
Говнокод, но сойдет
Прошу прощения, как правильное применить его?
20901210_s.png
[/URL][/IMG]
 

Morello

Известный
33
0
Отредактировал.
Забыл что это великий ахк
я в AHK чайник, прошу прощения за такие вопросы, но как им пользоваться?
я вот ввел такую тему:
Код:
:?:/idds::
SendInput, /idds{space}
Input, id, V, {enter}
Sleep 250 ;
NonRPNick := getPlayerNameById(id)
RPplayerNick := RegExReplace(getPlayerNameById(id), "_", " ")
RegExMatch(id,"(\w+)_(\w+)", out)
addChatMessage("ID: "id )
addChatMessage("RP Nick: "RPplayerNick)
addChatMessage("Имя: "out1 )
addChatMessage("Фамилия: "out2 )
Return
Но ничего не происходит по вводу /idds 5 к примеру
 

Morello

Известный
33
0
Код:
$~NumpadEnter::
$~Enter::
if (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatInput,"/idds (%d+)",id)
    {
      сюда тот код
    }
}
Хз будет ли в ахк так RegExMatch работать, но попробуй.
Хм
Код:
$~NumpadEnter::
$~Enter::
if (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatInput,"/idds (%d+)",id)
    {
        :?:/idds::
        SendInput, /idds{space}
        Input, id, V, {enter}
        Sleep 250 ;
        NonRPNick := getPlayerNameById(id)
        RPplayerNick := RegExReplace(getPlayerNameById(id), "_", " ")
        RegExMatch(id,"(\w+)_(\w+)", out)
        addChatMessage("ID: "id )
        addChatMessage("RP Nick: "RPplayerNick)
        addChatMessage("Имя: "out1 )
        addChatMessage("Фамилия: "out2 )
        Return
    }
}
[URL=http://vfl.ru/fotos/14937ef420903468.html] [/URL]
 

Morello

Известный
33
0
Убери с 10 по 13 строку.И в строке if (RegExMatch(chatInput,"/idds (%d+)",id))
Добавь в конце скобку, чтобы было вот так.
Код:
  if (RegExMatch(chatInput,"/idds (%d+)",id))
запускается без ошибок, но ввожу /idds и любой ID - ничего не происходит
Код:
#IfWinActive GTA:SA:MP
SendMode Input
#UseHook
#NoEnv
#SingleInstance, force
#Include samp.ahk

$~NumpadEnter::
$~Enter::
if (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatInput,"/idds (%d+)",id))
    {
        NonRPNick := getPlayerNameById(id)
        RPplayerNick := RegExReplace(getPlayerNameById(id), "_", " ")
        RegExMatch(id,"(\w+)_(\w+)", out)
        addChatMessage("ID: "id )
        addChatMessage("RP Nick: "RPplayerNick)
        addChatMessage("Имя: "out1 )
        addChatMessage("Фамилия: "out2 )
        Return
    }
}
 

Morello

Известный
33
0
измени с id на id1, только рекезматч не трогай
Таким макаром? Если да, то так-же всё тихо.
Код:
$~NumpadEnter::
$~Enter::
if (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatInput,"/idds (%d+)",id))
    {
        NonRPNick := getPlayerNameById(id1)
        RPplayerNick := RegExReplace(getPlayerNameById(id1), "_", " ")
        RegExMatch(id,"(\w+)_(\w+)", out)
        addChatMessage("ID: "id1 )
        addChatMessage("RP Nick: "RPplayerNick)
        addChatMessage("Имя: "out1 )
        addChatMessage("Фамилия: "out2 )
        Return
    }
}
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Таким макаром? Если да, то так-же всё тихо.
Код:
$~NumpadEnter::
$~Enter::
if (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatInput,"/idds (%d+)",id))
    {
        NonRPNick := getPlayerNameById(id1)
        RPplayerNick := RegExReplace(getPlayerNameById(id1), "_", " ")
        RegExMatch(id,"(\w+)_(\w+)", out)
        addChatMessage("ID: "id1 )
        addChatMessage("RP Nick: "RPplayerNick)
        addChatMessage("Имя: "out1 )
        addChatMessage("Фамилия: "out2 )
        Return
    }
}
Потому что смесь AHK + LUA в одном флаконе = говно.

AutoHotKey:
$~NumpadEnter::
$~Enter::
if (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatInput,"i)^/idds\s(\d+)", ids))
    {
        name := getPlayerNameById(ids1)
        if (RegExMatch(name, "(.*)_(.*)", out)) {
            addChatMessage("ID: " ids1)
            addChatMessage("NickName: " out1 " " out2)
            addChatMessage("Имя: " out1)
            addChatMessage("Фамилия: " out2)
        } else {
            addChatMessage("Игрок имеет NonRP NickName")
            addChatMessage("ID: " ids1)
            addChatMessage("NickName: " name)
        }
    }
}
 

Morello

Известный
33
0
Потому что смесь AHK + LUA в одном флаконе = говно.

AutoHotKey:
$~NumpadEnter::
$~Enter::
if (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatInput,"i)^/idds\s(\d+)", ids))
    {
        name := getPlayerNameById(ids1)
        if (RegExMatch(name, "(.*)_(.*)", out)) {
            addChatMessage("ID: " ids1)
            addChatMessage("NickName: " out1 " " out2)
            addChatMessage("Имя: " out1)
            addChatMessage("Фамилия: " out2)
        } else {
            addChatMessage("Игрок имеет NonRP NickName")
            addChatMessage("ID: " ids1)
            addChatMessage("NickName: " name)
        }
    }
}

Всё равно при вводе кмд в игре: /idds 173 , к примеру, в ответ один игнор.
Код:
#IfWinActive GTA:SA:MP
SendMode Input
#UseHook
#NoEnv
#SingleInstance, force
#Include samp.ahk

$~NumpadEnter::
$~Enter::
if (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatInput,"i)^/idds\s(\d+)", ids))
    {
        name := getPlayerNameById(ids1)
        if (RegExMatch(name, "(.*)_(.*)", out)) {
            addChatMessage("ID: " ids1)
            addChatMessage("NickName: " out1 " " out2)
            addChatMessage("Имя: " out1)
            addChatMessage("Фамилия: " out2)
        } else {
            addChatMessage("Игрок имеет NonRP NickName")
            addChatMessage("ID: " ids1)
            addChatMessage("NickName: " name)
        }
    }
}
 

crab1k

Известный
34
4
Всё равно при вводе кмд в игре: /idds 173 , к примеру, в ответ один игнор.
Код:
#IfWinActive GTA:SA:MP
SendMode Input
#UseHook
#NoEnv
#SingleInstance, force
#Include samp.ahk

$~NumpadEnter::
$~Enter::
if (isInChat() = 1 && isDialogOpen() == 0)
{
    Sleep 250
    dwAddress := dwSAMP + 0x12D8F8
    chatInput := readString(hGTA, dwAddress, 256)
    if (RegExMatch(chatInput,"i)^/idds\s(\d+)", ids))
    {
        name := getPlayerNameById(ids1)
        if (RegExMatch(name, "(.*)_(.*)", out)) {
            addChatMessage("ID: " ids1)
            addChatMessage("NickName: " out1 " " out2)
            addChatMessage("Имя: " out1)
            addChatMessage("Фамилия: " out2)
        } else {
            addChatMessage("Игрок имеет NonRP NickName")
            addChatMessage("ID: " ids1)
            addChatMessage("NickName: " name)
        }
    }
}
У меня все работает.
 

Morello

Известный
33
0
Кодировку ANSI-32 попробуй поставить.
Поставил ANSI32 - заработало. Благодарю.

Как применяюся эти переменные?
Тоесть, к примеру, я хочу позвать в рацию человека. В коде выше, Имя это: out1
Я пишу
Код:
!1::
SendInput, {F6}out1, добрый день{enter}
Return
Это верно?
 
Последнее редактирование модератором:

Morello

Известный
33
0
Код:
    if (RegExMatch(chatInput,"i)^/vig\s(\d+)", ids))
    {
        name := getPlayerNameById(ids1)
        if (RegExMatch(name, "(.*)_(.*)", out)) {
            SendChat("/me зашел в КПК и удалил человека из базы")
            Sleep 500 ;
            SendChat("/fwarn " ids1)
        }
    }
Собираюсь сделать для удобства следующее:
Чтобы при вводе команды /vig - у меня было два значения: /vig [id] [причина]
Потом началась отыгровка /me и потом мне высветилось в чат: /fwarn 172 Устав (к примеру).
То есть в чем вопрос, как в этом коде сделать второй параметр для vig?
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
Код:
    if (RegExMatch(chatInput,"i)^/vig\s(\d+)", ids))
    {
        name := getPlayerNameById(ids1)
        if (RegExMatch(name, "(.*)_(.*)", out)) {
            SendChat("/me зашел в КПК и удалил человека из базы")
            Sleep 500 ;
            SendChat("/fwarn " ids1)
        }
    }
Собираюсь сделать для удобства следующее:
Чтобы при вводе команды /vig - у меня было два значения: /vig [id] [причина]
Потом началась отыгровка /me и потом мне высветилось в чат: /fwarn 172 Устав (к примеру).
То есть в чем вопрос, как в этом коде сделать второй параметр для vig?
Может читать документацию? Хотя бы кое как частично переведенную RegExMatch() -Autohotkey(http://ahk-wiki.ru/regexmatch)
 

Vlad Horii

Известный
Проверенный
310
171
Уже был на этой странице, тяжело въехать новичку, вот я сижу и разбираюсь, попутно задав вопрос сюда.
Вряд ли будет кто тебе тут что-то расписывать, как минимум потому, что это всё есть на вики.
 
  • Нравится
Реакции: #Rin

#Rin

Известный
Всефорумный модератор
1,214
1,036
Уже был на этой странице, тяжело въехать новичку, вот я сижу и разбираюсь, попутно задав вопрос сюда.
AutoHotKey:
RegExMatch(chatInput,"i)^/vig\s(\d+)\s(.*)", out)
; out1 = ID (Первый параметр)
; out2 = Причина (Второй параметр)