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

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


n6260

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

(изменено)

Monnoroch, почему я перестал ловить зависы - разобрался (сделал синтаксическую ошибку в xrs_armor, и он просто перестал работать вообще - смена визуалов, естественно, тоже). А вот как обойти - похоже, только непися в исключения. Обработку таблички исключений excluded_npcs я привел в чувство, заодно в самой табличке одну ошибку нашел. Почему зависает - так и не понял. Вроде правильно все, - а не работает. Причем, до выбора нового визуала дело даже не доходит - раньше виснет биндер. И группировка есть, и визуал, и в таблице все это расписано для разбираемого мной случая - а вот зависает биндер, и все. Поскольку это все происходит у неписей с конкретным визуалом - проще всего запретить им его менять. Для бара - это bar_ohotnik_respawn_1 (зеленый охотник).

 

Monnoroch, для того, чтобы править таблицу, нужно придумать, каким способом обрабатывать смену визуала.

Если я в это полезу - на правку уйдет месяц (учти еще времени на переписывание самой таблицы). По-моему, для текущей правки - вполне подойдет прописывание исключений. К тому же, у тех зеленых охотников всегда были проблемы, и вообще не так уж много еще таких, у кого это глючит.

 

Еще есть проблема: удаление "зависшего" непися - хорошо, но нормально работает только если он "свеженький". Если же пстор уже пуст - мотиватор выдает, что "save file is corrupt", но мое условие в pstor_load_all не срабатывает. Нужно, видимо, собирать список зависших в какую-то глобальную таблицу и проверять из нее: если пстор побит - удалять. И причем делать это еще до попытки грузить пстор, или исключать из загрузки пстора по этой таблице и удалять уборщиком (в самом конце загрузки).

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Stalker Nest, D1mon, будете флудить здесь - по шапке получите. Здесь не место для фантазий.

 

Monnoroch, эта проверка и так есть - везде, где есть сообщение "save file is corrupt":

aem_bind.script

bind_monster.script

bind_stalker.script

xr_logic.script

xr_motivator.script

Вот я и хочу там же заполнять табличку "инвалидов" и потом, пропуская их при загрузке пстора - мочить их где-то в конце загрузки. Может, и уборщиком. Ну и если не дай бог квестовик - восстанавливать (полной таблички, правда, нет пока).

 

sapsan, приветствую! Спасибо, что порядок навёл :)

 

Monnoroch, Опять нарвался на неудаляемость. Теперь - уже точно. Неписи вроде как отвисли, даже диалоги заработали. Сейв/лоад - вылет при попытке повторного удаления, глюкануло на стадии alife():release(obj,true). Как это понимать - вообще бред. В скрипте стоит так:

switch_offline(obj)

alife():release(obj,true)

И перед этим - был сейв, в котором этим же кодом удалилось (точно такой же зеленый охотник был, тоже недалеко от меня). Тут все так же - ан нет, вылетает!

 

Странно все это. Снова спровоцировал завис, сохранился. Удаление не сработало. Сейв/лоад - охотник на месте, опять удаление не сработало. Правда, не вылетает. Что за фигня и как бороться - не понимаю.

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Monnoroch, все это как-то плоховоспроизводимо (удаление, в смысле). Один раз - получается, второй раз - нет. И непонятно, от чего зависит результат.

Пробовал я присваивать от другого НПЦ (причем даже с той же секцией - брата-близнеца, можно сказать). И уже писал про результат - вылет, причем с невменяемым логом. В том-то и дело, что не получится, и по вполне объективным причинам. Если переписывать нетпакет - нужно детально разбирать, что значит каждая переменная и писать что-то правдоподобное (т.е. формировать нетпакет по-новой фактически). Там очень конкретные вещи у каждого непися: координаты, сиды (если из аллспавн присвоен), и куча есть такого, что вообще непонятно что значит. Я приводил результат дампа этой таблички нетпакета ранее (от "здорового" непися), перехваченной при сохранении. Когда попытался катануть его "больному" - вылетел. Тупик, короче.

 

А отлавливать зависших в том же хр_лоджик, кстати, научился - получается (как по кривому пстор, так и по пустому).

 

Я так понимаю, что единственное, что реально - устранять причины зависов, потому как заставить движок сделать то, что я пытаюсь, да еще и с гарантированным результатом - утопия. Но тогда нужна наработка, кто зависает и где (на каком скрипте в апдейте биндера, в смысле), а без отладки и логов - это невозможно. Отладка зависа "на лету" возможна только из апдейта - только там можно увидеть, на какой стадии работы биндера происходит затык. Пока есть только вариант смены некоторых визуалов, как причина зависа. В принципе, отключить ее можно закомментив всего лишь одну строку, но тогда не сможем уже к ней вернуться, т.к. чтобы включить обратно - опять же нужно понимание, почему у некоторых визуалов при их определении происходит завис, или хотя бы знать, у каких визуалов есть эта проблема.

 

Arhara, спасибо, попробую делать ему "харакири". В принципе, практически получилось. По крайней мере, отсеять при загрузке сейва "зависших" - получилось точно. Можно же еще попробовать make_suicide из АМК. Или еще какой-нибудь npc.health = -1. И Мон говорил, он третий способ знает ;)

Может, npc:hit(h) (только параметры этого h задать правильно и такими, чтоб смерть 100%). Еще помучаю этот вариант. Трупик - уборщик приберёт, он позже запускается :)

А насчет удаления с помощью аллспавн - тоже вариант, но очень уж напряжно. Каждому прописать поршень удаления, а еще же не все из аллспавна, есть ведь и скриптовые, и фиг знает, сработает ли нормально, если непись зависший (тот же разговор с Боссом - ведь вызывает вылеты, а там неписи не зависшие).

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

---------------

Как это правильно сделать?

local npc = alife():object(npc_id)    -- или тут нужен тот обж, что в pstor_load_all и передан?
        local h = hit()
        h.power = 0.5
        h.direction = npc:direction()
        h.draftsman = db.actor 
        h.impulse = 1
        h.type = hit.wound

и выдается, что direction 'a nil value'. Без него - hit 'a nil value'.

Подскажите, как правильно описать минимальные параметры для хита, чтобы сработал и какой объект ему совать?

Как я понимаю, дирекшн лучше задать абсолютно, не привязывая к неписю (=0 пробовал, ловлю моментально вылет без лога).

А может, проблема в том, что непись зависший...

 

 

 

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Вроде получилось суицидом. Проверяю...

---------------

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

Дополнил табличку исключений неписей по смене визуалов еще немного по анализу генераторов (MAV здорово помог: сейв его - прямо кладезь всяких глюков был, но все поправилось).

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

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

Но, похоже, все зависы - на смене визуалов (по кайней мере, других зависов не видел пока).

 

Arhara, и все-таки: выпускать правку отдельно, или будешь ее включать в патч? Я просто надеюсь завтра домучить уже правку. Там и по хрс_армор, и по хрс_утилс вылеты подхвачены (тоже сейв Мава помог, кстати :) ). Собственно: патч не передумал делать, или только уже с новой локой? :rolleyes:

---------------

Дима, спасибо, попробую с хитом

 

такая уборка вероятна только в оффлайне

Дима, зачистка зависших работает только при загрузке сейвов и переходах на локу, но только по порядку запуска - чуть раньше уборщика. Игрок никогда не увидит, КАК все происходит. В самом худшем случае, ГГ может во время сохранения иметь в поле зрения зависшего непися (в текущем состоянии скриптов такой сейв не загружается), а после его загрузки - непись либо будет трупом, либо исчезает вовсе. Пока убиение и приборка работает через раз, но незагружавшиеся ранее битые сейвы грузятся, и сейвы, сделанные уже после отработки "восстановительных работ" - тоже. Есть лишь вероятность, что неубранный труп зависшего обберут другие неписи и также зависнут, нарвавшись на ту же причину (например, подобрав броник и зависнув на смене визуала). Чтобы этого не было, лучше, конечно, проставить в табличку исключений excluded_npcs в хрс_армор таких неписей (имхо, самое лучшее - для всех неписей с новыми визуалами - на Генераторах, на Припяти и т.д.). Я сейчас пытаюсь отловить по максимуму всех, кто подвисает, но, конечно, не могу гарантировать, что выловлю абсолютно всех.

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Monnoroch, я беру только параметры хита оттуда, остальное - в хр_лоджике :)

А та ф-ция в хр_лоджик и так страбатывает только на объектах, находящихся на текущей локе при прогрузке биндеров.

Короче, <твое условие> - у меня при попытке загрузить пстор объекта. Если он кривой, то тогда начинаю его немножко рэзать.

Удаление работает через раз. Хз почему. Но сейвы - грузятся исправно.

Уже видел парочку сейвов с кучей зависших монстров (причем, в одном случае они удалились, во втором - нет). И откуда они такое берут? Ни разу за год игры в Соль такого у себя не видел.

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)
какбы БТРы не поназависли...

Monnoroch, а зря смеешься, между прочим: когда я накосячил с записью на ПДА, и вертолеты и БТРы под раздачу попали: я ведь писал пстор только актору и на нетПДА, а все остальное было "в пролете" (основная часть нетпакета писалась, а псторы - нет) :crazy:

И очень даже возможно, что при глобальных затыках, на которые пользователи внимания не обращают (даже у некоторых вон сохранки с актором зависшим) - могут и БТРы тоже заглючить... Но я их не трогаю. Пока ;)

Как я понимаю, серьезные проблемы с повальными подвисаниями (не связанными с реальными ошибками в скриптах и конфигах) - на дохлых компах, или при кривых установках мода, иначе проблемы были бы у всех поголовно.

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

dimos, при загрузке сейвов с зависшими монстрами - в логе то же, что и при подвисших неписях - поврежден сейв + с моей отладкой имя, где я встречал крыс, снорков, собак, гигантов и контрика. А вот как это заполучить - не знаю. насчет построения пути - врядли, т.к. завис биндера - как раз именно потому и происходит, что управление ему не возвращается при отработке какого-то из скриптов, выполняющегося внутри (в твоем примере с GAME path - движок корректно отработал косяк и пошел дальше).

Заточить мод под компы, для которых писался оригинал - боюсь, уже невозможно. Но вот сделать две версии (первые шаги, кстати, уже делались: фикс иконок, аскетичный худ) - наверное, можно. Сделать облегченную версию Соли без ряда наворотов (подыскать что-то некритичное для концепта, но грузящее двигло - те же визуалы, еще что-нибудь подобное).

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

sapsan,

5. проверка на имена неписей - ты совершенно верно подметил. Их проверяют ранее, в npc_update по таблице, но прикол в том, что в таблице - названия секций и проверка на точное совпадение, а если в нее внести секцию непися, которому не назначен story_id в all.spawn, то его obj:name() выглядит как у стволов (с сидом в конце) и проверка, естественно, обламывается. Это я разрулил уже. Я здесь приводил ф-цию, которой я вычисляю название секции любого непися (взятого что как GameObject, что как серверный). Имена же там в функции check_armor вообще убираем. Проверка на outfit и exoskelet - потому, что ведь суются туда на проверку секции абсолютно всего содержимого инвентаря непися, а проходить проверку для дальнейшей обработки должны только броники. Т.е. секцию непися фильтруем перед перебором инвентаря в npc_update, а его содержимое - уже в check_armor.

 

По остальным пунктам - посмотрю, отпишу в этот пост, что думаю.

------

sapsan, Условие в check_armor должно выглядеть так: if vis and vis ~= "" and ((string.find(section,"outfit") or string.find(section,"exoskeleton")) then... имён там быть не должно вообще и в скобки нужно взять оба "или". А секции имён - переносим в таблицу excluded_npcs, где и задумано.

 

6. "проход по всему" - явно нужно убирать и переписывать этот код повышения уровней, Мон только что выражал мнение про переборы всех объектов (for a=0,65535 do). Чем дохлее комп, тем больше вероятность получить завис биндера "на ровном месте" (казалось бы, формально ведь все правильно, а вот в плане оптимальности - ж... полная). Не знаю, может правильнее перебирать только объекты в db.storage (это, насколько я понимаю, объекты на текущем уровне). Нафига трокать абсолютно всех сталкеров?

 

8. можно, конечно, прописать все локи в табличку upgrade_top_lvl, но лучше сначала привести в порядок остальной код :)

 

Monnoroch, та не, не думаю, что там что-то сильно уж криво. Таблички дополняли в основном, насколько я знаю. Ну и я руку приложил, еще весной или летом :)

Я не против, только где брать оригинал?

-------

Как хоть мод называется? AI pack FINAL? Автор написал про мод только в самом хрс_армор - "-- made by xStream 03.2008".

Monnoroch, Кстати, имя автора в русской транскрипции - Экстрим, ну или экСтрим, но никак не Стрим :)

Посмотрел, вобщем. Отличие - в одной функции. У экСтрима ее нет: get_npc_current_visual_level. Вместо нее у экСтрима - get_npc_level.

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

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Выложил фикс: http://www.amk-team.ru/forum/index.php?sho...st&p=357853

Что менял:

1. В скрипты

aem_bind.script

bind_monster.script

bind_stalker.script

xr_motivator.script

Добавил к отладочному сообщению SAVE FILE IS CORRUPT название функции и имя объекта и после него - запуск своей функции удаления зависших из remove_zavis.script. В bind_stalker, по завису актора - только сообщение :)

2. В protected_items.script - переделал функцию получения имени секции объекта get_obj_name (теперь она действительно работает и с игровым объектом и на выходе выдает именно точное имя секции обжа).

3. В xrs_armor.script - использовал функцию из п.2 для корректной отработки исключений в функции npc_update. Плюс несколько проверок на нил в check_armor (делал не "от фонаря", ловил вылеты из-за пустых таблиц визуалов на генераторах: вылет был хрс_утилс:888, теперь его нет). Дополнил таблицу исключений excluded_npcs по реально найденным мной проблемам с зависами (около десятка секций добавил). См также п.6

4. В xr_logic.script переделал проверку убитого пстора и также вставил запуск ф-ции удаления из remove_zavis.script + мелкая правка.

5. В xr_wounded.script - мелкая правка - была неверная проверка на нил в функции evaluator_wound:evaluate ()

-6. Забыл перенести имена секций Пантеры и прочих из условия в check_armor в таблицу excluded_npcs (ToDo, так сказать).

-7. Не сдалана пока проверка, не удаляем ли мы случайно зависшего квестовика. При текущем положении вещей - по-любому альтернативой является только переигровка. Могу сейчас только сделать саму проверку и либо не удалять (будет вылет), либо удалять (возможно, будет затык с квестами) (ToDo_1).

-8. Забыл копирайт проставить в remove_zavis.script (правда, фраза капсом про удаление- не моя, а Kamikazze, ну и без помощи Архары и Мона, а также наработок Колмогора и Меченого я мог бы и не справиться, так что скрипт - народный, как и все в Солянке) :crazy:

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)
полная переоаботка даже самого принципа работы механизма

Monnoroch, вот видишь, это ты как программер понимаешь, а теперь посмотри со стороны пользователя - много поменялось ?

все данные,о том,что оно коррупт из него же и берутся

Нет, не из него. Не знаю, почему, но если я ту же самую проверку, что делается, например, в bind_monster.script в функции generic_object_binder ("if reader:r_eof() then"), выполняю из хр_лождик, он почему-то считает объекты зависшими, хотя они таковыми не являются.

Так что буквально в последний момент вчера вечером мне пришлось задержать выпуск фикса на пару часов и все переделать.

И все мои непонятки (ну почти все) - разрешились. Могут быть монстры с пустым пстором, и при этом не вызывать проблем и не являться зависшими. Но все же есть проблемы с монстрами и удалялка их киляет без проблем.

 

Monnoroch, проверка - "if reader:r_eof() then", я же написал. (Если можешь объяснить, что она значит с твоей точки зрения - буду благодарен). "Конец файла" - ответ неверный :) Это что-то похожее, но ведь при пстор на миллионы слов - тоже reader:r_eof()=true - чего тогда конец?

Почему она при одинаковых исходных данных работает по-разному - могу лишь догадываться, но факт-упрямая вещь! Я, как всегда, сделал так, "чтоб работало" (и работает ведь!), а нюансы - потом выяснять будем. Я умышленно выложил фикс раньше, чем выходит патч Архары - надеюсь, народ поможет найти глюки, если всплывут ;)

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

sapsan, к сожалению, в каждом конкретном случае по логике - разные списки. Я уже думал об этом. Тут лучше пока сильно новшества не вводить. А где держать исключения - все равно, можно и в тот скрипт переносить.

 

 

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

sapsan, уборщик срабатывает один раз при загрузке, а переодевание - рандомно. При серьезной боевке - оно может срабатывать очень часто, можешь сам легко убедиться, поставив метку в функцию check_armor, перед проверкой на наличие в имени секции названия outfit и на наличие запрещенных неписей по табличке excluded_npcs - загружаешь любой сейв, где есть вокруг неписи и что-то уже на локе происходило (боевка какая-нибудь), или покидай пару броников. Короче, лучше там из конфигов не читать ничего - молотит будь здоров.

В принципе, на крайняк всегда можно убрать какую-нибудь запятую или закомментить строчку в xrs_armor (или закомментить запуск в мотиваторе) и переодевание перестанет запускаться вообще :crazy:

 

Arhara, кстати, при уборке зависшего квестовика можно попробовать писать в нетпакет ГГ какую-нить переменную, в которой будет табличка, кого поубирало. Потому как в консоль выдавать - перезагрузился, - потерял; в ПДА ньюсами - тоже трется со временем. По идее, даже правильнее при гибели любого непися, участвующего в сюжете, можно такое проделывать. И сделать какую-нибудь приладу, чтобы проверять этот список и что-нибудь с ним делать (например, переспавнивать или проверять квесты, или еще чего).

 

=================================================================

 

Очень интересный случай со стволами описал вчера magnit:

Shadowman По порядку:

1. На АС появился после загрузки локации, после перехода с Радара, когда с Радара уходил никого в радиусе действия биорадара и ПДА не было

2. После появления ПДА пиликнуло что есть 5 НПС, обернулся в сторону Радара из за края локация вышло 5 НПС, все с ЛРками за спиной, шли с Радара на АС.

a923b7c8c98e354f11c964d70b0885704d525e45694169.jpg

3. После прохождения точки перехода для ГГ

3662684317420372c5e43b5a02af2e614d525e45694170.jpg

у всех из за спин исчезли стволы, (двое стоят возле меня) они спокойно пошли в сторону барьера Свободы, я пошёл следом за ними, дошёл до пересечения, где дорога разделяется на дорогу к базе Свободы и в сторону заставы наёмников, они двинули к Свободе, я к заставе наёмников.

После загрузки перехода на ДТ было сообщение уборщика,что 5 стволов убрано с Радара, я думаю что эти вот стволы и были, если сэйв найду скину в личку.

 

 

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

У себя таких случаев не наблюдал, но поскольку сейчас практически не играю уже - и неудивительно.

А без сейва медитировать над кодом Бака (скорее всего) - не возьмусь :)

 

Дед, скорей всего, аддон Бака прячет стволы. Т.е. "в инвентаре" - можно проверить только на трупе, а при торговле - прячут (там есть разграничения оружия ближнего, среднего и дальнего действия, плюс гранаты, мед.препараты). Скорей всего, так и задумано.

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)
помедитировать могу часов n+1

я уже это проделал несколько раз, но убедился, что разобраться в коде мне не по зубам :)

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

У меня отладка была включена на самых основных моментах - никаких косяков не замечал.

level.name то поменялся!

Monnoroch, да, но очень уж странное совпадение, не находишь?

Есть еще вариант исключить эту ЛР300 - там у него предусмотрен вариант forbidden_weapons в конфигах. Наверное, нужно поставить

forbidden_weapons = wpn_lr300 во всех конфигах аддона и посмотреть, как это скажется на появлении оружия. Если прекратит вылетать по вертексам, то Архара был-таки прав. По сути, и в полуфинале этот вылет уже перестал быть критичным - перезагрузка сейва перед заходом на радар ведь помогает.

 

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

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

dimos, а откуда уверенность, что именно этот переход? И он в обоих случаях с одинаковым сидом? Процитируй, что в аллспавн?

Скорей всего - спавн перехода по условию поршня, выдаваемого в диалоге. Или с начала НГ?

 

dimos, так самое главное - это то, что этот переход в аллспавн и с тем же сидом. Вот потому и вылазит "already in the Story registry!"

Т.е. либо из аллспавн-а убирать, либо из экшенов

 

Данные о том сколько ремкомплектов испозовалось для конкретного ствола можно по идее писать в нетпакет

Ray, такое сделать теоретически можно, используя сид ствола. И, например, удалять переменную после продажи этого ствола.

Тогда уже мы вплотную подходим к уникальности каждого ствола в игре :)

Альтернативой, кстати, является запись нетпакета на сам ствол. Но это уже маразм, имхо.

Но тут есть элемент непредсказуемости: откуда нам знать, сколько стволов игрок будет юзать за игру?

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

Вообще-то это могло бы быть альтернативой усложненному ремонту. ...И трудозатраты вроде не особо велики.

 

------

Ну да, я именно это и говорю. Сид в игре уникален - поэтому именем переменной и будет сам сид (story_id), а значением - кол-во ремкомплектов.

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

При использовании ремкомплекта будет проверка и запись, при ремонте / продаже - удаление. Все логично.

 

------

Ты про Деда? Ну, никогда нельзя нравиться всем :D

Можешь сделать свой мод - и всего-то делов :ny_z_1:

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Galil, про лайт-версию писал я (причем, чисто теоретически, просто подал идею). Имел в виду вариант с облегченными текстурами и файлом иконок 2048х2048 в основном. К скриптам это тоже можно частично отнести (например, отключить пару фич, но это все в чистой теории).

Самое интересное - кто это будет делать. Явно это должен быть человек, которому это нужно самому. :)

 

Ray, работа по оптимизации основных скриптов нужна в Соли как воздух. И это никоим образом не может относиться к какой-то лайт-версии. Это нужно всем без исключения. Если подтянуть для начала самое криво написанное - будет отлично, а если всё - то это вообще почти недостижимый идеал.

 

Ray, вот именно! Я как раз это и имел в виду, когда намекал про желающих поработать над кодом.

Вот и Сапсан уже подогнал мне правленный хрс_армор с учетом скрипта амк. Только вот погонять бы чуток...

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Появились первые недовольные удалением зависших неписей. Ну что ж...

Раз такое дело - отпишу, чего нужно сделать, чтобы отключить эту фичу.

 

Все до смешного просто. Берем и в скрипте remove_zavis.script оставляем только это:

function remove_obj(obj)
    local npc_id = obj:id()
    if IsStalker(obj) or IsMonster(obj) then
      abort("xr_logic: ОБНАРУЖЕН ОБЪЕКТ С ПОВРЕЖДЕННЫМ PSTOR: '%s'", tostring(obj:name()))      
      
    end
end

Все. Будем ловить вылеты по зависшим неписям, как это было раньше.

 

Кстати, коллеги:

ACS для Солянки от 26.01.2010 описание в теме ACS

(все несколько сыровато, но работает вроде :) )

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение

sapsan, вот что пишет тов. malandrinus здесь

Я проверил и выяснил, что для всех объектов, у которых sid не установлен, и obj.m_story_id, и obj:story_id() выдают значение 4294967296. Если посмотреть на шестнадцатеричное представление этого числа, то увидим 0x100000000. Т.е. вообще говоря число выходит за пределы 32-х разрядов, однако младшие 32 разряда равны нулю.

Сорри, если баян :)

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

clsid()>172 and alife():object(artefact.parent_id):clsid()<180

sapsan, Arhara,

Я точно знаю, что есть аномалии с clsid() = 188 (достаточно заглянуть в class_registrator - там правильно написано, я проверял)

Возможно, и с бОльшими значениями есть. И как-то кривовато это проверка написана... Неужели нельзя более корректно проверять ?

Есть аналогичная проверка в ньюсах. Там вообще половина аномалий вызывает в итоге сообщение "причина смерти неизвестна".

Это, естественно, некритично именно в ньюсах, а вот в оффлайн_алайф - ?

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение

Из этого обсуждения я сделал для себя два вывода:

- по классу аномалии отличить можно, но очень приблизительно, только явно их отличить от других объектов в игре

- чтобы точно определить тип аномалии и ее название (для детектора, для "варки") - нужно пользоваться названием секции.

Вот от этого и будем плясать

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение

Ray, о каких таблицах речь? Для переодевания? Зачем??

Там важен только визуал - входящий и исходящий: т.е. какой на какой меняем. Все навороты в конфигах сделаны для ГГ, для неписей нет разницы, есть в бронике ПНВ, укрелен он или еще чего. Нужно разраничить только общие типы и принадлежности к группировкам, и все.

 

Добавлено через 7 мин.:

Сделать

1)Рецепты сложные - из 5-7 ингридиентов.

2)Важен порядок.

Monnoroch, здорово конечно. Но засесть сейчас еще раз переписывать то, что уже практически сделал - неее, спасибо :crazy:

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

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