TGViewer
ботик ботик @botikst · 22 subscribers
Post #102 31
script 1.1.0 шаблон скрипт entity.DynamicProperty
import { world, system } from '@minecraft/server';

const stgpref = 'data_server';
const maxm = 5;
const chksz = 32000;
const appsz = 10000;

function getm() {
const m = [];
for (let i = 1; i <= maxm; i++) {
const t = stgpref + i;
const e = world.getDimension('overworld').getEntities({
type: 'minecraft:armor_stand',
tags: [t]
});
if (e.length > 0) {
m.push({ mob: e[0], idx: i });
} else {
m.push(null);
}
}
return m;
}

function svd(d) {
const m = getm();
const c = [];
for (let i = 0; i < d.length; i += chksz) {
c.push(d.substring(i, i + chksz));
}
if (c.length > maxm) {
return false;
}
for (let i = 0; i < c.length; i++) {
const mi = m[i];
if (!mi) {
return false;
}
mi.mob.setDynamicProperty('data', c[i]);
}
for (let i = c.length; i < maxm; i++) {
if (m[i]) {
m[i].mob.setDynamicProperty('data', undefined);
}
}
return true;
}

function ldd() {
const m = getm();
const p = [];
for (const mi of m) {
if (!mi) continue;
const d = mi.mob.getDynamicProperty('data');
if (d !== undefined && d !== null && d !== '') {
p.push(d);
}
}
return p.length > 0 ? p.join('') : null;
}

function gtsz() {
let t = 0;
const m = getm();
for (const mi of m) {
if (!mi) continue;
const d = mi.mob.getDynamicProperty('data');
if (d) t += d.length;
}
return t;
}

function shinf() {
const m = getm();
let msg = 'DAT ser\n';
let t = 0;
for (const mi of m) {
if (!mi) {
msg += `${stgpref}?\n`;
continue;
}
const d = mi.mob.getDynamicProperty('data');
const u = d ? d.length : 0;
msg += `${stgpref}${mi.idx}: ${u}/${chksz} byte (${(u / 1024).toFixed(1)} KB)\n`;
t += u;
}
msg += `tot: ${t} byte, ${(t / 1024).toFixed(1)} KB`;
world.sendMessage(msg);
}

function rndstr(l) {
const c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let r = '';
for (let i = 0; i < l; i++) {
r += c.charAt(Math.floor(Math.random() * c.length));
}
return r;
}

function appnd() {
const m = getm();
for (const mi of m) {
if (!mi) {
world.sendMessage('Создать всех data_server');
return;
}
}

let ed = ldd();
let o;
if (ed) {
try {
o = JSON.parse(ed);
} catch (e) {
world.sendMessage('error data');
o = {};
}
} else {
o = {};
}

let fi = 0;
while (o.hasOwnProperty('field' + fi)) {
fi++;
}

o['field' + fi] = rndstr(appsz);

const js = JSON.stringify(o);
const ms = maxm * chksz;

if (js.length > ms) {
world.sendMessage(`result (${js.length} byte) limit (${ms} byte)`);
return;
}

if (svd(js)) {
world.sendMessage(`data: +${appsz} failed${fi}. tot: ${js.length} byte (${(js.length/1024).toFixed(1)} KB).`);
} else {
world.sendMessage('failed data');
}
}

function deld() {
const m = getm();
for (const mi of m) {
if (!mi) continue;
mi.mob.setDynamicProperty('data', undefined);
}
world.sendMessage('delete');
}

function prc() {
const m = getm();
for (const mi of m) {
if (!mi) continue;
const mob = mi.mob;
const t = mob.getTags();

if (t.includes('dynamic')) {
shinf();
mob.removeTag('dynamic');
}
if (t.includes('over')) {
appnd();
mob.removeTag('over');
}
if (t.includes('delete_data')) {
deld();
mob.removeTag('delete_data');
}
}
}

system.runInterval(() => {
prc();
}, 10);
More from @botikst
  1. Sep 6, 2026пример WebSocket10
  2. Sep 6, 2026Файл скрипт WebSocket10
  3. Sep 6, 2026файл apk termux
  4. Sep 6, 2026Скрипт WebSocket10 const TelegramBot = require('node-telegram-bot-api'); const WebSocket =…
  5. Sep 6, 2026Команды termux: termux-setup-storage pkg update && pkg upgrade -y pkg install nodejs-lts n…
  6. Jul 26, 2026Пример «Импульс»
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →