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

Mass

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

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

  • Посещение

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

  1. Чего нет - того нет! Я этого не делал. Если я правильно понял, то нужно просто чтобы логика рестриктора не срабатывала. Тогда самое простое убрать кастом дату вообще. Безусловно это сработает, если начать новую игру, иначе придется возиться с пакетами
  2. Нужно в методе отряда в on_register назначить функцию, которая бы читала парaметр story_id, в конфигах игры
  3. Mawrak, попробуйте этот скрипт. Сделал на коленке и не проверял se_stalker.script
  4. Напрашивается вывод. Возьмите аналогичный распаковщик и не забудьте указать еще и папку patches
  5. Значит не полностью распаковали ресурсы игры. Нужно еще распаковывать папку patches. Почему - то некоторые об этом забывают
  6. Это нужно, если при логировании аргумент равен нил тогда в лог просто напишет что переменная равна нил, а также когда не знаешь тип переменной. Иногда полезно! Я еще вывожу таблицу. Знаю есть оригинальная print_table, но мне проще сделать логирование и сразу вывести в лог, не думая какой там тип переменной Дополнено 3 минуты спустя Кстати, точно помню в ТЧ assert работал, и я им активно пользовался
  7. Я перепутал assert и error_log. Какой-то из них явно не работает в оригинальном движке. Получается что error_log всё-таки работает! Я увидев функцию моментально подумал что у sosiska23 она строка в этой функции тоже раскоментирована. Вот и получилась нелепость Дополнено 2 минуты спустя Я помню что как то выводил в лог с помощью костылей в get_console():execute. В любом случае к оригиналу я не притрагивался уже очень продолжительное время
  8. Тогда не знаю в чем причина, почему именно в лог не пишет. Мб потом как-нибудь узнаю в чём затык на оригинале. Нет! В оригинале немного урезано логирование. Я уже и не помню как я тогда выводил нормально инфу в лог Можно попробовать поискать функционал на этом сайте и найти аналогичные функции для оригинала
  9. А если так? У меня нет возможности проверить на чистом движке Поэтому... get_console():execute("[error]ABORT CALLED".. string.sub(StringExtraFormat(fmt,...),1,160))
  10. Если парсер не переводит на следующую строку. Тогда попробуйте так: get_console():execute("[error]ABORT CALLED ~:"..StringExtraFormat(fmt,...)) P.S. Давно с оригиналом движка дел не имел
  11. Нужно строк 15-20 выше Хм... assert не работает в оригинале? Запамятовал я наверное. Можно попробовать заменить движковую ф-ию assert на консольную. Тоесть всю строку на
  12. В _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
  13. Если abort не отключен, то выше лога ошибки должна быть чуть-ка больше информации о вылете
  14. Не понимаю в чем суть проблемы? Был задан вопрос, на него был дан ответ, затем последовало уточнение, и был задан другой вопрос в том же посте. Я на него ответил, специально процитировав сообщение чтобы не было недопонимания! Нужно проверить всё-ли правильно, нигде ли ничего не забыто!? Если что можно переписать функцию в эфектах
  15. Через 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 Вроде бы так... могу и ошибиться
  16. Это был ответ на вопрос! Чтобы играть звук его нужно подключить корректно в файл script_sound.ltx, где и задать тип звука.
  17. Так задайте в конфиге саунда сам звук с типом 3d или looped Дополнено 5 минуты спустя Вполне возможно, неправильная ссылка на конфигурационный файл
  18. Вылет, скорее всего, из-за неправильной логики переменная section равна nil. Очень странно, по идее, должен был сработать abort. Я подразумеваю что отключено логирование и сама функция abort
  19. Здесь опечатка нужно исправить на shuffle Похоже что on_signal = sound_end|sr_idle@1 никогда не выполниться, потому что звуку сказано играть зациклено! Тут я думаю 2 варианта: либо принудительно останавливать звук через stop_sound_looped, либо использовать play_sound с параметром type 3d
  20. Честно!? У меня ничего не осталось. Если пороюсь только в коде может быть вспомню что менял и зачем
  21. Я бы для начала проверил под какой схемой этот проводник и уже капал дальше. И вообще в оригинале очень много скриптовых ошибок. Некоторые ошибки были исправленны в этом моде
  22. Когда-то давно исправлял ошибки оригинальной части ЧН. Немного порыскав в скриптах, мои некоторые исправления не были добавлены. Например: из этого поста в заключительном абзаце Да и вообще зачем нужен этот цикл для остальных неписей, которые находятся не в рестрикторе данной схемы? Предлагаю, перед итерацией по таблице проверять не пуста ли таблица? Проверку можно сделать через next или через индекс равен нулю. Для полной оптимизации можно приравнять эту таблицу нил, чтобы память не забивать, а также проверка на нил всегда быстрее чем проверка значений таблицы. Только для нпс, которые именно находятся в рестрикторе сосыча приравнивать переменную нил к таблице и уже дальше делать итерацию!
  23. Не совсем так. Префикс 'a' используется в схеме kamp, например чтобы неписи могли аттачнуть предмет для анимаций