Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » The Long Dark | страница 2
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 2 из 3
На страницу: Пред.  1, 2, 3  След. | Все страницы
Поиск в этой теме:
Другие игры: «The Long Dark»
Bloodest
 155 EGP


Рейтинг канала: 4(64)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
На простых уровнях - не жрут, если только явно не выкинуть как приманку.

Поэкспериментировал. Во всяком случае на "скитальце" жратву, подлежащую термообработке, можно хранить сколь угодно долго, т.к. на этом уровне нет отравлений и жрать можно любую гниль (но убитое в ноль % - все же игра есть не даст). Можно и сырец, но у него калорийность на ~10% ниже.

-Любая убитая вещь положенная на пол/ в снег или если она достигла там такой стадии - не пропадает (не будет игрой автоматом удалена). В ящике - пропадет.
-Калорийность со "старением" %% не падает.
-Убитое в ноль "сырое" можно жарить - получаем полный аналог свежего по калориям, но со стартовыми 50%.
-Не обработанное мясо портится со скоростью 50% в сутки - в туше / переноске без сброса, 10% в снегу/ переноске после сброса ( т.е. если разделали тушку мясо надо выкинуть на снег, тогда при последующей переноске на место складирования порча уменьшиться в разы . Обработанное 2% в снегу / переноске.

Т.е. в пределе "развития" - сваливаем жрачку возле места готовки в снег. И раз в 20-30 дней устраиваем поварской день.

"Бортики" - эт если онлайн - т.е. можно воочию увидеть как зверь подошел и пожирает твой запас. Все очень просто - в современных играх для АИ используют "сетку движения" - если игрок/лут вне сетки, АИ на них не реагирует ни как. В оффлайне (на больших дистанциях/других уровнях, где нет отрисовки) в играх используют(если делают оффлайн а-лайф) некоторое расстояние от точки спавна (т.н. агро радиус)зверя/врага до нычки/лута - если ближе - сожрет (практически всегда для агры, ангри или роения используют просто сумму координат (не корень из суммы квадратов) - область представляет собой не круг, а квадрат повернутый до ромба - те подбираясь по промежуточному направлению, нпр. с северо-запада и т.д. можно подобраться/убежать гораздо ближе/быстрее чем севера или востока).
    Добавлено: 10:32 10-04-2017   
Nekko
 124 EGP

Рейтинг канала: 2(11)
Репутация: -28
Сообщения: 1425

Зарегистрирован: 11.01.2016
Угу, жаль что реально спастись нельзя... пофиг что зима бесконечна, но нет ни сюжетки ни концовки, большинство времени эдак 70% это жрать, спать, пить, спать, пить,жрать, пить и спать... и только 30% это перемещение, охота, собирательство ремонт... Хы...

не хватает условных "квестов" , ну начиная от подсказок что и где найти можно (хотя они в игре есть, но их мало) и заканчивая познания ситуации в мире, об аномалии, ну и возможности спастись. Подмигиваю

Сколько лет уже прошло, а хотя бы сюжетку так и не сделали.
    Добавлено: 13:00 10-04-2017   
McRousseaux
 843 EGP


Дозвизделся
Рейтинг канала: 3(30)
Репутация: 210
Сообщения: 6930 Предупреждений: 1
Откуда: ) и все мы
Зарегистрирован: 31.01.2005
Bloodest :
Во всяком случае на "скитальце"

На скитальце неинтересно - там и волки не нападают
_________________
МакРуссо, он же Мак, он же Руссо.
Пират, контрабандист. Отличается пристрастием к рому.
Характер скверный.
Не женат.
    Добавлено: 17:40 11-04-2017   
Bloodest
 155 EGP


Рейтинг канала: 4(64)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Спать-жрать можно разнообразить сбросом карт (вычитал, проверил - работает) - когда все изучил и дальше нечего делать - заползаешь в дом, скидываешь все (можно до трусов)- подходишь к двери ставишь на игру паузу. При запущенной игре на паузе грохаешь zip в савке игры (в нем состояние всех локаций и лута на них). Снимаешь с паузы и выходишь в дверь. Усе - все накопленное пропадет, произойдет новый респ. Если в доме лут какой заспавнится - будет помощь.
c:\users\<USER>\appdata\local\hinterland\TheLongDark\save00x\scenes.zip
где x- номер еще живого перса по порядку создания.


На пилигриме не нападают. На скитальце нападают , только ангри радиус у них меньше.
    Добавлено: 19:33 12-04-2017   
Nekko
 124 EGP

Рейтинг канала: 2(11)
Репутация: -28
Сообщения: 1425

Зарегистрирован: 11.01.2016
Bloodest :
Спать-жрать можно разнообразить сбросом карт (вычитал, проверил - работает) - когда все изучил и дальше нечего делать - заползаешь в дом, скидываешь все (можно до трусов)- подходишь к двери ставишь на игру паузу. При запущенной игре на паузе грохаешь zip в савке игры (в нем состояние всех локаций и лута на них). Снимаешь с паузы и выходишь в дверь. Усе - все накопленное пропадет, произойдет новый респ. Если в доме лут какой заспавнится - будет помощь.
c:\users\<USER>\appdata\local\hinterland\TheLongDark\save00x\scenes.zip
где x- номер еще живого перса по порядку создания.


На пилигриме не нападают. На скитальце нападают , только ангри радиус у них меньше.


Позволь спросить, пропадает то что скинул или что на тебе? Если же наоборот набрать все, а потом твоим методом сбросить - респаун не произойдет? Ачивки получать можно будет из-за вот такого "читинга"?

Имхо так ломается вся суть игры, ибо по факту ты можешь просто путешествовать между двумя точками, скажем ГЭС и Администрацией лагеря, ну и лут возобновлять.
    Добавлено: 08:05 13-04-2017   
Bloodest
 155 EGP


Рейтинг канала: 4(64)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Ну читерить можно и гараздо "щетельнее" - в сети есть редактор сейва (в части лута на игроке - можно добавить в рюкзак чего угодно). Потом сейв можно "бакупировать" - что не понравилось - вернулся назад.
Структура сейва следующая

Корневая папка : c:\users\<USER>\appdata\local\hinterland\TheLongDark
в ней

user001 - файл с достижениями и списком активных прохождений
save00x - папки c папки с активными прохождениями
autosave - используется только при работе игры, при выходе из нее вся инфа стирается.

Папки save00x

boot - имя и версия локации где сейчас находится ГГ.
global - текущее состояние некоторых менеджеров и лут на игроке
scenes.zip - состояние локаций - не сжатый стандартный zip. В нем отдельными файлами состояние локаций. Имя в boot соответствует имени файла.
==========
Для защиты от "глабального пинцета" - по факту на прохождении только один сейв - при повреждении данных в савке - выстроена система довольно сложная система верификации данных. При повреждении данных - производится до-восстановление потери по алгоритму старта игры.

Т.е. если стереть scenes.zip - будут потеряны все данные о состоянии карт - лут/бункеры и проч. рандомное - будет заспавлено в новом варианте. Поскольку global и boot не трогали - лут на ГГ не пропадет.
    Добавлено: 10:55 13-04-2017   
Nekko
 124 EGP

Рейтинг канала: 2(11)
Репутация: -28
Сообщения: 1425

Зарегистрирован: 11.01.2016
Bloodest :
Ну читерить можно и гараздо "щетельнее" - в сети есть редактор сейва (в части лута на игроке - можно добавить в рюкзак чего угодно). Потом сейв можно "бакупировать" - что не понравилось - вернулся назад.
Структура сейва следующая

Корневая папка : c:\users\<USER>\appdata\local\hinterland\TheLongDark
в ней

user001 - файл с достижениями и списком активных прохождений
save00x - папки c папки с активными прохождениями
autosave - используется только при работе игры, при выходе из нее вся инфа стирается.

Папки save00x

boot - имя и версия локации где сейчас находится ГГ.
global - текущее состояние некоторых менеджеров и лут на игроке
scenes.zip - состояние локаций - не сжатый стандартный zip. В нем отдельными файлами состояние локаций. Имя в boot соответствует имени файла.
==========
Для защиты от "глабального пинцета" - по факту на прохождении только один сейв - при повреждении данных в савке - выстроена система довольно сложная система верификации данных. При повреждении данных - производится до-восстановление потери по алгоритму старта игры.

Т.е. если стереть scenes.zip - будут потеряны все данные о состоянии карт - лут/бункеры и проч. рандомное - будет заспавлено в новом варианте. Поскольку global и boot не трогали - лут на ГГ не пропадет.


Разозлен бегу удалять игру....ибо данная информация подсказывает мне что есть игроки с 600+ днями и со всеми ачивками в игре, да еще обзывающихся остальных - нубами.
    Добавлено: 11:19 13-04-2017   
AlexD
 383 EGP


Репутация: 82
Сообщения: 1084
Откуда: Тюмень, Россия
Зарегистрирован: 25.04.2003
Bloodest :
Т.е. если стереть scenes.zip - будут потеряны все данные о состоянии карт - лут/бункеры и проч. рандомное - будет заспавлено в новом варианте. Поскольку global и boot не трогали - лут на ГГ не пропадет.


Nekko :
ибо данная информация подсказывает мне что есть игроки с 600+ днями и со всеми ачивками в игре, да еще обзывающихся остальных - нубами.


А нафиг оно надо намеренно такое делать? Никакого интереса. А так вона сколько приключений получается: обморозился пока гулял (до 30%), решил проверить советы местных про розжиг огня лупой и подъема оттуда головешки, зажег, хотел взять головешку, неровно дернулся и залез в огонь, одновременно открыв инвентарь. Пока вылезал из инвентаря сгорел к чертям. Гы-гы Знатно отогрелся.
_________________
тетрагидрометаноптерина макарена
метилентетрагидрофолата макарена
ЭЭЭЭЭ МАКАРЕНА

Последний раз редактировалось: AlexD (14:31 13-04-2017), всего редактировалось 2 раз(а)
    Добавлено: 14:30 13-04-2017   
Nekko
 124 EGP

Рейтинг канала: 2(11)
Репутация: -28
Сообщения: 1425

Зарегистрирован: 11.01.2016
AlexD :
Bloodest :
Т.е. если стереть scenes.zip - будут потеряны все данные о состоянии карт - лут/бункеры и проч. рандомное - будет заспавлено в новом варианте. Поскольку global и boot не трогали - лут на ГГ не пропадет.


Nekko :
ибо данная информация подсказывает мне что есть игроки с 600+ днями и со всеми ачивками в игре, да еще обзывающихся остальных - нубами.


А нафиг оно надо намеренно такое делать? Никакого интереса. А так вона сколько приключений получается: обморозился пока гулял (до 30%), решил проверить советы местных про розжиг огня лупой и подъема оттуда головешки, зажег, хотел взять головешку, неровно дернулся и залез в огонь, одновременно открыв инвентарь. Пока вылезал из инвентаря сгорел к чертям. Гы-гы Знатно отогрелся.


Намеренно то понятно, но вот что-то дофига появилось игроков с 600+ дней жизни - и фуллачивками, с советами как правильно собрать все... Я более того уверен что они еще сейвы сохраняют паралельно основному....ну дескать вдруг как ты случайно помрешь, и достаточно просто подгрузить куда надо.

Имхо вижу только один путь, делать облачный хост, где эти сейвы и хранились в недоступном месте. Но для автора этой игры скорее будет обуза.
    Добавлено: 07:42 14-04-2017   
lionezzz
 1723 EGP


Модератор
Рейтинг канала: 6(339)
Репутация: 298
Сообщения: 5523
Откуда: Москва
Зарегистрирован: 19.02.2005
Ну все ачивки набираются при прохождении на самом легком уровне сложности. У меня все никак руки не доходят их набить Улыбка
_________________
...And Justice for All
    Добавлено: 11:59 14-04-2017   
Bloodest
 155 EGP


Рейтинг канала: 4(64)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
ИМХО
Количество дней и скаутские значки - шлак для детей. Главное "велосипеды" гемплея что изобрели авторы.
Не у всех достаточно времени для того чтобы начинать раз разом.
Посмотрел механику и в топку - полно и более интересных игрух.

Хранить савки в сети бесполезно - потому как несколько менее валидный, чем бакупирование сейвов, лайфхак -"катапультирование" работает и здесь.

Ну посмотрел из чего состоят савки внутри - эт пакованные json.
Для гемплея вывод один - любой раненый зверь умирает. Его тушка "хранится" вечно, только если "контейнер" пуст, точнее мяса в нем менее 1 кг, тогда выставляется флаг "невидимый". Менее 1 кг достигается либо потрошением либо гниением - поскольку тушка это контейнер - то после старения до 0% вещь удаляется.
Тож самое и со стрелами, что улетели, или "уехали" на раненой зверушке - они будут вечно лежать - куда упали или где сгнила зверушка. Т.е. иногда умирая зверь падает на стрелу - она под ним - надо выпотрошить, пометить/запомнить место. Через пару часов (в оффлайне) трупик "сгниет" - стрела останется.
Раньше я думал что при выбеге раненого за онлайн он удаляется - ни фига он может убежать по прямой (если местность равнинная, без непроходимых стен) очень даже далеко 300-400 попугаев. Ну и в савке 123 дня увидел стрелу что профукал на 7-ом дне - я почему-то посчитал что стрелял в одном направлении - на самом деле почти на 60 градусов в сторону.
Чтобы завалить медведя - достаточно одной пули или стрелы и не важно куда - достаточно чтобы брызнула кровь. Запоминаем сколько в статистике убито медведей, где стреляли, время от времени проверяем - когда увеличится - идем искать трупик от места попадания спиралью.
    Добавлено: 19:44 14-04-2017   
lionezzz
 1723 EGP


Модератор
Рейтинг канала: 6(339)
Репутация: 298
Сообщения: 5523
Откуда: Москва
Зарегистрирован: 19.02.2005
Bloodest :
Тож самое и со стрелами, что улетели, или "уехали" на раненой зверушке - они будут вечно лежать - куда упали или где сгнила зверушка. Т.е. иногда умирая зверь падает на стрелу - она под ним - надо выпотрошить, пометить/запомнить место. Через пару часов (в оффлайне) трупик "сгниет" - стрела останется.
стрелы иногда под текстуры проваливаются безвозвартно. Проверено Улыбка

добавлено спустя 34 секунды:
Bloodest :
Чтобы завалить медведя - достаточно одной пули или стрелы и не важно куда - достаточно чтобы брызнула кровь. Запоминаем сколько в статистике убито медведей, где стреляли, время от времени проверяем - когда увеличится - идем искать трупик от места попадания спиралью.
имхо гораздо проще охотиться на медведей прячась в домики
_________________
...And Justice for All

Последний раз редактировалось: lionezzz (19:47 14-04-2017), всего редактировалось 1 раз
    Добавлено: 19:47 14-04-2017   
lionezzz
 1723 EGP


Модератор
Рейтинг канала: 6(339)
Репутация: 298
Сообщения: 5523
Откуда: Москва
Зарегистрирован: 19.02.2005
На офф сайте начался отсчет (чуть больше 19 дней). Видимо, до выхода сюжетного режима
_________________
...And Justice for All
    Добавлено: 13:09 15-04-2017   
lionezzz
 1723 EGP


Модератор
Рейтинг канала: 6(339)
Репутация: 298
Сообщения: 5523
Откуда: Москва
Зарегистрирован: 19.02.2005
хотя нет, похоже все таки крайнее обновление для сурвайвала перед стори модом
_________________
...And Justice for All
    Добавлено: 14:41 15-04-2017   
McRousseaux
 843 EGP


Дозвизделся
Рейтинг канала: 3(30)
Репутация: 210
Сообщения: 6930 Предупреждений: 1
Откуда: ) и все мы
Зарегистрирован: 31.01.2005
Bloodest :
Чтобы завалить медведя - достаточно одной пули или стрелы и не важно куда

а хрена там. Вы, уважаемый теоретик сами пробовали или это - "концепт"?
_________________
МакРуссо, он же Мак, он же Руссо.
Пират, контрабандист. Отличается пристрастием к рому.
Характер скверный.
Не женат.
    Добавлено: 22:56 15-04-2017   
lionezzz
 1723 EGP


Модератор
Рейтинг канала: 6(339)
Репутация: 298
Сообщения: 5523
Откуда: Москва
Зарегистрирован: 19.02.2005
если в голову попасть, то на медведя надо 2 пули в лоб. Про стрелы хз, такой мазохизм мне не особо по нраву Улыбка
С волками еще проще, если запастись лекарствами, можно валить без лука/ружья - вступаешь в рукопашку, быстро отхиливаешься и идешь по кровавым следам. Есть еще более простые способы, но уже оружие нужно - либо агришь, потом скидываешь мясную наживку, либо гонишь оленя на волка - после этого гарантировано есть несколько секунд, чтобы хорошо прицелиться и убить с 1 выстрела в голову.
_________________
...And Justice for All
    Добавлено: 23:25 15-04-2017   
Bloodest
 155 EGP


Рейтинг канала: 4(64)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
McRousseaux :
Bloodest :
Чтобы завалить медведя - достаточно одной пули или стрелы и не важно куда

а хрена там. Вы, уважаемый теоретик сами пробовали или это - "концепт"?

Ясен пень. И ружо и лук, с волками драка с ножом (нужна победа в драке).
Дык если сейв вскрыт то посмотреть не составляет труда. Да и безо всяких взломов. Выстрелили, попали - смотрим Журнал - сколько убили. Ждем пока счетчик убийств не увеличился.

Пример со чтением сейва.
История. Отрадная долина. Иду от Адреналинового моста к дому центральной усадьбы. Шляются олени пальнул в одного "на удачу" - попал.
Стрела сломалась - подобрал сразу. Олень бегает как угорелый. Пошел к дому - оба-на - к авто у дома бредет медведь. Я сторонкой подошел к люку в подвал и из-за угла смотрю - он уже переваливает через сугроб к веранде кухни. Пальнул с 15 метров - промахнулся - нырк в подвал. Подождал пару минут - вылажу. Заглянул за угод - нету. Пошел аккуратно дальше, открыл дверь веранды, заглядываю за следующий угол - он в 3ех метрах попой ко мне - ну я и всадил стрелу - кровь брызнула - дальше (полезет на меня или убежит) разбираться не стал. Ноги в руки и галопом через веранду на кухню. Разгрузился, поел, попил поспал 4 часа. Сейв после сна вскрыл. Проверил и оленя и мишу и стрелу возле него.
 Спойлер.Видна часть карты долины   (кликните здесь для просмотра)

В качестве подложки-карты. В инете надыбал, вроде финн какой нарисовал.
Поверх карты - спрайты раскиданные программой - читателем_сейва авоматом (коричневые мордочки - тушки зверей - рядом описалово - кондиция сколько мяса,шкур,кишок в нем), красный ромб - отдельно лежащий предмет (+описалово что, кондиция, вес) , желтый квадрат - ящик/труп/рюкзак/багажник (контейнер) - если описалово есть - что в нем лежит, зеленый круг - растительность что можно собрать. Все это ситуационно - на данный момент - если собрать метка изменится/пропадет.
Стрелки ручками дорисованы - прямая от места ранения зверя до тушки.


Миша пробежал прежде чем умереть, минимум, 540 попугаев, олень 270. Это при том что вся карта долины 2500*2500 попугаев. Если оленя как-то от места ранения разглядеть можно то медведя нет - только случайно найти.

Кстати для меня оказалось не очевидным - почтовые ящики и решетки вентиляции в бункерах можно открывать - это не контейнеры - надо встать лицом к "крышке" и взаимодействовать с ней - она повернется и за ней что-то может и лежать.

 Технология программы   (кликните здесь для просмотра)

Сам TLD написан на основе UNITY, под не слишком дорогой лицухой. Поэтому в tld.exe от игры если только название и возможность менять стартовые заставки - т.е. это переименованный UNITY лаунчер, сама игра в tld_Data\Managed\Assembly-CSharp.dll - штатно для UNITY.
Язык скриптования для UNITY - c#. Версию .net можно выцедить через первую строчку файла лога tld_Data\output_log.txt
Initialize engine version: 5.4.0p3 (dac96b578024)
Т.е. 5.4 F3 идем на сайт юнити и получаем что что это .net 4.0
Берем мелкосовтовской визуал-студио (родной для UNITY MONO заточен под юникс, а версия под винды убога и глючна, главное для с# в том что сам компилятор, какую бы среду не использовали, лежит не в среде разработки а в .net той версии что выставите - и до барабана до среды или вообще просто текстового редактора компилятор используется один и тот же).

Некоторую особенность составляет отладка аддонов к играм на UNITY в мс студио. Нужны три спец приблуды - отладчик под студио для юнити, конвертор отладочной информации из студио формата в моно и отладочный лаунчер юнити.
Первый есть на сайте мелкосовта - исправно обновляется и под новые версии студио и тщательно под изменения в inity/mono. Конкурентная борьба против моно, в свое время была куплена контора-разработчик этого отладчика и отдадчик сделан бесплатным. Работает и на бесплатной студио. Два последних в сдк юнити - в любой версии лицензии (бесплатной).Но это потребуется для написания "модов". Сейчас просто читаем сейв.

В простейшем виде создаем консольное c# приложение и референсом указываем Assembly-CSharp.dll. Смотрим что там в пабликах - а в пабликах там целый состав + вагон + тележка... Только вариантов json несколько.
Открываем в текстовом редактором файлик из сейва - похоже на json. Пошинкован только он чем то. Нужно восстановить.Ну дык в объект-броузере ищем в игровой dll compress или crypt - есть такое в одном классе
public class EncryptString
Эксперементируем - искомая функция
DecompressBytesToString
получаем строку json - идеальну, но с кучей палок - это означает что json комплексный - т.е. в одном json-е лежит другой и т.д. чем больше палок тем глубже вложенность.
Ну дык прям в игре лежит тулз для "потрошения". Newton.Json
Почитав доки и поэкспериментировав можно найти простой способ - см ParseData на картинке - построчный парсинг. (в качестве примера выбран не корневой - он прост - только набор суб-джсонов)
http://koavia.com/n1/TLD/save/vs1.jpg
Парсинг дает нечто в виде
http://koavia.com/n1/TLD/save/vs6.jpg
Т.е. класс должен содержать проперти m_SerializedItems - массив объектов с определением в виде класса с пропертями
String m_PrefabName
String m_SearializedGear

m_SearializedGear - следующий джсон

и т.д. во внутрь - получаем структуру классов в виде
http://koavia.com/n1/TLD/save/vs2.jpg

Если для чтения использовать тот же Newton то он значительно отличается от системного - он читает в целевой класс только проперти, причем читать можно не всё а вот "левые" проперти, коих имен нет в json вызывают исключение. Простые переменные игнорируются. Пытка прочитать все сразу на 99% обречена на неудачу. Поэтому у меня цепочечное чтение. Корень читается отдельно (vs1.jpg)
Код:
JsonTextReader reader = new JsonTextReader(new StringReader(decData));
SaveRegion SR = (new JsonSerializer()).Deserialize<SaveRegion>(reader);


остальное цепочечно по вызову
Код:
SR.ParseElements();

Восходящие звенья цепки в субклассах - одноменные ParseElements()
(vs2.jpg)

Глобальный подводный камень - библиотека игры не имеет своего отдельного пространства имен. И часть системных вызовов (например new для системных типов) без подключения пространства имен и модуля UnityEngine скомпилировать не удастся.

Ну, дальше полученные данные можно анализировать как угодно.

Я визуализировал в MS Visio (платное приложение, продаваемое отдельно или в составе "старших" (более дорогих) версий состава продуктов оффиса). Что-то среднее между компасом и фотошопом. В конце 90-х было куплено вместе с конторой что его разработало, в отличие от нокиа живет вот уже почти 20 лет, хотя и потеряло очень многое, а приобрело не ахти, впрочем как и остальные приложения офиса - все новое практически одна не продуманная попса). Как и все офисные приложения мелкософта он поддерживает внешнее com управление. Инициализируется как обычно -
подключением библиотеки с именем "Microsoft Visio 12.0 Type Library" - программно это пространство имен Microsoft.Office.Interop.Visio.
Для исключения перекрытия имен и сокращения писанины рекомендуют использовать алиас
using Visio = Microsoft.Office.Interop.Visio;

Окрытие приложения
Visio.Application App = new Visio.Application();
Далее согласно специфике приложения.
Открываем документ, предварительно масштабированный и "пакладенной" на него картой. Открываем файл предварительно сформированный файл шаблонов.
Код:
Visio.Document Doc =  App.Documents.Add(CurDir+"\\VisioData\\testmaptamlate.vsd");
Visio.Page Page = Doc.Pages.get_ItemU(1);
Visio.Document Stencil = App.Documents.Add(CurDir + "\\VisioData\\TLD_map.vss");

Ну а дальше по прочитанным из савки данным начинаем кидать из шаблонов на страницу префабы иконок, текста описания, соединителя, вписывать описание и соединять его с иконкой. Запихивать получившееся на соответствующий уровень.
http://koavia.com/n1/TLD/save/vs3.jpg

Вообще по VISIO, по его программированию - хелпа и инфы по нему кот наплакал, обычно на уровне как начать и преимущественно на бейсике, но тот сам по себе работает раза в 3-5 медленнее. Здесь как начать на с# получилось. В остальном - для получения кода-аналога действия в среде visio принцип следующий - запускаем запись макроса - совершаем действие. Анализируем код получившегося макроса (не забываем о пространствах имен (для макроса пространство абсолютно плоское) - используем объект броузер в среде бейсика visio), для с# имена функций могут отличаться суффиксами/префиксами, контроль типов жёстче.
на с#
Код:
shape.get_CellsSRC( (short)Visio.VisSectionIndices.visSectionObject, (short)Visio.VisRowIndices.visRowXFormOut,
                  (short)Visio.VisCellIndices.visXFormLocPinY).FormulaU = "16.88 m"; 


в макросе бейсика visio
Код:

shape.CellsSRC( visSectionObject,visRowXFormOut, visXFormLocPinY).FormulaU = "16.88 m"; 

CellsSRC разрешается в c# - если начать вводить CellsSRC то вариант-функция будет одна - get_CellsSRC(short,short,short);
Пространства VisSectionIndices и пр. разрешаются в бейсике visio: запускаем местный объект-броузер на поиск visSectionObject - он показывает путь в пространстве имен.
Он определен как enum, в c# требуется явное преобразование типов из enum в short.

Для управления объектом на странице можно использовать два типа методов:
- объектный и табличный (абсолютный или именной).
Объектный - любая окно/иконка_на_странице представляет собой класс которому можно отдавать команды именно его функциями или свойствами. Т.е. можно делать все что угодно.
Табличный - выделены общие, наиболее употребимые свойства объектов. Которые представлены в виде набора таблиц и доступ к ним - таблица-столбец-строка для относительного доступа или таблица-уникальное_имя для абсолютного. Таблицы можно посмотреть прямо в визио (если включить режим сервис-параметры-дополнительно-запускать_в_режиме_разработчика.
По правому клику на объекте на странице первым появится пункт Показать таблицу свойств фигуры.
http://koavia.com/n1/TLD/save/vs4.jpg
Т.е. контроль результатов программирования полный - видно изменение ( сравни команды vs3.jpg и значения vs4.jpg).
О системе координат и позиционировании фигур.
Абсолютный ноль лежит в левом нижнем углу прямоугольника рамки выравнивания - то что видно пунктиром вокруг фигуры с хвостиком наверху.
Ее навести курсор на хвостик то появится линия с точкой-Пином - это центр фигуры. Фигура вращается, масштабируется (не всегда) и имеет координаты равные положению Пина.
Рамка выравнивания доступна обычным смертным (поменять положение л.н. угла относительно изображения только через фигура-обновить_рамку_выравнивания. Пин можно таскать и визуально и в таблице.
width height - размеры рамки выравнивания.
angle - поворот рамки вокруг Пина.
PinX PinY - координаты Пина в документе.
LocPinX LocPinY - Пина в координатах рамки выравнивания.

В данном случае центр-Пин - крестик-коннектор между ушек мордочки 16.88 против 17.9/2 по умолчанию. Можно конечно сразу выставить в шаблоне. Дык последние попса-версии перезаписывают при кидании на страницу на попол высоты и смещают фигуру на разницу.

На счет масштабирования - в графике масштабирование тасканием за угол идет он левого нижнего угла всегда. Если использовать таблицу выставив пин, изменяя высоту/ширину рамки масштабируем именно относительно Пина. На данной карте левый нижний угол 200-100 - ставим его на пересечение линий на изображении карты-картинки. И задаем координаты в документе 200-100. Идем к линиям 2800-3100 и меняем в таблице ширину и высоту рамки выравнивания картинки-карты так что бы линии совпали с координатами документа. Получаем точно масштабированную картинку-карту картинку.
И последнее - объектная модель использует для ввода численно-дюймовую систему, табличная - строчную с указанием единиц. Поэтому при бросании шаблона (объектная) на страницу координаты множатся на 100/2,54, а при движении Пина (табличная) указаны единицы - метры.

Нафига я это написал - для себя - потом в профиле можно найти. И пригодится может кому.


Последний раз редактировалось: Bloodest (16:46 17-04-2017), всего редактировалось 1 раз
    Добавлено: 12:33 17-04-2017   
AlexD
 383 EGP


Репутация: 82
Сообщения: 1084
Откуда: Тюмень, Россия
Зарегистрирован: 25.04.2003
Bloodest :
полно и более интересных игрух.


А не подскажешь какие еще подобные игры есть? Мне просто жуть как нравятся всякого рода выживалки, где нужно всякое крафтить, применять и т.д.
_________________
тетрагидрометаноптерина макарена
метилентетрагидрофолата макарена
ЭЭЭЭЭ МАКАРЕНА
    Добавлено: 15:56 17-04-2017   
lionezzz
 1723 EGP


Модератор
Рейтинг канала: 6(339)
Репутация: 298
Сообщения: 5523
Откуда: Москва
Зарегистрирован: 19.02.2005
Don't Starve Улыбка если не смутит вид сверху - отличная выживалка. Но это уже оффтоп - лучше во флудилкн или вопроснице поинтересуйся
_________________
...And Justice for All
    Добавлено: 17:08 17-04-2017   
Bloodest
 155 EGP


Рейтинг канала: 4(64)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Ну, серия Fallout. Последний 4-ый на выживании очень похож на TLD, правда откат при смерти не на всегда а на конец последнего сна. Крафт присутствует. Есть куча модов, среди них присутствуют и на усложнение - например крафт дейтов оружия/брони не возможен - дейт можно только переставить с того что добыл.
А вообще первую апокалиптическую выживалку я играл в середине 90х называлась Burning Time. Почти полный аналог TLD только в пустине в части найти ножик, заточить, патронов пару штук + мутанты и банды, из нычек воруют. Ресов/воды/жратвы там еще меньше, описалова ни какого, инет в зачаточном состоянии - жуть полная. Ну конечно сейчас по возможностям логики/ размерам уровней / графике (правда, вроде, SVGA) - динозавр. Потом виртуалка с dos нужна.

Последний раз редактировалось: Bloodest (17:14 17-04-2017), всего редактировалось 1 раз
    Добавлено: 17:09 17-04-2017   
Другие игры: «The Long Dark»
На страницу: Пред.  1, 2, 3  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: ...ушел-пришел-ушел-пришел... Эффект, когда подтяжками цепляешься за ручку входной двери... (Harley)

  » The Long Dark | страница 2
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18