7Placer

typescript pixelplace.io bot

  1. // ==UserScript==
  2. // @name 7Placer
  3. // @description typescript pixelplace.io bot
  4. // @version 1.6.2
  5. // @author Azti
  6. // @match https://pixelplace.io/*
  7. // @require https://update.gf.qytechs.cn/scripts/498080/1395134/Hacktimer.js
  8. // @require https://pixelplace.io/js/jquery.min.js?v2=1
  9. // @require https://pixelplace.io/js/jquery-ui.min.js?v2=1
  10. // @require https://cdnjs.cloudflare.com/ajax/libs/toastify-js/1.6.1/toastify.js
  11. // @grant none
  12. // @run-at document-start
  13. // @namespace https://gf.qytechs.cn/users/374503
  14. // ==/UserScript==
  15.  
  16. /******/ (() => { // webpackBootstrap
  17. /******/ var __webpack_modules__ = ({
  18.  
  19. /***/ "./src/auth/Auth.ts":
  20. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  21.  
  22. "use strict";
  23. __webpack_require__.r(__webpack_exports__);
  24. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  25. /* harmony export */ "default": () => (/* binding */ Auth)
  26. /* harmony export */ });
  27. class Auth {
  28. constructor(authObj) {
  29. this.authKey = authObj.authKey;
  30. this.authId = authObj.authId;
  31. this.authToken = authObj.authToken;
  32. }
  33. }
  34.  
  35.  
  36. /***/ }),
  37.  
  38. /***/ "./src/auth/util/commands.ts":
  39. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  40.  
  41. "use strict";
  42. __webpack_require__.r(__webpack_exports__);
  43. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  44. /* harmony export */ connect: () => (/* binding */ connect),
  45. /* harmony export */ deleteAccount: () => (/* binding */ deleteAccount),
  46. /* harmony export */ disconnect: () => (/* binding */ disconnect),
  47. /* harmony export */ getAccounts: () => (/* binding */ getAccounts),
  48. /* harmony export */ getAuth: () => (/* binding */ getAuth),
  49. /* harmony export */ saveAccount: () => (/* binding */ saveAccount),
  50. /* harmony export */ saveAuth: () => (/* binding */ saveAuth)
  51. /* harmony export */ });
  52. /* harmony import */ var _Auth__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/auth/Auth.ts");
  53. /* harmony import */ var _bot_Bot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/Bot.ts");
  54. /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/variables.ts");
  55. /* harmony import */ var _requests_get_painting__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/requests/get-painting.ts");
  56. /* harmony import */ var _bot_util_websocket__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/bot/util/websocket.ts");
  57.  
  58.  
  59.  
  60.  
  61.  
  62. const window2 = window;
  63. var LocalAccounts = new Map();
  64. // save changes in localstorage
  65. function storagePush() {
  66. const obj = Object.fromEntries(LocalAccounts);
  67. localStorage.setItem('LocalAccounts', JSON.stringify(obj));
  68. }
  69. // restore localstorage to localaccounts
  70. function storageGet() {
  71. const storedAccounts = localStorage.getItem('LocalAccounts');
  72. if (storedAccounts) {
  73. const parsedAccounts = JSON.parse(storedAccounts);
  74. LocalAccounts = new Map(Object.entries(parsedAccounts));
  75. }
  76. else
  77. LocalAccounts = new Map();
  78. }
  79. async function delay(ms) {
  80. return new Promise(resolve => setTimeout(resolve, ms));
  81. }
  82. // saves from params
  83. function saveAuth(username, authId, authKey, authToken, print = true) {
  84. if (!authId || !authKey || !authToken) {
  85. console.log('[7p] saveAuth usage: saveAuth(username, authId, authKey, authToken)');
  86. return;
  87. }
  88. const account = { authId, authKey, authToken };
  89. LocalAccounts.set(username, account);
  90. storagePush();
  91. if (print)
  92. console.log('Auth saved. Saved list: ', LocalAccounts);
  93. }
  94. // returns client's auth
  95. async function getAuth(print = true) {
  96. const cookieStore = window2.cookieStore;
  97. const authToken = await cookieStore.get("authToken");
  98. const authKey = await cookieStore.get("authKey");
  99. const authId = await cookieStore.get("authId");
  100. if (authToken == null || authKey == null || authId == null) {
  101. console.log('[7p] Please login first!');
  102. return;
  103. }
  104. if (print)
  105. console.log(`authId = "${authId.value}", authKey = "${authKey.value}", authToken = "${authToken.value}"`);
  106. return { authToken: authToken.value, authKey: authKey.value, authId: authId.value };
  107. }
  108. // saves auth from client cookies
  109. async function saveAccount() {
  110. storageGet();
  111. const AuthObj = await getAuth(false);
  112. const userinfo = await (0,_requests_get_painting__WEBPACK_IMPORTED_MODULE_2__["default"])(AuthObj.authId, AuthObj.authKey, AuthObj.authToken);
  113. saveAuth(userinfo.user.name, AuthObj.authId, AuthObj.authKey, AuthObj.authToken, false);
  114. console.log('Auth saved. Saved list: ', LocalAccounts);
  115. }
  116. // logs saved auths
  117. function getAccounts() {
  118. storageGet();
  119. if (!LocalAccounts || LocalAccounts.size == 0) {
  120. console.log('No accounts found');
  121. return;
  122. }
  123. console.log(`Found ${LocalAccounts.size} accounts`);
  124. console.log(LocalAccounts);
  125. }
  126. // deletes auths
  127. function deleteAccount(identifier) {
  128. if (identifier == null) {
  129. console.log('deleteAccount usage: deleteAccount(user or index)');
  130. return;
  131. }
  132. storageGet();
  133. if (typeof identifier == 'string') {
  134. if (identifier == 'all') {
  135. LocalAccounts.forEach((value, key) => {
  136. LocalAccounts.delete(key);
  137. });
  138. return;
  139. }
  140. if (!LocalAccounts.has(identifier)) {
  141. console.log(`[7p] Error deleting: No account with name ${identifier}`);
  142. return;
  143. }
  144. LocalAccounts.delete(identifier);
  145. console.log(`[7p] Deleted account ${identifier}.`);
  146. console.log(LocalAccounts);
  147. }
  148. if (typeof identifier == 'number') {
  149. const keys = Array.from(LocalAccounts.keys());
  150. if (identifier > keys.length) {
  151. console.log(`[7p] Error deleting: No account with index ${identifier}`);
  152. return;
  153. }
  154. LocalAccounts.delete(keys[identifier]);
  155. console.log(`Deleted account ${identifier}`);
  156. console.log(LocalAccounts);
  157. }
  158. storagePush();
  159. }
  160. async function connect(username) {
  161. storageGet();
  162. const account = LocalAccounts.get(username);
  163. const connectedbot = window2.seven.bots.find((bot) => bot.generalinfo?.user.name == username);
  164. if (!username) {
  165. console.log('[7p] Missing bot username, connect("username")');
  166. return;
  167. }
  168. if (username == 'all') {
  169. for (const [username, account] of LocalAccounts) {
  170. // checks if bot is already connected
  171. const connectedbot = window2.seven.bots.find((bot) => bot.generalinfo?.user.name == username);
  172. const auth = new _Auth__WEBPACK_IMPORTED_MODULE_4__["default"](account);
  173. if (connectedbot) {
  174. console.log(`[7p] Account ${username} is already connected.`);
  175. continue;
  176. }
  177. new _bot_Bot__WEBPACK_IMPORTED_MODULE_0__.WSBot(auth, username);
  178. await delay(500);
  179. }
  180. return;
  181. }
  182. if (!account) {
  183. console.log(`[7p] No account found with username ${username}`);
  184. return;
  185. }
  186. if (connectedbot) {
  187. console.log(`[7p] Account ${username} is already connected.`);
  188. return;
  189. }
  190. const auth = new _Auth__WEBPACK_IMPORTED_MODULE_4__["default"](account);
  191. new _bot_Bot__WEBPACK_IMPORTED_MODULE_0__.WSBot(auth, username);
  192. }
  193. function disconnect(username) {
  194. const bot = window2.seven.bots.find((bot) => bot.generalinfo?.user.name == username);
  195. if (!username) {
  196. console.log('[7p] disconnect requires a username, disconnect("username")');
  197. return;
  198. }
  199. if (username == 'all') {
  200. if (window2.seven.bots.length == 1) {
  201. console.log('[7p] No bots connected.');
  202. return;
  203. }
  204. for (const bot of window2.seven.bots) {
  205. (0,_bot_util_websocket__WEBPACK_IMPORTED_MODULE_3__.closeBot)(bot);
  206. }
  207. return;
  208. }
  209. if (!bot) {
  210. console.log(`[7p] No bot connected with username ${username}`);
  211. return;
  212. }
  213. (0,_bot_util_websocket__WEBPACK_IMPORTED_MODULE_3__.closeBot)(bot);
  214. }
  215.  
  216.  
  217. /***/ }),
  218.  
  219. /***/ "./src/bot/Bot.ts":
  220. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  221.  
  222. "use strict";
  223. __webpack_require__.r(__webpack_exports__);
  224. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  225. /* harmony export */ Bot: () => (/* binding */ Bot),
  226. /* harmony export */ Client: () => (/* binding */ Client),
  227. /* harmony export */ WSBot: () => (/* binding */ WSBot)
  228. /* harmony export */ });
  229. /* harmony import */ var _util_websocket__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/util/websocket.ts");
  230. /* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/Canvas.ts");
  231. /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/variables.ts");
  232. /* harmony import */ var _css_style__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/css/style.ts");
  233. /* harmony import */ var _requests_get_painting__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/requests/get-painting.ts");
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240. const seven = window.seven;
  241. class Bot {
  242. constructor() {
  243. this.trackeriters = 0;
  244. this.lastplace = Date.now();
  245. this.botid = Bot.botIndex;
  246. Bot.botIndex += 1; // id for next bot
  247. }
  248. emit(event, params) {
  249. this.ws.send(`42["${event}",${params}]`);
  250. }
  251. async placePixel(x, y, color, client = false, tracker = true) {
  252. const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
  253. const canvascolor = canvas.getColor(x, y);
  254. if (canvascolor == color || canvascolor == 200) {
  255. return true;
  256. }
  257. while (Date.now() - this.lastplace < seven.pixelspeed) {
  258. await new Promise(resolve => setTimeout(resolve, 0));
  259. }
  260. this.emit('p', `[${x},${y},${color},1]`);
  261. this.lastplace = Date.now();
  262. if (tracker && this.trackeriters >= 6) {
  263. $(this.tracker).css({ top: y, left: x, display: 'block' });
  264. this.trackeriters = 0;
  265. }
  266. this.trackeriters += 1;
  267. return true;
  268. }
  269. static async findAvailableBot() {
  270. const bots = seven.bots;
  271. var tick = 0;
  272. while (true) {
  273. for (var i = 0; i < bots.length; i++) {
  274. const bot = bots[i];
  275. if (Date.now() - bot.lastplace >= seven.pixelspeed) {
  276. // console.log(`[7p] found available bot: ${bot.username}, ${ Date.now() - bot.lastplace }`)
  277. return bot;
  278. }
  279. }
  280. tick += 1;
  281. if (tick == seven.tickspeed) {
  282. tick = 0;
  283. await new Promise(resolve => setTimeout(resolve, 0));
  284. }
  285. }
  286. }
  287. createTracker() {
  288. const tracker = $('<div class="track" id="bottracker">').text(`[7P] ${this.username}`).css(_css_style__WEBPACK_IMPORTED_MODULE_3__.trackercss);
  289. $('#canvas').ready(function () {
  290. // console.log(`[7p] created tracker: ${name}`)
  291. $('#painting-move').append(tracker);
  292. });
  293. return tracker;
  294. }
  295. set ws(wss) {
  296. this._ws = wss;
  297. }
  298. get ws() {
  299. return this._ws;
  300. }
  301. }
  302. Bot.botIndex = 0;
  303. class WSBot extends Bot {
  304. constructor(auth, username) {
  305. super();
  306. this._auth = auth;
  307. this.username = username;
  308. this.startBot();
  309. }
  310. async startBot() {
  311. this.generalinfo = await (0,_requests_get_painting__WEBPACK_IMPORTED_MODULE_4__["default"])(this.auth.authId, this.auth.authKey, this.auth.authToken);
  312. this.tracker = this.createTracker();
  313. this.ws = await (0,_util_websocket__WEBPACK_IMPORTED_MODULE_0__.hookBot)(this);
  314. }
  315. get auth() {
  316. return this._auth;
  317. }
  318. }
  319. class Client extends Bot {
  320. constructor() {
  321. super();
  322. this.username = 'Client';
  323. Client.instance = this;
  324. this.tracker = this.createTracker();
  325. seven.bots.push(this);
  326. }
  327. static get Client() {
  328. return Client.instance;
  329. }
  330. }
  331.  
  332.  
  333. /***/ }),
  334.  
  335. /***/ "./src/bot/util/onmessage.ts":
  336. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  337.  
  338. "use strict";
  339. __webpack_require__.r(__webpack_exports__);
  340. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  341. /* harmony export */ onBotMessage: () => (/* binding */ onBotMessage),
  342. /* harmony export */ onClientMessage: () => (/* binding */ onClientMessage)
  343. /* harmony export */ });
  344. /* harmony import */ var _Bot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/Bot.ts");
  345. /* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/Canvas.ts");
  346. /* harmony import */ var _palive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/bot/util/palive.ts");
  347. /* harmony import */ var _websocket__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/bot/util/websocket.ts");
  348. /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/variables.ts");
  349. /* harmony import */ var _auth_util_commands__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/auth/util/commands.ts");
  350. /* harmony import */ var _modules_defaultModules_SevenProtect__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/modules/defaultModules/SevenProtect.ts");
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358. const seven = window.seven;
  359. // client
  360. function onClientMessage(event) {
  361. const msg = event.data;
  362. const bot = _Bot__WEBPACK_IMPORTED_MODULE_0__.Client.instance;
  363. if (msg.startsWith("42")) {
  364. const msg = JSON.parse(event.data.substr(2));
  365. const type = msg[0];
  366. switch (type) {
  367. case "p":
  368. for (const pixel of msg[1]) {
  369. const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
  370. const x = pixel[0];
  371. const y = pixel[1];
  372. const color = pixel[2];
  373. const id = pixel[4];
  374. canvas.updatePixel(x, y, color);
  375. _modules_defaultModules_SevenProtect__WEBPACK_IMPORTED_MODULE_6__["default"].checkPixel(x, y, color);
  376. }
  377. break;
  378. case "canvas":
  379. for (const pixel of msg[1]) {
  380. const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
  381. const x = pixel[0];
  382. const y = pixel[1];
  383. const color = pixel[2];
  384. canvas.updatePixel(x, y, color);
  385. }
  386. break;
  387. }
  388. }
  389. }
  390. // multibot
  391. async function onBotMessage(event, bot) {
  392. const message = event.data;
  393. // game packets
  394. if (message.startsWith("42")) {
  395. const message = JSON.parse(event.data.substr(2));
  396. const type = message[0];
  397. const botid = bot.generalinfo.user.id;
  398. const botname = bot.username;
  399. switch (type) {
  400. case "server_time":
  401. bot.paliveServerTime = message[1]; // stores servertime for palive
  402. break;
  403. case "ping.alive":
  404. const hash = (0,_palive__WEBPACK_IMPORTED_MODULE_2__["default"])(bot.paliveServerTime, botid);
  405. console.log('[7p]', botname, ': pong =', hash, botid);
  406. bot.emit('pong.alive', `"${hash}"`);
  407. break;
  408. case "throw.error":
  409. if (message[1] == 49) {
  410. console.log(`[7p] [Bot ${botname}] Error (${message[1]}): This auth is not valid! Deleting account from saved accounts...`);
  411. (0,_auth_util_commands__WEBPACK_IMPORTED_MODULE_5__.deleteAccount)(botname);
  412. (0,_websocket__WEBPACK_IMPORTED_MODULE_3__.closeBot)(bot);
  413. return;
  414. }
  415. else if (message[1] == 16) {
  416. (0,_websocket__WEBPACK_IMPORTED_MODULE_3__.closeBot)(bot);
  417. }
  418. console.log(`[7p] [Bot ${botname}] Pixelplace WS error: ${message[1]}`);
  419. break;
  420. case "canvas":
  421. console.log(`[7p] Succesfully connected to bot ${bot.username}`);
  422. seven.bots.push(bot);
  423. break;
  424. }
  425. }
  426. // start
  427. if (message.startsWith("0"))
  428. bot.ws.send('40');
  429. // auth
  430. if (message.startsWith("40"))
  431. bot.ws.send(`42["init",{"authKey":"${bot.auth.authKey}","authToken":"${bot.auth.authToken}","authId":"${bot.auth.authId}","boardId":${_canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance.ID}}]`);
  432. // keep alive
  433. if (message.startsWith("2"))
  434. bot.ws.send('3');
  435. }
  436.  
  437.  
  438. /***/ }),
  439.  
  440. /***/ "./src/bot/util/palive.ts":
  441. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  442.  
  443. "use strict";
  444. __webpack_require__.r(__webpack_exports__);
  445. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  446. /* harmony export */ "default": () => (/* binding */ getPalive),
  447. /* harmony export */ getTDelay: () => (/* binding */ getTDelay)
  448. /* harmony export */ });
  449. // credits to symmetry
  450. function randomString(charList, num) {
  451. return Array.from({ length: num }, () => charList.charAt(Math.floor(Math.random() * charList.length))).join('');
  452. }
  453. function randomString1(num) {
  454. const charList = 'abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  455. return randomString(charList, num);
  456. }
  457. function randomString2(num) {
  458. const charList = 'gmbonjklezcfxta1234567890GMBONJKLEZCFXTA';
  459. return randomString(charList, num);
  460. }
  461. function randInt(min, max) {
  462. return Math.floor(Math.random() * (max - min + 1)) + min;
  463. }
  464. const paliveCharmap = {
  465. "0": "g",
  466. "1": "n",
  467. "2": "b",
  468. "3": "r",
  469. "4": "z",
  470. "5": "s",
  471. "6": "l",
  472. "7": "x",
  473. "8": "i",
  474. "9": "o",
  475. };
  476. function getPalive(serverTime, userId) {
  477. const tDelay = getTDelay(serverTime);
  478. const sequenceLengths = [6, 5, 9, 4, 5, 3, 6, 6, 3];
  479. const currentTimestamp = Math.floor(Date.now() / 1000) + tDelay - 5400;
  480. const timestampString = currentTimestamp.toString();
  481. const timestampCharacters = timestampString.split('');
  482. let result = '';
  483. for (let i = 0; i < sequenceLengths.length; i++) {
  484. const sequenceNumber = sequenceLengths[i];
  485. result += randInt(0, 1) == 1 ? randomString2(sequenceNumber) : randomString1(sequenceNumber);
  486. const letter = paliveCharmap[parseInt(timestampCharacters[i])];
  487. result += randInt(0, 1) == 0 ? letter.toUpperCase() : letter;
  488. }
  489. result += userId.toString().substring(0, 1) + (randInt(0, 1) == 1 ? randomString2(randInt(4, 20)) : randomString1(randInt(4, 25)));
  490. return result + "0=";
  491. }
  492. function getTDelay(serverTime) {
  493. const currentTime = new Date().getTime() / 1e3;
  494. return Math.floor(serverTime - currentTime);
  495. }
  496.  
  497.  
  498. /***/ }),
  499.  
  500. /***/ "./src/bot/util/websocket.ts":
  501. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  502.  
  503. "use strict";
  504. __webpack_require__.r(__webpack_exports__);
  505. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  506. /* harmony export */ closeBot: () => (/* binding */ closeBot),
  507. /* harmony export */ hookBot: () => (/* binding */ hookBot)
  508. /* harmony export */ });
  509. /* harmony import */ var _Bot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/Bot.ts");
  510. /* harmony import */ var _onmessage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/bot/util/onmessage.ts");
  511. /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/variables.ts");
  512.  
  513.  
  514.  
  515. const seven = window.seven;
  516. // client
  517. const customWS = window.WebSocket;
  518. window.WebSocket = function (url, protocols) {
  519. const client = new _Bot__WEBPACK_IMPORTED_MODULE_0__.Client();
  520. const socket = new customWS(url, protocols);
  521. socket.addEventListener("message", (event) => { (0,_onmessage__WEBPACK_IMPORTED_MODULE_1__.onClientMessage)(event); });
  522. client.ws = socket;
  523. return socket;
  524. };
  525. // multibot
  526. async function hookBot(bot) {
  527. console.log(`[7p] Attempting to connect account ${bot.username}`);
  528. const socket = new customWS("wss://pixelplace.io/socket.io/?EIO=4&transport=websocket");
  529. socket.addEventListener("message", (event) => { (0,_onmessage__WEBPACK_IMPORTED_MODULE_1__.onBotMessage)(event, bot); });
  530. socket.addEventListener("close", () => { _Bot__WEBPACK_IMPORTED_MODULE_0__.Bot.botIndex -= 1; });
  531. return socket;
  532. }
  533. function closeBot(bot) {
  534. if (bot instanceof _Bot__WEBPACK_IMPORTED_MODULE_0__.Client)
  535. return;
  536. if (!bot) {
  537. console.log('[7p] Cannot close bot that doesnt exist.');
  538. return;
  539. }
  540. bot.ws.close();
  541. const result = seven.bots.filter((checkedBot) => checkedBot.botid != bot.botid);
  542. seven.bots = result;
  543. console.log('[7placer] Ended bot ', bot.botid);
  544. }
  545.  
  546.  
  547. /***/ }),
  548.  
  549. /***/ "./src/canvas/Canvas.ts":
  550. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  551.  
  552. "use strict";
  553. __webpack_require__.r(__webpack_exports__);
  554. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  555. /* harmony export */ Canvas: () => (/* binding */ Canvas),
  556. /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
  557. /* harmony export */ });
  558. /* harmony import */ var _css_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/css/style.ts");
  559. /* harmony import */ var _util_canvasloader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/util/canvasloader.ts");
  560.  
  561.  
  562. class Canvas {
  563. constructor() {
  564. this._ID = this.ParseID();
  565. this._isProcessed = false;
  566. this._customCanvas = this.newPreviewCanvas();
  567. }
  568. static get instance() {
  569. if (!Canvas._instance) {
  570. Canvas._instance = new Canvas;
  571. (0,_util_canvasloader__WEBPACK_IMPORTED_MODULE_1__.processColors)();
  572. }
  573. return Canvas._instance;
  574. }
  575. newPreviewCanvas() {
  576. const canvas = $(`<canvas width="2500" height="2088">`).css(_css_style__WEBPACK_IMPORTED_MODULE_0__.canvascss);
  577. $('#canvas').ready(function () {
  578. $('#painting-move').append(canvas);
  579. });
  580. const ctx = canvas[0].getContext("2d");
  581. return ctx;
  582. }
  583. ParseID() {
  584. return parseInt(window.location.href.split("/").slice(-1)[0].split("-")[0]);
  585. }
  586. get previewCanvas() {
  587. return this._customCanvas;
  588. }
  589. get canvasArray() {
  590. return this._canvasArray;
  591. }
  592. get isProcessed() {
  593. return this._isProcessed;
  594. }
  595. set isProcessed(bool) {
  596. this._isProcessed = bool;
  597. }
  598. get ID() {
  599. return this._ID;
  600. }
  601. set canvasArray(array) {
  602. this._canvasArray = array;
  603. this.isProcessed = true;
  604. }
  605. getColor(x, y) {
  606. try {
  607. return this.canvasArray[x][y];
  608. }
  609. catch {
  610. return 200;
  611. }
  612. ;
  613. }
  614. updatePixel(x, y, color) {
  615. if (!this._isProcessed)
  616. return;
  617. this.canvasArray[x][y] = color;
  618. // console.log(this.getColor(x, y), "->", color)
  619. }
  620. }
  621. /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Canvas);
  622.  
  623.  
  624. /***/ }),
  625.  
  626. /***/ "./src/canvas/util/canvasloader.ts":
  627. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  628.  
  629. "use strict";
  630. __webpack_require__.r(__webpack_exports__);
  631. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  632. /* harmony export */ processColors: () => (/* binding */ processColors),
  633. /* harmony export */ processWater: () => (/* binding */ processWater)
  634. /* harmony export */ });
  635. /* harmony import */ var _Canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/canvas/Canvas.ts");
  636. /* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/util/colors.ts");
  637.  
  638.  
  639. async function processWater() {
  640. var image = await fetch('https://pixelplace.io/canvas/' + _Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance.ID + 'p.png?t200000=' + Date.now());
  641. if (!image.ok) {
  642. const canvas = document.getElementById('canvas');
  643. var waterArray = Array.from({ length: canvas.width }, () => Array.from({ length: canvas.height }, () => 1));
  644. return waterArray;
  645. }
  646. const blob = await image.blob();
  647. const bitmap = await createImageBitmap(blob);
  648. const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);
  649. var waterArray = Array.from({ length: canvas.width }, () => Array.from({ length: canvas.height }, () => 1));
  650. const context = canvas.getContext('2d');
  651. context.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height);
  652. const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
  653. return new Promise((resolve) => {
  654. if (bitmap.width == 1 && bitmap.height == 1) { // custom canvases ?
  655. resolve(waterArray);
  656. }
  657. for (let y = 0; y < canvas.height; y++) {
  658. for (let x = 0; x < canvas.width; x++) {
  659. const index = (y * imageData.width + x) * 4;
  660. var r = imageData.data[index];
  661. var g = imageData.data[index + 1];
  662. var b = imageData.data[index + 2];
  663. if (r == 204 && g == 204 && b == 204) {
  664. waterArray[x][y] = 200;
  665. }
  666. }
  667. }
  668. console.log(waterArray);
  669. resolve(waterArray);
  670. });
  671. }
  672. async function processColors() {
  673. const startTotalTime = performance.now();
  674. const waterArray = await processWater();
  675. const startColorsTime = performance.now();
  676. const canvas = document.getElementById('canvas');
  677. const ctx = canvas.getContext('2d');
  678. const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  679. const pixelData = imageData.data;
  680. var CanvasArray = Array.from({ length: canvas.width }, () => Array.from({ length: canvas.height }, () => 1));
  681. if (waterArray.length > 1) {
  682. CanvasArray = waterArray;
  683. }
  684. for (let y = 0; y < canvas.height; y++) {
  685. for (let x = 0; x < canvas.width; x++) {
  686. if (CanvasArray[x][y] == 200) {
  687. continue;
  688. }
  689. const pixelIndex = (y * canvas.width + x) * 4;
  690. const r = pixelData[pixelIndex];
  691. const g = pixelData[pixelIndex + 1];
  692. const b = pixelData[pixelIndex + 2];
  693. const colornum = (r << 16) | (g << 8) | b;
  694. const colorIndex = _colors__WEBPACK_IMPORTED_MODULE_1__.colors.indexOf(colornum);
  695. CanvasArray[x][y] = colorIndex;
  696. }
  697. }
  698. console.log(CanvasArray);
  699. _Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance.canvasArray = CanvasArray;
  700. const finalTotalTime = performance.now() - startTotalTime;
  701. const finalColorsTime = performance.now() - startColorsTime;
  702. const finalWaterTime = startColorsTime - startTotalTime;
  703. console.log(`[7p PROCESSING] Total Time: ${finalTotalTime}ms, Colors Time: ${finalColorsTime}ms, Water Time: ${finalWaterTime}ms`);
  704. }
  705.  
  706.  
  707. /***/ }),
  708.  
  709. /***/ "./src/canvas/util/colors.ts":
  710. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  711.  
  712. "use strict";
  713. __webpack_require__.r(__webpack_exports__);
  714. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  715. /* harmony export */ colors: () => (/* binding */ colors)
  716. /* harmony export */ });
  717. const colors = [
  718. 0xFFFFFF,
  719. 0xC4C4C4,
  720. 0x888888,
  721. 0x555555,
  722. 0x222222,
  723. 0x000000,
  724. 0x006600,
  725. 0x22B14C,
  726. 0x02BE01,
  727. 0x51E119,
  728. 0x94E044,
  729. 0xFBFF5B,
  730. 0xE5D900,
  731. 0xE6BE0C,
  732. 0xE59500,
  733. 0xA06A42,
  734. 0x99530D,
  735. 0x633C1F,
  736. 0x6B0000,
  737. 0x9F0000,
  738. 0xE50000,
  739. 0xFF3904,
  740. 0xBB4F00,
  741. 0xFF755F,
  742. 0xFFC49F,
  743. 0xFFDFCC,
  744. 0xFFA7D1,
  745. 0xCF6EE4,
  746. 0xEC08EC,
  747. 0x820080,
  748. 0x5100FF,
  749. 0x020763,
  750. 0x0000EA,
  751. 0x044BFF,
  752. 0x6583CF,
  753. 0x36BAFF,
  754. 0x0083C7,
  755. 0x00D3DD,
  756. 0x45FFC8,
  757. 0x003638,
  758. 0x477050,
  759. 0x98FB98,
  760. 0xFF7000,
  761. 0xCE2939,
  762. 0xFF416A,
  763. 0x7D26CD,
  764. 0x330077,
  765. 0x005BA1,
  766. 0xB5E8EE,
  767. 0x1B7400,
  768. 0x75CEA9,
  769. 0x34EB6B,
  770. 0xFFCC00,
  771. 0xBB276C,
  772. 0xFF7EBB,
  773. 0x440414,
  774. 0x591C91,
  775. 0xC1A162,
  776. 0xCAFF70,
  777. 0x013182,
  778. 0xA6A6A6,
  779. 0x6F6F6F,
  780. 0x3A3A3A,
  781. 0x4D082C
  782. ];
  783.  
  784.  
  785. /***/ }),
  786.  
  787. /***/ "./src/css/drop.ts":
  788. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  789.  
  790. "use strict";
  791. __webpack_require__.r(__webpack_exports__);
  792. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  793. /* harmony export */ createDropArea: () => (/* binding */ createDropArea)
  794. /* harmony export */ });
  795. /* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/css/style.ts");
  796. /* harmony import */ var _modules_defaultModules_SevenImageTools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenImageTools.ts");
  797. /* harmony import */ var _modules_util_getClientMouse__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/modules/util/getClientMouse.ts");
  798.  
  799.  
  800.  
  801. function createDropArea() {
  802. const dropobject = $('<div>').text('Drop Image').css(_style__WEBPACK_IMPORTED_MODULE_0__.drop);
  803. const [x, y] = (0,_modules_util_getClientMouse__WEBPACK_IMPORTED_MODULE_2__["default"])();
  804. $('body').append(dropobject);
  805. dropobject.on("click", function () {
  806. dropobject.remove();
  807. });
  808. dropobject.on("drop", async function (event) {
  809. event.preventDefault();
  810. event.stopPropagation();
  811. const image = event.originalEvent.dataTransfer.files[0];
  812. dropobject.remove();
  813. await (0,_modules_defaultModules_SevenImageTools__WEBPACK_IMPORTED_MODULE_1__.botImage)(x, y, image);
  814. // console.log(image)
  815. }).on('dragover', false);
  816. }
  817.  
  818.  
  819. /***/ }),
  820.  
  821. /***/ "./src/css/style.ts":
  822. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  823.  
  824. "use strict";
  825. __webpack_require__.r(__webpack_exports__);
  826. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  827. /* harmony export */ canvascss: () => (/* binding */ canvascss),
  828. /* harmony export */ drop: () => (/* binding */ drop),
  829. /* harmony export */ trackercss: () => (/* binding */ trackercss)
  830. /* harmony export */ });
  831. const trackercss = {
  832. top: '0px',
  833. left: '0px',
  834. borderColor: 'rgb(138,43,226)',
  835. color: 'rgb(138,43,226)',
  836. backgroundColor: 'black',
  837. opacity: '60%',
  838. display: 'none',
  839. transition: 'all 0.06s ease-in-out',
  840. pointerEvents: 'none'
  841. };
  842. // design by 0vc4
  843. const drop = {
  844. width: 'calc(100% - 2em)',
  845. height: 'calc(100% - 2em)',
  846. position: 'fixed',
  847. left: '0px',
  848. top: '0px',
  849. backgroundColor: 'rgba(0, 0, 0, 0.533)',
  850. zIndex: '9999-',
  851. display: 'flex',
  852. color: 'white',
  853. fontSize: '48pt',
  854. justifyContent: 'center',
  855. alignItems: 'center',
  856. border: '3px white dashed',
  857. borderRadius: '18px',
  858. margin: '1em',
  859. };
  860. const canvascss = {
  861. position: 'absolute',
  862. pointerEvents: 'none',
  863. left: '0px',
  864. top: '0px',
  865. imageRendering: 'pixelated',
  866. opacity: '50%',
  867. animation: 'blink 3s ease-out infinite'
  868. };
  869. const blink = document.createElement("style");
  870. blink.type = "text/css";
  871. blink.innerText = `
  872. @keyframes blink {
  873. 0% { opacity: .30; }
  874. 50% { opacity: .10; }
  875. 100% { opacity: .30; }
  876. }`;
  877. document.head.appendChild(blink);
  878.  
  879.  
  880. /***/ }),
  881.  
  882. /***/ "./src/index.ts":
  883. /***/ ((__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) => {
  884.  
  885. "use strict";
  886.  
  887. ;// ./package.json
  888. const package_namespaceObject = {"rE":"1.6.2"};
  889. // EXTERNAL MODULE: ./src/canvas/Canvas.ts
  890. var Canvas = __webpack_require__("./src/canvas/Canvas.ts");
  891. // EXTERNAL MODULE: ./src/util/ExternalLoader.ts
  892. var ExternalLoader = __webpack_require__("./src/util/ExternalLoader.ts");
  893. ;// ./src/index.ts
  894.  
  895.  
  896.  
  897. // @ts-ignore (GLOBAL IMPORT)
  898. const context = __webpack_require__("./src sync recursive ^(?%21.*global\\.d).+");
  899. context.keys().forEach(context);
  900. Object.defineProperty(window.console, 'log', {
  901. configurable: false,
  902. enumerable: true,
  903. writable: false,
  904. value: console.log
  905. });
  906. console.log('7Placer Loaded! Version:', package_namespaceObject.rE);
  907. (0,ExternalLoader.loadCss)('https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css');
  908. window.onload = () => {
  909. Toastify({
  910. text: '7Placer Loaded!',
  911. }).showToast();
  912. Canvas["default"].instance;
  913. };
  914.  
  915.  
  916. /***/ }),
  917.  
  918. /***/ "./src/modules/defaultModules/SevenImageTools.ts":
  919. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  920.  
  921. "use strict";
  922. __webpack_require__.r(__webpack_exports__);
  923. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  924. /* harmony export */ ImageToPixels: () => (/* binding */ ImageToPixels),
  925. /* harmony export */ botImage: () => (/* binding */ botImage)
  926. /* harmony export */ });
  927. /* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/canvas/Canvas.ts");
  928. /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/variables.ts");
  929. /* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
  930. /* harmony import */ var _canvas_util_colors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/canvas/util/colors.ts");
  931. /* harmony import */ var _SevenSorting__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/modules/defaultModules/SevenSorting.ts");
  932.  
  933.  
  934.  
  935.  
  936.  
  937. function getColorDistance(c1, c2) {
  938. // Image Color
  939. const r1 = (c1 >> 16) & 0xFF;
  940. const g1 = (c1 >> 8) & 0xFF;
  941. const b1 = c1 & 0xFF;
  942. // Pixelplace Color
  943. const r2 = (c2 >> 16) & 0xFF;
  944. const g2 = (c2 >> 8) & 0xFF;
  945. const b2 = c2 & 0xFF;
  946. return (r1 - r2) ** 2 + (g1 - g2) ** 2 + (b1 - b2) ** 2;
  947. }
  948. function findClosestColor(color) {
  949. let minDistance = Infinity;
  950. let colorNumber;
  951. let index = 0;
  952. for (const pxpColor of _canvas_util_colors__WEBPACK_IMPORTED_MODULE_4__.colors) {
  953. const distance = getColorDistance(color, pxpColor);
  954. if (distance < minDistance) {
  955. minDistance = distance;
  956. colorNumber = index;
  957. }
  958. index += 1;
  959. }
  960. return colorNumber;
  961. }
  962. function previewCanvasImage(x, y, image) {
  963. const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance;
  964. const ctx = canvas.previewCanvas;
  965. const img = new Image();
  966. img.onload = function () {
  967. ctx.drawImage(img, x, y);
  968. };
  969. img.src = URL.createObjectURL(image);
  970. }
  971. async function ImageToPixels(image) {
  972. const result = [];
  973. const canvas = new OffscreenCanvas(image.width, image.height);
  974. const ctx = canvas.getContext('2d');
  975. ctx.drawImage(image, 0, 0, image.width, image.height);
  976. const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  977. const pixelData = imageData.data;
  978. for (let y = 0; y < canvas.height; y++) {
  979. for (let x = 0; x < canvas.width; x++) {
  980. const pixelIndex = (y * canvas.width + x) * 4;
  981. const r = pixelData[pixelIndex];
  982. const g = pixelData[pixelIndex + 1];
  983. const b = pixelData[pixelIndex + 2];
  984. const a = pixelData[pixelIndex + 3];
  985. const colornum = (r << 16) | (g << 8) | b;
  986. if (a < 1) {
  987. continue; // ignore transparent pixels
  988. }
  989. const color = findClosestColor(colornum);
  990. result.push({ x, y, color });
  991. }
  992. }
  993. return result;
  994. }
  995. async function botImage(x, y, image) {
  996. const bitmap = await createImageBitmap(image);
  997. const processed = await ImageToPixels(bitmap);
  998. previewCanvasImage(x, y, image);
  999. (0,_SevenSorting__WEBPACK_IMPORTED_MODULE_3__["default"])(processed, window.seven.order);
  1000. processed.forEach((pixel) => _SevenQueue__WEBPACK_IMPORTED_MODULE_2__["default"].add(pixel.x + x, pixel.y + y, pixel.color, true));
  1001. }
  1002.  
  1003.  
  1004. /***/ }),
  1005.  
  1006. /***/ "./src/modules/defaultModules/SevenProtect.ts":
  1007. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  1008.  
  1009. "use strict";
  1010. __webpack_require__.r(__webpack_exports__);
  1011. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  1012. /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
  1013. /* harmony export */ });
  1014. /* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/canvas/Canvas.ts");
  1015. /* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
  1016.  
  1017.  
  1018. class Protector {
  1019. protect(x, y, color) {
  1020. Protector.protected.push({ x: x, y: y, color: color });
  1021. }
  1022. static clear() {
  1023. Protector.protected = [];
  1024. }
  1025. static checkPixel(x, y, color) {
  1026. const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance;
  1027. if (Protector.protected.length == 0) {
  1028. return;
  1029. }
  1030. function isInsideProtected(pixel) {
  1031. if (pixel.x == x && pixel.y == y) {
  1032. return true;
  1033. }
  1034. return false;
  1035. }
  1036. function isSameColor(pixel) {
  1037. const canvasColor = canvas.getColor(x, y);
  1038. if (canvasColor == pixel.color) {
  1039. return true;
  1040. }
  1041. return false;
  1042. }
  1043. Protector.protected.forEach((pixel) => {
  1044. if (isInsideProtected(pixel) && !isSameColor(pixel)) {
  1045. _SevenQueue__WEBPACK_IMPORTED_MODULE_1__["default"].add(x, y, pixel.color, false);
  1046. }
  1047. });
  1048. }
  1049. }
  1050. Protector.protected = [];
  1051. /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Protector);
  1052.  
  1053.  
  1054. /***/ }),
  1055.  
  1056. /***/ "./src/modules/defaultModules/SevenQueue.ts":
  1057. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  1058.  
  1059. "use strict";
  1060. __webpack_require__.r(__webpack_exports__);
  1061. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  1062. /* harmony export */ "default": () => (/* binding */ Queue)
  1063. /* harmony export */ });
  1064. /* harmony import */ var _bot_Bot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/bot/Bot.ts");
  1065. /* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/canvas/Canvas.ts");
  1066. /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/variables.ts");
  1067. /* harmony import */ var _SevenProtect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/modules/defaultModules/SevenProtect.ts");
  1068.  
  1069.  
  1070.  
  1071.  
  1072. const seven = window.seven;
  1073. class Queue {
  1074. constructor() {
  1075. Queue.performance = performance.now();
  1076. }
  1077. static add(x, y, color, protection, atStart = false, client = false) {
  1078. const pixel = { x: x, y: y, color: color, protected: protection, client: client };
  1079. if (atStart) {
  1080. seven.queue.unshift(pixel);
  1081. }
  1082. else {
  1083. seven.queue.push(pixel);
  1084. }
  1085. if (seven.queue.length == 1) {
  1086. Queue.start();
  1087. }
  1088. }
  1089. static clear() {
  1090. // console.log('Queue cleared: ', seven.queue)
  1091. seven.queue = [];
  1092. }
  1093. static async start() {
  1094. const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
  1095. const protector = new _SevenProtect__WEBPACK_IMPORTED_MODULE_3__["default"];
  1096. if (!canvas.isProcessed) {
  1097. console.log('[7p] Error starting queue: Canvas has not been processed yet.');
  1098. Queue.stop();
  1099. return;
  1100. }
  1101. seven.inprogress = true;
  1102. while (seven.inprogress) {
  1103. // console.log(performance.now() - Queue.performance)
  1104. Queue.performance = performance.now();
  1105. const pixel = seven.queue[0];
  1106. if (pixel.client) {
  1107. var bot = _bot_Bot__WEBPACK_IMPORTED_MODULE_0__.Client.instance;
  1108. }
  1109. else {
  1110. var bot = await _bot_Bot__WEBPACK_IMPORTED_MODULE_0__.Bot.findAvailableBot();
  1111. }
  1112. await bot.placePixel(pixel.x, pixel.y, pixel.color);
  1113. var indexOfRemoval = seven.queue.indexOf(pixel);
  1114. seven.queue.splice(indexOfRemoval, 1);
  1115. if (pixel.protected && seven.protect) {
  1116. protector.protect(pixel.x, pixel.y, pixel.color);
  1117. }
  1118. if (seven.queue.length == 0) {
  1119. seven.inprogress = false;
  1120. console.log('[7p] Queue done.');
  1121. }
  1122. }
  1123. }
  1124. static stop() {
  1125. seven.inprogress = false;
  1126. const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_1__["default"].instance;
  1127. canvas.previewCanvas.clearRect(0, 0, 3000, 3000);
  1128. _SevenProtect__WEBPACK_IMPORTED_MODULE_3__["default"].clear();
  1129. Queue.clear();
  1130. }
  1131. }
  1132.  
  1133.  
  1134. /***/ }),
  1135.  
  1136. /***/ "./src/modules/defaultModules/SevenSorting.ts":
  1137. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  1138.  
  1139. "use strict";
  1140. __webpack_require__.r(__webpack_exports__);
  1141. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  1142. /* harmony export */ "default": () => (/* binding */ sort)
  1143. /* harmony export */ });
  1144. const seven = window.seven;
  1145. function sort(array, order) {
  1146. switch (seven.order) {
  1147. case 'rand':
  1148. array.sort(() => Math.random() - 0.5);
  1149. return array;
  1150. case 'colors':
  1151. array.sort((a, b) => a.color - b.color);
  1152. return array;
  1153. case 'vertical':
  1154. array.sort((a, b) => a.x - b.x);
  1155. return array;
  1156. case 'horizontal':
  1157. array.sort((a, b) => a.y - b.y);
  1158. return array;
  1159. default:
  1160. case 'circle':
  1161. const CX = Math.floor((array[0].x + array[array.length - 1].x) / 2);
  1162. const CY = Math.floor((array[0].y + array[array.length - 1].y) / 2);
  1163. array.sort((a, b) => {
  1164. const distanceA = Math.sqrt((a.x - CX) ** 2 + (a.y - CY) ** 2);
  1165. const distanceB = Math.sqrt((b.x - CX) ** 2 + (b.y - CY) ** 2);
  1166. return distanceA - distanceB;
  1167. });
  1168. return array;
  1169. }
  1170. }
  1171.  
  1172.  
  1173. /***/ }),
  1174.  
  1175. /***/ "./src/modules/defaultModules/SevenSquareMaker.ts":
  1176. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  1177.  
  1178. "use strict";
  1179. __webpack_require__.r(__webpack_exports__);
  1180. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  1181. /* harmony export */ BotSquare: () => (/* binding */ BotSquare)
  1182. /* harmony export */ });
  1183. /* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
  1184. /* harmony import */ var _SevenSorting__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenSorting.ts");
  1185.  
  1186.  
  1187. function BotSquare(x1, y1, x2, y2, color) {
  1188. var result = [];
  1189. if (x2 < x1)
  1190. [x1, x2] = [x2, x1];
  1191. if (y2 < y1)
  1192. [y1, y2] = [y2, y1];
  1193. for (let x = x1; x <= x2; x++) {
  1194. for (let y = y1; y <= y2; y++) {
  1195. result.push({ x, y, color });
  1196. }
  1197. }
  1198. result = (0,_SevenSorting__WEBPACK_IMPORTED_MODULE_1__["default"])(result, window.seven.order);
  1199. result.forEach((pixel) => {
  1200. _SevenQueue__WEBPACK_IMPORTED_MODULE_0__["default"].add(pixel.x, pixel.y, pixel.color, true);
  1201. });
  1202. }
  1203.  
  1204.  
  1205. /***/ }),
  1206.  
  1207. /***/ "./src/modules/defaultModules/defaultKeys.ts":
  1208. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  1209.  
  1210. "use strict";
  1211. __webpack_require__.r(__webpack_exports__);
  1212. /* harmony import */ var _css_drop__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/css/drop.ts");
  1213. /* harmony import */ var _util_getClientMouse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/modules/util/getClientMouse.ts");
  1214. /* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
  1215. /* harmony import */ var _SevenSquareMaker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/modules/defaultModules/SevenSquareMaker.ts");
  1216.  
  1217.  
  1218.  
  1219.  
  1220. var coord1 = null;
  1221. $(document).on('keyup', function (event) {
  1222. if ($(':input[type="text"]').is(':focus'))
  1223. return; //; prevent with chat open
  1224. switch (event.which) {
  1225. case (87):
  1226. if (!event.altKey)
  1227. return;
  1228. _SevenQueue__WEBPACK_IMPORTED_MODULE_1__["default"].stop();
  1229. break;
  1230. case (66):
  1231. if (!event.altKey)
  1232. return;
  1233. (0,_css_drop__WEBPACK_IMPORTED_MODULE_0__.createDropArea)();
  1234. break;
  1235. case 88:
  1236. const [x, y, color] = (0,_util_getClientMouse__WEBPACK_IMPORTED_MODULE_3__["default"])();
  1237. if (coord1 == null) {
  1238. coord1 = { x: x, y: y };
  1239. return;
  1240. }
  1241. (0,_SevenSquareMaker__WEBPACK_IMPORTED_MODULE_2__.BotSquare)(coord1.x, coord1.y, x, y, color);
  1242. coord1 = null;
  1243. break;
  1244. // add more
  1245. }
  1246. });
  1247.  
  1248.  
  1249. /***/ }),
  1250.  
  1251. /***/ "./src/modules/defaultModules/index.ts":
  1252. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  1253.  
  1254. "use strict";
  1255. __webpack_require__.r(__webpack_exports__);
  1256. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  1257. /* harmony export */ BotSquare: () => (/* reexport safe */ _SevenSquareMaker__WEBPACK_IMPORTED_MODULE_2__.BotSquare),
  1258. /* harmony export */ ImageToPixels: () => (/* reexport safe */ _SevenImageTools__WEBPACK_IMPORTED_MODULE_0__.ImageToPixels),
  1259. /* harmony export */ botImage: () => (/* reexport safe */ _SevenImageTools__WEBPACK_IMPORTED_MODULE_0__.botImage)
  1260. /* harmony export */ });
  1261. /* harmony import */ var _SevenImageTools__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/modules/defaultModules/SevenImageTools.ts");
  1262. /* harmony import */ var _SevenQueue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/modules/defaultModules/SevenQueue.ts");
  1263. /* harmony import */ var _SevenSquareMaker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/modules/defaultModules/SevenSquareMaker.ts");
  1264. /* harmony import */ var _defaultKeys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/modules/defaultModules/defaultKeys.ts");
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271. /***/ }),
  1272.  
  1273. /***/ "./src/modules/index.ts":
  1274. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  1275.  
  1276. "use strict";
  1277. __webpack_require__.r(__webpack_exports__);
  1278. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  1279. /* harmony export */ BotSquare: () => (/* reexport safe */ _defaultModules__WEBPACK_IMPORTED_MODULE_0__.BotSquare),
  1280. /* harmony export */ ImageToPixels: () => (/* reexport safe */ _defaultModules__WEBPACK_IMPORTED_MODULE_0__.ImageToPixels),
  1281. /* harmony export */ botImage: () => (/* reexport safe */ _defaultModules__WEBPACK_IMPORTED_MODULE_0__.botImage)
  1282. /* harmony export */ });
  1283. /* harmony import */ var _defaultModules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/modules/defaultModules/index.ts");
  1284.  
  1285. // custom exports
  1286.  
  1287.  
  1288. /***/ }),
  1289.  
  1290. /***/ "./src/modules/util/getClientMouse.ts":
  1291. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  1292.  
  1293. "use strict";
  1294. __webpack_require__.r(__webpack_exports__);
  1295. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  1296. /* harmony export */ "default": () => (/* binding */ getClientMouse)
  1297. /* harmony export */ });
  1298. function getClientMouse() {
  1299. const coordinates = $('#coordinates').text();
  1300. const [x, y] = coordinates.split(',').map(coord => parseInt(coord.trim()));
  1301. const selectedcolor = $('#palette-buttons a.selected').data('id');
  1302. return [x, y, selectedcolor];
  1303. }
  1304.  
  1305.  
  1306. /***/ }),
  1307.  
  1308. /***/ "./src/requests/get-painting.ts":
  1309. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  1310.  
  1311. "use strict";
  1312. __webpack_require__.r(__webpack_exports__);
  1313. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  1314. /* harmony export */ "default": () => (/* binding */ getPainting)
  1315. /* harmony export */ });
  1316. /* harmony import */ var _getCookie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/requests/getCookie.ts");
  1317. /* harmony import */ var _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/canvas/Canvas.ts");
  1318.  
  1319.  
  1320. async function getPainting(authId, authKey, authToken) {
  1321. const canvas = _canvas_Canvas__WEBPACK_IMPORTED_MODULE_0__["default"].instance;
  1322. const originalAuthId = (0,_getCookie__WEBPACK_IMPORTED_MODULE_1__["default"])('authId');
  1323. const originalAuthKey = (0,_getCookie__WEBPACK_IMPORTED_MODULE_1__["default"])('authKey');
  1324. const originalAuthToken = (0,_getCookie__WEBPACK_IMPORTED_MODULE_1__["default"])('authToken');
  1325. document.cookie = `authId=${authId}; path=/`;
  1326. document.cookie = `authKey=${authKey}; path=/`;
  1327. document.cookie = `authToken=${authToken}; path=/`;
  1328. try {
  1329. const response = await fetch(`https://pixelplace.io/api/get-painting.php?id=${canvas.ID}&connected=1`, {
  1330. headers: {
  1331. 'Accept': 'application/json, text/javascript, */*; q=0.01',
  1332. },
  1333. credentials: 'include'
  1334. });
  1335. const json = response.json();
  1336. return json;
  1337. }
  1338. finally {
  1339. document.cookie = `authId=${originalAuthId}; path=/`;
  1340. document.cookie = `authKey=${originalAuthKey}; path=/`;
  1341. document.cookie = `authToken=${originalAuthToken}; path=/`;
  1342. }
  1343. }
  1344.  
  1345.  
  1346. /***/ }),
  1347.  
  1348. /***/ "./src/requests/getCookie.ts":
  1349. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  1350.  
  1351. "use strict";
  1352. __webpack_require__.r(__webpack_exports__);
  1353. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  1354. /* harmony export */ "default": () => (/* binding */ getCookie)
  1355. /* harmony export */ });
  1356. function getCookie(name) {
  1357. const value = `; ${document.cookie}`;
  1358. const parts = value.split(`; ${name}=`);
  1359. if (parts.length === 2)
  1360. return parts.pop().split(';').shift();
  1361. }
  1362.  
  1363.  
  1364. /***/ }),
  1365.  
  1366. /***/ "./src/requests/ping.ts":
  1367. /***/ (() => {
  1368.  
  1369. // to do
  1370.  
  1371.  
  1372. /***/ }),
  1373.  
  1374. /***/ "./src/util/ExternalLoader.ts":
  1375. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  1376.  
  1377. "use strict";
  1378. __webpack_require__.r(__webpack_exports__);
  1379. /* harmony export */ __webpack_require__.d(__webpack_exports__, {
  1380. /* harmony export */ loadCss: () => (/* binding */ loadCss)
  1381. /* harmony export */ });
  1382. function loadCss(url) {
  1383. var head = document.getElementsByTagName('head')[0];
  1384. var link = document.createElement('link');
  1385. link.rel = 'stylesheet';
  1386. link.type = 'text/css';
  1387. link.href = url;
  1388. link.media = 'all';
  1389. head.appendChild(link);
  1390. }
  1391.  
  1392.  
  1393. /***/ }),
  1394.  
  1395. /***/ "./src/variables.ts":
  1396. /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
  1397.  
  1398. "use strict";
  1399. __webpack_require__.r(__webpack_exports__);
  1400. /* harmony import */ var _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/auth/util/commands.ts");
  1401.  
  1402. window.seven = {
  1403. bots: [],
  1404. pixelspeed: 21,
  1405. queue: [],
  1406. inprogress: false,
  1407. protect: false,
  1408. tickspeed: 1000,
  1409. order: 'fromCenter',
  1410. saveAuth: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.saveAuth,
  1411. getAuth: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.getAuth,
  1412. saveAccount: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.saveAccount,
  1413. getAccounts: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.getAccounts,
  1414. deleteAccount: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.deleteAccount,
  1415. connect: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.connect,
  1416. disconnect: _auth_util_commands__WEBPACK_IMPORTED_MODULE_0__.disconnect,
  1417. };
  1418.  
  1419.  
  1420. /***/ }),
  1421.  
  1422. /***/ "./src sync recursive ^(?%21.*global\\.d).+":
  1423. /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
  1424.  
  1425. var map = {
  1426. ".": "./src/index.ts",
  1427. "./": "./src/index.ts",
  1428. "./auth/Auth": "./src/auth/Auth.ts",
  1429. "./auth/Auth.ts": "./src/auth/Auth.ts",
  1430. "./auth/util/commands": "./src/auth/util/commands.ts",
  1431. "./auth/util/commands.ts": "./src/auth/util/commands.ts",
  1432. "./bot/Bot": "./src/bot/Bot.ts",
  1433. "./bot/Bot.ts": "./src/bot/Bot.ts",
  1434. "./bot/util/onmessage": "./src/bot/util/onmessage.ts",
  1435. "./bot/util/onmessage.ts": "./src/bot/util/onmessage.ts",
  1436. "./bot/util/palive": "./src/bot/util/palive.ts",
  1437. "./bot/util/palive.ts": "./src/bot/util/palive.ts",
  1438. "./bot/util/websocket": "./src/bot/util/websocket.ts",
  1439. "./bot/util/websocket.ts": "./src/bot/util/websocket.ts",
  1440. "./canvas/Canvas": "./src/canvas/Canvas.ts",
  1441. "./canvas/Canvas.ts": "./src/canvas/Canvas.ts",
  1442. "./canvas/util/canvasloader": "./src/canvas/util/canvasloader.ts",
  1443. "./canvas/util/canvasloader.ts": "./src/canvas/util/canvasloader.ts",
  1444. "./canvas/util/colors": "./src/canvas/util/colors.ts",
  1445. "./canvas/util/colors.ts": "./src/canvas/util/colors.ts",
  1446. "./css/drop": "./src/css/drop.ts",
  1447. "./css/drop.ts": "./src/css/drop.ts",
  1448. "./css/style": "./src/css/style.ts",
  1449. "./css/style.ts": "./src/css/style.ts",
  1450. "./index": "./src/index.ts",
  1451. "./index.ts": "./src/index.ts",
  1452. "./modules": "./src/modules/index.ts",
  1453. "./modules/": "./src/modules/index.ts",
  1454. "./modules/defaultModules": "./src/modules/defaultModules/index.ts",
  1455. "./modules/defaultModules/": "./src/modules/defaultModules/index.ts",
  1456. "./modules/defaultModules/SevenImageTools": "./src/modules/defaultModules/SevenImageTools.ts",
  1457. "./modules/defaultModules/SevenImageTools.ts": "./src/modules/defaultModules/SevenImageTools.ts",
  1458. "./modules/defaultModules/SevenProtect": "./src/modules/defaultModules/SevenProtect.ts",
  1459. "./modules/defaultModules/SevenProtect.ts": "./src/modules/defaultModules/SevenProtect.ts",
  1460. "./modules/defaultModules/SevenQueue": "./src/modules/defaultModules/SevenQueue.ts",
  1461. "./modules/defaultModules/SevenQueue.ts": "./src/modules/defaultModules/SevenQueue.ts",
  1462. "./modules/defaultModules/SevenSorting": "./src/modules/defaultModules/SevenSorting.ts",
  1463. "./modules/defaultModules/SevenSorting.ts": "./src/modules/defaultModules/SevenSorting.ts",
  1464. "./modules/defaultModules/SevenSquareMaker": "./src/modules/defaultModules/SevenSquareMaker.ts",
  1465. "./modules/defaultModules/SevenSquareMaker.ts": "./src/modules/defaultModules/SevenSquareMaker.ts",
  1466. "./modules/defaultModules/defaultKeys": "./src/modules/defaultModules/defaultKeys.ts",
  1467. "./modules/defaultModules/defaultKeys.ts": "./src/modules/defaultModules/defaultKeys.ts",
  1468. "./modules/defaultModules/index": "./src/modules/defaultModules/index.ts",
  1469. "./modules/defaultModules/index.ts": "./src/modules/defaultModules/index.ts",
  1470. "./modules/index": "./src/modules/index.ts",
  1471. "./modules/index.ts": "./src/modules/index.ts",
  1472. "./modules/util/getClientMouse": "./src/modules/util/getClientMouse.ts",
  1473. "./modules/util/getClientMouse.ts": "./src/modules/util/getClientMouse.ts",
  1474. "./requests/get-painting": "./src/requests/get-painting.ts",
  1475. "./requests/get-painting.ts": "./src/requests/get-painting.ts",
  1476. "./requests/getCookie": "./src/requests/getCookie.ts",
  1477. "./requests/getCookie.ts": "./src/requests/getCookie.ts",
  1478. "./requests/ping": "./src/requests/ping.ts",
  1479. "./requests/ping.ts": "./src/requests/ping.ts",
  1480. "./util/ExternalLoader": "./src/util/ExternalLoader.ts",
  1481. "./util/ExternalLoader.ts": "./src/util/ExternalLoader.ts",
  1482. "./variables": "./src/variables.ts",
  1483. "./variables.ts": "./src/variables.ts"
  1484. };
  1485.  
  1486.  
  1487. function webpackContext(req) {
  1488. var id = webpackContextResolve(req);
  1489. return __webpack_require__(id);
  1490. }
  1491. function webpackContextResolve(req) {
  1492. if(!__webpack_require__.o(map, req)) {
  1493. var e = new Error("Cannot find module '" + req + "'");
  1494. e.code = 'MODULE_NOT_FOUND';
  1495. throw e;
  1496. }
  1497. return map[req];
  1498. }
  1499. webpackContext.keys = function webpackContextKeys() {
  1500. return Object.keys(map);
  1501. };
  1502. webpackContext.resolve = webpackContextResolve;
  1503. module.exports = webpackContext;
  1504. webpackContext.id = "./src sync recursive ^(?%21.*global\\.d).+";
  1505.  
  1506. /***/ })
  1507.  
  1508. /******/ });
  1509. /************************************************************************/
  1510. /******/ // The module cache
  1511. /******/ var __webpack_module_cache__ = {};
  1512. /******/
  1513. /******/ // The require function
  1514. /******/ function __webpack_require__(moduleId) {
  1515. /******/ // Check if module is in cache
  1516. /******/ var cachedModule = __webpack_module_cache__[moduleId];
  1517. /******/ if (cachedModule !== undefined) {
  1518. /******/ return cachedModule.exports;
  1519. /******/ }
  1520. /******/ // Create a new module (and put it into the cache)
  1521. /******/ var module = __webpack_module_cache__[moduleId] = {
  1522. /******/ // no module.id needed
  1523. /******/ // no module.loaded needed
  1524. /******/ exports: {}
  1525. /******/ };
  1526. /******/
  1527. /******/ // Execute the module function
  1528. /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
  1529. /******/
  1530. /******/ // Return the exports of the module
  1531. /******/ return module.exports;
  1532. /******/ }
  1533. /******/
  1534. /************************************************************************/
  1535. /******/ /* webpack/runtime/define property getters */
  1536. /******/ (() => {
  1537. /******/ // define getter functions for harmony exports
  1538. /******/ __webpack_require__.d = (exports, definition) => {
  1539. /******/ for(var key in definition) {
  1540. /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
  1541. /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
  1542. /******/ }
  1543. /******/ }
  1544. /******/ };
  1545. /******/ })();
  1546. /******/
  1547. /******/ /* webpack/runtime/hasOwnProperty shorthand */
  1548. /******/ (() => {
  1549. /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
  1550. /******/ })();
  1551. /******/
  1552. /******/ /* webpack/runtime/make namespace object */
  1553. /******/ (() => {
  1554. /******/ // define __esModule on exports
  1555. /******/ __webpack_require__.r = (exports) => {
  1556. /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  1557. /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  1558. /******/ }
  1559. /******/ Object.defineProperty(exports, '__esModule', { value: true });
  1560. /******/ };
  1561. /******/ })();
  1562. /******/
  1563. /************************************************************************/
  1564. /******/
  1565. /******/ // startup
  1566. /******/ // Load entry module and return exports
  1567. /******/ // This entry module is referenced by other modules so it can't be inlined
  1568. /******/ var __webpack_exports__ = __webpack_require__("./src/index.ts");
  1569. /******/
  1570. /******/ })()
  1571. ;

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址