Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Город Мастеров _ Neverwinter Nights Aurora Toolset _ Два тулсета одновременно

Автор: virusman Jul 8 2006, 21:32

Понадобилось сравнить две локи и перенести свойства переходов из одной в другую. Это удобнее сделать, если обе локи под рукой.. Но тулсет не позволяет запускать себя более одного раза.
Сначала предупрежу:
Два тулсета, работающих параллельно, могут заглючить или даже привести к порче модуля! Используйте на свой страх и риск и делайте бэкапы модуля. smile.gif Хотя при аккуратном использовании это не должно привести к каким-либо ошибкам.
Всё описанное ниже действительно только для 1.67.
Чтобы можно было запускать 2 тулсета, нужно либо скачать http://data.virusman.ru/nwn/nwtoolset-1.67-patched.rar (он также уже пропатчен фиксом dumbo), либо изменить 1 байт самостоятельно: по оффсету 0xB61 заменить 74 на EB.
Я запускаю первый тулсет, открываю модуль, запускаю второй и отвечаю "да" на вопрос о "восстановлении" распакованного модуля. Получается, в оба тулсета загрузится один и тот же модуль. Первый тулсет - для редактирования, второй - только для просмотра (иначе могут быть конфликты). При закрытии: сначала сохраняется модуль в первом тулсете, закрывается, потом закрывается второй тулсет.
З.Ы. Я не первый, кто это сделал.. в ранних версиях подобную штуку делал 2_advanced или Darth_Nick.. я просто нашёл нужный оффсет в 1.67.

Автор: Aiwan Jul 9 2006, 04:45

Хм. То что это круто базара нэма drinks.gif Применять я лично вряд ли буду. Но спасибо! thank_you.gif

Автор: Existor Jul 9 2006, 06:20

А 2 разных модуля одновременно запускать можно?

Автор: Aiwan Jul 9 2006, 09:14

Думаю да. Просто пропиши ресурсы для каждого отдельно тулсета соотвесвенно для разных установок двух НВН.

Автор: Existor Jul 10 2006, 13:45

Еще вопрос. Если запущены 2 модуля возможно через буфер обмена выдирать куски из первого модуля во второй через копипаст?

Автор: [MoF]Darth_Nick Jul 10 2006, 14:14

попробуй smile.gif
ей богу.. куда проще проверить, чем ждать день ответа

Автор: virusman Jul 10 2006, 15:08

QUOTE(Existor @ Jul 10 2006, 14:45) [snapback]87493[/snapback]

Еще вопрос. Если запущены 2 модуля возможно через буфер обмена выдирать куски из первого модуля во второй через копипаст?
Нет. Тулсет использует свой буфер, а не виндовый..

Автор: Existor Jul 11 2006, 06:05

QUOTE
Darth_Nick' date='Jul 10 2006, 14:14' post='87494']
попробуй smile.gif
ей богу.. куда проще проверить, чем ждать день ответа

Так и знал, что кто-нить спросит...
1. Сейчас у меня именно такая ситуация, когда проще спросить и на следующий день увидеть ответ.
2. Если будет дан точный ответ в теме, десятку людей не придется тестить каждый раз это заного declare.gif

Автор: Zirrex Jul 11 2006, 23:16

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

Ты можешь скопировать любые текстовые значения, потому что они помещаются в системный буфер обмена, о чем писал выше virusman, когда изменял свойства, но, к сожалению, не можешь проделать аналогичной операции с объектами, которые напрямую взаимодействуют с редактором. Т.е., ты можешь скопировать в одном модуле объект, но он останется действительным именно для данного окна редактора, но не будет действительным для другого окна редактора.

Кстати, почему никто не обратил внимания на такой аспект, как нумерация директории игры, в которую раскрывает свои ресурсы модуль? Если есть папка "temp0", то почему не может быть папки "temp0, 1...n"? Попробуйте перед открытием второго окна редактора, изменить имя директории, присвоив хотя бы ей "temp1". Вуаля, у нас два редактора, и два совершенно разных модуля, только когда будете что-то редактировать, не забудьте изменить имя директории для модуля, который собрались редактировать. Чтобы это делать быстрее, можно сделать небольшой *.bat файл, с помощью которого менять имена существующих директорий, вначале изменяя существующую директорию "temp0" на "temp1", а при вторичным запуске уже осуществлять поиск директории "temp1", чтобы сделать рокировку smile.gif Правда несложно?

Автор: azathoth Jul 12 2006, 03:10

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

Автор: virusman Jul 12 2006, 08:03

QUOTE(Zirrex @ Jul 12 2006, 00:16) [snapback]87619[/snapback]

Кстати, почему никто не обратил внимания на такой аспект, как нумерация директории игры, в которую раскрывает свои ресурсы модуль? Если есть папка "temp0", то почему не может быть папки "temp0, 1...n"? Попробуйте перед открытием второго окна редактора, изменить имя директории, присвоив хотя бы ей "temp1". Вуаля, у нас два редактора, и два совершенно разных модуля, только когда будете что-то редактировать, не забудьте изменить имя директории для модуля, который собрались редактировать. Чтобы это делать быстрее, можно сделать небольшой *.bat файл, с помощью которого менять имена существующих директорий, вначале изменяя существующую директорию "temp0" на "temp1", а при вторичным запуске уже осуществлять поиск директории "temp1", чтобы сделать рокировку smile.gif Правда несложно?
По-моему, гораздо безопаснее сделать вторую папку с NWNом и запустить второй тулсет оттуда. smile.gif
Если не хватает места на диске под два полных НВНа, но есть NTFS - можно сделать симлинк на одну и ту же папку data (hak, texturepacks и т.д.) - http://www.sysinternals.com/Utilities/Junction.html

Автор: kreon Jul 25 2006, 00:27

Хмм... А у меня без всякого патча запускалось... Достаточно изолировать ардесное пространство запущенных процессов, как оно делается в wine'е smile.gif

Автор: dumbo Jul 25 2006, 01:13

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

Автор: helvene Jul 25 2006, 09:05

QUOTE(kreon @ Jul 25 2006, 01:27) [snapback]88298[/snapback]
А у меня без всякого патча запускалось... Достаточно изолировать ардесное пространство запущенных процессов, как оно делается в wine'е

Друг добрый, если ты меня еще и научишь тому, как макс под wine запускать.... ну, или хотя бы под wine-x

Автор: kreon Jul 25 2006, 09:30

2helvene: можно попробовать, про макс не знаю, а фотожоп и корел я запускал biggrin.gif
2dumbo: afair там не просто сверяются имена процессов, но еще и лезется в память процесса, дабы проверить, а не тулсет-ли это? Чисто теоретически на винде достаточно запустить тулсеты в разных юзерских сессиях и они будут спокойно работать (if Win32->User->Admin ==0 для обоих юзеров)
Тем более что в той-же wine'e GetProcessList работает через обычный дубликат ps auxwww wink3.gif

Автор: Neo Jul 25 2006, 10:40

хех, скажу и я пару слов

QUOTE(kreon @ Jul 25 2006, 10:30) [snapback]88308[/snapback]
Чисто теоретически на винде достаточно запустить тулсеты в разных юзерских сессиях и они будут спокойно работать (if Win32->User->Admin ==0 для обоих юзеров)

не теоретически, а точно, но с тулсой не проверял pardon.gif никакого желания
QUOTE(kreon @ Jul 25 2006, 10:30) [snapback]88308[/snapback]
if Win32->User->Admin ==0 для обоих юзеров

мягко говоря - не совсем так biggrin.gif совсем не так

Автор: helvene Jul 25 2006, 10:44

QUOTE(kreon @ Jul 25 2006, 10:30) [snapback]88308[/snapback]
можно попробовать, про макс не знаю, а фотожоп и корел я запускал

Фотошоп с корелом и я запускала.

Автор: kreon Jul 25 2006, 12:59

helvene, ну если дадите мне 3дмакс, могу попробовать. У меня его нету.

Автор: dumbo Jul 25 2006, 18:13

QUOTE(kreon @ Jul 25 2006, 10:30) [snapback]88308[/snapback]
afair там не просто сверяются имена процессов, но еще и лезется в память процесса, дабы проверить, а не тулсет-ли это?

afair? это как там... "не знал, не знал.. и забыл!" mosking.gif не обижаццо! crazy.gif
попробую внести ясность.
тулсет при старте пытается открыть мьютекс с именем "BiowareToolsetMutex" - если открылся, значит одна копия уже запущена - выход, не открылся - создаем мьютекс и работаем.
для хранения имен объектов(события, мьютексы, семафоры, итд итп) существует некое "пространство имен объектов". поддержка нескольких пользовательских сессий в XP осуществляется средствами Terminal Services, которые для каждой сессии создают локальные пространства имен объектов(глобальным владеет первый юзер).

вышло несколько сумбурно, но смысл, я думаю, понятен.

Автор: 2_advanced Jul 29 2006, 20:10

извращенцы smile.gif
а вобще оно там распаковывать будет оба модуля в 1 папку
каша получится dwarf.gif help.gif

Автор: Roker Oct 1 2006, 21:57

Народ, зачем мудрить? Если у кого не икспишная винда (мало таких нынче) - не читайте это, для остальных предлагаю быстрый способ запустить два раза тулсет. Первый раз можно открыть по нормальному, а второй раз можно кликнуть правой кнопкой мыши, выбрать "запустить от имени..." - ok. Это всё. На счёт матюков при редактировании одного модуля: редактировать надо с одного тулсета. В противном случае сохранение в каждом из тулсетов будет переписывать файл, а не дополнять его.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)