Perlin noise

WarCraft 3
Шум перлина на cjass

Открыть полностью...

Двумерный массив на hashtable

WarCraft 3
Библиотека предоставляет структуру Real2D, которая предоставляет методы для работы с двумерным массивом дробных чисел.

Открыть полностью...
17

Безопасное выделение hashtable

WarCraft 3
Как известно, функцию InitHashtable() можно вызывать ограниченное количество раз. Поэтому для динамического выделения нативных хеш-таблиц нужен буфер, с помощью которого можно было бы переиспользовать уже созданные хеш-таблицы. Данная библиотека предоставляет 2 метода:

Открыть полностью...

Безопасная пауза юнита

WarCraft 3
Использует BlzPauseUnitEx и делает ее похожей на обычный PauseUnit. Обычно, она использует внутренний счетчик использований, и приходится применять BlzPauseUnitEx обратно до тех пор, пока контроль юниту не вернется. Это исправляет данную "фичу".

Открыть полностью...

События игрока и юнита без дубликата событии.

WarCraft 3
Старый код пролежал 2 года в моем блоге но ни кто не узнал о нем. Поэтому решил выложить в ресурс как наработка позволяет не плодить одинаковых событии игроков.

Открыть полностью...
11

Проверка типа переменной

WarCraft 3
Хочу поделиться функцией для проверки типа переменной.

Открыть полностью...
21

[lua] Сглаженное движение

WarCraft 3
Функции и демонстрация сглаженного движения и поворота

Открыть полностью...
14

GetUnitGreenAttackBonus

WarCraft 3
Получаем значение зелёной Атаки на старших патчах

Открыть полностью...
33

wGeometry - 3D библиотека

WarCraft 3
Библиотека геометрии, реализованная на Lua в ООП формате.
Из вкусного:
  • Functions - вспомогательные функции типа обрезки и вычисления разного вида интерполяций
  • Vector3 - класс 3D вектора с перегруженными мат. операторами, поддержкой 3D конверсии из игровых структур и обратно, интерполяциями, применениями сферических оффсетов, проверок нахождения в сфере и ящике, трансформаций матриц и другое
  • Matrix3 - класс 3x3 матрицы с множеством разных конструкторов типа осей вращения и оператором перемножения
  • Matrix4 - класс 4x4 матрицы, он самый простой - с операторами сравнения и перемножения
  • Box - класс для работы с кубоидами, содержащий методы получения объёма, расширения, включения, пересечения с другими фигурами и др.
  • Sphere - класс для работы со сферами, содержащий методы получения объёма, включения, пересечения с другими фигурами и др.
  • Ray - класс для работы с лучами и получение точек пересечения с объектами
  • Camera - класс для хранения данных о камере и возможностью конвертировать оконные координаты и координаты сцены между собой
+ методы toGrid для построения фигур из сетки вершин

Открыть полностью...
8

eventDispatcher - Диспетчер Событий

WarCraft 3
Диспетчер событий, реализованный на Lua. Может работать в режиме обычного объекта или в режиме WLPM модуля (определяется автоматически).
Является одним из фундаментальных модулей при построении ахритектуры приложения. Решает проблему высокого зацепления. В основе - паттерн observer.

Открыть полностью...
15

Перемещение юнита вдоль непроходимых участков [LUA]

WarCraft 3
Функция плавного перемещения вдоль препятствий

Открыть полностью...
13

Таблица случайных чисел без повторений [LUA]

WarCraft 3
Алгоритм получения таблицы с уникальными числами в определенном диапазоне

Открыть полностью...
3

Контроль нажатых клавиш

WarCraft 3
В данный момент невозможно в одно действие проверить удерживается ли конкретная клавиша на клавиатуре или кнопка мышки, данная библиотека призвана помочь в решении проблемы.

Открыть полностью...
34

Отслеживание мышки

WarCraft 3
Статья предлагает решение старой проблемы, найти положение мышки без сторонних утилит

Открыть полностью...
13

Покраска ника в цвета

WarCraft 3
Можно использовать в карте в качестве визуальной изюминки в своем нике, меняя цвет ника прямо во время игры
» Покраска букв ника игрока в цвета
"-setcolor" далее номер игрока и далее конфигурация покраски:
[a-b] [c-d]
"a" и "c" - это номера (или индексы) нужных цветов
"b" и "d" - это номера букв

Открыть полностью...
4

Camera API

WarCraft 3
Набор функций для работы с игровой камерой.

Открыть полностью...
27

Событие на вход в воду

WarCraft 3
Алгоритм позволяющий отловить вход или выход из воды
Идея использовать цикл внутри каждого потока - nvc123
» Обновление
Теперь построение региона происходит во время инициализации карты, а не после начала игры
+ алгоритм быстрее строит регион
Карта-пример прилагается

Открыть полностью...
6

Rawcode To String

WarCraft 3
Алгоритм для преобразования численного равкода в строку с теми же символами.

Открыть полностью...
33

Новый детект физического урона на мемхаке

WarCraft 3
Более гибкий и удобный детект физического урона и не только, при помощи Мемхака
А так же система отображения зарядов на иконках способностей, не проходите мимо!

Открыть полностью...
8

Красивая математика

WarCraft 3
Небольшая наработка, где представлены два, как на мой взгляд, красивых спелла, сделанные с помощью частиц-"даммиков" и колдунством математики.

Открыть полностью...
2

Динамический поворот зданий

WarCraft 3
Функция, позволяющая задать зданию поворот во время игры. Работает за счет какой-то внутриигровой ошибки.

Открыть полностью...
7

Присоединение числа к таймеру (Timer Exploit)

WarCraft 3
Данные функции позволяют запускать таймер, присоединяя к нему число и брать это число в функции-обработчике.
Сразу скажу, что этому эксплоиту уже много-много лет, но я не заметил интенсивного его использования. Зачем тратить время, если есть данный хак ?

Открыть полностью...
5

Расчет числа однотипных предметов в инвентаре

WarCraft 3
Самая быстрая функция расчета числа однотипных предметов в шестислотном инвентаре.
работа через (GetItemTypeId(UnitItemInSlot(u, slot ))== typeId))
Ошибок нет, написано под перенасыщением мозга кровью для толстых алгоритмов дабы снизить затраты ресурсов машины.
Слабым не изучать
Возможен всплеск неконтролируемой агрессии.

Открыть полностью...
4

Проверка координат в окружности

WarCraft 3
Функции для проверки принадлежности координат к кругу.

function IsCoordsInCircle takes real x,real y,real rad,real cx,real cy returns boolean
   return (SquareRoot((cx-x)*(cy-y)) < rad)
endfunction
8

Вращение юнита в 3D от Doc

WarCraft 3
Вращение юнита в 3D.
A,B,C - углы на которые будет поворачиваться юнит в пространстве вокруг точки X1, Y1, Z1

Открыть полностью...
1

Вращение юнита в 3D

WarCraft 3
Вращение юнита в 3D.
A,B,C - углы на которые будет поворачиваться юнит в пространстве вокруг точки X1, Y1, Z1
A, B, C, X1, Y1, Z1 - глобалки.
""
function Actions2 takes nothing returns nothing
local unit u=GetEnumUnit()
local real a1
local real b1
local real a2
local real b2
local real a3
local real b3
set X2=GetUnitX(u)
set Y2=GetUnitY(u)
set Z2=GetUnitFlyHeight(u)

Открыть полностью...
15

Пересечение двух отрезков

WarCraft 3
Функия проверяет отрезки на пересечения, если они пересекаются, то функция возвращяет true и устанавливает в глобалке точку пересечения.
""
globals
real x
real y
endglobals

Открыть полностью...
4

Делим integer на три байта

WarCraft 3
Делим integer на три байта ! тоесть каждый от 0 до 255 с четвертым там могут быть проблемы со знаком, такчто пока лень проверять
cJass:
#define IntGetByte1(src) = (src / (256*256))
#define IntGetByte2(src) = (ModuloInteger(src, (256*256)) / 256)
#define IntGetByte3(src) = (ModuloInteger(src,256))
#define IntSetByte1(src,val) = { src = (ModuloInteger(src,(256*256)) + val*256*256 ) }
#define IntSetByte2(src,val) = { src = (ModuloInteger(src,256) + (src / (256*256))*256*256 + val*256) }
#define IntSetByte3(src,val) = { src = ((src / 256)*256 +val)}
позволяет хранить в 1 инте 3 коротких числа напр. цвет
P.S. спасибо Нетрату за это :) вобще тут не особо чего сложного на самом деле, но я забыл всю теорию)

Открыть полностью...