WarCraft 3: "Мулитиборды" или "Доска статистики"

База примеров на GUI
И так многим хотелось сделать Мультиборд но они не знали как. Вот и опишу несколько способов создания этого диковинного Зверя.
В статье описаны следующие примеры:
  1. Простой Мультиборд
  2. Сложный Мультиборд
Используемые объекты:
"Игрок 1" "игрок 2" "игрок 3" - игроки то есть я\ты\мы\вы\они и т.д.

Простой Мультиборд

Дополнительно используемые объекты:
"PScore"[] - в эту переменную будут записываться фраги наших героев. Где номер массива это номер игрока.
И так простой. Все его видят, все в нем участвуют.
Сделаем его из 2х столбцов на 4 строки, для 3х игроков и переменную "переменная Целочисленная(массив)".
1я колонка 1й строки будет - Игроки
во 2й, 3й и 4й строках 1й колонки будут Ники игроков.
2я колонка 1й строки будет - Фраги
соответственно фраги игроков
Мультиборд у нас готов, но он не зачисляет фраги нам, для этого нужно создать триггер который при убийстве героем (кого-нибудь\чего-нибудь) будет засчитывать фраг его владельцу.
Возрадуйтесь готово, в строках отображаются имена, а на против имен считаются ваши фраги)) Но так как это простой мультиборд то у нас отображаются все игроки сразу независимо от того играют они или нет, что в свою очередь не очень удобно.


Сложный Мультиборд

Дополнительно используемые объекты:
"переменная Целочисленная(массив)"[X] - в эту переменную будут записываться фраги наших героев. Где [X] порядковый номер массива в переменной, служащий одновременно и порядковым номером игрока.
"переменная Целочисленная1(массив)"[X] - эта массивная переменная будет содержать порядковый номер строки в таблице, игрока выбравшего героя для игры. Где [X] порядковый номер массива в переменной, служащий одновременно и порядковым номером игрока.
"переменная Целочисленная2(массив)"[X] - в эту переменную будет записываться количество смертей наших героев. Где [X] порядковый номер массива в переменной, служащий одновременно и порядковым номером игрока.
"переменная Целочисленная3(массив)"[X] - в эту переменную будет записываться количество смертей и фрагов наших героев. Где [X] порядковый номер массива в переменной, служащий одновременно и порядковым номером игрока.
"Иконка1" "Иконка1" "Иконка1" - иконки соответствующие выбранным героям
"Бабушка а почему у тебя большие зубы?" Я бы испугался будь у моей бабушки такие зубы, но вам пугаться нечего сделать сложный мультиборд может каждый единственное различие от варианта выше это его время создания вид, короче все.

И так создадим сложный мультиборд:
  1. на 4 столбца с названиями 1й Герой, 2й Ник Игрока, 3й Фраги, 4й Смерти
  2. на всех игроков причем появляться они будут по мере выбора героев игроками.
  3. Строка Игрока будет соответствовать его цвету
  4. Цвет строки покинувшего игру Игрока будет Белого цвета, а к имени добавится приставка <Leave>
  5. В 1м столбце будут отображаться иконки героев.
  6. последняя строка 1й столбец ничего, 2й столбец "Итого:", 3й столбец общий счет Фрагов, 4й столбец общий счет смертей
И так создадим "тело" мультиборда:

Теперь идем в триггер где у вас выбор героя, подкорректируем его немного:

  1. до действия:
> -Боевая единица  - Create 1 "Герой1" for (Owner of (Trigering unit) at (Center of "Область4") facing Стандартная ориентация зданий degrees
Ставим 2 действия:

> -Меню паузы - Change the number of rows for (Last created multiboard) to (Number of rows in (Last created multiboard) + 1)
и
> -Set "переменная Целочисленная1(массив)"[(Player number of(Triggering Player))] = (Number of rows in (Last created multiboard))

Этим мы создали дополнительную строку в Таблице для наших махинаций и вторым действием мы взяли количество строк в таблице и занесли его в переменную "переменная Целочисленная1(массив)"[Х], превратив их тем самым в порядковый номер строки в таблице
  1. после действия:
> -Боевая единица  - Create 1 "Герой1" for (Owner of (Triggering unit) at (Center of "Область4") facing Стандартная ориентация зданий degrees
Ставим действия:

> -Меню паузы - Set the icon for (Last created multiboard) item in column 1, row (Number of rows in (Last created multiboard)) to "Иконка1"
__Этим действием мы поставили в первую колонку нашей строки иконку выбранного героя__

3)после выше написанного ставим

> -Меню паузы - Set the text for (Last created multiboard) item in column 2, row (Number of rows in (Last created multiboard)) to (Name of (Triggering Player))
> -Меню паузы - Set the text for (Last created multiboard) item in column 3, row (Number of rows in (Last created multiboard)) to (string("переменная Целочисленная1(массив)"[(Player number of(Triggering Player))]))
> -Меню паузы - Set the text for (Last created multiboard) item in column 4, row (Number of rows in (Last created multiboard)) to (string("переменная Целочисленная2(массив)"[(Player number of(Triggering Player))]))
> -Меню паузы - Set the width for (Last created multiboard) item in column 1, row (Number of rows in (Last created multiboard)) to 5.00% of the total screen width
> -Меню паузы - Set the width for (Last created multiboard) item in column 3, row (Number of rows in (Last created multiboard)) to 5.00% of the total screen width
> -Меню паузы - Set the width for (Last created multiboard) item in column 4, row (Number of rows in (Last created multiboard)) to 5.00% of the total screen width
> -Меню паузы - Свернуть (Last created multiboard) 
> -Меню паузы - Развернуть (Last created multiboard) 
__Этими действиями мы поставили во вторую колонку ник нашего игрока, третью колонку кол-во фрагов, а в четвертую кол-во смертей нашего выбранного героя, и поставили размеры строке__

  1. А сейчас нужно добавить конструкцию при которой цвет нашей строки будет соответствовать цвету игрока.

> -If\Then\Else, multiple function
> --Если - условия:
> ---(Owner of (Triggering unit)) равно Игрок 1(красный)
> --То - Действие:
> ---Меню паузы - Set the color for (Last created multiboard) item in column 0, row "переменная Целочисленная1(массив)"[[(Player number of(Triggering Player))]] to (100.00%, 0.00%, 0.00%) with 0.00 transparency
> --Иначе - Действие:
> ---If\Then\Else, multiple function
> ----Если - условия:
> -----(Owner of (Triggering unit)) равно Игрок 2(синий)
> ----То - Действие:
> -----Меню паузы - Set the color for (Last created multiboard) item in column 0, row "переменная Целочисленная1(массив)"[[(Player number of(Triggering Player))]] to (0.00%, 0.00%, 100.00%) with 0.00 transparency
> ----Иначе - Действие:
> -----If\Then\Else, multiple function
> ------Если - условия:
> -------(Owner of (Triggering unit)) равно Игрок 3(сине-зеленый)
> ------То - Действие:
> -------Меню паузы - Set the color for (Last created multiboard) item in column 0, row "переменная Целочисленная1(массив)"[(Player number of(Triggering Player))] to (0.00%, 100.00%, 100.00%) with 0.00 transparency
> ------Иначе - Действие:
>  и еще 9 подобных для оставшихся игроков.

С выбором героя закончили, перейдем на подсчет смертей и фрагов:
Триггер подсчета Фрагов и Смертей:
Предпоследняя подготовка, последняя строка 1й столбец ничего, 2й столбец "Итого:", 3й столбец общий счет Фрагов, 4й столбец общий счет смертей. В этом триггере нет ничего сложного главное какое решение применить запихнуть его в триггер или сделать отдельно.
И заключительная часть это Цвет строки покинувшего игру Игрока будет Белого цвета, а к имени добавится приставка <Leave>
Делаем отдельный триггер:


Это все ребята))

Просмотров: 5 994

beril #1 - 6 лет назад -5
Серый цвет режит глаза (((
Aazkaal #2 - 6 лет назад -5
Спасибо; как раз испытывал с этим затруднения :)
Sergant1000 #3 - 6 лет назад -5
Рад что смог помочь)
Daro #4 - 6 лет назад -5
Сложновато(
Sergant1000 #5 - 6 лет назад -4
Куда уж сложновато???, разжевано же.
xDanteZx #6 - 6 лет назад -5
Спасибо за мультиборд, не умел делать, теперь научился =)
TheSuNR1sE #7 - 5 лет назад 0
А можно ли сделать переменную для иконки, при выборе героя дабл-кликом?
Sergant1000 #8 - 5 лет назад 0
TheSuNR1sE, естественно.
TheSuNR1sE #9 - 5 лет назад 0
Sergant1000:
TheSuNR1sE, естественно.
Я имел ввиду "как это сделать?"
Timoxxx #10 - 5 лет назад 0
TheSuNR1sE, Если я тебя правильно понял, то в переменную "строка" можно занести путь к иконке.
Sergant1000 #11 - 5 лет назад 0
а потом просто подставить в нужном месте)