Clayman 104 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 На самом деле, в ЗП используются "фейковые" левел_ченджеры, кто смотрел в СДК знает - они где-то на крыше домов с вей-поинтами внутри, на которые перебрасывает актора функция перехода от проводника. Кроме этого (это уже из личного опыта), в настройках граф-поинтов есть интересный параметр "не для игрока", так вот он отключает указатель (стрелочку) таск-менеджера при наличии выданного задания. Т.е., если вы сшили локации, и при выданном задании (цель которого находится на другой локе) вам нужно, чтобы указатель вел к ближайшему переходу, не указывайте при коннекте граф-поинтов в СДК параметр "не для игрока"...но это уже для "продвинутых пользователей. Эти граф-поинты как раз и используются в ЗП для переброса актора - там-же не нужно юзать указатель на переход...его нету, там проводники)) Ссылка на комментарий
Callisto 2 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 (изменено) Callisto, Что значит по "заданным координатам"? Кто, когда и где их задает?Я в all.spawne Это продолжение предыдущего вопроса.Создала переход рядом с местом спавна ГГ (чтоб далеко не бегать) и при его использовании происходит переход в Припять, но ГГ спавнится не по мною заданным координатам, а в прачечной, где сразу же открывается диалог с главным (не помню как его звать). Изменено 5 Октября 2012 пользователем Callisto Ссылка на комментарий
Artos 99 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 (изменено) Callisto, можно предположить, что ты просто путаешься в значениях для параметров, отвечающих за координаты спавна. Или же у тебя где-то срабатывает сторонний скрипт, изменяющий место спавна для актора заданного тобою в all.spawn, т.е. типа: db.actor:set_actor_position(vector():set(258.18,29.34,-460.75)) --/ меняем место спавна (телепортируем) Изменено 5 Октября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Clayman 104 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Clayman, особенности функционирования SDK и то, что в игре - порою сильно отличаются. Вот жаль, что многие так считают. СДК, насколько я знаю - основной инструмент разработчиков СТАЛКЕРа, а распаковка-редактирование-запаковка аллспана - продукт деятельности моддеров. Которые не имели изначально доступа к инструментам СДК. И аллспавн есть не что иное, как скомпилированный файл секций с параметрами всех элементов всех уровней (спавн-элементов и вей-поинтов на уровнях). И если вы его сравните с параметрами в СДК, то увидите, что практически все совпадает. Есть ошибки распаковки уровня, но это поправимо. Но это уже старая оффтоп-дискуссия Да и уточню, параметр "не для игрока" настраивается для граф-поинтов, объединяющих уровни (для алайф-переходов), а не для левел-ченджеров. Callisto, чтобы действительно не гадать, лучше выложить секцию созданного тобой перехода со всеми параметрами. Ссылка на комментарий
Artos 99 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 (изменено) Clayman, не стОит тут затевать дискуссию "SDK vs sripts", выдавая за аксиому свои предпочтения. Я так не считаю, а в этом уверен и уверен на практическом опыте своем и других. Кстати, наличие многочисленных отключалок в скриптах игры типа if editor() then - уже подтверждает мною сказанное. Не буду спорить, что основную черновую работу по картам, их населению и т.п. гораздо производительнее делать именно в SDK, но ... Во-первых, дошлифовать до нужного уровня ну никак не получится, не говоря про оптимизацию и создание эксклюзивных задач/ситуаций. Во-вторых, чтобы внести мелкую или даже крупную правку в игру в большинстве случаев более чем достаточно это делать напрямую в скриптах/конфигах или том же all.spawn'е. В третьих, ограниченность в выборе инструментария служит плохую службу "почитателям SDK". Научившись хорошо владеть "основным" инструментом, такие моддмейкеры не могут доволить до кондиции уже созданное, а только выдавать новые мапы и новые типовые сюжеты. Хороший мод может быть создан только теми, кто и использует SDK на полную катушку и владеет навыками работы со скриптами/конфигами уже непосредственно созданной заготовки. И совершенно верно, что "аллспавн есть не что иное, как скомпилированный файл секций с параметрами", однако дальнейшее абсолютное утверждение "всех элементов всех уровней (спавн-элементов и вей-поинтов на уровнях)" - ошибочно. Отдельные элементы (как поминавшийся тут ранее dest_graph_point) присутствуют порою чисто рудиментарно и нередко только именами... Да и помимо "всех", которые даны в all.spawn'е - в игре спавнится и можно спавнить еще много чего (в том числе и вей-поинты), о чем уже SDK и не догадывается... ;-) Изменено 5 Октября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Callisto 2 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 (изменено) Artos, С координатами и вертексами у меня все правильно, и сторонних скриптовых перемещений у меня нигде нет. Но на чистой игре тоже самое. А може быть такое, что локация накрыта чем-то, чья логика принудительно перемещает ГГ? Просто, когда тестировала спавн предметов по локациям, использовала "повелителя Зоны" и пре переходе на другую локацию, при выборе любой стандартной точки (по котрым водят сталкеры) спавн. все равно происходил в ,так сказать, в сюжетной точке, где мы впервые появлямся проходя сюжет ; cse_abstract properties section_name = level_changer name = zaton_level_changer_pri position = 213.40, 22.43, 548.66 direction = 0, 0, 0 id = 65535 version = 128 cse_abstract__unk1_u16 = 0x1 script_version = 12 ; cse_alife_object properties game_vertex_id = 292 distance = 67.199997 level_vertex_id = 1328103 object_flags = 0xffffff3e ; cse_shape properties shapes = 1 shape_0:type = box shape_0:axis_x = 8.25219917297363,0,0 shape_0:axis_y = 0,3.09340000152588,0 shape_0:axis_z = 0,0,8.25219917297363 shape_0:offset = 0,0,0 ; cse_alife_space_restrictor properties restrictor_type = 3 ; cse_alife_level_changer properties dest_game_vertex_id = 851 dest_level_vertex_id = 5256 dest_position = -232.85, -0.514, -240.602 dest_level_name = pripyat dest_graph_point = pripyat_lc_graph_point silent_mode = 1 Изменено 5 Октября 2012 пользователем Callisto Ссылка на комментарий
Clayman 104 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Хороший мод может быть создан только теми, кто и использует SDK на полную катушку и владеет навыками работы со скриптами/конфигами уже непосредственно созданной заготовки. - согласен на 200 процентов. Callisto, ну я же рассказал, как в ЗП работает переход - при общении с проводником, скрипт перебрасывает актора в определенный вей-поинт, который находится в фейковом левел_ченджере, который в соответствии с настройками кидает его уже на нужный уровень, спавня в прописанном граф-поинте (dest_graph_point = pripyat_lc_graph_point). В твоем случае (в твоей секции) все понятно - уровень Припять, граф-поинт для старта - pripyat_lc_graph_point. ВОт скрин,оригинального перехода: Затон: Ссылка на комментарий
Artos 99 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Callisto, чудес не бывает (как правило). ;-) Я не пользуюь различными повелителями зон, но их принцип тривиален - или для телепортации задается "ручками" нужная точка (что редко) или используются как раз готовые точки для переходов, совпадающие с сюжетными. Однако все это как правило вызывается "руками", т.е. самим игроком. Если, как ты предполагаешь "локация накрыта чем-то" - это как раз и подразумевается мною, что если есть подобное, что вызывает срабатывание телепортации актора сторонним скриптом - то и удивляться не стОит, а найти и отключить. К сожалению, не имея ни твоих файлов ни логов невозможно что-либо подсказать. Тем более как ты говоришь, это у тебя и на чистой игре... хотя в "бане" на чистой игре - это уже чудеса. ;-) Остается посоветовать, найти все функции где происходять телепортации и вставить вывод в лог - тогда можно найти место и причину... "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Callisto 2 Опубликовано 5 Октября 2012 Поделиться Опубликовано 5 Октября 2012 Все. Мозг оканчательно вытек. Clayman, Тогда перефразирую ранее заданный вопоос: можно ли использовать уже существующие графпоинты? Если да, где их все можно узнать? Artos, Буду смотреть, изучать, Ссылка на комментарий
Clayman 104 Опубликовано 6 Октября 2012 Поделиться Опубликовано 6 Октября 2012 Callisto, собирай быстрее моск совочком Если ты пользуешься распакованным аллспавном, смотри в файлах alife_уровень, по поиску level_changer, в каждом переходе параметр dest_graph_point как раз указывает на граф-поинт на другом уровне, где спавнится актор. Выпиши их и юзай в своих переходах. Как сделать другие точки спавна актора для новых переходов - спрашивай у скриптовиков, я кроме как добавлением новых граф-поинтов не знаю как. Но это только в СДК и с перекомпиляцией спавна. Ссылка на комментарий
Artos 99 Опубликовано 6 Октября 2012 Поделиться Опубликовано 6 Октября 2012 (изменено) Callisto, твое предположение о "накрывающем рестрикторе" скорее всего верно. Однозначно: актор переходит на Припять по указанным тобою координатам, но ... срабатывает рестриктор 'pri_a15_sr_cutscene' (пока не разобрал деталей, а радиус у него менее 8 метров. Логика этого рестриктора запускает в конечном итоге телепорт актора по указанным этим рестрикторам путям: %=teleport_actor(pri_a15_actor_walk:pri_a15_actor_look)% Т.о. выдерживается именно заданный изначальный сюжет... и актор оказывается "в бане". Clayman, повторю, что dest_graph_point имеет значение только для SDK, в котором является по сути организационной единицей. Исходные для него и основные для игры параметры именно dest_game_vertex_id, dest_game_vertex_id, dest_position, dest_direction - и именно они (и только они) определяют в игре место спавна и направление взгляда актора после перехода по левел-ченджеру. Модмейкерам, которые не предполагают работать с добавленными переходами в SDK можно в распаковке алл.спавна иль при скриптовом спавне переходов просто не указывать этот параметр или оставлять/задавать его с пустой строкою. Изменено 6 Октября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Batment 0 Опубликовано 6 Октября 2012 Поделиться Опубликовано 6 Октября 2012 (изменено) У меня на ТЧшной Припяти происходит вылет: stack trace: 0023:082B62E5 xrGame.dll, CxIOFile::Scanf() При переходе на другую локацию либо при загрузке сейва если у тебя уже загружен левел. С восстановленой функцией printf(fmt,...) выдало такой лог при переходе на другую локацию: * 18643 objects are successfully saved * Game Виталий - autosave.scop is successfully saved to file 'c:\users\public\docume~1\stalke~1.-\savedgames\Виталий - autosave.scop' - Disconnect ! Cannot find saved game ~~~dbg:smart_cover_binder.net_destroy()_smart_cover_[%s]_is_unregistered ! Cannot find saved game ~~~dbg:smart_cover_binder.net_destroy()_smart_cover_[test_1_animpoint_1]_is_unregistered ! Cannot find saved game ~~~dbg:smart_cover_binder.net_destroy()_smart_cover_[%s]_is_unregistered ! Cannot find saved game ~~~dbg:smart_cover_binder.net_destroy()_smart_cover_[l11pri_test_1_animpoint_1]_is_unregistered ! Cannot find saved game ~~~dbg:smart_cover_binder.net_destroy()_smart_cover_[%s]_is_unregistered ! Cannot find saved game ~~~dbg:smart_cover_binder.net_destroy()_smart_cover_[l11_pri_smart_terrain_5_7_animpoint_4]_is_unregistered ! Cannot find saved game ~~~dbg:smart_cover_binder.net_destroy()_smart_cover_[%s]_is_unregistered ! Cannot find saved game ~~~dbg:smart_cover_binder.net_destroy()_smart_cover_[l11_pri_smart_terrain_5_7_animpoint_3]_is_unregistered ! Cannot find saved game ~~~dbg:smart_cover_binder.net_destroy()_smart_cover_[%s]_is_unregistered ! Cannot find saved game ~~~dbg:smart_cover_binder.net_destroy()_smart_cover_[l11_pri_smart_terrain_5_7_animpoint_2]_is_unregistered ! Cannot find saved game ~~~dbg:smart_cover_binder.net_destroy()_smart_cover_[%s]_is_unregistered ! Cannot find saved game ~~~dbg:smart_cover_binder.net_destroy()_smart_cover_[l11_pri_smart_terrain_5_7_animpoint_1]_is_unregistered stack trace: 0023:082B62E5 xrGame.dll, CxIOFile::Scanf() Что значит is_unregistered ? И почему ругань на анимпоинты ? Изменено 6 Октября 2012 пользователем Batment Ссылка на комментарий
KD87 718 Опубликовано 6 Октября 2012 Поделиться Опубликовано 6 Октября 2012 dest_graph_point - не рудимент. По этому параметру xrai связывает локации. В игре, понятно, не нужен - имена граф-поинтов при компилировании сетки безвозвратно теряются. Ссылка на комментарий
Artos 99 Опубликовано 6 Октября 2012 Поделиться Опубликовано 6 Октября 2012 (изменено) Batment, нет никакой ругани в твоем логе. is_unregistered - "отрегистрирован", т.е. объект уходит в оффлайн (net_destroy) и движек его отрегистрирует из онлайновой базы объектов. Ну а с причиной вылетов - разбирайся... пока информации практически нет для каких-либо предположений. KD87, с "рудиментарностью" уже разобрались, Для игры и моддинга "без SDK" - не задействовано - значит "рудимент", тем более левел-ченджеры (в исходном вопросе о них была речь) никак не связывают сетки локаций, по ним только актор ходит. ;-) Ну а для SDK'шников - важный и необходимый параметр. Изменено 6 Октября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Callisto 2 Опубликовано 6 Октября 2012 Поделиться Опубликовано 6 Октября 2012 срабатывает рестриктор 'pri_a15_sr_cutscene'Телепортация по этим же координатам присутствует и в рестрикторе pri_a15_sr_exit. А если при первом использовании перехода выдавать info_portion и в рестрикторе в Припяти добавить проверку на его наличие. Если он есть, то пропустить все отальные действия в логике, а если нет, то продолжить выполнение логики. Ссылка на комментарий
Artos 99 Опубликовано 6 Октября 2012 Поделиться Опубликовано 6 Октября 2012 (изменено) Callisto, присутствие в логике - еще не означает что 'это' будет выполнено... В логике pri_a15_sr_exit для телепортации стоИт кучка условий и до телепотрации еще "далеко", т.е. это все же "вторичный" сюжетный рестриктор, зависимый от ситуации. А вот pri_a15_sr_cutscene - это как раз жесткий менеджер, управляющий сюжетом на локации Припять. Как только актор оказывается в Припяти, этот рестриктор активизируется и безусловно(!) начинает командовать. 1. По первой же активной секции (run_black) запускает "черный экран" и выполняет еще кучку всячинки... 2. Через 5 секунд телепортирует актора (pri_a15_actor_walk) 3. При наличии инфопоршня pas_b400_done - начинает рулить различным спавном сюжетных персов и групп... При отсутствии инфопоршня - вновь телепортитует актора (pri_a15_actor_start_walk) 4. В конце концов снимает "черный экран" и игра продолжается по сюжету. Т.о. любой переход по какому бы то ни было левел-ченджеру иль иначе - все одно приводит к жесткой логике рестриктора. Не знаю зачем тебе твой переход и что после него должно быть с актором, но выходит, что только вмешательство в логику pri_a15_sr_cutscene поможет тебе избежать телепортаций по заведомо прописанным сюжетным точкам (путям). Можно и вариантом с инфопоршнем, но чтобы именно самая первая активная секция pri_a15_sr_cutscene, не успев закрыть все черным экраном и не телепортнув куда ей прописано актора, узнала бы про твой инфопоршень и перешла на sr_idle@nil ... иль как-то иначе... тогда актор останется по координатам, которые заданы для левел-ченджера. Однако, сюжет на Припяти будет поломан. Изменено 7 Октября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
serega-gamer 0 Опубликовано 7 Октября 2012 Поделиться Опубликовано 7 Октября 2012 Всем привет! Нужна помощь. Я пытаюсь составить проверку следующего типа: представим, что в слоте номер 3 к примеру, у гг что то есть, и нужно что бы игра, считывая имя секции этого предмета, проверяла, есть ли в инвентаре гг, ещё предметы с таким же именем секции. Если таковы имеются, то выполняется действие. Ну а если объект есть только в слоте гг, но такого же нет в инвентаре, то соответственно ничего происходить не должно. Надеюсь, я доходчиво объяснил суть вопроса. Реклама любых модов бесплатно на моём сайте писать в личку Ссылка на комментарий
Shredder 49 Опубликовано 7 Октября 2012 Поделиться Опубликовано 7 Октября 2012 Вот держи функцию проверки: function check() local slot_item = db.actor:item_in_slot(3) if not slot_item then return false end for i= 0, db.actor:object_count() - 1 do local item = db.actor:object(i) if item:section() == slot_item:section() and item:id() ~= slot_item:id() then --секции совпали, а айдишники нет return true end end return falseend Ссылка на комментарий
Callisto 2 Опубликовано 7 Октября 2012 Поделиться Опубликовано 7 Октября 2012 Не знаю зачем тебе твой переходЭто для того, чтобы предоставить игроку своего рода выбор: проходить сюжет или нет, при поиске вещей. Если сюжет не прходить, то его и поломать можно Сделала я это все ГГ нормально спавнится при переходе, но при прохождении сюжета, после кат сцены, его телепартирует за пределы игровой части локации Но это уже я где-то накосячила и догадываюсь где, но еще не проверяла. Возник такой вопрос: как называется та штука, в форме сферы, которая выплевывает долговцев на градирне? Точнее мне нужен ее визуал, чтоб заспавнить на месте перехода. Ссылка на комментарий
Artos 99 Опубликовано 7 Октября 2012 Поделиться Опубликовано 7 Октября 2012 (изменено) Callisto, ты бы хоть скрин "той штуки" показала бы, чтобы попонятнее было... тем, кто давно не видел "выплевывания долговцев"... ;-) Вероятно ты имеешь ввиду телепорт (секция zone_teleport) у которого форма (визуал) определяется не моделью, а партиклами. В игре есть, например, name = zat_b20_teleport_horiz Изменено 7 Октября 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти