J
expert
offline
Опыт:
48,447Активность: |
Мультиборд
Данная статья расскажет вам, как надо нормально и правильно создавать MultiBoard, или в русской версии WE Меню паузы (но дальше мы будем называть ее просто MultiBoard-ом).
Это статья состоит из четырех частей, первая – введение, во второй я расскажу о теории создания MultiBoard-а, и обо всех действиях ему присущих, в третьей раскажу о некоторых хитростях и фичах мультиборда, а в четвертой перейдем непосредственно к практике, и попробуем создать свой простенький MultiBoard. Введение Думаю, вы все уже видели MultiBoard, т.к. не одна хорошая, или даже просто не плохая ката, не обходится без этой поистине уникальной вещи. MultiBoard может содержать в себе очень много информации, и притом совершенно не мешает окружению игры, т.к. ОчЕнЬ компактно складывается, в отличие от LeaderBoard. Его применение не ограничивается просто выводом информации, также его можно использовать во многих других по истине разнообразных целях:
Теория Что нужно сделать, чтобы создать MultiBoard: Нужно использовать действие: Меню паузы – Create. Пример:
Код:
Что означает это действие? Означает то, что будет создан MultiBoard под названием “Мультиборд” с 3-мя столбцами и 2 строчками. Вы можете попробовать, но учтите, что MultiBoard не может быть одновременно создан во время загрузки карты, и поэтому перед созданием ставьте событие Wait 0.1 (Но также можно обойтись без Wait-а указав в событии не Map initialization, а время - Elapsed game time is 0.01 seconds). А теперь пробуйте. Вы заметили, что создается какая-то шестиглазая :) лажа. Это из-за того что по умолчанию стоит иконка в виде глаза, и так как у нас 3 столбца и 2 строчка то создается, 3*2 иконок и текстов расположенных правее их, но так как тексты у нас пока не написаны потому они не отображаются. Запомните column – это столбик, row – это строчка. Можно даже сказать что Column – это x (абсцисса) координата, а Row – это y (ординат). Подсчет столбиков и строчек начинается с верхнего левого угла MultiBoard-а. Чтобы поменять глаз на другую иконку надо воспользоваться действием “Меню паузы – Set Item Icon”: Пример:
Код:
После этого действия в последнем созданном MultiBoard-е в 1 строчке 2 столбца если иконка не скрыта то она примет вид монетки, потому что “ UI\Feedback\Resources\ResourceGold.blp” - Путь, указывающий на ее текстуру. С тем же успехом можно поставить и другую текстуру, а лучше щелкнуть кнопку “Выбрать пиктограмму” и выбрать ту иконку чья текстура нам нужна. Также можно приписать к иконке текс с помощью действия “Меню паузы – Set Item Text”: Пример:
Код:
В результате во 2 столбце 2 строчки правее от иконки появится Текст - “Надписьь”. Теперь другая проблема – этот текс не помещается в отведенное уму пространство до следующей иконки. Это решимо, нужно следующие действие: Меню Паузы – Set Item Width: Пример:
Код:
Ну, в принципе 1% может измеряться как длина одной иконки ну или ~0.5 см., и действие будет означать, что во 2 столбце 2 строчки расстояние, отведенное для текста, будет ровняться 1.5 см. от иконки. Почему 1.5 см.? Подсчет расстояния начинается с левой стороны иконки если длину поставит 1% то текста вообще не будет видно т.к. вместо текста сразу будет следовать следующая иконка. а если 0%, то эта иконка будет поверх следующей. Меню паузы – Set Item Color. Им можно поменять цвет текста. Пример:
Код:
Будет означать, что в 2 столбце 2 строки текст поменяет свой цвет на чуть прозрачно красный, почему именно красный, потому что все цветы определяются по технологии RGB (RedGreenBlue) по трем цифрам, от 0 до 255, но у нас стоят проценты, и за 255 принято 100%, значит получилось что - 100% красный, 0% зеленый, 0% синий. В действии есть еще 4 число, оно определяет прозрачность текста, у нас стоит 20% “прозрачности”, обратите внимании не “видимости”, а ”прозрачности”. Также можно поменять название мультиборда (Меню паузы – Change Title) И поменять его цвет также как в случае с текстом, но только другим действием (Меню паузы – Change Title Color). Можно также скрывать иконки и тексты: Меню паузы - Set Item Display Style Пример:
Код:
Получится что в указанном месте исчезнет иконка, можно также скрыть текст (не удалить, а просто скрыть), а можно и то и другое. Событие Меню паузы – Destroy, Полностью удаляет MultiBoard. А событие Меню паузы – Show/Hide, Просто скрывает его, сохраняя все его настройки, и потом его можно снова показать и он останется без изменений. MultiBoard можно свернуть в правый верхний угл действием Меню паузы – Minimize/Maximize. А можно и удалить все его параметры (Меню паузы – Clear), и число колонок и столбцов приводится к 0.Также их количество можно изменить при помощи действий: Меню паузы – Change Number Of Rows(Изменяет количество строк) Меню паузы - Change Number Of Columns (Изменяет количество столбцов) Обратите внимание, что на их количестве стоят ограничения, но это можно легко обойти, так как WorldEdit до тупости тупой, его можно обмануть, начиная этим способом и кончая Return Bug-ом. А все очень просто, нужно на месте числа просто использовать функцию – Arithmetic. И при ее помощи можно задавать сколько угодно колонок и столбцов, например максимум столбцов 16 – а мы хотим 40, и потому делаем 20+20, и все. Запомните: Главное в MultiBoard-е, это дизайн, если все будет стоять где попало, и все тексты написаны одним цветом, то они мысленно сливается друг с другом, и не понимаешь на какую именно строчку смотреть: Это может быть очень плохо, если ты играешь в очень активную карту и время чтобы посмотреть на MultiBoard всего секунда, и приходится искать глазами, где та информация, которая нужна, а если, например, выделить ее красным, то глаз сразу реагирует на нее, и следить за состоянием информации гораздо проще – в этом суть дизайна. И также хотел бы сообщить что расстояние между строчками изменить НИКАК нельзя, не через триггеры не через джаз, не через что либо еще... Пожалуй, по теории это все. Хитрости и фичи 1. Если при оформлении Мультиборд в одном из его действий в значении столбца/строчки поставить "0", то в этом случае действие произойдет на все столбики/строчки Например:
Код:
В этом случае Весь текст находящийся во 2-ом столбике станет красным, тоже правило действие если указать "0" в номере строчке. Если же указать "0" и в столбике и в строчке, то в этом случает изменение произойдет со всем multiboard-ом. 2.Вы наверно уже видели multiboard в карте Dota? вы наверно обратили внимание что multiboard не показывает неиграющих игроков... как же это сделать? очень просто, сначала нужны 2 переменные: одна обычная типа целочисленная переменная (integer), назовем ее "player" одна массив типа игрок (player), назовем ее "MBplayer" При событии "Map Initialization" делаем следующие: Код:
И что же у нас получилось? Объясняю: player - это количество играющих игроков на карте. а в переменную MBplayer в значение [1] записан первый по номеру играющий игрок, в [2] второй по номеру, и т.д. но не обязательно что в [1] записан первый игрок (красный), т.к. его может не быть (он может не играть), а в [1] записан именно первый ИГРАЮЩИЙ игрок, ну и т.д. И зачем же это все нужно? а все очень просто, например у нас будет multiboard показывающий характеристику игроков (ну как в картах AoS) это будет что-то вроде таблица (multiboard и есть таблица) заголовки которой будут занимать... скажем... 2-е строчки, а дальше идет перечисление игроков, а потом в самом низу таймер показывающий время игры... общий размер multiboard[b]-а у нас получается из:
это мы узнали количество строчек в этом multiboard-е, количество столбиков уже зависит от самого твоего multiboard[b]-а... Далее, зачем нам понадобилась переменая [B]player? т.к. есть такая функция "Преобразование - Convert Player Index To Player" она может пригодится для multiboard-а, а именно в использовании цикла на распределение очков убийств, но эта функция определяет игрока по его номеру, но такое в данном случае не выйдет (потому что у нас совершено иной набор игроков) и потому вместо этой функции мы будем использовать переменную player, которая содержит тот набор который нам нужен. Все циклы используем от 1 до player, потому что больше не требуется ведь у нас все равно игроков не больше player-а Примечание: Если вы еще будете где использовать какие либо действия со всеми игроками, используйте этот также от 1 до player-а, т.к., опят повторю, больше не требуется.Остался таймер... советую посмотреть эту тему, там вы поймете как делать таймер, но т.к. строка таймера у нас всегда разная, но она будет всегда ровна 3+player, вот вроде бы и примерное объяснение такого multiboard-а... 3. как сделать для каждого игрока multiboard[b] отдельно? Очень распространенный вопрос, но сделать это легко... Но только через джаз... для начало нужна переменная массив типа [b]multiboard, и назовем ее "Multiboard". нужно при инициализации использовать код: Код:
данный код Создаст 12 multiboard[b], каждый из них, будет помещен в переменную [I]multiboard, от 1 до 12 ячеек, [b]multiboard[b] из первой ячейки будет показан 1-ому игроку, [b]multiboard[b] из 2-ой ячейки будет показан 2-ому и т.д. Если же мы хотим изменить [B]multiboard у 4-ого игрока, надо изменять multiboard[4], если же хотим изменить multiboard у всех игроков, то надо будет изменить каждую ячейку переменой [b multiboard /b], лучше конечно использовать цикл... Примечание: Вообще-то было бы лучше если будет использован пункт 2 из данной части статьи, и при последующем создавании multiboard-а он создавался циклом не для всех игроков (играющих и не играющих), а для только играющих, через переменную playerну вот и все... Практика Действия я подробно расписывать не буду, т.к. если вы внимательно хотя бы 2 раза прочитали “теорию” у вас не должно возникнуть с этим проблем, и вы должны стараться справится сами, т.к. практика учит быстрее теории. В конце статьи прикреплен файл, с уже сделанным MultiBoard-ом о котором будет идти речь, вы можете посмотреть его, НО, суть практики не в том чтобы смотреть уже сделанную работу, а в том чтобы самому ее сделать, настоятельно рекомендуется сначала попробовать самим, хоть даже если и покажется сложным. Сделаем multiboard который будет отображать жив юнит или мертв, если мертв то через какое время. Сначала попробуйте сделать MultiBoard прочитав только его описание. Если не получилось - прочитайте инструкцию, смысл инструкции в том что она не указывает какие действия надо ставить, а только говорит что это действие должно делать, вы прочитали теорию, и должны знать - какое действие поставить если, Если опять Если опять не получилось - смотрите пример. Состояние юнита Создадим простенький MultiBoard Инструкция
Для начала создадим карту, удалим все действия из триггера “Initialization”, и первое что поставим это “Wait 0.1”, после создаем MultiBoard c 2-я столбцами и 3-я строчками, назовем этот MultiBoard “Состояние юнита”.Далее можно пользоваться циклами, но так как предполагается что читатель – новичок, будем делать без циклов - просто по порядку. (Чтобы было меньше писать столбики и строчки будем обозначать так: x-y, где X- столбцы, Y – строчки.) Далее делаем, чтобы в позициях 1-2, 1-2, 1-3, 2-1, 2-2, 2-3, скрывалась иконка, но показывался текст. Далее: Код:
Далее поставим 2-х юнитов на карту рядом друг с другом (Артеса и Илидана). Создаем переменную массив integer (целочисленная) OTC4ET. Делаем следующий триггер. Код:
Теперь запустите карту, и убейте любого юнита другим юнитом и посмотрите на MultiBoar. Правда, здорово :). Надеюсь, вы поняли, как делать MultiBoard, ниже я выложил его пример. Также советую посмотреть эти наработки: Наработка Iron-а "Status Metr на Мультиборде" мая наработка "Система характеристики юнита" Мая карту "Мультибордные танчики", правда чуть не доделанные также и еще мой вертикальный прогрес бар, он не для использования, а большей частью для примера как создавать такие вещи... Но плохо в нем то что расстояние между строчками не изменить( Отредактировано Jon, 14.08.2006 в 07:23. |
14.02.2006, 17:32 | #1
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
А однако так много желающих почитать, я прямо в ужасе.:) Отредактировано Jon, 15.02.2006 в 11:11. |
15.02.2006, 11:00 | #2
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
N.Sy.Prophet
Йа Байан
offline
Опыт:
13,122Активность: |
Достаточно не плохо. Мне кажется лучше чем у Вардена, НО видно что писал, просто стараясь переплюнуть ;). |
15.02.2006, 18:03 | #3
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
БГЫ :D Нет, не только ради этого. Ну ты и сам подумай, кому нужна статья хуже той которая уже написанна? |
|
15.02.2006, 18:46 | #4
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
N.Sy.Prophet
Йа Байан
offline
Опыт:
13,122Активность: |
Jon тем же кому нужна экспа за вышенаписанную.
Давайте я тоже напишу, а? Дадим админам свободу выбора, хо! И вообще - пишете про мультибоард, пишите что-то новое, МА... ДЕВИЗИЮ ВАШУ! Кстати, делать мультибоарды из картинок не пробовал? Очень полезно );-) |
16.02.2006, 18:17 | #5
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
А прогресс бары из МБ видели? |
16.02.2006, 18:19 | #6
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
N.Sy.Prophet
Йа Байан
offline
Опыт:
13,122Активность: |
NETRAT нет, заделись ссылочкой. Будем благодарны ;)
Nimensy добавил: голосовать не буду, т.к. моя оценка - выше среднего... |
16.02.2006, 18:34 | #7
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
Господи да что в них особенного, его же сделать пара пустяков. Jon добавил: Его кстате можно сделать двумя способами. первы легкий, но качество среднее. второй тяжолый но качество хорошое. Jon добавил: NETRAT Ты лучше спроси себя, где ты видел игру в танчики в мультиборде. Jon добавил: Цитата:
Цитата:
Ну ты сам подумай, разве дали бы опыта за плохую статью. Так что не говори глупости:). |
|||
16.02.2006, 19:32 | #8
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
N.Sy.Prophet
Йа Байан
offline
Опыт:
13,122Активность: |
Jon за эксп бьются до последнего по себе знаю ЫЫЫЫЫ :)....
|
16.02.2006, 20:57 | #9
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Jon при чем тут танчики? vlad_com вообще инвентарь в мультиборде делал, так что ... я не говорю про ламерские поделки самоделкина, я говорю про более-менее универсальную систему. Вертикальны прогресс бар делал?
Nimensy по поиску, наверное, сначала надо попробовать |
17.02.2006, 01:43 | #10
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
Его сделать не так просто как горизонтальный, основная проблема это то, что растояние между иконками нельзя убрать, ну покорайней мере нельзя убрать тригерно, на счет джаза незнаю, если можно убрать, то уж хотябы одноцветными иконками сделать, уже какойто прорыв будет. |
|
17.02.2006, 05:20 | #11
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Jon значит делал, это верно, нет способа уменьшить расстояние между рядами - даже в жассе нет.
|
17.02.2006, 13:29 | #12
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
0pJl9lTa
offline
Опыт:
3,397Активность: |
А имахо первая строчка работать уже не будет =) Да хотя бы потому что "Мультиборд" нада писать в ковычках. Мы то с вами все понимаем, но статьи то пишуца для новичков! |
17.02.2006, 14:22 | #13
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
Поправил это и подчеркнул все слова в тригах которые изменяемы. NETRAT Нука попробую еще раз сделать, мож получится хоть как-нибудь, через три с половиной часа выложу. Отредактировано Jon, 17.02.2006 в 22:18. |
|
17.02.2006, 16:59 | #14
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
NETRAT, Все я сделал "Вертикальный прогресс бар", получилось неплохо, сжал все в три триггера и 2 переменые, однако проблема с растоянием так и осталась неразрешимой, так что, смотри сам...
Отредактировано Jon, 17.02.2006 в 23:05. |
17.02.2006, 21:40 | #15
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Iron
Листовой
offline
Опыт:
24,427Активность: |
Цитата:
А вот тут ты лопухнулся, т.к. при использовании комманды wait в цикле, она работает не корректно, причем совершенно непредсказуемо (1-ин раз может от 30 до 0 идти 32 сек., а иной раз и 40 сек.) |
|
17.02.2006, 23:19 | #16
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Вейт это вообще ацтой аццкий =\ я уже много раз говорил почему. Оно может и удобно, но ужасно криво
Да сложность вертикального прогресс бара как раз в промежутках =\ задача неразрешима NETRAT добавил: МБорд нормальный, правда про оптимальность использования триггеров говорить не приходится |
17.02.2006, 23:57 | #17
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
Цитата:
Код:
|
|
18.02.2006, 16:58 | #18
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Ну если я и джаз подключу в свою статью, то новичкам уж тем более совсем ничего не будет понятно. Пусть уж лучше так сначала резберутся. |
18.02.2006, 17:54 | #19
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
KENDO
offline
Опыт:
5,817Активность: |
кстати ктото там писал про расстояние, насчет вертик. столбцов не знаю, а вот с горизонатльными там есть трабл, лучше всего в триггах прописывать или на свернуть МБ, либо на свернуть и развершнуть... |
18.02.2006, 19:53 | #20
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|