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

#RCoffiano

Участник
19
2
Привет всем,тут столкнулся с штучкой, а именно со скриптом который делает диалог, так вот что, сам диалог появляется в игре, а вот когда нажимаешь на
Код:
1::
ShowDialog(2, "Действия", "1. Попросить игрока предъявить документы`n2. И.т","Ок")
Result := LineResult()
if (!Result)
return
Gosub, Label%Result%
return
Label1:
{
SendInput{F6}("Дороу паспорт, ебана а то выепу."){Enter}
}
return


;это в samp udf

LineResult() {
if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
return false
while (isDialogOpen())
continue
if(GetKeyState("Esc", "P"))
return false
return getDialogLineNumber()
}
я нажимаю, а это сообщение "SendInput{F6}("Дороу паспорт, ебана а то выепу."){Enter}", так вот, я кинул это в гед написано "SAMP udf", а вот сообщение так и не вылазит...
Что делать, или напишите куда именно кидать в "SAMP udf" может я протупил.Или ошибка в самом скрипте и сообщение не будет вылазить...
 

Black_Bird

Участник
59
4
Привет всем,тут столкнулся с штучкой, а именно со скриптом который делает диалог, так вот что, сам диалог появляется в игре, а вот когда нажимаешь на
Код:
1::
ShowDialog(2, "Действия", "1. Попросить игрока предъявить документы`n2. И.т","Ок")
Result := LineResult()
if (!Result)
return
Gosub, Label%Result%
return
Label1:
{
SendInput{F6}("Дороу паспорт, ебана а то выепу."){Enter}
}
return


;это в samp udf

LineResult() {
if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
return false
while (isDialogOpen())
continue
if(GetKeyState("Esc", "P"))
return false
return getDialogLineNumber()
}
я нажимаю, а это сообщение "SendInput{F6}("Дороу паспорт, ебана а то выепу."){Enter}", так вот, я кинул это в гед написано "SAMP udf", а вот сообщение так и не вылазит...
Что делать, или напишите куда именно кидать в "SAMP udf" может я протупил.Или ошибка в самом скрипте и сообщение не будет вылазить...
У меня тоже этот код не работал, у тебя samp.udf в папке с этих скриптом?

Привет всем,тут столкнулся с штучкой, а именно со скриптом который делает диалог, так вот что, сам диалог появляется в игре, а вот когда нажимаешь на
Код:
1::
ShowDialog(2, "Действия", "1. Попросить игрока предъявить документы`n2. И.т","Ок")
Result := LineResult()
if (!Result)
return
Gosub, Label%Result%
return
Label1:
{
SendInput{F6}("Дороу паспорт, ебана а то выепу."){Enter}
}
return


;это в samp udf

LineResult() {
if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
return false
while (isDialogOpen())
continue
if(GetKeyState("Esc", "P"))
return false
return getDialogLineNumber()
}
я нажимаю, а это сообщение "SendInput{F6}("Дороу паспорт, ебана а то выепу."){Enter}", так вот, я кинул это в гед написано "SAMP udf", а вот сообщение так и не вылазит...
Что делать, или напишите куда именно кидать в "SAMP udf" может я протупил.Или ошибка в самом скрипте и сообщение не будет вылазить...
Попробуй код от ревалто, может у тебя он будет работать
Код:
#include UDF_037.ahk ; UDF_037.ahk - это название  файла UDF

;=============================================
; Обнуление переменной при нажатии ESC и F6
;=============================================
~ESC::
~F6::
menu:=0
return

;=============================================
; Кнопки вызова диалогов
;=============================================
F3::
menu := 1
ShowDialog(2, "Диалог 1", "Первая`nВторая", "X")
return
F4::
menu := 2
ShowDialog(2, "Диалог с подменю", "Лекции`nПункт без доп. меню", "X")
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_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 2)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    if (line_num == 1)
    {
  showDialog(2, "Подменю", "Первый пукнкт`nВторой пункт", "X")
  menu := 3
    }
    else if (line_num == 2)
  addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 3)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("В подменю выбрано: " line_text)
    return
}
return

~Enter::
gosub, checkdialogMenu
return
 
Последнее редактирование модератором:
  • Нравится
Реакции: #RCoffiano

HGfgdhf

Новичок
5
0
Привет форумчанам!
Начал учить AHK и никак не могу справиться с пониманием RegExMatch.
Можете помочь сделать так, чтобы у меня выводился номер телефона с объявления, а после чего ожидал следующее объявление и снова его вывести.

Вот что я набросал:


Код:
#include udf.ahk
chatlog = %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
numberlist = %A_MyDocuments%\GTA San Andreas User Files\SAMP\numberlist.txt
    check:
    Loop, read, %chatlog%, test
    RegExMatch, (test, ".* Отправил .{3,24}\[\d+\] \(тел\. (\d+)\)", playerinfo)

    {
             fileread, numbers, numberlist
             if numbers contains %playerinfo1%
            {
                MsgBox, %playerinfo1%
                addchatmessage(playerinfo1)
                filedelete, %chatlog%
                fileappend, %chatlog%
                ;goto check
            }
                else
                {
                    MsgBox, %playerinfo1%
                    fileappend, %playerinfo1% , %numberlist%
                    addchatmessage(playerinfo1)
                    filedelete, %chatlog%
                    fileappend, %chatlog%
                    goto check
                }

    return
}
F4::exitapp

Вот пример объявлений.

[17:10:29] TV | Открытие счетов с 3х лет в штате только в нашем банке. GPS 6-6. | Отправил Igor_Zykov[131] (тел. 1010)
[17:12:17] TV | Заходите в 24/7 в г.Лас-Вентурас. Мы в р.Redsands West | Отправил Yamato_Takada[200] (тел. 657475)
 
Последнее редактирование:

dmitri4

Известный
452
79
Привет всем,тут столкнулся с штучкой, а именно со скриптом который делает диалог, так вот что, сам диалог появляется в игре, а вот когда нажимаешь на
Код:
1::
ShowDialog(2, "Действия", "1. Попросить игрока предъявить документы`n2. И.т","Ок")
Result := LineResult()
if (!Result)
return
Gosub, Label%Result%
return
Label1:
{
SendInput{F6}("Дороу паспорт, ебана а то выепу."){Enter}
}
return


;это в samp udf

LineResult() {
if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
return false
while (isDialogOpen())
continue
if(GetKeyState("Esc", "P"))
return false
return getDialogLineNumber()
}
я нажимаю, а это сообщение "SendInput{F6}("Дороу паспорт, ебана а то выепу."){Enter}", так вот, я кинул это в гед написано "SAMP udf", а вот сообщение так и не вылазит...
Что делать, или напишите куда именно кидать в "SAMP udf" может я протупил.Или ошибка в самом скрипте и сообщение не будет вылазить...
10 строку
Код:
SendInput, {F6}Дороу паспорт, ебана а то выепу.{Enter}
 

Black_Bird

Участник
59
4
Здравствуйте, у меня тут такой вопросик:
Возможно ли сделать систему определение марки машины по id человека который в ней сидит.
Пример: Еду я с напарником за преступником, мне надо остановить его и тем самым кричу ему в мегафон.
Идёт отыгровка:
/m Водитель автомобиля марки - " marka ". Прижмитесь к обочине.
/m В случае отказа мы откроем огонь.
Что-то типа такого.
Типа так? при команде /mp
Код:
#ifWinActive GTA:SA:MP
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#include SAMP.AHK
#SingleInstance force

NearPlayerInCar(dist)
{
    TempDist := 100
    p := getStreamedInPlayersInfo()
    if(!p)
    return
    lpos := getCoordinates()
    if(!lpos)
    return
    For i, o in p
    {
        t:=getDist(lpos,o.POS)
        if(t<=dist)
        {
            Colorpl := getplayercolor(i)
            if !(colorpl = 851712) and !(colorpl = 851882)
            {
                ModelName := getTargetVehicleModelNameById(i)
                if (ModelName != "Enforcer") or (ModelName != "FBI Rancher") or (ModelName != "Police Maverick")  or (ModelName != "HPV1000")  or (ModelName != "Police Ranger")  or (ModelName != "Police Car")
                {
                    if (t < TempDist) and ( t > 5 )
                    {
                        TempId := i
                        TempDist := t
                    }
                }
            }
        }
    }
    return TempId
}
getPlayerColor(id)
{
    id += 0
    if(!checkHandles())
    return -1
    color := readDWORD(hGTA, dwSAMP + 0x216378 + 4*id)
    if(ErrorLevel) {
        ErrorLevel := ERROR_READ_MEMORY
        return -1
    }
    return color
}
:?:/mp::
{
    MORG := "Это полиция штата"
}
if isPlayerInAnyVehicle()
{
    if OptTip = 1
    {
        SoundPlay, %Sound3%
    }
    ModelName :=""
    NearIdCar := NearPlayerInCar(90)
    if (NearIdCar >= 0)
    {
        ModelName := getTargetVehicleModelNameById(NearIdCar)
        NearIdCar := % " номер " NearIdCar
    }
    if (ModelName = "Coach") or (ModelName = "Bus")
    {
        SendChat("/m " MORG ". Водитель автобуса " ModelName NearIdCar "...")
sleep 1050
        SendChat("/m ... остановите своё транспортное средство и прижмитесь к обочине!")
    }
    else if (ModelName = "Cabbie") or (ModelName = "Taxi")
    {
        SendChat("/m " MORG ". Водитель автомобиля такси " ModelName NearIdCar "...")
sleep 1050
        SendChat("/m ... остановите своё транспортное средство и прижмитесь к обочине!")
    }
    else if (ModelName = "Tanker") or (ModelName = "Linerunner")  or (ModelName = "Roadtrain")
    {
        SendChat("/m " MORG ". Водитель грузовика " ModelName NearIdCar "...")
sleep 1050
        SendChat("/m ... остановите своё транспортное средство и прижмитесь к обочине!")
    }
    else if (ModelName = "PCJ-600") or (ModelName = "Faggio") or (ModelName = "Freeway") or (ModelName = "Sanchez") or (ModelName = "FCR-900") or (ModelName = "NRG-500") or (ModelName = "BF-400") or (ModelName = "Wayfarer")
    {
        SendChat("/m " MORG ". Водитель мотоцикла " ModelName NearIdCar "...")
sleep 1050
        SendChat("/m ... остановите своё транспортное средство и прижмитесь к обочине!")
    }
    else if (ModelName = "Quad")
    {
        SendChat("/m " MORG " Водитель квадроцикла " ModelName NearIdCar "...")
sleep 1050
        SendChat("/m ... остановите своё транспортное средство и прижмитесь к обочине!")
    }
    else
    {
        SendChat("/m " MORG ". Водитель автомобиля " ModelName NearIdCar "...")
sleep 1050
        SendChat("/m ... остановите своё транспортное средство и прижмитесь к обочине!")
    }
}
 
  • Нравится
Реакции: Revalto

ae1c2a

Известный
195
6
задам очень тупой вопрос, как называется программа, в которой пишется ахк, название начиналось на S дальше не помню
 

Toopie

Новичок
29
2
а бля ты не так сделал то нахуй
твой код: RegExMatch, (test, ".* Отправил .{3,24}\[\d+\] \(тел\. (\d+)\)", playerinfo)
как надо: RegExMatch(A_LoopReadLine, ".* Отправил .{3,24}\[\d+\] \(тел\. (\d+)\)", playerinfo)
 

Revalto

Известный
532
225
Если уж на то пошло, то...

Код:
global file_chat := A_MyDocuments "/GTA San Andreas User Files/SAMP/chatlog.txt"
SetTimer, Chat, 50

Chat:
FileRead, chatlog, % file_chat

if (RegExMatch(chatlog, ".* Отправил .{3,24}\[\d+\] \(тел\. (\d+)\)", chattext))
{
    save(chatlog)
    addChatMessage(chattext1)
}
Return
 

Revalto

Известный
532
225
10 строку
Код:
SendInput, {F6}Дороу паспорт, ебана а то выепу.{Enter}
Лучше использовать такой функционал к диалогам:

Код:
#include UDF_037.ahk ; UDF_037.ahk - это название  файла UDF

;=============================================
; Обнуление переменной при нажатии ESC и F6
;=============================================
~ESC::
~F6::
menu:=0
return

;=============================================
; Кнопки вызова диалогов
;=============================================
F3::
menu := 1
ShowDialog(2, "Диалог 1", "Первая`nВторая", "X")
return
F4::
menu := 2
ShowDialog(2, "Диалог с подменю", "Лекции`nПункт без доп. меню", "X")
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_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 2)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    if (line_num == 1)
    {
  showDialog(2, "Подменю", "Первый пукнкт`nВторой пункт", "X")
  menu := 3
    }
    else if (line_num == 2)
  addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 3)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("В подменю выбрано: " line_text)
    return
}
return

~Enter::
gosub, checkdialogMenu
return
и вместо SendInput юзать функцию SendChat(text)
 

#saniwe

глаза пофикси
218
107
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Лучше использовать такой функционал к диалогам:

Код:
#include UDF_037.ahk ; UDF_037.ahk - это название  файла UDF

;=============================================
; Обнуление переменной при нажатии ESC и F6
;=============================================
~ESC::
~F6::
menu:=0
return

;=============================================
; Кнопки вызова диалогов
;=============================================
F3::
menu := 1
ShowDialog(2, "Диалог 1", "Первая`nВторая", "X")
return
F4::
menu := 2
ShowDialog(2, "Диалог с подменю", "Лекции`nПункт без доп. меню", "X")
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_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 2)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    if (line_num == 1)
    {
  showDialog(2, "Подменю", "Первый пукнкт`nВторой пункт", "X")
  menu := 3
    }
    else if (line_num == 2)
  addChatMessage("Выбрано: " line_text)
    return
}
else if (menu == 3)
{
    menu := 0
    line_num  := getDialogLineNumber()
    line_text  := getDialogLine(line_num)

    addChatMessage("В подменю выбрано: " line_text)
    return
}
return

~Enter::
gosub, checkdialogMenu
return
и вместо SendInput юзать функцию SendChat(text)

ну как бы,хм
 
Последнее редактирование:

LZTD

Активный
129
25
Пишу скрипт на автоигру казино, чат все читает нормально. Все отсылается
Есть одно но , как при проигрыше сделать что бы моя ставка пошла x2 до того пока не выиграет , каоче по мартингейлу играла что бы.
И что бы что бы после следующего луза начинала с базовой ставки, но нес того так сказать X2 с которого закончила
 

Dennisis

Новичок
3
0
У меня есть простая выдача наказаний по просьбе админа, стоит подтверждение на клавишу. Как сделать автоподтверждение, без клавиши?
 

Revalto

Известный
532
225
Пишу скрипт на автоигру казино, чат все читает нормально. Все отсылается
Есть одно но , как при проигрыше сделать что бы моя ставка пошла x2 до того пока не выиграет , каоче по мартингейлу играла что бы.
И что бы что бы после следующего луза начинала с базовой ставки, но нес того так сказать X2 с которого закончила
В ВК помог уже...
У меня есть простая выдача наказаний по просьбе админа, стоит подтверждение на клавишу. Как сделать автоподтверждение, без клавиши?
Убрать потверждение на клавишу :D
 
  • Нравится
Реакции: LZTD