Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
ColR_iT 171 Опубликовано 1 Октября 2013 Поделиться Опубликовано 1 Октября 2013 возможно ли и каким образом менять взаимодействие между например гражданским зомби (класс монстров) и сталкером зомбированным (класс сталкеров), таким образом, что бы они в игре не нападали друг на друга?Конкретно между этими двумя - нет, во всяком случае, посредством конфигов. Зомбированные сталкеры - это zombied, в табличке communities_relations, а зомби-гражданские - это zombie из monster_relations, таким образом, для гражданских можно установить нейтральные отношения только со всеми НПС (human из monster_relations), включая зомбированных сталкеров. Ссылка на комментарий
losiara 13 Опубликовано 1 Октября 2013 Поделиться Опубликовано 1 Октября 2013 (изменено) ColR_iT Благодарю, это не совсем тот вариант, так как гражданские зомби у меня во многих сценках воюют со сталкерами. Еще один вопрос, в каком скриптовом файле регулируются эти отношения (monster_relations), посмотрю, возможно удастся что нибудь придумать... Изменено 1 Октября 2013 пользователем losiara Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
ColR_iT 171 Опубликовано 1 Октября 2013 Поделиться Опубликовано 1 Октября 2013 @losiara, хотя ко мне закралось подозрение, что @Капрал Хикс всё же прав. У контролёра в конфиге присутствует строка Friend_Community_Overrides с единственным значением monolith, по всей видимости благодаря которой он не атакует указанную группировку. Попробуй прописать этот же параметр другому монстру, например слепому псу, и прописать группировку сталкеров, и для теста заспавнить одну собачонку в Лагере новичков. Сам проверить не могу - нет возможности. Ссылка на комментарий
Artos 99 Опубликовано 1 Октября 2013 Поделиться Опубликовано 1 Октября 2013 (изменено) @losiara,@ColR_iT, и др. В игре есть хитрый файлик mob_alife_mgr.script, который управляет возможностями нахождения монстров под схемами (управляться скриптами) или же быть отпущенными в алайф (под управление движком). В этом файле прописано возможность читать 4 параметра из конфигов (всегда, дружелюбен всем, дружен человекам, дружен актору). В принципе, ничего не мешает добавить свой параметр (типа 'dog_friendly') и, немного подправив скрипт, иметь возможность в схемах монстров, чтобы они не враждовали с псами... Ну, и меняя/добавляя параметр(ы), можно "подружить" с какой группировкой требуется... При желании, можно прописать обработку сида (story_id) и делать невраждебным конкретного монстра/сталкера. Изменено 1 Октября 2013 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
losiara 13 Опубликовано 1 Октября 2013 Поделиться Опубликовано 1 Октября 2013 (изменено) ColR_iT Отыскал, вставил и без толку, не знаю как на контроллерах, но на гр. зомби не распространяется... Продолжают атаковать друг друга... А надежда была. Artos Есть такой хитрый скрипт. А какова возможность добавить вариант дружелюбности сталкеров к монстрам??? В скрипте же речь только о монстрячих схемах??? По идее, даже добавив параметр назовем его условно "дружен_со_сталкерами", сталкеры все равно будут вести стрельбу против монстров не смотря на то, что последние не сопротивляются или я ошибаюсь??? --------------------------------------------------------------------------------- -- Mob alife manager --------------------------------------------------------------------------------- disable_scheme = 1 reset_scheme = 2 continue_execution = 3 function cfg_get_mode(ini, section, npc) local alife = {} alife.actor_friendly = utils.cfg_get_bool(ini, section, "actor_friendly", npc, false) alife.npc_friendly = utils.cfg_get_bool(ini, section, "npc_friendly", npc, false) alife.friendly = utils.cfg_get_bool(ini, section, "friendly", npc, false) alife.braindead = utils.cfg_get_bool(ini, section, "braindead", npc, false) alife.zombie_friendly = utils.cfg_get_bool(ini, section, "zombie_friendly", npc, false) return alife end function issue_combat_event(obj) --printf("_bp: issue_combat_event?") local st = db.storage[obj:id()] if st.mob_combat then printf("_bp: alife_control: issuing event combat_callback") xr_logic.issue_event(obj, st.mob_combat, "combat_callback") end end function alife_control(obj, actor, mode) -- Мертвые монстры сразу отпускаются под alife if not obj:alive() then xr_logic.mob_release(obj) return true end -- Монстры, у которых есть враг - также должны работать в alife local enemy = obj:get_enemy() if enemy then --printf("_bp: got enemy") if not mode.braindead and not mode.friendly and (not mode.actor_friendly or enemy:id () ~= actor:id ()) and (not mode.npc_friendly or enemy:id() == actor:id()) then issue_combat_event(obj) xr_logic.mob_release(obj) return true end end -- Отпускать в alife монстров, которых обстреляли local h = obj:get_monster_hit_info() if h.who and h.time ~= 0 then if mode.braindead then -- Braindead монстры не уходят из под скрипта даже если их обстрелять return false end if h.who:id() == actor:id() and mode.actor_friendly then -- Если хотя бы раз был атакован actor-ом, то больше не дружественен к нему mode.actor_friendly = false if h.who:id() == actor:id() and mode.zombie_friendly then mode.zombie_friendly = true end --printf("_bp [%s]: h.who:name() = %s", obj:name(), h.who:name()) issue_combat_event(obj) xr_logic.mob_release(obj) return true end -- Остальные монстры работают под схемой return false end Прошу простить, но времени на редактирование поста не хватило... disable_scheme = 1 reset_scheme = 2 continue_execution = 3 function cfg_get_mode(ini, section, npc) local alife = {} alife.actor_friendly = utils.cfg_get_bool(ini, section, "actor_friendly", npc, false) alife.npc_friendly = utils.cfg_get_bool(ini, section, "npc_friendly", npc, false) alife.friendly = utils.cfg_get_bool(ini, section, "friendly", npc, false) alife.braindead = utils.cfg_get_bool(ini, section, "braindead", npc, false) alife.zombie_friendly = utils.cfg_get_bool(ini, section, "zombie_friendly", npc, false) return alife end function issue_combat_event(obj) --printf("_bp: issue_combat_event?") local st = db.storage[obj:id()] if st.mob_combat then printf("_bp: alife_control: issuing event combat_callback") xr_logic.issue_event(obj, st.mob_combat, "combat_callback") end end function alife_control(obj, actor, mode) -- Мертвые монстры сразу отпускаются под alife if not obj:alive() then xr_logic.mob_release(obj) return true end -- Монстры, у которых есть враг - также должны работать в alife local enemy = obj:get_enemy() if enemy then --printf("_bp: got enemy") if not mode.braindead and not mode.friendly and not mode.zombie_friendly and (not mode.actor_friendly or enemy:id () ~= actor:id ()) and (not mode.npc_friendly or enemy:id() == actor:id()) then issue_combat_event(obj) xr_logic.mob_release(obj) return true end end -- Отпускать в alife монстров, которых обстреляли local h = obj:get_monster_hit_info() if h.who and h.time ~= 0 then if mode.braindead then -- Braindead монстры не уходят из под скрипта даже если их обстрелять return false end if h.who:id() == actor:id() and mode.actor_friendly then -- Если хотя бы раз был атакован actor-ом, то больше не дружественен к нему mode.actor_friendly = false if h.who:id() == actor:id() and mode.zombie_friendly then mode.zombie_friendly = true end --printf("_bp [%s]: h.who:name() = %s", obj:name(), h.who:name()) issue_combat_event(obj) xr_logic.mob_release(obj) return true end -- Остальные монстры работают под схемой return false end Изменено 1 Октября 2013 пользователем ColR_iT Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
Artos 99 Опубликовано 1 Октября 2013 Поделиться Опубликовано 1 Октября 2013 (изменено) @losiara, твой вопрос касался возможности "регулировать взаимоотношения" монстров и human'ов (сталкеров), и в частности "менять взаимодействие между например гражданским зомби (класс монстров) и сталкером зомбированным (класс сталкеров), таким образом, что бы они в игре не нападали друг на друга". Взаимоотношения (групп) имеют как минимум две составляющие: а) монстр(ы) не враждебны к сталкерам и б) сталкер(ы) не враждебны к монстрам, и эти две составляющие могут иметь место по-одиночке и одновременно. Что имеем: 0. Сталкеры (species = human) строят свои взаимоотношения по табличке 'communities_relations', где нет места монстрам, т.е. только гуманоиды, а все монстры враждебны. Монстры, а монолитовцы в этом отношении отношении относятся к ним (species = zombie), регулируют свои взаимоотношения по табличке 'monster_relations' и тут можно только с актором и/или сразу со всеми гуманоидами менять отношение. Вот поэтому и не дружат все сталкеры с монстрами и монолитом, а контролер и монолит не враждуют. 1. Для сталкеров существует схема "combat_ignore", в которой можно задать условия, чтобы сталкер(ы) не воспринимали врагами других неписей (монстров и/или сталкеров). Также, для них есть схема 'danger' (см. xr_danger.script), в которой также можно задать условия,чтобы не "возбуждались"... Имеется для них и схемка 'threshold' с параметрами 'ignore_monster' и 'max_ignore_distance' (см. stalker_generic.script) и в логике позволяющий игнорировать монстров. Все это и дает возможность тебе регулировать "а) старкер не враждебен к монстрам". Однако, для того, чтобы указать конкретную группировку монстров, придется поработать над добавлением в "combat_ignore" возможности читать параметры с указанием группировки и игнорировать ее. 2. Для монстров такого выбора нет, кроме упомянутого mob_alife_mgr.script, и которым можно регулировать "б) монстр не враждебен к сталкерам". Т.к. в оригинальном виде этот скрипт дает возможность выставлять "невраждебность" только сразу ко всем неписям, то и помянул про необходимость доработать скрипт, чтобы он смог обрабатывать новые потребные тебе параметры. Вот тогда ты сможешь управлять взаимоотношениями 'монстр<?>сталкер' как тебе хочется (далее работай головой и со скриптами). ;-) P.S. По показанной тобою доработке скрипта нет смысла говорить, т.к. все же нужно понимать что за условие тебе необходимо и как его реализовать, чтобы оно работало, но не корежило все остальное. Добавленный тобою параметр "в тупую" дублирует 'npc_friendly', т.е. по его наличию монстр опять же не будет отпущен в алайф для всех(!) неписей. Тут, как минимум, требуется не булев-параметр, а строка с именем группировки, и чтобы в функции 'alife_control' обрабатывалось условие, что "если есть враг, но его его группировка соответствует заданной новым параметром, то не отпускать в алайф", т.е. не будет включен 'issue_combat_event'. Изменено 1 Октября 2013 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Melo 31 Опубликовано 5 Октября 2013 Поделиться Опубликовано 5 Октября 2013 Всем привет. Извиняюсь,если не корректно поставил вопрос. Как мне прописать разные состояния для смарт - террейна? Мне надо,чтобы,например,1 НПС днем патрулировал,а ночью спал, второй днем уходил по своим делам, а ночью возвращался влагерь и т.д. В инете нашел пару туторов, но толком ничего и не понял, как правильно это реализовать на ТЧ. Во имя Материнки, Винта и Святого интернета. Админ! Ссылка на комментарий
losiara 13 Опубликовано 8 Октября 2013 Поделиться Опубликовано 8 Октября 2013 (изменено) Melo, наверное никто тебе не ответит, потому что муссировалось уже не раз, вот здесь посмотри: http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%A1%D0%BC%D0%B0%D1%80%D1%82%D0%B5%D1%80%D1%80%D0%B5%D0%B9%D0%BD%D1%8B_%D0%B8_%D0%B3%D1%83%D0%BB%D0%B0%D0%B3%D0%B8 Вот кусок кода, человек как раз поясняет где и что находится. if type == "esc_bandits_smart_terrain" then t = {};-- "соеденительная секция" для логики, определяем ltx фаиломt.section = "logic@esc_bandits_smart_terrain_bandit1_walker";-- no idea, probably describes after what time;-- npc will use this job again (?)t.idle = 0;-- no idea but i guess it's optionalt.timeout = 0;-- пріоритетt.prior = 100;-- нпс будет использовать эту логику,;-- если ST переключится в это состояние;-- в этом случае - состояние 0 (день)t.state = {0};-- Какой squad и group назначится персонажу принявшему эту работу.t.squad = squadt.group = groups[1];-- no idea what means position_thresholdt.position_threshold = 100;-- описывает нпс в этом состоянии: онлайн или офлайн;-- онлайн = истина по дефолтуt.online = true;-- описывает рестрикторы (куда нпс могут/не могут пойти)t.in_rest = ""t.out_rest = "";-- ввиду особого способа присвоения работ в;-- smart_terrain.script вы никогда не знаете, какая работа;-- будет использоваться каждым нпсом; если вы хотите быть уверенным;-- что конкретный нпс взял конкретную работу, тогда;-- вам нужно заюзать предикатную функцию; в этом слуае;-- мы хотим чтобы эта работа присвоилась мастеру бандитуt.predicate = function(obj_info) return obj_info.rank >= 900 endtable.insert(sj, t) Изменено 9 Октября 2013 пользователем ColR_iT Жизнь следует измерять поступками, а не временем... Ссылка на комментарий
Хемуль36рус 1 789 Опубликовано 8 Октября 2013 Поделиться Опубликовано 8 Октября 2013 Будьте добры объясните почему происходит вот такой вылет, спавню химеру. все что не хватало дописал, теперь вот эта бяка FATAL ERROR [error]Expression : index != BI_NONE[error]Function : CParticlesPlayer::LoadParticles[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\ParticlesPlayer.cpp[error]Line : 87[error]Description : Particles bone not found[error]Arguments : bonestack trace: я вроде понимаю что это значит, но не могу понять почему оно вылезло, все партиклы на месте. Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g. Ссылка на комментарий
topdog 49 Опубликовано 8 Октября 2013 Поделиться Опубликовано 8 Октября 2013 @Хемуль36рус, очевидно в модели нет кости, на которую ссылается конфиг модели (тот, что в папке capture). 1 Ссылка на комментарий
zhuravll 2 Опубликовано 9 Октября 2013 Поделиться Опубликовано 9 Октября 2013 (изменено) поставил один из зимних модов, и понял что аномалий на белом фоне не видно совсем, как можно сделать аномалии более заметнее?Грамматические ошибки в посте.Устное предупреждение.ColR_iT Изменено 9 Октября 2013 пользователем ColR_iT Ссылка на комментарий
alexabakan0 119 Опубликовано 10 Октября 2013 Поделиться Опубликовано 10 Октября 2013 Привет всем! Собрал стволы В.О.В. как дополнение к ОП+К+МА и прописал их Бандитам в Т.Д., как говорил " Ворон",что они там раскопали склад с трафеями, в каком фаиле дополнить обмен этих стволов у него, на арты? XP Professionalx32 2048Mb 2ядра видюха NVIDIA GEFORCE 8600Gt 512 Mb Ссылка на комментарий
proper70 74 Опубликовано 10 Октября 2013 Поделиться Опубликовано 10 Октября 2013 Еще вопрос возник: Можно ли как-то отследить, что гг погиб именно от аномалии? Неважно какой, просто от аномалии? Я вижу пока только вариант проверки по расстоянию до ближайшей аномалии, но он чреват ложнгыми срабатываниями, когда гг застрелили рядом с аномалией) Есть ли какой надежный способ определить это в ТЧ? Ссылка на комментарий
Карлан 1 049 Опубликовано 10 Октября 2013 Поделиться Опубликовано 10 Октября 2013 @proper70,в оригинале нельзя, поставь x-ray extensions, там сделали коллбек отслежки того, кто хитовал ГГ, дальше дело техники. Без него нормально сделать никак не выйдет. Т.к. даже что-бы отследить тип хита нужен хит коллбек, ну а если он будет, то проще по клсиду, ну или еще как - дело вкуса. Ссылка на комментарий
RayTwitty 508 Опубликовано 12 Октября 2013 Поделиться Опубликовано 12 Октября 2013 (изменено) Можно ли как-то отследить, что гг погиб именно от аномалии?В чистом ТЧ можно при помощи методов db.actor:who_hit_name() или db.actor:who_hit_section_name(). Поставь это на скриптовый хит-колбек и смотри какой объект атаковал ГГ в последний раз (и сколько отнял здоровья). После чего, по имени получай гейм-объект и сканируй его на принадлежность к классу аномалий. З.Ы. впрочем, тут даже можно обойтись без колбека на хит - просто проверяй, что ГГ не живой (через db.actor:alive()) и смотри кто нанес последний хит. Изменено 12 Октября 2013 пользователем Shadows Ссылка на комментарий
AndrewMor 527 Опубликовано 12 Октября 2013 Поделиться Опубликовано 12 Октября 2013 Всем привет! Возник вопрос: заспавнил двух сталкеров: торговца и бармена. Они спавнятся, торгуют, говорят, все чин чинарем. Решил поменять им визуал. Вытащил модели из ЧН, скопировал текстуры, все запустилось, визуалы сменились, но почему-то с ними нельзя поговорить: надпись "Говорить (F)" не появляется. В чем может быть причина? И да, забыл написать, что при наведении прицела на этих сталкеров не появляется даже их имен. Сталкер - наше всё! Ссылка на комментарий
La'Rento 30 Опубликовано 12 Октября 2013 Поделиться Опубликовано 12 Октября 2013 Тут ты очевидно неправильно перенёс модель, а именно - кривая настройка костей. Я даже догадываюсь, по какому уроку ты переносил модельку.Воспользуйся этим уроком. http://stalkerin.gameru.net/wiki/index.php?title=MilkShape_3D._%D0%9F%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B5%D0%B9_%D0%9D%D0%9F%D0%A1_%D0%B8%D0%B7_%D0%A7%D0%9D/%D0%97%D0%9F_%D0%B2_%D0%A2%D0%A7_%D0%B8_%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%BE Ссылка на комментарий
AndrewMor 527 Опубликовано 12 Октября 2013 Поделиться Опубликовано 12 Октября 2013 La'Rento, да я пользовался другим уроком. Спасибо за ответ и ссылку, все заработало, как надо. Сталкер - наше всё! Ссылка на комментарий
Dniwe 3 Опубликовано 13 Октября 2013 Поделиться Опубликовано 13 Октября 2013 Товарищи...возник вопрос. Как реализовать динамические ответы НПСов? По поиску не нашел...пробовал делать 2 тега(на продолжение диалога и на альтернативное продолжение), но всегда выбирается только первый тег. Как иначе можно реализовать? Ссылка на комментарий
Карлан 1 049 Опубликовано 13 Октября 2013 Поделиться Опубликовано 13 Октября 2013 @Dniwe, что ты вкладываешь в понятие "динамические"? Формулируй вопрос яснее. Если тебе нужен диалог типа "Что интересного?", то тебе в dialog_manager.script, а если тебе нужна рандомная фраза, то нужно просто вызвать перед ветвлением функцию, которая рандомно выберет твои фразы, можешь поглядеть Megadeath Mod, там по моему это было. Продублирую свой вопрос из соседнего топика, там мне отвечать не хотят. Как получить стори айди собеседника?Так не выходит: function test(s1,s2) if s1:id() == (db.actor or db.actor:id()) then return s2:story_id() end return s1:story_id() --/> номер из game_story_ids end Пробовал и сразу вот так: function test(s1,s2) if s1:id() == (db.actor or db.actor:id()) then return alife():story_object(s2:story_id()) end return alife():story_object(s1:story_id()) --/> объект по sid end Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти