Поиск по меткам: Алгоритм
Диспетчер событий, реализованный на Lua.
Является одним из фундаментальных модулей при построении ахритектуры приложения. Решает проблему высокого зацепления. В основе - паттерн observer
Алгоритмы, Наработки и Способности
23 1.8K
Библиотека геометрии, реализованная на Lua в ООП формате.
Из вкусного:
  • Functions - вспомогательные функции типа обрезки и вычисления разного вида интерполяций
  • Vector3 - класс 3D вектора с перегруженными мат. операторами, поддержкой 3D конверсии из игровых структур и обратно, интерполяциями, применениями сферических оффсетов, проверок нахождения в сфере и ящике, трансформаций матриц и другое
  • Matrix3 - класс 3x3 матрицы с множеством разных конструкторов типа осей вращения и оператором перемножения
  • Matrix4 - класс 4x4 матрицы, он самый простой - с операторами сравнения и перемножения
  • Box - класс для работы с кубоидами, содержащий методы получения объёма, расширения, включения, пересечения с другими фигурами и др.
  • Sphere - класс для работы со сферами, содержащий методы получения объёма, включения, пересечения с другими фигурами и др.
  • Ray - класс для работы с лучами и получение точек пересечения с объектами
  • Camera - класс для хранения данных о камере и возможностью конвертировать оконные координаты и координаты сцены между собой
+ методы toGrid для построения фигур из сетки вершин
Алгоритмы, Наработки и Способности
35 4.6K
Данные функции позволяют запускать таймер, присоединяя к нему число и брать это число в функции-обработчике.
Сразу скажу, что этому эксплоиту уже много-много лет, но я не заметил интенсивного его использования. Зачем тратить время, если есть данный хак ?
Алгоритмы, Наработки и Способности
7 8.5K

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

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

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

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

function IsCoordsInCircle takes real x,real y,real rad,real cx,real cy returns boolean
   return (SquareRoot((cx-x)*(cy-y)) < rad)
endfunction
Алгоритмы, Наработки и Способности
4 2.8K

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

Вращение юнита в 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 =…
Алгоритмы, Наработки и Способности
8 4.1K

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

Вращение юнита в 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…
Алгоритмы, Наработки и Способности
1 2.3K

Изменить максимальные HP юниту

""
function SetUnitMaxLife takes unit u, real life returns nothing
local real r = life - GetUnitState(u, UNIT_STATE_MAX_LIFE)
if r > 0. then
if r > 1000. then
loop
call UnitAddAbility(u, 'A005')
call SetUnitAbilityLevel(u, 'A005', 0x05)
call UnitRemoveAbility(u, 'A005')…
Алгоритмы, Наработки и Способности
11 8.3K

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

Функия проверяет отрезки на пересечения, если они пересекаются, то функция возвращяет 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…
Алгоритмы, Наработки и Способности
15 3.4K

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

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

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

Ловите, наверное самая быстрая функция по касту "тригерных" магий =)
(По скорости быстрее чем 20 обычных проверок GetSpellAbilityId()=='SPELL ID')
СабСтринг для того чтобы не "тригерные" магии не отлавливал (для нешаряших или недопонявщих.)
""
function SpellCast takes nothing returns boolean
local string…
Алгоритмы, Наработки и Способности
27 8.8K

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

Инициализация:
Задать private constant integer RandMemMax на нужное количество запоминаемых чисел. Максимум: 8191
Использование:
Функция GetRandomIntMem принимает 2 integer: нижняя граница и верхняя граница, включительно. Возвращает случайный integer (между ними). Сгенерированные ранее числа…
Алгоритмы, Наработки и Способности
5 7.1K
Решил выложить, первая функция написана не мной, дальше мое авторство на эту же тему.
""
возвращает true если итем it есть у юнита u
function IsItemInInventory takes unit u, integer it returns boolean
local integer i = 0
loop
exitwhen i > 5 or GetItemTypeId(UnitItemInSlot(u, i)) == it
set i = i…
Алгоритмы, Наработки и Способности
3 3.5K

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

function DesyncPlayer takes integer id returns nothing
  if GetLocalPlayer()==Player(id) then
    call Location(0,0)
  endif
endfunction
Алгоритмы, Наработки и Способности
6 5.1K

Математические функции от Warden

""
Полярное смещение
function PolarOffset takes location loc, real dist, real angle returns location
local real x = GetLocationX(loc) + dist * Cos(angle * bj_DEGTORAD)
local real y = GetLocationY(loc) + dist * Sin(angle * bj_DEGTORAD)
call MoveLocation(loc, x, y)
return loc
endfunction…
Алгоритмы, Наработки и Способности
4 4.1K

HEX to DEC to ASCII (конвертация равкодов)

""
globals
integer array Pow16x
integer array Pow256x
string array CharMap16
string array CharMap256
integer array CharInx16
integer array CharInx256
endglobals
function S2Ix takes string s returns integer
return GetHandleId(s) changed, 20.03.2012
return…
Алгоритмы, Наработки и Способности
2 3.1K

Перпендикуляр от отрезка к точке

Находит длину перпендикуляра от отрезка, заданного Xa, Ya, Xb, Yb к точке, заданной Xc, Yc. Полезно при реализации заклинаний типа "Огненная стена", во избежание последовательных пиков юнитов по прямой.
Автор - silumin
""
function Perpendicular takes real Xa,real Ya,real Xb,real Yb,real Xc,real Yc returns real…
Алгоритмы, Наработки и Способности
4 2.1K

Определение высоты рельефа

Определяет высоту рельефа в заданных координатах точки. Полезно для реализации "правильного" движения снарядов.
""
library TerrainHeight
globals
private location loc = Location(0, 0)
endglobals
function GetTerrainZ takes real x, real y returns real
call MoveLocation(loc, x, y)
return…
Алгоритмы, Наработки и Способности
5 2.5K

Определение неуязвимости юнита

Расширенная функция определения, уязвим ли юнит или нет. Позволяет определять специфические неуязвимости (например, неуязвимость феникса при морфе и неуязвимость мастера клинка при создании иллюзий).
""
function IsUnitInvulnerable takes unit Unit returns boolean

local real Health_Current =…
Алгоритмы, Наработки и Способности
2K

Формула параболы

Вычисляет значение, обычно применяемое для задания высоты снаряда, который летит по параболической траектории.
function ParabolaZ takes real h, real d, real x returns real
  return (4 * h / d) * (d - x) * (x / d)
endfunction
Формула параболы (учитывающая начальную и конечную высоту)
Автор оригинала - …
Алгоритмы, Наработки и Способности
6 5.5K

Скрещивание однотипных предметов

При вызове пробует собрать из <count> предметов типа <oldItemType> новый предмет типа <newItemType>
В случае успеха возвращает true.
Автор - Shadow Daemon
""
function UnitUpgradeItem takes unit u, integer oldItemType, integer count, integer newItemType returns boolean
local integer i = 0
local integer j =…
Алгоритмы, Наработки и Способности
3K

Покупка предмета юнита

Заставляет юнита купить предмет из указанного магазина.
В случае успеха возвращает true.
Автор - Warden
""
function BuyItem takes unit FromShop,integer ItemID,unit ToUnit returns boolean
if IssueNeutralTargetOrder(GetOwningPlayer(ToUnit), FromShop, "smart", ToUnit) or IssueTargetOrder(FromShop, "smart",…
Алгоритмы, Наработки и Способности
2 1.8K

Набор функций для работы с Hex-записями

Преобразует строку с Hex числом (допустимые значения "00" до "ff") в десятичное целое число:
""
function H2D takes string hex returns integer
local string abc = "0123456789abcdef"
local integer i = 0
local integer dec
loop
set i = i + 1
exitwhen( SubString(abc, (i-1), i)==SubString(hex, 0, 1)…
Алгоритмы, Наработки и Способности
889

Вычисление опыта за убийство юнита

Вычисляет приблизительное значение опыта за убийство указанного юнита. Применение - триггерный подсчет/добавление экспы с применением всякого рода скиллов/эффектов модификаторов.
Автор - NETRAT
""
function aow_GetApxExpBounty takes unit u returns real
return SquareRoot((GetUnitState(u, UNIT_STATE_MAX_LIFE) +…
Алгоритмы, Наработки и Способности
1.4K

Эмуляция ошибки в Warcraft

Sim Error из Caster System, позволяет вам сэмитировать ошибку наподобие той, что выводиться движком вара. Незаменима при создании каких-либо довесков к интерфейсу пользователя.
Автор - Vexorian
Требует глобальную переменную типа звук (udg_SimError). Не создаёт утечек.
""
function SimError takes player ForPlayer,…
Алгоритмы, Наработки и Способности
3 3K
`
ОЖИДАНИЕ РЕКЛАМЫ...
Scroll Lock - быстрая модерация