7.9 174 Опубликовано 15 Октября 2011 Поделиться Опубликовано 15 Октября 2011 Darkscape, если для ТЧ 1.006 патча - попробуй эту: http://www.amk-team.ru/forum/index.php?sho...st&p=605578 всё легко Ссылка на комментарий
KD87 718 Опубликовано 15 Октября 2011 Поделиться Опубликовано 15 Октября 2011 (изменено) 7.9, верно, mass из cse_alife_object_physic - это не то. Это вроде как масса, определяющая обработку физ-движком, более того, ее можно получить не из нет-пакета, а просто с помощью mass() - метода CScriptGameObject. А инвентарной массы в нет-пакетах нет. Artos, логика чтения last_spawn_time такая (во всех трех частях): local flag = packet:r_u8() if flag == 1 then self.last_spawn_time = utils.r_CTime(packet) end Для 'se_' классов берите код из соответствующих методов se скриптов. Изменено 15 Октября 2011 пользователем KD87 Ссылка на комментарий
Lagos 688 Опубликовано 15 Октября 2011 Поделиться Опубликовано 15 Октября 2011 (изменено) Помогите пожалуйста. Я прописал в логику НПСу воспроизведения звука при приближению к нему(как у Бороды, Сыча и т.д.). Только звука нет. Вот логика: [logic] trade = misc\trade\holod.ltx active = remark prior = 200 can_select_weapon = true level_spot = trader combat_ignore = combat_ignore [combat_ignore] [remark] anim = animpoint_stay_table_no_rnd combat_ignore_cond = true combat_ignore_keep_when_attacked = true meet = meet invulnerable = true gather_items_enabled = true help_wounded_enabled = true corpse_detection_enabled = true [meet] close_snd_hello = holod_greeting close_snd_bye = holod_farewell close_anim = nil close_victim = nil far_anim = nil far_victim = nil close_distance = 0 far_distance = 0 close_snd_distance = 3 abuse = true use = {=actor_enemy} false, true allow_break = true meet_on_talking = true Звук пописан здесь: [list_script_sound_marsh] holod_greeting holod_farewell [holod_greeting] type = npc ;npc_prefix = false path = scenario\marsh\holod\holod_greeting_ shuffle = rnd idle = 0,0,100 [holod_farewell] type = npc ;npc_prefix = false path = scenario\marsh\holod\holod_farewell_ shuffle = rnd idle = 1,1,100 А файл script_sound_marsh.ltx прописан здесь: #include "script_sound_music_and_stories.ltx" #include "script_sound_zaton.ltx" #include "script_sound_jupiter.ltx" #include "script_sound_pripyat.ltx" #include "script_sound_underpass.ltx" #include "script_sound_marsh.ltx" : list_music_and_stories, list_script_sound_zaton, list_script_sound_jupiter, list_script_sound_pripyat, list_script_sound_underpass, list_script_sound_marsh Подскажите пожалуйста, что я упустил, в чём моя ошибка? P.S.:Также, есть звуки: holod_farewell_1, holod_farewell_2, holod_greeting_1, holod_greeting_1 Изменено 15 Октября 2011 пользователем zoidberg123456789 Официальный сайт . Ссылка на комментарий
Artos 99 Опубликовано 15 Октября 2011 Поделиться Опубликовано 15 Октября 2011 (изменено) KD87 Логика то одинакова, но ... нюансы имеются. а) В SHoC (ТЧ) метод utils.r_CTime(packet) всегда(!) вернет объект таймера, а вот в CS/SCoP (ЧН/ЗП) уже возвратить может и 'nil' и '0'. А вот метод utils.w_CTime(packet,oTimer) во всех версиях игры должен принять не число, а именно объект или 'nil', что упустил некоторое время назад и теперь подправил. б) В моде Simbion, например, байт flag хранит уже не только в 1-ом бите факт наличия self.last_spawn_time, но еще и в других битах иные обнобитные значения/флаги (статус аномалии, в часности). Т.о. условие 'flag == 1' недостаточно и использовано более узкое: bit_and(flag,1) == 1, что совместимо и с исходными кодами игры. Сделал так, чтобы убрать 'мусор' из кастомдаты, что реализовано в АМК-моде. Изменено 15 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Razor* 0 Опубликовано 15 Октября 2011 Поделиться Опубликовано 15 Октября 2011 Подскажите пожалуйста, если прописать в логику лидера монолитовца после вступления в долг\свободу (jup_b4_monolith_squad_leader_duty(freedom)_skin) следующию строчку: on_info = {+jup_b4_monolith_squad_in_duty} %=set_squad_goodwill(jup_b4_monolith_squad_leader_duty_skin_duty_leader:1000)%, будет ли все это дело работать. Ссылка на комментарий
KD87 718 Опубликовано 15 Октября 2011 Поделиться Опубликовано 15 Октября 2011 Artos, удачное решение. Но можно было просто добавить своих переменных. Смотри, например, zenobian mod - там сделан свой скриптовый класс аномальных полей (вроде на классе аномалии) и соответствующим образом поправлен acdc, чтобы при паковке добавлялись новые параметры. Вот еще одно решение Ссылка на комментарий
Artos 99 Опубликовано 15 Октября 2011 Поделиться Опубликовано 15 Октября 2011 (изменено) KD87, вариант из Zenobian-mod конечно же смотрел в свое время и даже на каком-то этапе в сборке Симбиона присутствовали оба варианта (AMK+Zen). Однако в процессе работы над кодами принял решение идти оптимальным (на мой взгляд) путем. Уже и сами разрабы для неписей использовали однобайтовые флаги для расширения (битовые флаги работ для сталкеров), и в том же АМК были добавлены доп. однобитовые флаги для монстров (офф/онлайна) и для сталкеров (состояние ранености). Добавлять новые переменные и править ACDC в то время было и затруднительно и совместимость страдала ... Выбранный вариант не зависит ни от версии ACDC, ни требует новых классов, и ресурсов сторонних (доп.байтов в пакетах) не потребляет. :-) Это же решение позволило упаковать/разгрузить сохранки для таск-менеджера и для диалог-менеджера при сохранении совместимости с предыдущими сэйвами. === Вот, кстати в тему и топика и по следам модуля нет-пакетов, возник вопрос, который сейчас сам перепроверить не могу на ЧН/ЗП: В utils.script (ЧН/ЗП) имеется функция 'w_CTime', в которой упоминается переменная 'CTime': if (CTime == nil) or (t ~= CTime_0) then - но если она (CTime) НЕ определена нигде выше/ранее - ведь и будет постоянно тождественна 'nil' и все последующие времена будут постоянно перезаписываться, т.е. до условия 't ~= CTime_0' никогда не будет доходить проверка. Или что-то я упускаю или ... в кодах явный ляп? Изменено 15 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 15 Октября 2011 Поделиться Опубликовано 15 Октября 2011 (изменено) Artos Похоже на ошибку GSC. Если взять utils.script безпатченной версии, то там функция w_CTime() такая: if not (t == CTime_0) then local Y, M, D, h, m, s, ms = 0, 0, 0, 0, 0, 0, 0 Y, M, D, h, m, s, ms = t:get( Y, M, D, h, m, s, ms ) А в патченой версии я нигде не нашёл, чтобы вызывался код вида utils.CTime Разве что как то движково. И да, так мне получается параметр updskeleton_flags просто удалить? А то я вставил его чтение\запись Изменено 15 Октября 2011 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 16 Октября 2011 Поделиться Опубликовано 16 Октября 2011 (изменено) *Shoker* Да, упоминания про 'updskeleton_flags' нужно просто удалить из кодов. Если есть желание можешь потестить новую версию: m_net_utils_111015- изменен формат получаемой таблицы нет-пакета. Параметры UPDATE выделены в субтаблицу 'Table.upd' - изменена последовательность аргументов при вызове записи пакета: 'Table,soObj,Flag' -> 'soObj,Table'. Необходимость записи UPDATE_write определяется по наличию субтаблицы 'Table.upd'. - введены общие функции: Get_NetPacket/Set_NetPacket, самостоятельно определяющие класс серверного объекта и выбирающие соотв.методы чтения/записи. Т.о. чтение/запись возможны через единые общие методы, которым в качестве первого аргумента передается серверный объект, а вторым при чтении - флаг чтения полного пакета, а при записи - таблица для записи пакета. Изменено 16 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Real Wolf 34 Опубликовано 17 Октября 2011 Поделиться Опубликовано 17 Октября 2011 В каких случаях в лог выдается запись, если с самим объектом я ничего не делаю: Scheduler tried to update object "Имя объекта" И игра вылетает, с указанием только адресов в xrGame? Ссылка на комментарий
speczadanie 0 Опубликовано 17 Октября 2011 Поделиться Опубликовано 17 Октября 2011 Как можно отследить поедание хлеба (bread)? Думал, через коллбэк на потерю, но так он подаёт сигнал не только, когда съедаем, но и когда выбрасываем. Ссылка на комментарий
Real Wolf 34 Опубликовано 17 Октября 2011 Поделиться Опубликовано 17 Октября 2011 Либо сделать колбек на потерю предмета или по старинке проверять, существует ли предмет, который потерян. Ссылка на комментарий
Desertir 202 Опубликовано 17 Октября 2011 Поделиться Опубликовано 17 Октября 2011 но так он подаёт сигнал не только, когда съедаем, но и когда выбрасываем. Либо сделать колбек на потерю предмета Начнем с того, что каллбек на дроп объекта уже есть. А вот "проверять, существует ли предмет, который потерян" вообще интересен, особенно для хлеба... В общем открываем бинд_сталкер.скрипт В функции function actor_binder:reinit() пишем по аналогии инициализацию каллбека self.object:set_callback(callback.use_object, self.use_object, self) Вне всяких функций пишем function actor_binder:use_object(obj,who) if obj:section() == "bread" then get_console():execute("Use_detected") --тут просто вывод в лог, что использование прошло, строку удалить end end Ну и вот после then пишем то, что нужно нам сделать. Для полного счастья можно еще прописать в function actor_binder:net_destroy() это self.object:set_callback(callback.use_object, nil) Это вроде как удаление каллбека при выходе из игры. ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Zander_driver 10 331 Опубликовано 18 Октября 2011 Поделиться Опубликовано 18 Октября 2011 Desertir верно сказал, колбек на юзание объекта самый удобный способ. А вот сделать колбек на потерю предмета или по старинке проверять, существует ли предмет, который потерян. - это было очень популярно в древних модах года три - четыре назад, хотел бы я знать почему Способ чреват тем что при скриптовых заменах одного предмета на другой будет срабатывать ваш скрипт, хотя никто этот хлеб не ел. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
_Призрак_ 11 Опубликовано 18 Октября 2011 Поделиться Опубликовано 18 Октября 2011 (изменено) Здравствуйте. Для чего используется o_torso в параметрах НПС? Почему ПЫС не хватило такого параметра как direction? Изменено 18 Октября 2011 пользователем _Призрак_ Freedom Ссылка на комментарий
Scarabay 98 Опубликовано 18 Октября 2011 Поделиться Опубликовано 18 Октября 2011 Привет всем. Подскажите пожалуйста, как заставить НПС юзать только нож? То есть он, ни смотря ни на что, бежит к ГГ и нажинает лупить/резать пока не умрет, либо не убьет ГГ Благодарю) Мой YouTube-канал Ссылка на комментарий
strelok200 0 Опубликовано 19 Октября 2011 Поделиться Опубликовано 19 Октября 2011 (изменено) Есть вопрос: Зашёл в диалог и вылет: [error]Expression : no_assert [error]Function : CXML_IdToIndex<class CPhraseDialog>::GetById [error]File : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h [error]Line : 112 [error]Description : item not found, id [error]Arguments : nachalo Инфопоршень nachalo зарегистрирован, где все инфы. Тогда в чём дело? Изменено 19 Октября 2011 пользователем ColR_iT Создаю глобальный мод с новыми локациямЭ Ссылка на комментарий
Artos 99 Опубликовано 19 Октября 2011 Поделиться Опубликовано 19 Октября 2011 (изменено) Scarabay Нож для НПС не юзаем. Хочешь сделать - приаттачивай к его руке и махай 'анимацией'. В общем смотри схемы 'мордобоя' из модов и делай по аналогии. Поправлю немного Desertir'а, нет никакой надобности добавлять 'лишний' аргумент (self) в коллбэк актору. И так понятно, что юзает (who) именно он, а не кто иной. Также несколько странная фраза: Desertir: А вот "проверять, существует ли предмет, который потерян" вообще интересен Если тому же 'батону' в конфиге прописать 'многопорционность', то для таких 'многократных' использований как раз проверка 'съеден' ли батон иль только 'надкушен' (в процессе поедания) - совсем не лишне! Следует все же различать то, о чем говорит событие, а не додумывать его иль ориентироваться только на общие случаи. Правильным для 'отследить поедание' (см. вопрос) - достаточен коллбэк 'use_object', а вот для однозначности 'съеден' - тут уже без доп. проверки на исчезновение предмета из игры не обойтись. Изменено 19 Октября 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Galil 18 Опубликовано 20 Октября 2011 Поделиться Опубликовано 20 Октября 2011 (изменено) Возникла одна назойливая проблемка и вот я незнаю, возможно ли это исправить. Возможно ли удаление статей или разделов из ПДА в разделе Справка? Забыл кое что - статьи уже добавлены в ПДА в игре, т.е. их нужно именно в игре удалить из ПДА. Ищу скриптовое решение проблемы... Изменено 20 Октября 2011 пользователем Galil Cold Zone *** Youtube *** Стволы *** SC2TV Ссылка на комментарий
Калтер 0 Опубликовано 20 Октября 2011 Поделиться Опубликовано 20 Октября 2011 Ребят, у меня такой вопрос: как сделать чтобы НПС сидели вокруг костра, разговаривали, травили анекдоты и т.п. в ЗП? Тут в поиске не нашёл. Заранее спасибо . Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти