Byurrer 0 Опубликовано 17 Сентября 2010 Поделиться Опубликовано 17 Сентября 2010 (изменено) Garry_Galler спасибо! Но вот вопрос к твоему ответу: как я понял это идет проверка на калбэк юзанья? db.actor:set_callback(callback.use_object, this.OnUseActorObject) И вот: function OnUseObject(obj, who) Аргументы, следуя логическим размышлениям означают obj - юзенный объект, who - кто (но кто это?)? Извините за тупые вопросы но меня это интересует! Изменено 17 Сентября 2010 пользователем Byurrer Ссылка на комментарий
-=Stilet=- 0 Опубликовано 17 Сентября 2010 Поделиться Опубликовано 17 Сентября 2010 Доброго времяни суток отцы и сынки…… Помогите пожалуйста, я в ЗП создал группировку но возникли трудности члены этой группировки не дохнут и не стремятся в укрытия во время выбросов, кроме этого у них оружие изнашивается в ноль после двух трёх выстрелов.......!!!!!!! Помогите.....!!!!! Ссылка на комментарий
gruber 2 481 Опубликовано 17 Сентября 2010 Поделиться Опубликовано 17 Сентября 2010 Столько споров как удержать непися на месте,а что создать гулаг такая проблема?На мой взляд поведение нпс в гулаге намного разнообразнее и логика на все случаи жизни без проблем Ссылка на комментарий
antreg 178 Опубликовано 18 Сентября 2010 Поделиться Опубликовано 18 Сентября 2010 (изменено) Arhara, Да, всё именно так. Я же об этом и говорил, что нельзя оставлять НПС надолго под ремаркой. Обязательно надо переводить, если предполагается, что НПС уйдёт в оффлайн по сюжету, под схему волкера или кампера, напрмер. Но есть и одна хитрость: если хотите под ремаркой сделать НПС и чтобы он никуда не рыпался ни при каких обстоятельствах и опасностях, то, во-первых, можно назначить ему комьюнити торговца (trader), тогда и под ремаркой он всю игру будет игнорировать всё и вся. И во-вторых, можно создать новую группировку (дело 10 минут) без гулагов. Присвоить НПС комьюнити новой группировки и всё. Вот пример (так стоят на месте некоторые НПС в "Тайных Тропах" и никуда не уходят ни при каких обстоятельствах, так как принадлежат к комьюнити "stranger" или "trader"): [smart_terrains] none = true [dont_spawn_loot] [logic] active = remark trade = misc\trade_lektor.ltx --это, если торговец combat_ignore = combat_ignore [remark] anim = probe_2 --ну, это для примера, крутит в руках прибор, если есть, а если нет, то оружие своё рассматривает. target = actor combat_ignore_cond = always meet = meet [meet] meet_state = 10|guard@wait meet_state_wpn = 10|backoff@threat_weap victim = 10|actor victim_wpn = 10|actor use = true use_wpn = false syndata = backoff@threat_weap [combat_ignore] combat_ignore_cond = always Но есть ещё выбросы, от которых тоже легко отстраниться, зарегистрировав отдельно взятого персонажа, или же целую группировку в исключения в файле: blowout_scheme.script Вот тут: function bind_scheme(npc,storage) local evid_wounded=xr_evaluators_id.sidor_wounded_base local monolith=npc:character_community()=="monolith" local zombi=npc:character_community()=="zombied" or npc:character_community()=="trader" or npc:character_community()=="stranger" or npc:character_community()=="arena_enemy" or npc:name()=="mil_stalker0012" or npc:name()=="yantar_ecolog_general" or -- сумашедший на милитари и Сахаров npc:name()=="mil_freedom_member0021" -- Скрягу в зомби! Есть ещё масса способов оставить созданного скриптом НПС на месте. Изменено 18 Сентября 2010 пользователем antreg "Тайные Тропы 2" техподдержка "Ф.О.Т.О.Г.Р.А.Ф" техподдержка Ссылка на комментарий
-=Stilet=- 0 Опубликовано 18 Сентября 2010 Поделиться Опубликовано 18 Сентября 2010 (изменено) antreg, прошу прощение за орфографию, а если по делу сможете помоч а то я почти неделю нечё не могу найти чтоб понять как это работает (а пост уходит вверх)..... Строгое предупреждение от модератора n6260 А ты почитай учебник русского языка Считай это устным предупреждением по пункту 2.6 правил форума. Изменено 19 Сентября 2010 пользователем n6260 Ссылка на комментарий
Garry_Galler 7 Опубликовано 19 Сентября 2010 Поделиться Опубликовано 19 Сентября 2010 (изменено) Byurrer Аргумент who (в данном контексте) всегда равен юзердате ГГ, иначе и быть не может - каллбек ведь на него установлен. А вот это не проверка db.actor:set_callback(callback.use_object, this.OnUseActorObject) а установка каллбека. PS: там у меня в примере названия функций на юзанье отличаются(исправил) - надеюсь понял, что это просто по недосмотру и должны быть одинаковые. (а у меня просто перевызов идет -первая вызывает вторую, поэтому так). Изменено 19 Сентября 2010 пользователем Garry_Galler Ссылка на комментарий
-=Stilet=- 0 Опубликовано 19 Сентября 2010 Поделиться Опубликовано 19 Сентября 2010 (изменено) Хорошо то сообщение я удалил, начинаю сначала Помогите пожалуйста, я в ЗП создал группировку но возникли трудности, в том что члены моей группировки - главное не стремятся в укрытия и не дохнут под ними, (я хочу чтобы во время выброса они ломились в укрытия, а если не успевали то дохли под ним) и ещё недочёт простой но я не понимаю как его исправить всё оружие NPS новой группировки изнашивается в ноль после двух трёх выстрелов (причём этих NPS и в другие группы ставил и всё равно ломается в ноль сразу ).....!!! Добавляю С оружием разобрался , а вот с бессмертием при выбросах нет Изменено 19 Сентября 2010 пользователем -=Stilet=- Ссылка на комментарий
antreg 178 Опубликовано 21 Сентября 2010 Поделиться Опубликовано 21 Сентября 2010 Добрый день! Есть вот такая нехитрая схема логики персонажа. НПС стоит на на одном месте и к нему по сюжету несколько раз возвращаемся: ;------------------------------------- haron -------------------------------------- [logic@haron] active = walker@haron [walker@haron] path_walk = haron_walk path_look = haron_look meet = meet@haron danger = danger_ignore@haron on_actor_dist_le_nvis = 5 | remark@haron [remark@haron] anim = guard target = actor snd = haron_hello --это первый приветственный звуковой фрагмент персонажа on_signal = sound_end| remark@haron2 meet = no_meet [remark@haron2] anim = guard target = actor meet = meet@haron on_info = {+haron_burer_first} walker@haron2 [walker@haron2] path_walk = haron_walk path_look = haron_look meet = meet@haron danger = danger_ignore@haron on_info = {+haron_doktor_done} remark@haron_and_mahon [remark@haron_and_mahon] anim = guard target = actor snd = haron_and_mahon --это второй звуковой фрагмент, получаемый в определённый момент по сюжету. on_signal = sound_end| remark@haron_and_mahon2 meet = no_meet [remark@haron_and_mahon2] anim = guard target = actor meet = meet@haron on_info = {+haron_naem_start} walker@haron3 [walker@haron3] path_walk = haron_walk path_look = haron_look meet = meet@haron danger = danger_ignore@haron [danger_ignore@haron] ignore_distance = 0 [meet@haron] use = true use_wpn = true meet_talk_enabled = true Проблема в том, что первый звуковой фрагмент говорится персонажем не один раз, а постоянно. И, после того, как по сюжету (после получения заданного инфопоршня) возникает второй звуковой фрагмент, то он дальше опять же зацикливается, а точнее, эти два фрагмента теперь идут друг за другом, при каждой встрече с этим НПС, после того как актёр поговорил, вышел в оффлайн и, затем, снова возвращается в онлайн к этому НПС. Хотя, в схеме логики, после каждого этапа, присутствует переход в другую (следующую) схему walker. Что здесь не так? "Тайные Тропы 2" техподдержка "Ф.О.Т.О.Г.Р.А.Ф" техподдержка Ссылка на комментарий
gruber 2 481 Опубликовано 21 Сентября 2010 Поделиться Опубликовано 21 Сентября 2010 (изменено) antreg, А ты попробуй как в диалогах инфопоршни поставь,чтобы переход в определенный ремарк осуществлялся по наличию или отсутствию инфо(сейчас только по наличию)инфопоршни делать не надо -просто в логику их прикрутить те что есть. Там по сути всю логику кроме путей менять нужно.В активной схеме поставить условие на проверку инфопоршней и в зависимости от результата ссылать на ремарк в котором и писать условие с дистанцией ,а то в свою очередь переводило бы на ремарк со звуковой схемой.А так как есть -условие выхода из под активной схемы всегда верно при приближении актера на 5 метров [walker@haron2] path_walk = haron_walk path_look = haron_look meet = meet@haron danger = danger_ignore@haron on_info = {+haron_doktor_done,-haron_naem_start} remark@haron_and_mahon Изменено 21 Сентября 2010 пользователем gruber Ссылка на комментарий
Massaraksh 0 Опубликовано 21 Сентября 2010 Поделиться Опубликовано 21 Сентября 2010 Подскажите, пожалуйста, можно ли скриптово добавить новые консольные команды? Например, spawn; тот же jump_to_level не помешал бы для тестирований чего-нибудь... Ссылка на комментарий
RvP 1 Опубликовано 21 Сентября 2010 Поделиться Опубликовано 21 Сентября 2010 Massaraksh, только если в биндере отслеживать консоль и выполнять скриптом. Или сделать предмет\писать в гл. меню и обрабатывать скриптом Vita sine libertate, nihil Vita sine litteris - mors est Ссылка на комментарий
speczadanie 0 Опубликовано 23 Сентября 2010 Поделиться Опубликовано 23 Сентября 2010 использую мод выброса от DEXXX (из огсма) проблема в том, что созданные МНОЙ нпсы при выбросе прячутся в укрытия, а обратно возвращаться не хотят! сделал штуку - чтобы их всегда тянуло в точку спавна - через path_walk. но при возвращении они всегда застревают на полпути и начинают тупить. помогите! Строгое предупреждение от модератора n6260 Юзаем заглавные буквы. Ссылка на комментарий
Аномальный 5 Опубликовано 24 Сентября 2010 Поделиться Опубликовано 24 Сентября 2010 Пожалуйста, кто нибудь может сделать тутор, по логике НПС и мобов для ЗП? Столкнулся с такой проблемой: Прописал в смарт-терайне спавн эксклюзивного НПС-торговца, но помимо него спавнится его дубликат, только бес подгрузки логики, которую прописал для торговца, то есть он ведёт себя как обычный НПС. Где можно было тупонуть что б такое получить, больше нигде кроме торговца, спавна НПС с таким specific_character id не прописывал проверил трижды, в скаваде торговца только он. Помогите если кто сталкивался с такой проблемой, пожалуйста! К Богу не доходят ваши молитвы, так как, они похожи на спам! Ссылка на комментарий
-=Stilet=- 0 Опубликовано 27 Сентября 2010 Поделиться Опубликовано 27 Сентября 2010 Аномальный, твоя ошибка помоему в том что ты спавн поставил через смарт (в смартах спавн происходит постоянно), попробуй заспавнить через gamedata\scripts создай отдельный скрипт спавна для своего "непися", там и вводи координаты где он должен спавнится и стоять, либо в смарте напиши персональный скрип спавна для него... З.Ы. Ты темой не ошибся... Ссылка на комментарий
Аномальный 5 Опубликовано 27 Сентября 2010 Поделиться Опубликовано 27 Сентября 2010 (изменено) Темой я не ошибся, так как вопрос касался логики смарта для нпс! А в спавне смарта торговец прописан как эксклюзивный и спавниться пару раз бес определённого условия он не должен, собственно по началу так и было, а потом гдето ещё что-то не дописал и получилась такая х, и фиг знай где и ошибся. А может ли кто хоть логику волкера написать для ЗП, чтоб НПС заспавнился пошел в определённую точку и вмыкал там в опред. сторону. Потому как сам попробывал, но при загрузке локи получаю такой баг: FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : .... - Зов Припяти\gamedata\scripts\xr_motivator.script:161: attempt to index local 'smart_task' (a nil value) stack trace: Часть скрипта на которую ссылается лог: --******************************* Телепорт на первую точку пути работы смарттеррейна...***************************** local se_obj = alife():object(self.object:id()) if se_obj ~= nil then if db.spawned_vertex_by_id[se_obj.id] ~= nil then self.object:set_npc_position(level.vertex_position(db.spawned_vertex_by_id[se_ob j.id])) db.spawned_vertex_by_id[se_obj.id] = nil elseif db.offline_objects[se_obj.id] ~= nil and db.offline_objects[se_obj.id].level_vertex_id ~= nil then printf("changing position for object[%s] from %s to %s : level vertex [%s] to [%s]", se_obj:name(), vec_to_str(se_obj.position), vec_to_str(level.vertex_position(db.offline_objects[se_obj.id].level_vertex_id)) , tostring(se_obj.m_level_vertex_id), tostring(db.offline_objects[se_obj.id].level_vertex_id)) self.object:set_npc_position(level.vertex_position(db.offline_objects[se_obj.id] .level_vertex_id)) elseif se_obj.m_smart_terrain_id ~= 65535 then local smart_terrain = alife():object(se_obj.m_smart_terrain_id) if smart_terrain.arriving_npc[se_obj.id] == nil then local smart_task = smart_terrain.job_data[smart_terrain.npc_info[se_obj.id].job_id].alife_task self.object:set_npc_position(smart_task:position()) end end end Жирным выделана 161 строка. Собственно лока и группировка нпс новая может где-то и там ошибся. Вот собственно настройка смарта и его логика, там кстати в ней и спавниться торговец и механик в двойном количестве. [smart_terrain] squad_id = 13 respawn_radius = 35 spawn_point = gen_bestilia_baza_spawn_point respawn_params = respawn@gen_bestilia_baza max_population = 4 arrive_dist = 50 [respawn@gen_bestilia_baza] spawn_stalker@gen_bestilia_baza1 spawn_stalker@gen_bestilia_baza2 [spawn_stalker@gen_bestilia_baza1] spawn_squads = default_csky_squad_0, default_csky_squad_3, default_csky_squad_2 spawn_num = 2, 1 [spawn_stalker@gen_bestilia_baza2] spawn_squads = default_csky_squad_1, default_csky_squad_4 spawn_num = 2, 0 [exclusive] ;uniq gen_bestilia_barman = generators\gen_bestilia_barman_logic.ltx ;+surge gen_bestilia_remontnik = generators\gen_bestilia_remontnik_logic.ltx ;+surge gen_bestilia_anim1 = generators\gen_bestilia_baza_logic.ltx ;+surge gen_bestilia_anim2 = generators\gen_bestilia_baza_logic.ltx ;+surge gen_bestilia_kamp4 = generators\gen_bestilia_baza_logic.ltx ;Это уже пошла логика для нпс на данном смарте [animpoint@gen_bestilia] reach_movement = walk_noweap use_camp = true meet = meet@gen_bestilia [meet@gen_bestilia] close_anim = nil close_victim = nil far_anim = nil far_victim = nil close_distance = 0 far_distance = 0 use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false snd_on_use = {!dist_to_actor_le(3)} nil meet_on_talking = false ;Анимпоинты [logic@gen_bestilia_anim1] suitable = {=npc_community(csky)} true prior = 100 post_combat_time = 0, 0 active = animpoint@gen_bestilia_anim1 [animpoint@gen_bestilia_anim1]:animpoint@gen_bestilia cover_name = gen_bestilia_anim_rest_1 use_camp = false on_info1 = {=surge_started} animpoint@gen_bestilia_surge_hide1 [animpoint@gen_bestilia_surge_hide1]:animpoint@gen_bestilia cover_name = gen_bestilia_anim_surge_1 use_camp = false on_info1 = {=surge_complete} animpoint@gen_bestilia_anim1 [logic@gen_bestilia_anim2] suitable = {=npc_community(csky)} true prior = 100 post_combat_time = 0, 0 active = animpoint@gen_bestilia_anim2 [animpoint@gen_bestilia_anim2]:animpoint@gen_bestilia cover_name = gen_bestilia_anim_rest_2 [logic@gen_bestilia_kamp4] suitable = {=npc_community(csky)} true prior = 100 post_combat_time = 0, 0 active = walker@gen_bestilia_kamp4 [walker@gen_bestilia_kamp4] path_walk = gen_bestilia_kamp4_walk path_look = gen_bestilia_kamp4_look use_camp = true meet = meet@gen_bestilia Собственно анимпоинты работают нормально, а вот волкер ругается Изменено 27 Сентября 2010 пользователем Аномальный К Богу не доходят ваши молитвы, так как, они похожи на спам! Ссылка на комментарий
Arhara 32 Опубликовано 27 Сентября 2010 Поделиться Опубликовано 27 Сентября 2010 antreg, Вы забыли ещё одно... Монстры... Ни торговцы, не стрейнджеры, ни прочие - для них не играют роли. Есть только актор и НПС, и ещё - логика самих монстров. К тому же, если создать стрейнджера или торговца - он останется им до тех пор, пока Вы не заспавните нового и не удалалите старого. Но есть способы у ПЫС - сделать реального сталкера интактным ко всему, кроме враждебных группировок, не переспавня модельку. Согласен - многое можно сделать, почитерив с группировками гораздо проще, чем мухлевать с враждой бандитов с бандитами и прочими прибамбасами. Также и с монстрами. Кстати - у них - неплохая логика, тупее, чем у ПНС, но вполне достойная. К сожалению - ни в одном моде я этого не видел. Но - ждать осталось недолго.... Добавлено через 3 мин.: gruber, Вы зря ударились в ремарки. Посмотрите архивы сталка - есть пару челов с этой логикой в виде активной. Это Волк, а второй - полураненый с бензоколонки с ТД. Действия второго, зачисленного ПЫС в один гулаг с кровососом всем известны. Добавлено через 4 мин.: Аномальный, Я не знаю ЗП. Но знаю другое - если эксклюзивный чел в гулаге - прописывайте респавн на одного меньше, чем бойцов в гулаге, а самого чела - выделяйте в самом гулаге. Если сложно - просто прописывайте его вне гулага со своей логикой. Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка Ссылка на комментарий
Аномальный 5 Опубликовано 27 Сентября 2010 Поделиться Опубликовано 27 Сентября 2010 (изменено) Arhara, спасибо за совет, теперь понял от куда проблема двойников! Но собственно не в том основная проблема, что спавнится несколько НПС одной айди, это можно обойти несколькими способами, более серьёзная проблема это вылет из-за логики волкера! А поточнее что такое smart_task, где его прописать или от куда оно берётся? Изменено 27 Сентября 2010 пользователем Аномальный К Богу не доходят ваши молитвы, так как, они похожи на спам! Ссылка на комментарий
Arhara 32 Опубликовано 27 Сентября 2010 Поделиться Опубликовано 27 Сентября 2010 Аномальный, Не может спавниться более одного и того же СИДа - сразу получите вылет. Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка Ссылка на комментарий
Gektor 0 Опубликовано 28 Сентября 2010 Поделиться Опубликовано 28 Сентября 2010 (изменено) Здравие желаю товарищи. У меня возник вопрос: можно ли в тенях чернобыля скриптово вывести на глобальную карту всех npc в определенном радиусе от гг на определенное время. Риализуемо ли это вообще. Зарание спасибо. // Реализуемо. Пожалуйста. Министр. А каким образом? Изменено 30 Сентября 2010 пользователем Gektor Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий
Аномальный 5 Опубликовано 28 Сентября 2010 Поделиться Опубликовано 28 Сентября 2010 (изменено) Arhara, дело в том что может! Собственно если отключить логику волкера то всё нормально работает, спавнятся 3-и бойца и 2-а торговца и 2-ремонтника, количество респавненых у меня 5-ь повидимо недостаток бойцов восполняется эксклюзивными, по твоей теории выше! Анимпоинты пашут нормально, к тому же группировка торговца и ремонтника отличительная от бойцов и они не берут участь в общей логике, так как она написана только для группировки csky. Если надо могу сделать скрины клонов! Нажаль, Arhara, твой совет по поводу уменьшения жителей не помог, попробывал заспавнить торговца не через логику смарта, а через аллспавн и всё равно есть клон! Можешь глянуть логику торговца может в ней "собака зарыта" [logic@gen_bestilia_barman] suitable = {=check_npc_name(gen_bestilia_barman)} true trade = misc\trade\trade_gen_bestilia_barman.ltx prior = 100 active = animpoint@gen_bestilia_barman can_select_weapon = false level_spot = trader [animpoint@gen_bestilia_barman] cover_name = gen_bestilia_baza_animpoint_gen_bestilia_barman look = true look_x = -66.38061523438 look_z = 66.3476363420486 look_y = 66.94204711914 avail_animations = animpoint_stay_table_no_rnd use_camp = false meet = meet combat_ignore_cond = true combat_ignore_keep_when_attacked = true invulnerable = true gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false [meet] close_anim = nil close_victim = nil far_anim = nil far_victim = nil close_distance = 0 far_distance = 0 close_snd_distance = 3 abuse = false use = {=actor_enemy} false, true allow_break = false meet_on_talking = false Изменено 28 Сентября 2010 пользователем Аномальный К Богу не доходят ваши молитвы, так как, они похожи на спам! Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти