Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 30 Января 2015 Это популярное сообщение. Поделиться Опубликовано 30 Января 2015 (изменено) Судя по регулярно происходящему в других темах - таки нужна.Вот здесь как раз можете спросить про "зачем создали эту тему ?" А также про ООП, про как заниматься моддингом и его устарелости неустарелости, кто как его себе представляет и т.д. В общем, для много слов "обо всем". Что в более специализированные темы не лезет, но поговорить давно хотелось и хочется. Но таки да, пп 2.0, 2.1 и даже 2.5 правил здесь вполне таки действуют. Изменено 30 Января 2015 пользователем Dennis_Chikin 5 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Expropriator 2 118 Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 Вылет аи-сетки по компиляции упирался в мах. память оперативы или в `3Gb? Что то я запамятовал. Надо как то научить нпс видить ГГ когда он не на сетке. Монстры же видят его, например Химера, легко вылетает за пределы сетки в атаке на ГГ. Ссылка на комментарий
Змея 240 Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 Просто имхо движок при имеющихся параметрах прыжка химеры не справляется с просчетом того, где она окажется после прыжка. Как результат - либо она приземляется на сетку, либо потом мы видим распространенный вылет - "зверушка зашла не туда". Ссылка на комментарий
Expropriator 2 118 Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 @Змея, в движке ЗП видел химеру, вне аи сетки, забуксовавшую, после того как она прыгнула на ГГ, когда тот был вне аи сетке. Вылета не было. Я, будучи ГГ, подходил к химере и она еще умудрялась кусаться. А может я уже вру на счет кусачести, но остальное правда. Ссылка на комментарий
Змея 240 Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 Сохранялся - загружался в этот момент? Ссылка на комментарий
Expropriator 2 118 Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 @Змея, давно было не помню про сохранки. Это было дело на новой локации, которую я тестировал, потому я там аи-сетку знал хорошо где и как. Короче, я решил не делать в русле реки аи-сетку. Проходя мимо химеры по воде, я и напоролся на такой прыжок. Ссылка на комментарий
Malandrinus 615 Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 23 hours ago, НаноБот said: проверять проходимость габарита НПС надо, хотя бы чтобы непыси не упирались в вдруг друга Размер ячейки сетки в 0.7 метра (если правильно помню) очевидно выбран с учётом габаритов человека в плане. Если неписи ходят по сетке, то пересекаться не должны. А если они упираются друг в друга, то это никакого отношения к габаритам не имеет, а является дефектом алгоритма навигации, когда не учитывается занятость ячейки сетки. К сожалению, иногда размера ячейки не хватает для габаритов существа в плане, например для псины в плане, отчего зад псины и может залезть в стену. Но тут уж ничего не поделать. Хотя может и можно что-то поделать, если при навигации занимать не одну, а две ячейки. В конце концов, есть и крупные монстры, типа псевдогиганта, которые явно крупнее одной ячейки. А может там так и делается, я не разбирался в этой части движка. Алгоритмы для этого давно есть и использовались ещё в доисторических играх, где клетки для перемещения были видны явно (типа пошаговой UFO). Там существовали юниты, занимающие 4 клетки, и это учитывалось при навигации (например, они не пролезали в дверь). Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
НаноБот 742 Опубликовано 18 Августа 2018 Поделиться Опубликовано 18 Августа 2018 Не знаю, не знаю, трассировкой можно надёжно пофиксить эти проблемы, трассировка занимает 20000-40000 тактов в среднем, я проверял. Так что это не так уж ресусоёмко. Так же смог пофиксить проблему стрельбы НПС по динамичным объектам, ХЕН смог сбить вертолёт, который летит со скоростью 30 м/с, на дистанции метров 150-200. Надо лишь наведения на цель апдейтить в режиме фастапдейт, а так же рассчитывать упреждения. Я это всё сделал, конечно для XRayExtensions. 1 ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Ссылка на комментарий
Expropriator 2 118 Опубликовано 20 Октября 2018 Поделиться Опубликовано 20 Октября 2018 Как добавить в игру Сталкер второй фонарик, что бы он был с тем же классом, но с новыми характеристиками? Ссылка на комментарий
НаноБот 742 Опубликовано 28 Декабря 2018 Поделиться Опубликовано 28 Декабря 2018 (изменено) Столкнулся с одной проблемой. Делаю салют для сталкера, т.е. салютная установку стреляет люсткугелями, которые взлетев на определённую высоту, взрываются и разбрасывают звёздки. Звёздки на классе взрывчатки, партиклы скриптовые. Так вот, через некоторое время следует вылет, исключение в файле DetailManager_VS.cpp, строка 203, нулевой указатель, это ТЧ. Так же вылет и в ЗП, переполнения стека. Я так понял, это происходит из-за неправильного вызова деструктора партиклов, да именно партиклы виноваты, и скорей всего Lua виноват, по идеи, должна быть функция деструктора партиклов, в противовес конструктора particles_object, но её нет, вроде как деструктор должен вызываться автоматически, не знаю, может и вызывается, но точно делает это не правильно. Вывод, языки у которых деструкторы вызываются автоматически, говно, например жаба. Ассемблер форева. Изменено 28 Декабря 2018 пользователем НаноБот ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Ссылка на комментарий
Malandrinus 615 Опубликовано 30 Декабря 2018 Поделиться Опубликовано 30 Декабря 2018 On 12/28/2018 at 5:27 PM, НаноБот said: языки у которых деструкторы вызываются автоматически, говно, например жаба. Ассемблер форева. С чем бы это сравнить. Вот представь себе компанию, массово производящую автомобили, Mercedes или там GM. Сотни инженеров, месяцами работающие над каждой деталью, сложнейшая логистика, высочайший уровень автоматизации и прочее в этом роде. Теперь приходит такой механик из сельской автомастерской и говорит: "Гавно эти ваши инженеры и роботы. Напильник, молоток и гаечный ключ форева." 1 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
НаноБот 742 Опубликовано 30 Декабря 2018 Поделиться Опубликовано 30 Декабря 2018 @Malandrinus, да я пошутил. Но реально, партиклы в Lua автоматически не удаляются, требуется сделать функцию particle_destroy(obj), само не удаляется. ...в конце концов, важен лишь, машинный код. СТАЛКЕР только для ПК! Ссылка на комментарий
dsh 3 824 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 Кто в физике/математике разбирается, подскажите пожалуйста, как рассчитать силу, которую нужно приложить к гранате по трем осям, что бы она долетела до указанной точки? Чую, ускорение свободного падения тут участвует. Может @abramcumner подскажет? dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Опричник 5 337 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 @dsh, Это баллистика уважаемый. В 1945 году, для таких расчётов американцы специальную машину построили. ENIAC назывался. Так что расчёты эти, как я понимаю весьма не просты. Desktop: i7-11700k/Gigabyte Z590 D/64 Гб DDR4-3600 (2х32Гб)/GTX 1070Ti 8Гб/30" WQXGA+24" WUXGA (portrait)/ADATA Legend 960 4 Тб + 4HDD (17 Тб)/Thermaltake smart BM2 - 650Вт/Win10+QtTab \\\ Дополнения к ОГСЕ 0693 /// \\\ OGSRmod ///\\\АМК-дискорд///\\\Балкон/// Ссылка на комментарий
abramcumner 1 159 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 (изменено) 3 часа назад, dsh сказал: Кто в физике/математике разбирается, подскажите пожалуйста, как рассчитать силу, которую нужно приложить к гранате по трем осям, что бы она долетела до указанной точки? Чую, ускорение свободного падения тут участвует. Может @abramcumner подскажет? Именно силу? А то еще Галилей открыл, что гранаты летают по инерции(в полете на них не действуют никакие силы кроме силы тяжести). Граната отправляется в полет со скоростью V, которую приобретает за время маха. Можно задать через импульс(m * V). По x и z равномерное движение со скоростями Vx и Vz, формула S = V * t -> t = S / V По y равноускоренное движение S = V * t - g * t * t / 2 -> t = V +- sqrt(V * V - 2 * g * S) / g В точке назначения граната должна оказать одновременно по все трем осям одновременно, получается: Sx / Vx = Sz / Vz = Vy -+ sqrt(V * V - 2 * g * Sy) / g Выбираешь значение скорости по любой оси и вычисляешь значения для остальных двух. Если задать условие, чтобы запускать гранату с наименьшей скоростью, у меня получилось такие формулы: Vx,z = Sx,z * sqrt(g / D) / 2, Vy = (Sy + 2 * D) * sqrt(g / D) / 2, где D - расстояние до указанной точки. По идее в АМК должны быть те же самые формулы - там же пускали гранаты. 2 часа назад, W.A.S.P. сказал: Так что расчёты эти, как я понимаю весьма не просты. Шел 2019 год... Изменено 5 Января 2019 пользователем abramcumner 4 Ссылка на комментарий
dsh 3 824 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 3 minutes ago, abramcumner said: там же пускали гранаты Там эмпирически подобранные константы: local bone = get_grenade(id):get_physics_shell():get_element_by_bone_name("wpn_body") local dir=utils.vector_copy_by_val(target):sub(get_grenade(id):position()) dir:mul(1300) if typ=="lo" then dir:add(vector():set(0,8000,0)) else dir:add(vector():set(0,19000,0)) end if bone then bone:apply_force(dir.x,dir.y,dir.z) end 5 minutes ago, abramcumner said: Vx,z = Sx,z * sqrt(g / D) / 2, Vy = (Sy + 2 * D) * sqrt(g / S) / 2, где D - расстояние до указанной точки. Мне кажется, что в этих формулах еще должна как-то учитываться масса гранаты? А понял, скорость по каждой оси еще нужно умножить на массу гранаты? Не могу понять, что в формулах обозначает S? dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
ed_rez 16 109 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 10 минут назад, dsh сказал: то в формулах обозначает S? Дык это, расстояние же. Или что-то не так понял!? 1 Ссылка на комментарий
abramcumner 1 159 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 (изменено) 19 минут назад, dsh сказал: Не могу понять, что в формулах обозначает S? Sx = dest.x - pos.x, dest - координаты точки назначения, pos - координаты точки отправления. Sy = dest.y - pos.y, Sz = dest.z - pos.z. Просто S - это непереименованная D = dest.distance(pos). Мне кажется, что в этих формулах еще должна как-то учитываться масса гранаты? А понял, скорость по каждой оси еще нужно умножить на массу гранаты? Да, если задавать через импульс, надо еще на массу умножить. Изменено 5 Января 2019 пользователем abramcumner Ссылка на комментарий
dsh 3 824 Опубликовано 5 Января 2019 Поделиться Опубликовано 5 Января 2019 3 hours ago, abramcumner said: Sx = dest.x - pos.x Т.е. переводя все на lua получается local D = src:distance_to( dst ) local g = 2 * 9.81 local S = vector():sub( dst, src ) local Vx = S.x * math.sqrt( g / D ) / 2 local Vz = S.z * math.sqrt( g / D ) / 2 local Vy = ( S.y + 2 * D ) * math.sqrt( g / D ) / 2 Правильно? 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
dsh 3 824 Опубликовано 6 Января 2019 Поделиться Опубликовано 6 Января 2019 @abramcumner, не, не получается. Вот такой вот код local target = vector():mad( obj_pos, db.actor:direction(), 25 ) local D = obj_pos:distance_to( target ) local g = 2 * 9.81 local Sx = target.x - obj_pos.x local Sy = target.y - obj_pos.y local Sz = target.z - obj_pos.z local Vx = Sx * math.sqrt( g / D ) / 2 local Vz = Sz * math.sqrt( g / D ) / 2 local Vy = ( Sy + 2 * D ) * math.sqrt( g / D ) / 2 local mass = 1300 Vx = Vx * mass Vy = Vy * mass Vz = Vz * mass bone:apply_force( Vx, Vy, Vz ) Граната больше летит вверх, чем вперед. Вверх она улетает на 7.6 метра, а вперед только на 8.6. Если поставить в mass obj:mass(), которая 12, то вообще не летит, а только чуть подпрыгивает. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Это популярное сообщение. abramcumner 1 159 Опубликовано 7 Января 2019 Это популярное сообщение. Поделиться Опубликовано 7 Января 2019 (изменено) Вот такой код у меня запускает гранату точно к ногам ГГ. Исправил формулу для расчета скорости И добавил разгон до этой скорости путем приложения силы. --! Запускает гранату к ногам ГГ --! @param id - id гранаты function throw_to_actor(id) local obj = level.object_by_id(id) local target = db.actor:position() local obj_pos = obj:position() local mass = obj:mass() local D = obj_pos:distance_to( target ) local g = 2 * 9.81 local Sx = target.x - obj_pos.x local Sy = target.y - obj_pos.y local Sz = target.z - obj_pos.z local mul = math.sqrt( g / (2 * D) ) local Vx = Sx * mul local Vz = Sz * mul local Vy = Sy * mul + g / mul / 2 -- Чтобы разогнать гранату до нужной скорости прикладываем к гранате силу на один шаг просчета физики local fixed_step = 0.01 -- шаг расчета физики, обратное значение можно получить из консольной команды ph_prequency local fx = Vx / fixed_step * mass local fy = Vy / fixed_step * mass local fz = Vz / fixed_step * mass local pshell = obj:get_physics_shell () pshell:apply_force( fx, fy, fz ) end Изменено 7 Января 2019 пользователем abramcumner 4 2 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти