BBya World

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » BBya World » F.A.Q. / ЧаВо » Как можно использовать командные блоки? + список команд


Как можно использовать командные блоки? + список команд

Сообщений 121 страница 140 из 140

1

ID командного блока: 137
/give <ник_игрока> 137

Вики | Список команд | ССИС | Туториал (англ.) | NBT-данные | Команда tellraw | Как включить командный блок на сервере | ID эффектов, зелий, чар | Редакторы команд


В этой теме обсуждаем - какие есть варианты использования командных блоков...

Можно добавить много команд и придумать великое множество вариантов их использования (в том числе и взымать плату за их использование):

- изменение времени;
- телепорт;
- торговля с сервером (+ это) и частные магазины игроков;
- охранные системы;
- автоматизация метро и меню выбора станции;
- выдача эффектов игрокам;
- проверка состояния счетов;
- глобальные цены, изменяющиеся в зависимости от спроса и предложения;
- спаун квестовых мобов с уникальными характеристиками и пример спауна жителя с заданными характеристиками (обсуждение идеи);
- автоматически восстанавливающиеся блоки в случае разрушения;
- паромные переправы и авиаперевозки;
- собственная система гильдий и самостоятельная прокачка в них;
- развитие профессий (в частности фермеры), разделение труда и частные торговцы;
- анимированные экраны;
- и т.д. и т.п.

Все перечисленные примеры и многое другое уже давно используется на нашем сервере.
Если будете предлагать свои варианты использования командных блоков, не забудьте не только описать сам способ, но и расписать пример: в какой ситуации это могло бы пригодиться...


Объединение нескольких команд в одну.



:flag:
Ребятушки, задавайте вопросы в этой теме без регистрации!!
Не стесняйтесь - вдруг, что не понятно или я не догадался разъяснить :)

121

Veniamin написал(а):

Черт а как сделать чтобы переменная выдавала сигнал при изменении а то я не понял, например мне надо наложить эффект сразу как умрет определенный игрок....

У нас тоже была похожая проблема, когда после смерти надо было выдавать эффект "Повышение здоровья", т.к. его нельзя накладывать постоянно из-за того, что он появляется с пустыми сердечками, которые должны сами наполняться. А постоянное накладывание этого эффекта (как можно делать с другими) просто делает постоянно пустые сердечки...

Так вот, проверить изменение значения переменной можно, если ты проверяешь только "0" или "1" (с версии 1.8 будут доступны дополнительные операторы сравнения) - тупо, ставишь командный блок, который будет что-то выполнять (возможно, сначала надо просто проверять testfor'ом, а не выполнять сразу команду), когда игрок умрёт и его переменная, отвечающая за количество смертей увеличится с "0" до "1", а потом (через задержку в виде повторителя) задаёшь ещё одним командным блоком этой же переменной у этого же игрока "0", чтобы "сбросить" это изменение на начальное состояние...

Итак, первый командный блок делает что-то вроде этого:
/testfor @p[score_<название_переменной>_min=1] - фишка в том, что если сразу выполнить какую-то команду, то она может не сработать, т.к. игрок ещё мёртв (когда у него экран с кнопками respawn/возродиться и выйти)... Поэтому приходится сначала проверять просто факт смерти...

А теперь начинается гемор:

- во-первых, всё это должно быть запитано от генератора импульсов, т.к. нам надо постоянно проверять игроков (генератор может быть не очень быстрый);
- затем, нам нужно, чтобы игрок сразу же после смерти мог получить что-то и поэтому хочется сразу выдать ему это...
- но он ещё не вернулся, поэтому приходится делать задержку после командного блока с проверкой (снять с него сигнал компаратором и не забыть поставить сбрасыватель сигнала в виде факела) из десятка повторителей, которая будет эквивалентна примерно 5 секундам (можно и больше делать);

- только после этой задержки в 5-10 секунд мы ставим командный блок, который что-то делает: таким образом, игрок будет получать то, что нужно почти сразу + у него будет время успеть вернуться из экрана смерти :)
- и в конце всего этого, как я уже сказал, ставится ещё один командный блок, который сбрасывает значение переменной на "0"...

+ не забудь предупредить игроков, что у них есть 5-10 секунд на выход из экрана смерит и, если они не успевают, то просто надо выполнить команду /kill ещё раз и сразу вернуться в игру :)

Это лишь идея, которая наверняка требует доработки под твою конкретную задачу...
+ наверняка есть более элегантные решения, но я пока реализовал только так коряво ))

122

Огромное спасибо))

123

Слушай, я вот задумался....можно ли наложить определенные эффекты на NPC через команды не прибегая к @e и к склянкам........я хочу подарить например супер собаку некоторым игрокам у которой будут разные эффекты, но версия моего майнкрафта всего 1.6.4 и как это сделать не знаю, ты мне много раз помогал,  за это огромное спасибо, но можешь ли ты подсказать как провернуть эту задачку с эффектами на неписей???=)

124

Veniamin написал(а):

Слушай, я вот задумался....можно ли наложить определенные эффекты на NPC через команды не прибегая к @e и к склянкам........я хочу подарить например супер собаку некоторым игрокам у которой будут разные эффекты, но версия моего майнкрафта всего 1.6.4 и как это сделать не знаю, ты мне много раз помогал,  за это огромное спасибо, но можешь ли ты подсказать как провернуть эту задачку с эффектами на неписей???=)

Я не знаю, как это сделать )

125

Жаль(

126

Помогите, мне надо сделать что бы команда в командном блоке активировать только один раз

127

И как сделать, что-бы после убийства моба, открывалась дверь

128

XBoBaX написал(а):

Помогите, мне надо сделать что бы команда в командном блоке активировать только один раз

Один из вариантов - привязать выполнение команды к проверке переменной: пока переменная равна 0 (по умолчанию), команда будет выполняться - после выполнения необходимо выполнить другую команду в другом командном блоке по изменению значения переменной.
Думаю, что это наиболее универсальный вариант.

XBoBaX написал(а):

И как сделать, что-бы после убийства моба, открывалась дверь

Вероятно, снова используя переменные:

- видимо, игрок должен куда-то подойти и убить там моба, чтобы открыть дверь: тогда в идеале, при входе в эту зону присвоить ему значение переменной, отвечающей за убийства мобов, = 0, а при подходе к двери проверять, чтобы эта переменная была равна, например, 1...

129

Я просто не про в командах, можете написать команду

130

XBoBaX написал(а):

Я просто не про в командах, можете написать команду

Команду я написать могу, но не факт, что это будет именно то, что тебе нужно...
И всё-таки попробуем...

А тебе придётся начать разбираться во всём этом, почитаф ифну по ссылкам в первом сообщении :)

XBoBaX написал(а):

Помогите, мне надо сделать что бы команда в командном блоке активировать только один раз

Итак, создаёшь переменную следующей командой, в которой надо изменить название переменной и не использовать треугольные скобочки:

- /scoreboard objectives add <название_переменной> dummy

По умолчанию, у всех игроков значение этой новой переменной будет = 0.

Далее ставишь командный блок, в котором будет выполняться команда (для примера я использую команду tp, которую ты можешь заменить на любую другую) только для ближайшего игрока и только с проверкой нашей созданной переменной (вместо знаков вопросов нужно указать координаты центра действия блока, где будет находиться игрок + указываем радиус = например, 5 клеткам):

- /tp @p[x=??,y=??,z=??,r=5,score_<название_переменной>=0] x y z

Итак, эта команда будет телепортировать ближайшего игрока только, если: он находится в указанном месте и если значение нашей новой переменной меньше или равно 0.
Видимо, для активации блока игрок должен нажать кнопку или встать на нажимную плиту, или использую любой другой удобный тебе способ подачи сигнала на командный блок.

После командного блока ставишь компаратор (чтобы собственно получить сигнал при соблюдении всех условий) и прерыватель сигнала (редстоун в бок компаратора и красный факел, висящий сбоку командного блока и подающий сигнал на этот редстоун, чтобы прерывать сигнал компаратора), а после компаратора ставишь повторитель, чтобы сигла можно было подать далеко + запитываешь этим сигналом ещё один командный блок, в котором значение переменной у этого же игрока будет изменяться на "1":

- /scoreboard players set @p[x=??,y=??,z=??,r=5] <название_переменной> 1

Таким образом, конкретно этот игрок уже не сможет воспользоваться этим командным блоком, т.к. команда выполняется только для игроков со значением переменной = 0 (score_<название_переменной>=0).

XBoBaX написал(а):

И как сделать, что-бы после убийства моба, открывалась дверь

ну, тут примерно всё то же самое, только нужно создать ещё одну переменную и изменить её тип с dummy на totalKillCount

Итак, для начала надо как-то обнулить эту переменную при подходе к двери, т.к. эта переменная считает любые убийства, совершённые игроком...
Ставишь командный блок, который задаст значение этой переменной у ближайшего игрока на заданных координатах = 0 по примеру выше и подключаешь его либо тупо к генератору сигналов, либо к какой-нибудь нажимной плите, через которую игрок обязательно пройдёт...

Таким образом, у всех игроков, подходящих к двери и мобу значение этой переменной будет всегда = 0.

Далее, как только игрок завалит моба, значение конкретно этой переменной изменится на 1.
Игроку остаётся подойти к двери и, видимо, нажать на кнопку??
Эта кнопка подаст сигнал на командный блок, в котором будет команда, проверяющая значение конкретно этой переменной:

- /testfor @p[x=??,y=??,z=??,r=5,score_<название_переменной>_min=1]

Если все условия будут соблюдены, то на компараторе после командного блока появится сигнал, который позволит открыть железную дверь...

Ну, надо будет ещё поиграться немного с тем, как долго эта дверь будет открыта и т.д. и т.п...

+ с большой вероятностью, тебе нужно будет дорабатывать эти идеи под свои конкретные нужды...

Надеюсь, что хоть чем-то помог :)


Есть кстати, значительно более простой вариант, но он тупо может не подойти при определённых обстоятельствах..

Не надо создавать никаких переменных - просто проверяем наличие моба в заданном месте! :)

Допустим, игрок подходит к мобу и убивает его.
Далее он подходит к двери и нажимает кнопку, после чего сигнал идёт на один единственный командный блок, который проверяет наличие моба в заданном месте.

- - /testfor @e[x=??,y=??,z=??,r=5]

Тут нужно будет инвертировать сигнал на выходе, т.к. если моб есть, то сигнал будет, а нам нужно наоборот - чтобы сигнал был, когда моба не будет :)

+ вероятно, необходимо будет использовать прерыватели сигналов...

В общем, надо пробовать и учиться всё это делать самому ))

131

Команда clone оказывается может клонировать , или  телепортировать из одного места в другое , но не перемещает живых  обьектов и транспорт ,  этих обьектов клонировать нельзя? :(

132

nub написал(а):

Команда clone оказывается может клонировать , или  телепортировать из одного места в другое , но не перемещает живых  обьектов и транспорт ,  этих обьектов клонировать нельзя?

Я думаю, что животинок можно перемещать командой на подобии этой:

- /tp @e[x=?,y=?,z=?,r=10,type=?] x y z

Идентификатор @e указывает на живность.
Параметры внутри скобок в казанной последовательности: координаты зоны действия команды x y z, радиус зоны действия команды, тип сущности (курица, корова, конкретный моб и т.д...), координаты, на которые телепортируется сущность.

Собственно, транспорт (лошадь, вагонетка?) наверняка можно также указать в параметре type...

+ тебе может помочь инфа из статьи о системе счёта игровых событий...

133

До меня дошло как пользоваться командой clone , команда копирует все кроме транспорта и мобов , если положить вещи в сундук и прописать в конце координат masked move  то все вещи между 2 точками телепортируются в другую указаную точку , содержимое сундуков и командных блоков сохраняется , если прописать replace move то блоки телепортируются в указаную точку , и исчезнут

Команда fill похожа на clone , она заполняет пространства определеными блоками , между двумя определеными точками , жаль что эти команды только в снэпшотах :(

Корабль тоже можно построить , но командные блоки можно расположить либо в корабле (тогда его придется строить огромным) , либо под землей или там в горе и тд , но если неправильно вписать координаты то корабль будет тпшится по частям , и за этого придется заново его перестраивать и заново вписывать координаты .

Если использовать команды fill и clone то можно поиздеваться над дркгим игроко , например поставить с помощью команды фил и клонировать её  , перед вашим заднием  и тд , то другой игрок будет ломать стену и она будет опять повляться перед ним постояно , или таким образом тьрьмму сделать , но неудобность в том что это клонированая будет тюрьма   :D

Извиняюсь за безграмотность)

134

В любом случае, спасибо за комментарий :)

135

Я предлогаю как и написанов теме как можно испол зовать командные блоки :
С  помощью команды setBlock можно "дистанционо " активировать другие командные блоки , многие командные блоки распологают прямо в зданиях в которых они хотят сделать механизмы из командных блоков , но зачем это делать если можно "дистанционо" их активировать?
(Id  пустоты 0 ) .Также можно делать и с паромом или сделать воздушный шар , но командные блоки не будут в них мешаться , они ведь расположены далеко от вашей задумки .

136

С помощью команды effect можно сделать лифт ( id прыгучести простите не помню) , состоящий из 1 нажимной пластины(кнопки) и соответсвено команндногг блока  8-) (макс значение 255)

137

Как сделать, чтобы после убийства определённого количества мобов пошёл сигнал?

138

К сожалению, мы переехали на новый форум и здесь вряд ли будем отвечать...
Если есть желание, то можешь перейти по ссылке вверху на новый форум и задать вопрос там.
Если нет, то извини :)

139

Как добавить блок с помощью Командного Блока ? :( http://qps.ru/O1YWShttp://s8.uploads.ru/XxbfP.png

140

Извини, а добавить куда?
В инвентарь или куда-нибудь ещё?


Вы здесь » BBya World » F.A.Q. / ЧаВо » Как можно использовать командные блоки? + список команд