_Val_ 2 225 Опубликовано 23 Ноября 2017 Поделиться Опубликовано 23 Ноября 2017 @_Sk8_AsTeR_ Для проверки нужно увеличить время. Допустим 10 поставить. Время в игре оно течет побыстрей...Пока сейв грузится - вполне может пройти пресловутые две минуты. Ссылка на комментарий
dsh 3 824 Опубликовано 23 Ноября 2017 Поделиться Опубликовано 23 Ноября 2017 1 hour ago, _Sk8_AsTeR_ said: Оказывается почему-то что всегда переменная time_news перманентно больше игрового времени в данный момент. Как так? Ну почему, почему. Потому, что в начале функции ты делаешь её больше. time_news устанавливай снаружи функции. А потом внутри функции, внутри if-а, что бы в следующий раз выполнялась. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 23 Ноября 2017 Поделиться Опубликовано 23 Ноября 2017 @dsh благодарю! Заучит логично, да! Приду домой и попробую сразу! @_Val_ апдейт Бинд_Сталкерский начинает крутиться только как загрузка завершится и ты в зоне окажешься. Причем с задержкой в доли секунды даже Ссылка на комментарий
aka_sektor 1 476 Опубликовано 24 Ноября 2017 Поделиться Опубликовано 24 Ноября 2017 (изменено) Тут вот писали: http://ap-pro.ru/forum/126-750-459608-16-1369681281 Цитата Если лога нет, нужно файл _g.script изменить. Тогда лог будет более чем подробным, но играть постоянно с такой настройкой не очень удобно. Подскажет кто, что изменить? А то ловлю безлоговый в ТЧ, может удасться определить в чем дело. Сейчас там: function abort(fmt, ...) local reason = string.format(fmt, ...) assert("ERROR: " .. reason) printf("ERROR: " .. reason) dbglog("%s", reason) printf("%s") end Изменено 24 Ноября 2017 пользователем aka_sektor Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 24 Ноября 2017 Поделиться Опубликовано 24 Ноября 2017 Все 4 функции внутри: assert(), printf(), dbglog() рассчитаны на какую-то конкретную правку движка. На стандартном ТЧ ни одна из них не выдаст ничего. Далее, саму abort() кто-то должен вызвать, обнаружив проблему и передав туда корректные параметры, понимаемые string.format() В общем, от вышеприведенных танцев с бубном в логе ничего вразумительного не появится. Более того, передав неправильные параметры, можно получить этот самый вылет без лога или с логом совершенно невменяемым в самой безобидной ситуации. Так что для начала следует определиться с движком. В стандартном - единственный способ записать в лог то, что мы хотим - это дать какую-нибудь неправильную команду консоли, например: get_console():execute( "load несуществующий_файл что-то еще" ), и, чтобы гарантированно получить запись в файл всего, что выдавали ранее - get_console():execute( "flush" ) 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
aka_sektor 1 476 Опубликовано 24 Ноября 2017 Поделиться Опубликовано 24 Ноября 2017 (изменено) 1 час назад, Dennis_Chikin сказал: Более того, передав неправильные параметры, можно получить этот самый вылет без лога Интересно. Глянул как в оригинале, получается строчка в моде добавлена: dbglog("%s", reason) Из-за неё может быть проблема? UPD: Ещё сравнил вообще файлы, там добавлено такое: --[[function printf(fmt,...) local con = get_console() con:execute(string.gsub(string.format(fmt,...), " ", "_")) con:execute("flush") end]] function dbglog(fmt,...) local msg = string.format(fmt, ...) local msg_no_ws = string.gsub(msg, "%s", "_") get_console():execute("dbg:" .. msg_no_ws) end --function printf(fmt,...) -- local arg={...} -- if arg==nil or arg[0]==nil then -- mylog(fmt) -- else -- mylog(string.format(fmt,...)) -- end --end --local bufferedmessages={} --function mylog(msg) --[[ if msg==nil then return end if db and db.actor then if bufferedmessages then for k,v in ipairs(bufferedmessages) do db.actor:give_game_news(v, "ui\\ui_iconsTotal", Frect():set(0,0,200,200), 0, 15000) end bufferedmessages=nil end db.actor:give_game_news(msg, "ui\\ui_iconsTotal", Frect():set(0,0,200,200), 0, 15000) else if bufferedmessages then table.insert(bufferedmessages,msg) end end if get_console() then get_console():execute("load "..msg) get_console():execute("flush") end ]] --end Изменено 24 Ноября 2017 пользователем aka_sektor Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 25 Ноября 2017 Поделиться Опубликовано 25 Ноября 2017 Ну, то есть, закомментировано все, кроме function dbglog(fmt,...) local msg = string.format(fmt, ...) local msg_no_ws = string.gsub(msg, "%s", "_") get_console():execute("dbg:" .. msg_no_ws) end string.format() пытается повторить с собственным результатом то же, что делала в abort. Если там на входе в первом аргументе будет, к примеру, %s, а в последующих - true, false, или вообще nil, не говоря о таблице или userdata - вылет будет со странным и загадочным логом даже в абсолютно безобидной ситуации. Такое может организовать, к примеру, xr_logic.script из оригинала/амк и over 99% их потомков. string.gsub() пытается заменить пробелы на подчеркивания, если до него вообще когда-нибудь дойдет очередь. get_console() в таком виде действительно попытается записать что-нибудь в лог, но, если получившаяся в результате предшествующих операций строка будет не длиннее 200 с копейками байт, и если после этого на самом деле не случится безлоговый вылет. А главное, повторюсь, тот abort() сначала должен быть вызван кем-то. В случае реального вылета вызвать его будет уже некому. Мораль - тебе надо самому организовать вывод в лог, и ставить его в подозрительных местах. К примеру, так: my_script.script: function abort( src, fmt, ... ) get_console():execute( string_format( "load ~error~: [%s] %s", src, ( ... and string_format( fmt, ... ) ) or fmt or "" ) ) get_console():execute( "load ~~~ Обнаружена ошибка. Описание ошибки смотрите выше. Игра остановлена." ) get_console():execute( "load ~~~ Пожалуйста, не надо сообщать об ошибке в строке ***." ) get_console():execute( "load ~~~ Какую-либо ценность имеют 10 строк ДО этого сообщения." ) get_console():execute( "flush" ) watchdog = src local error ; error = 1/error; get_console():execute( "quit" ) -- Warning ! Может не срабатывать из апдейтов и иже с ними, если это не актор. Используейте watchdog. end bind_stalker.script: function actor_binder:update( delta ) if _my_script.watchdog then abort( "bind_stalker", "actor, ошибки в скрипте: %s", my_script.watchdog ) end подозрительный скрипт: где-то в подозрительном месте: obj.respawn_section = r_spawns( ini, section_name, "respawn_section", obj.sectSpawnProps, p ) or abort( "мой_подозрительный_скрипт.script", "init_respawn_params, invalid section: [%s], line: [respawn_section] (%s)", section_name, obj.amk_name or obj_name ) результат: если ты всадил ошибку в олспавн, то у тебя при респане будет вылет с указанием неправильной секции и строки с ахинеей, вместо того, чтобы вылететь по "недостаточной памяти" или еще с какой "строкой 804".минут через 10 после того, как твой спавн повис наглухо 1 2 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Капрал Хикс 524 Опубликовано 25 Ноября 2017 Поделиться Опубликовано 25 Ноября 2017 Пытаюсь сделать разные звуки дыхания при разных надетых противогазах. Оригинальный скрипт из DMX мода для НарСоли... И... мне не хватает умений переписать функцию function breathing(): Скрытый текст local outfit_type = 0 local breathing_sound function get_wearing_suit_with_helmet() local outfit = db.actor:get_current_outfit() if outfit then local section = outfit:section() if string.find(section, "_gaz") or string.find(section, "neytral_exo_antigas") then outfit_type = outfit_type +1 end if string.find(section, "specnaz_m1") or string.find(section, "military_outfit") or string.find(section, "militaryspec_outfit") or string.find(section, "exo_") or string.find(section, "_exoskeleton") then outfit_type = outfit_type +2 end if string.find(section, "military_commander_outfit") or string.find(section, "ecolog_outfit") or string.find(section, "protection_outfit") or string.find(section, "scientific") then outfit_type = outfit_type +3 end function breathing() if get_wearing_suit_with_helmet() and amk.load_variable("option_hud",2)==2 and db.actor.power > 0.18 then if not (breathing_sound and breathing_sound:playing()) and outfit_type = 1 then breathing_sound = xr_sound.get_safe_sound_object([[actor\gasmask_idle_1]])) breathing_sound:play_at_pos(db.actor, vector(), 0, sound_object.s2d + sound_object.looped) end if outfit_type = 2 then breathing_sound = xr_sound.get_safe_sound_object([[actor\gasmask_idle_2]])) breathing_sound:play_at_pos(db.actor, vector(), 0, sound_object.s2d + sound_object.looped) end if outfit_type = 3 then breathing_sound = xr_sound.get_safe_sound_object([[actor\gasmask_idle_3]])) breathing_sound:play_at_pos(db.actor, vector(), 0, sound_object.s2d + sound_object.looped) end elseif breathing_sound and breathing_sound:playing() then breathing_sound:stop() breathing_sound = nil end end Прошу помощи :). Ссылка на комментарий
DaSTi002 2 Опубликовано 27 Ноября 2017 Поделиться Опубликовано 27 Ноября 2017 (изменено) Парни,_у меня вопрос(Игра Тч): Вот я заспавнил НПС на Кордоне,_в Деревне новичков,_так вот когда я в него стреляю или убиваю остальные сталкеры на это внимания не обращают._А как сделать так, чтобы они за него заступались? То есть,_когда я буду в него стрелять то другие Нпс встанут с костра и начнут тоже в меня стрелять? Изменено 27 Ноября 2017 пользователем HellRatz 1 Ссылка на комментарий
Fagot. 400 Опубликовано 27 Ноября 2017 Поделиться Опубликовано 27 Ноября 2017 1 минуту назад, DaSTi002 сказал: когда я в него стреляю или убиваю За что!!!??? Ай-яй-яй, какой ты злой... Нельзя стрелять в людей без очень веских оснований... 3 минуты назад, DaSTi002 сказал: как зделать так чтобы они за него заступались? А ты их познакомил с новым членом сталкерского сообщества? Нет? Вот так-то... С чего бы им заступаться за незнакомца ? И ещё, они могут не реагировать из-за того, что ты пишешь не туда, куда надо (не в ту тему)... 5 минут назад, DaSTi002 сказал: Тоисть Пыркымтыклбалкосимар. С.Т.А.Л.К.Е.Р. - Равновесие-2 Проект виртуальной реконструкции г.Припять. Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 27 Ноября 2017 Поделиться Опубликовано 27 Ноября 2017 @DaSTi002 В оригинальном ТЧ, если убьешь сталкера в деревне новичков с одного выстрела попаданием в голову, то НПСы не будут на тебя обижаться, а перейдут в схему опасности. Ссылка на комментарий
AndrewMor 527 Опубликовано 28 Ноября 2017 Поделиться Опубликовано 28 Ноября 2017 10 часов назад, TIGER_VLAD сказал: @DaSTi002 В оригинальном ТЧ, если убьешь сталкера в деревне новичков с одного выстрела попаданием в голову, то НПСы не будут на тебя обижаться, а перейдут в схему опасности. Это потому, что одни в одном гулаге сидят. Убивая одного, они будут реагировать. А если сталкер отдельно от всех - его как угодно вали, никто не чухнется. Сталкер - наше всё! Ссылка на комментарий
DaSTi002 2 Опубликовано 28 Ноября 2017 Поделиться Опубликовано 28 Ноября 2017 Ну, спасибо Другой вопрос: Можно ли значки кровотечения, голода и т.д. из Теней Чернобыля заменить на Зов Припятские? Если можно то как? Объясните пожалуйста. 1 1 Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 28 Ноября 2017 Поделиться Опубликовано 28 Ноября 2017 Нет, в сталкере нет возможности изменять содержимое графический файлов при помощи скриптов. Да и xml, по большому счету, тоже. Хотя есть некоторые трюки с записью "в память" и "перезагрузкой" измененного, но в данном случае (как и большинстве других), этот трюк совершенно бесполезен. Есть возможность копирования файлов из иерархии сталкера, типа local f = getFS() local f1 = f:update_path( "$game_config$", "file1.ltx" ) local f2 = f:update_path( "$game_config$", "file2.ltx" ) f:file_copy( f1, f2 ) Но это тоже ничего не дает. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 28 Ноября 2017 Поделиться Опубликовано 28 Ноября 2017 7 часов назад, AndrewMor сказал: Это потому, что одни в одном гулаге сидят. Убивая одного, они будут реагировать. А если сталкер отдельно от всех - его как угодно вали, никто не чухнется. И что случилось с обработкой gamedata\config\creatures\game_relations.ltx [communities_sympathy]/*_goodwill/*_reputation ? Правда, не вполне понимаю, зачем с этим все еще и что-то делать скриптово, как и в предыдущем вопросе про реализацию фотошопа на LUA. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Капрал Хикс 524 Опубликовано 2 Декабря 2017 Поделиться Опубликовано 2 Декабря 2017 В 28.11.2017 в 09:47, DaSTi002 сказал: Можно ли значки кровотечения, голода и т.д. из Теней Чернобыля заменить на Зов Припятские? Можно, редактируй текстуру, где эти значки все расположены. В 28.11.2017 в 13:41, Dennis_Chikin сказал: Нет, в сталкере нет возможности изменять содержимое графический файлов при помощи скриптов. Полагаю, парень имел в виду заменить значки изначально, а не динамически прям во время игры менять одни на другие. 1 Ссылка на комментарий
BossBoroda 7 Опубликовано 3 Декабря 2017 Поделиться Опубликовано 3 Декабря 2017 (изменено) Какую логику написать нпс, чтобы он был бессмертным и не реагировал на нпс, монстров вокруг него, на выстрелы тоже не реагировал!? ТЧ. Изменено 3 Декабря 2017 пользователем BossBoroda Ссылка на комментарий
AndreySol 215 Опубликовано 3 Декабря 2017 Поделиться Опубликовано 3 Декабря 2017 1 час назад, BossBoroda сказал: чтобы он был бессмертным В "Уроках по модострою" - последний топик. Ссылка на комментарий
_Val_ 2 225 Опубликовано 5 Декабря 2017 Поделиться Опубликовано 5 Декабря 2017 (изменено) @AndreySol Сложновато для того, кто не в курсе - что такое СДК от слова вообще. Да и не непись это получается - а голем какой-то. В принципе спорно и утверждение, что метод лучше - чем приравнивание в сталкеру Сахарову. Изменено 5 Декабря 2017 пользователем _Val_ Ссылка на комментарий
BossBoroda 7 Опубликовано 5 Декабря 2017 Поделиться Опубликовано 5 Декабря 2017 5 часов назад, _Val_ сказал: @AndreySol Сложновато для того, кто не в курсе - что такое СДК от слова вообще. Да и не непись это получается - а голем какой-то. В принципе спорно и утверждение, что метод лучше - чем приравнивание в сталкеру Сахарову. Мне в сдк и надо настроить торговца, как логику торговли прописать знаю, а вот остальное нет! Ошибки появляются какие-то, иногда вылеты( Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти