6

Waypoints

» WarCraft 3
Библиотека для гибкого управления юнитами компьютерных игроков

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

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

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

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

Система автоматической обработки команд чата [v1.4] [final]

» WarCraft 3
Для большинства современных масштабных (как DotA) и не очень (например Legion TD) карт характерно наличие команд чата как основного метода управления игрой. Если команд немного, то с ними вполне можно справиться и обычным образом (создав кучу однотипных триггеров). Но когда кол-во команд начинает расти, то организовать их стает очень сложно. Самым очевидным решением для такой ситуации мне кажется создание системы учета этих самых команд. Однажды я попал в такую ситуацию, но у меня было решение, коим я и хочу поделиться с вами. Полная работоспособность данной системы не гарантируется, поэтому используйте ее с осторожностью.

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

ScSortedSelector - перебор юнитов по удаленности

» WarCraft 3
Ничего необычного, но раз требуется - почему бы и не сделать.
Наработка позволяет делать перебор всех юнитов в заданной области от центральных к крайним и наоборот.
Возможности:
  • собственно, перебирать юнитов, для чего используются операторы квадратных скобок [], как у простого массива;
  • каждый новый ScSortedSelector полностью независим от остальных;
  • сортировка_выбором - это реально быстрее, чем производить GroupEnumUnitsInRange рекурсивно;

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

Система отлова нанесённого урона

» WarCraft 3
Библиотека, которая позволяет добавлять общее событие "юнит получает урон" любому триггеру, проста в импортировании.
Написано на: jass, vjass, cjass.

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

Пример базы данных по броне юнитов

» WarCraft 3
Библиотека, позволяющая в одно действие узнавать значение брони юнита с учётом всех бонусов от характеристик, предметов и способностей.
Написано на: jass, vjass, cjass.

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

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

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

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

vJass модуль list

» WarCraft 3
Небольшой модуль, выведенный из модуля Doc без каких либо дополнений, выполненый на vJass.
Значительно упрощает написание эффектов и заклинаний, реализуя логику вызова их повторных экземпляров за вас.

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

Ability Preload

» WarCraft 3
Вообще у нас тут в бездне лежит один алгоритм подзагрузки способностей, но уж очень он - удручающий, мягко говоря. Вот вам уникальный скрипт, который поможет подгружать способности, так, как вам нужно :]

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

IFDEBUG 2: Как жить без фаталов?

» WarCraft 3
Думаю многие помнят небольшую, но очень полезную библиотечку от Doc которая помогала сохранять дебаг логи на хард по средствам прелоада и библиотечку от Скорпи, которая помогала контролировать в коде соблюдение различных условий. Так вот, недавно Faion малость усовершенствовал первую, а скорпи присоединил вторую. Надеюсь, док и faion будут не против.
В результате получилось отличное средство от фаталов!

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

Наложение строки на строку (ведущие нули/символы)

» WarCraft 3
Places the overlay string on the source string and returns result string. Centering method specifies position of the remaining symbols.
enum (StringOverlayCentering) { SOC_SOURCE_LEFT, SOC_SOURCE_RIGHT, SOC_SOURCE_CENTER }

string StringOverlay(string source, string overlay, StringOverlayCentering centeringMethod)

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

Библиотека Color

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

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

String Class - Работа со строками

» WarCraft 3
Библиотека для удобной работы со строками.

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

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

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

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

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

» 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 - глобалки.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Библиотека функций

» WarCraft 3
Данная тема предназначена для различных функций, которые могут быть весьма полезны при программировании на Jass.

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

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

» WarCraft 3
""
globals
integer array Pow16x
integer array Pow256x
string array CharMap16
string array CharMap256
integer array CharInx16
integer array CharInx256
endglobals

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

Принадлежность точки

» WarCraft 3
Функции принадлежности точки треугольнику и произвольному четырёхугольнику.

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

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

» WarCraft 3
Находит длину перпендикуляра от отрезка, заданного Xa, Ya, Xb, Yb к точке, заданной Xc, Yc. Полезно при реализации заклинаний типа "Огненная стена", во избежание последовательных пиков юнитов по прямой.
Автор - silumin
function Perpendicular takes real Xa,real Ya,real Xb,real Yb,real Xc,real Yc returns real
    return SquareRoot((Xa - Xc) * (Xa - Xc) + (Ya - Yc) * (Ya - Yc)) * Sin(Atan2(Yc-Ya,Xc-Xa) - Atan2(Yb-Ya,Xb-Xa))
endfunction
1 неизвестен

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

» WarCraft 3
Определяет высоту рельефа в заданных координатах точки. Полезно для реализации "правильного" движения снарядов.
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 GetLocationZ(loc)
endfunction

endlibrary