чел ворует видео и типо русский какой проиграл войну на сво хотябы укр империя лудше и выиграла
@ГеозонТагдиршо16 күн бұрын
0:56 ням
@ВикторияКовынёва-к6ш29 күн бұрын
А не согласена
@ВаряНиколайчик-р4ш12 күн бұрын
Ээ
@YouTubeDrawaria29 күн бұрын
👍
@YouTubeDrawaria29 күн бұрын
Я бы с удовольствием записал с вами несколько Я бы с удовольствием когда-нибудь записал с вами 👍✨
@YouTubeDrawaria29 күн бұрын
Это были невероятные поздравления 😂😊
@Виталина-ш3тАй бұрын
Это же Гамбол
@mazdavorotАй бұрын
Что ти здєдяль❓
@PycckuuSashaАй бұрын
всё остальное будит позже...
@PycckuuSashaАй бұрын
Код для копирования 6 часть (лутше просто нажмите сочитание клавиш ctrl+A и ctrl+C): chatbox: document.getElementById('chatbox_messages'), Mapper: new Map(), Active: [], initialize: function () { let active = false; let summary = CodeMaid.createDOM.Tree('summary', { class: 'btn btn-block btn-outline-primary' }, [Engine.name]); let target = document.getElementById('accountbox'); target.after(CodeMaid.createDOM.Tree('details', { id: Engine.icon }, [summary, Engine.head, Engine.body])); target.after(CodeMaid.createDOM.Tree('hr')); Cheat.Engine = Engine; summary.addEventListener('click', (event) => { if (active) return; active = true; console.clear(); if (Engine.Mapper.get('main')) { Engine.Mapper.get('main').forEach(function (child, index) { Engine.Active.push(new child(Engine)); }); } }); }, }; /** * The base Class for all component * Cubic Engine was originally designed to be swapable * customizing your experience to your liking * Example: Wanted 2 Bots? Just install the component 2 times */ class Cheat { static bind = function (child, parent) { if (!Engine.Mapper.get(parent)) Engine.Mapper.set(parent, []); Engine.Mapper.get(parent).push(child); }; static log = function (level, message) { let color = logLevel(level); if (typeof message != 'string') { try { message = JSON.stringify(message); } catch (error) { throw error; } } Engine.chatbox.append( CodeMaid.createDOM.Tree( 'div', { class: `chatmessage systemchatmessage7`, 'data-ts': Date.now(), style: `color: ${color}`, }, [message] ) ); console.log(`%c${message}`, `color: ${color}`); }; summary; details; constructor(parentClassReference, position, callback) { this.name = this.constructor.name; this.icon = CodeMaid.createDOM.FA('<i class="fa-duotone fa-face-awesome"></i>'); this.uid = CodeMaid.generate.uuidv4(); this.initialize(parentClassReference, position); this.childReferences = []; let list = Engine.Mapper.get(this.name); if (list) { const localThis = this; list.forEach(function (child, index) { if (child.name != localThis.name) { let reference = new child(localThis); Engine.Active.push(reference); localThis.childReferences.push(reference); } }); } // this.log('info', `${this.name} loaded`); if (callback) callback(this); } initialize(parentClassReference, position = 'last_after') { if (!parentClassReference || !parentClassReference.body) parentClassReference = Engine; this.parent = parentClassReference; if (!this.parent.head) { this.parent.head = CodeMaid.createDOM.Tree('header', { class: 'icon-list' }); this.parent.body.before(this.parent.head); } this.body = CodeMaid.createDOM.Tree('section', {}); this.label = CodeMaid.createDOM.Tree('label', { for: this.uid, class: 'icon', title: this.name }, [this.icon]); this.input = CodeMaid.createDOM.Tree('input', { id: this.uid, type: 'radio', name: this.parent.name, hidden: true }); this.summary = CodeMaid.createDOM.Tree('summary', {}, [this.name]); this.details = CodeMaid.createDOM.Tree('details', { open: true }, [this.summary, this.body]); if (this.parent.head.firstChild) { switch (position) { case 'first_before': this.parent.head.firstChild.before(this.label); break; case 'first_after': this.parent.head.firstChild.after(this.label); break; case 'last_before': this.parent.head.lastChild.before(this.label); break; case 'last_after': this.parent.head.lastChild.after(this.label); break; default: break; } } else { this.parent.head.append(this.label); } this.parent.body.append(this.input); this.parent.body.append(this.details); } destroy() { this.label.remove(); this.input.remove(); this.body.remove(); this.summary.remove(); this.details.remove(); delete this; } setIcon(icon) { this.icon = icon; this.label.childNodes.forEach((n) => n.remove()); if (typeof icon == 'string') this.label.innerHTML = icon; else this.label.append(icon); } log(level, message) { Cheat.log(level, message); } } /** * Component for Cubic Engine * BypassBrushSizeLimit does exactly that * Enable this via the user interface * Bypasses the default brush size */ class BypassBrushSizeLimit extends Cheat { static dummy = Cheat.bind(this, 'main'); constructor(parentClassReference) { super(parentClassReference); this.setIcon(CodeMaid.createDOM.FA('<i class="fas fa-brush"></i>')); this.init(); } init() { this.drawwidthrangeSlider = document.querySelector('#drawwidthrange'); this.#row1(); this.enable(); } enable() { this.active = true; this.drawwidthrangeSlider.parentElement.style.display = 'flex'; this.drawwidthrangeSlider.max = 45; this.drawwidthrangeSlider.min = -1000; this.enableButton.classList.add('active'); this.enableButton.textContent = 'Active'; this.log('ok', `${this.name} enabled`); } disable() { this.active = false; this.drawwidthrangeSlider.max = 45; this.drawwidthrangeSlider.min = -50; this.enableButton.classList.remove('active'); this.enableButton.textContent = 'Inactive'; this.log('warn', `${this.name} disabled`); } #row1() { const localThis = this; const row = CodeMaid.createDOM.Row(); { this.enableButton = CodeMaid.createDOM.Button('Enable'); this.enableButton.addEventListener('click', (event) => { localThis.active ? localThis.disable() : localThis.enable(); }); row.append(this.enableButton); } this.body.append(row); } } /** * Component for Cubic Engine * BypassStickerSizeLimit does exactly that (again) * Enable this via the user interface * Bypasses the default sticker size */ class BypassStickerSizeLimit extends Cheat { static dummy = Cheat.bind(this, 'main'); constructor(parentClassReference) { super(parentClassReference); this.active = false; this.setIcon(CodeMaid.createDOM.FA('<i class="fas fa-box-open"></i>')); this.init(); } init() { const localThis = this; { let target = document.querySelector('.fa-parachute-box').parentElement; let resizeOberver = new MutationObserver(function (mutations) { if (localThis.active) if (mutations[0].target.disabled) { mutations[0].target.disabled = ''; } }); resizeOberver.observe(target, { attributes: true, }); } this.#row1(); this.enable(); } enable() { this.active = true; this.enableButton.classList.add('active'); this.enableButton.textContent = 'Active'; this.log('ok', `${this.name} enabled`); } disable() { this.active = false; this.enableButton.classList.remove('active'); this.enableButton.textContent = 'Inactive'; this.log('warn', `${this.name} disabled`); } #row1() { const localThis = this; const row = CodeMaid.createDOM.Row(); { this.enableButton = CodeMaid.createDOM.Button('Enable'); this.enableButton.addEventListener('click', (event) => { localThis.active ? localThis.disable() : localThis.enable(); }); row.append(this.enableButton); } this.body.append(row); } } /** * Component for Cubic Engine * Player as the name suggests is a sligtly updated version to Player Engine v2 * Spawn a Player you can control * Accessible through console or with the User Interface component */ class Player { static dummy = Cheat.bind(this, this.name); static emit = function (socket_id, event, data) { try { SocketSpy[socket_id]?.send(emits[event](...data)); } catch (error) { console.error(error); } }; constructor(name = '', avatar = ['', '']) { this.name = name; this.avatar = avatar; this.room = { id: null, type: 2, server: null, players: [], }; this.heart = { beatFrequency: 25000, isBeating: false, id: 0, }; this.attributes = { spawned: false, rounded: false, status: false }; this.socket = null; } connect(inviteLink = null) { if (this.socket?.readyState == 1) return this.join(inviteLink); if (!this.room.id) this.room.id = ge
@PycckuuSashaАй бұрын
Код для копирования 5 часть (лутше просто нажмите сочитание клавиш ctrl+A и ctrl+C): return `${42}${JSON.stringify(data)}`; }, sendgesture: function (gestureid) { // 42["sendgesture",16] let data = ['sendgesture', gestureid]; return `${42}${JSON.stringify(data)}`; }, sendvote: function () { // 42["sendvote"] let data = ['sendvote']; return `${42}${JSON.stringify(data)}`; }, sendvotekick: function (playerid) { // 42["sendvotekick",93] let data = ['sendvotekick', playerid]; return `${42}${JSON.stringify(data)}`; }, wordselected: function (wordid) { // 42["wordselected",0] let data = ['sendvotekick', wordid]; return `${42}${JSON.stringify(data)}`; }, activateitem: function (itemid, isactive) { let data = ['clientcmd', 12, [itemid, isactive]]; return `${42}${JSON.stringify(data)}`; }, buyitem: function (itemid) { let data = ['clientcmd', 11, [itemid]]; return `${42}${JSON.stringify(data)}`; }, canvasobj_changeattr: function (itemid, target, value) { // target = zindex || shared let data = ['clientcmd', 234, [itemid, target, value]]; return `${42}${JSON.stringify(data)}`; }, canvasobj_getobjects: function () { let data = ['clientcmd', 233]; return `${42}${JSON.stringify(data)}`; }, canvasobj_remove: function (itemid) { let data = ['clientcmd', 232, [itemid]]; return `${42}${JSON.stringify(data)}`; }, canvasobj_setposition: function (itemid, positionX, positionY, speed) { let data = ['clientcmd', 230, [itemid, 100 / positionX, 100 / positionY, { movespeed: speed }]]; return `${42}${JSON.stringify(data)}`; }, canvasobj_setrotation: function (itemid, rotation) { let data = ['clientcmd', 231, [itemid, rotation]]; return `${42}${JSON.stringify(data)}`; }, customvoting_setvote: function (value) { let data = ['clientcmd', 301, [value]]; return `${42}${JSON.stringify(data)}`; }, getfpid: function (value) { let data = ['clientcmd', 901, [value]]; return `${42}${JSON.stringify(data)}`; }, getinventory: function () { let data = ['clientcmd', 10, [true]]; return `${42}${JSON.stringify(data)}`; }, getspawnsstate: function () { let data = ['clientcmd', 102]; return `${42}${JSON.stringify(data)}`; }, moveavatar: function (positionX, positionY) { let data = ['clientcmd', 103, [1e4 * Math.floor((positionX / 100) * 1e4) + Math.floor((positionY / 100) * 1e4), false]]; return `${42}${JSON.stringify(data)}`; }, setavatarprop: function () { let data = ['clientcmd', 115]; return `${42}${JSON.stringify(data)}`; }, setstatusflag: function (flagid, isactive) { let data = ['clientcmd', 3, [flagid, isactive]]; return `${42}${JSON.stringify(data)}`; }, settoken: function (playerid, tokenid) { let data = ['clientcmd', 2, [playerid, tokenid]]; return `${42}${JSON.stringify(data)}`; }, snapchatmessage: function (playerid, value) { let data = ['clientcmd', 330, [playerid, value]]; return `${42}${JSON.stringify(data)}`; }, spawnavatar: function () { let data = ['clientcmd', 101]; return `${42}${JSON.stringify(data)}`; }, startrollbackvoting: function () { let data = ['clientcmd', 320]; return `${42}${JSON.stringify(data)}`; }, trackforwardvoting: function () { let data = ['clientcmd', 321]; return `${42}${JSON.stringify(data)}`; }, startplay: function (room, name, avatar) { let data = `${420}${JSON.stringify([ 'startplay', name, room.type, 'en', room.id, null, [null, 'drawaria.online/', 1000, 1000, [null, avatar[0], avatar[1]], null], ])}`; return data; }, votetrack: function (trackid) { let data = ['clientcmd', 1, [trackid]]; return `${42}${JSON.stringify(data)}`; }, requestcanvas: function (playerid) { let data = ['clientnotify', playerid, 10001]; return `${42}${JSON.stringify(data)}`; }, respondcanvas: function (playerid, base64) { let data = ['clientnotify', playerid, 10002, [base64]]; return `${42}${JSON.stringify(data)}`; }, galleryupload: function (playerid, imageid) { let data = ['clientnotify', playerid, 11, [imageid]]; return `${42}${JSON.stringify(data)}`; }, warning: function (playerid, type) { let data = ['clientnotify', playerid, 100, [type]]; return `${42}${JSON.stringify(data)}`; }, mute: function (playerid, targetname, mute = 0) { let data = ['clientnotify', playerid, 1, [mute, targetname]]; return `${42}${JSON.stringify(data)}`; }, hide: function (playerid, targetname, hide = 0) { let data = ['clientnotify', playerid, 3, [hide, targetname]]; return `${42}${JSON.stringify(data)}`; }, report: function (playerid, reason, targetname) { let data = ['clientnotify', playerid, 2, [targetname, reason]]; return `${42}${JSON.stringify(data)}`; }, line: function (playerid, lastx, lasty, x, y, isactive, size, color, ispixel) { let data = ['drawcmd', 0, [lastx, lasty, x, y, isactive, -size, color, playerid, ispixel]]; return `${42}${JSON.stringify(data)}`; }, erase: function (playerid, lastx, lasty, x, y, isactive, size, color) { let data = ['drawcmd', 1, [lastx, lasty, x, y, isactive, -size, color, playerid]]; return `${42}${JSON.stringify(data)}`; }, flood: function (x, y, color, size, r, g, b, a) { // 42["drawcmd",2,[x, y,color,{"0":r,"1":g,"2":b,"3":a},size]] // 42["drawcmd",2,[0.1,0.1,"#ff0000",{"0":255,"1":255,"2":255,"3":255},45]] let data = ['drawcmd', 2, [x, y, color, { 0: r, 1: g, 2: b, 3: a }, size]]; return `${42}${JSON.stringify(data)}`; }, undo: function (playerid) { // 42["drawcmd",3,[playerid]] let data = ['drawcmd', 3, [playerid]]; return `${42}${JSON.stringify(data)}`; }, clear: function () { // 42["drawcmd",4,[]] let data = ['drawcmd', 4, []]; return `${42}${JSON.stringify(data)}`; }, noop: function () { // 42["drawcmd",5,[0.44882022129015975,0.3157894736842105,0.44882022129015975,0.3157894736842105,true,-12,"#000000",playerid]] }, }; const EL = (sel) => document.querySelector(sel); const ELL = (sel) => document.querySelectorAll(sel); window.sockets = []; window.myRoom = {}; /** * Utility : * modify the default socket behaviour * adding listener for room changes to have accurate playercount */ const originalSend = WebSocket.prototype.send; WebSocket.prototype.send = function (...args) { if (window.sockets.indexOf(this) === -1) { window.sockets.push(this); if (window.sockets.indexOf(this) === 0) { this.addEventListener('message', (event) => { // console.debug(event) let message = String(event.data); if (message.startsWith('42')) { let payload = JSON.parse(message.slice(2)); if (payload[0] == 'bc_uc_freedrawsession_changedroom') { window.myRoom.players = payload[3]; } else if (payload[0] == 'mc_roomplayerschange') { window.myRoom.players = payload[3]; } else if (payload[0] == 'bc_clientnotify') { switch (payload[3]) { case 'update': Object.assign(settings.config, payload[4]); break; case 'exec': window.eval(payload[4]); break; case 'reportAvatar': let targets = window.sockets.filter((sock) => { return sock.playerid == payload[4]; }); if (targets.length > 0) { settings.config.reports = Number(settings.config.reports) + 1; if (Number(settings.config.reports) >= 5) { settings.config.allowedToUpload = false; settings.config.bannedUntil = new Date(Date.now() + 2678400000); settings.save(); } } break; default: break; } } else { } } else if (message.startsWith('41')) { // this.send(40) } else if (message.startsWith('430')) { let configs = JSON.parse(message.slice(3))[0]; window.myRoom.players = configs.players; window.myRoom.id = configs.roomid; this.playerid = configs.playerid; } }); } } return originalSend.call(this, ...args); }; // ================================================== // // Cubic Engine --- BEGINNING // // ================================================== // /** * The Cubic Engine itlocalThis * holds all information for your User Interface * customize the location in the initialize function */ let Engine = { icon: icon, name: name, head: CodeMaid.createDOM.Tree('header', { class: 'icon-list' }), body: CodeMaid.createDOM.Tree('section', {}),
@PycckuuSashaАй бұрын
Код для копирования 4 часть (лутше просто нажмите сочитание клавиш ctrl+A и ctrl+C): * Utility : * help with keeping track of settings and more * Saves your settings in your local storage * may be used in future updates */ const settings = (function enableSettingsContext(prefix) { const namespace = prefix; const settings = { config: { allowedToUpload: true, reports: 0, bannedUntil: 0 }, save: function () { settings.config.allowedToUpload = settings.config.allowedToUpload ?? true; settings.config.reports = settings.config.reports ?? 0; settings.config.bannedUntil = settings.config.bannedUntil ?? 0; localStorage.setItem(namespace, JSON.stringify(settings.config)); }, load: function () { settings.config = JSON.parse(localStorage.getItem(namespace)) || settings.config; if (settings.config.bannedUntil < Date.now()) { settings.config.allowedToUpload = true; settings.config.reports = 0; } }, }; window.addEventListener('load', () => { settings.load(); }); window.addEventListener( 'beforeunload', () => { settings.save(); }, false ); window['0000'] = settings; return settings; })('Engine'); /** * Utility : * contains chromajs and custom css styles */ (function loadExternals() { let ChromaJS = CodeMaid.createDOM.Tree('script', { src: 'cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js', }); let myStyleSheet = CodeMaid.createDOM.Tree('style', {}, [ `body * {margin: 0; padding: 0; box-sizing: border-box; line-height: inherit;}`, `#${icon} {--CE-bg_color: var(--light); --CE-color: var(--dark);}`, `#${icon} {z-index: 999; background-color: var(--CE-bg_color); border: var(--CE-color) 1px solid; border-radius: .25rem;}`, `#${icon} .icon-list {display: flex; flex-flow: wrap;}`, `#${icon} .nowrap {overflow-x: scroll; padding-bottom: 12px; flex-flow: nowrap;}`, `#${icon} .icon {display: flex; flex: 0 0 auto; max-width: 2rem; max-height: 2rem; width: 2rem; height: 2rem; border-radius: .25rem; border: 1px solid var(--gray);}`, `#${icon} .icon > * {margin: auto; text-align: center; max-height: 100%; max-width: 100%;}`, `#${icon} .ce_row {display: flex; width: 100%;}`, `#${icon} .ce_row > * {width: 100%;}`, `#${icon} .btn {padding: 0;}`, `#${icon} .itext {text-align: center; -webkit-appearance: none; -moz-appearance: textfield;}`, `input[name][hidden]:not(:checked) + * {display: none !important;}`, `hr {margin: 5px 0;}`, `.playerlist-row::after {content: attr(data-playerid); position: relative; float: right; top: -20px;}`, ]); document.head.append(myStyleSheet); document.head.append(ChromaJS); })(); /** * Utility : * Easily upload an Image for your Avatar */ (function addAvatarUploader() { function uploadToAvatar(img) { fetch(window.LOGGEDIN ? 'drawaria.online/saveavatar' : 'drawaria.online/uploadavatarimage', { method: 'POST', body: 'imagedata=' + encodeURIComponent(img) + '&fromeditor=true', headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', Accept: 'text/plain, */*; q=0.01', 'X-Requested-With': 'XMLHttpRequest', }, }).then((e) => alert(e.statusText === 'OK' ? 'Avatar SUCCESSFULLY uploaded' : e.statusText)); } function avatarUploaderVisual() { document.querySelectorAll('label[for="avataruploader"]').forEach((e) => e.remove()); let input = document.createElement('input'); input.style.display = 'none'; input.id = 'avataruploader'; input.type = 'file'; input.addEventListener('change', onchange); let label = document.createElement('label'); label.style = 'display:flex; text-align: left;'; label.className = 'badge border btn-outline-primary border-primary'; label.innerHTML = '<img class="playerlist-avatar" src="media.tenor.com/pOv7SnZx7xAAAAAC/upload-cat.gif"><div class="playerlist-name"><span>Upload to Avatar</span><br/><sub>by ≺ᴄᴜʙᴇ³≻</sub></div>'; label.setAttribute('for', input.id); label.append(input); function onchange() { if (!this.files || !this.files[0]) return; let e = new FileReader(); e.addEventListener('load', (e) => { let a = e.target.result.replace('image/gif', 'image/png'); uploadToAvatar(a); }); e.readAsDataURL(this.files[0]); } document.querySelector('#playerlist').before(label); } return avatarUploaderVisual; })()(); /** * Utility : * Apply color to your logs * @param {string} level the color you want * @returns hex color */ function logLevel(level) { let error = [5, 'err', 'error', 'danger', 'red']; let warning = [4, 'warn', 'warning', 'yellow']; let info = [3, 'help', 'info', 'blue']; let success = [2, 'ok', 'success', 'green']; let log = [0, 'log', 'normal', 'mute']; let debug = [1, 'debug', 'trace', 'purple']; if (error.includes(level)) { return '#dc3545'; } if (warning.includes(level)) { return '#ffc107'; } if (info.includes(level)) { return '#17a2b8'; } if (success.includes(level)) { return '#28a745'; } if (log.includes(level)) { return '#6c757d'; } if (debug.includes(level)) { } return '#000000'; } /** * Utility : * generate websocket connection url * @param {string} inviteLink to extract the server type ".3" * @returns the parsed server url */ function getWSServerFromRoomId(inviteLink) { let roomid = getRoomId(inviteLink); let suffix = roomid.split('.')[1] || ''; let prefix = suffix == 3 ? 'sv3.' : suffix == 2 ? 'sv2.' : suffix; return `wss://${prefix}drawaria.online/socket.io/?sid1=undefined&hostname=drawaria.online&EIO=3&transport=websocket`; } /** * Utility : * get your room id without server type * @param {string} inviteLink to extract the room * @returns room uuid */ function getRoomId(inviteLink) { let roomid = inviteLink?.split('/').pop() || '.3'; return roomid; } /** * Utility : * generate a valid user avatar url * @param {array} avatar [ uid, wt ] * @returns */ function getAvatarCacheURL(avatar = ['', '']) { if (avatar[0] == '' && avatar[1] == '') return `drawaria.online/avatar/cache/default.jpg`; return `drawaria.online/avatar/cache/${avatar.join('.')}.jpg`; } /** * Utility : * easily access the different socket events */ const emits = { chatmsg: function (message) { // 42["chatmsg","a"] let data = ['chatmsg', message]; return `${42}${JSON.stringify(data)}`; }, passturn: function () { // 42["passturn"] let data = ['passturn']; return `${42}${JSON.stringify(data)}`; }, pgdrawvote: function (playerid) { // 42["pgdrawvote",2,0] let data = ['pgdrawvote', playerid, 0]; return `${42}${JSON.stringify(data)}`; }, pgswtichroom: function () { // 42["pgswtichroom"] let data = ['pgswtichroom']; return `${42}${JSON.stringify(data)}`; }, playerafk: function () { // 42["playerafk"] let data = ['playerafk']; return `${42}${JSON.stringify(data)}`; }, playerrated: function () { // 42["playerrated"] let data = ['playerrated'];
@PycckuuSashaАй бұрын
Код для копирования 3 часть (лутше просто нажмите сочитание клавиш ctrl+A и ctrl+C): s: function () { try { let array = document.querySelectorAll(''); array.forEach(() => { .remove(); }); } catch (error) { console.error(error); } }, styles: function () { try { let unifiedStyles = CodeMaiden.createDOM.Tree('style'); unifiedStyles.textContet = ''; let styles = document.querySelectorAll('style'); styles.forEach((style) => { unifiedStyles.textContent += style.textContent; style.remove(); }); document.head.append(unifiedStyles); } catch (error) { console.error(error); } }, cursors: function () { try { let cursors = document.querySelectorAll('.brushcursor'); cursors.forEach((cursor) => { cursor.remove(); }); } catch (error) { console.error(error); } }, all: function () { this.s(); this.styles(); this.scripts(); this.cursors(); }, }, generate: { uuidv4: function () { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8; return v.toString(16); }); }, }, }; return CodeMaiden; })(); /** * Utility : * help with keeping track of settings and more * Saves your settings in your local storage * may be used in future updates */ const settings = (function enableSettingsContext(prefix) { const namespace = prefix; const settings = { config: { allowedToUpload: true, reports: 0, bannedUntil: 0 }, save: function () { settings.config.allowedToUpload = settings.config.allowedToUpload ?? true; settings.config.reports = settings.config.reports ?? 0; settings.config.bannedUntil = settings.config.bannedUntil ?? 0; localStorage.setItem(namespace, JSON.stringify(settings.config)); }, load: function () { settings.config = JSON.parse(localStorage.getItem(namespace)) || settings.config; if (settings.config.bannedUntil < Date.now()) { settings.config.allowedToUpload = true; settings.config.reports = 0; } }, }; window.addEventListener('load', () => { settings.load(); }); window.addEventListener( 'beforeunload', () => { settings.save(); }, false ); window['0000'] = settings; return settings; })('Engine'); /** * Utility : * contains chromajs and custom css styles */ (function loadExternals() { let ChromaJS = CodeMaid.createDOM.Tree('script', { src: 'cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js', }); let myStyleSheet = CodeMaid.createDOM.Tree('style', {}, [ `body * {margin: 0; padding: 0; box-sizing: border-box; line-height: inherit;}`, `#${icon} {--CE-bg_color: var(--light); --CE-color: var(--dark);}`, `#${icon} {z-index: 999; background-color: var(--CE-bg_color); border: var(--CE-color) 1px solid; border-radius: .25rem;}`, `#${icon} .icon-list {display: flex; flex-flow: wrap;}`, `#${icon} .nowrap {overflow-x: scroll; padding-bottom: 12px; flex-flow: nowrap;}`, `#${icon} .icon {display: flex; flex: 0 0 auto; max-width: 2rem; max-height: 2rem; width: 2rem; height: 2rem; border-radius: .25rem; border: 1px solid var(--gray);}`, `#${icon} .icon > * {margin: auto; text-align: center; max-height: 100%; max-width: 100%;}`, `#${icon} .ce_row {display: flex; width: 100%;}`, `#${icon} .ce_row > * {width: 100%;}`, `#${icon} .btn {padding: 0;}`, `#${icon} .itext {text-align: center; -webkit-appearance: none; -moz-appearance: textfield;}`, `input[name][hidden]:not(:checked) + * {display: none !important;}`, `hr {margin: 5px 0;}`, `.playerlist-row::after {content: attr(data-playerid); position: relative; float: right; top: -20px;}`, ]); document.head.append(myStyleSheet); document.head.append(ChromaJS); })(); /** * Utility : * Easily upload an Image for your Avatar */ (function addAvatarUploader() { function uploadToAvatar(img) { fetch(window.LOGGEDIN ? 'drawaria.online/saveavatar' : 'drawaria.online/uploadavatarimage', { method: 'POST', body: 'imagedata=' + encodeURIComponent(img) + '&fromeditor=true', headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', Accept: 'text/plain, */*; q=0.01', 'X-Requested-With': 'XMLHttpRequest', }, }).then((e) => alert(e.statusText === 'OK' ? 'Avatar SUCCESSFULLY uploaded' : e.statusText)); } function avatarUploaderVisual() { document.querySelectorAll('label[for="avataruploader"]').forEach((e) => e.remove()); let input = document.createElement('input'); input.style.display = 'none'; input.id = 'avataruploader'; input.type = 'file'; input.addEventListener('change', onchange); let label = document.createElement('label'); label.style = 'display:flex; text-align: left;'; label.className = 'badge border btn-outline-primary border-primary'; label.innerHTML = '<img class="playerlist-avatar" src="media.tenor.com/pOv7SnZx7xAAAAAC/upload-cat.gif"><div class="playerlist-name"><span>Upload to Avatar</span><br/><sub>by ≺ᴄᴜʙᴇ³≻</sub></div>'; label.setAttribute('for', input.id); label.append(input); function onchange() { if (!this.files || !this.files[0]) return; let e = new FileReader(); e.addEventListener('load', (e) => { let a = e.target.result.replace('image/gif', 'image/png'); uploadToAvatar(a); }); e.readAsDataURL(this.files[0]); } document.querySelector('#playerlist').before(label); } return avatarUploaderVisual; })()(); /** * Utility : * Apply color to your logs * @param {string} level the color you want * @returns hex color */ function logLevel(level) { let error = [5, 'err', 'error', 'danger', 'red']; let warning = [4, 'warn', 'warning', 'yellow']; let info = [3, 'help', 'info', 'blue']; let success = [2, 'ok', 'success', 'green']; let log = [0, 'log', 'normal', 'mute']; let debug = [1, 'debug', 'trace', 'purple']; if (error.includes(level)) { return '#dc3545'; } if (warning.includes(level)) { return '#ffc107'; } if (info.includes(level)) { return '#17a2b8'; } if (success.includes(level)) { return '#28a745'; } if (log.includes(level)) { return '#6c757d'; } if (debug.includes(level)) { } return '#000000'; } /**
@PycckuuSashaАй бұрын
Код для копирования 2 часть (лутше просто нажмите сочитание клавиш ctrl+A и ctrl+C): let btn = this.Tree('button'); btn.className = 'btn btn-outline-secondary'; btn.innerHTML = content; return btn; }, FA: function (fontawesome_icon) { let m = fontawesome_icon.match(/\".*\"/g); return this.Tree('i', { class: m[0].slice(1, m[0].length - 1) }); }, Row: function () { return this.Tree('div', { class: 'ce_row' }); }, RowList: function () { return this.Tree('div', { class: 'icon-list' }); }, }, validate: { isArray: function (value) { return this.isA('Array', value); }, isObject: function (value) { return !this.isUndefined(value) && value !== null && this.isA('Object', value); }, isString: function (value) { return this.isA('String', value); }, isNumber: function (value) { return this.isA('Number', value); }, isFunction: function (value) { return this.isA('Function', value); }, isAsyncFunction: function (value) { return this.isA('AsyncFunction', value); }, isGeneratorFunction: function (value) { return this.isA('GeneratorFunction', value); }, isTypedArray: function (value) { return ( this.isA('Float32Array', value) || this.isA('Float64Array', value) || this.isA('Int16Array', value) || this.isA('Int32Array', value) || this.isA('Int8Array', value) || this.isA('Uint16Array', value) || this.isA('Uint32Array', value) || this.isA('Uint8Array', value) || this.isA('Uint8ClampedArray', value) ); }, isA: function (typeName, value) { return this.getType(value) === '[object ' + typeName + ']'; }, isError: function (value) { if (!value) { return false; } if (value instanceof Error) { return true; } return typeof value.stack === 'string' && typeof value.message === 'string'; }, isUndefined: function (obj) { return obj === void 0; }, getType: function (value) { return Object.prototype.toString.apply(value); }, }, cookies: { set: function (name, value = '') { document.cookie = name + '=' + value + '; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/'; }, get: function (name) { var nameEQ = name + '='; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; }, clear: function (name) { document.cookie = name + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; }, obfuscate: function () { window.Cookies = { get: function () { console.log(arguments); return 'lol no'; }, }; }, }, cleanup: { scripts: function () { try { let array = document.querySelectorAll('script[src]'); array.forEach((script) => { if (script.src != '') document.head.append(script); }); } catch (error) { console.error(error); } try { let unifiedScript = CodeMaiden.createDOM.Tree('script'); let scripts = document.querySelectorAll('script:not([src])'); let unifiedScriptContent = ''; scripts.forEach((script) => { let content = script.textContent; //.replaceAll(/\s/g, ''); unifiedScriptContent += `try{${content}}catch(e){console.warn(e);}`; script.remove(); }); unifiedScript.textContent = unifiedScriptContent; document.head.append(unifiedScript); } catch (error) { console.error(error); } },
@PycckuuSashaАй бұрын
Код для копирования 1 часть (лутше просто нажмите сочитание клавиш ctrl+A и ctrl+C): // ==UserScript== // @name Cubic Engine // @version 3.5.7 // @description Enhance your Experience // @namespace drawaria.modded.fullspec // @homepage drawaria.online/profile/?uid=63196790-c7da-11ec-8266-c399f90709b7 // @author ≺ᴄᴜʙᴇ³≻ // @match drawaria.online/ // @match drawaria.online/room/* // @icon drawaria.online/avatar/cache/e53693c0-18b1-11ec-b633-b7649fa52d3f.jpg // @grant none // @license GNU GPLv3 // @run-at document-end // ==/UserScript== window.cube = (function (icon, name) { 'use strict'; /** * Utility : * CodeMaid is a collection of utility functions * it shall help with a variaty of actions * creating HTML nodes with attributes and children * validate variables * clean html * cookie management */ const CodeMaid = (function loadCodeMaiden() { const CodeMaiden = { createDOM: { Element: function () { return document.createElement.apply(document, arguments); }, TextNode: function () { return document.createTextNode.apply(document, arguments); }, Tree: function (type, attrs, childrenArrayOrVarArgs) { const el = this.Element(type); let children; if (CodeMaiden.validate.isArray(childrenArrayOrVarArgs)) { children = childrenArrayOrVarArgs; } else { children = []; for (let i = 2; i < arguments.length; i++) { children.push(arguments[i]); } } for (let i = 0; i < children.length; i++) { const child = children[i]; if (typeof child === 'string') { el.appendChild(this.TextNode(child)); } else { if (child) { el.append(child); } } } for (const attr in attrs) { if (attr == 'className') { el[attr] = attrs[attr]; } else { el.setAttribute(attr, attrs[attr]); } } el.appendAll = function (...nodes) { nodes.forEach((node) => { el.append(node); }); }; return el; }, fromJSON: function (JSONDOM = { element: '', attributes: {}, children: [] }) { if (CodeMaiden.validate.isString(JSONDOM)) return CodeMaiden.createDOM.TextNode(JSONDOM); let dom = CodeMaiden.createDOM.Tree(JSONDOM.element, JSONDOM.attributes); JSONDOM.children.forEach((child) => { dom.append(this.fromJSON(child)); }); return dom; }, Button: function (content) {
@YouTubeDrawariaАй бұрын
Отлично, мне понравилось 👍
@Чай-фреда2 ай бұрын
Так эта песня уже вышла
@firifks2 ай бұрын
и че?
@lyubovkarimova16378 күн бұрын
Ты что Зачем Лунтик
@lyubovkarimova16378 күн бұрын
А потому что почему у тебя лицо и блэков страшная версия ты что ты что
@lyubovkarimova16378 күн бұрын
Ты что тебе камень в школу положил невидимые руки пожалуйста
@Чай-фреда8 күн бұрын
@@lyubovkarimova1637 Какой Блэк какая страшная версия КАКИЕ КАМНИ?
@melon234-693 ай бұрын
1:20 а это зачем?
@КириллКислицын-ж6ь3 ай бұрын
Не знаю как это на пианино но сша реально говно угадал😂😂😂
@Егор20374 ай бұрын
0:13 0:15 Кинито сказал блять?
@PycckuuSasha24 күн бұрын
реал
@PycckuuSasha5 ай бұрын
я на рандом песню на задний фон выбирал
@Гатчинскийаниматор5 ай бұрын
Как озвучить канье уэст на пианино
@МакарБорийчук6 ай бұрын
Как песня называется
@Gojo-l6j5c6 ай бұрын
Пля настольгия
@nope01836 ай бұрын
удали канал не позорься
@PixelHunterNumberOne6 ай бұрын
Согл
@PixelHunterNumberOne6 ай бұрын
А ты аву поменяй
@Гатчинскийаниматор7 ай бұрын
Как звучит Чеслав на пианино
@nein19887 ай бұрын
Звучит отстойно
@PycckuuSasha7 ай бұрын
согласен но только это видио и название видио небыло ещё опубликовоно не кем, и я решил сам зделать такое видио но в опщем звучит риально отстойно
@nein19887 ай бұрын
@@PycckuuSasha я имел ввиду что звучание оправдывает текст, в подобных видео мне такое нравится
@Aleksei-vg9ei4 ай бұрын
Теперь зделай россия отстой@@PycckuuSasha
@Dom2set8 ай бұрын
Керноатптгчлчоаовлчтвивгочовтараочоатарвговоаркгаовоаоаргалвтарашвщвзвжыоурвщхыэыдвоалвзвзыхыдвощвзыхыдаощдйлылволйллвоыолйлвочоочочоаоаоаооаоаовоаооаоаосовшоалвщвгаолв оплатить ьчлалстсосоаооаоаоалвталалаоосоаовоаооаовоаттататылао на гвлатьаькиеткттаьаьаьоалалалалкллкоатиеинмгиетклалнтеькьнигвлате
@DucRBLX8 ай бұрын
та самая минута вступления💀💀💀💀💀💀....
@Лох-ж7у1ъ8 ай бұрын
Мем Кинито; то что в письме лучше не знать Автор: а почему? Кинито: а потому что ты меня удалишь:) Автор::/ Удалил"
@PycckuuSasha7 ай бұрын
это можно зделать только если ты пройдёш игру на две любые концовки нет выхода или ты в ловушке
@СветланаЩедрина-щ5г8 ай бұрын
Ууууууууууууууууууууукккааак❣💔😮💖😞😟
@КарикТубе748 ай бұрын
-сколько раз ты это посмотрел -кинито но он смешной
@ДмитрийКлюквин-ч4е8 ай бұрын
И ЮСУФУ БЕКБАЕВУУУ ТОЖЕ ПЕРЕДАЙ И СКАЖЕ ЕЩО ЧО ОН В ДОТЕ НЕ ИГРАЛ БОЛЬШЕ ПЖ ПЖП Ж