Сталкер Лом 356 Опубликовано 25 Декабря 2012 Поделиться Опубликовано 25 Декабря 2012 Отвечаю сам себе на один из вопросов: Почаще необходимо проверять грамматику: анимация для работы "patrool" прописана неверно (binicular вместо binocular), к тому же переход с последней точки был не на начальную, а на несуществующую (но, к счастью, это не смертельно, в отличие от грамматики). P.S. Просьба объединить данный пост с предыдущим, срок редактирования истёк. Работы на Artstation - https://www.artstation.com/artist/stalker_lom Ссылка на комментарий
Artos 99 Опубликовано 25 Декабря 2012 Поделиться Опубликовано 25 Декабря 2012 (изменено) Сталкер Лом, мог бы сам найти в форуме пост: "комплект функций для вывода в лог" (и тут поновее). Проблемы многих ковыряющихся в кодах игры в том, что делают это вслепую, т.е. не знают и/или не утруждают себя выводом в лог-файл полезной для разработки или отладки информации, и предпочитают заниматься постоянными погадалками. На твоем примере: 1. Разработчики GSC, дабы не иметь от игроков причитаний по поводу прерываний игры - закомментировали аварийный вывод в лог информации. Ты совершенно правильно восстановил этот вывод ( error_log(reason) ), что и дало тебе в лог именно то, что и задумано было разработчиками, т.е. при ошибке в аргументе наименования состояния (иль др.) - была вызвана функция прерывания (abort) и тебе в лог была дана информация, которая и помогла найти ошибку (binicular). Т.о. если есть желание или необходимость выловить ошибки в скриптах/конфигах - НЕ следует комментировать функцию abort! Именно она помогает вылавливать заведомые ошибки. 2. Т.к. функция прерывания была закомментирована, то ошибка в имени состояния не была обнаружена и выполнение сценария (скрипта) в state_manager:set_state было продолжено, что привело к получению нИлевого значения для state_lib.states[binicular] и соответственно 502-ая строка: if state_lib.states[state_name].special_danger_move == true then споткнулась на попытке получить поле 'special_danger_move' из несуществующей субтаблицы. Т.о. твой 1-ый вопрос по ошибке - это следствие, причину которого ты и обнаружил, найдя ответ/причину для 2-го вопроса/вылета. 3. В текстах скриптов можно видеть немало строк типа: --printf("Set State called: for %s State: %s", self.npc:name(), state_name) Как видно, это закомментированная строка. Если ее раскомментировать, то... к сожалению все одно в лог-файле ничего не будет, т.к. как функция printf, как и функция abort, отключена разработчиками... Вот для ее активизации и требуется упомянутый в начале "комплект функций для вывода в лог". Это позволяет отслеживать выполнение сценариев и получать информацию по мере выполнения. Ну а имея информацию и думалку - гораздо проще и быстрее находить и исправлять ошибки. ;-) Ну и собственно "грамматика" то тут ни при чем. Причина в банальной описке, которую никакой чекер кодов не обнаружит, т.к. имена переменным и их значения в таких случаях часто "в соответствии с синтаксисом и правилами" языка. Это как раз отлавливается контролем выполнения сценариев, для чего и существуют функции printf и abort, т.к. сам движок далеко не всегда предоставляет при фатальных ошибках достточную информацию о причине. Если всерьез занялся моддингом - советую дополнительно почитать на эту тему про debug в Lua (хотя для реализации потребуется вносить правки в библиотеки движка или внешние добавлять). Изменено 25 Декабря 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Стрелоk 14 Опубликовано 26 Декабря 2012 Поделиться Опубликовано 26 Декабря 2012 Как перевести одного НПС из сквада в оффлайн? И как наоборот заспанить в оффлайне? К20 Ссылка на комментарий
Hanters 0 Опубликовано 30 Декабря 2012 Поделиться Опубликовано 30 Декабря 2012 Народ прошу не пинайте жестоко и очень прошу помощи. Проблема, после отравления Гавром вылет вот стаким логом" ...FATAL ERROR [error]Expression : e_entity [error]Function : xrServer::Process_event_reject [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_event_reject.cpp [error]Line : 12 [error]Description : entity not found. id_parent=0 id_entity=6030 frame=19460 stack trace:" Выручайте. Ссылка на комментарий
Vano_Santuri 33 Опубликовано 30 Декабря 2012 Поделиться Опубликовано 30 Декабря 2012 (изменено) Походу тело разорвало, такой вылет говорит что дочерние объекты не найдены в инвентаре.... Вылет постоянен? Изменено 30 Декабря 2012 пользователем Vano_Santuri Что-то кончается, что-то начинается... Ссылка на комментарий
STALKER_Dragon 3 Опубликовано 30 Декабря 2012 Поделиться Опубликовано 30 Декабря 2012 (изменено) Доброго времени суток! Возникла вот такая проблема: FATAL ERROR [error]Expression : fatal error [error]Function : CBlender_default::Compile [error]File : D:\prog_repository\sources\trunk\Layers\xrRenderPC_R1\BlenderDefault.cpp [error]Line : 63 [error]Description : <no expression> [error]Arguments : Not enought textures for shader, base tex: act\act_arm_1_bump stack trace: Может, знает кто? Как устранять? ЗЫ. Вылетает только на статическом освещении. Заранее благодарен за ответ. Изменено 30 Декабря 2012 пользователем STALKER_Dragon Ссылка на комментарий
Hanters 0 Опубликовано 30 Декабря 2012 Поделиться Опубликовано 30 Декабря 2012 (изменено) Vano_Santuri Вылет постоянный, сейчас поробовал ещё раз. Изменено 31 Декабря 2012 пользователем ColR_iT Ссылка на комментарий
Hanters 0 Опубликовано 31 Декабря 2012 Поделиться Опубликовано 31 Декабря 2012 (изменено) Vano_Santuri Вы не подскажете как определить эти дочерние объекты? Большое спасибо, даже косвенная ссылка помогла, прошёл. Изменено 31 Декабря 2012 пользователем ColR_iT Ссылка на комментарий
Vano_Santuri 33 Опубликовано 31 Декабря 2012 Поделиться Опубликовано 31 Декабря 2012 Так как прошел? В чем именно была проблема? Что-то кончается, что-то начинается... Ссылка на комментарий
Hanters 0 Опубликовано 31 Декабря 2012 Поделиться Опубликовано 31 Декабря 2012 (изменено) Vano_Santuri Не стал ломать файлы, а просто подбором, раз 30 перезагружался, оказалось телепортеры Кости, каюсь чатерил и их было несколько штук в инвентаре, вот они и глючили. Но самое что интересное их не должно быть на локации, т.с. выложить в тайник не помогало, тайник был организован на другой локации. Так что ещё раз спасибо и сновым годом вас, здоровья и всего того что вы сами себе пожелаете. Цитировать предыдущие посты полностью вовсе не обязательно. ColR_iT Изменено 1 Января 2013 пользователем ColR_iT Ссылка на комментарий
Mihunchy 6 Опубликовано 2 Января 2013 Поделиться Опубликовано 2 Января 2013 Не могу разобраться, толи я что-то не понимаю, толи стимовская версия не слушается... В этом сообщении http://www.amk-team.ru/forum/index.php?showtopic=8230&st=2020#entry478281 написано как заставить всех говорить со мной. Сделал, но не работает. Я попытался удалить все проверки в Гулаг скрипте на командера {!is_squad_commander}, снова провал. Тогда я удалил вообще все проверки, на оружие, ранение, на то что я враг, все равно все работает :ny_huh: . Сможет кто-нибудь помочь? Верю, что могу... Ссылка на комментарий
паньчо 4 Опубликовано 5 Января 2013 Поделиться Опубликовано 5 Января 2013 Господа, где редактируется такой параметр, как состояние предмета, при котором техник его не ремонтирует? хочу сделать чтоб они всё ремонтировали. Ссылка на комментарий
Shredder 49 Опубликовано 5 Января 2013 Поделиться Опубликовано 5 Января 2013 Кто-нибудь знает, как в инвентаре упорядочиваются иконки предметов? Очевидно, что в первую очередь выводятся иконки больших размеров. Дело в том, что при открытии инвентаря мне нужно удалять кое-какие предметы, которые находятся в рюкзаке, только когда окно инвентаря закрыто. Но при таком подходе получаются пустые ячейки: Если бы иконки этих предметов отрисовывались самыми нижними, то такой проблемы бы не было. Выяснил, что упорядочивание идёт точно не по названию секции, т.к. секции удаляемых предметов начинаются с "zz_". Если у кого есть мысли по этому вопросу, прошу поделиться. Ссылка на комментарий
Charsi 440 Опубликовано 6 Января 2013 Поделиться Опубликовано 6 Января 2013 (изменено) Shredder, сделай размер иконок для удаляемых предметов 0х0. Странно, в ТЧ такого вылета не было. Выкидывание этих предметов из инвентаря перед удалением тоже не помогает? Изменено 6 Января 2013 пользователем Charsi 2 Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
Shredder 49 Опубликовано 6 Января 2013 Поделиться Опубликовано 6 Января 2013 Charsi, почему-то я был уверен, что вылетит, ну и собственно вот: FATAL ERROR [error]Expression : assertion failed [error]Function : CUICellContainer::GetItemPos [error]File : D:\prog_repository\sources\trunk\xrGame\ui\UIDragDropListEx.cpp [error]Line : 769 [error]Description : 0 Ссылка на комментарий
Outlaw 85 Опубликовано 7 Января 2013 Поделиться Опубликовано 7 Января 2013 (изменено) Когда то спрашивал про то как в пда включить метки переходов, сейчас при попытке сделать это ловлю вылет "бла-бла-бла? attempt to index 'obj' (a nill value)" Простите за офф-топик, как сделать чтобы в ЗП переходы отображались на карте? А также у меня при попытке заспавнить "метку на карте" (простите за мой простонародный слэнг) батник отказиваеться собирать алл спавн( Outlaw, привожу способ, когда-то, кем-то в этой теме описанный: Делаешь скрипт,например, lev_ch.script, в него пишешь: Clayman, конечно это "кому-то", кто написал процитированное тобою нужно бы адресовать:"А головою кто будет думать?", но и тебе стОит более критично цитировать ...Цитата Далее, в bind_stalker.script после function actor_binder:update(delta) надо написать lev_ch.level_changer() Это для того, чтобы один раз в самом начале игры поставить метки дается совет ставить проверку и выдачу каждые 20ms на потяжении все игры? Ну посмтотите тот саму функцию actor_binder:update(delta)! Ведь все уже есть готовое: if self.bCheckStart then printf("SET DEFAULT INFOS") if not has_alife_info("global_dialogs") then self.object:give_info_portion("global_dialogs") end if not has_alife_info("level_changer_icons") then self.object:give_info_portion("level_changer_icons") end self.bCheckStart = false end - и инфопоршень ("level_changer_icons") именно для отображения иконок переходов и именно только один раз при первом апдейте ... Всего то нужно вставить сюда (при выдаче инфопоршня) вызов lev_ch.put_spots() или даже саму функцию. Подскажите что за бабуйня и как с ней бороться? Код function level_changer() if not has_alife_info("info_new_level") then put_spots() db.actor:give_info_portion("info_new_level") end end function put_spots() for i=1,65534 do local obj = alife():object(i) if obj then if obj:name() == "Название 1-го левел чэнджера" then level.map_add_object_spot_ser(obj.id,"level_changer_up","Подпись 1") elseif obj:name() == "Название 2-го левел чэнджера" then level.map_add_object_spot_ser(obj.id,"level_changer_up","Подпись 2") elseif ..... end end end Название берётся из поля name level_changer'а в all.spawn; Подпись - например, "На Кордон". Далее, в bind_stalker.script после function actor_binder:update(delta) надо написать lev_ch.level_changer() и в файл info_portions.xml вставить строку <info_portion id="info_new_level"></info_portion> Изменено 7 Января 2013 пользователем Outlaw Ссылка на комментарий
Outlaw 85 Опубликовано 7 Января 2013 Поделиться Опубликовано 7 Января 2013 (изменено) Когда то спрашивал про то как в пда включить метки переходов, сейчас при попытке сделать это ловлю вылет "бла-бла-бла? attempt to index 'obj' (a nill value)" Простите за офф-топик, как сделать чтобы в ЗП переходы отображались на карте?А также у меня при попытке заспавнить "метку на карте" (простите за мой простонародный слэнг) батник отказиваеться собирать алл спавн( Outlaw, привожу способ, когда-то, кем-то в этой теме описанный: Делаешь скрипт,например, lev_ch.script, в него пишешь: Clayman, конечно это "кому-то", кто написал процитированное тобою нужно бы адресовать:"А головою кто будет думать?", но и тебе стОит более критично цитировать ...Цитата Далее, в bind_stalker.script после function actor_binder:update(delta) надо написать lev_ch.level_changer() Это для того, чтобы один раз в самом начале игры поставить метки дается совет ставить проверку и выдачу каждые 20ms на потяжении все игры? Ну посмтотите тот саму функцию actor_binder:update(delta)! Ведь все уже есть готовое: if self.bCheckStart then printf("SET DEFAULT INFOS") if not has_alife_info("global_dialogs") then self.object:give_info_portion("global_dialogs") end if not has_alife_info("level_changer_icons") then self.object:give_info_portion("level_changer_icons") end self.bCheckStart = false end - и инфопоршень ("level_changer_icons") именно для отображения иконок переходов и именно только один раз при первом апдейте ... Всего то нужно вставить сюда (при выдаче инфопоршня) вызов lev_ch.put_spots() или даже саму функцию. Подскажите что за "ерунда" и как с ней бороться? Поменьше "жаргона" в постах. ColR_iT Код function level_changer() if not has_alife_info("info_new_level") then put_spots() db.actor:give_info_portion("info_new_level") end end function put_spots() for i=1,65534 do local obj = alife():object(i) if obj then if obj:name() == "Название 1-го левел чэнджера" then level.map_add_object_spot_ser(obj.id,"level_changer_up","Подпись 1") elseif obj:name() == "Название 2-го левел чэнджера" then level.map_add_object_spot_ser(obj.id,"level_changer_up","Подпись 2") elseif ..... end end end Название берётся из поля name level_changer'а в all.spawn; Подпись - например, "На Кордон". Далее, в bind_stalker.script после function actor_binder:update(delta) надо написать lev_ch.level_changer() и в файл info_portions.xml вставить строку <info_portion id="info_new_level"></info_portion> Изменено 7 Января 2013 пользователем ColR_iT Ссылка на комментарий
Shredder 49 Опубликовано 8 Января 2013 Поделиться Опубликовано 8 Января 2013 Такой вопрос к знатокам. Давно заметил, что в ЗП выход НПС в онлайн и уход обратно в оффлайн сопровождается фризами. Процессор у меня далеко не самый мощный, но в ТЧ и ЧН я такого не замечал. Очень хорошо сие наболюдается при приближении к Скадовску. Так вот, кто-нибудь знает, от чего такие тормоза происходят и как (можно ли) с ними бороться? Может схемы какие сильно прожорливые на инициализацию? Ссылка на комментарий
Outlaw 85 Опубликовано 9 Января 2013 Поделиться Опубликовано 9 Января 2013 По поводу меток переходов. Помогло немного другое построение скрипта. Может кому пригодится. function upd_level_changer() for a=1,65534 do local obj = alife():object(a) if obj then if obj and obj:name() == "имя_перехода_в_allspawn_1" then level.map_add_object_spot_ser(obj.id,"level_changer_up","Название метки на карте 1") end end if obj then if obj and obj:name() == "имя_перехода_в_allspawn_2" then level.map_add_object_spot_ser(obj.id,"level_changer_up","Название метки на карте 2") end end ... end end В ЗП когда заспаунишь переход он действует сразу при попадании игрока в него, без вопросов. Никто не подскажет как этот "Вопрос типа вы действительно хотите перейти на другую локацию? Да/Нет" восстановить? А то даже проверить границы перехода проще будет) Ссылка на комментарий
botan 0 Опубликовано 9 Января 2013 Поделиться Опубликовано 9 Января 2013 Я точно не знаю, в ту ли тему я пишу, если нет, поправьте. Можно ли увеличить количество надписей, отображающихся при загрузке (лоадскринов)? Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти