kratos888 0 Опубликовано 16 Февраля 2012 Вот решил немного преукрасить иконки сообщений от сталкеров, что выводятся на экран. Все иконки берутся из news_manager'a, либо можно из amk, добавляй-не добавляй... Но хочется сделать так, как в ЧН - иконка из character_profile персонажа. Может кто-нибудь подсказать, как читать параметры из файлов конфигурации character_desc_....xml, которые содержат информацию о характеристике персонажа, в том чиле его иконка в диалогах? Поделиться этим сообщением Ссылка на сообщение
kratos888 0 Опубликовано 17 Февраля 2012 Artos ну это естественно для ТЧ. Конечно, для каждой группировки я и сам могу сварганить скриптик, но хотелось бы создать иллюзию прихода сообщения лично от того персонажа, который его отправляет. Спасибо за подсказку. Поделиться этим сообщением Ссылка на сообщение
kratos888 0 Опубликовано 20 Февраля 2012 (изменено) Прошу помощи! У меня не работает рандомная погода! Погода постоянная - предвыбросная, как написано в скрипте amk_mod. Я поковырялся и выяснил, что тупо не запускается game.start_tutorial("restore_sun"), т.е. функция, отвечающая за смену погоды на рандомную после перезагрузки. Вызывал даже вручную, напрямую с помощью скрипта ui_main_menu - и после перезагрузки всё опять слетает на предвыбросную. Очень прошу помощи! Уже сколько пытаюсь разобраться - и ничего не получается... Просьба не привносить в моддинг и тем более в топике "Школа ..." принципы натурального обмена "ты мне - я тебе". Есть что предложить другим -выкладываем в общий доступ. Есть вопросы, задаем их в соответствующем топике - и ждем ответы ... --/Artos Изменено 20 Февраля 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
kratos888 0 Опубликовано 20 Февраля 2012 Artos, "большое тебе человеческое спасибо...", я и не знал, что можно вызвать через xml - смотрел в основном обычные туториалы в _g скрипте, и в конфигах по информации к энциклопедии... Поделиться этим сообщением Ссылка на сообщение
kratos888 0 Опубликовано 22 Февраля 2012 (изменено) Нужна помощь! Пытаюсь заспавнить непися на вышке, что на Кордоне у блокпоста военных. Спавн делаю через all.spawn. Прописал ему даже свой гулаг - днём дежурит, ночью спит (или что-то в этом роде). Так вот, прописал, спавнится - но не работает именно его логика. Как только появляется - тут же слезает с вышки и гуляет по блокпосту. Такую же проблему увидел и у командира военных на блокпосте - вместо того, чтобы стоять и наблюдать за происходящим, он тоже гуляет по тому же маршруту. В скрипте gulag_escape смотрел приоритеты - своему неписю поставил аж под 500 ед. (на всякий случай, чтоб не сбивали другие террэйны). И всё равно его что-то сбивает - вместо того, чтобы стоять на вышке, он тупо ходит по территории за блокпостом. Кто может, подскажите пожалуйста, в чём беда? Вот. На скрине проиллюстрированы предположительные точки, куда непись смотрит и откуда он смотрит (только днём). А ночью пока не нужно - если разберусь с днём, разберуюсь и с ночью. По гулагам - слишком много нужно писать, всё не поместится. Но уверяю - что бы я ни делал, даже простую ремарковскую логику прописывал ему - всё равно куда-то убегает. Вот точка, откуда непись смотрит (прописал в all.spawn): [big_soldier_smart_walk1] points = p0 p0:name = name00 p0:flags = 0x400 p0:position = -163.7255859375, -25.435829162598, -350.27590942383 p0:game_vertex_id = 31 p0:level_vertex_id = 85729 А вот точки, куда он смотрит: [big_soldier_smart_look1] points = p0,p1,p2 p0:name = name00|a=guard p0:flags = 0x400 p0:position = -183.30322265625, -30.729475021362, -318.25082397461 p0:game_vertex_id = 36 p0:level_vertex_id = 67308 p0:links = p1(1) p1:name = name01|t=15000|a=guard p1:flags = 0x400 p1:position = -159.03273010254, -30.059520721436, -302.86755371094 p1:game_vertex_id = 34 p1:level_vertex_id = 90503 p1:links = p2(1) p2:name = name02|t=10000|a=guard p2:flags = 0x400 p2:position = -119.28175354004, -30.398241043091, -324.59219360352 p2:game_vertex_id = 100 p2:level_vertex_id = 134793 А это точки, где непись спит: [big_soldier_sleeper_sleep] points = p0, p1 p0:name = wp00 p0:position = -166.57637023926, -24.899848937988, -356.91793823242 p0:game_vertex_id = 31 p0:level_vertex_id = 83083 p0:links = p1(1) p1:name = wp01 p1:position = -166.56726074219, -25.43902015686, -352.73843383789 p1:game_vertex_id = 83092 p1:level_vertex_id = 31 p1:links = p0(1) Из gulag_escape.script: if type == "big_soldier_smart" then t = { section = "logic@big_soldier_smart", idle = 0, prior = 100, state = {0}, in_rest = "", out_rest = "", position_threshold = 100, predicate = function(obj_info) return obj_info.profile_name == "big_soldier_profile" end } table.insert(sj, t) t = { section = "logic@big_soldier_sleeper", idle = 0, prior = 100, state = {1}, position_threshold = 100, online = true, in_rest = "", out_rest = "", predicate = function(obj_info) return obj_info.profile_name == "big_soldier_profile" end } table.insert(sj, t) if type == "big_soldier_smart" then return function(gulag) if level.get_time_hours() >= 6 and level.get_time_hours() <= 20 then return 0 -- день else return 1 -- ночь end end end if gulag_type == "big_soldier_smart" then return se_obj:profile_name() == "big_soldier_profile" end [logic@big_soldier_smart] active = walker@big_soldier_walker [walker@big_soldier_walker] path_walk = walk1 path_look = look1 on_info = {+big_soldier_warning1 -big_soldier_warning1_given} remark@big_soldier_warning [remark@big_soldier_warning] anim = threat snd = big_soldier_1 tips = big_soldier_1_radio tips_sender = soldier_elite1 target = actor on_signal = sound_end | walker@big_soldier_walker %+big_soldier_warning1_given% [logic@big_soldier_sleeper] active = sleeper@big_soldier_sleeper [sleeper@big_soldier_sleeper] path_main = sleep wakeable = true Это всё, что я сделал. Изменено 22 Февраля 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
kratos888 0 Опубликовано 6 Мая 2012 Всем доброго времени суток. Я пытаюсь сейчас сделать свою модель поведения к "Теням Чернобыля". Хочу реализовать схему обыска трупа, как в ЗП (очень впечатлила работа этого скрипта в ЗП). В этой модели поведения есть два действия, которые непись должен проделать: 1) Непись идёт к назначенной точке 2) Непись проигрывает анимацию, стоя на этой точке После этого непись бросает все дела с этим поведением и возвращается к своим обычным делам (посиделки у костра, охрана и др.). Эвалуатор, где отмечаются условия и соответствующая точка назначения, у меня сделан. И второй эвалуатор, где отмечается условие, что непись находится у точки, тоже готов. Вот теперь не могу разобраться с самими action'ами... Для первого действия в action:initialize() я вписываю self.a.vertex_id = nil и self.a.vertex_position = nil - т.е. задаю пока нулевые значения (точка, куда направляю непися, и точка, куда непись будет смотреть во время проигрывания анимации), а также задаю параметры движения через state_mgr.set_state(). В action:execute() я "говорю" неписю, что нужно идти к назначенной точке (точка задаётся через id объекта, к которому непись должен подойти). В action:finalize() просто говорю неписю, что нужно переходить ко второму действию, проигрыванию анимации на точке - ничего не пишу, просто action_base.finalize() А вот ко второму действию у меня вопросы. Я не знаю, куда нужно вписать проигрывание анимации на точке всего один раз - пробую писать в initialize() - но это по-моему не то; пробую писать в execute() - эта функция отвечает за регулярное обновление действие, и непись стоит на точке и постоянно проигрывает одну и ту же анимацию, или просто стоит возле точки; а вот в finalize() - тоже желаемого эффекта не даёт, тем более хочу сюда вписать условия отмены действия (обнуление точки, высвобождение объекта от непися и т.д.).. Кто поможет, как мне реализовать подобное в два действия: 1) Непись подходит к точке, выбранной в эвалуаторе; 2) Непись проигрывает анимацию на точке и бросает все дела с этим скриптом, возвращается к прежнему состоянию. Пока я смог реализовать только первое действие, где непись только подходит к точке - я ориентировался по скрипту xr_kamp(этот скрипт один из самых правильных и стабильных). Поделиться этим сообщением Ссылка на сообщение
kratos888 0 Опубликовано 6 Мая 2012 (изменено) Artos, ставлю этот скрипт из ЗП на ТЧ - движок выдаёт неизлечимые ошибки типа "state_mgr.script C stack overflow" - переполняется какой-то стек, движок всё время норовит выдать что-то подобное. А по поводу watcher_act - этот скрипт эффективен, но пока не удаётся сделать его эффектным - хотелось бы сделать все переходы анимаций не при помощи отдельных параметров, а через state_mgr. Изменено 6 Мая 2012 пользователем kratos888 Поделиться этим сообщением Ссылка на сообщение
kratos888 0 Опубликовано 7 Июня 2012 (изменено) Всем доброго времени суток. На днях я столкнулся с проблемой считывания параметров NPC из XML-файла. Мне нужно считать параметр <bio>Краткая_биография</bio>. Полазил в интернете, посмотрел различные шаблоны XML-парсинга на LUA, и функцию string.gfind. Так вот, шаблон для захвата я вроде бы составил (не уверен, что правильно): function get_bio(npc) local xml_npc_bio = string.gfind(" ", "(%w%p_)(*_bio)") return xml_npc_bio end Хочу преобразовать исходное название шаблона "название_биографии_bio" в текст. Нужно для детальной информации... То, что я отметил под смайликом - это место, где нужно начать поиск необходимого шаблона. Вот только где нужно начать поиск шаблона? Пробовал через npc:name(), через npc:id()..., но выскакивает ошибка, типа "нет функции". Если кто разбирается в этом, помогите кто-нибудь, пожалуйста! Мне почему-то казалось, что этот тег, не что иное, как рудимент. ColR_iT Изменено 7 Июня 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
kratos888 0 Опубликовано 26 Июня 2012 Всем доброго времени суток. По ходу разработки своего модика назрело ещё два вопроса: 1) Пробую заспавнить НПС через скрипт, используя функцию из скрипта amk: function spawn_npc() local npc = alife():create("npc", vector():set(мои_координаты), левел_вертекс_айди, гейм_вертекс_айди) local tbl = amk.read_stalker_params(npc) if npc then tbl.sid = 8000 amk.write_stalker_params(tbl, obj) end end Непись спавнится, но никакого story_id игра у непися не находит (нужно поставить метку на непися во время квеста). Ставил метку в описание задания через game_story_ids.ltx. 2) Возможно ли в Сталкере отменить какое-нибудь текущее задание, или строго выполнить\провалить? Если можно отменить, то как? Поделиться этим сообщением Ссылка на сообщение
kratos888 0 Опубликовано 30 Июня 2012 panzyuza зачем мне ставить отметку на непися через другие функции, когда она ставится во время задания? Поделиться этим сообщением Ссылка на сообщение