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

TopMo3

Участник
121
7
Так тоже?
AutoHotKey:
#Include SAMP UDF.ahk
:?:/prefix::
Sleep 120
AntiCrash()
showDialog(1, "Заголовок диалога", "Введите ваш тэг","Enter")
AntiCrash()
Input, tagD, V, {enter}
DTag = [%tagD%]
IniWrite, %DTag%, local.ini, TEXT, DTag
i := 1
return
:?:/d::
IniRead, DTag ,local.ini, Text, DTag
If DTag !=
{
i := 1
}
If i = 1
{
SendInput, /d %DTag%
} else {
SendInput, /d{Space}
}
return
Работает, но глюк в local.ini, из-за чего-то он сохраняет не тег, который я писывал для /d, а пишет DTag хотя, у меня стоит например надпись Хит, а он сохраняет не Хит, а DTag, а так работает, буду благодарен, если отпишешь, из-за чего так.

Из-за чего может не работать?


Код:
global TazerIn:=0
global TazerOut:=0
global TazerTo:=0
global WeaponDrawn:=0

UnloadGun:
if (WeaponDrawn = 1)
{
if not (getPlayerWeaponId() = 24) and (TazerOut = 2)
{
SendChat("/me поставив пистолет на предохранитель, убрал" Female " его в кобуру")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 3)  and (TazerOut = 3)
{
SendChat("/me повесил" Female " дубинку на пояс")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 23)  and (TazerOut = 4)
{
SendChat("/me убрал" Female " taser x-26 в кобуру на поясе")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 25)  and (TazerOut = 5)
{
SendChat("/me поставив дробовик на предохранитель, повесил" Female " его на плечо")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 34) and (TazerOut = 6)
{
SendChat("/me поставив снайперскую винтовку на предохранитель, повесил" Female " его на плечо")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 31)  and (TazerOut = 7)
{
SendChat("/me поставив автомат на предохранитель, повесил" Female " его на плечо")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 30) and (TazerOut = 8)
{
SendChat("/me поставив автомат на предохранитель, повесил" Female " его на плечо")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 17) and (TazerOut = 9)
{
SendChat("/me убирает газовую гранату в нагрудный карман бронежилета")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 33) and (TazerOut = 10)
{
SendChat("/me ставит винтовку на предохранитель, вешает её на плечо")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 29) and (TazerOut = 11)
{
SendChat("/me поставив пистолет-пулемёт на предохранитель, повесил" Female " его на плечо")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 1) and (TazerOut = 12)
{
SendChat("/me снял" Female " кастет.")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 14) and (TazerOut = 13)
{
SendChat("/me убрал" Female " цветы в маленькую сумку на поясе")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 5) and (TazerOut = 14)
{
SendChat("/me убрал" Female " биту в сумку на спине")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 43) and (TazerOut = 15)
{
SendChat("/me закрыл" Female " крышечкой объектив фотоаппарата")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 46) and (TazerOut = 16)
{
SendChat("/me снял" Female " парашют")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 8) and (TazerOut = 17)
{
SendChat("/me убрал" Female " катану в чехол на поясе")
TazerOut:=0
WeaponDrawn:=0
}
Sleep 1000
goto, UnloadGun
}
else
{
goto, TakeGun
}
return
TakeGun:
if (WeaponDrawn = 0)
{
if (getPlayerWeaponId() = 24)  and (TazerOut != 2)
{
SendChat("/me достав пистолет из кобуры, снял" Female " его с предохранителя")
TazerOut:=2
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 3) and (TazerOut != 3)
{
SendChat("/me резким движением правой руки снял" Female " дубинку с пояса")
TazerOut:=3
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 23)  and (TazerOut != 4)
{
SendChat("/me достав taser x-26 из кобуры, положил" Female " палец на курок")
TazerOut:=4
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 25)  and (TazerOut != 5)
{
SendChat("/me сняв дробовик с плеча, переключил" Female " предохранитель")
TazerOut:=5
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 34)  and (TazerOut != 6)
{
SendChat("/me сняв снайперскую винтовку с сплеча, переключил" Female " предохранитель")
TazerOut:=6
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 31)  and (TazerOut != 7)
{
SendChat("/me сняв автомат с плеча, переключил" Female " предохранитель")
TazerOut:=7
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 30)  and (TazerOut != 8)
{
SendChat("/me сняв автомат с плеча, переключил" Female " предохранитель")
TazerOut:=8
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 17)  and (TazerOut != 9)
{
SendChat("/me достал" Female " из нагрудного кармана бронежилета газовую гранат")
SendChat("/do Газовая граната в правой руке")
TazerOut:=9
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 33)  and (TazerOut != 10)
{
SendChat("/me сняв винтовку с плеча, снял" Female " её с предохранителя")
TazerOut:=10
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 29)  and (TazerOut != 11)
{
SendChat("/me сняв пистолет-пулемёт с плеча, снял" Female " его с предохранителя")
TazerOut:=11
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 1)  and (TazerOut != 12)
{
SendChat("/me надел" Female " кастет на правую руку")
TazerOut:=12
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 14)  and (TazerOut != 13)
{
SendChat("/me развернул" Female " букет цветов")
TazerOut:=13
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 5)  and (TazerOut != 14)
{
SendChat("/me завел" Female " правую руку за спину")
SendChat("/me достал" Female " биту из сумки на спине")
TazerOut:=14
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 43)  and (TazerOut != 15)
{
SendChat("/me достал" Female " фотоаппарат")
TazerOut:=15
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 46)  and (TazerOut != 16)
{
SendChat("/me одел" Female " парашют на плечи")
TazerOut:=16
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 8)  and (TazerOut != 17)
{
SendChat("/me вытащил" Female " катану из чехла на поясе")
TazerOut:=17
WeaponDrawn:=1
}
Sleep 1000
goto, TakeGun
}
else
{
goto, UnloadGun
}
return
 
Последнее редактирование модератором:

RTD

Нестандартное звание
Модератор
391
413
Из-за чего может не работать?


Код:
global TazerIn:=0
global TazerOut:=0
global TazerTo:=0
global WeaponDrawn:=0

UnloadGun:
if (WeaponDrawn = 1)
{
if not (getPlayerWeaponId() = 24) and (TazerOut = 2)
{
SendChat("/me поставив пистолет на предохранитель, убрал" Female " его в кобуру")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 3)  and (TazerOut = 3)
{
SendChat("/me повесил" Female " дубинку на пояс")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 23)  and (TazerOut = 4)
{
SendChat("/me убрал" Female " taser x-26 в кобуру на поясе")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 25)  and (TazerOut = 5)
{
SendChat("/me поставив дробовик на предохранитель, повесил" Female " его на плечо")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 34) and (TazerOut = 6)
{
SendChat("/me поставив снайперскую винтовку на предохранитель, повесил" Female " его на плечо")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 31)  and (TazerOut = 7)
{
SendChat("/me поставив автомат на предохранитель, повесил" Female " его на плечо")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 30) and (TazerOut = 8)
{
SendChat("/me поставив автомат на предохранитель, повесил" Female " его на плечо")
WeaponDrawn:=0
TazerOut:=0
}
if not (getPlayerWeaponId() = 17) and (TazerOut = 9)
{
SendChat("/me убирает газовую гранату в нагрудный карман бронежилета")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 33) and (TazerOut = 10)
{
SendChat("/me ставит винтовку на предохранитель, вешает её на плечо")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 29) and (TazerOut = 11)
{
SendChat("/me поставив пистолет-пулемёт на предохранитель, повесил" Female " его на плечо")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 1) and (TazerOut = 12)
{
SendChat("/me снял" Female " кастет.")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 14) and (TazerOut = 13)
{
SendChat("/me убрал" Female " цветы в маленькую сумку на поясе")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 5) and (TazerOut = 14)
{
SendChat("/me убрал" Female " биту в сумку на спине")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 43) and (TazerOut = 15)
{
SendChat("/me закрыл" Female " крышечкой объектив фотоаппарата")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 46) and (TazerOut = 16)
{
SendChat("/me снял" Female " парашют")
TazerOut:=0
WeaponDrawn:=0
}
if not (getPlayerWeaponId() = 8) and (TazerOut = 17)
{
SendChat("/me убрал" Female " катану в чехол на поясе")
TazerOut:=0
WeaponDrawn:=0
}
Sleep 1000
goto, UnloadGun
}
else
{
goto, TakeGun
}
return
TakeGun:
if (WeaponDrawn = 0)
{
if (getPlayerWeaponId() = 24)  and (TazerOut != 2)
{
SendChat("/me достав пистолет из кобуры, снял" Female " его с предохранителя")
TazerOut:=2
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 3) and (TazerOut != 3)
{
SendChat("/me резким движением правой руки снял" Female " дубинку с пояса")
TazerOut:=3
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 23)  and (TazerOut != 4)
{
SendChat("/me достав taser x-26 из кобуры, положил" Female " палец на курок")
TazerOut:=4
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 25)  and (TazerOut != 5)
{
SendChat("/me сняв дробовик с плеча, переключил" Female " предохранитель")
TazerOut:=5
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 34)  and (TazerOut != 6)
{
SendChat("/me сняв снайперскую винтовку с сплеча, переключил" Female " предохранитель")
TazerOut:=6
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 31)  and (TazerOut != 7)
{
SendChat("/me сняв автомат с плеча, переключил" Female " предохранитель")
TazerOut:=7
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 30)  and (TazerOut != 8)
{
SendChat("/me сняв автомат с плеча, переключил" Female " предохранитель")
TazerOut:=8
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 17)  and (TazerOut != 9)
{
SendChat("/me достал" Female " из нагрудного кармана бронежилета газовую гранат")
SendChat("/do Газовая граната в правой руке")
TazerOut:=9
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 33)  and (TazerOut != 10)
{
SendChat("/me сняв винтовку с плеча, снял" Female " её с предохранителя")
TazerOut:=10
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 29)  and (TazerOut != 11)
{
SendChat("/me сняв пистолет-пулемёт с плеча, снял" Female " его с предохранителя")
TazerOut:=11
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 1)  and (TazerOut != 12)
{
SendChat("/me надел" Female " кастет на правую руку")
TazerOut:=12
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 14)  and (TazerOut != 13)
{
SendChat("/me развернул" Female " букет цветов")
TazerOut:=13
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 5)  and (TazerOut != 14)
{
SendChat("/me завел" Female " правую руку за спину")
SendChat("/me достал" Female " биту из сумки на спине")
TazerOut:=14
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 43)  and (TazerOut != 15)
{
SendChat("/me достал" Female " фотоаппарат")
TazerOut:=15
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 46)  and (TazerOut != 16)
{
SendChat("/me одел" Female " парашют на плечи")
TazerOut:=16
WeaponDrawn:=1
}
if (getPlayerWeaponId() = 8)  and (TazerOut != 17)
{
SendChat("/me вытащил" Female " катану из чехла на поясе")
TazerOut:=17
WeaponDrawn:=1
}
Sleep 1000
goto, TakeGun
}
else
{
goto, UnloadGun
}
return
Из-за того что ты скопировал код Годарка не понимая его.
 

#Rin

Известный
Всефорумный модератор
1,214
1,035
И? Я вообще спросил из-за чего он не работает, я АХК скачал, и результата 0..
Потому что там указано условие работающая только когда определенная переменная равна чему-то

Работает, но глюк в local.ini, из-за чего-то он сохраняет не тег, который я писывал для /d, а пишет DTag хотя, у меня стоит например надпись Хит, а он сохраняет не Хит, а DTag, а так работает, буду благодарен, если отпишешь, из-за чего так.
Попробуй заменить одну строчку на эту
AutoHotKey:
DTag := "[" tag "]"
Вообще не сильно понял вопрос, AHK сохраняет файл в таком виде:
Код:
[TEXT]
DTag=[FBI]

if chatInput = /ahkset
{
SendChat("/mn")
sleep 500
SendInput, {Enter}
sleep 500
text := getDialogText()
text := RegExReplace(text, A_Tab, "")
text := RegExReplace(text, "{FFFFFF}", "")
text := RegExReplace(text, "{0099FF}", "")
RegExMatch(text, "Имя:([_A-Za-z]+)`n", nm)
nm1 := RegExReplace(nm1, "_", " ")
RegExMatch(text, "Номер телефона:([0-9]+)`n", tel)
RegExMatch(text, "Работа / должность:(.*)`nРанг", rbt)
RegExMatch(text, "Ранг:([0-9]+)`n", rng)
if RegExMatch(text, "Замужем за:")
{
RegExMatch(text, "Пол:(.*)`nЗамужем", sex)
}
if RegExMatch(text, "Женат на:")
{
RegExMatch(text, "Пол:(.*)`nЖенат", sex)
}
AddChatMessageEx("0xFFFFFF", "Имя: {97004B}" nm1)
sleep 100
AddChatMessageEx("0xFFFFFF", "Телефон: {97004B}" tel1)
sleep 100
AddChatMessageEx("0xFFFFFF", "Должность: {97004B}" rbt1)
sleep 100
AddChatMessageEx("0xFFFFFF", "Ранг: {97004B}" rng1)
sleep 100
AddChatMessageEx("0xFFFFFF", "Пол: {97004B}" sex1)
SendInput, {Enter}
IniWrite, %nm1%, %DIRSET%, Info, NAME
IniWrite, %tel1%, %DIRSET%, Info, TEL
IniWrite, %rbt1%, %DIRSET%, Info, WRK
IniWrite, %rng1%, %DIRSET%, Info, RANG
IniWrite, %sex1%, %DIRSET%, Info, SEX
proverka := 1
IniWrite, %proverka%, %DIRSET%, Info, Proverka
return
}

вообщем получается, он считавает данные, сюда надо просто добавить строку считывания строки "Бизнес:"
  • И вывод если там что-то то есть, в переменную, то есть, например что-бы на номер отсылалась смс с названием бизнеса и его номер, в случае если есть
  • если нету бизнеса, то ничего, просто считывает и все.
Как это делается?
Какой сервер?
Для этого нужно составить регулярку, а для его составления нужнен пример текста из диалога с учетом цветов {FFFFFF}
 
Последнее редактирование модератором:

#Rin

Известный
Всефорумный модератор
1,214
1,035
Как по мне удобнее работать со строками чем извлекать статистику считав сразу весь диалог.
AutoHotKey:
RegExMatch(getDialogLine(24), "Бизнес:\s+(.*)", biz)
addChatMessageEx(0xFFFFFF, "Бизнес: " biz1)
IniWrite, %biz1%, %DIRSET%, Info, BIZ
 

Tanaka

Участник
41
10
спасибо большое.

И ещё, крч когда нажимаю энтер в 1-й строчкой сервер ругается, мол, неверная\несерверная команда, а уже второй делает то на что запрограмированно. Как то избавится 1-ой строчки можно?
blockInput()/ubBlockInput()
Но лучше юзать модифицированный КП от Тумкина, а также модицифированный UDF, вроде как,последней версии.
C++:
#Include, SAMP.ahk ;---Подключение СПЕЦИАЛЬНОГО SAMP UDF.

CommandProcessor := new CommandProcessor()      ;---Регистрация класса.
CommandProcessor.SetStatusProcessor(true)       ;---Включение/отключение класса. true - включить, false - выключить.
CommandProcessor.RegisterCommand("/ahk", "AHK") ;---Первый параметр название команды, второй - метка на которую скрипт перейдет (не функция).
CommandProcessor.RegisterCommand("/help", "Help")
return

AHK:
addChatMessageEx(0xFFFFFF, "Введенная команда: " TempCmd)             ;---TempCmd  - Команда, которую ты ввел.
addChatMessageEx(0xFFFFFF, "Введенный тект после команды: " TempText) ;---TempText - текст, который ты ввел после команды.
return

Help:
addChatMessageEx(0xFFFFFF, "Помощь")
return

#Include, CP.ahk ;---Подключение МОДИФИЦИРОВАННОГО КП by Tumkin.

Здравствуйте, я бы хотел реализовать теги, например, что пишешь в чате /prefix [тег] и при вводе например /d нажимаешь пробел, после чего появляется /d [Тег]
Пример: написал в /d "бла-бла", а в /d уже отправляется твой тэг(который ты сохранил) и текст "бла-бла"
Про КП и UDF читай выше.
C++:
#Include, SAMP.ahk

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

CommandProcessor.RegisterCommand("/savetag", "sTag")
CommandProcessor.RegisterCommand("/d", "dRac")
return

sTag:
IniWrite, % TempText, Tag.ini, Settings, tag
return

dRac:
IniRead, iTag, Tag.ini, Settings, tag
addChatMessageEx(0xFFFFFF, "/d " iTag " бла-бла")
return

#Include, CP.ahk
 
Последнее редактирование модератором:
  • Нравится
Реакции: Cesar Ballard

Fartuk)

Новичок
5
0
Код:
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance, Force
#Include, SAMP.ahk
F4::
addChatMessageEx("DBA901", "{DBA901}[Текст]: Текст")
Sleep 1000
addChatMessageEx("DBA901", "{DBA901}[Текст]: " COL_WHITE "Текст")
Sleep 1000
addChatMessageEx("DBA901", "{DBA901}[Текст]: " COL_WHITE "Текст")
Sleep 1000

1Array := ["1"]
2Array  := ["2"]
3Array  := ["3"]
4Array  := ["Текст"]
5Array  := ["Текст"]
6Array  := ["Текст"]
7Array  := ["Текст"
8Array  := ["Текст"]
9Array  := ["Текст"]
10Array  := ["Текст"]
11Array  := ["Текст"]
12Array  := ["Текст"]
13Array  := ["Текст"]

~F3::


Sleep, 100
ShowDialog(2, "{A818FF}Текст", "Текст`nТекст`nТекст`nТекст`nТекст`n {FFA812}Текст`n {FFA812}Текст`n {FFA812}Текст`n {01A7A7}Текст`n {01A7A7}Текст`n {01A7A7}Текст`n {008A02}Текст`n {FF0000}Текст", "Закрыть")
Line := Lineresult()

if (Line != 15 && Line != 14) {
    For k, v in %Line%Array {
        SendChat(v)
        Sleep, 1500
    }
}
else {
    SendChat(%Line%Array[R])
}
Нужна помощь, интересуют 2 вопроса.
1) Как сделать так, чтобы при выборе в диалоговом окне "Текст", открывало новое диалоговое окно "Текст1" и там уже были варианты "1,2 ,3" и так далее.
2) Есть, к примеру, 3 варианта написания текста в чат (Текст1, Текст2, Текст3). Как сделать так, чтобы скрипт выбрал 1 вариант самостоятельно, ну как бы рандом.
Буду очень признателен, если подскажите, всем печенек :З
 

#Rin

Известный
Всефорумный модератор
1,214
1,035
Код:
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance, Force
#Include, SAMP.ahk
F4::
addChatMessageEx("DBA901", "{DBA901}[Текст]: Текст")
Sleep 1000
addChatMessageEx("DBA901", "{DBA901}[Текст]: " COL_WHITE "Текст")
Sleep 1000
addChatMessageEx("DBA901", "{DBA901}[Текст]: " COL_WHITE "Текст")
Sleep 1000

1Array := ["1"]
2Array  := ["2"]
3Array  := ["3"]
4Array  := ["Текст"]
5Array  := ["Текст"]
6Array  := ["Текст"]
7Array  := ["Текст"
8Array  := ["Текст"]
9Array  := ["Текст"]
10Array  := ["Текст"]
11Array  := ["Текст"]
12Array  := ["Текст"]
13Array  := ["Текст"]

~F3::


Sleep, 100
ShowDialog(2, "{A818FF}Текст", "Текст`nТекст`nТекст`nТекст`nТекст`n {FFA812}Текст`n {FFA812}Текст`n {FFA812}Текст`n {01A7A7}Текст`n {01A7A7}Текст`n {01A7A7}Текст`n {008A02}Текст`n {FF0000}Текст", "Закрыть")
Line := Lineresult()

if (Line != 15 && Line != 14) {
    For k, v in %Line%Array {
        SendChat(v)
        Sleep, 1500
    }
}
else {
    SendChat(%Line%Array[R])
}
Нужна помощь, интересуют 2 вопроса.
1) Как сделать так, чтобы при выборе в диалоговом окне "Текст", открывало новое диалоговое окно "Текст1" и там уже были варианты "1,2 ,3" и так далее.
2) Есть, к примеру, 3 варианта написания текста в чат (Текст1, Текст2, Текст3). Как сделать так, чтобы скрипт выбрал 1 вариант самостоятельно, ну как бы рандом.
Буду очень признателен, если подскажите, всем печенек :З
1 вопрос не понял, появляется диалог с выбором отыгровки, но при этом рандом? Чего?
Насчет второго можно использовать это, а можно написать функцию по типу RandomSendChat("Чебурек 1", "Чебурек 2", "Чебурек 3")
AutoHotKey:
Random, var, 1, 3
If var = 1
{
SendChat("Чебурек номер 1")
}
If var = 2
{
SendChat("Чебурек номер 2")
}
If var = 3
{
SendChat("Чебурек номер 3")
}
 

Fartuk)

Новичок
5
0
Эти 2 вопроса друг от друга не зависят, просто нужно, чтобы при открытии одного диалогового окна, там можно было открыть новое. Типо "Список чего-то" и при выборе этой кнопки открывалось новое диалоговое окно, в котором будут варианты, которые выводятся в чат.
 

#Rin

Известный
Всефорумный модератор
1,214
1,035
Эти 2 вопроса друг от друга не зависят, просто нужно, чтобы при открытии одного диалогового окна, там можно было открыть новое. Типо "Список чего-то" и при выборе этой кнопки открывалось новое диалоговое окно, в котором будут варианты, которые выводятся в чат.
Легче всего это реализовать на этом, пример скрипта с субменю есть там же
*ТыК*
 

Fartuk)

Новичок
5
0
Легче всего это реализовать на этом, пример скрипта с субменю есть там же
*ТыК*
Попробовал сделать, по этому способу, вылезла ошибка, как исправить? :с
111.PNG
 

#Rin

Известный
Всефорумный модератор
1,214
1,035

RTD

Нестандартное звание
Модератор
391
413
Код:
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance, Force
#Include, SAMP.ahk
F4::
addChatMessageEx("DBA901", "{DBA901}[Текст]: Текст")
Sleep 1000
addChatMessageEx("DBA901", "{DBA901}[Текст]: " COL_WHITE "Текст")
Sleep 1000
addChatMessageEx("DBA901", "{DBA901}[Текст]: " COL_WHITE "Текст")
Sleep 1000

1Array := ["1"]
2Array  := ["2"]
3Array  := ["3"]
4Array  := ["Текст"]
5Array  := ["Текст"]
6Array  := ["Текст"]
7Array  := ["Текст"
8Array  := ["Текст"]
9Array  := ["Текст"]
10Array  := ["Текст"]
11Array  := ["Текст"]
12Array  := ["Текст"]
13Array  := ["Текст"]

~F3::


Sleep, 100
ShowDialog(2, "{A818FF}Текст", "Текст`nТекст`nТекст`nТекст`nТекст`n {FFA812}Текст`n {FFA812}Текст`n {FFA812}Текст`n {01A7A7}Текст`n {01A7A7}Текст`n {01A7A7}Текст`n {008A02}Текст`n {FF0000}Текст", "Закрыть")
Line := Lineresult()

if (Line != 15 && Line != 14) {
    For k, v in %Line%Array {
        SendChat(v)
        Sleep, 1500
    }
}
else {
    SendChat(%Line%Array[R])
}
Нужна помощь, интересуют 2 вопроса.
1) Как сделать так, чтобы при выборе в диалоговом окне "Текст", открывало новое диалоговое окно "Текст1" и там уже были варианты "1,2 ,3" и так далее.
2) Есть, к примеру, 3 варианта написания текста в чат (Текст1, Текст2, Текст3). Как сделать так, чтобы скрипт выбрал 1 вариант самостоятельно, ну как бы рандом.
Буду очень признателен, если подскажите, всем печенек :З
Удивительно, как ты сам не додумался то? Элементарно все. Учи основы...
Пример на 5 диалогов которые зависимы от 1-о
AutoHotKey:
ArraysDialog1 := [["Бинд строки 1", "Диалог 1"],["Бинд строки 2", "Диалог 1"],["Бинд строки 3", "Диалог 1"]]
ArraysDialog2 := [["Бинд строки 1", "Диалог 2"], ["Бинд строки 2", "Диалог 2"]]
ArraysDialog3 := [["Бинд строки 1", "Диалог 3"], ["Бинд строки 2", "Диалог 3"]]
ArraysDialog4 := [["Бинд строки 1", "Диалог 4"], ["Бинд строки 2", "Диалог 4"], ["Бинд строки 3", "Диалог 4"]]
ArraysDialog5 := [["Бинд строки 1", "Диалог 5"], ["Бинд строки 2", "Диалог 5"], ["Бинд строки 3", "Диалог 5"]]

~F3::
Sleep, 100
ShowDialog(2, "Диалог 1", "Новый диалог`nТекст`nТекст`nТекст", "Ок") ;1 диалог
line := LineResult()
if (line = 1) {
    showDialog(2, "Диалог 2", "text1`nНовый диалог`ntext2`nНовый диалог", "Ок") ;2 диалог
    line := LineResult()
    if (line = 1 || line = 3)  {
        for i,e in ArraysDialog2[(line = 3 ? 2:1)] { ;line = 3 ? 2:1 - если line = 3, то вернуть 2, иначе 1
            SendChat(e)
            Sleep, 2000
        }
    }else if (line = 2) {
        showDialog(2, "Диалог 4", "text1`ntext2`ntext3`nНовый диалог", "Ок") ;4 диалог
        line := LineResult()
        if (line < 4) {
            for i,e in ArraysDialog4[line] {
                SendChat(e)
                Sleep, 2000
            }
        }else if (line = 4) {
            showDialog(2, "Диалог 5", "text1`ntext2`ntext3", "Ок") ;5 диалог
            line := LineResult()
            for i,e in ArraysDialog5[line] {
                SendChat(e)
                Sleep, 2000
            }
        }
    }else if (line = 4) {
        showDialog(2, "Диалог 3", "text`ntext", "Ок") ;3 диалог
        line := LineResult()
        for i,e in ArraysDialog3[line] {
            SendChat(e)
            Sleep, 2000
        }
    }
}else{
    for i,e in ArraysDialog1[line - 1] { ;line - 1 потому что 1-я строка пропускается
        SendChat(e)
    }
}
Return

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

2) Пример на почти неограниченное кол-во строк(биндов)
AutoHotKey:
!1::
SendChatRandom([["1-й бинд 1-я строка", "1-й бинд 2-я строка"], ["2-й бинд 1-я строка", "2-й бинд 2-я строка"], ["3-й бинд 1-я строка", "3-й бинд 2-я строка", "3-й бинд 3-я строка"]])
Return
SendChatRandom(arraysBind) {
    Random, index, 1, arraysBind.MaxIndex()
    for i,e in arraysBind[index] {
        SendChat(e)
        Sleep, 2000
    }
}
 
  • Нравится
Реакции: Cesar Ballard

Fartuk)

Новичок
5
0
Удивительно, как ты сам не додумался то? Элементарно все. Учи основы...
Пример на 5 диалогов которые зависимы от 1-о
AutoHotKey:
ArraysDialog1 := [["Бинд строки 1", "Диалог 1"],["Бинд строки 2", "Диалог 1"],["Бинд строки 3", "Диалог 1"]]
ArraysDialog2 := [["Бинд строки 1", "Диалог 2"], ["Бинд строки 2", "Диалог 2"]]
ArraysDialog3 := [["Бинд строки 1", "Диалог 3"], ["Бинд строки 2", "Диалог 3"]]
ArraysDialog4 := [["Бинд строки 1", "Диалог 4"], ["Бинд строки 2", "Диалог 4"], ["Бинд строки 3", "Диалог 4"]]
ArraysDialog5 := [["Бинд строки 1", "Диалог 5"], ["Бинд строки 2", "Диалог 5"], ["Бинд строки 3", "Диалог 5"]]

~F3::
Sleep, 100
ShowDialog(2, "Диалог 1", "Новый диалог`nТекст`nТекст`nТекст", "Ок") ;1 диалог
line := LineResult()
if (line = 1) {
    showDialog(2, "Диалог 2", "text1`nНовый диалог`ntext2`nНовый диалог", "Ок") ;2 диалог
    line := LineResult()
    if (line = 1 || line = 3)  {
        for i,e in ArraysDialog2[(line = 3 ? 2:1)] { ;line = 3 ? 2:1 - если line = 3, то вернуть 2, иначе 1
            SendChat(e)
            Sleep, 2000
        }
    }else if (line = 2) {
        showDialog(2, "Диалог 4", "text1`ntext2`ntext3`nНовый диалог", "Ок") ;4 диалог
        line := LineResult()
        if (line < 4) {
            for i,e in ArraysDialog4[line] {
                SendChat(e)
                Sleep, 2000
            }
        }else if (line = 4) {
            showDialog(2, "Диалог 5", "text1`ntext2`ntext3", "Ок") ;5 диалог
            line := LineResult()
            for i,e in ArraysDialog5[line] {
                SendChat(e)
                Sleep, 2000
            }
        }
    }else if (line = 4) {
        showDialog(2, "Диалог 3", "text`ntext", "Ок") ;3 диалог
        line := LineResult()
        for i,e in ArraysDialog3[line] {
            SendChat(e)
            Sleep, 2000
        }
    }
}else{
    for i,e in ArraysDialog1[line - 1] { ;line - 1 потому что 1-я строка пропускается
        SendChat(e)
    }
}
Return

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

2) Пример на почти неограниченное кол-во строк(биндов)
AutoHotKey:
!1::
SendChatRandom([["1-й бинд 1-я строка", "1-й бинд 2-я строка"], ["2-й бинд 1-я строка", "2-й бинд 2-я строка"], ["3-й бинд 1-я строка", "3-й бинд 2-я строка", "3-й бинд 3-я строка"]])
Return
SendChatRandom(arraysBind) {
    Random, index, 1, arraysBind.MaxIndex()
    for i,e in arraysBind[index] {
        SendChat(e)
        Sleep, 2000
    }
}
Ошибка ссылается на что что используется вызов неизвестной функции.
Нужно скачать SAMP UDF последней версии для своего клиента: *ТыК*
Спасибо вам большое)