Перейти к содержимому


Фотография

GUI


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 81

#1 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 24 October 2014 - 14:14

Доброго времени суток уважаемые участники форума! Прошу вашей помощи в разъяснении работы системы GUI в Arma3. Если кому то будет не лень написать пример одной менюшки (вложен файл нужного образца) буду очень признателен. Любому совету буду тоже благодарен. 

Прикрепленные файлы

  • Прикрепленный файл  1.png   13.55К   8 Количество загрузок:

  • 0

#2 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 24 October 2014 - 20:20

Сюда заглядывали?

http://arma3.ru/foru...saniiu/?p=16698


  • 0

#3 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 24 October 2014 - 20:28

А вообще, я бы на вашем месте поступил, да поступил бы так, как я всегда поступаю, когда дело безвыходно упирается в GUI.

Иду в

ui_f.pbo

армы, ищу приблизительно похожее на то что мне надо, и начинаю глумиться над этим, и ни чего частенько получается), и с вызовом скриптов для обработки GUI, прям как у БИСов, в формате, так сказать)


  • 0

#4 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 24 October 2014 - 21:49

Сюда заглядывали?

http://arma3.ru/foru...saniiu/?p=16698

Да тут уже был, но либо я в лексиконе специфическом слабоват либо там нет инфы по поводу прикручивания кнопок к мешюшкам и вызова меню кнопками клавы.

 

А вообще, я бы на вашем месте поступил, да поступил бы так, как я всегда поступаю, когда дело безвыходно упирается в GUI.

Иду в

ui_f.pbo

армы, ищу приблизительно похожее на то что мне надо, и начинаю глумиться над этим, и ни чего частенько получается), и с вызовом скриптов для обработки GUI, прям как у БИСов, в формате, так сказать)

У нас с Вами уровень знаний существенно отличается и когда кавыряю файлы разрабов то вижу перед собой сборник инопланетных творений((( 

 

Я вот еще такую штуку нашел 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

 но этот пример для А2 опять же и на том же языке( Кроме того поковырялся в файлах и как я понял это аддон. А это можно ведь делать и без аддона, описывая все это в скрипте и дискрипшене, для меня так пока что проще и тестить легче. 

Еще куча информации есть тут 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

 , тут 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

 и тут 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Но наши соотечественники ни где не выложили ни одного даже самого простейшего примера. А пользуясь переводчиком, даже приблизительного смысла не улавливаю. Думал найти простой образец а потом потихоньку методом тыка на нем остальное все пробовать.


  • 0

#5 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 25 October 2014 - 08:14

имя файла.hpp это уже аддоновский файл? 

И вот это: 

Как то описывается в дискрипшене? Я так понимаю тут описывают все классы которыми будут пользоваться в ходе миссии для GUI.


Сообщение отредактировал Djon: 26 October 2014 - 11:36

  • 0

#6 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 25 October 2014 - 08:23

В целом структура построения диалога пока не понятна, только жалкие кусочки которые получилось урвать то там то тут( 

В моем видении структура такова:

1) описание всех классов в дискрипшене

2) создание конкретных диалогов (тут толи дискрипшен толи скрипт)

3) Оснащение фона диалога кнопками, изображениями, вкладками и т.д. 

4) в зависимости от второго пункта нужно делать вызов этого диалога скриптом или как то иначе

5) Каким то образом прикрутить запуск диалога к какой либо кнопке клавиатуры (это пока за гранью понимания, но крайне необходимо)

Вот как то так(((


  • 0

#7 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 25 October 2014 - 08:55

Djon, 1. Описание базовых классов (Стилей, шрифтов... что бы не приходилось одинаковые настройки для десятка других классов ставить)
2. Описание всех классов (Кнопок, квадратиков, картиночек...) и сбор их в диалоги
3. Присвоение нужным классам (кнопочкам, надписям) скриптов (Переключить влево, нажать это...)
4. Вызов диалога
  • 0

#8 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 25 October 2014 - 09:02

имя файла.hpp это уже аддоновский файл?

Несовсем:
1. Пихаешь в папку с миссией например файлик myDialogs.hpp (обычный блокнот, но в конце приписать .hpp)
2. В description.ext пишешь: #include "myDialogs.hpp" //либо путь до файла: "dialogs/myDialogs.hpp"

Сообщение отредактировал vlad333000: 25 October 2014 - 09:02

  • 0

#9 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 25 October 2014 - 09:46

 

vlad333000, То есть весь сбор самого диалога (того что нужно для конечного результата) происходит в дискрипшене? в файлах hpp мы описываем все базовые классы. Если так то каждому компоненту диалога в дискрипшене присваивается имя к которому можно обратиться из скрипта? И самый волнующий вопрос это как сделать запуск диалога при помощи какой либо кнопки клавы. Если с кликабельными кнопками диалога уже что то прояснил для себя, то каким образом сделать запуск при нажатии кнопки клавиатуры это не могу уяснить еще.


Сообщение отредактировал Djon: 25 October 2014 - 10:45

  • 0

#10 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 25 October 2014 - 16:14

Сюда заглядывали?

http://arma3.ru/foru...saniiu/?p=16698

Тут говорится о двух способах создания диалогов, таких как cutRsc и createDialog. Но автор совсем не уделяет внимания второму примеру и тут же говорит, что именно во втором случае активна мышь. То есть получается cutRsc служит только для вывода каких либо ресурсов на экран для того чтоб ими полюбоваться и всё? 


  • 0

#11 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 25 October 2014 - 16:47

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


  • 0

#12 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 25 October 2014 - 18:03

Попробую разобраться

Сообщение отредактировал Djon: 25 October 2014 - 18:43

  • 0

#13 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 25 October 2014 - 18:17

По данной ссылке я уже бывал, там кое что интуетивно можно понять, но все остальное через переводчик а это потеря смысла написанного гарантирует.

Сообщение отредактировал Djon: 25 October 2014 - 18:41

  • 0

#14 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 25 October 2014 - 18:22

Еще такую штуку нашел, она работает, но как и что тут фурычит не скажу, не знаю. Раз уж эту тему создал то надо выкладывать, может кто то полезное почерпнет.
Вся эта писанина служит для запуска диалога какой либо кнопкой клавиатуры

Вот как то так. Кому то может нужно.


Сообщение отредактировал Djon: 26 October 2014 - 11:37

  • 0

#15 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 25 October 2014 - 19:43

 

 

У нас с Вами уровень знаний существенно отличается и когда кавыряю файлы разрабов то вижу перед собой сборник инопланетных творений((( 

Что бы освоить GUI, придётся изучить как он создаётся, и это ясно, что без вариантов. И тут далеко не самый плохой вариант по модифицировать работу разработчика, поменяли что либо, посмотрели.

 

Если вкратце.

Каждый класс в конфиге описывающем некий GUI, это элемент общей мозаики, например кнопка, и классы обычно имеют интуитивно понятные имена, например, кнопочка

// Generated by unRap v1.06 by Kegetys

class RscButton {
	style = 2;
	x = 0;
	y = 0;
	w = 0.095589;
	h = 0.039216;
	shadow = 2;
	font = "PuristaMedium";
	sizeEx = "(			(			(			((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
	colorText[] = {1, 1, 1, 1.0};
	colorDisabled[] = {0.4, 0.4, 0.4, 1};
	colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.7};
	colorBackgroundActive[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 1};
	colorBackgroundDisabled[] = {0.95, 0.95, 0.95, 1};
	offsetX = 0.003;
	offsetY = 0.003;
	offsetPressedX = 0.002;
	offsetPressedY = 0.002;
	colorFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 1};
	colorShadow[] = {0, 0, 0, 1};
	colorBorder[] = {0, 0, 0, 1};
	borderSize = 0.0;
	soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter", 0.09, 1};
	soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush", 0.09, 1};
	soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick", 0.09, 1};
	soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape", 0.09, 1};
};

Как видите, имя класса вполне говоряще, я батончик.

 

И вот этот класс батончика описывает, как будет выглядеть батончик, цвета, звуковые эффекты, позиция на относительно дисплея которому будет принадлежать этот батончик, и тд.

 

Понимаете, самый лучший способ понять, это по практиковаться на готовом.


  • 0

#16 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 25 October 2014 - 19:53

имя файла.hpp это уже аддоновский файл? 

И вот это: 

 

// Control types

#define CT_STATIC           0

#define CT_BUTTON           1

#define CT_EDIT             2

#define CT_SLIDER           3

#define CT_COMBO            4

#define CT_LISTBOX          5

#define CT_TOOLBOX          6

#define CT_CHECKBOXES       7

#define CT_PROGRESS         8

#define CT_HTML             9

#define CT_STATIC_SKEW      10

#define CT_ACTIVETEXT       11

#define CT_TREE             12

#define CT_STRUCTURED_TEXT  13

#define CT_CONTEXT_MENU     14

#define CT_CONTROLS_GROUP   15

#define CT_SHORTCUTBUTTON   16

#define CT_XKEYDESC         40

#define CT_XBUTTON          41

#define CT_XLISTBOX         42

#define CT_XSLIDER          43

#define CT_XCOMBO           44

#define CT_ANIMATED_TEXTURE 45

#define CT_OBJECT           80

#define CT_OBJECT_ZOOM      81

#define CT_OBJECT_CONTAINER 82

#define CT_OBJECT_CONT_ANIM 83

#define CT_LINEBREAK        98

#define CT_USER             99

#define CT_MAP              100

#define CT_MAP_MAIN         101

#define CT_LISTNBOX         102

 

Как то описывается в дискрипшене? Я так понимаю тут описывают все классы которыми будут пользоваться в ходе миссии для GUI.

 

Это статичные переменные, то есть

CT_LISTNBOX == 102

Статичная переменная CT_LISTNBOX будет представлять число 102, то есть, если вы к конфиге будете использовать вместо конкретного числа имя статичной переменной, то вы с минимальными затратами сможете модифицировать конфиг, изменив всего лишь значение самой статичной переменной, а не лазить по всем классам конфига и править в сотне мест.

 

ЗЫ

По сути это вполне можно использовать не только в конфигах, но и в коде, у меня например есть и такой инит миссии

enablesaving [false, false];

_mode = "Npc_module";

switch (_mode) do {
	case "Agent_loiter": {
		#include "include\agentLoiter.inc"  // это теже файлы sqf, а так как код находящийся в них внедряется в другой файл, им дано расширение дающее это понять
	};
	case "Agent_loiter_2": {
		#include "include\agentLoiter_2.inc"
	};
	case "Unit_loiter": {
		#include "include\unitLoiter.inc"
	};
	case "Npc_module": {
		#include "include\npcModule.inc"
	};
};

Сообщение отредактировал SteelRat: 25 October 2014 - 20:02

  • 0

#17 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 25 October 2014 - 19:56

В очередной раз воспользуюсь вашим советом))) И мои соболезнования разработчикам после того как я запущу в их творение свои рецепторы)))))
  • 0

#18 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 25 October 2014 - 20:11

SteelRat, у меня вот с такими моментами проблема еще дикая 

_mode = _this select 0;
_params = _this select 1;
_class = _this select 2;

Что делают селекты? Вот это отдельный скрипт у разрабов, в чем его смысл?


Сообщение отредактировал Djon: 26 October 2014 - 10:57

  • 0

#19 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 25 October 2014 - 20:16

 

Сюда заглядывали?

http://arma3.ru/foru...saniiu/?p=16698

Тут говорится о двух способах создания диалогов, таких как cutRsc и createDialog. Но автор совсем не уделяет внимания второму примеру и тут же говорит, что именно во втором случае активна мышь. То есть получается cutRsc служит только для вывода каких либо ресурсов на экран для того чтоб ими полюбоваться и всё? 

 

Вам нужен именно диалог.


В очередной раз воспользуюсь вашим советом))) И мои соболезнования разработчикам после того как я запущу в их творение свои рецепторы)))))

Не стесняетесь, они не обидятся. Глядишь придёт время сами им впарите что нибудь!)


SteelRat, у меня вот с такими моментами проблема еще дикая 

_mode = _this select 0;

_params = _this select 1;

_class = _this select 2; 

 

Что делают селекты? Вот это отдельный скрипт у разрабов, в чем его смысл?

 

ArmA Scripting Tutorials: Переменные (Часть Номер Раз).


Автор: KillzoneKid

Оригинал: 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Скрытый текст 
 

 

 

ArmA Scripting Tutorials: Переменные (Часть Номер Два).

Автор: KillzoneKid

Оригинал: 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Скрытый текст 
 

 

 


ArmA Scripting Tutorials: Переменные (Часть Номер Три).

Автор: KillzoneKid

Оригинал: 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Скрытый текст 
 

 

 

ArmA Scripting Tutorials: Специальные Приватные Переменные.

Автор: KillzoneKid

Оригинал: 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Скрытый текст 
 

 

 

ArmA Scripting Tutorials: Массивы (Часть Номер Раз).

Автор: KillzoneKid

Оригинал: 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Скрытый текст 
 

 

ArmA Scripting Tutorials: Массивы (Часть Номер Два).

Автор: KillzoneKid

Оригинал: 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Скрытый текст 
 

 

ArmA Scripting Tutorials: Массивы (Часть Номер Три).

Автор: KillzoneKid

Оригинал: 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Скрытый текст 

 

http://arma3.ru/foru...kriptopisaniiu/

 

Обязательно к прочтению всё что перечислено, а по хорошему, всё что выложенно в ветке!)


  • 0

#20 OFFLINE   Djon

Djon

    Старшина

  • Пользователи
  • 433 сообщений

Отправлено 25 October 2014 - 20:35

Я это все от начала до конца прочел, но вот почему то пока не понадобится что то конкретно, оно не воспринимается в общей массе написанного. Обязательно буду перечитывать. 


// Generated by unRap v1.06 by Kegetys

class RscButton {
	style = 2;
	x = 0;
	y = 0;
	w = 0.095589;
	h = 0.039216;
	shadow = 2;
	font = "PuristaMedium";
	sizeEx = "(			(			(			((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)";
	colorText[] = {1, 1, 1, 1.0};
	colorDisabled[] = {0.4, 0.4, 0.4, 1};
	colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 0.7};
	colorBackgroundActive[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 1};
	colorBackgroundDisabled[] = {0.95, 0.95, 0.95, 1};
	offsetX = 0.003;
	offsetY = 0.003;
	offsetPressedX = 0.002;
	offsetPressedY = 0.002;
	colorFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", 1};
	colorShadow[] = {0, 0, 0, 1};
	colorBorder[] = {0, 0, 0, 1};
	borderSize = 0.0;
	soundEnter[] = {"\A3\ui_f\data\sound\RscButton\soundEnter", 0.09, 1};
	soundPush[] = {"\A3\ui_f\data\sound\RscButton\soundPush", 0.09, 1};
	soundClick[] = {"\A3\ui_f\data\sound\RscButton\soundClick", 0.09, 1};
	soundEscape[] = {"\A3\ui_f\data\sound\RscButton\soundEscape", 0.09, 1};
};

А такие элементы одного GUI собираются сразу во едино или их потом можно каждый по отдельности запустить и тем самым построить этот элемент? И они все запускаются при помощи 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

 ?


  • 0




Яндекс.Метрика