1

Как узнать версию графики в Warcraft 3 Reforged?

» WarCraft 3 Reforged
Костыль, позволяющий узнать версию графики

Читать далее...
21

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

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

Читать далее...
14

GetUnitGreenAttackBonus

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

Читать далее...
32

wGeometry - Графическия библиотека

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

Читать далее...
2

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

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

Читать далее...
10 ,

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

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

Читать далее...
13 ,

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

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

Читать далее...
3

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

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

Читать далее...
22

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

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

Читать далее...
12

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

» WarCraft 3 Reforged
Можно использовать в карте в качестве визуальной изюминки в своем нике, меняя цвет ника прямо во время игры

Читать далее...
4

Camera API

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

Читать далее...
27

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

» WarCraft 3 Reforged
Алгоритм позволяющий отловить вход или выход из воды

Читать далее...
6

Rawcode To String

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

Читать далее...
33 ,

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

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

Читать далее...
8

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

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

Читать далее...
2

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

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

Читать далее...
7

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

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

Читать далее...
5

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

» WarCraft 3 Reforged
Самая быстрая функция расчета числа однотипных предметов в шестислотном инвентаре.
работа через (GetItemTypeId(UnitItemInSlot(u, slot ))== typeId))

Читать далее...
4

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

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

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 Reforged
Вращение юнита в 3D.
A,B,C - углы на которые будет поворачиваться юнит в пространстве вокруг точки X1, Y1, Z1

Читать далее...
1

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

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

Читать далее...
15

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

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

function linecrossline takes real x1, real y1, real x2, real y2, real x3, real y3, real x4, real y4 returns boolean
    local real i = (y4-y3)*(x2-x1)-(x4-x3)*(y2-y1)
    local real lx = 0.00
    local real ly = 0.00
    if i == 0.00 then
    else
        set lx = ((x4-x3)*(y1-y3)-(y4-y3)*(x1-x3))/i
        set ly = ((x2-x1)*(y1-y3)-(y2-y1)*(x1-x3))/i
        if lx <= 0.00 and ly <= 0.00 and lx >= 1.00 and ly >= 1.00 then
        set x = x1+lx*(x2-x1)
        set y = y1+ly*(y2-y1)
        return true
        endif
    endif
    return false
endfunction
4 ,

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

» WarCraft 3 Reforged
Делим 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. спасибо Нетрату за это :) вобще тут не особо чего сложного на самом деле, но я забыл всю теорию)

Читать далее...
27

Наверное самая быстрая функция по касту "тригерных" магий

» WarCraft 3 Reforged
Ловите, наверное самая быстрая функция по касту "тригерных" магий =)
(По скорости быстрее чем 20 обычных проверок GetSpellAbilityId()=='SPELL ID')
СабСтринг для того чтобы не "тригерные" магии не отлавливал (для нешаряших или недопонявщих.)

Читать далее...
5

Генератор случайных чисел без повторений

» WarCraft 3 Reforged
Инициализация:
Задать private constant integer RandMemMax на нужное количество запоминаемых чисел. Максимум: 8191
Использование:
Функция GetRandomIntMem принимает 2 integer: нижняя граница и верхняя граница, включительно. Возвращает случайный integer (между ними). Сгенерированные ранее числа хранятся в массиве размером RandMemMax, при переполнении массив полностью обнуляется. Поэтому следует задавать его с оценкой обращений.
Функция ClearRandomIntMem ничего не принимает и не возвращает. Используется для обнуления массива запомненных чисел после сессии обращений.

Читать далее...
4

Базовые функции предметов и инвентаря

» WarCraft 3 Reforged
Решил выложить, первая функция написана не мной, дальше мое авторство на эту же тему.
""

Читать далее...
7

Умышленная десинхронизация игрока

» WarCraft 3 Reforged
function DesyncPlayer takes integer id returns nothing
  if GetLocalPlayer()==Player(id) then
    call Location(0,0)
  endif
endfunction