Закрома Родины |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Закрома Родины |
17.09.2014, 16:27
Сообщение
#1941
|
|
И никаких няш-мяш! Репутация: 5029 Группа: Участник Сообщений: 28157 Регистрация: 04.02.2003 |
Сборка движка X-Ray 1.0007 RC1 Сборка движка ЗП от Shoker 0) Устанавливаем Visual Studio 2008 SP1 (Proffesional или Team, я собирал в первой), сервис пак из архива engine.vc2008.fixed.rar подходит только к английской версии студии, для русской нужно будет скачать отдельно. ______________________________________________ 1) Создаём на диске папку, в ней ещё одну папку. 2) В эту папку помещаем только папку engine.vc2008 из архива "engine.vc2008.fixed - фикшенный мною проект vs2008", папку SDK от туда не трогаем. 3) Папку SDK берём из архива "stasvn\sources\engine.vc2005-2008(~1.6.02 бенчмарк) - март 2010", из под-папки sources. Помещаем её в одну папку к engine.vc2008 4) Вот теперь поверх неё докладываем папку SDK из архива engine.vc2008.fixed.rar, соглашаемся на замену всех файлов 5) Качаем с сайта майкрософт два DirectX SDK - 2009 March и 2010 June. (Вес каждой около 500 мб), можно использовать только версию 2009, но тогда не сможете собрать xrRender_R4. (LINK : fatal error LNK1181: cannot open input file 'd3d11.lib'), а если будете использовать только 2010 - игра с R4 не запустится. После установки двух DX SDK убедитесь что они прописали свои пути в студию, файлы 2010-го СДК должны быть после 2009-го, как показано на рисунке: Аналогично для разделов Executable files и Include files. Если возникнут вопросы, ищите информацию в гугле по словам "подключение directx sdk visual studio 2008" При неправильных версиях СДК (или его не-подключении) в логе будет ругань на отсутствие файлов типа d3dXX.lib\.h) Перемещать папки из уже установленного DirectX SDK никуда не нужно. Достаточно прописать к ним пути глобально для студии (или для каждого проекта вручную) Комментарий от loxotron: достаточно скопировать и переименовать d3d11_beta.lib в d3d11.lib в папке с директовским сдк, а еще лучше скачать и поставить DX SDK August 2009 и не париться с неподходящими версиями. 6) На всякий случаи можно установить ещё SDK\OpenALwEAX.exe, но не уверен что он критически необходим. 7) Запускаем проект через ..\CoP\Project\engine.vc2008\engine.sln. Когда он загрузится, вверху студии режим сборки с Debug_Dedicated (или любой другой) меняем на Release. Далее слева\справа будет список папок с файлами движка, нам нужна, в первую очередь, папка 3rd_party - жмём на неё правой кнопкой мыши и выбираем Build\Построить. Если всё будет правильно, то в конце лог внизу напишет об 11 успешных проектах (или число будет меньше, если некоторые проекты уже были собраны до этого, лог об этом тоже сообщит "пропущены\up to date") Главное чтобы Ошибок\Fatal везде было 0 У меня собрались полностью все проекты без ошибок. (warning за полноценные ошибки не считаются) 8) По аналогии, сверху вниз, можно собрать другие Dll-ки, папки editor\dedicated\utils\plugins собирать не обязательно - к движку они не относятся. Дольше всего будет собираться xrGame.dll. Остальные достаточно быстро. Собирать все Dll-ки к слову не обязательно. Можно лишь нужные. Когда они будут готовы - создать чистую папку bin в папке с игрой. Закинуть туда все созданные dll файлы (можно вместе с .pdb). При необходимости, можно докинуть отсутствующие файлы из оригинальной bin ЗП (2-ой патч), если игра будет их требовать. (Навроде wrap_oal.dll) Игру я запускал с оригинального Stalker-COP.exe Если всё верно, то в логе\консоли игры в первых строчках будет указан билд игры и дата построения. Сообщение отредактировал RayTwitty - 22.01.2016, 17:03 |
 
|
|
|
|
24.08.2014, 08:44
Сообщение
#1942
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
СДК ещё вообще не собирал никто. собрать редакторы не проблема, проблема в их запуске. В самом NVTT пришлось поправить пару багов. это "поправить" более походит на костыли для компилятора, а не баги. а вот |
 
|
|
24.08.2014, 10:24
Сообщение
#1943
|
|
Опытный Геймер Репутация: 22 Группа: Участник Сообщений: 169 Награды: 2 Регистрация: 19.11.2010 |
это "поправить" более походит на костыли для компилятора, а не баги. а вот замена vsscanf на обычный sscanf — это вообще вредительство, азбучный пример при такой замене выдает ожидаемый appcrach. Стянул весь проект nvtt из репозитория xp-dev, чтобы не возиться с адаптацией оригинального. Даже не знал, что оно там так "поправлено". Верну взад Код float ch = d - img->pixel(xx, yy, 0); Как и должно быть, получаем здесь undefined identifier, потому что xx и yy не видны в текущем скопе. В какой-нибудь VS6 оно могло компилиться из-за бага самой студии, VS2013 такую шляпу уже не проглатывает. Если оно где-то скомпилируется, xx и yy будут равны w и h соответственно, что приведет к чтению за пределами буфера. Код // Replace default functions with asserting ones. #define sqrt sqrt_assert #define sqrtf sqrtf_assert #define acos acos_assert #define acosf acosf_assert #define asin asin_assert #define asinf asinf_assert Эта проблема уже была замечена и вместе с решением описана Вот и возникает вопрос. Репозиториев наделали, nvdxt на nvtt заменили, а скомпилить никто даже не пробовал. Весь код в репозитории должен быть валидным в любое время в независимости от состояния разработки, имхо. Сообщение отредактировал Flammable - 24.08.2014, 10:28 -------------------- |
 
|
|
24.08.2014, 10:59
Сообщение
#1944
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
с "xx/yy" все проще, ConeMap.cpp/h не использовался в проекте как минимум с 2007 года. однако даже VC6 не сможет увидеть инициализированные в цикле переменные, реально странный код )
p.s. гмм... этот vsscanf Сообщение отредактировал HikeR - 24.08.2014, 11:05 |
 
|
|
24.08.2014, 11:10
Сообщение
#1945
|
|
Опытный Геймер Репутация: 22 Группа: Участник Сообщений: 169 Награды: 2 Регистрация: 19.11.2010 |
Коммитил эти "поправки" K.D., интересно было бы узнать его соображения.
Интересно, что в оригинальном nvtt Tokenizer.h тоже отключен. Сообщение отредактировал Flammable - 24.08.2014, 11:13 -------------------- |
 
|
|
24.08.2014, 11:39
Сообщение
#1946
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
вероятно, сорцы кучей скопировали без учета отсутствующих файлов в родном проекте. а компилятор такого прикола не воспринял )
Сообщение отредактировал HikeR - 24.08.2014, 11:39 |
 
|
|
24.08.2014, 17:27
Сообщение
#1947
|
|
Опытный Геймер Репутация: 22 Группа: Участник Сообщений: 169 Награды: 2 Регистрация: 19.11.2010 |
В xrDXT из репозитория на xp-dev.com нашел еще одну проблему: Код HFILE fileout = _open( out_name, _O_WRONLY|_O_BINARY|_O_CREAT|_O_TRUNC,_S_IWRITE); if (fileout==-1){ fprintf(stderr, "Can't open output file %s\n", out_name); return false; } В этом месте файл с именем out_name уже открыт (идентичным кодом из начала функции), поэтому DXTCompressImage вернет false, а файловый дескриптор утечет. -------------------- |
 
|
|
25.08.2014, 23:17
Сообщение
#1948
|
|
Ветеран Репутация: 5 Группа: Участник Сообщений: 82 Награды: 2 Регистрация: 11.07.2014 |
Такой вопрос, а почему свет от фонарика представляет собой шестиугольник?
-------------------- |
 
|
|
25.08.2014, 23:43
Сообщение
#1949
|
|
Игровой Бог Репутация: 1690 Группа: Участник Сообщений: 7021 Награды: 11 Регистрация: 22.02.2006 |
|
 
|
|
25.08.2014, 23:52
Сообщение
#1950
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
В 1.0006 было из-за r2-правки "ВИРТУАЛЬНЫЙ РАДИУС ЛАМП". да ладно. -------------------- |
 
|
|
25.08.2014, 23:59
Сообщение
#1951
|
|
. Репутация: 750 Группа: Участник Сообщений: 7072 Награды: 4 Регистрация: 30.07.2010 |
|
 
|
|
26.08.2014, 00:02
Сообщение
#1952
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Этот убогий фонарик из ласт лайта никакими углами не испортишь. Ну даа, убогий. Чувак, ты не играл в некоторые билдомоды К тому же, смотрим в левый угол... Там поинт-свет стоит, К.О. Он и в оригинале при выкрученных значениях яркости/блюма имеет явные края (см. свечение от монолита). Сообщение отредактировал Shadows - 26.08.2014, 00:18 -------------------- |
 
|
|
26.08.2014, 20:12
Сообщение
#1953
|
|
Игроман Репутация: 386 Группа: Участник Сообщений: 847 Награды: 7 Регистрация: 22.07.2009 |
Скажите пожалуйста, может кто знает, в чем разница между форматами .skl\skls от СДК 0.4 и СДК 0.7?
|
 
|
|
27.08.2014, 20:54
Сообщение
#1954
|
|
Почти Игроман Репутация: 96 Группа: Участник Сообщений: 594 Награды: 3 Регистрация: 26.10.2012 |
Цитата в чем разница между форматами .skl\skls от СДК 0.4 и СДК 0.7? х.з. наверное никакой, т.к. конвертер одинаково тчешные и зпешные омф распаковывает, и некоторые старые skl анимации нормально работают в старших версиях СДК(игре), например skl анимации для монстров. P.S. Проверил skl файлы из ЗП действительно отличаются от ЧН и ТЧ. Сообщение отредактировал Kontro-zzz - 27.08.2014, 21:46 -------------------- Будиш маму-папу слушать
Будиш ты канфеты кушать! © Операция «Ы» |
 
|
|
28.08.2014, 11:48
Сообщение
#1955
|
|
Геймер Репутация: 19 Группа: Участник Сообщений: 130 Награды: 2 Регистрация: 24.05.2008 |
С последними правками вскрылось неправильное определение формата нет-пакетов (в se_zones.script), из-за чего в лог может попасть несколько мегабайт предупреждений. Похоже такая ситуация возможна лишь для модов, использующих данный скрипт несоответствующей версии.
Вызывает проблему вот какой код: Код packet1:w_u8(packet:r_u8()) Попытка скопировать слишком много от пакета. Простейшее ограничение что я сделал: Код local copy = size - packet1:r_tell()
if copy > packet:r_elapsed() then copy = packet:r_elapsed() -- не пытаться скопировать много end for i=1,copy,1 do if packet:r_eof() then break else packet1:w_u8(packet:r_u8()) end end Сообщение отредактировал alpet - 28.08.2014, 11:49 |
 
|
|
30.08.2014, 10:25
Сообщение
#1956
|
|
Опытный Геймер Репутация: 22 Группа: Участник Сообщений: 169 Награды: 2 Регистрация: 19.11.2010 |
Кто-нибудь знает, зачем в скриптах this?
-------------------- |
 
|
|
30.08.2014, 10:57
Сообщение
#1957
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
эмуляция указателя на сам объект/класс, чтобы при его изменении не затронуть все остальные отнаследованные объекты/классы (в Lua нет ничего "приватного").
|
 
|
|
30.08.2014, 12:23
Сообщение
#1958
|
|
Опытный Геймер Репутация: 22 Группа: Участник Сообщений: 169 Награды: 2 Регистрация: 19.11.2010 |
эмуляция указателя на сам объект/класс Можно на примере показать? Зачем это нужно? -------------------- |
 
|
|
30.08.2014, 13:18
Сообщение
#1959
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
в качестве примера придется привести полную эмуляцию класса с наследованием, то есть скопировать главу из Programming in Lua. вы вставьте строчку "print(typeof(this), this)" перед использованием этого this и сами все увидите.
дайте пример "непонятного" кода, будет более предметно. |
 
|
|
30.08.2014, 14:02
Сообщение
#1960
|
|
Опытный Геймер Репутация: 22 Группа: Участник Сообщений: 169 Награды: 2 Регистрация: 19.11.2010 |
Вот такой кейс, например:
xr_use.script Код class "action_process_use" function action_process_use:__init(obj, storage) self.object = obj self.st = storage end function action_process_use:use_callback(victim, who) end ... function add_to_binder(npc, ini, scheme, section, storage) local action = this.action_process_use(npc, storage) storage.action = action end -------------------- |
 
|
|
30.08.2014, 14:16
Сообщение
#1961
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
о, да тут все намного проще (
Код -- генерация LPCSTR строк -- file_header_old = local function script_name() return "%s" end local this = {} %s this %s setmetatable(this, {__index = _G}) setfenv(1, this) -- file_header_new = local function script_name() return "%s" end local this = {} this._G = _G %s this %s setfenv(1, this) --skip if (strstr(Core.Params,"-_g")) file_header = file_header_new; else file_header = file_header_old; загрузка локального или глобального окружения в зависимости от параметров переданных экзешнику (типа с ключиком становится доступно больше глобальных функций). |
 
|
|
Текстовая версия | Сейчас: 16.05.2024, 21:08 |