Закрома Родины |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
Закрома Родины |
28.04.2014, 17:03
Сообщение
#1
|
|
Почти Мастер Репутация: 1357 Группа: Участник Сообщений: 1155 Награды: 5 Регистрация: 28.05.2010 |
Тема для разгрузки общего обсуждения ЛА от непрофильных разговоров
Ссылки на архивы постить запрещено, но ведь не запрещено обсуждать их содержимое! -------------------- Сверхнарод, не желающий кормить своего уицраора шаввой, будет кормить чужого гаввахом!
--------------- ------------ ---------- -------- ------ ---- -- |
 
|
|
24.08.2014, 08:44
Сообщение
#1941
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
СДК ещё вообще не собирал никто. собрать редакторы не проблема, проблема в их запуске. В самом NVTT пришлось поправить пару багов. это "поправить" более походит на костыли для компилятора, а не баги. а вот |
 
|
|
|
|
24.08.2014, 10:24
Сообщение
#1942
|
|
Опытный Геймер Репутация: 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
Сообщение
#1943
|
|
Магистр Игры Репутация: 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
Сообщение
#1944
|
|
Опытный Геймер Репутация: 22 Группа: Участник Сообщений: 169 Награды: 2 Регистрация: 19.11.2010 |
Коммитил эти "поправки" K.D., интересно было бы узнать его соображения.
Интересно, что в оригинальном nvtt Tokenizer.h тоже отключен. Сообщение отредактировал Flammable - 24.08.2014, 11:13 -------------------- |
 
|
|
24.08.2014, 11:39
Сообщение
#1945
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
вероятно, сорцы кучей скопировали без учета отсутствующих файлов в родном проекте. а компилятор такого прикола не воспринял )
Сообщение отредактировал HikeR - 24.08.2014, 11:39 |
 
|
|
24.08.2014, 17:27
Сообщение
#1946
|
|
Опытный Геймер Репутация: 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
Сообщение
#1947
|
|
Ветеран Репутация: 5 Группа: Участник Сообщений: 82 Награды: 2 Регистрация: 11.07.2014 |
Такой вопрос, а почему свет от фонарика представляет собой шестиугольник?
-------------------- |
 
|
|
25.08.2014, 23:43
Сообщение
#1948
|
|
Игровой Бог Репутация: 1690 Группа: Участник Сообщений: 7021 Награды: 11 Регистрация: 22.02.2006 |
|
 
|
|
25.08.2014, 23:52
Сообщение
#1949
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
В 1.0006 было из-за r2-правки "ВИРТУАЛЬНЫЙ РАДИУС ЛАМП". да ладно. -------------------- |
 
|
|
25.08.2014, 23:59
Сообщение
#1950
|
|
. Репутация: 750 Группа: Участник Сообщений: 7072 Награды: 4 Регистрация: 30.07.2010 |
|
 
|
|
26.08.2014, 00:02
Сообщение
#1951
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
Этот убогий фонарик из ласт лайта никакими углами не испортишь. Ну даа, убогий. Чувак, ты не играл в некоторые билдомоды К тому же, смотрим в левый угол... Там поинт-свет стоит, К.О. Он и в оригинале при выкрученных значениях яркости/блюма имеет явные края (см. свечение от монолита). Сообщение отредактировал Shadows - 26.08.2014, 00:18 -------------------- |
 
|
|
26.08.2014, 20:12
Сообщение
#1952
|
|
Игроман Репутация: 386 Группа: Участник Сообщений: 847 Награды: 7 Регистрация: 22.07.2009 |
Скажите пожалуйста, может кто знает, в чем разница между форматами .skl\skls от СДК 0.4 и СДК 0.7?
|
 
|
|
27.08.2014, 20:54
Сообщение
#1953
|
|
Почти Игроман Репутация: 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
Сообщение
#1954
|
|
Геймер Репутация: 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
Сообщение
#1955
|
|
Опытный Геймер Репутация: 22 Группа: Участник Сообщений: 169 Награды: 2 Регистрация: 19.11.2010 |
Кто-нибудь знает, зачем в скриптах this?
-------------------- |
 
|
|
30.08.2014, 10:57
Сообщение
#1956
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
эмуляция указателя на сам объект/класс, чтобы при его изменении не затронуть все остальные отнаследованные объекты/классы (в Lua нет ничего "приватного").
|
 
|
|
30.08.2014, 12:23
Сообщение
#1957
|
|
Опытный Геймер Репутация: 22 Группа: Участник Сообщений: 169 Награды: 2 Регистрация: 19.11.2010 |
эмуляция указателя на сам объект/класс Можно на примере показать? Зачем это нужно? -------------------- |
 
|
|
30.08.2014, 13:18
Сообщение
#1958
|
|
Магистр Игры Репутация: 270 Группа: Участник Сообщений: 2620 Награды: 4 Регистрация: 26.03.2007 |
в качестве примера придется привести полную эмуляцию класса с наследованием, то есть скопировать главу из Programming in Lua. вы вставьте строчку "print(typeof(this), this)" перед использованием этого this и сами все увидите.
дайте пример "непонятного" кода, будет более предметно. |
 
|
|
30.08.2014, 14:02
Сообщение
#1959
|
|
Опытный Геймер Репутация: 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
Сообщение
#1960
|
|
Магистр Игры Репутация: 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; загрузка локального или глобального окружения в зависимости от параметров переданных экзешнику (типа с ключиком становится доступно больше глобальных функций). |
 
|
|
Текстовая версия | Сейчас: 12.06.2024, 19:27 |