XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
DioD

offline
Опыт: 45,134
Активность:
Баг в массивах
Истиный размер массива 8191 так что будьте осторожны.
Старый 23.08.2006, 11:40
J
expert
offline
Опыт: 48,447
Активность:
вообщето 8192, ты не учел "0", так что все норм

Отредактировано Jon, 23.08.2006 в 12:20.
Старый 23.08.2006, 12:13
DioD

offline
Опыт: 45,134
Активность:
Лол, я как раз то учёл, а вот близы нет.
Старый 23.08.2006, 13:03
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Размер массива 0..8191, то бишь 8192, а - 8191 последний индекс... DioD, или это не так?
Старый 23.08.2006, 13:27
DioD

offline
Опыт: 45,134
Активность:
8191 Это последний рабочий индекс в массиве.
тоесть надо писать exitwhen 8191 Так как в этом случаем последний слот будет 8190 а первый 0 всего 8191
если указать 8192 игра вылетит при загрузке , это истиная проблема кастер системы Вексориана.
Старый 23.08.2006, 14:10
remal
нечто
offline
Опыт: 2,087
Активность:
DioD, размер массива - 8192. ты это сам подтвердил:
Цитата:
Сообщение от Diod
8191 Это последний рабочий индекс в массиве.
Старый 23.08.2006, 22:17
ArchWorm
Матрица незалежности
offline
Опыт: 4,675
Активность:
Так. Давайте расставим точки над i:
Начинается массив с 0
Заканчивается на 8191
Его суммарный размер - 8192
Так?
Старый 24.08.2006, 17:03
DioD

offline
Опыт: 45,134
Активность:
я говорю о том что нельзя использовать 8192 слот, так как он не существует.
Старый 24.08.2006, 17:18
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Всего элементов 8192. Массив начинается с нуля значит последний возможный индекс 8191. Как можно в здравом уме использовать 8192?

exploder добавил:
Рад что баг в КС все таки был найден.
Старый 25.08.2006, 12:08
DioD

offline
Опыт: 45,134
Активность:
Угу, вексориан просто не обратил на это внимание.
Старый 25.08.2006, 12:25
Toadcop

offline
Опыт: 54,313
Активность:
DioD Блин давай ссылки тогда уже =) а то тупо мы стаём инкубаторами !
да Близзы идиоты что еще сказать =)
Старый 25.08.2006, 18:31
DioD

offline
Опыт: 45,134
Активность:
Эх, тот кто знает что ищет придёт на кампы сам и ссылка ему не нужна.
Старый 25.08.2006, 18:52
B100D E1F
Scarecrow
offline
Опыт: 4,719
Активность:
Близы не идеоты ибо сделали аффигеную игру с огромными возможностями модмейкинга. Ьак что риспект им за это и йащик пыва!
Старый 25.08.2006, 18:55
Toadcop

offline
Опыт: 54,313
Активность:
B100D E1F - да но когда тебе начинаю в реализации чего то идиотские вещи ты так не думаешь =)
Старый 25.08.2006, 19:00
ArchWorm
Матрица незалежности
offline
Опыт: 4,675
Активность:
Жабомент, это уже позиция программера.
Старый 25.08.2006, 23:06
Daniil

offline
Опыт: 164
Активность:
На самом деле массивы в JASS'е могут быть разряжёнными.
То есть не обязательно записывать элементы подряд в 0, 1, 2 и т.д.
Можно записать в 0, потом сразу в 100, потом в 1000 и т.д.
А взять и сразу записать в 8192-й или даже в 10000-й.
Максимальный индекс в массиве - 2^31-1 (то есть более двух миллиардов).
Но одновременно в массиве может быть не более 8192 записей (а может и 8191, это надо уже экспериментально проверять).
Старый 20.09.2006, 15:18
Toadcop

offline
Опыт: 54,313
Активность:
Daniil ты просто жопоумный =) в джассе размер массива равен 8192 НО ! если записать что то в слот с номером 8191 то такая карта уже не загрузитьса (после того как она была сохранена)
Старый 20.09.2006, 15:25
Daniil

offline
Опыт: 164
Активность:
А давай будем взаимовежливы, ок?

Сделал тестик. Действительно, оказалось что в той доке, в которой я читал про разрежённые массивы, наврали.
НО!
Никаких вылетов не заметил. Просто числа (я тестил integer array), записанные в элементы от 8192 и выше не сохранялись.

То есть
call DisplayTextToForce(bj_FORCE_ALL_PLAYERS,I2S(I2S(udg_test[10000]))
всегда выводит ноль, независимо от того, что я в этот элемент присвоил.

И эта петрушка начинается с индекса 8192. Индекс 8191 работает прекрасно.

И никаких вылетов не было, карта прекрасно загружается и работает.

Daniil добавил:
Вот карта для демонстрации.
Подерживает две команды:
set <индекс> <значение>
и
get <индекс>
В начале значения всех элементов массива равны индексу.

Ну вот и пробуйте
get 8191
set 8191 100
get 8191
set 8192 200
get 8192

Потом можете попробывать и более крутое:
set -1 100
get -1

Не знаю, что у вас будет, но у меня просто элементы с индексами меньше нулю и больше 8191 всегда равны нулю.
Прикрепленные файлы
Тип файла: w3x arrays.w3x (28.9 Кбайт, 12 просмотров )
Старый 20.09.2006, 17:11
remal
нечто
offline
Опыт: 2,087
Активность:
Daniil, ты слышишь звон и не знаешь где он... массивы в jass к разряжённым отношения могут и не иметь.
а про тест... дык оно очевидно...
Старый 21.09.2006, 03:11
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Цитата:
И никаких вылетов не было, карта прекрасно загружается и работает.

Daniil, перечиай внимательно пост Toadcop'а... Игра вылетает если загрузить сохранненую игру, перед этим забив например 10000ую ячейку... Твоя карта при этом красиво выбрасывает варик на рабочий стол с фатальной ошибкой... эх... как же ты как ее проверял-то?
Старый 21.09.2006, 10:16
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 19:12.