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

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

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

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

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.9K

Вращение юнита в 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.2K

Вращение юнита в 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.4K

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

Функия проверяет отрезки на пересечения, если они пересекаются, то функция возвращяет 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.6K

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

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

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

Функции принадлежности точки треугольнику и произвольному четырёхугольнику.
""
Площадь треугольника по координатам
function TriS takes real x1, real y1, real x2, real y2, real x3, real y3 returns real
return RAbsBJ(x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2))/2
endfunction
Принадлежность точки (x;y)…
1.4K

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

Находит длину перпендикуляра от отрезка, заданного 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.2K

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

Определяет высоту рельефа в заданных координатах точки. Полезно для реализации "правильного" движения снарядов.
""
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.9K

Набор функций для работы с 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)…
Компонент
910

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

Вычисляет приблизительное значение опыта за убийство указанного юнита. Применение - триггерный подсчет/добавление экспы с применением всякого рода скиллов/эффектов модификаторов.
Автор - 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
65 36.7K

Вакансии, Найм в Проекты и Профессии

Сообщество XGM всегда славилось своим стремлением помочь новеньким: разрешить их проблемы, поделиться материалами, знаниями и просто указать верную дорогу. Даже сейчас в таких разделах как Академия решаются десятки вопросов в день.
Но ответов на вопросы недостаточно...
Чтобы реализовать большую, интересную идею, разработчики объединяются в группы. Такие объединения в группы людей с общей идеей и целями у нас называются Проектами.
Но как найти нужных людей в свой проект? Используя текущие технологии портала, не забывая про старые модмейкерские способы, мы придумали систему вакансий (найма в проекты), о которой я расскажу ниже.
Новость
2 13.7K

Вакансии в проект Diablo

Если вы нашли что-то интересное про Diablo 3 – поделитесь с нами!
В проект требуются:
Ньюсмейкеры: оперативный поиск и публикация новостей из мира Diablo, в том числе обновлений (патчей) к игре. Требуются хорошие знания русского языка.
Обзорщики: нужны для написания гайдов по прохождению, билдов,…
4 3.5K

Как сделать прозрачный фон у скринов

Надо юзать "волшебную палочку", доступна и в paint.net
Статья
5 6.5K

Паукан Rocky Remix (Кисонька и Компания)

Давно ещё сделал, надо же выложить =)) 12к просмотров лол
Паукан Rocky Remix (Кисонька и Компания)
Музыка
7 2.2K

Релиз Diablo 3 анонсирован

Компания Blizzard наконец-то огласила дату выхода Diablo 3! Она будет распространяться в электронном виде и в магазинах всего мира 15-го мая; также она доступна для предзаказа на Battle.Net прямо сейчас. В латинской Америке и России она будет доступна несколько позже - лишь 7 июня.
Новость
26 11.6K

ScEncrypt v0.01

Библиотека шифрования на основе xor-алгоритма с закрытым ключом готова :)
Зачем это нужно?
Насколько мне известно, данные банков без подписи в Starcraft II не шифруются и доступны для изменения. Единственный выход - шифровка данных, наподобие save/load системы: xgm.ru/p/wc3/creating_loading_code
Отдельная благодарность NETRAT'у за помощь с алгоритмами.
Кроме этого, есть ещё очень много применений ScEncrypt, даже для той же генерации сейвлоад (загрузочных) кодов, да для чего угодно, где нужно "запаролить данные и засунуть их в строку", включая обратную операцию.
Наработки
8 6.8K
`
ОЖИДАНИЕ РЕКЛАМЫ...
Scroll Lock - быстрая модерация