Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.
Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
Да всё перепроверил уже по многу раз, и сравнивал с другими локами, ничего не могут понять. Счас докомпилится лока ещё одна, исправлял геометрию, попробую войти на неё с другова входа не трогая первый, может это что даст... или закоментить автосейв на ней, мне что то кажется в нём косяк....
function sim_board:fill_start_position() if self.start_position_filled == true then return end --printf("FILL START POSITION [%s]", self.player_name) self.start_position_filled = true for level in game_graph():levels() do local section_name = "start_position_" .. alife():level_name(level.id)
if not setting_ini:section_exist(section_name) then return end
local n = setting_ini:line_count(section_name) for i=0,n-1 do local result, id, value = setting_ini:r_line(section_name,i,"","") local smrt_names = utils.parse_names(value) for k,v in pairs(smrt_names) do local smart = self.smarts_by_names[v] if smart == nil then abort("Wrong smart name [%s] in start position", tostring(v)) end local squad = self:create_squad(smart, id) self:enter_smart(squad, smart.id) --squad:update() end end end end
Цитатаdenis2000 ()
А функция line_count возвращает число меньше нуля?
Да не учёл этот момент, но ведь ноль она может вернуть тем более функция предполагает, что в секции стартового положения будет что-то написано
Вы внимательно прочитали то, что я вам выше написал? В оригинале той проверки нет, ведь она там не нужна т.к. будет нелогичный промежуток (0;-1) и цикл не запустится(возможно, я какие-то детали упускаю, но про это ещё на уроках информатики говорили ). Если что, вот логичный промежуток: (-1;0)
ведь она там не нужна т.к. будет нелогичный промежуток (0;-1) и цикл не запустится
Это точно? Я могу ошибаться но некорректный интервал скорее приведет к вылету нежели к незапуску цикла. Если правы вы, то это, всего лишь, дополнительная проверка для устойчивости кода к кривым рукам заселяющего, которая в итоге ничего не решает, если прав, я то эта проверка уменьшает количество возможных вылетов ровно на 1. В обоих случаях эта проверка не ухудшает работоспособность кода.
Сообщение отредактировал denis2000 - Вторник, 12.06.2018, 17:53
denis2000, buffy, Ситуация такая, перепробовал всё что знал, не запускается работа смартов на локах которые не относятся к оригиналу сталкера. На данный момент это тёмная лощина, очистные и мёртвый город, с отдельным олспавном на каждую из этих лок всё работает а в общем олспавне ни вкакую.... на остальных локах нет проблем, всё работает на ура... Какие варианты? куда копать? Учитывайте плиз что я чайник, и куда надо ставить запятую а где убирать я просто не знаю.... все познания на общих основаниях и на логической интуиции.... сидеть и изучать просто нет времени...
В том то и дело спавнится весь обычный спавн, аномалии. летающие аномалии и т.д..... нет живности. ни НПС ни монстров.... сквады не запускаются, я так предпологаю не запускаются они так как не запускается работа смартов. Конфиги исключаю так как по отдельности локи все работает и не вылетает ничего и нигде. а в общем спавне глухо, и вылетов нету просто лока без заселения... и именно те что не оригинал сталкера...
Сообщение отредактировал Policai - Вторник, 12.06.2018, 19:03
Помогло. Усё заработало, только понять бы теперь смысл этого исправления, локации не стартовые, до них проходишь через другие, на них всё работает без проблем...
Policai, buffy, Вся проблема в оригинальном скрипте (sim_board.script fill_start_position). Этот срипт выполняется в начале новой игры и заселяет все локации. Дело в том, что список локаций берется из таблицы game_graph():levels(), но если в файле simulation.ltx вдруг будет отсутствовать хоть одна секция локации скрипт прервет заселение и бросит все на полдороги:
Код
if not setting_ini:section_exist(section_name) then return end
В итоге и получается такая ситуация с недозаселенными локациями (точнее с незаполенными стартовыми позициями на некоторых локациях, а именно на тех которые были в таблице дальше сбойной). Мой вариант не прерывает процесс, а продолжает заселять дальше, только и всего. Обратите внимание на обилие "мусорных секций" в файле simulation.ltx. Интересно, что в таблице встречаются даже давно вырезанные тестовые локи типа stohe_selo, откуда они там и почему я не разбирался (возможно они там селятся из-за мусора в конфигах game_levels.ltx и game_maps_single.ltx которые задействованы при сборке геймграфа), просто подправил скрипт.
Сообщение отредактировал denis2000 - Вторник, 12.06.2018, 21:26