mortan 143 Опубликовано 4 Мая 2017 Поделиться Опубликовано 4 Мая 2017 @trantat, ну если гнаться за "универсальным" приёмом то далеко не уедешь если ты не скриптовый гуру. В любом случае я думаю это ещё кому-нибудь да пригодится. В скриптах увы ничем не могу помочь. Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 5 Мая 2017 Поделиться Опубликовано 5 Мая 2017 (изменено) @Shkiper2012, Только что попробовал твой код, нажимаю T - cкорость уменьшается, но все равно большая. Я бы хотел добиться скорости приблизительную к скорости ходьбы. Пробовал изменять значение переменной на local distant_step = 0.1 и получаю , когда ГГ летит не по направлению взгляда. Видать не получится у меня ничего, ну и на том всем спасибо. Изменено 5 Мая 2017 пользователем TIGER_VLAD Ссылка на комментарий
WinCap 316 Опубликовано 6 Мая 2017 Поделиться Опубликовано 6 Мая 2017 (изменено) @TIGER_VLAD, Я тоже пытался реализовать функцию полета через db.actor:set_actor_position() и получил такой же результат как у Вас. Скорее всего, это происходит из-за того что функция set_actor_position() корректирует передаваемые ей координаты на коллизию с объектами, что при малых значениях delta и дает наблюдаемый нами эффект. В итоге, чтобы добиться малой скорости полета независимой от FPS пришлось перенести функцию полета в движок. Изменено 6 Мая 2017 пользователем WinCap 1 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Stalkeruga_238 2 Опубликовано 7 Мая 2017 Поделиться Опубликовано 7 Мая 2017 Подскажите, почему когда я пишу верные координаты при спавне нпс через allspawn он появляется в другом месте... пс: упд коорды и просто коорды указаны верно, проверял раз 5... Ссылка на комментарий
Serge! 127 Опубликовано 7 Мая 2017 Поделиться Опубликовано 7 Мая 2017 пишу верные координаты Может дело в том, откуда Вы получили/взяли эти самые верные координаты? Вдруг они и не такае уж и верные? Других причин вроде быть не должно. Ссылка на комментарий
UnLoaded 313 Опубликовано 7 Мая 2017 Поделиться Опубликовано 7 Мая 2017 почему когда я пишу верные координаты при спавне нпс через allspawn он появляется в другом местеОткуда уверенность, что спавн происходит не по координатам ? И насколько это - в другом месте ? Из вариантов: непись может просто успевает свалить с точки спавна(такое возможно в зависимости от прописанной неписю логики\ее отсутствия), для непися выставлены флаги спавна с привязкой к AI-сетке - движок его подвинет к ближайшей ноде, если точка задана не на сетке. 1 Ссылка на комментарий
Stalkeruga_238 2 Опубликовано 8 Мая 2017 Поделиться Опубликовано 8 Мая 2017 @UnLoaded, Коорды ставил около перехода на свалку а непись появляется за жд насыпью со стороны сидора... @UnLoaded, Забыл сказать что непись мертвый. Ссылка на комментарий
UnLoaded 313 Опубликовано 8 Мая 2017 Поделиться Опубликовано 8 Мая 2017 @Stalkeruga_238Попробуй на него метку поставить, и после начала НИ по наблюдай за меткой... Ссылка на комментарий
hi_flyer 75 Опубликовано 15 Мая 2017 Поделиться Опубликовано 15 Мая 2017 (изменено) Подскажите для ТЧ скриптовый аналог функции use_ai_locations. Если не ошибаюсь, через нет-пакеты этот флаг можно править. Изменено 15 Мая 2017 пользователем hi_flyer Ссылка на комментарий
dsh 3 824 Опубликовано 15 Мая 2017 Поделиться Опубликовано 15 Мая 2017 @hi_flyer, под ТЧ что ты понимаешь? В x-ray extensions есть этот метод. Если тебе нужно именно через нетпакет, то вот код, который я некоторое время использовал function clear_used_ai_locations( sobj ) local pk = get_netpk( sobj, 1 ) if pk and pk:isOk() then local data = pk:get() data.object_flags = bit_and( data.object_flags, bit_not( object_flags.UsedAI_Locations ) ) pk:set( data ) end end dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
hi_flyer 75 Опубликовано 15 Мая 2017 Поделиться Опубликовано 15 Мая 2017 @dsh, Исходники (не x-ray extensions). Спасибо, то что нужно. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 18 Мая 2017 Поделиться Опубликовано 18 Мая 2017 (изменено) Так, что-то я туплю совсем. Есть два костра, с разными путями. Пути прописаны в секциях логики kamp1 и kamp2. Между ними гоняется непись. Инициализация непися выглядит так: function add_to_binder( npc, ini, scheme, sect, st ) local nm = npc:name() -- log( "info", "add_to_binder, %s...", nm ) local kamp_end = xr_evaluators_id.stohe_kamp_base + 1 local on_pos = xr_evaluators_id.stohe_kamp_base + 2 local mgr = npc:motivation_action_manager() mgr:add_evaluator( kamp_end, evaluator_kamp_end( "kamp_end", st, sect ) ) mgr:add_evaluator( on_pos, evaluator_on_position( "kamp_on_position", st, sect ) ) local a = action_wait( nm, "action_kamp_wait", st ) a:add_precondition( world_property( stalker_ids.property_alive, true ) ) a:add_precondition( world_property( stalker_ids.property_danger, false ) ) a:add_precondition( world_property( stalker_ids.property_enemy, false ) ) -- a:add_precondition( world_property( stalker_ids.property_anomaly, false ) ) xr_motivator.addCommonPrecondition( a ) a:add_precondition( world_property( on_pos, true ) ) a:add_effect( world_property( kamp_end, true ) ) mgr:add_action( xr_actions_id.stohe_kamp_base + 3, a ) subscribe_action( npc, st, a ) a = action_go_position( nm, "action_go_kamp", st ) a:add_precondition( world_property( stalker_ids.property_alive, true ) ) a:add_precondition( world_property( stalker_ids.property_danger, false ) ) a:add_precondition( world_property( stalker_ids.property_enemy, false ) ) -- a:add_precondition( world_property( stalker_ids.property_anomaly, false ) ) xr_motivator.addCommonPrecondition( a ) a:add_precondition( world_property( on_pos, false ) ) a:add_effect( world_property( on_pos, true ) ) mgr:add_action( xr_actions_id.stohe_kamp_base + 1, a ) a = mgr:action( xr_actions_id.alife ) a:add_precondition( world_property( kamp_end, true ) ) end Если случается ивент "disable", неписю делается следующее: local kamp_end = xr_evaluators_id.stohe_kamp_base + 1 local on_pos = xr_evaluators_id.stohe_kamp_base + 2 local mgr = npc:motivation_action_manager() -- todo: слишком сложно. ПРОСТО оторвать лишние эвалюаторы СОВСЕМ. Оставить все в одном. local a = mgr and mgr:action( xr_actions_id.alife ) if a then a:remove_precondition( kamp_end ) else log( "warning", "(%s):removeNpc, no action (alife) (%s)", self.center_point, npc:name() ) end a = mgr:action( xr_actions_id.stohe_kamp_base + 3 ) if a then xr_logic.unsubscribe_action_from_events( npc, st, a ) mgr:remove_action( xr_actions_id.stohe_kamp_base + 3 ) -- log( "info", "(%s):removeNpc, %s, 2", self.center_point, npc:name() ) else log( "warning", "(%s):removeNpc, no action (action_kamp_wait) (%s)", self.center_point, npc:name() ) end mgr:remove_action( xr_actions_id.stohe_kamp_base + 1 ) -- log( "info", "(%s):removeNpc, %s, 3", self.center_point, npc:name() ) mgr:remove_evaluator( kamp_end ) -- mgr:add_evaluator( kamp_end, property_evaluator_const( true ) ) mgr:remove_evaluator( on_pos ) -- mgr:add_evaluator( on_pos, property_evaluator_const( true ) ) И, с новым сторейжем, опять дергается function add_to_binder() Вот какого он продолжает выполнять action_go_position:execute(), благополучно пропустив action_go_position:initialize() ? И как ему все-таки сказать, что вообще-то надо бы action_go_position:initialize() все-таки сделать ? p.s. Зачем такие сложности ? По тому что без этого в какой-то момент начинается вообще адова каша: какая схема по какому эвалюатору дергается, и с чьим сторэйжем - черт ногу сломит. Изменено 18 Мая 2017 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Bak 755 Опубликовано 19 Мая 2017 Поделиться Опубликовано 19 Мая 2017 В планировщике не предусмотрена возможность замены экшна во время выполнения, соответственно эти твои хаки на него впечатления не производят. Вызов finalize initialize происходит только при переключении на другой экшн, а для этого нет оснований.(идентифицируется он, ясное дело, по id) p.s. Ну и конечно это вот колдунство с планировщиком для решения банальной задачи реинициализации схемы выглядит, мягко говоря, странно. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 19 Мая 2017 Поделиться Опубликовано 19 Мая 2017 Адекватное решение - это вообще не плодить экшены, которые можно не плодить, да. Раз уж оно именно так сделано. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 22 Мая 2017 Поделиться Опубликовано 22 Мая 2017 Тэкс, граждане... А кто ТОЧНО знает, в чем смысл *:net_save_relevant() ? Это, часом, не средство сказать, что объект МОЖНО сохранять, а иначе - НИ-НИ ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
dsh 3 824 Опубликовано 22 Мая 2017 Поделиться Опубликовано 22 Мая 2017 @Dennis_Chikin, если я ничего не путаю, то true из этого метода говорит движку, что бы он сохранял клиентский объект при его переходе в оффлайн. Иначе, только при сейве в онлайне. Могу напутать, т.к. давно это смотрел. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 22 Мая 2017 Поделиться Опубликовано 22 Мая 2017 (изменено) При переходе в офлайн он его не сохраняет совершенно точно В ПРИНЦИПЕ. В смысле, хоть true, хоть false, хоть эпическая поэма. А вот будет ли объект сохраняться при false при сэйве - если да, то смысл этой шняги как раз в том, чтобы не сохранять в сэйв что-нибудь странное типа имени "" для ltx. Изменено 22 Мая 2017 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
dsh 3 824 Опубликовано 22 Мая 2017 Поделиться Опубликовано 22 Мая 2017 @Dennis_Chikin, у меня осталось в памяти впечатление, что оно делалось для того, что бы сохранять/не сохранять при переходе в оффлайн. Ну а то, как оно работает - это уже второй вопрос. Оно не только в этом вопросе работает совсем не так, как задумывалось и декларировалось. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
7.9 174 Опубликовано 24 Мая 2017 Поделиться Опубликовано 24 Мая 2017 (изменено) Что это может быть, если:делаю 1: get_hud():AddCustomStatic()делаю 2: wnd():AttachChild()здесь ГГ получает хит от собаки ("разрыв")делаю 3: wnd():DetachChild()Но "3" уже не работает, скрипт виснет. Нет хита -- работает. При других хитах -- работает. Чем рисование "разрыва" отличается от рисования других хитов? Изменено 24 Мая 2017 пользователем 7.9 всё легко Ссылка на комментарий
HellRatz 2 892 Опубликовано 27 Мая 2017 Поделиться Опубликовано 27 Мая 2017 Господа, никто не поделится функцией перетаскивания всех имеющихся у ГГ предметов в именной ящик с уникальным стори айди? GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти