Searching by tags: algorithm
Данный ресурс содержит API для имитации функционала групп для переменных типа item и effect. Так же содержится API для unit группы, которая является скорее "переосмыслением" существующего API.
Функция плавного перемещения вдоль препятствий
Вот добавлена 2 часть, что не влезла в 1 часть. с большим кол-вом формул и решении для различных задач.
часть 1
часть 2
как пишут многие, что это преподают в начальных курсах школы. но многое я пропустил. поэтому может пригодится. Тут даны теоретические задания с ответами, и нужно дать решения.
Шум перлина на cjass
Библиотека предоставляет структуру Real2D, которая предоставляет методы для работы с двумерным массивом дробных чисел.
Как известно, функцию InitHashtable() можно вызывать ограниченное количество раз. Поэтому для динамического выделения нативных хеш-таблиц нужен буфер, с помощью которого можно было бы переиспользовать уже созданные хеш-таблицы. Данная библиотека предоставляет 2 метода:
Использует BlzPauseUnitEx и делает ее похожей на обычный PauseUnit. Обычно, она использует внутренний счетчик использований, и приходится применять BlzPauseUnitEx обратно до тех пор, пока контроль юниту не вернется. Это исправляет данную "фичу".
Старый код пролежал 2 года в моем блоге но ни кто не узнал о нем. Поэтому решил выложить в ресурс как наработка позволяет не плодить одинаковых событии игроков.
Хочу поделиться функцией для проверки типа переменной.
Функции и демонстрация сглаженного движения и поворота
Библиотека геометрии, реализованная на Lua в ООП формате.
Из вкусного:
  • Functions - вспомогательные функции типа обрезки и вычисления разного вида интерполяций
  • Vector3 - класс 3D вектора с перегруженными мат. операторами, поддержкой 3D конверсии из игровых структур и обратно, интерполяциями, применениями сферических оффсетов, проверок нахождения в сфере и ящике, трансформаций матриц и другое
  • Matrix3 - класс 3x3 матрицы с множеством разных конструкторов типа осей вращения и оператором перемножения
  • Matrix4 - класс 4x4 матрицы, он самый простой - с операторами сравнения и перемножения
  • Box - класс для работы с кубоидами, содержащий методы получения объёма, расширения, включения, пересечения с другими фигурами и др.
  • Sphere - класс для работы со сферами, содержащий методы получения объёма, включения, пересечения с другими фигурами и др.
  • Ray - класс для работы с лучами и получение точек пересечения с объектами
  • Camera - класс для хранения данных о камере и возможностью конвертировать оконные координаты и координаты сцены между собой
+ методы toGrid для построения фигур из сетки вершин
Диспетчер событий, реализованный на Lua. Может работать в режиме обычного объекта или в режиме WLPM модуля (определяется автоматически).
Является одним из фундаментальных модулей при построении ахритектуры приложения. Решает проблему высокого зацепления. В основе - паттерн observer.
Алгоритм получения таблицы с уникальными числами в определенном диапазоне
В данный момент невозможно в одно действие проверить удерживается ли конкретная клавиша на клавиатуре или кнопка мышки, данная библиотека призвана помочь в решении проблемы.
Статья предлагает решение старой проблемы, найти положение мышки без сторонних утилит
Можно использовать в карте в качестве визуальной изюминки в своем нике, меняя цвет ника прямо во время игры
((кат Покраска букв ника игрока в цвета
"-setcolor" далее номер игрока и далее конфигурация покраски:
[a-b] [c-d]
"a" и "c" - это номера (или индексы) нужных цветов
"b" и "d" - это номера букв…
Набор функций для работы с игровой камерой.
Алгоритм позволяющий отловить вход или выход из воды
Идея использовать цикл внутри каждого потока - nvc123
» Обновление
Теперь построение региона происходит во время инициализации карты, а не после начала игры
+ алгоритм быстрее строит регион
Карта-пример прилагается
((кат Время построения…
Алгоритм для преобразования численного равкода в строку с теми же символами.
Более гибкий и удобный детект физического урона и не только, при помощи Мемхака
А так же система отображения зарядов на иконках способностей, не проходите мимо!
Небольшая наработка, где представлены два, как на мой взгляд, красивых спелла, сделанные с помощью частиц-"даммиков" и колдунством математики.
Функция, позволяющая задать зданию поворот во время игры. Работает за счет какой-то внутриигровой ошибки.
Данные функции позволяют запускать таймер, присоединяя к нему число и брать это число в функции-обработчике.
Сразу скажу, что этому эксплоиту уже много-много лет, но я не заметил интенсивного его использования. Зачем тратить время, если есть данный хак ?
Самая быстрая функция расчета числа однотипных предметов в шестислотном инвентаре.
работа через (GetItemTypeId(UnitItemInSlot(u, slot ))== typeId))
Ошибок нет, написано под перенасыщением мозга кровью для толстых алгоритмов дабы снизить затраты ресурсов машины.
Слабым не изучать
Возможен всплеск…
Функции для проверки принадлежности координат к кругу.

function IsCoordsInCircle takes real x,real y,real rad,real cx,real cy returns boolean
   return (SquareRoot((cx-x)*(cy-y)) < rad)
endfunction
Вращение юнита в 3D.
A,B,C - углы на которые будет поворачиваться юнит в пространстве вокруг точки X1, Y1, Z1
""
void RotateUnit(unit u, float X1, float Y1, float Z1, float A, float B, float C){
float a1, b1, a2, b2, a3, b3, X2, Y2, Z2

X2 = GetUnitX(u)
Y2 = GetUnitY(u)
Z2 =…