Skip to content

Commit

Permalink
added gm3dbypass.user.js
Browse files Browse the repository at this point in the history
  • Loading branch information
k3rielit committed Jul 19, 2023
1 parent 38ab89a commit ec0ea94
Show file tree
Hide file tree
Showing 3 changed files with 168 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Details about each script can be found inside their directory.
| [antileet](/antileet/) | [[soft](https://github.com/k3rielit/scripts/raw/main/antileet/hard.user.js)] [[hard](https://github.com/k3rielit/scripts/raw/main/antileet/soft.user.js)] [[sziauram](https://github.com/k3rielit/scripts/raw/main/antileet/sziauram.user.js)] |
| [dotnetfiddle](/dotnetfiddle/) | [[downloader](https://github.com/k3rielit/scripts/raw/main/dotnetfiddle/dotnetfiddle_dl.user.js)] |
| [flippity](/flippity/) | [[solver](https://github.com/k3rielit/scripts/raw/main/flippity/flippity-tamperm.user.js)] [[advanced](https://github.com/k3rielit/scripts/raw/main/flippity/ultimity-tamperm.user.js)] |
| [gamemodels3d](/gamemodels3d/) | [[gm3dbypass](https://github.com/k3rielit/scripts/raw/main/gamemodels3d/gm3dbypass.user.js)] |
| [nr_addons](/nr_addons/) | [[livemap](https://github.com/k3rielit/scripts/raw/main/nr_addons/nr_livemap.user.js)] |
| [oktatas_hu](/oktatas_hu/) | [[splitscreen](https://github.com/k3rielit/scripts/raw/main/oktatas_hu/oktatas_hu.user.js)] |
| [steamcharts](/steamcharts/) | [[extended](https://github.com/k3rielit/scripts/raw/main/steamcharts/extendedsteamcharts.user.js)] |
Expand Down
11 changes: 11 additions & 0 deletions gamemodels3d/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# GM3DBYPASS

uristen very big

- [x] Bypass download login prompt
- [ ] Bypass locked vehicle pages

## Install

1. Install the Tampermonkey extension. ([Link](https://www.tampermonkey.net))
2. [Install](https://github.com/k3rielit/scripts/raw/main/gamemodels3d/gm3dbypass.user.js)
156 changes: 156 additions & 0 deletions gamemodels3d/gm3dbypass.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
// ==UserScript==
// @name gamemodels3d bypass
// @namespace k3rielit.freerobux
// @version 0.2
// @description try to take over the world!
// @author k3rielit
// @match *://*.gamemodels3d.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=gamemodels3d.com
// @grant none
// @run-at document-start
// @updateURL https://github.com/k3rielit/scripts/raw/main/gamemodels3d/gm3dbypass.user.js
// @downloadURL https://github.com/k3rielit/scripts/raw/main/gamemodels3d/gm3dbypass.user.js
// ==/UserScript==

(function() {
'use strict';

function loadScript(type, src, stringContent) {
return new Promise(function (resolve, reject) {
var script = document.createElement('script');
script.onload = function () {
console.log(`[loadScript] Success: ${this.type} @ ${this.src}`);
resolve();
};
script.onerror = function () {
console.error(`[loadScript] Error: ${this.type} @ ${this.src}`);
reject();
};
if(type) script.type = type;
if(src) script.src = src;
if(stringContent) script.text = stringContent;
document.body.appendChild(script);
console.log(script);
});
}

function injectExporter() {
window.VIEWER3D.Exporter = class Exporter {
constructor() {}
parse(model, format, name) {
console.log(`[VIEWER3D.Exporter] ${name}.${format}`);
console.log(model);
let exporter;
const stlOptions = { binary: true };
switch(format) {

case 'drc':
exporter = new window.DRACOExporter(); // never used, here for future updates
saveFile(`${name}.${format}`, exporter.parse(model), 'application/octet-stream');
break;

case 'gltf':
exporter = new window.GLTFExporter();
exporter.parse(
model,
(parsedModel) => {console.log(parsedModel); saveFile(`${name}.${format}`, JSON.stringify(parsedModel), 'application/json')},
exportErrorHandler
);
break;

case 'obj':
exporter = new window.OBJExporter();
saveFile(`${name}.${format}`, exporter.parse(model), 'application/octet-stream');
break;

case 'ply':
exporter = new window.PLYExporter(); // never used, here for future updates
saveFile(`${name}.${format}`, exporter.parse(model), 'application/octet-stream');
break;

case 'stl':
exporter = new window.STLExporter();
saveFile(`${name}.${format}`, exporter.parse(model, stlOptions), 'application/octet-stream');
break;

default:
console.warn(`[Exporter] Unknown format: ${format}`);
break;
}

}
}
}

function exportErrorHandler(error) {
console.error(`[Exporter] Error: ${error}`);
}

function saveFile (filename, content, mimeType) {
console.log('saving xd');
const blob = new Blob([content], {type: mimeType});
if(window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveBlob(blob, filename);
}
else{
const elem = window.document.createElement('a');
elem.style.display = "none";
elem.href = window.URL.createObjectURL(blob, { oneTimeOnly: true });
elem.download = filename;
document.body.appendChild(elem);
elem.click();
document.body.removeChild(elem);
}
}

function downloadGltf(modelObject, fileName) {
var dataString = 'data:text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(modelObject));
var downloadNode = document.createElement('a');
downloadNode.setAttribute('href', dataString);
downloadNode.setAttribute('download', fileName);
document.body.appendChild(downloadNode);
downloadNode.click();
downloadNode.remove();
}

// Inject three.js importmap and exporter addons
loadScript('importmap',null,`
{
"imports": {
"three": "https://unpkg.com/[email protected]/build/three.module.js",
"three/addons/": "https://unpkg.com/[email protected]/examples/jsm/"
}
}
`);

loadScript('module',null,`
import { DRACOExporter } from 'three/addons/exporters/DRACOExporter.js';
import { GLTFExporter } from 'three/addons/exporters/GLTFExporter.js';
import { OBJExporter } from 'three/addons/exporters/OBJExporter.js';
import { PLYExporter } from 'three/addons/exporters/PLYExporter.js';
import { STLExporter } from 'three/addons/exporters/STLExporter.js';
window.DRACOExporter = DRACOExporter;
window.GLTFExporter = GLTFExporter;
window.OBJExporter = OBJExporter;
window.PLYExporter = PLYExporter;
window.STLExporter = STLExporter;
`);

// The 3d viewer only appears after navigating to its tab, wait for that, and inject the exporter
const downloadSelector = '#viewer3dContainer > div.viewer3d_controlPanel > div.right > img:nth-child(2)';
if (document.querySelector(downloadSelector)) {
console.log(document.querySelector(downloadSelector));
injectExporter();
}
const observer = new MutationObserver((mutationList, observer) => {
if (document.querySelector(downloadSelector)) {
console.log(document.querySelector(downloadSelector));
observer.disconnect();
injectExporter();
}
});
observer.observe(document.body, {
attributes: true, childList: true, subtree: true
});

})();

0 comments on commit ec0ea94

Please sign in to comment.