Вопросы о коде. [NEW]

F1nch

Легенда
4 Октябрь 2020
669
401
63
#1
Эта тема создана исключительно для вопросов касательно кода (aka "как закодить..."). Я создал отдельную тему для того, чтобы я мог быстрее отвечать на поставленные задачи, в силу того, что порой я теряю или же пропускаю некоторые вопросы по коду. Также эта тема будет полезна тем, что раздел форума посвященный Креативу+ не будет засоряться однотипными вопросами: ответы на них скорее всего уже будут предоставлены здесь (в том случае если найдёте здесь вопрос аналогичный вашему).

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

Также просьба не флудить вопросами, то есть ваш вопрос желательно должен являться одним целым, не разделённым на несколько подряд идущих ответов. Это необязательно, но лично я считаю, что так и мне и вам будет куда удобнее.

Сложность кода не важна, вопрос может быть как банальным так и невероятно сложным - отвечу на любой. В случае если пользователь НЕ получил ответ на поставленный вопрос (я был оффлайн и не мог ответить) - ничего не имею против того, чтобы на вопрос ответили другие кодеры. Не стоит отвечать несколько раз на один и тот же вопрос (разве что у вас имеется решение лучше предыдущего).

В силу изменений на форуме - данная тема переезжает в этот раздел, старая удалена не будет.
P.S. Можете писать и в старую тему, но дальнейшая судьба раздела где она находится пока неизвестна.
 

F1nch

Легенда
4 Октябрь 2020
669
401
63
#3
Как сделать телепорт?
Я пишу @tp *ник*, и меня телепортирует к данному игроку.
Событие чата -> если игрок имя равно {имена тех, кто может использовать эту команду} -> [ установить переменную %player%_text объединить тексты {последнее сообщение игрока} -> если %player%_text содержит @tp -> [ выбрать игрока по условию переменная %player%_text содержит %selected% (%selected% в виде текста) -> установить переменную %player%_loc = {текущее местоположение} -> телепортировать игрока на %player%_loc (и не забудь поставить "игрок по умолчанию", через Shift + ПКМ по табличке). ] ]
 

_Finder_

Легенда
12 Август 2020
614
273
63
бравл тауна
#4
Событие чата -> если игрок имя равно {имена тех, кто может использовать эту команду} -> [ установить переменную %player%_text объединить тексты {последнее сообщение игрока} -> если %player%_text содержит @tp -> [ выбрать игрока по условию переменная %player%_text содержит %selected% (%selected% в виде текста) -> установить переменную %player%_loc = {текущее местоположение} -> телепортировать игрока на %player%_loc (и не забудь поставить "игрок по умолчанию", через Shift + ПКМ по табличке). ] ]
Спасибо огромное!
 

mktenebris

Участник
2 Июнь 2021
21
3
3
16
#5
Как можно сделать деление по командам?
Например, в лобби мира собралось 20 человек, код делит этих людей и отправляет половину на 1 остров, а другую половину на противоположный остров.
 

F1nch

Легенда
4 Октябрь 2020
669
401
63
#6
Как можно сделать деление по командам?
Например, в лобби мира собралось 20 человек, код делит этих людей и отправляет половину на 1 остров, а другую половину на противоположный остров.
Выбрать всех игроков -> установить (%) переменную half_players_amount = {игровое значение кол-во игроков} / 2 -> выбор фильтра случайным образом (в пурпурном блоке "выбрать объект), в GUI положить переменную half_players_amount -> выдать игрокам предмет {яблоко} (или любой другой предмет) -> телепортировать игроков на {локация острова первой команды} -> выбрать игроков по условию НЕ имеют предмет {яблоко} -> телепортировать игроков на {локация острова второй команды} -> удалить предмет {яблоко} ВСЕМ (через Shift + ПКМ по табличке).
 

zVorobeyz

Легенда
25 Ноябрь 2017
961
411
63
#7
Код на открытие инвентаря игрока через чат

Событие игрока Событие чата --> Если игрок Имя равно | В сундук: свои ники --> Установить переменную (=) | В сундук: динамическую переменную %player%_text и Игровое значение Сообщение игрока --> Если переменная (содержит) | В сундук: дин. переменную %player%_text и Текст @invsee --> Выбрать объект По условию Если переменная (содержит) | В сундук: %player%_text и текст %selected% --> Установить переменную (=) | В сундук: %player%_loc и Игровое значение Текущее местоположение --> Действие игрока Открыть инвентарь сущности По умолчанию | В сундук: дин. переменную %player%_loc.
 

kalonka121

Местный
31 Март 2019
53
12
8
46
#9
Выбрать всех игроков -> установить (%) переменную half_players_amount = {игровое значение кол-во игроков} / 2 -> выбор фильтра случайным образом (в пурпурном блоке "выбрать объект), в GUI положить переменную half_players_amount -> выдать игрокам предмет {яблоко} (или любой другой предмет) -> телепортировать игроков на {локация острова первой команды} -> выбрать игроков по условию НЕ имеют предмет {яблоко} -> телепортировать игроков на {локация острова второй команды} -> удалить предмет {яблоко} ВСЕМ (через Shift + ПКМ по табличке).
А событие то какое?
 

F1nch

Легенда
4 Октябрь 2020
669
401
63
#11
на что влияет, или вообще влияет ли различие %player%_killed и %player% killed?
Название переменной никакой роли не играет, поддерживаются и верхний и нижний регистр, специальные символы и русский язык в том числе. Поддерживаются все символы UTF-8 доступные на версии 1.12.
 

F1nch

Легенда
4 Октябрь 2020
669
401
63
#13
Название переменной никакой роли не играет, поддерживаются и верхний и нижний регистр, специальные символы и русский язык в том числе. Поддерживаются все символы UTF-8 доступные на версии 1.12.
Главное что нужно учитывать при создании переменной - это то, чтобы её назначение можно было легко понять, в противном случае будет путаница в коде.
 

F1nch

Легенда
4 Октябрь 2020
669
401
63
#14
Ну мне нужно, как бы ты поступил? Какое событие выбрал бы?
Насколько я понимаю, у автора вопроса цикл проверяющий на наличие в лобби 20 человек, или же проверка идёт в предмете отвечающем за присоединение к игре.
 

kalonka121

Местный
31 Март 2019
53
12
8
46
#15
Насколько я понимаю, у автора вопроса цикл проверяющий на наличие в лобби 20 человек, или же проверка идёт в предмете отвечающем за присоединение к игре.
Тоесть? Можно код который ты написал перед ним поставить цикл каждые 5 сек или что?
 

F1nch

Легенда
4 Октябрь 2020
669
401
63
#16
Тоесть? Можно код который ты написал перед ним поставить цикл каждые 5 сек или что?
Так просто он работать не будет, а как он должен работать - спроси у того, кто задал этот вопрос. Я написал про разделение команд на две равные части, ничего о мире и о том как игроки присоединяются к игре я не знаю.
 

kalonka121

Местный
31 Март 2019
53
12
8
46
#17
Так просто он работать не будет, а как он должен работать - спроси у того, кто задал этот вопрос. Я написал про разделение команд на две равные части, ничего о мире и о том как игроки присоединяются к игре я не знаю.
Хорошо, а как сделать что бы можно было заморозить игрока? И ещё что бы можно было его телепортировать к себе?
 

zVorobeyz

Легенда
25 Ноябрь 2017
961
411
63
#18
Хорошо, а как сделать что бы можно было заморозить игрока? И ещё что бы можно было его телепортировать к себе?
На счёт заморозки хз (мало инфы), а на счёт тп:
Событие игрока Событие чата --> Если игрок Имя равно | В сундук: свой ник --> Установить переменную (=) | В сундук: динамическую переменную %player%_my loc и Игровое значение Текущее местоположение --> Установить переменную (объединить) | В сундук: динамическую переменную %player%_text и Игровое значение Сообщение игрока --> Если переменная (содержит) | В сундук: дин. переменную %player%_text и, допустим, @s --> Выбрать объект По условию Если переменная (содержит) | В сундук: дин. переменную %player%_text и текст %selected% --> Действие игрока Телепортировать | В сундук: дин. переменную %player%_my loc.

Теперь достаточно написать "@s F1nch" и зяблик (финч) телепортируеться к тебе.

И да, это простой тп через чат. Если тебе нужно тп по условию (к примеру, если игрок заморожен/находиться в определённой локации/нажимает на предмет | блок/другое, то уточни здесь.
 

kalonka121

Местный
31 Март 2019
53
12
8
46
#19
На счёт заморозки хз (мало инфы), а на счёт тп:
Событие игрока Событие чата --> Если игрок Имя равно | В сундук: свой ник --> Установить переменную (=) | В сундук: динамическую переменную %player%_my loc и Игровое значение Текущее местоположение --> Установить переменную (объединить) | В сундук: динамическую переменную %player%_text и Игровое значение Сообщение игрока --> Если переменная (содержит) | В сундук: дин. переменную %player%_text и, допустим, @s --> Выбрать объект По условию Если переменная (содержит) | В сундук: дин. переменную %player%_text и текст %selected% --> Действие игрока Телепортировать | В сундук: дин. переменную %player%_my loc.

Теперь достаточно написать "@s F1nch" и зяблик (финч) телепортируеться к тебе.

И да, это простой тп через чат. Если тебе нужно тп по условию (к примеру, если игрок заморожен/находиться в определённой локации/нажимает на предмет | блок/другое, то уточни здесь.
ХОРОШО спасибо, и скажи пожалуйсто код на призывание молнии или звук молнии или что бы небо сверкало
 

F1nch

Легенда
4 Октябрь 2020
669
401
63
#20
ХОРОШО спасибо, и скажи пожалуйсто код на призывание молнии или звук молнии или что бы небо сверкало
Для призыва молнии нужно обладать соответствующим spawnegg-м, спроси в чате на К+ у кого есть шалкер с ними. Для того, чтобы проиграть звук грома - достаточно найти соответствующий ID.

По ссылке ниже созданная мной тема, с информацией, которая может быть полезна при создании кода. Там есть и ссылка на сайт со всеми звуками:
https://forum.mineland.net/ru/index.php?threads/poleznoe-dlja-koderov.12772/#post-74248

ID интересующего тебя звука - entity.lightning.thunder

Хорошо, а как сделать что бы можно было заморозить игрока?
Когда игрока "заморозят" - если переменная %player%_frozen != true (чтобы нельзя было заморозить игрока несколько раз подряд) -> [ установить переменную %player%_frozen = true -> ждать {X} (где X это время заморозки в тиках) -> установить переменную %player%_frozen = false. ]

Событие игрока перемещение -> если переменная %player%_frozen = true -> [ отменить событие. ]

Код выше - единственное, что можно написать в ответ на твой вопрос, так как мою просьбу о том, чтобы вопрос был чётко и ясно сформулирован ты проигнорировал.
 
Последнее редактирование: