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]
Тут нужно будет инвертировать сигнал на выходе, т.к. если моб есть, то сигнал будет, а нам нужно наоборот - чтобы сигнал был, когда моба не будет
+ вероятно, необходимо будет использовать прерыватели сигналов...
В общем, надо пробовать и учиться всё это делать самому ))