38

» Прочее / Тираж футболок XGM Classic

"Но я бы не купил, даже если деньги были б" n/c
38

» Прочее / Тираж футболок XGM Classic

Меня интересует, почему комменты такие упопротые? Я бы специально им не отпускал такие футболки - недоросли еще)
Но это хорошо, что тотже материал изображения. Впрочем, дешевле с такимже качеством не вышло бы, я думаю.
Сам не буду заказывать - смысла носить логотип для себя не вижу.
"И дистрофик кто?" - лол :)
Всем идиотам, которые думают, что можно сделать хотябы дешевую пародию в единичном экземпляре - максимум вы сможете купить футболку(без изображения) такого же качества за 1000р(это если повезет).
38

» WarCraft 3 / Чемпионат по TCXAOS

Тоадкоп не хочет толкать ее в массы школоты. А тыща - хочет.
38

» Way of Others / Сайт WooTeam теперь на XGM!

Ну вы вроде бы "свои" еретики, такчто норм)
38

» Way of Others / Сайт WooTeam теперь на XGM!

руководители проектов >= простые пользователи*
38

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

да кстати сам по себе один счетчик не имеет смысла ведь у нас тут ооп зашкаливает, все либы независимы итп))
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