ботик
22 subscribers
9 photos
18 videos
28 files
2 links
На этом канале публикуются все истории (как и что я делаю в Майнкрафте).
Основной канал: https://t.me/botikdeadpriz
Download Telegram
Channel name was changed to «История ботика»
Карта маньяка 2
#maniac
#map
Карта маньяка 3
#maniac
#map
Открыть меню

(Перевод)
(Простой гайд)
Media is too big
VIEW IN TELEGRAM
Пример перевода
Media is too big
VIEW IN TELEGRAM
Пример промокода:
Промокод
import { world, system } from "@minecraft/server";
import { ModalFormData } from "@minecraft/server-ui";

function promo(player) {
let form = new ModalFormData();
form.title(Промокод);

let ids = ["botik", "akima", "zero", "miras", "smetana"];
let rewards = {
"botik": { item: "minecraft:diamond", amount: 5 },
"akima": { item: "minecraft:iron_ingot", amount: 10 },
"zero": { item: "minecraft:gold_ingot", amount: 7 },
"miras": { item: "minecraft:emerald", amount: 3 },
"smetana": { item: "minecraft:apple", amount: 15 }
};

form.textField(Введите промокод, Пример: ssuliks);
form.show(player).then(response => {
if (response.canceled) return;
let input1 = response.formValues[0];

if (ids.includes(input1) && !player.hasTag(input1)) {
let reward = rewards[input1];
player.runCommandAsync(give ${player.name} ${reward.item} ${reward.amount});
player.runCommandAsync(tag ${player.name} add ${input1});
player.sendMessage(§aПромокод успешно активирован! Вы получили ${reward.amount} ${reward.item});
} else {
player.sendMessage(§cНеверный или уже использованный промокод.);
}
});
}


system.runInterval(() => {
for (let player of world.getPlayers()) {
if (player.hasTag("open")) {
system.run(() => {
promo(player);
player.runCommandAsync(tag @s remove "open");
});
}
}
}, 20);
Пример показателя скорборда:
Media is too big
VIEW IN TELEGRAM
Пример калькулятора:
Перевод денег
import { world, system } from "@minecraft/server"; 
import { ModalFormData, ActionFormData } from "@minecraft/server-ui"; //на всякий случай добавил ActionFormData, если вдруг вам понадобится ообычные менюшки

function Banki(player) { //скорборд money
let form = new ModalFormData();
form.title(`Перевод счета с СБ`);

let lplayersList3g16x7p5cn = [];
let lplayerNames3g16x7p5cn = [];
for (const lPlayer3g16x7p5cn of world.getAllPlayers()) {
if (!lPlayer3g16x7p5cn.hasTag('Block')) { //данный тег удаляет игрока с списка (не использовать тег, если нет 2 игрока), если в всех будет тег, то меню не будет открываться из-за отсутствие игроков в списке
lplayerNames3g16x7p5cn.push(lPlayer3g16x7p5cn.name);
lplayersList3g16x7p5cn.push(lPlayer3g16x7p5cn);
}
}

form.dropdown(`Список игроков для перевода`, lplayerNames3g16x7p5cn);
form.textField(`Введите сумму`, `Рублей. . .`);
form.show(player).then(response => {
if (response.canceled) return;

let recipientName = lplayerNames3g16x7p5cn[response.formValues[0]];
let amount = parseInt(response.formValues[1]);

if (isNaN(amount) || amount <= 0) {
player.sendMessage(`§cПожалуйста, введите корректную сумму для перевода.`);
return;
}

player.runCommandAsync(`execute as @s[scores={money=${amount}..}] at @s run scoreboard players add "${recipientName}" money ${amount}`);
player.runCommandAsync(`execute as @s[scores={money=${amount}..}] at @s run tellraw "${recipientName}" {"rawtext":[{"text":"§aВам перевели ${amount}!"}]}`);
player.runCommandAsync(`execute at @s[scores={money=${amount}..}] run scoreboard players remove @s money ${amount}`);
player.runCommandAsync(`execute as @s[scores={money=${amount}..}] at @s run tellraw @s {"rawtext":[{"text":"§aВы перевели ${recipientName} ${amount}."}]}`);
player.runCommandAsync(`execute as @s[scores={money=!${amount}..}] at @s run tellraw @s {"rawtext":[{"text":"§cУ вас недостаточно средств"}]}`);
});
}

world.beforeEvents.itemUse.subscribe((eventData) => { //с помощью предмета
if (eventData.itemStack?.typeId === "minecraft:stick") {
let player = eventData.source;
system.run(() => {
banki(player);
});
}
});

system.runInterval(() => { //с помощью тега
for (let player of world.getPlayers()) {
if (player.hasTag("open")) {
system.run(() => {
banki(player);
player.runCommandAsync(`tag @s remove open`); //удаление тега после открытие
});
}
}
}, 20);
🔥1
Показатель скорборда
import { world, system } from "@minecraft/server";
import { ActionFormData, ModalFormData } from "@minecraft/server-ui"; //ModalFormData на всякий случай

function prof(player) {
let form = new ActionFormData();
form.title(`меню`);

let money = getScore(player, "Money") || 0; // обработка undefined, также можно создать и 2 3 и т.д

form.body(`Ваш баланс: ${money}`);
form.button("Закрыть");
form.show(player).then((onfulfilled) => {
if (onfulfilled.canceled != true) {
const selection = onfulfilled.selection;
if (selection == 0) {
player.runCommadnAsync(``);
}
}
});
}

function rec(player, objective, min, max) {
if (min >= max) { // Изменено условие выхода из рекурсии
return min;
}
const middle = min + Math.floor((max - min) / 2);
const p1 = world.getPlayers({ name: player.name, scoreOptions: [{ objective: objective, minScore: min, maxScore: middle }] });
if (p1.length > 0) { // Изменено условие поиска
return rec(player, objective, min, middle);
} else {
return rec(player, objective, middle + 1, max); // Добавлено смещение middle
}
}

function getScore(player, objective) {
const p1 = world.getPlayers({ name: player.name, scoreOptions: [{ objective: objective, minScore: -2147483648, maxScore: 2147483647 }] });
if (p1.length === 0) {
return 0;
}
return rec(player, objective, -2147483648, 2147483647);
}


world.beforeEvents.itemUse.subscribe((eventData) => {
if (eventData.itemStack?.typeId === "minecraft:stick") {
let player = eventData.source;
system.run(() => {
prof(player);
});
}
});
Калькулятор
import { world, system } from "@minecraft/server"; 
import { ModalFormData } from "@minecraft/server-ui";

function calUi(player) {
let form = new ModalFormData();
form.title(`Калькулятор`);

let working = ["+", "-", "/", "*"];

form.textField(`Первое число`, `100..`);
form.dropdown(`Действие`, working);
form.textField(`Второе число`, `100..`);

form.show(player).then(response => {
if (response.isCanceled) return;

let firstNumber = parseFloat(response.formValues[0]);
let operation = working[response.formValues[1]];
let secondNumber = parseFloat(response.formValues[2]);

let result;

switch (operation) {
case "+": result = firstNumber + secondNumber; break;
case "-": result = firstNumber - secondNumber; break;
case "/": result = firstNumber / secondNumber; break;
case "*": result = firstNumber * secondNumber; break;
default: result = "Неизвестная операция";
}

player.sendMessage(`Результат: ${result}`);
});
}

system.runInterval(() => {
for (let player of world.getPlayers()) {
if (player.hasTag("calculate")) {
system.run(() => {
calUi(player);
player.runCommandAsync(`tag @s remove calculate`);
});
}
}
}, 20);
🔥1
Открытие меню с помощью тега
system.runInterval(() => {
for (let player of world.getPlayers()) {
if (player.hasTag("open")) {
system.run(() => {
(player);
player.runCommand(tag @s remove "open");
});
}
}
}, 20);
1 буфер point
Скрипт
// Импортируем необходимые права
import { system, world } from "@minecraft/server";
import { ActionFormData, ModalFormData } from "@minecraft/server-ui";

// Функция для отображения основного меню игроку
function menu(player) {
let form = new ActionFormData(); // Создаем новое окно формы
form.title("Выберите раздел"); // Устанавливаем заголовок формы
form.button("Поставить точку"); // Добавляем кнопку для установки точки
form.button("Удалить точку"); // Добавляем кнопку для удаления точки
form.button("Просмотреть точки"); // Добавляем кнопку для просмотра точек
form.show(player).then((res) => { // Отображаем форму игроку
if (res.canceled || res.selection === undefined) return; // Проверяем на отмену
// В зависимости от выбранной кнопки вызываем соответствующую функцию
if (res.selection === 0) {
setPoint(player); // Установка точки
} else if (res.selection === 1) {
deletePoint(player); // Удаление точки
} else if (res.selection === 2) {
viewPoints(player); // Просмотр точек
}
});
}

// Функция для установки точки
function setPoint(player) {
let form = new ModalFormData(); // Создаем новую модальную форму
form.title("Меню"); // Заголовок формы
form.textField("Введите название точки", "Название"); // Поле ввода для названия точки
form.show(player).then((res) => { // Отображаем форму
if (res.canceled || res.formValues === undefined) return; // Проверка на отмену
const pointName = res.formValues[0]; // Получаем название точки
if (pointName) { // Если название указано
const pos = player.location; // Получаем текущую позицию игрока
const pointTag = point:${player.name}:${pointName}; // Создаем тег точки
const positionString = ${pos.x},${pos.y},${pos.z}; // Форматируем позицию как строку
player.addTag(pointTag); // Добавляем тег точки игроку
player.addTag(pos:${pointTag}:${positionString}); // Сохраняем позицию в тегах
player.sendMessage([Точки] Успешно создана точка ${pointName}); // Уведомляем игрока
}
});
}