Добрый день. Кидаю сразу скрин:
Мне нужно сделать разные мультибоарды для разных игроков(ох, как много в поиске было ответов), как я понял с помощью локального игрока я смогу их скрыть кроме основной. Но вот как это конкретно написать, я так и не понял(плохо с jass'ом, максимум - локальные переменные). Если кому не сложно, скажите что нужно написать в кастом тексте для моей цели. Заранее спасибо.

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

вот рабочий вариант
1 строчка - if GetLocalPlayer() == GetEnumPlayer() then
2 строчка - call MultiboardDisplay(bj_lastCreatedMultiboard, true)
3 строчка - endif
наверн блок If не закрыл endif.

Если делать через гуи, то получиться разве разные таблицы показывать?
Да, но тогда всем ты будешь показывать. А не конкретному игроку опред таблицу. Это не выгодно, поэтому корректируем условие. Там нельзя че-то указать игрока, ток вкл/выкл. Я думал там все есть, короче подзабыл.

Есть еще один недостаток: MultiboardDisplay при инициализации не работает. Так, что надо будет показать попозже. Так что помни это. Просто ты мультиборды при старте создаешь.
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
27
4 года назад
Отредактирован MpW
2
мультиборд у игрока может быть показан только ОДИН. Если у вас несколько мультибордов, то есть команда показать какой-то конкретный мультиборд игроку. Если ранее был отображен какой-то другой мульт, то он исчезает, и на его место встает новый

MultiboardDisplay(мультиборд) - отобразить мультиборд. ищи в действии гуи
IsMultiboardDisplayed(мультиборд) - показан ли этот мультиборд. проверка в boolean

отображение мульта делать лучше не при инициализации, конечно можно создать. Но на старте ты не сможешь отобразить мульт игроку. Нужно спустя какое-то время отобразить.
0
14
4 года назад
0
call MultiboardDisplay(bj_lastCreatedMultiboard, GetLocalPlayer() == Player(GetConvertedPlayerId(GetEnumPlayer())))
Сделал так, но не сработало(Заменил кастом текст, тот что на скрине,). Опять же повторюсь, не особо понимаю как все это работает
upd, добавил native MultiboardDisplay takes multiboard lb, boolean show returns nothing в код карты, не помню где но надо было что-то похожее сделать.
2
27
4 года назад
Отредактирован MpW
2
if GetLocalPlayer() == Player(GetConvertedPlayerId(GetEnumPlayer())) then
	call MultiboardDisplay(bj_lastCreatedMultiboard, GetLocalPlayer())
endif
типа вот так. в гуи вообще-то должна быть такая функция
короче не обязательно использовать GetLocalPlayer, это ошибки мои. можно сразу, итак функц локально работает
call MultiboardDisplay(bj_lastCreatedMultiboard, Player(GetConvertedPlayerId(GetEnumPlayer())))

upd, добавил native MultiboardDisplay takes multiboard lb, boolean show returns nothing в код карты, не помню где но надо было что-то похожее сделать.
это не обязательно делать. это ты делал для определения кол-во золота данного типа юнита? если да. то понятно, там функции взяты из AI-файлика, короче они не были объявлены.
native GetUnitWoodCost takes integer unitid returns integer
native GetUnitGoldCost takes integer unitid returns integer
И поэтому их суют наверх для объявления. для MultiboardDisplay такое делать не нужно
0
14
4 года назад
0
Такая вот ошибка:
А тут может быть дело в рефордже?
Загруженные файлы
2
27
4 года назад
Отредактирован MpW
2
VinerX, короче жестко я тут попутал. тут рефордж не причем. вместо boolean я игрока пихать начал. А так оказывается указать в нативку конкретному игроку нельзя.

вот рабочий вариант
if GetLocalPlayer() == Player(GetConvertedPlayerId(GetEnumPlayer())) then
call MultiboardDisplay(bj_lastCreatedMultiboard, true)
endif
0
14
4 года назад
0
МрачныйВорон:
VinerX, короче жестко я тут попутал. тут рефордж не причем. почему ругается не ясно
ну я брал и писал в кастом тексте этот код
call MultiboardDisplay(bj_lastCreatedMultiboard, Player(GetConvertedPlayerId(GetEnumPlayer())))
, но выскакивает указанная ранее ошибка. Если делать через гуи, то получиться разве разные таблицы показывать?

upd, текст тот удалил увидав сообщение, но он опять появился. Так вот, ошибка missing:endblock (проверил на новой чистой карте), предположу что кастом текст мешает - можно ли в нем делать по несколько строк, или нужно в одну большую весь код уместить?
2
27
4 года назад
Отредактирован MpW
2
вот рабочий вариант
1 строчка - if GetLocalPlayer() == GetEnumPlayer() then
2 строчка - call MultiboardDisplay(bj_lastCreatedMultiboard, true)
3 строчка - endif
наверн блок If не закрыл endif.

Если делать через гуи, то получиться разве разные таблицы показывать?
Да, но тогда всем ты будешь показывать. А не конкретному игроку опред таблицу. Это не выгодно, поэтому корректируем условие. Там нельзя че-то указать игрока, ток вкл/выкл. Я думал там все есть, короче подзабыл.

Есть еще один недостаток: MultiboardDisplay при инициализации не работает. Так, что надо будет показать попозже. Так что помни это. Просто ты мультиборды при старте создаешь.
Принятый ответ
0
14
4 года назад
Отредактирован VinerX
0
Ошибка пропала (ура! Чертовы пробелы, вот почему python так приглянулся), но таблица не появляется. На пожарный случай дам скрин
То есть я создаю борды по кол-ву игроков, все закрываю, а потом пытаюсь открыть уже только определенные для конкретных игроков.
Загруженные файлы
2
27
4 года назад
Отредактирован MpW
2
VinerX, работает?

Есть еще один недостаток: MultiboardDisplay при инициализации не работает. Так, что надо будет показать попозже. Так что помни это. Просто ты мультиборды при старте создаешь. Измени событие - "инициализация" на "спустя 5 сек"
Загруженные файлы
0
14
4 года назад
0
Заменил событие как вы сказали, не появилась.
2
27
4 года назад
Отредактирован MpW
2
посмотрел. а попробуй
я всегда показ делал в конце,
Загруженные файлы
0
14
4 года назад
Отредактирован VinerX
0
Ура, работает (на скрине - все вырубленное, чтоб не мешало на всякий случай). Спасибо огромное, что там помог!) Осталось все это еще и проверить...
Загруженные файлы
1
27
4 года назад
1
VinerX, работает?
Чтобы оставить комментарий, пожалуйста, войдите на сайт.