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

Принятый ответ

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

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

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

Вообще, чрезвычайно рекомендую писать мультиборд на JASS (или на LUA, но там я незнаком с API), намного удобнее. Фактически, потребность написать красивый мультиборд привела меня к переходу с GUI на JASS, и мультиборд был реально классным.
0
28
4 года назад
0
Clamp, вот карта, код очень простой, результат налицо.
Загруженные файлы
0
30
4 года назад
0
PT153, извини за наглость, но можешь показать код и результат? Нет под рукой ПК с редактором.
0
28
4 года назад
0
код
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
Загруженные файлы
0
26
4 года назад
Отредактирован Lord_Teo
0
Короче, сделал для примера удаление 5 и 6 строки. Можно выполнять несколько раз. При каждом выполнении удаляется 5 и 6 строка. Лишних строк нет. Можно вместо удаления делать замену.
В первом цикле подсчитываем количество непустых строк.
Во втором цикле присваиваем значениям временного массива значения по порядку из основного массива без пустых строк.

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

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

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

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

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

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