Overf1rst 1 503 Опубликовано 1 июля, 2020 Тема посвящена моддингу на платформе Тень Чернобыля. Правила темы: Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть. Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода. Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа). Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться. 6 4 1 3 1 3 6 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 19 Опубликовано 10 июня, 2021 ian98 а попробуй на чистой сделать ТЧ, если вылеты будут значит дело в скрипте Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 10 июня, 2021 (изменено) ian98 заметил, что вылетает, если убить нпс в момент когда он перезаряжается, когда магазин уже снял и собирается новый вставить. Наверно надо удаление на таймер повесить, чтобы успело всё отрегистрироваться от нпс Изменено 10 июня, 2021 пользователем vader_33 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Кефир 783 Опубликовано 10 июня, 2021 Как называется текстура зелёного куста? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 10 июня, 2021 vader_33 да вроде рандомно вылетало, вот щас из рпг в кучу военных стрельнул, никто из них не перезаряжал ствол, и словил вылет. В любом случае, попробую поискать, а если можно показать как это сделать, то буду очень рад Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 10 июня, 2021 ian98 так, например. Но проверял на чистом тч Спойлер local active_item = npc:active_item() local id = item:id() if isWeapon(item) and id == active_item:id() then local timer = time_global() + 1000 local function check_timer() return time_global() > timer end local function release_item() alife():release(alife():object(id), true) end level.add_call(check_timer, release_item) end 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 10 июня, 2021 (изменено) vader_33 Я и близко не так пытался это сделать. Впрочем, у меня ничего и не вышло в итоге. Попробую. А вставлять-то куда? В keep_items? Изменено 10 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 10 июня, 2021 (изменено) ian98 да, просто в функцию Спойлер function keep_item(npc, item) local section = item:section() if section == "bolt" then return false end if always_keep_item[section] == true then return true end ------------------------------------------------ local active_item = npc:active_item() local id = item:id() if isWeapon(item) and id == active_item:id() then local timer = time_global() + 1000 local function check_timer() return time_global() > timer end local function release_item() alife():release(alife():object(id), true) end level.add_call(check_timer, release_item) end ----------------------------------------------------- Изменено 10 июня, 2021 пользователем vader_33 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 10 июня, 2021 (изменено) vader_33 именно так и вставил. По первым тестам, все работает, а вылетов пока не было. Дополнено 11 минуты спустя vader_33 Блин, не успел обрадоваться, как словил вылет Спойлер sv destroy object [239][wpn_binoc:wpn_binoc0239] [20744] sv reject. id_parent [222][stalker:esc_vagon_wounded] id_entity [239][wpn_binoc:wpn_binoc0239] [20744] FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : .\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...w of chernobyl\gamedata\scripts\death_manager.script:170: attempt to index local 'active_item' (a nil value) stack trace: Я к нему даже не подбегал, но видимо по алайфу был в его радиусе. Так и вылетел. А щас подошел и прирезал Толяна и снова вылет. Изменено 10 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 10 июня, 2021 (изменено) ian98 Спойлер local active_item = npc:active_item() local id = item:id() if isWeapon(item) and active_item and id == active_item:id() then local timer = time_global() + 1000 local function check_timer() return time_global() > timer end local function release_item() alife():release(alife():object(id), true) end level.add_call(check_timer, release_item) end нужно, чтобы только оружие в руках удалялось или всё в рюкзаке? И + 1000 наверно слишком много, надо поменьше сделать Изменено 10 июня, 2021 пользователем vader_33 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 10 июня, 2021 vader_33 А вот я заметил, если непеся ранить, то оружие падает на землю и не удаляется, это из-за чего может быть? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 10 июня, 2021 (изменено) ian98 потому, что нпс жив, и выпавшее оружие уже не принадлежит нпс. А death_manager.script обрабатывает только то, что принадлежит нпс во время смерти Изменено 10 июня, 2021 пользователем vader_33 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 19 Опубликовано 10 июня, 2021 ian98 что ты там делаешь, если не секрет? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 10 июня, 2021 Alex Kireev игроков без хабара оставляет, изверг( В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 10 июня, 2021 (изменено) vader_33 понято, однако это жесткая дыра( И убрать ее никак? А можно, чтобы в случае ранения непись убирал автоматы в карман? Он так делает с пистолетами. Дополнено 0 минут спустя Alex Kireev Мод. Могу кинуть наработки. Протестишь) Изменено 10 июня, 2021 пользователем ian98 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 19 Опубликовано 10 июня, 2021 8 минут назад, ian98 сказал: кинуть наработки. Протестишь) Я бы с радостью, дак времени пока нет, возможно на выходных появиться А так, можно сылочку на ГД оставить, попробую в воскресенье посмотреть Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 10 июня, 2021 (изменено) Alex Kireev Если коротко, это будет ванильный сталкер с рандомной бронькой на тушах и оружием в руках противников и друзей, случайные награды за квесты, да и сами квесты в некоторых случаях случайны и одноразовые, полностью выключенной торговлей, случайным спавном другов и не очень параллельно со спавном оригинальных мобов, что привнесет гораздо больший эффект рандома происходящему, чем в оригинале. Еще будут крафты, опять же случайные, и система редкости предметов, как в классических, в моем понимании, рпг. В общем, конечная цель, я думаю, заставить игрока уповать на рандом. Максимум рандома. Я пока не даю ссылки. Мне запаковать и загрузить на диск минута делов. Пиши, когда будет время и желание. Может к тому моменту уже больше будет сделано. Дополнено 4 минуты спустя vader_33 Связано ли убирание пестиков в карман и дропа автоматов на землю в случае ранения со слотом? Если я клонирую автоматы и перенесу их в первый слот(пистолетный) и дам нпс, будет ли он их также ронять? Или это не так устроено? Попробую пока, может прокатит. Не, не прокатило( Изменено 10 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 10 июня, 2021 43 минуты назад, ian98 сказал: А можно, чтобы в случае ранения непись убирал автоматы в карман? но тогда все равно не удалится, удаляется активное оружие. Или всё-таки всё удалять с инвентаря? Вы так и не ответили. Раз нет торговли, может оставить выпадение оружия, чтобы его массово обменивать на что-то? Или на задания, как хомяки в ОП-2, принеси 150 шт чего-то. Или сделать ремонт как в солянке, только если есть другое подходящее оружие на запчасти В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 10 июня, 2021 (изменено) vader_33 с этим я разобрался. Оружие удаляется и просто инвентаре, и когда в руках. Это по первому вопросу. Хотя, мне интересно как это бы реализовал человек хоть что-то понимающий в скриптах) А то я просто скопировал ту функцию несколько раз. Работает, но может будет сбоить в дальнейшем. Я сделал так: Спойлер function keep_item(npc, item) local section = item:section() if section == "bolt" then return false end if always_keep_item[section] == true then return true end local active_item = npc:active_item() local id = item:id() if isWeapon(item) and active_item and id == active_item:id() and npc:drop_item(item) then local timer = time_global() + 1000 local function check_timer() return time_global() > timer end local function release_item() alife():release(alife():object(id), true) end level.add_call(check_timer, release_item) end local item_id = item:id() local item_in_slot = npc:item_in_slot(1) if item_in_slot ~= nil and item_in_slot:id() == item_id then item:unload_magazine() --' Тут надо уменьшить кондишн оружия item:set_condition(math.min((math.random(1)+1)/100,item:condition())) if isWeapon(item) then local timer = time_global() + 1000 local function check_timer() return time_global() > timer end local function release_item() alife():release(alife():object(id), true) end level.add_call(check_timer, release_item) end return true end item_in_slot = npc:item_in_slot(2) if item_in_slot ~= nil and item_in_slot:id() == item_id then item:unload_magazine() --' Тут надо уменьшить кондишн оружия item:set_condition(math.min((math.random(1)+1)/100,item:condition())) if isWeapon(item) then local timer = time_global() + 1000 local function check_timer() return time_global() > timer end local function release_item() alife():release(alife():object(id), true) end level.add_call(check_timer, release_item) end return true end -- сохранить оружие, возвращаемое из ящика if wm_slot_1_id == item_id or wm_slot_2_id == item_id then --' Тут надо уменьшить кондишн оружия item:set_condition(math.min((math.random(1)+1)/100,item:condition())) if isWeapon(item) then local timer = time_global() + 1000 local function check_timer() return time_global() > timer end local function release_item() alife():release(alife():object(id), true) end level.add_call(check_timer, release_item) end return true end -- нельзя удалять активный предмет if item_id == active_item_id then --' Тут надо уменьшить кондишн оружия if npc:active_slot() ~= 3 then -- кроме гранат item:set_condition(math.min((math.random(1)+1)/100,item:condition())) end return true end alife():release(alife():object(item:id()), true) end Дальше. Оружие случайно и, скажем, у ФН2000 редкость максимальная, а игрок ее подбирает с нпс раненого, да и еще в 100 кондишине! Это ж просто дырень! Да, у нпс с самого кордона могут быть фн2000, а у игрока нет. У игрока есть мозги, это и так уже огромное преимущество, а если еще и фн выдать так сходу? Жуть. Изменено 10 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 10 июня, 2021 14 минут назад, ian98 сказал: Я сделал так: это для того, чтобы всё оружие удалялось? Достаточно if isWeapon(item) and active_item and id == active_item:id() then привести к такому виду: if isWeapon(item) then По поводу выкидывания оружия при ранении, в файле state_lib.script в таблицах, содержащих -- wounded**** = замените weapon = "drop" на weapon = "none" Дополнено 1 минуту спустя 17 минут назад, ian98 сказал: Оружие случайно и, скажем, у ФН2000 редкость максимальная, а игрок ее подбирает с нпс раненого, да и еще в 100 кондишине! тогда оставить выпадение только простенького оружия. Не, я всё понимаю, просто я хомяк, и люблю собирать всякое барахло) 1 В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 10 июня, 2021 vader_33 И я. Сам любитель рпг, а в особенности роглайк. И там будет барахло. Гитары, гармошки, еда, бочки и канистры - пожалуйста. Собирай! Но халявные рпг или гаусски? Не) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vader_33 1 142 Опубликовано 10 июня, 2021 ian98 все равно мой хомяк негодует) В беге за рассветом приближаешь свой закат Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Alex Kireev 19 Опубликовано 11 июня, 2021 ian98 а если сделать несколько сложных квестов, например как в моде апокалипсис, когда ГГ брал артефакт сердце контролёра появлялись кровососы и контролёры. Аналогично можно и тебе сделать например в деревне новичков зайдет разговор о крутом пропавшем Сталкер, потом ГГ узнает у бармена про этого Сталкера, бармен говорит что обшивался Сталкер у свободы, а свобода говорит что пропал Сталкер в деревне кровососов, когда ГГ находит Сталкера, с него выпадает фн2000, одна единственная на всю игру, а с остальных нпси может выпадать простое оружие и/или части монстров, не знаю, может бред, но как то так? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 11 июня, 2021 (изменено) Alex Kireev Я не планирую пока пилить квесты, возможно только верну парочку вырезанных из оригинала. Более того, я полностью выпиливаю повторяющиеся квесты, сделав их одноразовыми, но с повышенным шансом получить в качестве награды хороший дроп. Самый топовый экзач или тот же фн2000 может выпасть уже сразу после зачистки АТП, а если ты прошаренный, то уже сразу после разборки с кабанами. Шанс на экзач сейчас примерно 0.5%(это если по квесту, выбить во фриплее его можно только через контракты.UPD Реальный шанс 0,006%, что мало, но шанс найти тот же экзач из трупа - 0.0000001%, а фн2000 вообще только крафтить или получать по заданию. Сейчас проверил) Из контрактов шанс достать - 0.03%) Этот шанс одинаков и для фнки, и для экзы. Да, если есть желание, то можно заабузить на сейвлодах. Но лично я не абузер и честно получаю свою награду, даже если это просто хлеб, и пытаюсь играть от того, что выпало. Особенно круто, когда в этот же момент нпс также играют от того, что им выпало, а вокруг в придачу кто-то спавнится. Из озуительных ситуаций, когда мы с петрухой, которому выпала экза и рпг-7, пошли на АТП к бандосам, а к ним на помощь пришли еще 5. Или свободовец-мастер с пмм, который пошел на вояк. Да и кровосос с повышенным здоровьем уже забегал в деревню к новичкам. Единственное с рандомными нпс, что они тупые и дохнут в аномалиях, но с этим позже посмотрю что-нибудь. Вроде бы гуляют по сети моды с умными сталкерами. Изменено 11 июня, 2021 пользователем ian98 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ian98 298 Опубликовано 11 июня, 2021 Такой вылет никак не поправить? Он случается во время жутких замесов с высоким шансом, но может и пронести. В инете пишут что-то в глубинах движка. Не выдержал меня сталкер, а я еще столько не сделал... Спойлер FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : .\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: error in error handling stack trace: Scheduler tried to update object agr_krot FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : .\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: error in error handling stack trace: Scheduler tried to update object agr_factory_defence FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : .\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: error in error handling stack trace: Scheduler tried to update object agr_factory_assault_soldier1 FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : .\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: error in error handling stack trace: Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
yurv3 537 Опубликовано 11 июня, 2021 Подскажите как присвоить Сид заспавленому через скрипт тайнику? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты