Приветствую тебя, мой читатель. Сегодня я расскажу тебе как решить тысячу и одну проблему, связанную с такими вещами как отображение иконок героев в мультибоарде, награды за уничтожение юнитов, отображение иконок предметов в мультибоарде и все, требующее привязки каких-либо значений к определенным объектам.
Итак, самый простой способ решить все вышеперечисленные проблемы, как понятно из названия темы, создание синхронизации данных, проще говоря - базы данных. К любому объекту можно привязать неограниченное количество данных, но мы, в нашем примере, ограничимся синхронизацией двух показателей, типа юнита и строки к иконке.
Итак, как сказанно в предисловии - синхронизировать мы будем иконки по типу юнита. Создаем в редакторе переменных следующие строки.
DB_Heroes[array] -
Переменная по типу "тип объекта" с пометкой "массив" DB_HeroesIcons[array] -
Переменная по типу "строка" с пометкой "массив" далее, в триггер, можно при инициализации карты, можно в отдельный триггер на прошествие времени - инициализировать базу данных следующим образом.
К примеру, у нас будет всего четыре героя, а именно:
Lich, Tauren Chieftan, Paladin, Demon Hunter В триггер добавляем следующие строки.
set DB_Heroes[1] = Lich
set DB_Heroes[2] = Tauren Chieftan
set DB_Heroes[3] = Paladin
set DB_Heroes[4] = Demon Hunter
Для удобства ставим пустую коммент строку.
set DB_HeroesIcons[1] = ReplaceableTextures\CommandButtons\BTNLichVersion2.blp
set DB_HeroesIcons[2] = ReplaceableTextures\CommandButtons\BTNHeroTaurenChieftain.blp
set DB_HeroesIcons[3] = ReplaceableTextures\CommandButtons\BTNHeroPaladin.blp
set DB_HeroesIcons[4] = ReplaceableTextures\CommandButtons\BTNHeroDemonHunter.blp
Принципиально важно лишь то, что числа массива должны совпадать, это и служит синхронизацией данных. Теперь, допустим, можно развить тему и, например, добавить в ники игроков имена нужных героев, но не те, что есть по умолчанию (ссылка "Hero Name") а, сокращенные варианты или, допусим, раскрашенные.
Потребуется еще одна переменная
DB_HeroesNames[array] -переменная по типу "Строка", с пометкой "массив". Раздаем значения:
set DB_HeroesNames[1] = Леденец
set DB_HeroesNames[2] = Рогатый
set DB_HeroesNames[3] = Cвятоша
set DB_HeroesNames[4] = Илидашко
В таком случае мы синхронизируем все иконки и запишем основной аттрибут каждого героя.
Теперь о работе с базами данных.
В основном это делается с помощью циклов
(For loop integer DB from 1 to HeroDatabaseSize) где HeroDatabaseSize целочисленная переменная, ссылается на максимальный размер базы героев, для нейтральных крипов - отдельное значение, для предемтов - отдельное и так далее.
DB - так же, целочисленная переменная.
На примере с иконками героев и добавлением их в мультибоард:[/color][/b]
Generic unit продает боевую единицу Boolean Comparison: Sold unit is Герой = да.
Actions:
For Each Integer DB from 1 to HeroesDatabaseSize do actions:
if\then\else:
Unit-type of sold unit = DB_Heroes[DB]
then:
Меню Паузы: установить значение для строки (нужная строка) в столбце (нужный столбец) = DB_HeroesIcons[DB]
Теперь, в этом же триггере - добавим к имени игрока - зарезервированное "условное" имя героя следующей строкой:
Игрок: Установить имя игрока: (имя игрока) + DB_HeroesNames[DB]
К одному объекту можно привязать хоть две сотни разнообразных значений.
Например что бы зарезервировать награду за всех нейтралов к каждому базе нейтралов добавляется по 2 переменных, из рандомного значения между которыми и будет выдаваться награда.
Благодарю за внимание, читатель. До скорых встреч.