Overf1rst 1 503 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Тень Чернобыля. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 6 4 1 3 1 3 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DarkStalker 9 Опубликовано 11 июня, 2021 Хочу обратиться к знающим людям, опытным в модостроении за советом. Я сейчас тестирую свою сборку на Тень Чернобыля. Сборка довольно большая по объему. Так вот, проблема в следующем - первая часть сборки идет на "ура", с Кордона до лаборатории Х-16 нет ни одного вылета, все летает. Как только начинаются события после лаборатории на Янтаре начинается форменный адъ и израиль. Начинаются системные вылеты, причем постоянно с разными логами, битые сейвы. Самое интересное, что эти вылеты "запирают" игрока на конкретной локации - то на Армейских складах, то на Янтаре, то на Агропроме. Приходится откатываться назад и играть с какого-нибудь старого сохранения, переигрывая тот или иной эпизод. Самое странное, что сборку я прошел до конца до самой лаборатории О-сознания, т.е. она проходима, была бы непроходима, давно бы к черту бросил это занятие. Я конечно понимаю, что СТАЛКЕР давно претендует на звание самой нестабильной и багованной игры в истории компьютерных игр, но хочется довести работу до конца. Так что прошу помочь мне понять, почему а) проблемы начинаются именно после Янтаря б) почему все время вылеты по разным причинам, как правило, не связанные с работой скриптов. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 11 июня, 2021 (изменено) yurv3 через редактирование нет-пакета. Легче всего через модуль от Артоса m_netpk (с ним идет инструкция) или через amk-шные скрипты (примеры в самом amk или в солянке ). Но нужно с ними осторожнее, чуть что не так - сломается сохранка Дополнено 8 минуты спустя DarkStalker сотни причин могут быть, гадать долго можно. Восстанавливали работоспособность printf? Может что покажет. Обложить всё, что только можно, в скриптах выводом в лог. Как вариант еще отрубить вообще все новые скрипты, вернуть старые, если оригинальные заменены, чтобы точно быть уверенным в том, что проблема не в измененных скриптах 3 часа назад, DarkStalker сказал: Я конечно понимаю, что СТАЛКЕР давно претендует на звание самой нестабильной и багованной игры в истории компьютерных игр это относится к рандомным багам и вылетам. Если что-то происходит постоянно - это явно не в самом сталкере проблема, а что-то не так сделано в файлах Дополнено 15 минуты спустя ian98 скорее всего, где-то что-то ломается в скриптах в биндере нпс, может в них ошибка. Или просто не успевает всё отрабатывать из-за кучи всего Изменено 11 июня, 2021 пользователем vader_33 1 1 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 12 июня, 2021 (изменено) Как присвоить кондишн оружию и броне при попадании в инвентарь гг? Пытаюсь на on_item_take в bind_stalker повесить функцию с death_manager для нпс, но вылеты ловлю) Видно не туда совсем пытаюсь Спойлер function set_weapon__condition(actor, item) local active_item = actor:active_item() local id = item:id() if isWeapon(item) then item:set_condition(math.min((math.random(99)+1)/100,item:condition())) end function set_condition(item) local condition = (math.random(99)+1)/100 if item:condition() > 0.99 then item:set_condition(condition) end end Изменено 12 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Askar 0 Опубликовано 12 июня, 2021 Ребята дайте пожалуйста папку "bin" версии 1.0003 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 12 июня, 2021 (изменено) ian98 какой из двух функций меняете? local active_item = actor:active_item() - это оружие, которое в данный момент в руках, а не любое с рюкзака. проверяйте синтаксические ошибки в этой программе, удобная https://disk.yandex.ru/d/PITCpyZ42pxHEA Только учтите, что при загрузке сохранки поломается всё, что уже есть в инвентаре Изменено 12 июня, 2021 пользователем vader_33 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DarkStalker 9 Опубликовано 13 июня, 2021 Спасибо всем большое за отзывы. Вот, обратился к умным людям за советом и сразу нашел причину - да, все дело в кривых скриптах, позаимствованных из другой сборки. Убрал их, почистил bind_stalker, вылеты прекратились. Еще раз спасибо за помощь! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 14 июня, 2021 (изменено) Задумался о проверке предметов для воспроизведения диалога. Но не обычной проверкой есть/нету предмет, а вот так -есть/нету предмет, если есть, то проверка состояния, если выше 50, то можно начинать диалог. Щас гуглю, пока ничего не нашел. В инете только самые простые проверки. Вроде как в моде ОП2 такая должна быть, кто знает? Просто нашел одно упоминание Изменено 14 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 14 июня, 2021 Еще интересно, существуют ли проверки выполнена функция или нет. Любая функция. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 19 Опубликовано 14 июня, 2021 7 минут назад, ian98 сказал: проверки выполнена функция Ну можно попробовать что то в этом роде if (function mod()) { Что то выполнять} Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 14 июня, 2021 (изменено) Alex Kireev мне бы как precondition для диалогов. Изменено 15 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 15 июня, 2021 ian98 не проще в функцию добавить выдачу инфопоршня, и его наличие потом проверять? 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 19 Опубликовано 15 июня, 2021 (изменено) ian98 я думаю что так global_var = false function mod() Основной код global_var = true end if(global_var) then Выполняем команды, если функция выполнилась end Изменено 15 июня, 2021 пользователем Alex Kireev 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 15 июня, 2021 8 часов назад, ian98 сказал: Задумался о проверке предметов для воспроизведения диалога. Но не обычной проверкой есть/нету предмет, а вот так -есть/нету предмет, если есть, то проверка состояния, если выше 50, то можно начинать диалог. Щас гуглю, пока ничего не нашел. В инете только самые простые проверки. Вроде как в моде ОП2 такая должна быть, кто знает? Просто нашел одно упоминание если в функции конструкция if .. then, то в нее добавить еще if .. and предмет:condition() > 0.5 then. А так, смотря какая функция проверки В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 15 июня, 2021 vader_33 Спойлер function Название функции(first_speaker, second_speaker) return first_speaker:object("название предмета") ~= nil or first_speaker:object("название предмета") ~= nil or first_speaker:object("название предмета") ~= nil end Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 15 июня, 2021 ian98 3 разных предмета проверяет? В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 15 июня, 2021 vader_33 да Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 15 июня, 2021 ian98 Спойлер function Название функции(first_speaker, second_speaker) local item1 = first_speaker:object("предмет1") local item2 = first_speaker:object("предмет2") local item3 = first_speaker:object("предмет3") return (item1 ~= nil and item1:condition() > 0.5 ) or (item2 ~= nil and item2:condition() > 0.5 ) or (item3 ~= nil and item3:condition() > 0.5 ) end 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 19 Опубликовано 15 июня, 2021 9 часов назад, ian98 сказал: если есть, то проверка состояния, если выше 50 Для чего? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 15 июня, 2021 ian98 но если больше 3 предметов, и условие кондишена у всех разное, лучше табличкой сделать, чем городить такие условия В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 19 Опубликовано 15 июня, 2021 (изменено) vader_33 только подумал про это, только через массив и перебор Изменено 15 июня, 2021 пользователем Alex Kireev Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 15 июня, 2021 (изменено) что-то и с поршнями не выходит, хотя делаю все правильно(?) Вот у меня поршень. Создал его в файле info_escape Спойлер <info_portion id="function_completed"></info_portion> Подключил к диалогу Спойлер <phrase id="2"> -- фраза гг <text>text_2</text> <action>script.function</action> <next>221</next> <next>222</next> </phrase> <phrase id="221"> -- фраза нпс <has_info>function_completed</has_info> <text>text_221</text> </phrase> <phrase id="222"> -- фраза нпс <dont_has_info>function_completed</dont_has_info> <text>text_222</text> </phrase> и про скрипт не забыл. Добавил его в скрипт. В конец скрипта. Спойлер actor:give_info_portion("function_completed") end end В итоге при попытке поговорить просто, даже не этот диалог, ловлю вылет. Спойлер stack trace: 0023:00C3105B xrLUA.dll 0023:0815F652 xrGame.dll 0023:0812C57C xrGame.dll Да и потом, этот поршень еще забирать нужно будет? Изменено 15 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 19 Опубликовано 15 июня, 2021 ian98 кажется в скрипте без кавычек должно быть Дополнено 0 минут спустя И возможно нужно добавить перед последним end тут скрипт нужно смотреть Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 15 июня, 2021 Alex Kireev не помогло( Дополнено 3 минуты спустя Alex Kireev 11 минут назад, Alex Kireev сказал: 9 часов назад, ian98 сказал: если есть, то проверка состояния, если выше 50 Для чего? для контрактов. Нужно только для оружия и брони, чтобы гг не мог плавить предметы с маленьким кондишн(типо они торговцам не нужны) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 15 июня, 2021 12 минут назад, ian98 сказал: Вот у меня поршень. Создал его в файле info_escape а этот файл зарегистрирован в system.ltx в [info_portions]? Для кордоновских инфопоршней там info_l01escape Дополнено 3 минуты спустя 13 минут назад, Alex Kireev сказал: кажется в скрипте без кавычек должно быть в кавычках должно быть, всё правильно Дополнено 7 минуты спустя 19 минут назад, ian98 сказал: <phrase id="2"> -- фраза гг вот так "-- фраза гг" написано в xml файле?Так только в скриптах делать можно, в xml комментарии выглядят вот так <!-- фраза гг --> Лучше установить notepad++, там можно через пкм комментировать 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 15 июня, 2021 (изменено) vader_33 не я так написал для форума. Просто уже подумал, что может, вдруг, нпс не может выдать сразу 2 ответа. Систем проверю Перенес инфопоршень в info_l08rostok_bar( в системе он есть), но все равно вылет ловлю. Скобки вернул в скрипте. Изменено 15 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты