Карлан 1 050 Опубликовано 11 Августа 2016 Поскольку я полный лох в логике, то начал ее изучение с чего попроще, с монстров и рестрикторов. Сейчас репорт о хомах. Изначально вообще возьмем что это движковая фишка и схема лишь оболочка, как и паника например (ее я вообще вырезал, так как пустышка), посему, чтобы достичь корректной динамики в этой схеме можно добавить установку пляски не только вокруг путя, но и вокруг вертекса. Это делай раз. Далее меня всегда бесили "невидимые" стены выставляемые хомам, это позволяло их с легкостью убивать и добавляло им феноменальной тупости с т.з. игрока. Делай два. Итак, в движке я расширил функции сет_хом и добавил возможность установки пляски вокруг вертекса, и еще добавил функцию активен ли хом в данный момент. В скрипте переписал много всего, сейчас по порядку: 1. Добавил возможность установки пляски вокруг вертекса. 2. Удаление хома если монстр видит своего врага (еще коммент приведу : --// TODO: надо еще сделать проверку на то какой враг крутой, и если круче, чем моб, то не давать уйти в алайф, чтобы, допустим, две драных собаки не нагоняли мужика в экзе с фн ) 3. Если хом сожрал всех врагов, то у него больше нет врагов, и он по прежнему под алайфом, и нам его надо вернуть в родные степи, поэтому на апдейте хомов я просто проверяю его активную схему, наличие врага и активность самого хома, если врага нет и хома нет, то заресетить ему активную схему, она его ставит обратно без ожидания общего ресета при выходе в онлайн, то есть у нас испаряется проблема, когда хом бегает под алайфом пока не проброситься по известному пути. Теперь о колоссальных плюсах. Я добавил функцию для CSE_Abstract, которая позволяет объекту задать имя скриптом, следовательно мы можем создать рестриктор БЕЗ ЛОГИКИ, от него для хома нам нужно только имя, далее спавним сколько угодно монстров и заполняем им кастом дату (или если оверрайды не нужны то можно прямо движковый хом ставить), где устанавливаем им специальный флаг (st.obj_point = cfg_get_string (ini, section, "obj_point")) - это сид или имя объекта, в данном случае нам нужно поставить имя объекта и схема сама поставит его вереткс. Отсюда получаем возможность полностью динамически управлять хомами, и, самое главное, это никакие не костыли, а корректные расширения движка и вменяемая обвязка. Сейчас можно создать где-то 10-15 рестрикторов (без всяких community и capacity, они только ограничивают, хотя потенциально нужны для контроля), запустить в каждый рестриктор по 5-10 хомов, и далее циркулировать им кастом дату (поинт) с ресетом схемы, в результате они будут перебегать с одного места на другое не теряясь и не тупя из-за чего попало, как это было на костылях вроде in/out рестрикторов или general_lair (или как его там ). Я все проверил. Финита! А, еще забыл добавить, что я сделал функцию изменения кастом даты как для серверного, так и для игрового объекта, последняя позволяет не напрягаться лишний раз и не мучать объект пробрасывая его по известному пути. 1 Поделиться этим сообщением Ссылка на сообщение
Карлан 1 050 Опубликовано 11 Августа 2016 @Дизель, это всем адресовано. Я занимаюсь рефакторингом кода, и какие-то общеполезные вещи стараюсь фиксировать в надлежащих темах, чтобы и другие видели, и, если в этом тоже разбирались или разбираются, то могли высказать свои дополнения или какие-то исправления для моего изложения. Достаточно осознать, что в оригинале монстры не сохраняются, и копать их логику становится значительно проще. Кроме как в кампе и волкере, из используемого, ничего заумного нет, в основном движок (до которого скриптеру особого дела нет, если это не я) и немного математики (mob_kicker например). Кстати к некоторых схемах есть то самое выбрасывание в алайф если монстр почуял врага и у него нет френдли оверрайда, почему не сделали это в хоме я не понял, сразу возвратить в хом (не дожидаясь общего ресета), как я написал выше, по окончанию бойни труда не составляет, так как скриптовую логику мы ему не удаляем, она вся остается и служит нам отличным флажком, а вот движковую всю напрочь, тут да . Поделиться этим сообщением Ссылка на сообщение
Карлан 1 050 Опубликовано 14 Августа 2016 Это снова я. И снова я разбираюсь в логике. Теперь у меня на столе был sr_teleport. В общем задачи которые себе ставил, это сделать возможность делать из него аномалию, которая еще бы и объекты перебрасывала если я захочу. В общем вот так. Как оказалось все не так трудно, и даже сделать переброс на другие локации очень просто, но я пока не сделал, так как там уже надо делать всякую муторную работу по вычислению координат вручную, а тут всего делов взять левел граф и уже все работает. В движке ничего не добавлял. В оригинальной игре вроде нельзя сделать переброс обычных объектов, так как там только телепорт актора есть.Результат: Неписи на видео сразу же перемещаются обратно, так как у них рабочее время . Если будете вольных перемещать, то они там и будут оставаться. Перемещается всё, от батонов до машин.Код привести не могу, так как, исходя из предыдущего опыта, выкладывание моих работ тут остро порицается, а я ухожу на отдых. 1 1 1 Поделиться этим сообщением Ссылка на сообщение
Карлан 1 050 Опубликовано 14 Августа 2016 Карлан, а есть какой-то практический смысл от этих постов? Я думаю определенно есть. Я рассказываю о том, чем я занимаюсь и чего я добился, или планирую добиться. Если есть какие-то проблемы в реализации, то говорю и о них, если сам решить не могу - спрашиваю. В общем делюсь эмпирическим, дальше выводы каждый сам делает. Раз уж движок при этом не изменялся, почему бы и не поделиться? Кем интересно это порицается. Администрацией. Я как-то попытался, по рукам сильно дали, дальше поговорка про коня. Скорее всего на своей площадке на днях дропну, чтобы никому не мешать и никого не нервировать. Offtop. 1 3 Поделиться этим сообщением Ссылка на сообщение
Карлан 1 050 Опубликовано 26 Марта 2017 Портировал систему сквадов (ЗП -> ТЧ). Кто хочет окунуться в пучину мрака, пишите в ЛС или скайп. Тут уже придется врываться по тяжелой. Поделиться этим сообщением Ссылка на сообщение