32

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

bb:ну мне сейчас надо баги отфиксить))) т.е. там их много... очень
насчет апдейтера - хз, ну вообще он даунлоадит... вд, а ты не думал мд делать сам .ехе апдейтера статичным, а даунлоадитть .длл, а потом ее через лоад либрари?
32

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

[quote]ForGroup name{
}[/quote]
это векс делает, я пока над анонимными функциями не думал
32

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

коунтер пофиксил, скоро выльем
там я еще кое что фиксил, и надо еще что то отфиксить)
32

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

оно уже сделанно в "дев" версии, правда в ней еще прибавленно несколько багов, которые я пофиксю через пару дней
32

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

Это к выпиливанию кода.
вам сойдет такое ?
грубо говоря, так надо метить функции, которые вы возможно не будете вызывать через call, и точно не будете вызывать через ExecuteFunc
стоить отметить, что все функции, которые принимают какие либо входные аргументы (т.е. все кроме takes nothing) считаются по умолчанию optional
опциональная функция выпиливается оптимизатором при сохранение, если она не используется
32

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

txt2:> теперь есть 2 ветки обновлений =)
та что дев по идее не обновляется автоматически, но там всегда больше фич (и возможно багов^^)
ADOLF добавил:
1.4.1.6 - не отстаем от векса
void fx () {
    int i[]
}
32

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

С какой версии поддерживается (если уже сделана перекалькуляция)?
с той, которую я выпущу сам низнаю когда
да нет, собственно что то будем думать (это я насчет холивара), сейчас нам надо выбрать политический курс.
ладно, я пошел писать новые фичи
32

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

cJASS defines can be a powerful tool when used correctly
© внезапно угадайте кто
I think of cJASS as the democrats and vJASS/Zinc as the republicans. Why? vJASS/Zinc continues to control while cJASS continues to provide more freedom.
лол)
ADOLF добавил:
Хотелось, чтобы при таком макросе парсер сразу подставлял значения произведений
нет, прекалькуляцию предусмотрена, но уже при оптимизации
а векс это не считает (в случае если там стоят литералы)?
32

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

А мне эти три глобалки очень нужны.
если ты из будешь использовать - они не будут удалены
Zinc > cJass
лол
сейчас на зеХелпере такие епичные треды с приглашенной звездой вексом по этому поводу)
ADOLF добавил:
хотя на хайве тоже)
32

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

проверять все ExecuteFunc
гемора много, начнем с того, что она может быть зашита в импортированный blizzar.j/common.j
потому я забил на это. пока забил. а оптиональные функции делать всеравно
32

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

они их не удалит, т.к. теоритически ты можешь вызывать функцию инициализации триггера через ExecuteFunc
ADOLF добавил:
хотя под генерируемые редактором функции можно написать проверялку)
32

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

оптимизатор удаляет ненужные функции и переменные, правда там много нюансов
32

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

уф, кто знает. как минимум я сделаю защиту - что бы он говорил что синтаксис еррор
32

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

что бы два инкремента одной переменной в обычной инструкции и в подобной работали одинаково
32

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

при невыполнении условия i тоже надо увеличивать! Это ошибка в справке?
нет... мда, баг. буду фиксить. т.е. постиксный инкремент в инструкции exitwhen должен обрабатывать аналогично ему же в инструкции if
ADOLF добавил:
Elf_Stratigo, у меня сохранило все правильно, поясните подробнее, что именно неработает
32

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

txt2:> Явно в инклуде где-то есть определение цвета по игроку
        cj_sprintf_pc [0x00] = "|cffff0303" + GetPlayerName(Player(0x00)) + "|r"
        cj_sprintf_pc [0x01] = "|cff0042ff" + GetPlayerName(Player(0x01)) + "|r"
и потом смотри разметку ^pc и ^ipc в определении макроса cj_sprintf_artTyp_Const
32

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

Что это?
проверка на точность (правильная реализация на жасс)
в великом и могучем есть доступ к флагу парности регистра состояния ^^
В cj_print к сожалению нет "включить цвет изрока #". А хотелось бы.
вы хотите печатать текст цветом игрока? самим разметку сделать никак?)
ADOLF добавил:
сабстринг будет медленне обращения к массиву, в принтфе все сделанно правильно
ADOLF добавил:
и вообще, в принтфе оно сделанно инлайновым) "вы все нешарите" ©
32

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

Sunn, нет, для забивания массива (например) просто используется другой цикл - do {} whilenot (expr)
читайте рид ми внимательнее
32

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

ну это все правильно - в ситуации когда вар обрабатывает весь скрипт при выборе карты самое важно скорость этой обработки, и офк ни о какой оптимизации не может быть и речи
32

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

txt2:> Кстати я тут вычитал, что вар спокойно понимает числа вида $34 без замены их на 0x34.
проблемы были толи в хелпере векса, толи в пЖасс
1.4.0.3 уже превращает автоматически $ в числах в 0х
private:
public:
сделаю, только позже
считает я думаю.
вар несчитает константы, я приводил пост на сижассе, сейчас найду его
"прекалькуляция" также планируется, но только для литералов
ADOLF добавил:
как вар работает с константами (англ.)
Here's the JASS code, which we're going to disassemble:
constant real x = 0.
define xx = 0.
void fx () { real const = x, def = xx }
And here's what operations we've got when the above code is run by the game's JASS interpreter:
08C9E0A0 fx+0000 00 00 05 05 00000eaf CREATE_LOCAL const {real (5)}
08C9E0A8 fx+0008 00 05 68 0e 0000024a MOV_VAR_REG x => #68 {real (5)}
08C9E0B0 fx+0010 00 00 68 11 00000eaf MOV_REG_VAR #68 => const
08C9E0B8 fx+0018 00 00 05 05 00000eb0 CREATE_LOCAL def {real (5)}
08C9E0C0 fx+0020 00 05 69 0c 00000000 MOV_VAL_REG 0 => #69 {real (5)}
08C9E0C8 fx+0028 00 00 69 11 00000eb0 MOV_REG_VAR #69 => def
08C9E0D0 fx+0030 00 00 00 27 00000000 RETURN
08C9E0D8 fx+0038 00 00 00 04 00000000 STUB_FUNC_END
As you see, on line 2 the value is taken from the memory area, corresponding with the constant address and placed to the register (it's in bold text). Then the value in the register assigned to the local variable at line 3.
On line 5, direct value is placed to the register (it's in bold text), and then assigned to the second local variable at line 6.
If to make an example in plain asm, the difference is the same as the difference between these two statements:
mov eax, dword ptr [40000000h] ; address
mov eax, 10h ; value
In the first case, you have to look the memory for the address, then find what value is in that memory area and then move the value to the register.
In the second case, you just move the value to the register - it's much faster.
That's why in cJass defines do direct value substitution.
32

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

скорпи, я сделал бету ФУНЦНЕЙМА, поймай меня - замутим либу