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

The ReapeR

Жители
  • Число публикаций

    572
  • Регистрация

  • Последнее посещение

  • AMKoin

    10 [Подарить AMKoin]

Сообщения опубликованы The ReapeR

  1. @Space.Marine, @alexsimm, а зайдем с юридической точки зрения?

    У вас как, Photoshop CS куплен в виде Retail-издания, или же оформлена подписка на Adobe Creative Cloud? Или как обычно найдутся желающие в очередной раз прочесть мне лекцию о "национальной идее" в виде скачивания палева с торрентов?

     

    В векторе же "суррогатности" GIMP и проч. альтернатив и "оригинальности" (tm) (c) Photoshop ведение любых дискуссий вижу смешным, поскольку ВСЕ вышеупомянутые редакторы (в том числе "солнцеликий") работают с DDS ТОЛЬКО через плагины в силу специфичности формата (DirectDraw Surface, изначально разработан для использования DirectX-движками); "в миру" же все три являются абсолютно полноценными растровыми редакторами со своими задачами, представленным функционалом, целевой нишей и [исходящей из нее] лицензией.

     

    • Не нравится 1
    • Согласен 3
    • Сочувствую 1
  2. Вот сейчас интересненького (наверное) на поболтать принес.

    Unfortunately, @Bak пока так и не объявился в сети, решил отзеркалить часть лички тут:

     

    В 10.04.2018 в 15:11, The ReapeR сказал:

    Салют!

     

    Заметил интересную особенность с AI additions 2.0f4 для Теней. Я сейчас копаюсь со своим модом, подсмотрел в ZRP 1.09 (http://www.metacognix.com/files/stlkrsoc/index.html) механизм валидации основных модулей еще до открытия главного меню. Если вкратце, там в ui_main_menu добавляется переменная а-ля:

     

    local all_good = db and modules and xr_logic

     

    Потом на ините меню проверяется ее значение, и в случае false предупреждаем о проблемах (modules, как знаешь, загружает все схемы при любом обращении).

    Ну и вот, если раньше все схемы загружались уже после загрузки спавна, то теперь это происходит дважды: при ините главного меню и на "Сервер: Старт" (тоже по вине ui_main_menu). На этом моменте спавн еще не загружен, clsids, скорее всего, не валидны, A-Life тоже.

    А в rx_ai первой строчкой идет rx_utils.init() -> init_clsids() -> запрашивается куча клсидов, далее local alife = alife() и проч. В такой комбинации на нетспавне актора загрузка дропается с логом "attempt to access field actor_net_spawn (a nil value)" на строчке из bind_stalker if rx_ai rx_ai.actor_net_spawn(). Дебаг показал интересненькое: init_clsids() из rx_utils падает на запросе клсида актора, ни rx_utils, ни rx_ai, ни modules далее уже не читаются, потому движок LUA и не видит функцию.

     

    Собственно, вопрос, чисто из спортивного интереса. Что в принципе правильнее: исправить инит rx_ai или не заигрывать с модулями (по идее, могу и то, и то)? Насколько адекватно загружать схемы в такую рань, и должны ли они все быть независимыми от этапа инита (SANB и все ванильные модули, включая xr_kamp с оттаскиванием трупов, загружаются без проблем)?

    Спасибо)

     

    В 15.04.2018 в 11:32, The ReapeR сказал:

    А. Насчет дедманов из xr_kamp чуть наврал) Пришлось инит таблицы body_grab_bones перенести в конструктор, так как там запрашиваются клсиды.

    По всем rx_* очмного различного инита выполняется за пределами функций, просто в теле. Полностью как следует прибраться пока не смог, загружаю схемы отдельно от вызова modules, позже, на ините спавна.

    Кстати, насколько же шатка и зависима от условий загрузка схем в ванили: первый вызов modules приходится на get_stype() в xr_gulag, когда запускается первая gulag:beginJob() для, если не ошибаюсь, раненого Толика. То есть любое вмешательство в данную функцию, либо же референс к modules в каком-либо другом кастомном скрипте раньше данного места приведет к более ранней или поздней загрузке схем (или вообще незагрузке). Явно нигде схемы они не грузят, все юзание modules сводится к запросам значений stype_*.

     

    М?

  3. @Капрал Хикс,

    все верно, ui_wpn_params.script. В Zeno 0.115 там изменена функция get_wpn_accuracy() (мог ошибиться в названии, пишу с работы; она самая нижняя в файле). В ванили там запрашивается, помимо базовой дисперсии оружия и коэффициента "стандартного" (FMJ, дробь) патрона, еще и дисперсия актора и проч (плюс танцы с неведомыми меджиками). В модификации расчет совершается только из комбинации базовой дисперсии, коэффициента патрона и fire_distance, плюс нормализуется k_disp для ближнебойных патронов типа дроби (чтобы не занижать показатели у шотганов).

    Вообще, эти шкалы -- большой простор для фантазии, особенно при глобальном ребалансе ТТХ. Их ВСЕГДА можно сделать честными и красивыми, главное -- спроектировать подходящие под "боевой базис" своей модификации алгоритмы.

     

    @Charsi, во, кстати, давно хотел узнать (плюсовые сорцы никогда не читал).

    Не сталкивался случаем, в перечислении содержимого т.н. surprise_box и тайников ведь нельзя аддон сразу на оружие нацепить, только вместе с ним положить? Я про подобные:

    wpn_ak74_m1, ammo_5.45x39_fmj, 60, wpn_addon_silencer, medkit, 3

    Как вешать их в профилях NPC и на свободнолежащие стволы через флаги, знаю, а тут очевидного решения не вижу :Z

    • Спасибо 1
  4. @dPlayer,

    function have_any()
    	return (db.actor:item_in_slot(1) or db.actor:item_in_slot(2) or db.actor:item_in_slot(6)) ~= nil
    end
    
    function have_any_opt()
    	local act = db.actor -- сомнительный по выигрышу шоткат, после ZRP шарахаюсь от любого дублирования
    	return (act:item_in_slot(1) or act:item_in_slot(2) or act:item_in_slot(6)) ~= nil
    end

    Просто пара примеров, с оптимизацией использования переменных и однотипных вызовов.

     

    • Спасибо 1
    • Согласен 1
  5. @AndrewMor, так у тебя переменная src нил. Нужно выше по коду смотреть, где она инициализируется и места всех присвоений.

     

    UPD: так это ж ванильная parse_condlist(). Где-то ты ее вызываешь, передавая последним аргументом нил вместо строки.

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

    Например:

    function parse_condlist(npc, section, field, src)
    +	dbglog("xr_logic.parse_condlist: %s [%s] %s %s", npc and npc:name() or "<nil>", tostring(section), tostring(field), src or "<nil>")
    	local lst = {}
    
    	-- 1) Разбиваем на разделенные запятыми части:
    [...]

    где dbglog() -- любимый вариант выхлопа.

    Для уменьшения спама можно занести вывод под if not src или if src == nil (if src ~= "" etc.).

     

    Вообще, она предназначена для парсинга т.н. кондишен-листов, которые обитают, в основном, в config/scripts/, config/misc/task_manager.ltx, config/misc/treasure_manager.ltx и в оллспавне (поле cond, секция [logic] в custom_data). Так что проблема может быть и не скриптовой. По имени NPC и названию секции сможешь найти конкретное место.

     

    • Полезно 1
  6. Господа, вопрос.

    Работаю на довольно сильно измененной скриптовой базе. В какой-то момент стал ловить вылет на юзании неписей, причем только генериков, и только когда по идее должны появиться стандартные фразы "Что интересного можешь рассказать?" и т.д.

    Сидорович полностью рабочий. Диалог с Волком проходит безо всяких проблем, пока не тыкнешь "Я попробую" или "Не слабо. Но не пойду". Вылет не содержит никаких отсылок к LUA, лишь ни о чем мне не говорящий стектрейс:

     

    stack trace:
    
    0023:0773F45E xrGame.dll

     

    Предыдущий снапшот папки scripts такой проблемы не содержит, но изменений с тех пор гора.

    Сам вопрос: какова цепочка вызовов функций при юзании генерик-непися (в ванили)? Одним из первых, насколько понимаю, вызывается xr_motivator.motivator_binder:use_callback(). И судя по добавленному дебагу, он отрабатывает от начала и до конца. А далее?

    Благодарю.

     

    UPD: к слову, death_manager полностью рабочий. Сталкеры убиваются, инвентарь чистится, лут генерится в соответствии с дроп-секциями. Можно обыскать, стянуть предметы, никаких проблем.

    UPD2: вылет исправил -- накосячил в dialog_manager. Но цепочку вызовов для общего развития все ж интересно узнать.

     

  7. 6 часов назад, Возрождённый сказал:

    [...] Все равно у меня какое-то навязчивое подозрение, что они не совсем правильно работают...

     

    По-хорошему, нужно не "гасить симптомы" отключением шкал, а править логику в ui_wpn_params.script под конкретную ТТХ-систему.

     

    В конктексте какой базы вопрос? Если AMK, то шкалы завязаны на новые параметры в секциях стволов: hit_rate, disp_rate, а также на порядок секций патронов в ammo_section (первой должна идти секция наиболее "продвинутого" типа боеприпасов: дротик для шотганов etc.). В противном случае шкалы будут врать, и сильно. На моем опыте, практически ни в одном моде, построенном на базе AMK, не удосужились внести соответствующие правки, зато на "вранье" шкал не жаловался только ленивый)

    Если речь о ванили, то там есть "проблемки" со шкалой "Точность". Она зависит даже от базовой дисперсии актора, хотя в идеале должно рассматриваться оружие, зажатое в тиски. Простейший вариант исправления на более-менее "честную" логику -- в олдовом Zenobian Mod (использую их метод в своем аддоне), но ничто не мешает разработать свой, особенно при использовании нестандартной ТТХ-системы: скажем, TrickSR и т.д.

     

    • Спасибо 1
  8. Салют, @Bak. Большое спасибо за осеннее обновление AI additions и худов, очень здорово!

    Нашел момент при совмещении со своим паком. Во всех вариантах (ТЧ, ЧН, ЗП) в скрипте используется анимация pripyat_horror, однако в базе ТЧ ее нет. Ранее она поставлялась вместе с модом, но в версии от 14.09.16 anims/camera_effects была удалена.

    • Спасибо 1
  9. Экстраполируя культ храброй смерти в бою древних германцев на мифологию Темного царства ионизированной пыли, воображение рисует стальные профили танков Монолита, жаждущих остыть в Сердце Вселенной во имя Его Воли.

    R_QXy35be3o.jpg

    • Нравится 2
  10. Забавно, но, во-первых, "явных ошибок синтаксиса" не видит компилятор LUA, а во-вторых он с этими "ошибками" как-то проработал у меня целых 7 лет уже, и еще у 2-х человек минимум.

     

    [...]

    Не берусь утверждать, поскольку со скриптами и LUA работал довольно поверхностно. Тем не менее, в 2010 году у меня в сборке долгое время была ошибка в синтаксисе в xrs_grenade.script и условие в xrs_ai.script

    if xrs_grenade then
        load_scheme("xrs_grenade", "grenadier", stype_stalker)
    end
    НЕ выполнялось, схема не загружалась вообще.

     

    Если же мы говорим о конкретно вышеупомянутом варианте level_weathers.script, то тем более не берусь утверждать, поскольку даже не открывал его, честно говоря.

    Посему прощу прощения, если дезориентировал кого.

  11. Доброго дня! От нечего делать и после гуляния по старым заброшенным темам решил погреться здесь (-25 за рязанским бортом).

    Хотя на самом деле заглянуть сюда меня побудило желание поделиться впечатлениями. Впервые с 2011 года я установил себе Shadow of Chernobyl и, внимание, Old Good Stalker 2.3.1. НЕ Evolution. OGSM 2008 года. И знаете, что скажу? После сотен огромных, но бессмысленных на мой взгляд проектов пробежаться по таким классическим модам -- просто сказка. Очень рекомендую в перерывах между ОП-2, Call of Chernobyl и прочим, что сейчас популярно (совершенно не в теме последних проектов, кроме OGSE тройки и NLC 7).

    В планах теперь перепройти чистый AMK 1.4.1 и NLC 5.08. Такие вот дела)

    • Нравится 2
  12. В бородатой шутке про чередование все же была Windows Me, а не 2000, так как там рассматривались домашние версии системы.

     

    WZor в своем бложике конкретно писал о том, что обновиться до легальной Windows 10 можно будет с любой версии 7/8.1. Долгое курение мною FAQ по обновлению на офсайте Мягких так же не выявило никаких упоминаний о легальности обновляемой.

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

     

    Последние Insider сборки стабильностью не отличаются, да. В целом, эти Insider Preview оставляют ОЧЕНЬ неоднозначные впечатления, правда, чем дальше, тем лучше, кажется.

     

    Если смотреть глобально, то Windows 10 это четвертая (или даже пятая, если считать 8.1 обособленной) подряд Vista. Насколько это хорошо или плохо, можно будет судить после выхода, но сама затея превратить Windows в автообновляемый сервис и избавиться от версий мне нравится.

     

    P.S. Основной системой держу Arch Linux.

  13. Посчитал нужным отписаться. Давно поправился от травмы, но из-за учебы не могу выкроить и минутки на статьи. Кто располагает временем/знаниями - вперед, план в шапке. Я подключусь со временем, никуда не денусь.

    • Спасибо 1

AMK-Team.ru

×
×
  • Создать...