AndreySol 215 Опубликовано 15 Апреля 2012 SoC v 1.0005 В секции детектора 'detector_advances' есть такой параметр: night_vision_particle = damage_fx\heli_burnОн имеет какое-то значение для детектора ? Marafon6540 Проблема похоже в том, что окно класса CUIStatic по умолчанию не умеет отображать многострочный текст. И похоже методов класса, устанавливающих такое свойство нет. Решить проблему можно прописав Ваше окно в xml-файле, к примеру так: <st_wopisTXT x="600" y="140" width="320" height="200"> <text align="c" complex_mode="1" x="1" y="1" a="250"></text> </st_wopisTXT> здесь параметр complex_mode="1" как раз и обеспечивает многострочное отображение текста. Затем создать окно, использовав этот xml-файл: local xml = CScriptXmlInit() xml:ParseFile("имя_файла.xml")-- файл-описатель элементов -- wopisTXT = xml:InitStatic("st_wopisTXT", self) ну и далее, используйте wopisTXT для всех остальных манипуляций с окном. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 16 Апреля 2012 (изменено) ТЧ v 1.0005 Вопрос по детекторам, артефактам и аномалиям: 1). Что и где надо изменить\убрать\добавить, что-бы убрать для всех артефактов эффекты свечения, подпрыгивания и др., ну т.е. чтоб они молча и тихо лежали на своих местах. 2). В ltx-файлах для аномалий указано много параметров, которые отвечают, судя по комментариям, за спаун артов при срабатывании аномалии. Эти параметры рабочие ? Просто, за все разы прохождения чистого ТЧ, ни разу не заметил случая, когда при срабатывании аномалии она бы рождала арт. Там-же присутствуют параметры, опять-же судя по комментам, отвечающие за рождение артов в офф-лайне. Вопрос тот-же - они рабочие ? 3). По распознаванию зон детекторами: у детектора 'detector_simple' для аномалии 'zone_radioactive' указано аж 8, как я понял из названия параметров (это начиная с "zone_sound_3_" и заканчивая "zone_sound_3_8"), звуковых эффектов. Чо они означают ? Предполагаю, что изменение звука при изменении расстояния до аномалии ? Если я правильно предполагаю, то какое максимальное кол-во этих параметров, и как вычисляется сетка расстояний ? Изменено 16 Апреля 2012 пользователем AndreySol Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 16 Апреля 2012 (изменено) Капрал Хикс Понял, спасибо. Еще немного про арты. В базовой секции 'af_base' эти параметры отсутствуют, но если я их уберу из наследованных секций и вставлю в базовую, будут ли все арты наследовать эти параметры ? А по остальным вопросам ? Изменено 16 Апреля 2012 пользователем AndreySol Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 18 Мая 2012 (изменено) SoC v 1.0005 Проблема: есть НПС, заспауненный скриптово. У него имеется квест, с квестом все вроде нормально - говорю с неписем, получаю квест, нахожу квестовый предмет, приношу, отдаю - квест выполнен. Все гуд, кроме одного - при взятии квеста, на карте появляется отметка, но она указывает не на НПСа, а в другое место на локации (место зависит от "green_location" или "blue_location"). Уже примерно понимаю, что проблема похоже с неверным story_id, который при скриптовом спавне указать в create не возможно. Но пока задал вопрос здесь - вдруг что-то упустил, и это можно поправить в конфигурационных файлах ? Если нет, пните отсюда, пойду в раздел "Скриптование". И еще - что означает "green_location" и "blue_location" ? Изменено 18 Мая 2012 пользователем AndreySol Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 19 Мая 2012 ColR_iT для метки, а именно функции map_add_object_spot_ser, которая ставит метку на серверный объект необходим не сюжетный идентификатор (story_id), а его id. Извините, но Вы похоже сам вопрос не прочитали - я не спрашивал о том, какой ф-цией поставить метку на объект. Вот, к примеру, выдержка из tasks_escape.xml <objective> <text>tutorial_help_wounded_3</text> <map_location_type hint="escape_trader">blue_location</map_location_type> <object_story_id>Escape_Trader</object_story_id> <infoportion_complete>esc_serious_talk</infoportion_complete> </objective> Тэг <object_story_id> я иначе как "story_id объекта" перевести не могу. 'Escape_Trader' указанный в этом тэге зарегистрирован в game_story_ids.ltx: [story_ids] ...... 003 = "Escape_Trader" Значит, все-таки, story_id используется менеджером заданий для установки метки на объекты квестов ? Artos Проверяй свой квест и смотри на что же там ставится метка. Вероятнее всего ставится на квестовый предмет или место (рестриктор) где выполняется квест. Вот от этого и "пляши" ... Вот код добавляемого мной квеста: <game_task id="escape_search_tools_task"> <title>Найти набор инструментов</title> <objective> <icon>ui_iconsTotal_find_item</icon> <object_story_id>Escape_Technic</object_story_id> <article>escape_story_search_tools</article> <infoportion_complete>escape_player_search_tools_complete</infoportion_complete> </objective> <objective> <text>Найти набор инструментов для техника</text> <object_story_id>Escape_Technic</object_story_id> <infoportion_set_complete>escape_player_have_tools</infoportion_set_complete> </objective> <objective> <text>Отнести инструменты технику</text><!--green_location--> <map_location_type hint="Принести инструменты технику">blue_location</map_location_type> <object_story_id>Escape_Technic</object_story_id> <infoportion_complete>escape_player_search_tools_complete</infoportion_complete> </objective> </game_task> 'Escape_Technic' зарегистрирован в game_story_ids.ltx: 093 = "Escape_Technic". Сам НПС спаунится в Деревне новичков, квестовый предмет - на АТП, а метка, после активации квеста, появляется в лощинке с аномалиями за деревней, там где плоть разрывает и сообщение от Сидора об использовании болтов. Очень похоже, что менеджер заданий просто не может правильно связать story_id, зарегистрированный в game_story_ids.ltx, с конкретным НПСом. Если мое предположение верно, то подскажите - это можно исправить в конфигурационных файлах, или же надо при скриптовом спауне НПСа устанавливать ему через нет-пакет требуемый story_id ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 21 Мая 2012 ТЧ v 1.0005 С логикой НПСов пытаюсь разбираться, что оно такое и с чем ее кушают. Есть НПС, спауню скриптово у входа в бункер Сидоровича. Прописываю ему: [smart_terrains] none = true;-- Чтоб не захватывался гулагами -- [logic] active = kamp ;active = remark danger = danger_ignore [danger_ignore] ignore_distance = 50 [kamp] center_point = camp_point path_walk = camp_point_task def_state_moving = sprint;run [remark] anim = wait no_move = true Судя по тому, что прочитал о схеме "kamp" на Stalkerin, непись должен согласно указанному в 'def_state_moving' дойти до точки 'center_point' и затем там устроится и сидеть обычным бездельником. Вот только идет он куда попало и судя по всему под прописанную ему логику не попадает. Если сменить активную схему на 'remark' - то все вроде в порядке - НПС стоит как вкопаный, с ним можно поговорить\поторговать. Что-то я не так делаю, подскажите, что ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 24 Мая 2012 Artos почитай про логику повнимательнее и не стОит сводить все к упрощениям Я читал на STALKER Inside Wiki, но там все для смарт-террейнов\гулагов, а вот для "одиночек" ничего нет, похоже. НПСа спауню в непосредственной близости от актора(ГГ), поэтому он в он-лайн. Естественно, координаты (вертексы) center_point должны соответствовать той локации, где должны быть посиделки. Т.к. ты не дал информации по секции твоего center_point - гадай сам, не может узнать где эта точка, не может до нее дойти, т.к. на др.локации иль еще чего ... Я пробовал все "точки", которые есть в описании гулагов для локации Кордон(Escape), результат тот-же - НПС не выполняет логику. При этом, если я указываю для center_point какое-то произвольное название точки, то получаю вылет. Значит указанные мною точки валидны, т.е. движок видит(понимает) ее координаты ? Точки которые я пробовал указывать, брал из gulag_escape.ltx, к примеру: [kamp1@esc_lager] center_point = [b]camp_center[/b] path_walk = camp_center_task soundgroup = esc_lager meet = meet@lager По идее, НПС должен идти к этой точке, неважно где именно она расположена ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 25 Мая 2012 (изменено) ColR_iT причём эту точку необходимо самому поставить на локации, прописав её в файле путей, распакованного all.spawn, а не брать из какого-то файла camp_center - это, если я правильно понял, одна из точек, прописанная в файле путей all.spawn для локации Кордон. Неужели я не могу использовать ее для логики своего НПСа ? Artos - функцию подключения логики (если логика не подключается в секции спавна). Не очень понял, что это значит, остальное ниже. Ранг НПСа - 300. Это из "spawn_sections.ltx" [escape_technic_spawn]:stalker_trader character_profile = escape_technic spec_rank = novice community = trader custom_data = scripts\esc_technic.ltx содержимое "esc_technic.ltx" [logic] active = kamp ;active = remark trade = misc\trade_technic.ltx [kamp] center_point = camp_center path_walk = camp_center_task [remark] anim = wait no_move = true [smart_terrains] none = true ф-ция спауна function on_spawn_technic() local obj = nil local a = vector() a.x = -246.51 a.y = -19.52 a.z = -144.60 local lV = 13193 local gV = 8 obj = alife():create("escape_technic_spawn", a, lV, gV) if obj then ----- сообщаем о создании НПС ----- local text = "ф-ция спауна выполнена - создан НПС с id: "..tostring(obj.id) news_manager.send_tip(db.actor, text, nil, nil, 10000) end end Изменено 25 Мая 2012 пользователем AndreySol Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 26 Мая 2012 Несколько вопросов по логике и all.spawn: 1. В way-файлах разобранного all.spawn параметр "name" для точек пути - что он означает ? И почему у многих точек одинаковые "name", к примеру wp00, name00 и т.п. Два следующих вопроса для варианта, когда НПСу логика прописана в кастом-дате и он не под гулагом. 2. У НПСа прописана логика, согласно которой он должен от центрального костра в Деревне новичков на Кордоне пойти в одну из комнат в доме, возле которого стоит Волк. Проблема в том, что НПС не может нормально зайти в эту комнату - в верандочку дома он заходит, а затем упирается в стенку в направлении этой комнаты и останавливается. Пробовал разбить путь на части - точки пути ставил перед входом в дом, на верандочке, в коридоре и последняя в комнате, но переход из верандочки в коридор для НПСа как барьер, упирается в стену и все ! В чем причина может быть ? 3. НПС отрабатывает схему "kamp", все вроде нормально - сидит у костра ест, пъет и т.д. Но если сделать сохранение\загрузку игры, то он, после загрузки, у костра не садится, а стоит тупо, ни на что не реагирует. В чем причина, как это можно исправить ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 26 Мая 2012 (изменено) ColR_iT 2. Во всех домах в деревне, за исключение разрушенного, отсутствует АИ сетка, а как известно, НПС ходят исключительно по ней. Как-то давненько, при прохождении игры видел как в режиме "дэнжер" один из НПСов забежал в этот-же дом в одну из комнат и сидел там, направив оружие в сторону опасности. Затем, когда опасность прошла, встал и спокойно вышел на улицу. Вот правда утверждать не берусь - было это на чистой ТЧ или на каком-то моде. Да и на верандочке этого дома, на матрасе, спит НПС. Может не в сетке дело ? Наличие АИ-сетки можно проверить\просмотреть\поправить в SDK ? Убедительная просьба не задавать очевидных вопросов или вопросов для погадалок. --/Artos Изменено 26 Мая 2012 пользователем Artos Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 27 Мая 2012 ColR_iT, Artos Во-вторых, схема кампа, как было ранее показано, работает и при сохранениях и загрузках. Да, порою в игре встречается, что некоторые камперы тупо стоят у точки посиделок, пока не произойдет некоторое событие, после которого схема нормально активизируется ... Но эта помарка пока не решена ни в чистой игре ни в модах и причина не ясна. Я проверял - в любом месте выполнения логики НПСом (опять-же указываю, что НПС не находится под гулагом), где я его "застал" сохранением\загрузкой он вырубается, т.е. стоит в состоянии, когда с ним невозможно взаимодействовать. Т.е. явно причина не в этой помарке, о которой Вы говорили выше, а в чем-то другом. Вот только в чем, я не знаю. Может и не в схеме кампа, как мне советовал Artos, но я не знаю в чем - потому и срашиваю. Спрашиваю не потому, что хочу получить от Вас готовое решение, как "образумить" моего НПСа, а потому-что предполагаю, что Вы, возможно, сталкивались в свое время с подобной проблемой, и можете подсказать мне ее решение. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 28 Мая 2012 Что за файл m_person.ltx в gamedata\creatures ? За что он отвечает, зачем нужен ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 28 Мая 2012 (изменено) panzyuza И где оно, это самое бессмертие Сахарова в этом конфиге ? Сообщение от модератора ColR_iT Цитировать предыдущие посты вовсе не обязательно. Изменено 28 Мая 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 29 Мая 2012 выдержка из alife_l01_escape.ltx разобранного all.spawn от ТЧ v 1.0005 [11] ; cse_abstract properties section_name = breakable_object name = meshes\brkbl#11.ogf position = 33.298469543457, 23.0894298553467, 156.27995300293 direction = -0.0784034579992294, -0.0843100622296333, 1.57073950767517 id = 65535 version = 118 script_version = 6 ; cse_alife_object properties game_vertex_id = 0 level_vertex_id = 594270 object_flags = 0xffffffba ; cse_visual properties visual_name = meshes\brkbl#11 ; cse_alife_object_breakable properties что за объект описан в этой секции ? В папке "meshes" модели brkbl#11.ogf нет. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 30 Мая 2012 В чем может быть причина вот такого вылета при загрузке сохранения и при начале новой игры: Expression : fatal error Function : CInifile::r_string File : E:\stalker\sources\trunk\xrCore\Xr_ini.cpp Line : 352 Description : <no expression> Arguments : Can't find variable MaxHealthValue in [m_trader] Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 30 Мая 2012 (изменено) Капрал Хикс Да не в переводе лога счастье, уважаемый. Уже разобрался, причина вылета была в синтаксической ошибке в скрипте se_stalker.script. Кто-бы знал что эти вещи так взаимосвязаны. Сколько можно повторять: "Прежде чем задавать вопрос по ошибке - потрудитесь проверять чекерами!" И, тебе абсолютно правильно посоветовали ЧИТАТЬ и ПОНИМАТЬ лог, т.к. он именно указывает не на синтаксическую ошибку, а на ошибку в секции спавна (что не исключает и кучи твоих ошибок в синтаксисе ...). --/Artos Добавлено через 27 мин.: Artos Присвоить story_id при спавне скриптом можно только через нет-пакеты, .... Примеров в готовых модах предостаточно вместе с функциями работы с нет пакетами. Да, действительно можно. Я, к примеру, попробовал это сделать в se_stalker.script в методах on_register() или on_spawn(). Все вроде получается, но с одной оговоркой - после скриптового спауна НПСа, в одном из этих методов происходит присваивание ему story_id (через модуль нет-пакетов), и результат такой - сразу после спауна, НПС не имеет этого присвоенного ему в серверной части story_id. Но если сделать сохранение\загрузку, то НПС (находящийся в он-лайн) после этого уже имеет присвоенный ему story_id. К чему это все ? Вопрос к Вам - может Вы подскажете способ, как сделать так, что-бы сразу после скриптового спауна НПСа, он выходил в он-лайн уже с присвоенным ему story_id ? Предполагаю, что это можно сделать в методах STATE_Write\STATE_Read, вот только как ? Раз вопрос задан адресно, отвечу: У меня нет никакого желания помогать и в очередной раз персонально разжевывать тем, кто не читает топики, шапки, ФАКи. Если и этого (#4280) мало - то Вам противопоказано заниматься моддингом. (ИМХО) --/Artos Изменено 30 Мая 2012 пользователем Artos Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 9 Июня 2012 (изменено) Вопрос по спауну НПСа. ТЧ v 1.0005. Добавленная секция в alife_l01_escape.ltx: ; cse_abstract properties section_name = stalker_trader name = escape_technic_name position = -246.919998168945, -19.7299995422363, -143.419998168945 direction = 0.0445535257458687, -0.000645029998850077, 0.0144814234226942 version = 118 script_version = 6 ; cse_alife_trader_abstract properties money = 500000 trader_flags = 0 character_profile = escape_technic ; cse_alife_object properties game_vertex_id = 5 distance = 1 level_vertex_id = 11351 object_flags = 0xffffff7b custom_data = <<END [spawn] wpn_pm wpn_bm16 ammo_9x18_fmj ammo_12x70_buck wpn_binoc detector_simple device_torch conserva bread [logic] cfg = scripts\esc_technic.ltx END story_id = 93 ; cse_visual properties visual_name = actors\novice\green_stalker_1 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 1 g_group = 5 dynamic_out_restrictions = dynamic_in_restrictions = ; cse_alife_monster_abstract properties ; cse_alife_human_abstract properties equipment_preferences = 1, 1, 1, 2, 2 main_weapon_preferences = 0, 1, 0, 0 smart_terrain_id = 65535 ; cse_ph_skeleton properties ; se_stalker properties upd:health = 1 upd:timestamp = 0 upd:creature_flags = 0 upd:position = -246.919998168945, -19.7299995422363, -143.419998168945 upd:o_torso = -0.000645029998850077, 0.0445535257458687, 0 upd:g_squad = 1 upd:g_group = 5 ; cse_alife_human_stalker properties upd:start_dialog = содержимое esc_technic.ltx: [smart_terrains] none = true [logic] trade = misc\trade_technic.ltx active = kamp meet = meet danger = danger_ignore [danger_ignore] ignore_distance = 5 [remark] anim = wait no_move = true [kamp] center_point = esc_lager_camp_center; path_walk = esc_lager_camp_center_task; soundgroup = esc_lager on_info = {+escape_player_search_tools_complete} camper meet = meet [camper] path_walk = technic_walk path_look = technic_look def_state_moving = walk combat_ignore_cond = always meet = meet [meet] use = true use_wpn = true meet_talk_enabled = true После начала новой игры, НПС спаунится в назначенной точке. Но вместо того, чтоб отработать первую назначенную ему секцию логики "kamp", тупо стоит на месте спауна. Вывести его из ступора можно, пробовал уходить подальше от него, или бросал гранату, так чтоб его не задело, но он среагировал - иногда он растормаживается и начинает идти в точку "center_point", где усаживается к костру и нормально отрабатывает секцию "kamp". В чем причина может быть ? Пробовал разные значения object_flags (свои не выдумывал, взял те что использовали ПЫС для других НПСов), не помогает. Изменено 10 Июня 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 17 Июня 2012 (изменено) 1. Пытаюсь заспавнить плафон освещения. За основу взял плафон из подвальчика в Деревне новичков на кордоне, что возле костра в центре. Это добавил в alife_l01_escape.ltx распакованного all.spawn: [865] ; cse_abstract properties section_name = lights_hanging_lamp name = light_alarm_glass_0004 position = -195.981475830078, -18.0143604278564, -134.596420288086 direction = 1.36992639454547e-011, 0, 3.14159274101257 version = 118 script_version = 6 ; cse_alife_object properties game_vertex_id = 36 level_vertex_id = 56182 object_flags = 0xffffffba ; cse_visual properties visual_name = physics\light\new_light\light_alarm_glass ; cse_ph_skeleton properties ; cse_alife_object_hanging_lamp properties main_color = 0xfffe8812 main_brightness = 0.699999988079071 main_range = 4 light_flags = 0x2a lamp_fixed_bones = link health = 100 main_virtual_size = 0.100000001490116 ambient_radius = 2 ambient_power = 0.200000002980232 main_bone = bone_lamp main_cone_angle = 2.09439516067505 glow_radius = 0.699999988079071 ambient_bone = bone_omni это код скриптового спауна: local obj = alife():create(865) if obj then level.map_add_object_spot_ser(obj.id, "alife_presentation_monstr", "плафон") end собрал all.spawn, начал НИ - нет плафона по указанным координатам, вызвал ф-цию - метка на глобальной карте появилась, а самого плафон опять нет. Что я неправильно делаю ? 2. Попался мне пример скриптового спауна физических объектов на местности. это прописываем в items.ltx к примеру: [konteyner_00]:identity_immunities $spawn = "physics\object" visual = physics\box\konteyner_03.ogf;зеленый металлический контейнер class = O_PHYS_S remove_time = 10000 далее спауним обычным способом. Вроде работает. Вопрос у меня по параметру "remove_time" - он движком обрабатывается ? И что означает ? Я смог перевести его как "время до удаления объекта", а у меня контейнер остается в натуре уж явно более 10000 мс. Или это не мс ? 3. Вопрос по добавлению объекта в игру здесь задавать ? Изменено 17 Июня 2012 пользователем AndreySol Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 24 Июня 2012 Подскажите, в каких файлах находится функционал панели ввода кода для открытия дверей. Нашел только ui_numpad.script, а где все остальное - размещение панели в нужном месте, взаимодействие с актером(ГГ) ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 24 Июня 2012 ColR_iT А насчет непосредственно самого размещения объекта панели - по идее должно быть в all.spawn, но чет не нахожу в alife_-файлах. Что искать-то ? Поделиться этим сообщением Ссылка на сообщение