RayTwitty 492 Опубликовано 31 Марта 2014 Поделиться Опубликовано 31 Марта 2014 (изменено) , кстати, в оригинальном модуле LuaXml.lua, тов. Charsi модифицировал функцию поиска тегов. Смысл в том, что раньше надо было искать субтег последовательно: local xfile = xml.load("test.xml") local xscene = xfile:find("scene"):find("camera")а теперь, как в сталке можно через двоеточие: local xscene = xfile:find("scene:camera") Изменено 31 Марта 2014 пользователем Shadows Ссылка на комментарий
Nazgool 250 Опубликовано 31 Марта 2014 Поделиться Опубликовано 31 Марта 2014 (изменено) Shadows Каждый преследует свои цели. Предлагая идею динамического файла, я не не ставлю цели читать оригинальные в принципе. Потому что мне это не нужно. Пока не задавали дополнительных вопросов, но я опережу события. Дело в том, что создавая объект окна, я храню в его userdat-е только участок кода, который описывает сам объект. Практически это всегда простая таблица, изредка со вложенной таблицей. Применять для этого специальный синтаксис, я думаю, не целесообразно. Опять же, учитывая поставленные цели. Это я делаю для того, чтобы не перезаписывать весь файл. Неизвестно каких размеров он мог бы быть. Небольшой блок кода записывается практически мгновенно. Поэтому и работа функции (той же find) предполагает работу с классическим XML. А для Сталкера идея и исполнение Charsi отличное. Изменено 31 Марта 2014 пользователем Gun12 Ссылка на комментарий
Akella-96 aka SvD 35 Опубликовано 13 Апреля 2014 Поделиться Опубликовано 13 Апреля 2014 Всем добра.Возникла проблема со сном ГГ в ЗП.При входе в зону сна вылезает "Спать (F)", нажимаю, а ничего не происходит. Вся проблема заключается в том, что я не знаю, где я "запортачил" код. Изменение sleep_manger.script на оригинальный ничего не дало. Помогите, если кто-то знает, с чем связан данный баг. AWRP : Re - Load 0.2 © Ссылка на комментарий
Nazgool 250 Опубликовано 13 Апреля 2014 Поделиться Опубликовано 13 Апреля 2014 (изменено) @Akella-96 aka SvD, При такой неопределённой ситуации нужно начинать с all.spawn-а Логика рестриктора сна (напр. Затона) name = zat_a2_sr_sleep находиться в файле cfg = scripts\sr_sleep.ltx. Нужно проверить, срабатывает ли рестриктор при заходе в него ГГ : on_actor_inside = sr_idle@run %=run_tutorial(tutorial_sleep)% Должна вызываться функция xr_effects.run_tutorial Проставь выводы в лог и посмотри что работает а что нет. Для проверки нахождения в зонах (рестрикторах и т.д.) удобно пользоваться расширением sData, которое выводит различные параметры на экран в режиме реального времени. Изменено 26 Апреля 2014 пользователем Dennis_Chikin тому, кому отвечали - явно не интересно. Остальным - тем более. Ссылка на комментарий
Akella-96 aka SvD 35 Опубликовано 13 Апреля 2014 Поделиться Опубликовано 13 Апреля 2014 @Nazgool, у меня была похожая проблема с диалогами, когда я написал функцию, касающуюся юзания брони, ГГ не мог говорить, пока не нам нет брони. Здесь, видимо, похожая ситуация. Закосяченный сторонний код, который мешает выполнять функцию сна. Случайно нет никакой проги, которая поверяет правильное построение скриптов? Если есть, можно ссылку в студию? AWRP : Re - Load 0.2 © Ссылка на комментарий
Nazgool 250 Опубликовано 13 Апреля 2014 Поделиться Опубликовано 13 Апреля 2014 Есть на инсайде програмка - script Syntax Checker Ссылка на комментарий
mumie 2 Опубликовано 21 Апреля 2014 Поделиться Опубликовано 21 Апреля 2014 (изменено) Доброго времени суток всем форумчанам! Не так давно столкнулся с довольно специфичной проблемой, попробовал свои силы в примитивах ИК на x-ray (инверсной кинематики) и встал перед стеной вопроса. Возможно ли, получить "динамически" id НПС? Поясню, мы наводим прицел на НПС и нам игра(думаю все таки движок ибо в скриптах такого рода функций не встречал) имя НПС, его группировку и отношение к ГГ. Мне это нужно для следующего: есть id нпс, по которому мы вычисляем дистанцию до цели. После чего если, наша дистанция удовлетворяет условию мы проводим с НПС некие действия, скажем запускаем кат сцену с воровством, просто здороваемся и много чего еще чего душе угодно. Дабы не быть голословным и не нарушать правила темы, прилагаю ниже свою версию скрипта который должен выступить в роли решения моей проблемы function test_ik() local dist = se_obj:position():distance_to(db.actor:position()) for a = 1,65534 do local se_obj = alife():object(a) if se_obj and isStalker(se_obj) then if dist <= 3 then news_manager.send_tip(db.actor,"Hi GG!") end end end end Но в моем примере уже куча проблем, ибо таких сталкеров может быть 2, 3 и тп. Да и думаю это лишком будет нагружать "калькуляторы". У кого нибудь есть идеи по решению данного вопроса? Заранее благодарен! Изменено 21 Апреля 2014 пользователем mumie Ссылка на комментарий
Desertir 202 Опубликовано 21 Апреля 2014 Поделиться Опубликовано 21 Апреля 2014 @mumie, чтото в скрипте у тебя мешанина, форум перетусовал? Если тебе нужны все сталкеры, которые в онлайне и ближе, чем некая дистанция, то можно перебирать таблицу db.storage (вроде она). Там хранятся не только сталкеры, так что придется проверять принадлежность. По хорошему, можно создать свою отдельную таблицу онлайновых сталкеров, в любом случае, объектов в этих таблицах будет не так много. В принципе, если тебе нужно, чтобы ГГ еще и смотрел в сторону непися, из скриптов это тоже можно сделать. ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
mumie 2 Опубликовано 21 Апреля 2014 Поделиться Опубликовано 21 Апреля 2014 @Desertir,скорее всего форум. у меня вроде ровный был. Но я же говорю, что этот скрипт тоже рабочий, но есть одно но, в радиусе может быть n колличество сталкеров, а мне нужен один, желательно тот на которого указан курсор(прицел), в этом и беда. Ссылка на комментарий
Desertir 202 Опубликовано 21 Апреля 2014 Поделиться Опубликовано 21 Апреля 2014 (изменено) Мысли в слух. Найти вектор между ГГ и каждым неписем (которые ближе Н метров) и найти направление взгляда ГГ. По хорошему, надо найти корреляцию, методом тыка найти коэффициент, при котором непись будет "под прицелом" и сравнивать с ним. Но это... не круто. ЗЫ: вроде есть правка движка, которая позволяет получить объект, на которого направлен прицел Поищи в X-Ray Extension или гдето там. Изменено 21 Апреля 2014 пользователем Desertir ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
*Shoker* 322 Опубликовано 21 Апреля 2014 Поделиться Опубликовано 21 Апреля 2014 (изменено) @mumie,на какую игру делаешь? Если ТЧ или ЗП, то http://www.amk-team.ru/forum/index.php?showtopic=10538&page=1 Скачай документацию и посмотри раздел "Получение информации о точке/объекте, куда смотрит актор" А через это http://www.amk-team.ru/forum/index.php?showtopic=10538&p=831341 будет проще всего нужные из них поставить. На ЧН могуть быть проблемы с не-лицензионными версиями игры, т.к они обычно используют свой xrGame.dll Изменено 21 Апреля 2014 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
mumie 2 Опубликовано 21 Апреля 2014 Поделиться Опубликовано 21 Апреля 2014 @*Shoker*,мда, мой косяк. ЗП. Спасибо за прямой ответ, буду рыскать ибо это направление одно из самых малоизученных, но наверное одно из перспективнейших, если конечно в стакере вообще можно говорить о перспективах Устное предупреждение. Правила форума, п. 2.1.1, также п.5 шапки темы. Благодарности, пожалуйста, в личку. Оффтопика, пожалуйста, не надо. Murarius Ссылка на комментарий
k01jan 816 Опубликовано 22 Апреля 2014 Поделиться Опубликовано 22 Апреля 2014 (изменено) Столкнулся с проблемой: при удалении с помощью alife():release(corps,true) трупа - в логе: "- Critical: SMapLocation binded to non-existent object id=<ИД_NPC>" (в консоли строки зелёного цвета).Гугл пугает: "сеёфгейм повреждён", "игра уничтожила труп, но не очистила точку на карте, привязанную к нему".Озадачился, занёс удаляемые трупы в таблицу (по примеру уборщика NLC sak_off_corpses.script) и повесил проверку таблицы и удаление из неё на апдейт актора. С тем же эффектом. Всё удаляется, но ругается в лог. Подскажите, как корректно удалять трупаки? Зачем трогать биндер актора, если проблема в чем-то, привязанном к конкретному трупу ? Может быть просто оставить этот труп в покое ? dc Изменено 22 Апреля 2014 пользователем Dennis_Chikin Ссылка на комментарий
mumie 2 Опубликовано 22 Апреля 2014 Поделиться Опубликовано 22 Апреля 2014 (изменено) @k01jan,ну я не помню стопроцентного метода, но возможно, тебе поможет "оживление трупов". Попробуй ставить совсем малое количество жизней, пусть хоть сотую часть, и затем тут же удаляй. Метка по идее должна пропасть после "оживления". И чем именно должно помочь это оживление ? dc Изменено 22 Апреля 2014 пользователем Dennis_Chikin Ссылка на комментарий
k01jan 816 Опубликовано 22 Апреля 2014 Поделиться Опубликовано 22 Апреля 2014 Процесс удаление трупов NPC инициируется из motivator_binder:death_callback.@mumie, в каком смысле "оживление"? Перехватывать "смерть" неписей в дэт-калбэке мотиватора, добавлять им здоровья и удалять чуть-живых?Ерунда какая-то получается... Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 22 Апреля 2014 Поделиться Опубликовано 22 Апреля 2014 (изменено) Читал тему. Много думал. Потом читал "шапку" (1-й пост), и снова тему, и опять много думал. Пришел к выводу, что большинство авторов последних постов - телепаты, и передают мысли друг-другу на расстоянии прямо через мировой эфир. Просьба: снизойти до простых смертных, и писать: какой death_callback из из какого апдейта биндера атора при помощи каких таблиц у Вас удаляет трупы, и в какой версии какой игры. И куда у вас из-за этого исчезают все НПЦ (тоже, в какой версии, и какой игры). А если не из-за этого, то из-за чего ? По тому как лихорадочно просмотрел все скрипты ТЧ1.0006 и не обнаружил ничего из упомянутого в сообщениях на этой странице. Действительно, ерунда какая-то получается. ©k01jan Может бы мне кто-нибудь компанию в чтении шапки темы составит ? mumie, что касается неписей, на которых смотрит актор, то если бы это был ТЧ, я бы посоветовал обратить внимание на xr_meet.script, и еще пачку других, сходных по смыслу. Изменено 22 Апреля 2014 пользователем Dennis_Chikin 1 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
macron 1 823 Опубликовано 22 Апреля 2014 Поделиться Опубликовано 22 Апреля 2014 Скажите, а скриптами можно в ТЧ 1.0006 ускорить мышиный курсор в UI-менюшках (главное меню, инвентарь и т.п.)? Уж больно он неповоротливый. ЗЫ: знаю, что через движок точно можно, но пока никто не сделал, рассматриваю скрипты как альтернативу. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 22 Апреля 2014 Поделиться Опубликовано 22 Апреля 2014 (изменено) Вот честно говоря, ни разу не замечал "неповоротливости". Общее тормозилово на фоне развернутого инвентаря на фоне кучи неписей с фонариками на фоне тумана на фоне кривых текстур - это - да. Оно разве не в настройках задается ? И, соответственно, mouse_sens через консоль должно отрабатывать. Изменено 22 Апреля 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
macron 1 823 Опубликовано 22 Апреля 2014 Поделиться Опубликовано 22 Апреля 2014 (изменено) @Dennis_Chikin, судя по вопросам, ты раньше не имел дел с движком 1.0007. Скажем так: перейдя с него на 6, сразу заметна разница. Нет, mouse_sens относится только к 3D, а не UI. В теме ковыряний движка я тоже спросил, но и скриптовой вариант не помешал бы. Изменено 22 Апреля 2014 пользователем macron Ссылка на комментарий
k01jan 816 Опубликовано 22 Апреля 2014 Поделиться Опубликовано 22 Апреля 2014 (изменено) О-о.. Вот оно как обернулось... А я ж всего лишь помочь просил...Ну, что ж, ладно.. 1) dc - "не трогать", к сожалению, не получится. Труп не единичный, не квестовый - и вообще, любой. Проблема не привязана к конкретному трупу. При удалении поголовно всех трупов такая штука происходит. Биндер (надо же, меня понимают..) трогать пришлось, т.к мотиватор лишь ловит смерти неписей и вызывает скрипт, а он часто не успевает их обработать. Например, если гибнут массово (граната, яростная перестрелка и т.п.). Поэтому - таблица (=очередь на обработку), которая из биндера на апдэйте актора проверяется.2) @Dennis_Chikin, я Вас заочно (лишь по работам для НС, к моему глубочайшему сожалению) знаю и искренне уважаю.. Но палку-то зачем перегибать?"какой death_callback из из какого апдейта биндера атора" - ИМХО, не стоит Вам слишком много думать. Особенно - за других. Ведь это - всего лишь Ваши домыслы. Видимо, ввёл в заблуждение dc фразой "Зачем трогать биндер актора". Вот не знаю, к чему это он?Я писал недвусмысленно: "при удалении с помощью alife():release(corps,true) трупа - в логе: "- Critical: SMapLocation binded to non-existent object id=<ИД_NPC>""Стандартная для модов функция, удаление работает. Только вот лог этот... О том и спросил.Что именно Вам здесь непонятно?Раскину "на пальцах": скрипт успешно удаляет трупы NPC. При этом в логе: "- Critical: SMapLocation binded to non-existent object id=<удалённого_трупа>".Такая терминология Вам доступна?По версии - действительно, я косяк упорол - ТЧ6 (кстати, спасибо за косвенную подсказку - на 4 и ЗП не помню таких логов, или - просто не замечал. Проверю.)P.S.: Я бы мог Вам помочь читать. И не только шапку.3) Мои попытки всё исправить - организация очереди удаления в виде динамической таблицы с обработкой её из из bind_stalker.script из ф-и actor_binder:update(delta) результата не дали.Попробую предварительно увести усопших в оффлан.Зачем бан ? Я изложил общее впечатление от попытки прочитать за один раз всю страницу, не являсь автором этих сообщений. Получилось - то, что получилось. Самим авторам - разумеется, все понятно. По крайней мере в своих сообщениях. Иначе было бы уже совсем странно.И некоторые меры для облегчения прочтения действительно нобходимы:Версия, моды поверх, кого именно удаляли, как и когда удаляли, код, откуда вызывали.Ну или если не удаляли, а что другое делали - опять же, версия, код, что видим, где что пишет странного, если пишет.Теперь - по делу:В bind_stalker.script из ф-и actor_binder:update(delta) вызывается скрипт, удаляющий трупы, удовлетворяющие неким условиям. Схема работает, вот только в логе после каждого удалённого NPC появляется запись вида: "- Critical: SMapLocation binded to non-existent object id=номер_его_ID'а".Как бороть? Ну так код где ? По тому как действительно странно в высшей степени. То, что не стоит удалять живых неписей - это в общем-то неоднократно обсуждалось, в том числе и прямо здесь. По тому что очень много где хранятся game_object, и на внезапное удаление объекта серверного не проверяются. Для трупов - в принципе должно быть проще, но вот я же буквально пару страниц назад здесь жаловался на то, что и трупы в некоторых случаях тоже пытаются "жить активной жизнью". Так что - да, в оффлайн их сначала, и только когда попытка получить game_object безуспешна - удалять. А еще лучше - все удаления производить где-то из net_spawn() собственно актора, или раньше. Впрочем, и это все теория, к проблеме имеющая отношение едва-ли. SMapLocation binded to non-existent object - как бы намекает, что дело не в самом трупе. Ну, пока я кода не вижу. Ergo, действительно, попробовать удалить, пока в офлайне, а потом попробовать посетить актором место, где был оный труп, и глянуть: будет повторяться, али нет. p.s. А вообще, кстати, и предупреждение стоило бы выписать. По тому что поиском вот прям даже в теме причина замечательно находится. Изменено 23 Апреля 2014 пользователем Dennis_Chikin Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти