2D HUD Viewer.

минимоды и моды к модам
(minimods and 'mods for mods')

2D HUD Viewer.

Сообщение 7.9 » 20 авг 2009, 20:40

Эта тема произошла из этой: viewtopic.php?f=4&t=93
Что это? Это - не для игроков. Это - инструмент.

-----------------------------------------------------------------------------------------------------------------


Инструмент для управления 2D интерфейсом предметов которые можно поместить в слот и активировать. Например: аутентичные документы, электронные устройства, артефакты... в общем, любые предметы которые требуется дать рассмотреть и применить Игроку.
Пока, сделано так "что-бы было". Требуется рефакторинг алгоритма, кода, отвязка от ui_custom_msgs.xml, и не только - наверняка ещё, что-нибудь можно сделать более правильно, но вроде работает.
Специального демо не делал, но приложил два мода для иллюстрации, на них всё отлаживалось.

Версия для ТЧ:
2DHUDViewer(v_a1).7z
(123.05 Кб) Скачиваний: 260


[Показать] Спойлер: "Описание"
С точки зрения сценария и геймплея, 2D Viewer предназначен для работы метафор ("осмотр" объектов "в руках") и ("совершение" действий с объектом "в руках"), но может (и предназначен) не только для этого...

--- Описание.

При активации объекта во 2 или 3 слоте, на экран выводится изображение, работают скрипты, добавляя на изображение динамические детали. Таким образом 2D HUD Viewer показывает "вид объекта" - страницу.

С текущей страницы можно переключиться на другую страницу или вызвать сопоставленный ей скрипт, например - скриптовое окно.

Количество страниц не ограничено.

Управляется всё - четырьмя клавишами:
- активация/деактивация объекта в слоте - клавиша 2 или 3;
- смена страниц вперёд - клавиша "6";
- смена страниц назад - клавиша "5";
- вызов скриптового окна - клавиша "4".

При просмотре страниц движение ГГ не блокируется.
При активации скриптовых окон движение ГГ будет заблокировано.

[Показать] Спойлер: "Установка"
1. Скопировать файлы.
2. Отредактировать файлы:
- в "system.ltx", в конце всех "#include..." добавить строку:
#include "misc\d2hud.ltx"
- в "ui_custom_msgs.xml", в самом начале, после открывающего тега добавить две строки:
#include "ui\ui_custom_msgs_2dhud.xml"
- в файл "bind_stalker.script" в функцию "actor_binder:update()" в самом конце, перед закрывающим "end", добавить строку:
d2hud.update()

[Показать] Спойлер: "Как всё устроено"
1. Для объектов имеющих 2DHUD создана дополнительная секция параметров "d2hud";
2. У предметов имеющих 2DHUD, есть "образы" и "скрипты" для отображения видов объекта на экране;
3. Образы - это графические файлы в формате "dds", которые, должны находиться в папке "textures\d2hud" и иметь имена совпадающие с именем секции соответствующего предмета.
4. Скрипты - это все скрипты в одном файле, который, должен находиться в папке "scripts" и иметь имя совпадающее с именем секции соответствующего предмета.

--- Как сделать 2DHUD объекту.

1. сделать статические образы видов объекта (фото, графика, рисунки...) ;
2. дать им общее осмысленное имя;
3. у каждого образа, в конце имени, через подчёркивание, добавить номер шага просмотра. Например так: спецобъект_1, спецобъект_2 и т.д. Здесь: "спецобъект" - это общая часть имени, а то, что через подчёркиание - "порядок в просмотре".
4. положить образы в папку "textures\docs";
5. Написать скрипты страниц для вывода динамической информации...
6. Дать файлу скриптов имя ТОЧНО такое как общая часть имён у сделанных текстур.
7. Создать секцию объекта с именем ТОЧНО таким как общая часть имён у сделанных текстур, добавить несколько специальных параметров в конфиг, настроить нужные параметры.

--- Настройка параметров 2DHUD-a:

;указание на то, что у объекта есть 2DHUD
d2hud = true

;положение и размер на экране, количество страниц
pages = ... - количество страниц просмотра:
pos_x = ... - координата X верхнего левого угла
pos_y = ... - координата Y верхнего левого угла
d_x = ... - размер по X
d_y = ... - размер по Y

;указание на то, что для объекта используется только одно статическое изображение для всех страниц
monoimage = true/false

;папка с изображенями
img_path = ... - если "auto", то папка textures\d2hud

Динамические элементы страниц - (пока) должны быть описаны в файле "ui_custom_msgs.xml".

--- Как организовывать скрипты для страниц объекта с 2DHUD-ом.

1. Внутри файла скриптов обязательно должны быть четыре функции: on(), off(), update(), menu().
2. Функция on() - функция инициализации динамических элементов. Скрипт d2hud вызывает её при создании новой страници. При вызове передёт ей номер страницы просмотра. Функция должна вернуть число 1 если страницу нужно обновлять, если нет - nil.
3. Функция off() - функция деинициализации динамических элементов. Скрипт d2hud вызывает её при уничтожении текущей страници. При вызове передёт ей номер страницы для уничтожения.
4. Функция update() - функция обновления динамических элементов текущей страницы. Скрипт d2hud вызывает её синхронно с движковым апдейтом bind_stalker.update(). При вызове передёт ей номер страницы для апдейта.
5. Функция menu() - функция вызова произвольного скрипта, Скрипт d2hud вызывает её при нажатии клавиши "4". При вызове передёт ей номер текущей страницы.

--- Пример структуры файла для объекта с 3 страницами, у которого, например, не требуется обновления 2 страницы:

Файл "object_with_2dhud.script"
Код: Выделить всё
function update(page)
if page == 1 then ...
elseif page == 3 then ...
end
end

function menu(page)
if page == 1 then ...
elseif page == 2 then ...
elseif page == 3 then ...
end
end

function on(page)
if page == 1 then ... return 1
elseif page == 2 then ... return nil
elseif page == 3 then ... return 1
end
end

function off(page)
if page == 1 then ...
elseif page == 2 then ...
elseif page == 3 then ...
end
end



[Показать] Спойлер: про прототип 2D HUD Viewer-а - DocViewer
DocViewer

Версия 2.03. (2009.12.17)
Потихоньку рефакторим. Устранено несколько существенных недостатков.
docviewer_v203.7z
(94.29 Кб) Скачиваний: 393

версия для Зова Припяти

ОПИСАНИЕ.

Название : "Просмотр изображений".
Назначение : Улучшение аутентичности информации в игре S.T.A.L.K.E.R.
Версия : 2.03
В реализации, в разное время и в разной мере участвовали(участвуют): 7.9, Malandrinus, kstn.

Установка и использование в игре

1.Скопировать файлы
2.Если docviewer ещё не установлен, то выполнить инструкции из файлов начинающихся с "!!!, если стоит, то копировать только скрипт."
3.Посмотреть как работает:
- получить в игре предмет "doc_photo_demo",
- кладёте в слот,
- показать/убрать - клавиша "2",
- листать вперёд - "6".

Как устроено:

1. Как основа других предметов создан предмет "doc_view";
2. У предметов, созданных на его основе, есть образы для отображения на экране;
3. Образы предмета - это несколько файлов в формате "dds";
4. Образы предметов должны находиться в папке "textures\docs\" и иметь имена совпадающие с именами секций соответствующих предметов.

Как сделать новый предмет, например - документ:

1. сделать образы страниц документа - фото, скриншоты, рисунки...;
2. дать им общее осмысленное имя, и у каждого образа, в конце имени, через подчёркивание добавить номер шага просмотра, вот-так: спецдокумент_1, спецдокумент_2 и т.д. здесь, спецдокумент - это общая часть имени, а то что через подчёркиание - порядок просмотра.
3. перевести всё это в формат Сталкерских текстур (не более 1024х768);
4. положить в папку "textures\docs";
5. в файле "config\gameplay\doc_view_documents.ltx" создать секцию с именем ТОЧНО таким как общая часть имён у сделанных текстур, добавить нужные параметры.

Настройка параметров

1. Минимально, достаточно создать секцию предмета и задать
- количество шагов просмотра
pages =
- и описание
description =

2. Другие параметры, можно указывать по необходимости:
- положение на экране:
pos_x =
pos_y =
- внешний вид
visual =
- вес
inv_weight =
- иконка
inv_grid_width =
inv_grid_height =
inv_grid_x =
inv_grid_y =
- названия в инвентаре
inv_name =
inv_name_short =

3. Возможно, у класса II_ATTCH, есть ещё, какие-нибудь полезные параметры.

4. Рекомендация. Что-бы не перегружать файл "doc_view_documents.ltx" - используйте #include - делаете отдельный файл с конфигами Ваших документов, кладёте его в папку где находиться файл "doc_view_documents.ltx", в начало которого дописываете: #include "имя_Вашего_файла".
_____________________________________________________________
Недокументированное
-- Можно хранить образы документов в подпапках.
1. Указать путь и имя файла образа относительно папки textures напрямую, через параметр "img_path".
Пример: img_path = docs\doc_photo_demo
2. Можно и так: создать подпапку в папке docs и задать имя секции, частью которого, будет имя этой подпапки.
Пример: [mxm\mxm_photo_demo]:view_doc (в роде слеш в имени секции не вредит ничему).

-- Если подправить звуки бинокля, можно "листать" в обратную сторону - клавиша "5" :)


Основное отличие 2D HUD Viewer-а от DocViewer-а - это возможность исполнять скрипты при просмотре "страниц". В простейшем случае, это - запуск звуков, включение/отключение инфопорций, вывод мелкой информации на экран, ну и всякая другая мелочь. Сложные (ёмкие) скрипты то-же работают без проблем - например, STCO-устройство переведённое на 2D HUD Viewer - работает "без вопросов".
Последний раз редактировалось 7.9 20 сен 2011, 03:19, всего редактировалось 81 раз(а).
всё легко
Аватара пользователя
7.9
Теоретик Зоны
 
Сообщения: 787
Зарегистрирован: 01 сен 2008, 20:28

Сообщение 7.9 » 21 авг 2009, 15:06

Про то, что будет и про то, что надо

- Многостраничные документы - будут.
- Проверка отсутствия изображения документа - будет.

Если ещё что-нибудь нужно учесть - пишите здесь.
Последний раз редактировалось 7.9 03 сен 2009, 13:54, всего редактировалось 5 раз(а).
всё легко
Аватара пользователя
7.9
Теоретик Зоны
 
Сообщения: 787
Зарегистрирован: 01 сен 2008, 20:28

Re: DocViewer и "настоящие" документы

Сообщение [XaK] » 21 авг 2009, 15:38

Воу....очень даже круто...спасибо за проделаную работу :)
Аватара пользователя
[XaK]
 
Сообщения: 143
Зарегистрирован: 29 май 2009, 15:05
Откуда: Вельск

Re: DocViewer и "настоящие" документы

Сообщение Renson » 21 авг 2009, 19:52

Вах!
Поясной поклон, пригодится.
Renson
 
Сообщения: 388
Зарегистрирован: 26 фев 2009, 18:51
Откуда: Самара

Re: DocViewer и "настоящие" документы

Сообщение 7.9 » 21 авг 2009, 23:44

Всем большое пожалуйста :)

=========================
Последний раз редактировалось 7.9 31 авг 2009, 15:56, всего редактировалось 1 раз.
всё легко
Аватара пользователя
7.9
Теоретик Зоны
 
Сообщения: 787
Зарегистрирован: 01 сен 2008, 20:28

Re: DocViewer и "настоящие" документы

Сообщение XiaNi » 23 авг 2009, 14:38

7.9
круто, погляжу на досуге как и что =) спасибо
Um... has anyone seen a floating sarcastic skull around here?
Аватара пользователя
XiaNi
shaman
 
Сообщения: 1710
Зарегистрирован: 01 сен 2008, 18:37

Re: DocViewer и "настоящие" документы

Сообщение 7.9 » 23 авг 2009, 18:00

Вышел релиз кандидат первой версии. Ссылка в первом посте.
всё легко
Аватара пользователя
7.9
Теоретик Зоны
 
Сообщения: 787
Зарегистрирован: 01 сен 2008, 20:28

Re: DocViewer и "настоящие" документы

Сообщение G.A.K. » 29 авг 2009, 01:02

Идея понравилась. Но, почему то, не работает. Ребята, сделайте все нормально, что бы тестеру не надо было править файлы, а просто поставить геймдату на сталк и запустить игру.
Водочки, сталкер,
Колбаски и хлеба.
И выпьем, пока еще
Чистое Небо!
Аватара пользователя
G.A.K.
 
Сообщения: 11
Зарегистрирован: 25 авг 2009, 16:58
Откуда: Донбасс

Re: DocViewer и "настоящие" документы

Сообщение Renson » 29 авг 2009, 08:00

G.A.K. писал(а):Идея понравилась. Но, почему то, не работает. Ребята, сделайте все нормально, что бы тестеру не надо было править файлы, а просто поставить геймдату на сталк и запустить игру.

"А ну разбежались и сделал мне как мне надо".
До этого моду ещё расти, это же только проба.
Renson
 
Сообщения: 388
Зарегистрирован: 26 фев 2009, 18:51
Откуда: Самара

Re: DocViewer и "настоящие" документы

Сообщение 7.9 » 31 авг 2009, 15:14

Релиз версии 1 (одностраничной) тихо отменяется и заменяется на RC второй версии (в течение недели). Теперь минимальный документ - лист, две страницы - лицевая и обратная сторона, а многолистовые как открытая книга (журнал, подшивка) - отображаются по 2 страницы.

Вопрос к заинтересованным:
Где правильней расположить реестр (список, описания) конкретных документов?
Если поступать по закону, то надо в папке "config\misc\", а если по справедливости, то в папке "config\gameplay\". Как поступим? По закону? Или по справедливости? ;)
По умолчанию предполагается поступить по справедливости :)
Последний раз редактировалось 7.9 03 сен 2009, 12:43, всего редактировалось 1 раз.
всё легко
Аватара пользователя
7.9
Теоретик Зоны
 
Сообщения: 787
Зарегистрирован: 01 сен 2008, 20:28

След.

Вернуться в Минимоды (Minimods)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

cron