Переменные JASS.
Подстатья
20 156
23
nazarpunk, Unryze, На практике в игре проверено, причем несколько раз. Какая дезинформация? Можете сами сделать массив, и обратиться к пустой ячейке и вывести результат на экран через BJDebugMsg.
Кстати, о дезинформации:
Unryze
0 в string = "" или же null.
string s = "" если вы используете null для строк, то вы больной ублюдок и вам пора лечиться
Кто дезинформирует?
20
Открою секрет, массив не иницилизирован пока не используется set, а 0 возвращается так как это стандартное значение. 0 в string = "" или же null.
Измерение свечками - это конечно прикольно, но не стоит распространять дезинформацию, не проведя тестов/не изучив внутренности. :(
Загруженные файлы
30
Они на старте уже инициализированы, либо 0, либо null. Проверено.
Каким образом проверено? Ты хочешь сказать, что при объявлении массива выделяется вся доступная память и забивается нулями?
23
Инициализировать массив, как и указать его размер при объявлении нельзя. Что чертовски неудобно.
Они на старте уже инициализированы, либо 0, либо null. Проверено.
Как то я случайно сломал свою базу данных, и функция обращалась к неиспользуемой ячейке массива. Массив boolexpr. Неинициализированный, то есть не стоит никакого цикла, который null или 0 расставляет. Ничего не вылетало, не глючило, но фильтр игра воспринимала как null и забирала в группу всех юнитов подряд.
Второй момент был связан с попыткой вывести имя юнита по айди, тоже функция залезла не в ту ячейку и выдала (Default string) вместо имени. То есть, в той ячейке стоял 0. Версия игры 1.26 соответственно.
Функции JASS.
Подстатья
16 165
23
Файл с дополнительными функциями, которые по умолчанию отключены. Для их включения необходимо добавить их сигнатуру после блока globals в war3map.j:
endglobals 

native UnitAlive takes unit id returns boolean
native GetUnitGoldCost takes integer unitid returns integer
native GetUnitWoodCost takes integer unitid returns integer
А это что? я в дополнение к Этому написал.
30
EugeAl, это статья не про common.ai. Кому нужно, тот сам его спокойно откроет и поглядит на функции.
23
Есть ещё GetUnitBuildTime из common ai, она тоже рабочая, выдаёт время строительства юнита/здания
И GetBuilding - выдаёт последнее построенное или созданное триггерно здание
Условия в JASS.
Подстатья
7 120
23
nazarpunk, Но речь то шла именно об этом
В любом другом языке программирования выполнив эквивалент false and true or true вы получите true или его числовое представление в виде 1. Но выполнив такой код в игре вы сильно удивитесь и можете заподозрить автора сей статьи во всяком.
Разгадка сего действия проста - если первым аргументом функции AND был передан false то игра перестаёт считать выражение и экстренно возвращает false.
А не о других комбинациях.
В случае с true and false я без понятия, как оно будет проверять, потому что игра не вернет экстренно false.
30
EugeAl, а теперь поменяй местами операнды и расскажи, насколько оно праильно сделано:
true and false or true
23
Хм, а по моему, false and сделано правильно и не должно никогда возвращать true.
Приведу пример:
Допустим у нас фильтр, где стоит условие
return GetUnitTypeId ( GetFilterUnit() ) == 'httt' and GetUnitAbilityLevel ( GetFilterUnit(), 'Addd' ) > 0 or GetUnitAbilityLevel ( GetFilterUnit(), 'Adds' ) > 0
И у нас при проверке айди юнита не совпадает, то есть выдаёт false, но обе абилки имеются.
Итого получается false and true or true.
Поскольку юнит не проходит по ид, он отсеивается, что правильно.
А если бы было true, юнит бы прошёл фильтр с неподходящим айди, что не должно быть.