Разгадка сего действия проста - если первым аргументом функции AND был передан false то игра перестаёт считать выражение и экстренно возвращает false
Тут хорошо бы уточнить подразумевается false как значение выражения или false как переменная "false", и если первое то получается все выражения с and надо оборачивать в скобки
EugeAl, да, set someInts[1000] = 5000 первая установка значения так же инициализирует индексы от 0 до X Как я и указал индексы от 0 до 1023 (ибо размер 1024) будут заполнены нулями, а индекс 1000 примет значение 5000.
Уйму статей потому я и опровергал в Jass Mythbusters, и потому был дан резкий ответ, чтобы последующие мифы не рождались.
Unryze, set someInts[1000] = 5000 первая установка значения так же инициализирует индексы от 0 до X
Это действие инициал все предыдущие ячейки тоже?
a2 (индекс) меньше числа (размера) - то вернуть это число по индексу a2.
a2 (индекс) больше или равен числу (размеру) - то вернуть 0.
Спасибо!
"проверено" - не проверив / не зная внутренности движка - и есть "дезинформация"
тогда можно 95% статей по варкрафту с ХГМ удалять, ведь практически никто из авторов не имеет доступа к движку и тем более исходному коду, ведь они не из близзард, и значит, у них "дезинформация". Хотя они тоже "проверяли", как и я. Не желаю более возвращаться к этой теме.
globals
integer array someInts // массив пустой, get любого индекса вернёт 0, по указанным выше причинам.
endglobals
function TestArrayStuff takes nothing returns nothing
set someInts[1000] = 5000 // первая установка значения так же инициализирует индексы от 0 до X по мере возрастания 1/2/4/8/16/32/64 то есть после 64 индекса расти будет по 64. И того выделиться размер в 1024, то бишь от 0 до 1023.
endfunction
Поясняю, в Jass нельзя именно инициализировать массив, ибо он растёт автоматически, у него нет требования указания строго размера как допустим в AS:
array<unit> U_SelectionSelArr( 12 );
Ты путаешь вещи, и писать "проверено" - не проверив / не зная внутренности движка - и есть "дезинформация", ибо ответ твой был в корне неверный.
Ну и закончим опять же этим кодом:
//----- (6F459730) --------------------------------------------------------
int __thiscall JassVM::GetArrayValueById(uint32_t *this, unsigned int a2)
{
int result; // eax
if ( a2 < this[2] )
result = *(uint32_t *)(this[3] + 4 * a2);
else
result = 0;
return result;
}
Даже без знания ЯП у тебя лишь 2 варианта:
a2 (индекс) меньше числа (размера) - то вернуть это число по индексу a2.
a2 (индекс) больше или равен числу (размеру) - то вернуть 0.
Unryze, я не разбираюсь в с++.
Значит, массивы инициализировать не обязательно, если есть стандартное значение. Спорил я для того, чтобы установить истину ) а то один одно говорит, другой другое, это непорядок, нужно было узнать.
EugeAl, ещё раз, посмотри мои скрины глазами, а не пятой точкой. То, что "null" применимо к string - не значит, что это СТОИТ использовать, джассу то пофиг, ибо строки по сути в переменной хранят индекс на текст, а не сам текст. Потому 0 = null = "", но когда это дело нужно транслировать допустим в AS, то начинаются отстрелы задниц, когда строки сравнивают с null, что недопустим в AS.
Повторяю на более простом языке, когда у тебя массив только объявлен, то размер равен нулю, так как индекс 0 >= размеру, то возвращается всегда 0, не потому что в нём есть значение, а потому что 0 - это стандартное значение. На кой болт ты споришь - непонятно.
И повторюсь в третий раз, ВЫВОД 0 НЕ ОЗНАЧАЕТ ЧТО У НАС БЫЛА ИНЦИАЛИЗАЦИЯ, то, что игра не отстреливает - как раз причина проверки индекса против размера.
nazarpunk, Unryze, На практике в игре проверено, причем несколько раз. Какая дезинформация? Можете сами сделать массив, и обратиться к пустой ячейке и вывести результат на экран через BJDebugMsg.
Комментарии проекта WarRaft
Циклы
Условия
Переменные
Ред. EugeAl
Это действие инициал все предыдущие ячейки тоже?
Не желаю более возвращаться к этой теме.
Ред. Unryze
Значит, массивы инициализировать не обязательно, если есть стандартное значение. Спорил я для того, чтобы установить истину ) а то один одно говорит, другой другое, это непорядок, нужно было узнать.
Unryze
nazarpunk
Функции