S.T.A.L.K.E.R.: Global War <<<>>> Инструмент - теперь и для ТЧ! <<<>>> NS OGSR: Сборка от 30.12.2023
-
Число публикаций
65 -
Регистрация
-
Последнее посещение
-
AMKoin
290 [Подарить AMKoin]
Сообщения опубликованы DMT
-
-
Как и ожидалось, замена макса с 2016 версии на 2018 с последующей переустановкой скриптов не помогла решить проблему.
17 часов назад, HellRatz сказал:скрипты работают нормально
Нет, скрипты работают ненормально. По крайней мере у меня.
-
У меня такие ситуации возникают постоянно, после некоторого количества применений attach\detach.
Собственно, вот что я вижу в максе:
А вот результат после экспорта в сдк:
Почему стены и потолок отсутствуют ?
Я залил на файлообменник исходный максовский файл проекта https://dropmefiles.com/uMKlz для желающих его протестировать. Но вам надо будет прописать свои пути к текстурам в material editor-е. У меня всё лежит в E:\X-Ray CoP SDK\editors\gamedata\textures
-
29.06.2021 в 11:29, ed_rez сказал:
После экспорта этим плагином пропадают полигоны. В максе целая модель здания, в сдк какие-то куски.
-
Какой плагин для экспорта геометрии из макса в СДК сейчас актуален ? Где скачать ?
-
3 минуты назад, Zander_driver сказал(а):
Вообще-то, это зависит от местной реализации выброса в "там, о чем вы спрашиваете"
Маленькое уточнение: вопрос о том, как вкрутить спавн бокса в оригинал ЗП.
-
Можно ли при определённых условиях заспавнить заданных размеров бокс, защищающий от выброса ? Какие есть способы ?
-
04.04.2020 в 10:03, Zander_driver сказал:
Где treasure, obj, npc - это клиентские объекты тайника, перемещаемого итема, и НПС, соответственно. И делать надо в цикле, перебирая все итемы в тайнике.
А как сделать? Я же заранее не знаю, что окажется в тайнике.
-
Как переместить всё содержимое некоторого тайника в инвентарь НПС ? Любые намёки, любые идеи пригодятся. А лучше, если есть готовое решение.
-
29.03.2020 в 08:26, naxac сказал:
это связано с настройками материалов. Исправить, думаю, можно: gamemtl.xr.
В gamemtl.xr у бетона нулевая простреливаемость. Возможно есть какие-то ошибки на уровне геометрии...
-
Даже в оригинале ЗП враги простреливают здания и бетонные заборы. С чем связана эта ошибка и можно ли её исправить ?
-
Почему в ТЧ становится враждебным отношение всей группировки после атаки ГГ на одного из её представителей ?
Как сделать то же самое в ЗП ? Есть идеи ?
-
Предположим, я добавил в ЗП новую группировку "Ренегаты". Что и где нужно прописать, чтобы они говорили бандитскими голосами ?
-
@naxac, такой вариант не помог, увы.
- 1
-
@naxac, А почему в оригинале такой проблемы не возникает ?
-
https://www.dropbox.com/s/wvub0j4ix30gecy/trade_manager.script?dl=0
С этим скриптом имеются странности:
* Непись, зашедший в онлайн, потом оффлайн, а потом снова в онлайн, начинает торговать гитарой, губной гармошкой и кпк.
* Сразу после старта игры лишних предметов в ассортименте ни у кого нет. Они появляются после того, как актор успел побегать по локации.
* Если рядом с НПС, у которого в ассортименте есть гитара, губная гармошка и кпк, сохраниться и загрузиться, то лишних предметов после загрузки не будет.
Что приводит к возникновению этого бага? И как пофиксить? Кто сталкивался с этим ?
-
2 часа назад, Kirgudu сказал:
а результаты изменений, сделанных внутри функции update, доступны также и за её пределами.
Я о том и спрашивал. Но... Нужны детали.
2 часа назад, Kirgudu сказал:Для общего понимания рекомендую почитать, что такое ссылочные типы данных и типы значений (reference type и value type).
Насколько я знаю, в Lua ссылочные типы отсутствуют. Так ведь ?
1 час назад, abramcumner сказал:Это не чистая функция, у нее есть побочные эффекты в виде вызовов npc:buy_condition и аналогичных функций.
А почему после
npc:buy_condition( tt.config, str )
идет строка
tt.current_buy_condition = str
?
Для какой цели записывать что-то в локал tt, объявленный внутри функции, если вызов npc:buy_condition уже был ?
Я написал следующий код:
Цитатаfunction func()local sif s==nil thenprint(64)s=32endendfunc()func()Проверил его тут: https://repl.it/languages/lua
Результат работы:
Цитата64
64
То есть значение переменной s не сохраняется между двумя вызовами функции func.
Зачем тогда в скрипте торговли присваивание tt.current_buy_condition = str ? Как дальше это используется ?
-
https://www.dropbox.com/s/wvub0j4ix30gecy/trade_manager.script?dl=0
Надо разбораться и понять, как работает функция update из этого скрипта. Имеются внешние локалы:
Цитатаlocal h24 = 24
local s24 = 3600 * h24
local c_time = game.CTime()
local actor = db.actor
local t_data = {}
local t_ini = {}
Имеется функция:
Скрытый текстfunction update( npc ) local tt = t_data[npc:id()] if ( tt.update_time or 0 ) >= time_global() then return end tt.update_time = time_global() + 60000 + npc:id() -- хреновая, но рандомизация local str = pick_section( actor, npc, tt.buy_condition ) if tt.current_buy_condition ~= str then npc:buy_condition( tt.config, str ) tt.current_buy_condition = str end str = pick_section( actor, npc, tt.sell_condition ) if tt.current_sell_condition ~= str then npc:sell_condition( tt.config, str ) tt.current_sell_condition = str end if not tt.buy_supplies then return end str = pick_section( actor, npc, tt.buy_supplies ) if ( tt.current_buy_supplies ~= str ) or ( not tt.resuply_time ) or tt.resuply_time < game.get_game_time() then npc:buy_supplies( tt.config, str ) tt.current_buy_supplies = str c_time:setHMS( h24, 0, 0 ) tt.resuply_time = game.get_game_time() + c_time end end
Из всех внешних локалов в теле этой функции используется только c_time. Но этот c_time нигде больше за пределами этой функции не используется, следовательно никакая информация через него не передаётся вовне.
А что тогда вообще делает эта функция? Она принимает аргумент npc, ничего не возвращает и ничего не пишет во внешние локалы. Как тогда вызов этой функции может на что-то повлиять в игре? Тем не менее влияние на игровой процесс есть. Например если модифицировать строчку
Цитатаtt.update_time = time_global() + 60000 + npc:id()
эффект может быть весьма заметным и ощутимым.
Я не понимаю, каким образом вышеупомянутая функция может передать информацию (например update_time) за пределы себя. Кто может объяснить, помочь или хотя бы посочувствовать?
- 2
-
Цитата
https://www.dropbox.com/s/wvub0j4ix30gecy/trade_manager.script?dl=0
В общем, вот. На ту же тему - "очистим от тормозов". При загрузке в частности, ну и вообще.
Поскольку чистая соль сейчас мало кого интересует, а к ОПам патчефиксы пекутся как блины - по-людски, с перевешиванием всего на xr_meet, делать не стал. Зато можно прямо файл закидывать, как есть.
Смысл - тот же, что и с _g.script, но при загрузке в присутствии неписей, ну или при подходе к лагерям неписей. Плюс обновление ассортимента раз в сутки, либо сюжетное. Зато сюжетное - максимум в течение 2-х минут.
Как-то так.
upd: h24 - игровые часы между этими самыми обновлениями.
upd2:
Если нет файла _util.script - который поддерживает вывод логов, то замените строку
function log( ... ) _util.log( "trade_manager", ... ) end
на function log() end
Обновление ассортимента раз в сутки работает некорректно. Если поспать рядом с торговцем больше суток и проверить, то ассортимент будет тот же самый. Но если подождать несколько (около 5) игровых минут, то ассортимент обновится прямо на ваших глазах прямо в окне торговли.
Я тестировал много раз, и каждый раз наблюдается вышеописанная ситуация.
@Dennis_Chikin, А вот ещё интересная инфа насчёт работы скрипта: если от какого-то непися убежать, чтобы он перешёл в оффлайн, а затем встретить его снова, то непись начнет торговать ВСЕМИ своими вещами, включая гитару, губную гармошку и КПК. И всё это можно будет у него купить. Но на старте игры у неписей этих вещей в продаже нет! Эксперимент проделан много раз с одинаковым результатом.
-
24 минуты назад, abramcumner сказал:
Попробуй заменить "local story_id = packet:r_u32()" на "local story_id = packet:r_s32()" и "packet:w_u32(story_id)" на "packet:w_s32(story_id)", тоже в двух функциях. Меняется u32 на s32. Битый сейв удали.
Спасибо, сработало!
Интересный момент: при каждом сохранении-загрузке спавнится ещё одна аномалия и ещё один вертолёт помимо тех, которые уже были заспавнены в прошлые разы. Так можно делать сколько угодно или после некоторого критического количества спавнов начнутся вылеты?
А есть какие-то уроки с детальным разбором нет-пакетов и как ими пользоваться? Да, я читал коммент Malandrinus в справочнике по функциям и классам https://www.amk-team.ru/forum/topic/7450-spravochnik-po-funkciyam-i-klassam/?do=findComment&comment=258470
и даже кое-что понял, но этот коммент всё же вряд ли можно назвать уроком.
-
4 минуты назад, abramcumner сказал:
Модифицировать не надо, надо следить за стори_ид
В смысле ?
Если что, я не вносил никаких изменений в db.script от Бардака.
-
http://stalkerin.gameru.net/wiki/index.php?title=SoC._Один_из_методов_спавна
Я внедрил в геймдату готовый пример от Бардака. Суть примера: имеется файл db.script, в котором две функции: одна спавнит электру, другая — вертолёт. Начинать новую игру не обязательно, НО если после спавна сделать сохранение и загрузку то получаю вылет:
ЦитатаLine : 30
Description : Specified story object is already in the Story registry!Мои собственные догадки о причинах вылета такие: после загрузки скрипт второй раз пытается заспавнить электру и вертолёт, которые уже заспавнены. То есть скрипт пытается использовать такие story_id, которые уже использованы. Если это верное предположение, то возникает вопрос: как модифицировать скрипт Бардака, чтобы не было вылета? Самый простой способ?
Несколько минут спустя: моё предположение оказалось неверным. Даже если удалить скрипт от Бардака, сейв всё равно не грузится, всё равно происходит этот вылет. Значит проблема в том, что заспавненные объекты неправильно сохраняются. Почему сейв получается битым ?
-
@naxac, @Zander_driver, а существует какой-то справочник по скриптам огсе с описанием новых функций ?
-
@naxac, А в каком смысле функция ASSERT не является рабочей?
Почему вариант
Цитатаfunction ASSERT( cond, ... )
endне является рабочим ?
-
@naxac, Я в _g.script прописал пустую функцию ASSERT
Цитатаfunction ASSERT( cond, ... )
endВылет каким был — таким и остался.
Я вырезал все вызовы ASSERT из ogse_signals.script, теперь вылет такой:
ЦитатаLUA error: ...ow of chernobyl\gamedata\scripts\ogse_signals.script:243: attempt to index local 'module' (a nil value)
Кусок кода:
Цитатаfunction signals_mgr:subscribe_module( module_name )
local module = _G[ module_name ]
module.attach( self )
endСтрочка 243 выделена курсивом
[2016] Инструментарий для модостроя?
в Инструментарий
Опубликовано
Нет, модель не крива.
Нет, не поэтому. От вышеупомянутой проблемы зачастую спасает лишь полное ретекстурирование модели. Например можно попробовать ради эксперимента применить UVW Remove, а затем залить всю модель кирпичом. Проблема с экспортом модели должна исчезнуть, а вот "потяжки" текстур в режиме line так и останутся
--------------------------------------------------
Или можно действовать иначе: нажимаем кнопку weld vertices, получаем лог:
* object Object009 | verts before 5233 , after 4116
"Потяжек" текстур в режиме LINE больше нет, но остаётся проблема с экспортом модели. Заходим в СДК, видим, что проблема осталась.