Решил попробовать выводить текст через мультиброд. Один столбец, а число рядов добавляю в зависимости от объема текста. Собственно, вот триггер:
и как выглядит:
Проблемы начинается, когда я меняю число рядов, на 2 или больше, чем его предыдущее значения. Некоторые ряды становятся просто пустыми
Или может просто крашиться варкрафт.
По идее, косяк в цикле. Не подскажите, в чем именно может быть проблема.
P.S. Пробовал обнулять строки и сам мультиборд - не помогло. Только если удалять и создавать его заного.

Мультибоард очень баганая ерунда, для текста лучше использовать фреймы, которые есть в 1.31+.
Из багов: ""MultiboardClear" иногда не чистит мультибоард. Если уменьшить число столбцов или строк, а затем вернуть, то старая информация в скрытых столбцах и строках останется, а новая будет над ней.
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Melissa, Короче я разобрался - все проблемы были из-за переменной Total_Num_Players, она была подбита под живых игроков, а так как я был единственным живым игроком, то давала строку равную 1 (то есть 0+1 я). В общем спасибо, не додумал бы без твоей помощи до своей ошибки(у тебя ведь создаётся по заданому числу количество строк).

28
Мультибоард очень баганая ерунда, для текста лучше использовать фреймы, которые есть в 1.31+.
Из багов: ""MultiboardClear" иногда не чистит мультибоард. Если уменьшить число столбцов или строк, а затем вернуть, то старая информация в скрытых столбцах и строках останется, а новая будет над ней.
Принятый ответ
27
Такое ощущение, что ты просто неверно заносишь и считываешь информацию из массива текста.
Попробовал добавлять\удалять строки в мультиборд. Все нормально отрабатывает. Ты не мог бы более точно описать суть проблемы? И не совсем понял, как у тебя представлены 12 строчек текста. Т.е. тебе нужно заменять эти строчки в зависимости от условий?
5
Lord_Teo, так это просто 12 переменных string. Я их при инициализации назначил и больше не трогал.
А проблема очень походит на то, что PT153 описал.
27
Хорошо. Тогда не понимаю в чем проблема? При добавлении строки ты просто перезаписываешь все данные еще раз. Если нужно заменить конкретную строчку, то снова выводишь все строки, но плюс к этому заменяешь нужную на необходимый текст. Или я снова тебя не понял?!(
Опиши, пожалуйста, краткий алгоритм того, что тебе необходимо сделать и что ты хочешь увидеть.
22
Lord_Teo,
Автор каждый раз выводит в мультиборд массив строк до введенного номера. Скорее всего хочет и чтобы при вводе меньшего номера лишние строки после него убирались.
Мультибоард очень баганая ерунда
У меня в файтинге такая ерунда с мультибордом, когда удаляю старый и создаю новый поменьше, а в нем остается каким-то образом висеть кусок от старого мультиборда, при чем кусок был в стопицот столбцов с иконками и проч, которые никак не отслеживаются, и в новый мультиборд все записывается поверх этого куска как если бы весь этот кусок был одной-двумя ячейками.
30
PT153:
Мультибоард очень баганая ерунда, для текста лучше использовать фреймы, которые есть в 1.31+.
Из багов: ""MultiboardClear" не чистит мультибоард, если уменьшить число столбцов или строк, а затем вернуть, то старая информация в скрытых столбцах и строках останется, а новая будет над ней.
Абсолютная неправда, просто есть ряд неочевидных нюансов, без знания которых нормально с ним не поработать.
5
Lord_Teo, смотри, мне надо показать допустим 10 строк, я делаю мультиборд на 10 рядов, и в них последовательно вставляю строки. Затем, например, надо показать новый текст длинной 5 строк. Соответственно перезаписываем строки и уменьшаем количество рядов до 5. Но когда я затем еще раз проделываю данный алгоритм, допустим опять на 10 строк, начинаются странные дела, типа пропадание надписей как на скрине, или вылеты. Или еще бывает текст друг на друга вылазит, новые поверх старых.
27
Блин, ну, не понимаю.
1.
Вид в игре:
2.
Вид в игре:
Теперь что мне нужно сделать, чтобы вылез косяк?
Загруженные файлы
5
Попробуй убирать пару-тройку строк, а потом добавлять их. У меня в итоге текст в некоторых рядах просто исчезать начинал
28
Абсолютная неправда
Ну почему же? Могу порыться и кинуть тестовую карту с этим трешем.
30
Artem48, попробуй сделать на каждую ячейку действие руками, без цикла.
5
Clamp:
Artem48, попробуй сделать на каждую ячейку действие руками, без цикла.
Это было тупо, но я сделал_) Короче по итогу абсолютно такая же ситуация, как и с циклом.
Но я кое что заметил, если изменять количество рядов только на один, то все работает так, как и должно
Наверное
Загруженные файлы
Этот комментарий удален
30
Идея моего совета состояла в том, чтобы ты вручную указывал номер строки для каждого конкретного случая, если честно, а не тупо развернул цикл ручным инкрементом.

Вообще, чрезвычайно рекомендую писать мультиборд на JASS (или на LUA, но там я незнаком с API), намного удобнее. Фактически, потребность написать красивый мультиборд привела меня к переходу с GUI на JASS, и мультиборд был реально классным.
30
PT153, извини за наглость, но можешь показать код и результат? Нет под рукой ПК с редактором.
28
код
globals
    multiboard Board
    integer Times = 0
    
    constant real Char2Width = 0.005
    constant real ItemWidth = 0.005 * 10.
endglobals

function UpdateMultiboard takes nothing returns nothing
    call MultiboardSetColumnCount(Board, 2)
    call MultiboardSetRowCount(Board, 2)
    
    set Times = Times + 1
    if Times / 3 * 3 == Times then
        call MultiboardClear(Board)
    endif
    
    call MultiboardSetColumnCount(Board, 3)
    call MultiboardSetRowCount(Board, 3)
    call MultiboardSetItemsStyle(Board, true, false)
    call MultiboardSetItemsWidth(Board, ItemWidth)
    call MultiboardSetItemsValue(Board, I2S(Times))
endfunction

function Trig_Time0_Actions takes nothing returns nothing
    set Board = CreateMultiboard()
    call MultiboardSetColumnCount(Board, 3)
    call MultiboardSetRowCount(Board, 3)
    call MultiboardSetItemsStyle(Board, true, false)
    call MultiboardSetItemsWidth(Board, ItemWidth)
    call MultiboardSetItemsValue(Board, I2S(Times))
    call MultiboardMinimize(Board, false)
    call MultiboardDisplay(Board, true)
    
    call TimerStart(CreateTimer(), 1., true, function UpdateMultiboard)
endfunction

function InitTrig_Time0 takes nothing returns nothing
    set gg_trg_Time0 = CreateTrigger()
    call TriggerRegisterTimerEvent(gg_trg_Time0, 1. / 64., false)
    call TriggerAddAction(gg_trg_Time0, function Trig_Time0_Actions)
endfunction
Загруженные файлы
27
Короче, сделал для примера удаление 5 и 6 строки. Можно выполнять несколько раз. При каждом выполнении удаляется 5 и 6 строка. Лишних строк нет. Можно вместо удаления делать замену.
В первом цикле подсчитываем количество непустых строк.
Во втором цикле присваиваем значениям временного массива значения по порядку из основного массива без пустых строк.

При добавлении не забыть учесть, что максимальное значение строк в мультиборде 10. При необходимости, можно изначально сделать это количество больше, забив пустыми строками.

Начальное значение (при создании) TEST_NUMSTR = 10.
Загруженные файлы
5
Lord_Teo, а после удаления они обратно норм возвращаются?
27
Проверь! Тут всего 3 триггера. Триггер, который Delete 5 6 можешь переделать под изменение строчек и добавление.

Держи, тестируй!
Загруженные файлы
5
Lord_Teo, добавил чисто один триггер
Аналогичная ситуация, на 2 изменение начинаются баги

Может конечно еще рефордж глючит, но вроде в нем сохранились все баги и оригинала.
Например, заметил дисинхронизацию при наличие большого уровня улучшения, порядка 30.
Загруженные файлы
27
Artem48:
Lord_Teo, добавил чисто один триггер
Аналогичная ситуация, на 2 изменение начинаются баги
Какие баги?
Скинь карту.
30
Сколько работал с мультибордами — ни разу не сталкивался с такими багами, и честно говоря даже анализировать почему у вас бати не хочется. Пример постоянного изменения мультиборда, который я когда-то делал — xgm.guru/p/plague/dev1, мой мини-набор методов для работы с ячейками мультиборда: xgm.guru/p/plague/dev0 (MBItems).

PT153, познакомься с таким типом переменной, как multiboarditem, в библиотечке по ссылке выше оно есть и используется. Не пользуйся bulk операторами для доски в целом.
5
Lord_Teo, просто вводи 1-2-1-2-1-2...

Clamp, короч я понял в чем баг. Допустим есть 12 строк в мультиборде с каким-нибуть текстом. Если удалим 5 рядов, а затем опять добавим, то у меня переставали отображаться некоторые строки.
Эмпирическим путем нашел фикс этой ситуации. Убавлять число рядов не сразу на 5, а по одному. Можно даже в цикле.
Собственно вот изначальный триггер который багался:
А вот я его пофиксил:
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.