AndreySol 215 Опубликовано 24 Июня 2012 Так что ищи объекты с логикой ph_code Вот это и нужно было. Спасибо. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 29 Июня 2012 (изменено) Когда наводим взгляд(прицел) актера(ГГ) на какой-либо предмет, с которым можно взаимодействовать, появляется подсказка, к примеру для кодового замка выводится "Кодовый замок (F)". Откуда берется текст этого сообщения - это зашито в движек или устанавливается в каких-то конфигах ? Можно-ли изменить ? Для особо одарённых. Если ты знаешь, какая надпись высвечивается, даже если не знаешь, зайди в игру и посмотри. В общем ты уже определился с текстом: "Кодовый замок ..."). Открываем любой поисковик слов в файле, можно Total Commander, мне лично удобнее Notepad++, на его примере и покажу. Итак, отрываем Notepad++, нажимаем чудную комбинацию клавиш Ctrl + F и переходим на вкладочку "Найти в файлах". В поле "Найти" вводим нужные слова. В поле "Папка" указываем директорию, где будем искать. Нажимаем "Найти все" и о чудо, внизу окна программы видим вот такое: Как понятно из увиденного, данный тест находится в файле config\text\rus\string_table_level_tips.xml. Неужели это так трудно??? Два тебе за лень. ColR_iT Добавлено через 208 мин.: ColR_iT Вообще-то я не о string_table_level_tips.xml спрашивал. Я спрашивал о том, как движком определяется, для какого объекта какую подсказку выводить ? К примеру, тот же кодовый замок, создается на базе секции "physic_destroyable_object", и эта-же секция используется еще для кучи всего - бутылки, стаканы и др. Но при наведении на бутылку, выводится другая подсказка, а не "кодовый замок". И я о том и спрашивал, что текст подсказки для конкретного объекта - это движковое или в каких-то конфигах задается ? Вот пример: ; cse_abstract properties section_name = physic_destroyable_object name = esc_physic_destroyable_object_0000 position = 61.5764122009277, -0.138549506664276, 155.138473510742 direction = 0, 0, 0 version = 118 script_version = 6 ; cse_alife_object properties game_vertex_id = 0 level_vertex_id = 3978 object_flags = 0xffffff32 ; cse_visual properties visual_name = physics\decor\bottle_bar_stakan ; cse_ph_skeleton properties ; cse_alife_object_physic properties physic_type = 0x3 mass = 10 source_id = 65535 судя по визуалу - какой-то стакан ; cse_abstract properties section_name = physic_destroyable_object name = codedoor_key_0001 position = -210.539486506843, -22.8791319175720, -122.097147360229 direction = -0.5568, 0, 0.1104 version = 118 script_version = 6 ; cse_alife_object properties game_vertex_id = 21 level_vertex_id = 42731 object_flags = 0xffffff3a custom_data = <<END [logic] cfg = scripts\dar\dar_codelock1.ltx END ; cse_visual properties visual_name = physics\door\codedoor_key ; cse_ph_skeleton properties skeleton_flags = 1 ; cse_alife_object_physic properties physic_type = 0x3 mass = 10 fixed_bones = link skeleton_flags = 1 source_id = 65535 а это - кодовый замок. И ни один из параметров не похож на указание текстового содержимого подсказки. Как движек их различает ? Изменено 29 Июня 2012 пользователем ColR_iT Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 1 Июля 2012 (изменено) Вопрос по содержимому скрипта ph_door.script. В нем, в ф-ции close_door, мне непонятно зачем три раза подряд устанавливается один и тот же обработчик. Кто знает, зачем так сделано разрабами ? function action_door:close_door(disable_snd) printf("_bp: [%s] action_door:close_door()", self.object:name()) -- local disable_snd = self:is_closed() if not disable_snd then if self.st.snd_close_start then self:door_play_snd_from_set(self.st.snd_close_start) end end -- Ставим коллбек для отлова окончания закрытия двери (чтобы заблокировать ее и проиграть звук, если нужно): --------------- вот это не понял ---------------------------------- self.object:set_fastcall(self.fastcall,self) self.object:set_fastcall(self.fastcall,self) self.object:set_fastcall(self.fastcall,self) ----------------------------------------------------------------------- printf("_bp: action_door:close_door()") if self.st.no_force == true then self.joint:set_max_force_and_velocity(0, 0, 0) else self.joint:set_max_force_and_velocity(200, 3, 0) end self.block = true -- Закрываем и блокируем self.soundless_block = disable_snd if self.show_tips then if self.st.locked == true and self.st.tip_unlock then self.object:set_tip_text(self.st.tip_unlock) return end if self.st.tip_open then self.object:set_tip_text(self.st.tip_open) end end end Изменено 1 Июля 2012 пользователем AndreySol Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 8 Июля 2012 Вопрос по моделям объектов, т.е. о том что находится в файлах "ogf". Как и чем их создавать ? Чем редактировать ? Как правильно добавить в игру ? Пробовал добавить дизель-генератор (из NLC 6), файлы раскидал по папкам, после попытки заспаунить получил вылет по анимации. Вот хочу разобраться, что к чему. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 24 Июля 2012 zzedik А как бы сделать так, чтобы у какого-нибудь НПС враждебной группировки было нейтральное отношение к ГГ, а у остальных враждебное? Может глянуть как это сделано ПЫСами для солдат на посту под мостом на Кордоне ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 2 Августа 2012 (изменено) Подскажите, где и чего править, что-бы отключить самовосстановление здоровья актера(ГГ) ? Вроде в actor.ltx должно это быть, да вот не вижу этого параметра. Не понял такой параметр: satiety_health_v = 0.0001 ;увеличение здоровья при уменьшении сытости Как я понимаю, уменьшение сытости - это увеличение голода, как голод может прибавлять здоровья ? И еще насчет actor.ltx, в нем есть секция "when actor in sleep" - она работает ? Ведь в чистом ТЧ 1.0004 сна для актера(ГГ) нет. Изменено 2 Августа 2012 пользователем AndreySol Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 2 Августа 2012 Для чистого ТЧ 1.0004 В окне диалога с каким-либо НПСом внизу присутствует кнопочка "Торговать". Это движковое, или надпись на конопочке/кол-во кнопочек можно изменить правкой конфигов\скриптово ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 6 Августа 2012 (изменено) slavapro У меня (чистое ТЧ 1.0004) эта строчка закомментирована изначально. Щас попробую раскомментить и выставить в 0, отпишусь. Н-да, не помогло. есть еще варианты ? Добавлено через 32 мин.: Вопрос снят - помогла установка в 0 "satiety_health_v". Получается, пока актер сыт, здоровье чуток улучшалось. Изменено 6 Августа 2012 пользователем AndreySol Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 8 Августа 2012 Для ТЧ v1.0004 В стандартном диалоге актера(ГГ) с НПС можно изменить текст\положение кнопки "Торговать" ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 8 Августа 2012 Comador А как насчет динамического изменения, к примеру, положения кнопки "Торговать" ? Ну т.е. в процессе игры, скриптово ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 9 Августа 2012 Чисто теоретически можно получить любой объект по имени окна. Но это сложно. А зачем тебе? Ну к примеру для обычных НПСов - стандартный диалог, а для "назначенного" техником - сдвигаем кнопку "Торговать" и добавляем "Ремонт\модификация". Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 10 Августа 2012 Убрал бы движковую кнопку за пределы экрана. По инфопоршню (ui_talk) получал бы окно болтанки, где, в зависимости от того с кем разговариваем добавляем или 1 или 2 кнопки С этим-то все понятно, а собственно изначальный вопрос - получить доступ к кнопке "Торговать" как к оконному объекту ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 11 Августа 2012 Для классов прописанных в se_item.script метод UPDATE_Write (если его добавить) будет срабатывать ? К примеру, для se_outfit у меня он не вызывается ни при каких действиях. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 12 Августа 2012 (изменено) Насчет системных инфо-порций - ui_talk как-то странно выдается. В info_portions.xml добавил для теста: <info_portion id="ui_talk"> <action>Util_script.On_talk_show</action> <disable>ui_talk_hide</disable> </info_portion> В On_talk_show сделал обычную выдачу сообщения на экран. Начинаю разговор с НПСом (по нажатию назначенной кнопы) - инфо-порции ui_talk нет. Если в разговоре переключаюсь на диалог торговли и затем выхожу из него, т.е. возвращается опять диалог разговора с НПСом - ui_talk срабатывает. Я чего-то недопонял или с помощью этой инфопорции отследить начало разговора с НПСом не получится ? Изменено 12 Августа 2012 пользователем AndreySol Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 12 Августа 2012 (изменено) ТЧ v 1.0005 Есть НПС с такой логикой: [logic@esc_lager_technic] active = kamp@esc_lager_technic_kamp1 trade = misc\trade_technic.ltx [kamp@esc_lager_technic_kamp1] center_point = camp_center path_walk = camp_center_task meet = meet@technic_kamp1 [meet@technic_kamp1] use = true use_wpn = true meet_talk_enabled = true Спауню возле входа в подвал Сидора, оттуда он должен идти к центральному костру в деревне новичков и сидеть там. Логика работает, но с одной заморочкой: если в основной секции logic@esc_lager_technic указать параметр trade = misc\trade_technic.ltx, то НПС после спауна "замерзает" на месте, и к костру в деревне не идет. При этом набор торговли соответствует указанному в trade_technic.ltx и взаимодействовать с НПСом можно. Можно его и "разморозить", к примеру переходом по инфо-порции на другую секцию логики. Если параметр trade = misc\trade_technic.ltx, не указывать(или закомментить) то НПС нормально отрабатывает указанную в active = kamp@esc_lager_technic_kamp1 секцию, т.е. идет к костру, садится там и выполняет стандартные анимации. Кроме своего конфига торговли перепробовал все имеющиеся исходные, эффект тот-же. В чем может быть причина ? Помогите разобраться, уже второй день мозги ломаю ! Изменено 12 Августа 2012 пользователем AndreySol Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 18 Августа 2012 ТЧ v 1.0004 Вопрос по именам(идентификаторам) уровней в конфигах. Цитаты из game_maps_single.ltx [level_maps_single] L01_escape L02_garbage L03_agroprom ........ ........ далее ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [l01_escape] texture = map\map_escape bound_rect = -317.164, -633.718, 404.880, 811.627 global_rect = 355.0,2011.0, 576.0,2453.000000 weathers = default music_tracks = l01_escape_musics ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [L02_garbage] texture = map\map_garbage bound_rect = -322.334, -347.225, 321.685, 318.000 global_rect = 371.0,1767.0,561.0,1963.256226 weathers = default music_tracks = l02_garbage_musics ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [l03_agroprom] texture = map\map_agroprom bound_rect = -266.505, -355.611, 331.388, 213.838 global_rect = 161.0, 1834.0, 344.0,2008.293945 weathers = default ;music_tracks = l03_agroprom_musics music_tracks = l01_escape_musics Используется то прописная то заглавная буква L. Получается движек не различает регистра ? Соответственно значение, которое возвращает level.name() можно проверять в любом регистре ? Т.е. правильно работать будет и if level.name() == "l01_escape" then ................ end и if level.name() == "L01_ESCAPE" then ................ end Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 21 Августа 2012 (изменено) ins33 if db.actor ~= nil and if has_alife_info("doctor_one_start") and time_news < time then ошибка в if после первого and. Имеется в виду, что if там не должно быть. Стрелок Ответы на Ваш вопрос: - Вы инфо-порцию kontroler_trup прописали как положено ? - А как Вы проверяете, что инфо-порция не выдается ? Изменено 21 Августа 2012 пользователем AndreySol Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 11 Сентября 2012 Дописал в se_item.script для класса se_outfit два метода - STATE_Write(packet) и STATE_Read(packet). Ну и проверил сколько раз эти методы будут вызываться при спауне броника скриптом. Результат: STATE_Write STATE_Read STATE_Write STATE_Write STATE_Read Кто знает, зачем столько раз происходят вызовы методов ? И какова их привязка к последовательности спауна предмета ? Многострочный текст с прокруткой по вертикали - как сделать ? Класс CUIStatic не позволяет такого ? Пытался подсмотреть в оригинальных кодах игры, в частности смотрел как сделано описание предмета в инвентаре. Там это выглядит так: <descr_list x="12" y="223" width="298" height="140" always_show_scroll="0" left_ident="16"> <font font="letterica16" r="240" g="217" b="182"/> </descr_list> Но вычислить какой это класс из CUI... не получилось. Подскажите. Дописал в se_item.script для класса se_outfit еще один метод - on_before_register(). Когда он вызывается - когда серверный объект, созданный ф-цией create уже существует ? Пять раз методы se_outfit вызывались для случая спауна броника в ящик, проверил для спауна на местности: STATE_Write STATE_Write STATE_Read То-же не очень понятно кол-во вызовов методов класса. Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 28 Сентября 2012 Во многих модах для ТЧ сейчас добавлена, кроме вертикальной отдачи при стрельбе еще и горизонтальная. Как это сделано - в конфигах или скриптово ? Поделиться этим сообщением Ссылка на сообщение
AndreySol 215 Опубликовано 1 Октября 2012 Labus "Скриптом" - это ответ Struck'у ? Можно пример такого скрипта ? Поделиться этим сообщением Ссылка на сообщение