Перейти к содержанию

Mass

Сталкеры
  • Публикаций

    312
  • Зарегистрирован

  • Посещение

Весь контент Mass

  1. Сигнал |sig=path_end в точке пути существует? И вообще монстр берется под схему mob_walker?
  2. Вводите дополнительные инфопоршни в логику, либо можно через таймеры сделать on_timer\on_game_timer
  3. Итак я вас понял! Попробуйте пока убрать в конфиге саундов префикс characters_voice у всех с именем mil_max
  4. Тогда, вместо того чтобы гадать. Проще вывести в лог. Можете раскомментировать строку перед вылетом, при условии что логирование включено и работоспособно
  5. Кто-нибудь смотрел смарты jub_a9 и jub_47? Точка спавна собак при начале новой игры принадлежит смарту jub_47, однако настройка сквада смарта spawn_squads именно для собак с именем jub_a9, которые принадлежат к смарту jub_47? Это как понимать? Upd: Движок под дебагом тоже ругался на маску этого смарта. Заменил на simulation_dog Вроде как спам в лог прекратился при новой игре
  6. В зависимые секции тоже нуль стоИт? Как вариант, в функции итераторе удаления keep_item в death_manager.script просто поставить проверку по интересующей вас секции предмета и удалить. Посмотрите как удаляется болт в этой функции и через оператор or вписываете секции предмета в эту строку. Сглупил я! Создайте новый блок if ... then end. if section == "название секции итема" then alife():release(alife():object(item:id()), true) return end Дополнено 6 минуты спустя А секции модифицированного оружия прописали в файл? К механику тоже добавили эти секции? И в файлах xml тоже?
  7. Чего нет - того нет! Я этого не делал. Если я правильно понял, то нужно просто чтобы логика рестриктора не срабатывала. Тогда самое простое убрать кастом дату вообще. Безусловно это сработает, если начать новую игру, иначе придется возиться с пакетами
  8. Нужно в методе отряда в on_register назначить функцию, которая бы читала парaметр story_id, в конфигах игры
  9. Mawrak, попробуйте этот скрипт. Сделал на коленке и не проверял se_stalker.script
  10. Напрашивается вывод. Возьмите аналогичный распаковщик и не забудьте указать еще и папку patches
  11. Значит не полностью распаковали ресурсы игры. Нужно еще распаковывать папку patches. Почему - то некоторые об этом забывают
  12. Это нужно, если при логировании аргумент равен нил тогда в лог просто напишет что переменная равна нил, а также когда не знаешь тип переменной. Иногда полезно! Я еще вывожу таблицу. Знаю есть оригинальная print_table, но мне проще сделать логирование и сразу вывести в лог, не думая какой там тип переменной Дополнено 3 минуты спустя Кстати, точно помню в ТЧ assert работал, и я им активно пользовался
  13. Я перепутал assert и error_log. Какой-то из них явно не работает в оригинальном движке. Получается что error_log всё-таки работает! Я увидев функцию моментально подумал что у sosiska23 она строка в этой функции тоже раскоментирована. Вот и получилась нелепость Дополнено 2 минуты спустя Я помню что как то выводил в лог с помощью костылей в get_console():execute. В любом случае к оригиналу я не притрагивался уже очень продолжительное время
  14. Тогда не знаю в чем причина, почему именно в лог не пишет. Мб потом как-нибудь узнаю в чём затык на оригинале. Нет! В оригинале немного урезано логирование. Я уже и не помню как я тогда выводил нормально инфу в лог Можно попробовать поискать функционал на этом сайте и найти аналогичные функции для оригинала
  15. А если так? У меня нет возможности проверить на чистом движке Поэтому... get_console():execute("[error]ABORT CALLED".. string.sub(StringExtraFormat(fmt,...),1,160))
  16. Если парсер не переводит на следующую строку. Тогда попробуйте так: get_console():execute("[error]ABORT CALLED ~:"..StringExtraFormat(fmt,...)) P.S. Давно с оригиналом движка дел не имел
  17. Нужно строк 15-20 выше Хм... assert не работает в оригинале? Запамятовал я наверное. Можно попробовать заменить движковую ф-ию assert на консольную. Тоесть всю строку на
  18. В _g.script, но лучше ее заменить на что-то более нормальное! Например: Я когда-то пользовался этим,но теперь у меня функция немного видоизменена. Много из каких мест вызывается Эта функция сойдет для оригинала! --/ расширенный формат строки (для вывода в лог) function StringExtraFormat(fmt,...) --/ локальная функция: перевод аргумента в стринг local val2str = function(val,lua_type) if lua_type == 'table' then if tonumber(val.x) and tonumber(val.y) and tonumber(val.z) then return string.format('tbl{x=%.3f:y=%.3f:z=%.3f}',val.x,val.y,val.z) --/> end local tbl,str,separator = {},'tbl{',"" for key,_ in pairs(val) do table.insert(tbl, key == tonumber(key) and tostring(key) or key) end table.sort(tbl) for _,key in ipairs(tbl) do if (tonumber(key) or 0) > 0 then str = str..separator..tostring(val[tonumber(key)]) else str = str..separator..key.." = "..tostring(val[key]) end separator = ", " end return str..'}' --/> elseif lua_type == 'userdata' then --/#?# а нужно ли привязываться к движку? if type(val.getP) == 'function' then if type(val.x) == 'number' and type(val.y) == 'number' and type(val.z) == 'number' then return string.format('vec(x=%.3f:y=%.3f:z=%.3f)',val.x,val.y,val.z) --/> end return '<vector>' --/> elseif type(val.setHMSms) == 'function' then return 'CTime('..val:dateToString(0).." "..val:timeToString(3)..")" --/> D/M/Y h:m:s:ms end elseif lua_type == 'string' then return val --string.format("%q", val) --/> elseif lua_type == 'boolean' then return val and "true" or "false" --/> elseif lua_type == 'number' then return tostring(val) --/> end return "<"..lua_type..">" --/> end --/ основное тело функции: парсинг исходной строки if type(fmt) == 'string' then if fmt:match('%%[sdf]') then --/ есть патерн(ы)? if next({...}) then --/ есть аргумент(ы)? local arg,val,lua_type,i = {...},nil,nil,nil for i=1,#arg do val = arg[i] --/ значение текущего аргумента lua_type = type(val) --/ тип текущего аргумента if lua_type == 'number' then fmt = fmt:gsub('%%[dsf]',val,1) else fmt = fmt:gsub('%%s',val2str(val,lua_type),1) end end end fmt = fmt:gsub('%%[sdf]',"<NOT_arg!>") --/ заглушка от отсутствия аргументов end else fmt = val2str(fmt,type(fmt)) end return fmt --/> string --/ с заменой обычных пробелов (sym_space='\032') на печатные ('\160') --return fmt:gsub('%s','\160') --/> string end abort = function(fmt,...) assert("[error]ABORT CALLED:\n" .. StringExtraFormat(fmt, ...)) get_console():execute('flush') exit() end Вроде бы эта функция за авторством Artos'a
  19. Если abort не отключен, то выше лога ошибки должна быть чуть-ка больше информации о вылете
  20. Не понимаю в чем суть проблемы? Был задан вопрос, на него был дан ответ, затем последовало уточнение, и был задан другой вопрос в том же посте. Я на него ответил, специально процитировав сообщение чтобы не было недопонимания! Нужно проверить всё-ли правильно, нигде ли ничего не забыто!? Если что можно переписать функцию в эфектах
  21. Через alife():create("секция_оружия", vector(), 0, 0, db.actor:id()) А чтобы заспавнилось пустое оружие использовать obj:unload_magazine() где obj - клиенский объект local se_obj = alife():create("секция_оружия", vector(), 0, 0, db.actor:id()) if se_obj then level.client_spawn_manager():add(se_obj.id, db.actor:id(), function(id, obj) obj:unload_magazine() end) end Вроде бы так... могу и ошибиться
  22. Это был ответ на вопрос! Чтобы играть звук его нужно подключить корректно в файл script_sound.ltx, где и задать тип звука.