что ж, раз это вас заинтересовало -
значит подробный гид по строительству дождался вашего внимания
Основа создания Магазина Душ лежит на команде Scoreboard.
Логичным началом при работе с данной командой является создание событий,
счет которых будет отслеживаться Системой Счета Игровых Событий (ССИС).
вначале создаем событие, которое будет вести счет убитых игроком зомби
именно это событие является ключевым и от него будут зависеть
все очки остальных событий
/scoreboard objectives add kills stat.killEntity.Zombie
событие с название kills с соединенным критерием stat.killEntity.Zombie
в данной новости только этот критерий будет учитываться ССИС
далее создаем два фиктивных события с критерием dummy
1./scoreboard objectives add board dummy
этой командой мы создаем фиктивное событие с именем board.
имя события может быть абсолютно любое, на ваш вкус,
но обязательно написано латиницей, так как название этого события
нам нужно будет вписать в тестовую команду при покупке вещей в магазине.
для чего нужно создание этого события?
именно это событие будет начислять и копить у игрока те очки, которыми
он будет расплачиваться в Магазине Душ за покупку вещей.
2./scoreboard objectives add сундук dummy
второе фиктивное событие с названием сундук.
здесь также можно задать любое название даже на русском языке.
я задал это символичное название, будто убитые души будут складываться
в какой-то мистический сундук.
для чего нужно создание этого событие?
оно нужно только для визуализации и всё, счет этого события будет
отображаться на экране.
поэтому для этого события мы задаем еще одну команду
/scoreboard objectives setdisplay sidebar сундук
теперь как только в событие с названием сундук будут
начислены очки, у нас на экране появится панелька с заголовком "сундук".
итак, мы создали три события: одно ключевое - на убийство зомби, единственное событие,
счет которого будет считаться игрой, и два фиктивных - которые будут полностью зависеть
от ключевого события, но у каждого из этих фиктивных событий будет своя роль и свои
начисленные очки.
**_______________
*****************
теперь нам нужно создать тест на очки ключевого события -
а именно тест на очки убийства зомби у игрока.
для этого используем командный блок в котором и задаем тест/scoreboard players test @a kills 1 10 и к этому командному блоку подводим генератор импульсовкак только игрок убьет зомби у него будет
начислено очко по событию kills, и если его очки убийства будут от 1 до 10 -
компаратор сразу выдаст сигнал от командного блока
усилим повторителем выходной сигнал из компаратора
и разведем этот сигнал на три командных блока1. В первом командном блоке задаем команду/scoreboard players set @a kills 0при выходе сигнала из компаратора эта команда будет устанавливать
ноль очков игроку для события kills, то есть теперь начисленные игроку
очки за убийства не будут попадать в диапазон теста от 1 до 10, поэтому
тест на очки в командном блоке будет отрицательным и сигнал на выходе
из компаратора будет гаситься. это нужно для того, чтоб в цепи после ком-
паратора не оставался сигнал, и при новом убийстве на командные блоки
под номерами 1,2 и 3 вновь подавался импульс.
2. Во втором командном блоке задаем команду на начисление очков
для события с названием board. /scoreboard players add @a board 1при каждой подаче сигнала на этот командный блок
игроку будет прибавляться одно очко в этом событии3. В третьем командном блоке мы задаем команду для начисления очков
для события сундук и начисляться они будут фиктивному игроку
под названием "души"./scoreboard players add души сундук 1таким образом при каждом поступлении сигнала на этот ком.блок
у нас будет прибавляться одно очко фиктивному игроку с именем души.
Визуально - на экране в табличке с названием сундук будет увеличи-
ваться счет убитых душ **_______________
*****************
разберем эту схему.
на стене магазина ставим кнопку, за стеной на один блок ниже блока,
где установлена кнопка ставим первый командный блок с командойtestfor @p[score_board_min=1,r=10]эта команда будет проверять счет игрока, нажавшего кнопку
по событию с именем board.
В четвертом командом блоке задаем команду/scoreboard players remove души сундук 1эта команда будет минусовать из таблички на экране одну душу.
В третьем командом блоке задаем команду/scoreboard players remove @p board 1эта команда будет минусовать одно очко из счета
игрока по событию board.
Во втором командном блоке мы задаем предмет, который игрок покупает/give @p[r=20,c=1] minecraft:rotten_flesh 1в данном случае игрок купит за одну душу одну гнилую плоть
И в пятом командном блоке задаем команду, которая будет выводить на экран
сообщение, если у игрока не будет достаточно душ для покупки предмета/title @p title {text:"недостаточно душ",color:dark_red}Так можно создать нужное количество кнопок в магазине
с покупкой абсолютно разных предметов за разную цену
Итак, при достаточном количестве душ мы сможем купить нужный предмет.
При недостаточном количестве мы получим сообщение на экран об этом **_______________
*****************
Очень надеюсь, что я доступно всё объяснил текстом.
Ну а самым любопытным и, конечно, создателям карт рекомендую посмотреть
**_______________
*****************
желающим во всем разобраться карта магазина
скачать