![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#86
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
По п.3 я займусь. Если не найдется к.л. школьника, студента с бОльшим количеством свободного времени, нежели "после работы".
|
![]()
Сообщение
#87
|
|
Level 4 ![]() ![]() Класс: Маг Характер: True Neutral Раса: Человек ![]() |
Сейчас отпуск и огромное количество проектов, но, возможно, удастся выкроить один денек.
http://social.bioware.com/wiki/datoolset/i....0_and_GFF_V3.2 Ткните пальчиком, какие типы полей неугодны и их надо убивать? |
![]()
Сообщение
#88
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
Нене, это Eclipse GFF, а надо работать с Aurora GFF. Его структура тут:
http://nwn.bioware.com/developers/Bioware_..._GFF_Format.pdf Там в корне списка в грязном файле ноды выглядят вот так (для наглядности написал в XML формате): Neverwinter Script <cexolocstring name="LocName" strref="991556708"> <phrase language="english">werwerwe</phrase> <phrase language="english">werwerwerwerwerew</phrase> </cexolocstring> <cexolocstring name="LocPopupText" strref="991556709"> <phrase language="english">фыфвфв</phrase> <phrase language="english">вфывфы</phrase> </cexolocstring> Так вот, у нод с именем "LocName" и "LocPopupText" (это конкретно у UTP GFF), а возможно просто у всех нод (универсальное решение, требующее проверки на разных типах GFF) с типом "cexolocstring" надо удалить дочерние элементы. Тоже сел за проектик, на на Managed C# парсинг структурных файлов - занятие весьма унылое (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#89
|
|
Level 4 ![]() ![]() Класс: Маг Характер: True Neutral Раса: Человек ![]() |
Хм... только дочерние? А сами ноды оставлять?
Ну да, на С++ это на порядок удобнее, хотя и на шарпе уже делал. (IMG:style_emoticons/kolobok_light/smile.gif) (а вот кто такой Managed C# не знаю >_>) |
![]()
Сообщение
#90
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
Да, сами ноды оставлять без изменения.
C# он как бы Managed по умолчанию (IMG:style_emoticons/kolobok_light/biggrin.gif) |
![]()
Сообщение
#91
|
|
Level 4 ![]() ![]() Класс: Маг Характер: True Neutral Раса: Человек ![]() |
А я этого термина не понимаю. (IMG:style_emoticons/kolobok_light/smile.gif) Самоучка. (IMG:style_emoticons/kolobok_light/smile.gif) Так что теория у меня на нуле + немного MSDN. (IMG:style_emoticons/kolobok_light/smile.gif)
P.S. Ой... мы опять оффтопим. х_х |
![]()
Сообщение
#92
|
|
Level 2 ![]() Класс: Бард Характер: Lawful Good Раса: Человек ![]() |
За темой слежу давно, но, так как сказать было нечего, молчал.
Я к тому, что в необходимости решения этой проблемы сомневаться не надо (IMG:style_emoticons/kolobok_light/smile.gif) Я решал проблему кардинально(на примере предмета): 1. Экспортировал и редактировал Foreign tlk. 2. В GFF-редакторе удалял текст из строк Name и Description. После этого игра начинала читать текст из tlk-файла. А так как вы тут уже почти решили всё, я с нетерпением жду (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#93
|
|
Level 18 ![]() Класс: Страж Тьмы Характер: True Neutral Раса: Человек МАСТЕР D&D ![]() |
А ещё лучше, попытаться сделать какой-нить простенький модуль открытого так сказать типа - дабы всем скопом попытаться решить возникшие проблемы, - а то чувствую что кириллица не самая большая беда ДА. Вот только это я уже не потяну в одиночку ибо чем ближе "новый год" - тем больше нагрузка на работе, да и специализация у меня узкая - "типичный контентщик". Поддерживаю идею. Тогда на выходных ставлю редактор и возьму создание двух локаций - внутренняя и внешняя. Правда, много времени уделить не смогу..... 2-3 часа по выходным. Попутно буду изучать создание ролика при помощи катсцен (покосился в сторону Леона (IMG:style_emoticons/kolobok_light/biggrin.gif) ). |
![]()
Сообщение
#94
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
GFF Tool
День 1. Кой как разобрался с довольно неплохим способом чтения бинарных файлов и преобразования в структуры. Все бажит страшно. Технологию вижу впервые и совсем не разбираюсь еще. Лег в 4 утра. опоздал на работу на 3 часа (IMG:style_emoticons/kolobok_light/wacko.gif) День 2. Ловил баги вчерашнего дня. Сегодня ЭТО уже в состоянии под дебагером читать структуру верхнего уровня и Labels нод из которых она состоит. День 3. Добавил еще обработчиков на внутренние структуры GFF. Дошел как раз до CExoString и CExoLocString, которые нужны для исправления. Занялся оптимизацией классов чтения файла. Все разобрал, ничего не работает, собрать не успел ) -------------------------------------------------------------------------- Текущий статус - все разобрано, ничего не работает (IMG:style_emoticons/kolobok_light/crazy.gif) -------------------------------------------------------------------------- |
![]()
Сообщение
#95
|
|
Level 2 ![]() Класс: Бард Характер: Lawful Good Раса: Человек ![]() |
Попутно буду изучать создание ролика при помощи катсцен Туториал на русском Griffon: Спасибо за ссылку. Почисть почту... не смог ПМ-ку отправить. (IMG:style_emoticons/kolobok_light/smile.gif) А ещё лучше, попытаться сделать какой-нить простенький модуль открытого так сказать типа - дабы всем скопом попытаться решить возникшие проблемы, - а то чувствую что кириллица не самая большая беда ДА. Вот только это я уже не потяну в одиночку ибо чем ближе "новый год" - тем больше нагрузка на работе, да и специализация у меня узкая - "типичный контентщик". В принципе никаких проблем с тулсом не замечал, всё достаточно ровно работает. Если только с локациями траблы какие.
|
![]()
Сообщение
#96
|
|
Трехмерный Маньяк ![]() Класс: Мастер Оружия Характер: Lawful Neutral Раса: Нежить NWN: Контент Проклятие Левора ![]() |
Цитата Лег в 4 утра. опоздал на работу на 3 часа Ты это.. аккуратней, ты нам живой-здоровый нужен (IMG:style_emoticons/kolobok_light/good.gif) ( ..само собой пока тулсу не доделаешь (IMG:style_emoticons/kolobok_light/biggrin.gif) ) Цитата В принципе никаких проблем с тулсом не замечал, всё достаточно ровно работает. Если только с локациями траблы какие. Ну кроме множества болезней лок, ещё скрипты, VO и опять же сама БД - вызывают некоторые опасения. Да и с более глубокими модификациями вроде шаренья по 2да - есть проблемы с теми же придельными стрингами. В общем проблемы есть, только степень их пока не определена, да и настораживает сам факт того что даже англоязычные, не шибко-то взялись за написание полноценных модулей.
|
![]()
Сообщение
#97
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
Кстати, я столкнулся с проблемой, что при попытке удалить ресурс, даже если ссылки наи него не остались нигде (плейсибл удален из локи и с него снят конверсейшн тэг) все равно пишет, что ссылка на него осталась в локе и на конверсейшне.
Если эти ссылки хранятся в БД, то вылечить можно, т.к. действительно, все (не уверен, конечно, но, может почти все (IMG:style_emoticons/kolobok_light/smile.gif) ) манипуляции с БД тулсет делает через хранимые в БД процедуры, которые можно править!!! Также, возможно получиться избавиться и от некоторых других ошибок или/и улучшить работу с существующими функциями. Цитата Туториал на русском Клево. Большой объем работы сделан! |
![]()
Сообщение
#98
|
|
Level 4 ![]() ![]() Класс: Маг Характер: True Neutral Раса: Человек ![]() |
GFF Tool День 1. Кой как разобрался с довольно неплохим способом чтения бинарных файлов и преобразования в структуры. Все бажит страшно. Технологию вижу впервые и совсем не разбираюсь еще. Лег в 4 утра. опоздал на работу на 3 часа (IMG:style_emoticons/kolobok_light/wacko.gif) День 2. Ловил баги вчерашнего дня. Сегодня ЭТО уже в состоянии под дебагером читать структуру верхнего уровня и Labels нод из которых она состоит. Имеем FileStream с доступом на чтение Stream. Имеем структуру data класса SData. Код Stream.Position = 0; // С какого места будем читать byte[] buffer = new byte[Marshal.SizeOf(typeof(SData))]; int i = 0; while (i < buffer.Length) { i += Stream.Read(buffer, i, buffer.Length - i); } GCHandle handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); data = (SData)Marshal.PtrToStructure(handle.AddrOfPinnedO bject(), typeof(SData)); handle.Free(); Запись аналогичным образом. (IMG:style_emoticons/kolobok_light/crazy.gif) Сообщение отредактировал EqKeeper - Nov 10 2010, 14:07 |
![]()
Сообщение
#99
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
Я примерно также и читаю, только чуть попроще не каждый байт, а все сразу, только там нашлось несколько подводнх камней с маршаллингом, в бодании с которыми я провел несколько часов, чтобы структуры приходили чистые.
Код 22 byte[] buff = _br.ReadBytes(Marshal.SizeOf(typeof(T))); 23 GCHandle handle = GCHandle.Alloc(buff, GCHandleType.Pinned); 24 T resultStruct = (T)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(T)); 25 handle.Free(); Ну, запись там не очень аналогичным образом идет, но тоже через указатели. Меня раньше передергивало от любого Unsafe конента, собственно я С# выбрал именно из-за того, что не надо работать напрямую с указателями, ссылками и памятью, но без этого слишком долго управляемый десериализатор писать придется =( |
![]()
Сообщение
#100
|
|
Level 4 ![]() ![]() Класс: Маг Характер: True Neutral Раса: Человек ![]() |
Хмм... подводные камни именно из-за способа чтения или вообще? (у самого проблем не было)
--- Да, и кто есть _br? (IMG:style_emoticons/kolobok_light/smile.gif) А то у FileStream я .ReadBytes не вижу =\ Сообщение отредактировал EqKeeper - Nov 11 2010, 17:37 |
![]()
Сообщение
#101
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
Ну что, бандерлорги, проблему решили и вся активность закончилась на этом?
Ну ка быстро модули делайте!!!!!!!!!!!! (IMG:style_emoticons/kolobok_light/biggrin.gif) Вчера прогнал то, что получилось по GFF файлу, все отработало на ура. Т.е. в альфа-версии программа уже работает. Однако я в затруднении в каком виде ее делать? То ли просто экзешник который будет чистить все GFFv3.2 структуры в своей папке, то ли еще в каком виде. У меня не так много времени (работа и учеба началась) чтобы делать так, а потом еще и эдак. Нужен человек который на практике озабочен массовой чисткой, чтобы с начала подобрать оптимальный способ "обслуживания" таких файлов. а потом оттестить. В идеале нужно мнение нескольких моддеров о том, как она должна работать по их предпочтению, чтобы сделать оптимальный вариант. Я могу, конечно, закинуть файл в social.bioware.com и там уже каменты почитать. Цитата Хмм... подводные камни именно из-за способа чтения или вообще? (у самого проблем не было) Проблемы заключались в том, что PtrToStructure, если в структуре определено поле String с атрибутом [MarshalAs(UnmanagedType.ByValTSt)], при выполнении кушает последнюю букву строки. Цитата Да, и кто есть _br? smile.gif А то у FileStream я .ReadBytes не вижу =\ _br - приватный статический экземпляр BinaryReader |
![]()
Сообщение
#102
|
|
Level 4 ![]() ![]() Класс: Маг Характер: True Neutral Раса: Человек ![]() |
Оу! А я их все считывал массивами байтов произвольной длины. А кушакет, видимо, в поисках терминирующего нуля?
Понял. Что касается проги. Первое предложение - распространять как угодно, но с исходниками. (IMG:style_emoticons/kolobok_light/biggrin.gif) Второе - если поделишься исходниками, то скидывай (в сеть или лично мне). Сделаю все три варианта. Консольный по имени файла. Консольный по всем файлам в папке. WinForm по всем файлам в выбранных каталогах. (IMG:style_emoticons/kolobok_light/rolleyes.gif) |
![]()
Сообщение
#103
|
|
Трехмерный Маньяк ![]() Класс: Мастер Оружия Характер: Lawful Neutral Раса: Нежить NWN: Контент Проклятие Левора ![]() |
Цитата Ну ка быстро модули делайте!!!!!!!!!!!! Ну ну.... Если бы кто тебя слышал, - то ли от лени, то ли от незнания - но делать никому ничего не хочется, либо все шифруются - что впрочем сомнительно. (IMG:style_emoticons/kolobok_light/biggrin.gif) В общем этого и следовало ожидать. Ладно лучше не болтать, а чего-нить сделать - так и быть на неделе попробую заставить себя сделать чего-нить "несбыточного", - так сказать "проектик для себя любимого". (IMG:style_emoticons/kolobok_light/crazy.gif) Что до всей нашей "русфикации", - как закончите надобы ФАК написать по этому делу, в связи с чем интересуюсь - есть ли способ внести необходимые изменения в БД, без танцев с бубном и SQL Management-а - так сказать для примитивных слоёв общества ? Или же есть только вариант раздачи готовой БД или ручной модификации ? |
![]()
Сообщение
#104
|
|
Level 4 ![]() ![]() Класс: Маг Характер: True Neutral Раса: Человек ![]() |
Можно. Цепляемся из самописной софтины к этой самой базе и делаем тоже самое, но в автоматическом режиме. Правда, в SQL-базы я никогда не использовл, но, когда вопрос станет ребром, сделаю, если других желающих не найдется. В итоге, я так понимаю потребуется "патч" с одной кнопкой? (IMG:style_emoticons/kolobok_light/smile.gif) В общем, реализуемо (правда, при моем исполнении он будет требовать .NET Framework 3.5/4 (IMG:style_emoticons/kolobok_light/smile.gif) ).
Что касается творения, то я только из-за этого и начал ковыряться в DA Toolset. Правда, никогда я не умел делать что-то маленькое, так что у меня долгострой. (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#105
|
|
Level 2 ![]() Класс: Бард Характер: Lawful Good Раса: Человек ![]() |
Есть два модуля:
1. Руны и свитки - маленький, пара десятков предметов. 2. Project Iona - большой, пока в основном диалоги. Могу потестить (IMG:style_emoticons/kolobok_light/smile.gif) Насчёт утилитки - WinForm, ну естественно, с выбором один файл чистить, несколько или все. Можно. Цепляемся из самописной софтины к этой самой базе и делаем тоже самое, но в автоматическом режиме. Правда, в SQL-базы я никогда не использовл, но, когда вопрос станет ребром, сделаю, если других желающих не найдется. В итоге, я так понимаю потребуется "патч" с одной кнопкой? В общем, реализуемо (правда, при моем исполнении он будет требовать .NET Framework 3.5/4 ). У нас на работе Инет упал, так что утилите с одной кнопкой я был бы рад (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#106
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
+1 Подправить БД можно нажатием 1 кнопки в самописной софтинке.
2 EqKeeper А зачем так ограничивать сферу пользователей только .NET 3.5+ фреймворком? Это можно и на 2.0 сделать. 2 kelamor Мнение учтено, спасибо =) |
![]()
Сообщение
#107
|
|
Level 4 ![]() ![]() Класс: Маг Характер: True Neutral Раса: Человек ![]() |
Ммм... да, наверное ты прав. (IMG:style_emoticons/kolobok_light/smile.gif) Вот только с XP, насколько я помню, шел 1.1. (IMG:style_emoticons/kolobok_light/smile.gif) Так что не все ли равно? Впрочем, чем ниже тем лучше... Кстати, попробую сейчас. Глядишь что и получится. (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#108
|
|
Ушедший на войну ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Контент ![]() |
Не, 1.1 слишком старый, думаю его уже нет почти нигде.
Могу и ошибаться, но, кажется с WinXP SP2 уже шел .NET 2.0 |
![]()
Сообщение
#109
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Как правило, на деле пользователь уже имеет ведро дотнет-программ и фреймворк 3.5+, эта штука довольно-таки популярна, на ней ща пишется всё - от контрол центров драйверов до игр. Ну а если так важно 100%-е покрытие, портаните на с++, это не так сложно. Хотя имхо время гораздо дороже и оперативки, и пары мегабайт трафика.
|
![]()
Сообщение
#110
|
|
Level 4 ![]() ![]() Класс: Маг Характер: True Neutral Раса: Человек ![]() |
Патч нарисовал, осталось заставить его работать. (IMG:style_emoticons/kolobok_light/rolleyes.gif)
Цитата Cannot alter column 'Text' to be data type ntext. Сейчас пойму, что ему не нравится и можно будет юзать. (IMG:style_emoticons/kolobok_light/rolleyes.gif) Блин, напрямую не хочет. Говорят - придется создать новую колонку, перенести в нее старые данные и старую удалить... Попробую еще погуглить. Не получится - сделаю так... Еще момент, я так понял, вместо ntext лучше использовать nvarchar(max)? http://www.rsdn.ru/forum/db/2755764.flat.aspx Уррра! С ним заработало! (IMG:style_emoticons/kolobok_light/smile.gif) Мелкомягкие - борцы за передовые технологии! (чтоб их). (IMG:style_emoticons/kolobok_light/smile.gif) В общем, патч для превращения text в nvarchar(max) готов. Я пока сделаю обработку исключений и всячески его приукрашу, а вы (в первую очередь вопрос к Айсу, как к изобретателю технологии) расскажите - будет ли это (nvarchar(max)) корректно работать. Или ntext - принципиально важен. Сообщение отредактировал EqKeeper - Nov 15 2010, 16:41 |
![]() ![]() |
Текстовая версия | Сейчас: 7th July 2025 - 02:41 |