Download Game! Currently 74 players and visitors. Last logged in:AhvensurmaWicksiusDraxxSebaot

Blitzer's Blog >> 71453

Back to blogs index
Posted: 16 Jul 2026 12:11 [ permalink ]
$ x-gem-terminal grep 'MUD uudelleen' --run
[+] HyvC$ksytty. Suoritetaan: gem_2026-07-16T07-11-47-069Z_d30f66c1.gem-termina
l-script
[*] ========= RUN =========
[:] /mnt/mesh_root/state/gem-terminal-proposals/gem_2026-07-16T07-11-47-069Z_d3
0f66c1.gem-terminal-script
[*] ========= FILE START =========
[:] cat << 'EOF' > /mnt/mesh_root/src/client-mud/ext/udp_eval.js
[:] const dgram = require('dgram');
[:] 
[:] registerCommand('serve', async (ctx) => {
[:] if (ctx.state.udpServer) {
[:] ctx.print("[-] UDP-palvelin on jo kC$ynnissC$ portissa " +
ctx.state.udpPort);
[:] return;
[:] }
[:] 
[:] const server = dgram.createSocket('udp4');
[:] let port = 5000;
[:] const maxPort = 5999;
[:] 
[:] server.on('error', (err) => {
[:]     if (err.code === 'EADDRINUSE') {
[:]         port++;
[:]         if (port <= maxPort) {
[:]             server.bind(port);
[:]         } else {
[:]             ctx.print("[-] Ei vapaita UDP-portteja vC$lillC$ 5000-5999.");
[:]         }
[:]     } else {
[:]         ctx.print("[-] UDP Virhe: " + err.message);
[:]     }
[:] });
[:] 
[:] server.on('message', (msg, rinfo) => {
[:]     let code = msg.toString('utf8');
[:]     let response = {};
[:]     try {
[:]         // Evaluoidaan koodi suoraan laajennuksen kontekstissa!
[:]         // TC$mC$ antaa soittajalle tC$yden pC$C$syn "ctx.state",
"ctx.print" jne.
[:]         let result = eval(code);
[:]         response = { status: "ok", result: result };
[:]     } catch (err) {
[:]         response = { status: "error", result: err.message };
[:]     }
[:]     
[:]     let resBuf = Buffer.from(JSON.stringify(response));
[:]     server.send(resBuf, rinfo.port, rinfo.address, (err) => {
[:]         if (err) ctx.print("[-] UDP Vastausvirhe: " + err.message);
[:]     });
[:] });
[:] 
[:] server.on('listening', async () => {
[:]     ctx.state.udpServer = server;
[:]     ctx.state.udpPort = port;
[:]     ctx.print(`[+] UDP-palvelin kuuntelee portissa ${port}`);
[:]     
[:]     try {
[:]         let res = await fetch("[http://127.0.0.1:5999/register](http://127.
0.0.1:5999/register)", {
[:]             method: 'POST',
[:]             headers: { 'Content-Type': 'application/json' },
[:]             body: JSON.stringify({ port: port })
[:]         });
[:]         let data = await res.json();
[:]         if (data.id) {
[:]             ctx.state.playerId = data.id;
[:]             ctx.print(`[+] RekisterC6ity MUD-rekisteriin ID:llC$:
${data.id}`);
[:]             ctx.print(`[!] Voit nimetC$ istuntosi komennolla: name
<omavalintainen_nimi>`);
[:]         }
[:]     } catch (e) {
[:]         ctx.print("[-] RekisterC6inti epC$onnistui (onko FastAPI portissa
5999 pC$C$llC$?): " + e.message);
[:]     }
[:] });
[:] 
[:] server.bind(port);
[:] 
[:] 
[:] 
[:] });
[:] 
[:] registerCommand('name', async (ctx) => {
[:] if (!ctx.state.playerId) {
[:] ctx.print("[-] Et ole vielC$ rekisterC6itynyt (aja 'serve' ensin).");
[:] return;
[:] }
[:] if (!ctx.arg1) {
[:] ctx.print("[-] KC$yttC6: name <uusi_nimi>");
[:] return;
[:] }
[:] try {
[:] let res = await fetch([http://127.0.0.1:5999/name/$](http://127.0.0.1:5999/
name/$){ctx.state.playerId}, {
[:] method: 'POST',
[:] headers: { 'Content-Type': 'application/json' },
[:] body: JSON.stringify({ name: ctx.arg1 })
[:] });
[:] let data = await res.json();
[:] if (data.status === "ok") {
[:] ctx.print([+] Nimesi on nyt rekisterissC$: ${ctx.arg1});
[:] }
[:] } catch (e) {
[:] ctx.print("[-] NimeC$minen epC$onnistui: " + e.message);
[:] }
[:] });
[:] EOF
[:] 
[:] # KC$C$nnetC$C$n MUD uudelleen
[:] 
[:] /mnt/mesh_root/src/client-mud/build-client-mud.sh
[*] ========= FILE END =========
[*] /bin/bash -c ". /mnt/mesh_root/state/gem-terminal-proposals/gem_2026-07-16T
07-11-47-069Z_d30f66c1.gem-terminal-script" 
[*] Rakennetaan /mnt/mesh_root/bin/dom_mud_full.js...
  -> Injektoidaan: base.js
  -> Injektoidaan: basic.js
  -> Injektoidaan: interaction.js
  -> Injektoidaan: udp_eval.js
[+] Valmis! Kokeile ajaa: node /mnt/mesh_root/bin/dom_mud_full.js
$ x-gem-terminal grep 'MUD uudelleen' --archive
[*]: mv /mnt/mesh_root/state/gem-terminal-proposals/gem_2026-07-16T07-11-47-069
Z_d30f66c1.gem-terminal-script /mnt/mesh_root/state/gem-terminal-proposals/.arc
hive/
[+] Ehdotus arkistoitu: gem_2026-07-16T07-11-47-069Z_d30f66c1.gem-terminal-scri
pt
$