Набросал ради развлечения небольшой плагин, позволяющий общаться с диалогами любой сложности(но пока урезаные).
Ссылка(ЯДиск, надеюсь можно) :
тык или
Release0000.zip ( 93,47 килобайт )
Кол-во скачиваний: 18250В архиве сам плагин и файл разметки. Плагин в Плагинс, а разметку рядом с пилотом.
Саму разметку пока не документирую(будет, если время позволит), но там несложно разобрать что к чему. Удаление полей чревато исключением(пока нет проверок). Желательно заполнять все поля, однако некоторые спокойно могут быть пустыми(какие именно, укажу возможно позже).
Небольшое описание :
Каждый параметр заключается в *. Например, так : *par1*.
Параметры ЧУВСТВИТЕЛЬНЫ к регистру. Пробелы на концах обрезаются (для поддержки переменных).
Доступные типы элементов:
Form - само окно
Button - кнопка
Edit - поле ввода
Text - текст
Checkbox - флажок
Сами функции :
Код
GUI.ShowForm (<Имя формы>) //Показывает форму с именем
GUI.HideForm (<Имя формы>) //Скрывает форму с именем
GUI.ActionExist () //получение флага события. Возвращает 0 или 1
GUI.GetAcion () //получение описания события. Вернет массив 1х3 с именами
формы, компонента и описанием события.
GUI.Enable (<Тип элемента> <Имя формы> <Имя элемента> <Статус>) //включает/отключает элемент на форме. Статус принимает 0 или 1.
GUI.GetText (<Тип элемента> <Имя формы> <Имя элемента>) //вернет текст элемента.
GUI.SetText (<Тип элемента> <Имя формы> <Имя элемента> <Новый текст>) //устанавливает текст элемента
И небольшой скрипт управления :
Код
//Скрипт обслуживания оболочки
set linedelay 5
//Очистка начального сообщения(пока так)
set $a GUI.ActionExist ()
set #f 1
set logging clear
//Начинаем
while (#f = 1) //пока не прекратим
set $act_ex GUI.ActionExist () //проверим наличие события
if ($act_ex = 1) //если есть событие
set %action GUI.GetAction () //получаем это событие
//тут обработка событий
if (%action[1 3] = BUTTON_CLICK) //если нажата кнопка(любая)
set logging Произошел клик на кнопке с именем %action[1 2]
end_if
if (%action[1 3] = BUTTON_DBL_CLICK) //если дабл.клик кнопки(любая)
set logging Произошел двойной клик на кнопке с именем %action[1 2]
end_if
if (%action[1 3] = EDIT_CHANGE) //если редактируется поле ввода
set $txt GUI.GetText (*Edit* * %action[1 1] * * %action[1 2] *)
set logging Новый текст поля %action[1 2] : $txt
if ($txt = stop) //если введено стоп
set $a GUI.SetText (*Form* *Main* *Стоп!!!!*) //установка заголовка
set linedelay 50 //побольше задержка перед выходом
set #f 0
end_if
if ($txt = msg) //если введено стоп
msg Введено msg
end_if
end_if
end_if
end_while
exit
end_script
Тестировано на XP,7,8,8.1
Вроде все работает, однако могут быть проблемы.
Если понравилось, предлагайте идеи. Может что-то годное и выйдет.
-------------------------------------------------------------
Архив версий: