Приветствую. Недавно начал заниматься простеньким скриптом и столкнулся с проблемой... В основном скрипт работает на переменной, в которую нужно указать имя персонажа в родительном падеже. Но я хотел-бы сделать так, что-бы при перезапуске скрипта не приходилось вводить имя заново. Примерно такое-же можно заметить и в биндере того-же Кваса. Я поискал ещё пару тем на форуме и нашёл тему с похожей функцией в .ini файле. Но в .ini файле, который лежит в папке биндера - ничего подобного нет (я про текст). Ещё хочу спросить, возможно ли такое: один раз ввести имя персонажа в gui, но последующие разы гуи открываться не будет, но если нажать на бинд - то появится возможность изменить имя персонажа.
Код
Gui, Add, Button, x167 y139 w100 h30 gKey , Done Gui, Add, Edit, x92 y99 w130 h30 vName , Gui, Add, Text, x42 y99 w50 h30 , На ухе у Gui, Add, Text, x222 y99 w170 h30 , закреплена bluetooth гарнитура. Gui, Font, S14 CDefault Bold, Verdana Gui, Add, Text, x92 y9 w250 h60 , Введите имя в родительном падеже ; Generated using SmartGUI Creator for SciTE Gui, Show, w438 h228, Имя персонажа return GuiClose: ExitApp return Key: GuiControlGet, Name Gui, Destroy 1: :?:/rf:: SendInput, /rf{space} input, rf, V, {enter} SendMessage, 0x50,, 0x4190419,, A Sleep 100 SendInput, {f6}/do На ухе %Name% закреплена bluetooth гарнитура.{enter} sleep 1000 SendInput, {f6}/me зажал кнопку на гарнитуре.{enter} sleep 1000 sendinput, {f6}/todo %rf% *зажав кнопку.{enter} sleep 1000 SendInput, {f6}/r %rf%{enter} Sleep 1 SendInput, {f6}/me отпустил кнопку на гарнитуре. return
И ещё хотел-бы попросить: Если всё-таки найдётся человек, который исправит это какими-то строками - попрошу объяснить за что отвечают новые строки.
Благодарю за внимание и помощь. Ламер c:
Сообщение отредактировал Danny_Angelos - Четверг, 08.08.2019, 01:20
Danny_Angelos, 1) Подключаешь UDF 2) Подключаешь командный процессор - *тык* 3) Используешь код =) Код даже не проверял, просто наброски. Надеюсь, разберешься. Можешь добавить "помощь" в трей и в диалог в самой игре.
Код
#SingleInstance Force #Include UDF.ahk ; здесь введи название UDF #Include Cmdproc.ahk ; здесь введи название командного процессора if !(FileExist("settings.ini") { ; это проверка на существование .ini файла. Если его нет - скрипт создаст файл. FileAppend, [Settings]`nNick=, settings.ini return } CMD.Register("rf", "Bind") ; Регистрируем команды CMD.Register("rfnick", "ChangeNick") IniRead, nick, settings.ini, Settings, Nick global nick ; объявляем переменную глобальной для вывоза перменной внутри функции exit
Bind(msg) { if (!msg || !nick) ; Если после команды /rf пустота, или в файле .ini отсутствует ник - выдает ошибку. addChatMessage("Error") return
SendChat("/do На ухе " nick " закреплена bluetooth гарнитура") sleep 1000 SendChat("/me зажал кнопку на гарнитуре.") sleep 1000 SendChat("/todo " msg " *зажав кнопку.") sleep 1000 SendChat("/r " msg) sleep 1000 SendChat("/me отпустил кнопку на гарнитуре.") }
ChangeNick(chnick) { if (!chname) ; Если после команды /rfnick пустота - выдает ошибку. addChatMessage("Error") return
IniWrite, % chnick, Settings.ini, Nick ; смена имени в .ini файле addChatMessage("Done") }
Есть предположения, что вторую функцию придется изменить, ибо, скорее всего, там будет отсутствовать нижний дефис "_", то есть /rfnick Nick Name. В этом случае придется использовать: (иначе в переменную chnick мы получим только Nick)
Код
ChangeNick(*Words) { Loop % Words.Length() chnick .= Words[A_Index] " " if !(RegExMatch(chnick, "[A-z]+") || RegExMatch(chnick, "[А-я]+") || RegExMatch(chnick, "[0-9]+")) { ; Если после команды /rfnick пустота - выдает ошибку. addChatMessage("Error") return } IniWrite, % chnick, Settings.ini, Nick ; смена имени в .ini файле addChatMessage("Done") }
Совет: все строки из командного процессора просто перенеси в самый конец UDF файла, тогда придется подключать только один файл. Пытайтесь найти рациональный способ. Ради таких целей делать GUI окна или того более диалоговые окна - бред. Удачного использования.
Сообщение отредактировал [CM]James17 - Четверг, 08.08.2019, 15:00
Ради таких целей делать GUI окна или того более диалоговые окна - бред
А ради такого не бред подключать целый удф + кмд процессор? + Скрипт для крмп.
Цитата[CM]James17 ()
if (!msg || !nick) ; Если после команды /rf пустота, или в файле .ini отсутствует ник - выдает ошибку. addChatMessage("Error") return
Из-за того что вы опускаете блоки - вы делаете очень много ошибок.
Юзать иники для этого? А зачем? Не проще просто тогда текстовик с ником держать? Окей, допустим мы юзаем удф, а зачем тогда эта вся ... с командами, когда есть GetUserName()?
Если-бы я знал, как эту команду юзать... Мне просто нужно, что-бы после ввода в inputbox или в строку "edit" (из гуи) введённые данные сохранялись в каком-то файле, допустим тот-же .ini или .txt, а потом при использовании скрипта оно считывало введённые данные, даже после перезапуска. Ламер c:
Danny_Angelos, alt + 1 открывается инпут куда вводишь ник. На alt + 2 выводится все введённые ники. Так же они сохраняются рядом со cкриптом в файле Nick.txt
Код
!1:: InputBox, varNick, Ввод ника, Введите ник в поле ниже. if (!ErrorLevel) FileAppend, % "`n" varNick, Nick.txt MsgBox, Вы ввели ник: %varNick% Return
!2:: FileRead, nick, Nick.txt MsgBox, % nick Return
Сообщение отредактировал FForest - Пятница, 09.08.2019, 01:18
FForest Да, работает именно так, как мне нужно (вроде-бы). Но я ещё хотел бы узнать за что отвечают строки в первом бинде, так как буду юзать на будущее, а понять за что отвечают эти строки будет сложно. Надеюсь напишешь А, и ещё какие переменные нужно менять? Ну допустим я хочу сделать переменную "character_name", что мне нужно менять в коде? Я только что изменил все слова "nick" на "character_name". Эксперимент вышел неудачный, да. Ламер c:
Сообщение отредактировал Danny_Angelos - Пятница, 09.08.2019, 12:38
!1:: ; Бинд на сочетания кнопок альт + 1 InputBox, varNick, Ввод ника, Введите ник в поле ниже. ; inputBotx - функция которая делает инпут. varNick - переменная куда будет сохранятся данные после ввода в инпут. После заголовок инпута, и описания инпута. if (!ErrorLevel) ; Проверка на валидность. Тут стоит условие если было нажата кнопка отмана, или зарыто то данные не сохраняются. FileAppend, % "`n" varNick, Nick.txt ; fileAppened - Функция которая добавляет данные или создаёт файл. `n значит что данные будут перенесенны на новую строку, varNick переменная с данными которые брались с инпута, Nick.txt = Путь к файлу где буду сохраняться данные. MsgBox, Вы ввели ник: %varNick% ; MsgBox - Функция которая выводит всплывающие окно. Далее текст который будет содиржать окно. Return ; Функция которая останавливает работа скрипта.
!2:: ; Бинд на сочитания кнопок альт + 2 FileRead, nick, Nick.txt ; FileRead - Функция чтения файла. nick переменная куда будут сохранятся данные. Путь к файлу с которого будут доставаться данные в переменную. MsgBox, % nick ; MsgBox - Функция которая выводит всплывающие окно. Далее текст который будет содержать окно. Return ; Функция которая останавливает работа скрипта.
+баночка чешского пивасяндра. Если мне захочется сменить название переменных, то мне просто нужно будет написать что угодно вместо "nick", верно? Ламер c: