Compare commits

..

No commits in common. "1849d86a63f7a199f938737017d3982e91a88830" and "1d363616483047ef269d3d6a6ba5a60c20c99d1e" have entirely different histories.

7 changed files with 224 additions and 60 deletions

2
.gitignore vendored
View File

@ -1,2 +0,0 @@
node_modules
.env

View File

@ -1,3 +1,30 @@
# dvdbot-hri7566 # hello-express
DVD bot from March 2020 A server that serves a webpage, its resources, and some data
## Your Project
On the front-end,
- Edit `views/index.html` to change the content of the webpage
- `public/client.js` is the javacript that runs when you load the webpage
- `public/style.css` is the styles for `views/index.html`
- Drag in `assets`, like images or music, to add them to your project
On the back-end,
- your app starts at `server.js`
- add frameworks and packages in `package.json`
- safely store app secrets in `.env` (nobody can see this but you and people you invite)
Click `Show` in the header to see your app live. Updates to your code will instantly deploy.
## Made by [Glitch](https://glitch.com/)
**Glitch** is the friendly community where you'll build the app of your dreams. Glitch lets you instantly create, remix, edit, and host an app, bot or site, and you can invite collaborators or helpers to simultaneously edit code with you.
Find out more [about Glitch](https://glitch.com/about).
( ᵔ ᴥ ᵔ )

BIN
bun.lockb

Binary file not shown.

149
package-lock.json generated Normal file
View File

@ -0,0 +1,149 @@
{
"name": "hello-express",
"version": "0.0.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"agent-base": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
"integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
"requires": {
"es6-promisify": "^5.0.0"
}
},
"async-limiter": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
"integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
},
"es6-promise": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
"integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
},
"es6-promisify": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
"requires": {
"es6-promise": "^4.0.3"
}
},
"express": {
"version": "4.17.1",
"requires": {
"accepts": "~1.3.7",
"array-flatten": "1.1.1",
"body-parser": "1.19.0",
"content-disposition": "0.5.3",
"content-type": "~1.0.4",
"cookie": "0.4.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "~1.1.2",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"finalhandler": "~1.1.2",
"fresh": "0.5.2",
"merge-descriptors": "1.0.1",
"methods": "~1.1.2",
"on-finished": "~2.3.0",
"parseurl": "~1.3.3",
"path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.5",
"qs": "6.7.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.1.2",
"send": "0.17.1",
"serve-static": "1.14.1",
"setprototypeof": "1.1.1",
"statuses": "~1.5.0",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
}
},
"https-proxy-agent": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
"integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
"requires": {
"agent-base": "^4.3.0",
"debug": "^3.1.0"
},
"dependencies": {
"debug": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"ip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
"integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
},
"mpp-client-xt": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mpp-client-xt/-/mpp-client-xt-1.2.0.tgz",
"integrity": "sha512-r9xqbfX3kibfVXR2f5FYdEkeX5Ouh/UVGgEag9ofUMJQehK9oMpmc9aP4ZBH4W2Xh8fMqRb6EooEB4Pr/6ErAQ==",
"requires": {
"https-proxy-agent": "^2.2.1",
"socks-proxy-agent": "^4.0.1",
"ws": "^5.1.1"
}
},
"smart-buffer": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz",
"integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw=="
},
"socks": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz",
"integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==",
"requires": {
"ip": "1.1.5",
"smart-buffer": "^4.1.0"
}
},
"socks-proxy-agent": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz",
"integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==",
"requires": {
"agent-base": "~4.2.1",
"socks": "~2.3.2"
},
"dependencies": {
"agent-base": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
"integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
"requires": {
"es6-promisify": "^5.0.0"
}
}
}
},
"ws": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
"integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
"requires": {
"async-limiter": "~1.0.0"
}
}
}
}

View File

@ -1,19 +1,24 @@
{ {
"name": "dvdbot", "//1": "describes your app and its dependencies",
"version": "1.0.0", "//2": "https://docs.npmjs.com/files/package.json",
"//3": "updating this file will download and update your packages",
"name": "hello-express",
"version": "0.0.1",
"description": "A simple Node app built on Express, instantly up and running.", "description": "A simple Node app built on Express, instantly up and running.",
"main": "server.js", "main": "server.js",
"scripts": { "scripts": {
"start": "node server.js" "start": "node server.js"
}, },
"dependencies": { "dependencies": {
"dotenv": "^16.4.5", "express": "^4.17.1",
"express": "^4.19.2", "mpp-client-xt": "^1.2.0"
"mpp-client-net": "^1.2.1"
}, },
"engines": { "engines": {
"node": "12.x" "node": "12.x"
}, },
"repository": {
"url": "https://glitch.com/edit/#!/hello-express"
},
"license": "MIT", "license": "MIT",
"keywords": [ "keywords": [
"node", "node",

View File

@ -1,38 +1,31 @@
import { Client } from "mpp-client-net/src/index"; const MPPClient = require('mpp-client-xt');
import { configDotenv } from "dotenv"; const client = new MPPClient("wss://ts.terrium.net:8443", undefined);
import fs from "fs"; const fs = require('fs');
console.log(Client);
configDotenv();
const client = new Client("wss://mppclone.com:8443", process.env.MPPNET_TOKEN);
client.start(); client.start();
client.on("hi", () => { client.on("hi", () => {
setTimeout(function () { setTimeout(function() {
client.sendArray([ client.sendArray([{m:'userset', set:{name:"hri's dvdbot [dvd!help]"}}]);
{ m: "userset", set: { name: "hri's dvdbot [dvd!help]" } }, })
]);
}); client.setChannel("lobby");
client.setChannel("test/awkward");
}); });
function chat(string) { function chat(string) {
client.sendArray([{ m: "a", message: string }]); client.sendArray([{m:'a', message:string}]);
} }
var ctoggle = true; var ctoggle = true;
var cursormode = "dvd"; var cursormode = "dvd";
client.on("a", (msg) => { client.on("a", (msg) => {
let args = msg.a.split(" "); let args = msg.a.split(' ');
let cmd = args[0].toLowerCase(); let cmd = args[0].toLowerCase();
let argcat = msg.a.substring(cmd.length).trim(); let argcat = msg.a.substring(cmd.length).trim();
switch (cmd) { switch (cmd) {
case "dvd!help": case "dvd!help":
chat("cmds: dvd!help // dvd!cursor // dvd!stats // dvd!about"); chat("cmds: dvd!help // dvd!cursor // dvd!stats // dvd!about");
@ -44,14 +37,14 @@ client.on("a", (msg) => {
switch (argcat) { switch (argcat) {
case "on": case "on":
ctoggle = true; ctoggle = true;
pos = { x: Math.random() * 100 - 50, y: Math.random() * 100 - 50 }; pos = {x: (Math.random() * 100) - 50, y: (Math.random() * 100) - 50};
vel = { x: 2 / 5, y: 2 / 7 }; vel = {x: 2/5, y: 2/7};
cursormode = "dvd"; cursormode = "dvd";
break; break;
case "off": case "off":
ctoggle = false; ctoggle = false;
cursormode = "none"; cursormode = "none";
pos = { x: -500, y: -500 }; pos = {x: -500, y: -500};
break; break;
default: default:
chat("invalid :P"); chat("invalid :P");
@ -60,62 +53,54 @@ client.on("a", (msg) => {
} }
break; break;
case "dvd!stats": case "dvd!stats":
chat( chat("Edge hits: " + stats.edgehits + " | Corner hits: " + stats.cornerhits);
"Edge hits: " + stats.edgehits + " | Corner hits: " + stats.cornerhits,
);
break; break;
case "dvd!about": case "dvd!about":
chat("this bot is ancient dude"); chat("Made by Hri7566 in his free time :)");
break; break;
} }
}); });
var pos = { x: Math.random() * 100 - 50, y: Math.random() * 100 - 50 }; var pos = {x: (Math.random() * 100) - 50, y: (Math.random() * 100) - 50};
var vel = { x: 2 / 5, y: 2 / 7 }; var vel = {x: 2/5, y: 2/7};
var statsraw = fs.readFileSync("stats.json"); var statsraw = fs.readFileSync('stats.json');
var stats = JSON.parse(statsraw); var stats = JSON.parse(statsraw);
console.log(stats); console.log(stats);
var cursor = setInterval(function () { var cursor = setInterval(function() {
client.sendArray([ client.sendArray([{m:'m', x: client.getOwnParticipant().x = pos.x + 50, y: client.getOwnParticipant().y = pos.y + 50}]);
{ }, 16);
m: "m",
x: (client.getOwnParticipant().x = pos.x + 50),
y: (client.getOwnParticipant().y = pos.y + 50),
},
]);
}, 1000 / 20);
var cursorupdate = setInterval(function () { var cursorupdate = setInterval(function() {
switch (cursormode) { switch (cursormode) {
case "dvd": case "dvd":
pos.x += vel.x; pos.x += vel.x;
pos.y += vel.y; pos.y += vel.y;
if (pos.x >= 50) { if (pos.x >= 50) {
vel.x = -vel.x; vel.x = -vel.x;
} }
if (pos.y >= 50) { if (pos.y >= 50) {
vel.y = -vel.y; vel.y = -vel.y;
} }
if (pos.x <= -50) { if (pos.x <= -50) {
vel.x = -vel.x; vel.x = -vel.x;
} }
if (pos.y <= -50) { if (pos.y <= -50) {
vel.y = -vel.y; vel.y = -vel.y;
} }
if (pos.x >= 50 && pos.y >= 50) { if ((pos.x >= 50) && (pos.y >= 50)) {
stats.cornerhits += 1; stats.cornerhits += 1;
} else if (pos.x >= 50 && pos.y <= -50) { } else if ((pos.x >= 50) && (pos.y <= -50)) {
stats.cornerhits += 1; stats.cornerhits += 1;
} else if (pos.x <= -50 && pos.y <= -50) { } else if ((pos.x <= -50) && (pos.y <= -50)) {
stats.cornerhits += 1; stats.cornerhits += 1;
} else if (pos.x <= -50 && pos.y >= 50) { } else if ((pos.x <= -50) && (pos.y >= 50)) {
stats.cornerhits += 1; stats.cornerhits += 1;
} else if (pos.x >= 50 || pos.y >= 50 || pos.y <= -50 || pos.x <= -50) { } else if ((pos.x >= 50) || (pos.y >= 50) || (pos.y <= -50) || (pos.x <= -50)) {
stats.edgehits += 1; stats.edgehits += 1;
} }
let statsjson = JSON.stringify(stats); let statsjson = JSON.stringify(stats);
fs.writeFile("stats.json", statsjson, "utf8", function (err) { fs.writeFile("stats.json", statsjson, 'utf8', function (err) {
if (err) { if (err) {
console.log("stats.json couldn't be saved!"); console.log("stats.json couldn't be saved!");
return console.log(err); return console.log(err);
@ -123,4 +108,4 @@ var cursorupdate = setInterval(function () {
}); });
break; break;
} }
}, 1000 / 30); }, 25);

View File

@ -1 +1 @@
{"edgehits":67,"cornerhits":0} {"edgehits":23321,"cornerhits":39}