Перейти к контенту

Народная 2010 разработка


Рекомендуемые сообщения

"Что у нее внутри, и как это сделать лучше". Для тех, кто уже разбирается в скриптах, конфигах, текстурах и "других страшных словах" ©, и имеет желание и время действительно делать их лучше.
См. подробности в первом посте.

Тема НЕ является ни столом заказов, ни службой техподдержки, ни справочным бюро.

Изменено пользователем Dennis_Chikin
  • Нравится 2
  • Полезно 1
Ссылка на комментарий

Выкладывается для изучения. Просто "скопировать и запустить" ни куда нельзя.

Not for "direct" use, education only !

https://www.dropbox.com/s/w2ehajvidhfys4e/new_smart_terrains.zip?dl=0

 

Здесь - по тому что заточено именно под Соль, с учетом ее "фирменных" глюкобагов.

 

В общем, не "вроде как", а, похоже, допилил и как-то оттестил. Что сделано:

Проблема - "32-45 июня" в гулагах. Формат сохранений изменен. Смысл - проверяем и храним не 64 бита, а таки 32, но от момента загрузки сэйва. Сохраняем дельту. Не думаю, что кто-то будет бегать месяц игрового времени по одной локации и без единого сэйва.

 

Время и классы берутся не вызовами функций, а переменные из global namespace (смотрим _g.script из ранее выкладывавшегося).

 

Заодно развернул часть функций на предмет скорости выполнения.

 

Добавлен отлов странного, и оно таки отлавливается.

Поддерживается альтернативный, "плоский" формат для gulag_*.script

 

Исправлено сочетание idle и timeout, исправлен вообще не работавший timeout.

Всякие Звездочеты и прочие Петрухи теперь нормально ходят в офлайне.

 

Предикаты всегда поднимают приоритет работ автоматически. Так что теперь за этим можно не следить.

 

Снят конфликт между назначением "эксклюзивов" и условиями назначения. Хотя сами эти "эксклюзивы" - затея довольно дурная.

 

Скриптовый фикс ВСЕХ известных на данный момент глюкобагов соляночного олспавна: полезно на предмет "какие они вообще бывают" и что с ними делать.

 

Убраны все привнесенные за всю историю модостроения "пессимизации".

 

todo: разобраться окончательно с таблицей классов, и снести все дублирующие извлечения - записи всех дублирующих таблиц.

 

Вот как-то так.

Изменено пользователем Dennis_Chikin
  • Спасибо 2
  • Полезно 2
Ссылка на комментарий

https://www.dropbox.com/s/h1yohxmnrt8pvlz/ai.zip?dl=0

 

В общем, вот как-то так: аи-пак для неписей в мирной и условно мирной жизни. Только для изучения. "Скопировать и запустить" не получится, "адаптировать" ни под какие ОП2 не буду (это или половину ОП2 переделывать, или вернуть все в тот же вид, в каком было - ну а зачем тогда делалось ?).

Education only ! Not for "copy&run" !

 

Что и зачем сделано: пачка делающих одно и то же (а по тому нещадно тормозящих и между делом конфликтующих) скриптов собраны в 4:

ранения и самолечение (в том числе во время боя) - xr_wounded.script

сидение у костра - xr_kamp.script (убрано сидение в костре, "война за место" и зацикливание звуков),

подбирание предметов, шмон трупиков, оттаскивание трупиков от костра, лечение других неписей (под обстрелом и через всю локацию ни куда не премся) - watcher_act.script

уборщик + переодевание + утилизация хлама + инициализация респавна + переспавн аномалий (убраны тормоза стандарного сякоуборщика и глюки от переодевания у переодевателя) - xl_offline.script

 

Конкретно по подбиранию, обиранию, трупотасканию и лечению все расстояния, ценность действия и т.д. теперь задаются явным образом, и выбирается соответствующее действие. Сканирование локации "плавное" - увиденные и досягаемые объекты анализируются по одному за апдейт.

Более подробные описания смотрите в более ранних постах.

 

скрипты с таблицами и xl_relations - вспомогательные, общие для всех. Также, watcher_act.script требует для правильной работы координаты костров для трупотаскания из xr_kamp.script и признак включенного самолечения от xr_wounded.script

 

Для желающих "адаптаций" напоминаю, что скриптики с функцией init() нужно инициализировать, актор и время (global_time_ms, game_time_sec и т.д.), таблицы классов c_* - должны быть в глобальном адресном пространстве; таблица pstor для актора, неписей, монстров - должна быть создана в том числе и при первой загрузке (добавьте создание в reinit() ). xrs_medic и xrs_armor - не нужны, отключить везде.

 

Для правильной анимации самолечения из любого состояния также добавлен стэйт: eat_yad = { weapon = "strapped",

movement = move.stand,

mental = anim.free,

bodystate = move.standing,

animstate = "sit_ass",

animation = "eat_yad" } -- в state_lib.script его надо.

 

ну и много-много мусора надо убирать из amk.script, amk_mod.script, bind_stalker.script и т.д.

 

Ну, как оно все работает вместе - демосборку дам по запросу: там 110мег, это только на кордоне побегать (на свалку не ходим, в пещеру не ходим). Время запуска - естественно, сокращено до 8 (было 14) секунд на фазу загрузки и 5-15 секунд (было мно-о-ого) на "синхронизацию", загрузка геометрии и прочей графики - естественно, ждет добровольцев ;).

Изменено пользователем Dennis_Chikin
  • Спасибо 1
  • Нравится 3
Ссылка на комментарий

В общем, связка se_respawn и системы ньюсов - это ужасно. То есть, когда переспавн одного непися или монстра - это еще терпимо. А вот когда 2 десятка за раз, особенно во время боя...

Ну и со входом в онлайн - аналогично. Лаг и в пару секунд может приключиться. Или даже серия лагов.

 

В общем, переделал. Типа полуфабрикат: https://www.dropbox.com/s/49kt5apawrix74y/news.zip?dl=0

Идея такая, что свеженаспавненное/вошедшее в онлайн - просто заносится в табличку, и там ждет нормального апдейта, а на апдейте уже разбирается, по одному. Если новость вывели - все остальные ожидающие удаляются.

То есть, ни каких вызовов ни откуда не надо.

 

Да, ну и вообще подсократил ту икебану, которая была, заодно перевесив с "таймеров" на нормальный апдейт раз в 5 секунд.

 

Мда, надо бы остальное так же переделать, и микроквесты с монстроспавном допилить, и перевесить на Захара, или еще кого из охотников...

 

Upd: перезалил. Поправил жертв "копипасты", где была путаница id уровня и названия уровня, а также "автораспознавания" игровых и серверных объектов. get_point_description() всегда требует имя карты, а get_nearest_stalker() - id карты.

Сделал простой, очевидны и быстрый вызов mob_death(), следующий на очереди - смерть неписей. Ибо "универсальный" вызов on_death() был, опять же, слишком монстровиден, как и on_spawn().

Изменено пользователем Dennis_Chikin
  • Спасибо 3
Ссылка на комментарий

Чисто из любопытства спрошу,  разработка новой версии НС так и идёт под четвёртый патч? На Амк вообще в курсе что уже почти полтора года  на GOG доступны DRM-free версии игры 2.0.X.X Конкретно сейчас уже 2.0.0.5.

Добавлено BFG,

Новая Солянка будет идти под ЛЮБЫМ патчем. Это уже сделано давно.

Мой комп: Asus@Z170 MaximusVIII Hero + Intel 8700k(QNLV) +24ГБ DDRIV + PA-GTX1060 SUPER JETSTREAM 6G+SSD SAMSUNG PM981A 1Tb..  

Ссылка на комментарий

Камрады, заметил, что броня иногда слетает. Вроде в инвентаре стоит экза, пнв работает, а защита вроде уменьшается. Еще заметил, что по собственной тени можно определить, что броня слетела, если видно простую курку, то да, броня слетела. Это как лечится?

З.Ы. Поисковиками прошерстил, вреде нет ничего на данную тему.

Изменено пользователем mb14
Ссылка на комментарий

Вот ни разу такого не замечал, чтоб "защита уменьшалась". Видимо, по тому и нету.

Более того, если б она слетала - были бы проблемы там, где идут поверки на наличие брони в слоте.

 

Или это что-то типа того "на-на костюма", который, да, зачем-то специально сделан самоснимающимся. Равно как и "невидимый".

 

Вообще, костюм в соли примерно вот года так с 2009-го просто перестал фактически от чего-либо защищать, а скорость, с которой он портится - успешно сводит в 0 и остатки.

Так что - дополнительный вес переноски и пнв - собственно, и есть все ее текущие функции.

 

 

Если же речь идет об чем-то альтернативном - да, не удивлюсь, если кто-то где-то зачем-то добавил принудительное снятие или порчу вообще любых костюмов. Но это уже к тем авторам.

То, что при смерти актор оказывается почему-то без костюма - вот это - так и задумано, да. Зачем - ни кто не знает. Чтобы было. Но на что-либо, пока актор жив - не влияет.

Ссылка на комментарий

Экза военных, экза монолитовцев. Потеря потеря брони чувствуется сильно. Обычно такое происходит после обыска трупов сталкеров.

  • Нравится 1
Ссылка на комментарий

@mb14, в bind_stalker.script в функцию actor_binder:on_item_take (obj) в конец:

-- фикс переодевания гг при взятии броника
if obj:clsid() == clsid.equ_stalker_s then
	local outfit = db.actor:get_current_outfit()
	if outfit and outfit:id() ~= obj:id() then
		db.actor:transfer_item(outfit, db.actor)
	end
end

взял из ОП-2.

Изменено пользователем Eugen81
  • Нравится 2
  • Согласен 1
 

10.png

Ссылка на комментарий

Код несколько странный и загадочный.

Скорее, стоит посмотреть, что там с броней вообще происходит, и когда именно, чем сравнивать ид со взятым. Скажем, сравнить с тем, что в слоте, и что запомнено с последнего раза.

Ну, наверное, к себе проверку добавлю и погоняю.

  • Нравится 1
Ссылка на комментарий

Ага. Изначальный скрипт от Charsihttp://www.amk-team.ru/forum/index.php?showtopic=9514&p=814466

http://stalkerin.gameru.net/wiki/index.php?title=SoC._Исправление_сброса_визуала_костюма_ГГ

Изменено пользователем Eugen81
  • Полезно 1
 

10.png

Ссылка на комментарий

А на счет этих фиксов, чисто ради интереса спрошу. Типичная проверка на апдейте "объема" инвентаря, который зависит от костюма, если переполнен - выкидываем вещь. Если мы снимем очень вместительный костюм (экзик с большим рюкзаком), то вещи из нас посыпятся. А что будет если такой финт db.actor:transfer_item(outfit, db.actor) провернуть? Апдейт успеет пройти в этом случае?

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

Когда выкладывал весь хабар в нычку по квесту с наемниками на АС, заметил, что проблема с растущей радиацией вроде бы решается, если сохранится без хабара в рюкзаке, а потом с этого сейва загрузится.

Еще умудрился словить баг, все стволы, броники и прочиий хабар, который я продавал торговцам, оставался у них после загрузки с сейвов и переходе с других локаций. Проблемма, думаю  вызвана кулаками, которые купил вроде бы у Сидора, а потом ему же безуспешно пытался продать.

З.Ы. Цена кулаков 0.


Провел экспереммент, из рякзака  выкинул в нычку только все радиоактивное и ящики для артов, опусташил все слоты под арты, созранился-загрузился, радиация не растет.

Изменено пользователем mb14
Ссылка на комментарий

Отключение лютого, бешеного, беспощадного и бессмысленного апдейта 100500 рестрикторов, которые ничего не делают, кроме как ЖРУТ.

 

Для ВСЕХ солянок.

https://dl.dropboxusercontent.com/u/27871782/bind_restrictor.script

https://dl.dropboxusercontent.com/u/27871782/sr_idle.script

Обязательно парой.

 

Подробности см.

http://www.amk-team.ru/forum/topic/12926-sistema-alife-logika-povedeniia-igrovykh-obektov/?p=1020283и далее.

  • Спасибо 1
Ссылка на комментарий
Гость
Эта тема закрыта для публикации сообщений.
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...