您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
a free and purely cosmetic script that lets you use custom skins during games, it even lets you make your own skins!
当前为
// ==UserScript== // @name Free Custom Surviv.io Skins and Mods (FREE SURVIV GOLD PASS #3 ) // @namespace https://github.com/notKaiAnderson/ // @version 1.0.9.6 // @description a free and purely cosmetic script that lets you use custom skins during games, it even lets you make your own skins! // @author someGays // @match *://surviv.io/* // @match *://surviv2.io/* // @match *://2dbattleroyale.com/* // @match *://2dbattleroyale.org/* // @match *://piearesquared.info/* // @match *://thecircleisclosing.com/* // @match *://archimedesofsyracuse.info/* // @match *://secantsecant.com/* // @match *://parmainitiative.com/* // @match *://nevelskoygroup.com/* // @match *://kugahi.com/* // @match *://chandlertallowmd.com/* // @match *://ot38.club/* // @match *://kugaheavyindustry.com/* // @match *://drchandlertallow.com/* // @match *://rarepotato.com/* // @grant none // @icon https://i.imgur.com/jgHdTYA.png // @run-at document-end // ==/UserScript== // global declarartion const skinOutfit = webpackJsonp([], null, ["63d67e9d"]); const FISTS = webpackJsonp([], null, ["ccb6ad93"]); const obstacles = webpackJsonp([], null, ["03f4982a"]); window.__customSkins = []; window.__customFists = []; window.__customTrees = []; window.__customCrates = []; window.__customObstale = []; window.SkinRules = {}; String.prototype.toCamelCase = function () { return this.replace(/\s(.)/g, function ($1) { return $1.toUpperCase(); }) .replace(/\s/g, "") .replace(/^(.)/, function ($1) { return $1.toLowerCase(); }); }; // make console.log() work console.log = console.info; fetch("https://notkaianderson.github.io/custom-surviv/assets.json") .then((data) => data.json()) .then((response) => { console.log(response); __customFists = response.customFists; __customSkins = response.customSkins; __customTrees = response.customTrees; __customCrates = response.customCrates; __customObstale = [...__customTrees, ...__customCrates]; load(); }); function load() { // UI stuff let ehtml = ` <div class="custom-wrapper-random"> olimpiqisgay) survivistrash)) </div> `; const startMenuEle = document.querySelector("#start-menu"); document.querySelector("div.pass-title").style.display = "none"; document.querySelector("div.pass-body-container").style.display = "none"; // startMenuEle.style.display = 'none'; startMenuEle.insertAdjacentHTML("beforeend", ehtml); const customWrapperEle = document.querySelector(".custom-wrapper-random"); customWrapperEle.innerHTML = `<div class="contents"> <div class="tabs"> <div class="tab" style="flex-basis: 80%;">Select Skin</div> <div class="tab" style="flex-basis: 80%;">Select Accesory</div> <div class="tab" style="flex-basis: 80%;">Select Obstacles</div> <div class="tab icon" style="flex-basis: 20%;"> <svg class="svg-icon" viewBox="0 0 20 20"> <path fill="none" d="M10.032,8.367c-1.112,0-2.016,0.905-2.016,2.018c0,1.111,0.904,2.014,2.016,2.014c1.111,0,2.014-0.902,2.014-2.014C12.046,9.271,11.143,8.367,10.032,8.367z M10.032,11.336c-0.525,0-0.953-0.427-0.953-0.951c0-0.526,0.427-0.955,0.953-0.955c0.524,0,0.951,0.429,0.951,0.955C10.982,10.909,10.556,11.336,10.032,11.336z" ></path> <path fill="none" d="M17.279,8.257h-0.785c-0.107-0.322-0.237-0.635-0.391-0.938l0.555-0.556c0.208-0.208,0.208-0.544,0-0.751l-2.254-2.257c-0.199-0.2-0.552-0.2-0.752,0l-0.556,0.557c-0.304-0.153-0.617-0.284-0.939-0.392V3.135c0-0.294-0.236-0.532-0.531-0.532H8.435c-0.293,0-0.531,0.237-0.531,0.532v0.784C7.582,4.027,7.269,4.158,6.966,4.311L6.409,3.754c-0.1-0.1-0.234-0.155-0.376-0.155c-0.141,0-0.275,0.055-0.375,0.155L3.403,6.011c-0.208,0.207-0.208,0.543,0,0.751l0.556,0.556C3.804,7.622,3.673,7.935,3.567,8.257H2.782c-0.294,0-0.531,0.238-0.531,0.531v3.19c0,0.295,0.237,0.531,0.531,0.531h0.787c0.105,0.318,0.236,0.631,0.391,0.938l-0.556,0.559c-0.208,0.207-0.208,0.545,0,0.752l2.254,2.254c0.208,0.207,0.544,0.207,0.751,0l0.558-0.559c0.303,0.154,0.616,0.285,0.938,0.391v0.787c0,0.293,0.238,0.531,0.531,0.531h3.191c0.295,0,0.531-0.238,0.531-0.531v-0.787c0.322-0.105,0.636-0.236,0.938-0.391l0.56,0.559c0.208,0.205,0.546,0.207,0.752,0l2.252-2.254c0.208-0.207,0.208-0.545,0.002-0.752l-0.559-0.559c0.153-0.303,0.285-0.615,0.389-0.938h0.789c0.295,0,0.532-0.236,0.532-0.531v-3.19C17.812,8.495,17.574,8.257,17.279,8.257z M16.747,11.447h-0.653c-0.241,0-0.453,0.164-0.514,0.398c-0.129,0.496-0.329,0.977-0.594,1.426c-0.121,0.209-0.089,0.473,0.083,0.645l0.463,0.465l-1.502,1.504l-0.465-0.463c-0.174-0.174-0.438-0.207-0.646-0.082c-0.447,0.262-0.927,0.463-1.427,0.594c-0.234,0.061-0.397,0.271-0.397,0.514V17.1H8.967v-0.652c0-0.242-0.164-0.453-0.397-0.514c-0.5-0.131-0.98-0.332-1.428-0.594c-0.207-0.123-0.472-0.09-0.646,0.082l-0.463,0.463L4.53,14.381l0.461-0.463c0.169-0.172,0.204-0.434,0.083-0.643c-0.266-0.461-0.467-0.939-0.596-1.43c-0.06-0.234-0.272-0.398-0.514-0.398H3.313V9.319h0.652c0.241,0,0.454-0.162,0.514-0.397c0.131-0.498,0.33-0.979,0.595-1.43c0.122-0.208,0.088-0.473-0.083-0.645L4.53,6.386l1.503-1.504l0.46,0.462c0.173,0.172,0.437,0.204,0.646,0.083c0.45-0.265,0.931-0.464,1.433-0.597c0.233-0.062,0.396-0.274,0.396-0.514V3.667h2.128v0.649c0,0.24,0.161,0.452,0.396,0.514c0.502,0.133,0.982,0.333,1.433,0.597c0.211,0.12,0.475,0.089,0.646-0.083l0.459-0.462l1.504,1.504l-0.463,0.463c-0.17,0.171-0.202,0.438-0.081,0.646c0.263,0.448,0.463,0.928,0.594,1.427c0.061,0.235,0.272,0.397,0.514,0.397h0.651V11.447z" ></path> </svg> </div> </div> <div class="container content"> <div class="skins"></div> </div> <div class="container content"> <div class="accesory"> accesory </div> </div> <div class="container content obstacles"> <h2>trees</h2> <div class="trees"> </div> <h2>Crates</h2> <div class="crates"> </div> </div> <div class="container content set"> <div class="modal-settings-item"> <label>Dark mode</label> <input type="checkbox" id="enableDarkTheme" /> </div> </div> <div class="footer"> <p> report bugs on <a href="https://discord.gg/WjXgrGa" target="_blank">Discord</a> 🐓 </p> </div> </div> `; // Tabs const tabLinks = document.querySelectorAll(".tab"); const tabContents = document.querySelectorAll(".content"); tabLinks[0].classList.add("active-tab"); tabContents[0].classList.add("active-tab"); tabLinks.forEach((tabLink, i) => { tabLink.addEventListener("click", () => { tabLinks.forEach((tabLink) => tabLink.classList.remove("active-tab")); tabContents.forEach((tabContent) => tabContent.classList.remove("active-tab") ); tabLink.classList.add("active-tab"); tabContents[i].classList.add("active-tab"); }); }); // generate the UI const skinItems = document.querySelector(".skins"); skinItems.addEventListener("click", applySkin); // apply skins and border on click skinItems.innerHTML = ""; // generate Skins HTML let skinHtml = ``; function updatehtml() { skinHtml = ""; __customSkins.forEach((obj) => { let eee = ` <div class="skin-item" id="${obj.name.toCamelCase()}"> <img src="img/loot/${obj.lootImg.sprite.replace( "img", "svg" )}" class="skin-img" /> <h4 class="skin-name">${obj.name}</h4> </div> `; SkinRules[obj.name.toCamelCase()] = () => { new Skin(obj); }; skinHtml += eee; }); skinItems.innerHTML = skinHtml; } updatehtml(); class Skin { constructor(obj) { this.skin = obj; skinOutfit.outfitBase.skinImg.baseTint = this.skin.skinImg.baseTint || 16777215; skinOutfit.outfitBase.skinImg.baseSprite = this.skin.skinImg.baseSprite || "player-base-02.img"; skinOutfit.outfitBase.skinImg.handTint = this.skin.skinImg.handTint || 16777215; skinOutfit.outfitBase.skinImg.handSprite = this.skin.skinImg.handSprite || "player-hands-02.img"; skinOutfit.outfitBase.skinImg.backpackTint = this.skin.skinImg.backpackTint || 16777215; skinOutfit.outfitBase.skinImg.backpackSprite = this.skin.skinImg.backpackSprite || "player-circle-base-02.img"; skinOutfit.outfitBase.skinImg.footTint = this.skin.skinImg.footTint || 16777215; skinOutfit.outfitBase.skinImg.footSprite = this.skin.skinImg.footSprite || "player-feet-02.img"; skinOutfit.outfitBase.lootImg.sprite = this.skin.lootImg.sprite || "loot-shirt-01.img"; skinOutfit.outfitBase.lootImg.tint = this.skin.lootImg.tint || 16777215; skinOutfit.outfitBase.accessory = {}; if (!this.skin.accessory) { skinOutfit.outfitBase.accessory.sprite = ""; return; } skinOutfit.outfitBase.accessory.sprite = this.skin.accessory.sprite || ""; // console.log('OLIMPIQ IS SUPER GAY') } } function applySkin(e) { if (SkinRules.hasOwnProperty(e.target.id)) { SkinRules[e.target.id](); skinRemoveBorder(); e.target.className += " active"; console.log(SkinRules[e.target.id]); } else if (SkinRules.hasOwnProperty(e.target.parentElement.id)) { SkinRules[e.target.parentElement.id](); skinRemoveBorder(); e.target.parentElement.className += " active"; console.log(SkinRules[e.target.parentElement.id]); } } function skinRemoveBorder() { skinItem = document.querySelectorAll(".skin-item"); skinItem.forEach((item) => { item.classList.remove("active"); }); } // generate Skins HTML let accesoryEle = document.querySelector(".accesory"); accesoryEle.addEventListener("click", applyFist); accesoryEle.innerHTML = ""; FistsRules = {}; class Fists { constructor(obj) { this.fist = obj; if (this.fist.spriteImg == "") { delete FISTS.fists["handSprites"]; console.log(FISTS.fists); return; } FISTS.fists.handSprites = {}; FISTS.fists.handSprites.spriteL = FISTS.fists.handSprites.spriteR = this.fist.spriteImg; console.log(FISTS.fists); } } __customFists.forEach((obj) => { let eee = ` <div class="skin-item" id="${obj.name.toCamelCase()}"> <img src="img/loot/${obj.lootImg.replace( "img", "svg" )}" class="skin-img" /> <h4 class="skin-name">${obj.name}</h4> </div> `; FistsRules[obj.name.toCamelCase()] = () => { new Fists(obj); }; accesoryEle.innerHTML += eee; }); function applyFist(e) { if (FistsRules.hasOwnProperty(e.target.id)) { FistsRules[e.target.id](); skinRemoveBorder(); e.target.className += " active"; console.log(FistsRules[e.target.id]); } else if (FistsRules.hasOwnProperty(e.target.parentElement.id)) { FistsRules[e.target.parentElement.id](); skinRemoveBorder(); e.target.parentElement.className += " active"; console.log(FistsRules[e.target.parentElement.id]); } } // inject CSS (() => { const darkModeCss = `body.dark:root{--start-background:url('');--splash-background:;--dark-color:#1f1f1f;--light-dark-color:#676767}body.dark #start-row-header{background-image:var(--start-background)}body.dark #background{background-image:url('https://i.imgur.com/yxZVwZ6.png') !important}body.dark #start-overlay{background-color:rgba(0,0,0,.4)}body.dark #account-login,body.dark #btn-help,body.dark body.dark #server-select-main,body.dark #start-bottom-left,body.dark #start-bottom-middle,body.dark #start-top-left,body.dark .account-block-arrow::after,body.dark .account-loading-container,body.dark .language-select-wrap{display:none !important}body.dark .modal-customize-cat-connect{background:#676767}body.dark .modal-content-right{background:#363636}body.dark #ui-modal-keybind-body{background-color:#363636}body.dark .account-buttons > .menu-option:last-child{margin-bottom:0} body.dark .pass-toggle{background-image:url("http://surviv.io/img/gui/close.svg")}body.dark #start-menu{display:block;}body.dark .menu-option{background-color:#1f1f1f !important;box-shadow:inset 0 -4px black !important;border:none !important;border-radius:0}body.dark .player-name-input{box-shadow:unset !important;background-color:#ffffff40 !important}body.dark .player-name-input::placeholder{color:#292929}body.dark .name.menu-option{background:#ffffff40 !important;box-shadow:none !important}body.dark .team-menu-option{border-radius:0}body.dark #btn-customize{background-color:unset !important;box-shadow:unset !important}body.dark body.dark #start-row-header{margin-bottom:0}body.dark body.dark .account-details-block{width:unset;background:#ffffff40}body.dark body.dark .account-details{width:fit-content;padding:0}body.dark .account-buttons{padding:3px;background:#ffffff40} body.dark .btn-game-menu{background-color:#1f1f1f !important;box-shadow:inset 0 -4px black !important;border:none !important;border-radius:0;animation:none !important;background-image:none !important;text-indent:0 !important}body.dark .modal-footer,body.dark .modal-header{background-color:#1f1f1f !important}body.dark #modal-customize-body{background-color:#363636}body.dark .modal-customize-cat-selected{background:#3e3838!important} body.dark #modal-item-confirm .modal-body {background-color: #1d1d1d;} #modal-customize-item-sell-container {background-color: transparent;}`; // UI css + dark theme const UIcss = `.active { color: green; border: 2px solid #668e38;} .content, .pass-body-container {display: none;}; .skin-name {margin: 10px;} .tab {display: flex !important;} .active-tab {display: block !important} .contents {display: flex; flex-direction: column; width: 100%; overflow-y: scroll; height: 100%;text-align: center; box-sizing: border-box;} .container {width: 100%; flex: 1 0 auto;} .skins, .accesory, .trees, .crates {display: flex; box-sizing: border-box; flex-wrap: wrap} .trees img {max-height: auto; max-width: 100%} .maps {display: flex; box-sizing: border-box; flex-wrap: wrap} .skin-item, .map-item {flex-grow: 1; flex-basis: 25%; position: relative; cursor: pointer; box-sizing: border-box; padding: 10px 0;} .tabs {display: flex !important;} .tab {display: inline-block !important; flex-grow: 1; padding: 10px; background: rgba(0, 0, 0, 0.28); cursor: pointer; border-right: 1px solid #ddd; border-bottom: 1px solid #ddd;} #start-menu {padding: 0;} #social-share-block-wrapper {display: none;} .tab.active-tab {background: #000;} .footer {background-color: #000; padding: 10px; border-top: 1px solid #ddd; flex-shrink: 0;} .footer p {margin:0; text-align: center;} .tab.icon { padding: 0; display: flex !important; justify-content: center; align-items: center;} .svg-icon { width: 1.5em; height: 1.5em; } .svg-icon path, .svg-icon polygon, .svg-icon rect { fill: #ffffff; } .svg-icon circle { stroke: #ffffff; stroke-width: 1;} .container.set .modal-settings-item {padding: 10px 0; } .btn-custom {-webkit-animation-name:custom-pulse;-webkit-animation-duration:5s;border-bottom:4px solid #00448a}@-webkit-keyframes custom-pulse{from{background-color:#8a9e69;border-bottom-color:#8a9e69;-webkit-box-shadow:0 0 9px #8a9e69}25%{background-color:#318585;border-bottom-color:#208686;-webkit-box-shadow:0 0 18px #318585}75%{background-color:#675fe0;border-bottom-color:#312b8a;-webkit-box-shadow:0 0 18px #675fe0}to{background-color:#8a9e69;border-bottom-color:#8a9e69;-webkit-box-shadow:0 0 9px #8a9e69}}#deleteSkinItem { position: absolute; right: 2px;} .btn-submit { margin-left: 10px; padding: 5px 10px; font-size: 1.3rem; background: #191616; color: #fff; border: solid 1px #fff; border-radius: 4px;} #addSkinName { font-size: 1.5rem;} .custom-wrapper-random { width: 753.89px; height: 415.06px; border-radius: 10.27px; box-sizing: border-box; max-height: unset; display: -webkit-box; display: flex;} ${darkModeCss}`; function addStyleString(str) { let node = document.createElement("style"); node.innerHTML = str; document.body.appendChild(node); } addStyleString(UIcss); })(); // dark theme const settingsEle = document.querySelector(".container.set"); if (localStorage.getItem("dark theme") === "true") { document.body.classList.add("dark"); document.querySelector("#enableDarkTheme").checked = true; } settingsEle.addEventListener("click", (e) => { if (document.querySelector("#enableDarkTheme").checked) { document.body.classList.add("dark"); localStorage.setItem("dark theme", "true"); } else { document.body.classList.remove("dark"); localStorage.setItem("dark theme", "false"); } }); // custom loaudout let customSkinInfo = { bodyColor: null, handsColor: null, backpackColor: null, bodySprite: null, handSprite: null, backSprite: null, footTint: null, }; let skinNameEle; const laodoutBtn = document.querySelector(".account-loadout-link"); // laodoutBtn.className = "btn-darken menu-option player-options-btn btn-custom-mode-main btn-custom"; document.querySelector("#modal-customize-header").innerHTML += ` <div class="modal-customize-cat customLaodout"> <div class="modal-customize-cat-image" style="background-image: url("img/emotes/logo-swine.svg");"></div><div class="modal-customize-cat-connect"></div><div class="account-alert account-alert-cat" style="display: none;"></div></div> `; document.querySelector(".customLaodout").addEventListener("click", temp1, !1); function temp1() { var lodoutOutfit = document.querySelector("#modal-customize-list"); var colorPicker = ` <div class="container" style="color: white; padding: 10px 5px"> <div style="padding: 10px 0"> <label>body color</label> <input type="color" id="bodyColorPicker" value="#f8c574"> </div> <div style="padding: 10px 0"> <label>hands color</label> <input type="color" id="handsColorPicker" value="#f8c574"> </div> <div style="padding: 10px 0"> <label>backpack color</label> <input type="color" id="backpackColoPicker" value="#816537"> </div> <div class="choose-sprite" style="display: flex;"> <div class="outfit"> <h4 style="padding: 0; text-align: center;">player-base-01</h4> <img id="base01" class="customize-list-item" src="https://surviv.io/img/player/player-base-01.svg" alt="player-base-01"> </div> <div class="outfit"> <h4 style="padding: 0; text-align: center;">player-base-02</h4> <img id="base02" class="customize-list-item" src="https://surviv.io/img/player/player-base-02.svg" alt="player-base-02"> </div> </div> <div style="display: flex; align-items: center"> <input id="addSkinName" maxlength="16" type="text" required> <button class="btn-submit">add</button> </div> </div> `; document.querySelector("#modal-customize-item-name").innerHTML = "create custom skins"; document.querySelector("#modal-create-account").style.display = "none"; lodoutOutfit.innerHTML = colorPicker; const bodyColorPicker = document.querySelector("#bodyColorPicker"); bodyColorPicker.addEventListener("change", changeBodyColor, !1); var skinOutfit = webpackJsonp([], null, ["63d67e9d"]); function changeBodyColor() { skinOutfit.outfitBase.skinImg.baseTint = "0x" + bodyColorPicker.value.substring(1); customSkinInfo.bodyColor = "0x" + bodyColorPicker.value.substring(1); } const handsColorPicker = document.querySelector("#handsColorPicker"); handsColorPicker.addEventListener("change", changeHandsColor, !1); function changeHandsColor() { skinOutfit.outfitBase.skinImg.handTint = "0x" + handsColorPicker.value.substring(1); skinOutfit.outfitBase.skinImg.footTint = "0x" + handsColorPicker.value.substring(1); customSkinInfo.handsColor = "0x" + handsColorPicker.value.substring(1); console.log("0x" + handsColorPicker.value.substring(1)); } const backpackColoPicker = document.querySelector("#backpackColoPicker"); backpackColoPicker.addEventListener("change", changeBackpackColor, !1); function changeBackpackColor() { skinOutfit.outfitBase.skinImg.backpackTint = "0x" + backpackColoPicker.value.substring(1); customSkinInfo.backpackColor = "0x" + backpackColoPicker.value.substring(1); } const chooseSprite = document.querySelector(".choose-sprite"); chooseSprite.addEventListener("click", function (e) { if (e.target.id == "base01") { changeSprite( "player-base-01.img", "player-hands-01.img", "player-circle-base-01.img", "player-feet-01.img" ); } else if (e.target.id == "base02") { changeSprite( "player-base-02.img", "player-hands-02.img", "player-circle-base-02.img", "player-feet-02.img" ); } }); skinNameEle = document.querySelector("#addSkinName"); function changeSprite(base, hand, backpack, feet) { skinOutfit.outfitBase.skinImg.baseSprite = base; skinOutfit.outfitBase.skinImg.handSprite = hand; skinOutfit.outfitBase.skinImg.backpackSprite = backpack; skinOutfit.outfitBase.skinImg.footSprite = feet; customSkinInfo.bodySprite = base; customSkinInfo.handSprite = hand; customSkinInfo.backSprite = backpack; customSkinInfo.footTint = feet; } } document.addEventListener("click", (e) => { if ( e.target.classList.contains("btn-submit") && skinNameEle.value.trim() != "" ) { let name = skinNameEle.value.trim(); __customSkins.push({ name: name, skinImg: { baseSprite: customSkinInfo.bodySprite, handSprite: customSkinInfo.handSprite, footSprite: customSkinInfo.handSprite, backpackSprite: customSkinInfo.backSprite, baseTint: customSkinInfo.bodyColor, handTint: customSkinInfo.handsColor, footTint: customSkinInfo.handsColor, backpackTint: customSkinInfo.backpackColor, }, lootImg: { sprite: "loot-shirt-01.img" }, }); updatehtml(); skinNameEle.value = ""; } }); // gun border colors // from https://greasyfork.org/en/scripts/398771-surviv-io-gun-color let redGuns = [ "M1100", "M870", "MP220", "Saiga-12", "SPAS-12", "Super 90", "USAS-12", ]; let yellowGuns = [ "CZ-3A1", "G18C", "M9", "M93R", "MAC-10", "MP5", "P30L", "Dual P30L", "UMP9", "Vector", "VSS", ]; let blueGuns = [ "AK-47", "AN-94", "BAR M1918", "BLR 81", "DP-28", "Groza", "Groza-S", "M1 Garand", "M39 EMR", "Mosin-Nagant", "OT-38", "OTs-38", "PKP Pecheneg", "SCAR-H", "SV-98", "SVD-63", ]; let purpleGuns = [ "M1911", "M1A1", "Mk45G", "Model 94", "Peacemaker", "Vector 45", ]; let greenGuns = [ "FAMAS", "L86A2", "M249", "M416", "M4A1-S", "Mk 12 SPR", "QBB-97", "Scout Elite", ]; let melee = [ "Fists", "Karambit Rugged", "Karmabit Prismatic", "Karmabit Drowned", "Bayonet Woodland", "Huntsman", "Karambit", "Bayonet", "Bayonet Rugged", "Bowie", "Huntsman Rugged", "Huntsman Burnished", "Bowie Vintage", "Bowie Frontier", "Wood Axe", "Blood Axe", "Fire Axe", "Katana", "Katana Rusted", "Katana Orchid", "Naginata", "Machete", "Stone Hammer", "Sledgehammer", "Hook", "Pan", "Knuckles", "Knuckles Rusted", "Knuckles Heroic", "Bonesaw", "Spade", ]; let elems = document.getElementsByClassName("ui-weapon-name"); Array.from(elems).forEach((elem) => { elem.addEventListener("DOMSubtreeModified", function () { console.log(this.textContent); let weaponName = this.textContent; let borderColor; // using if with arrays to make the code shorter if (melee.includes(weaponName)) { borderColor = "#000"; } else if (yellowGuns.includes(weaponName)) { borderColor = "#FFAE00"; } else if (blueGuns.includes(weaponName)) { borderColor = "#0066FF"; } else if (greenGuns.includes(weaponName)) { borderColor = "#039E00"; } else if (redGuns.includes(weaponName)) { borderColor = "#FF0000"; } else if (purpleGuns.includes(weaponName)) { border = "#7900FF"; } else { switch (weaponName) { case "": //empty borderColor = "transparent"; break; case "Flare Gun": borderColor = "#D44600"; break; case "DEagle 50": borderColor = "#292929"; break; case "AWM-S": case "Mk 20 SSR": borderColor = "#465000"; break; case "Potato Cannon": case "Spud Gun": borderColor = "#935924"; break; case "M9 Cursed": borderColor = "#323232"; break; case "Bugle": borderColor = "#F2BC21"; break; case "Frag": borderColor = "#837516"; break; case "MIRV": borderColor = "#940000"; break; case "Potato": borderColor = "#958359"; break; case "Smoke": borderColor = "#DDDDDD"; break; case "Snowball": borderColor = "#74D4F8"; break; case "Strobe": borderColor = "#FFF205"; break; case "Iron Bomb": borderColor = "#00FF00"; break; } } this.parentNode.style.border = `2px solid ${borderColor}`; }); }); // disable keys document.addEventListener("keydown", (e) => { // '112' F1 key if (e.keyCode == 112) e.preventDefault(); }); let ObstaclesRules = {}; let obstaclesEle = document.querySelector(".obstacles"); let treesEle = document.querySelector(".trees"); let cratesEle = document.querySelector(".crates"); class Trees { constructor(obj) { this.name = obj.name; this.sprite = obj.sprite; let imgUrl = `https://surviv.io/img/map/${this.sprite.replace( "img", "svg" )}`; if (this.name.includes("tree")) { obstacles.tree_01.img.sprite = imgUrl; } else if (this.name.includes("crate")) { obstacles.crate_01.img.sprite = imgUrl; } console.log(imgUrl); } } __customTrees.forEach((obj) => { let eee = ` <div class="skin-item" id="${obj.name.toCamelCase()}"> <img src="img/map/${obj.sprite.replace( "img", "svg" )}" class="skin-img" /> <h4 class="skin-name">${obj.name}</h4> </div> `; ObstaclesRules[obj.name.toCamelCase()] = () => { new Trees(obj); }; treesEle.innerHTML += eee; }); __customCrates.forEach((obj) => { let eee = ` <div class="skin-item" id="${obj.name.toCamelCase()}"> <img src="img/map/${obj.sprite.replace( "img", "svg" )}" class="skin-img" /> <h4 class="skin-name">${obj.name}</h4> </div> `; ObstaclesRules[obj.name.toCamelCase()] = () => { new Trees(obj); }; cratesEle.innerHTML += eee; }); obstaclesEle.addEventListener("click", applyO); function applyO(e) { if (ObstaclesRules.hasOwnProperty(e.target.id)) { ObstaclesRules[e.target.id](); skinRemoveBorder(); e.target.className += " active"; console.log(ObstaclesRules[e.target.id]); } else if (ObstaclesRules.hasOwnProperty(e.target.parentElement.id)) { ObstaclesRules[e.target.parentElement.id](); skinRemoveBorder(); e.target.parentElement.className += " active"; console.log(ObstaclesRules[e.target.parentElement.id]); } } }