Промокод
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);Перевод денег
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);
});
}
});