38

» WarCraft 3 / cJass - дополнение к языку JASS

векс уг - он тормознуто инлайнит ф-ции, не рассматривай его оптимайзер)
38

» WarCraft 3 / Библиотека функций

Что это?
я кстати тоже теперь в дифайны часто сравнения пихаю - так круче)
38

» WarCraft 3 / cJass - дополнение к языку JASS

всем хотелось бы.. тока для этого надо переписывать хайлайтер) вандам вроде начал. или нет ?
38

» WarCraft 3 / Библиотека функций

Старая версия ! смотреть http://xgm.ru/forum/showthread.php?t=29387
library_once Assert {

    define private msgwinX = 1.5
    define private msgwinY = -1.4
    define private assert_color = "FF404040"

    nothing Assert_debug_msg(string message) {
    // -1 = for all
        integer i = 0
        whilenot(i>11) {
            DisplayTextToPlayer(Player(i),msgwinX,msgwinY,"|c"+assert_color+"Debug(all): "+message+"|r")
            i++
        }
    }
    
    define private DMSGFUNC = Assert_debug_msg

    define ASSERT(ARG) = {
        if(ARG) {
            DMSGFUNC(`ARG`)
        }
    }
    
    define ASSERTR(ARG,WHATRET) = {
        if(ARG) {
            DMSGFUNC(`ARG`)
            return WHATRET
        }
    }
    
    define ASSERTF(NAME,ARG) = {
        if(ARG) {
            DMSGFUNC(`NAME` + ": " + `ARG`)
        }
    }
    
    define ASSERTFR(NAME,ARG,WHATRET) = {
        if(ARG) {
            DMSGFUNC(`NAME` + ": " + `ARG`)
            return WHATRET
        }
    }

}
Библиотека обработки ошибок. Имеет 4 макроса:
ASSERT(Условие)
ASSERTR(Условие, Возвращаемое значение)
ASSERTF(Имя текущей функции, Условие)
ASSERTFR(Имя текущей функции, Условие, Возвращаемое значение)

Пример использования:
void MyFunc(int a) {
    ASSERT(a == 0)
}
Если a равен 0, выведет:
Debug(all): a == 0
bool MyFuncB(int temp) {
    ASSERTR(temp == 0, false)
    return true
}
Если temp равен 0, выведет:
Debug(all): temp == 0
и функция вернет значение false
bool MyFuncC(int temp) {
    ASSERTF(MyFuncC, temp == 0)
}
Если temp равен 0, выведет:
Debug(all): MyFuncC: temp == 0
bool MyFuncD(int temp) {
    ASSERTFR(MyFuncD, temp == 0, false)
    return true
}
Если temp равен 0, выведет:
Debug(all): MyFuncD: temp == 0
и функция вернет значение false
38

» WarCraft 3 / Библиотека функций

нет это тупо. тут главный недочет - это то, что тут 32 була а надо всегото 1 интежер) по памяти.
ScorpioT1000 добавил:
ты еще не видел как мой хэш стрингов тормознуто работает) напиши там любое слово в этой карте типа "aa", "ab", "ac")
38

» WarCraft 3 / Библиотека функций

что это?
ScorpioT1000 добавил:
handle id - это и есть ключь из хэш-таблицы хэндлов(а никакой не адрес ячейки виртуальной памяти и прочая мишура), на которой построены все данные в варкрафте. пользуясь им (т.е. для каждого хендла свой ключ) мы находим индекс например массива, или id структуры. это самый быстрый способ для варика
38

» WarCraft 3 / Библиотека функций

хэш тейбл вобще не нужен, нужно тока get handle id
38

» Прочее / Выбор названия для ЗБТ сервера Aion.

для необразованных детей урбанизации - [url]http://ru.wikipedia.org/wiki/Ариэль[/url]
38

» Прочее / Выбор названия для ЗБТ сервера Aion.

"хех, зато как выглядит..." - как унылое говно, как же еще то? загадочности 0, масштабности 0, микроландшафтинга 0..
38

» Прочее / Выбор названия для ЗБТ сервера Aion.

говно. смешали все подрят, зачем это вобще людям показывать?)
38

» Between The Worlds / Between The Worlds

Kiran, если ты не прекратишь срать в комментах проектов, тебя выпилят 100%
38

» WarCraft 3 / Библиотека функций

Омг оказывается я выложил какую-то левую версию карты, когда еще тока начал писать. А готовую найти не могу, походу jngp ее затер.
ScorpioT1000 добавил:
Обновил ! все нашел, теперь должно быть норм)
38

» WarCraft 3 / Библиотека функций

Неудержался :) это, конечно на практике будет работать как уг(особенно дополнительная либа для строчек), но всеравно интересно было)
// ===================================================================================== |
// Библиотека BinInt содержит функции для работы с двоичным видом целого 32-битного числа.
// Автор: ScorpioT1000
// Дата создания: 03.09.2009
// Библиотека обладает всеми авторскими правами.
//
// Объект:
 BinInt
// Функции:

        // ============== Основное =============== //

    static method New takes nothing returns BinInt
    // Конструктор без параметров, создает BinInt, который равен 0
    // Пример:
        local BinInt A = BinInt.New()
        
    static method New0 takes nothing returns BinInt
    // Конструктор без параметров, создает BinInt, но не присваивает элементам значения (!)
 
    static method New1 takes integer src returns BinInt
    // Конструктор, принимающий integer. Создает BinInt, который равен src
    // Пример:
        local integer B = 100500
        BinInt A = BinInt.New1(B)
        
    method Copy takes nothing returns BinInt
    // Создает новый BinInt и присваивает ему значение текущего
    // Пример:
        local BinInt A = BinInt.New1(100500)
        local BinInt B = A.Copy() // B = 100500
        
    method Print takes nothing returns nothing
    // Печатает текущий BinInt через стандартный вывод.
    // Вид:
    //  XXXX XXXX XXXX XXXX-
    // -XXXX XXXX XXXX XXXX
    // Пример:
        local BinInt A = BinInt.New1(100500)
        call A.Print()
    
    method SetBit takes integer num, boolean val returns nothing
    method GetBit takes integer num returns boolean
    // Устанавливает/берет значение отдельно взятого бита (под номером num, от 0 до 31)
    // with binary search !
    // Пример:
        local BinInt A = BinInt.New1(100500)
        call A.SetBit(0,true) // теперь A = 100501
        
        // ============= Операции преобразований ================ //
        
    method toBin takes integer a returns nothing
    // Функция конвертирует принятое число a в бинарный вид и записывает его в текущий BinInt
    // Пример:
        local BinInt A = BinInt.New()
        local integer B = 100500
        call A.toBin(B) // в A записано 100500 как "0000 0000 0000 0001  1000 1000 1001 0100"
        
    method toDec takes nothing returns integer
    // Функция конвертирует текущий BinInt в стандартный integer и возвращает его
    // Пример:
        local BinInt A = BinInt.New1(100500)
        local integer B = A.toDec() // B будет равна 100500
        
        // ================ Побитовые операции ================== //
    
    method AND takes BinInt right returns BinInt
    // применяет AND на два BinInt'а (текущий и переданный), записывает результат в новый и возвращает его
    
    method OR takes BinInt right returns BinInt
    // применяет OR на два BinInt'а (текущий и переданный), записывает результат в новый и возвращает его
    
    method XOR takes BinInt right returns BinInt
    // применяет XOR на два BinInt'а (текущий и переданный), записывает результат в новый и возвращает его
    
    
    method NOT takes nothing returns BinInt
    // применяет побитовый NOT на текущий BinInt
    
    method LeftShift takes nothing returns nothing
    method RightShift takes nothing returns nothing
    // побитовые сдвиги влево и вправо
    

        // ============= integer - приспособленные ============== //
    // Это то, для чего все это делалось :)
    
    function IntXOR takes integer A, integer B returns integer
    function IntAND takes integer A, integer B returns integer
    function IntOR takes integer A, integer B returns integer
    // Применяют XOR, AND и OR на пару целых чисел, результат возвращают


// ===================================================================================== |
.
это пока не финал, если что
38

» World of WarCraft / Cataclysm

Я вот думаю, может выпилить вас обоих?)
38

» WarCraft 3 / Warland.ru снова онлайн!

лол никто ниче не понял рофл россея...
38

» Кампания Джека - Глава 1 / Кампания Джека - Глава 1

[url]http://ipicture.ru/uploads/090814/7R7sfJ4W60.jpg[/url] для этого всего-то [url]http://ipicture.ru/uploads/090814/AEfgWUqFao.jpg[/url] :) новая библиотека написана !