لا ينبغي أن لا يتم تثبيت هذا السكريت مباشرة. هو مكتبة لسكبتات لتشمل مع التوجيه الفوقية // @require https://update.greasyfork.org/scripts/467897/1199988/Menu%20Editor%20%28Console%29.js
// ==UserScript==
// @name Menu Editor (Console).
// @version 0.2
// @description Menu Editor
// @author Zpayer./.AMiNE.
// @match http://*/*
// @match https://*/*
// @grant none
// @run-at document-start
// ==/UserScript==
const SetEditor=(ConfigColor='#9598c5',ConfigFont='monospace')=>{
let make=(cl)=>top.document.createElement(cl);
let html=(id)=>top.document.getElementById(id);
window.Editor=top.Editor={
addCate:(name='unknown',clss='unknown')=>{
let el=make('div');
el.id=name+'_cate';
el.textContent=name;
el.className='_cate';
el.style=`
border-bottom:2px solid ${ConfigColor};
width:98%;
cursor:default;
padding:4px;
color:${ConfigColor};
margin:10px 2px 2px 4px;
transition: 0.5s;
`;
clss.appendChild(el);
return el;
},
addButton:(name='unknown',clss='unknown',func=()=>{},long=false)=>{
let el=make('input');
el.id='_button';
el.button_name=name;
el.value=name;
el.className=clss+'_element';
el.type='button';
el.style=`color:#aaa;background-color:#4f545c;border-radius:5px;border:none;height:23px;width:${long?'98.5%':'49%'};margin:1px;`;
el.addEventListener('click',func);
clss.appendChild(el);
return el;
},
addRange:(text,clss,value,Min,Max,func)=>{
let div = document.createElement("div")
div.className = "CheatRangeDiv"
div.style= ` width: 100%;`
let txt = document.createElement("div")
txt.style = `
font-family: ${ConfigFont};
display: inline-block;
width: 7%;
font-size: 16px;
left: 0%;
color: rgb(219, 220, 220);
position: relative;
margin-right: 5%;
text-align: left;
`
txt.textContent = text
let el=document.createElement('input');
el.id=text+'slider';
el.value=value;
el.className='slider';
el.type='range';
el.max = Max
el.min = Min
el.style=``;
let num=make('input');
num.value = value
num.id=text+' num';
num.type='number';
num.max = Max
num.min = Min
num.style=`
color:${ConfigColor};
background-color: rgba(255, 255, 255, 0.06);
border-radius: 1px;
border: 1px solid;
height: 25px;
width: 35%;
right: 0%;
position: relative;
display: inline;
margin: 0px 1px;
text-align: center;
`;
num.addEventListener('input',function(){
el.value = num.value
func()
});
el.addEventListener("input",function(){
num.value = el.value
func()
});
div.appendChild(txt);
div.appendChild(el);
div.appendChild(num);
clss.appendChild(div);
return {Number:num,Range:el,}
},
addField:(name='unknown',clss='unknown',n,Height=100,Width=95,top='l')=>{
let field = document.createElement("fieldset")
field.id = n+'field_box'
field.className = 'scroller'
field.style=`
width:${Width}%;
top: ${top}%;
height:${Height}%;
position: relative;
background: transparent;
border: 1px solid rgb(255 255 255 / 86%);
display: inline-block;
`
clss.appendChild(field);
let leg=make('legend');
leg.id=name+'legend';
leg.textContent =name
leg.className='legend';
leg.style=`
font-size: 15px;
font-weight: bold;
text-align: left;
text-transform: uppercase;
padding: 3px;
font-family:${ConfigFont};
cursor: default;
color:rgb(255 255 255 / 86%);
width: 23%;
`;
field.appendChild(leg);
return field
},
addToggle:(name='unknown',clss='unknown',func2=()=>{},func1=()=>{},check=false)=>{
let div = document.createElement("div")
div.className = "CheatRangeDiv"
let txt = document.createElement("h2")
txt.style = `
font-family: ${ConfigFont};
display: inline-block;
font-size: 16px;
position: relative;
text-align: left;
/* left: -22%; */
margin-left: -54%;
}`
txt.textContent = name
let el=make('label');
el.className = 'switcher'
let checkbox=make('input');
checkbox.type = 'checkbox'
checkbox.checked=check
checkbox.id = name+'_Switcher'
el.onclick=()=>{
if(checkbox.checked){
func2()
checkbox.checked=false;
}else{
func1()
checkbox.checked=true;
}
}
el.appendChild(checkbox);
let slider=make('span');
slider.className = 'toggle'
el.appendChild(slider);
div.appendChild(txt);
div.appendChild(el);
clss.appendChild(div);
},
addSelect:(txt, options, tab, confirm)=>{
let div = document.createElement("div")
div.className = "CheatSelectDiv"
let select = document.createElement("select")
select.className = "CheatSelect"
select.defaultState = function(){
select.options[0].selected = true
}
select.updateOptions = function(options){
select.options.length = 0
let option = document.createElement("option")
option.textContent = txt
option.disabled = true
option.selected = true
select.appendChild(option)
options.forEach((opt)=>{
let option = document.createElement("option")
option.textContent = opt
select.appendChild(option)
})
}
let option = document.createElement("option")
option.selected = true
option.disabled = true
option.textContent = txt
select.appendChild(option)
options.forEach((opt) => {
let option = document.createElement("option")
option.textContent = opt
select.appendChild(option)
})
let input = document.createElement("input")
input.className = "CheatButton"
input.style = `
height: 40px;
width: 40px;
margin-left: 10px;
`
input.type = "button"
input.value = "✓"
input.onclick = confirm
div.appendChild(select)
div.appendChild(input)
tab.appendChild(div)
return select
},
addPlaceHolder:(txt,clss,id,func=()=>{})=>{//----------------------------------------- super "All" Chat
let el= make('input');
el.id=id;
el.type='placeholder';
el.style=`
color: rgb(219, 220, 220);
background-color: rgba(163, 165, 167, 0.07);
border-radius: 1px;
border: 1px solid;
height: 30px;
width: 95%;
margin: 1px 11px;`;
el.placeholder = txt;
el.addEventListener("keydown", function(e) {
if (e.key == "Enter") {
func()
el.value = "";
}
});
clss.appendChild(el);
return el
},
addLister:(txt,options,tab,func)=>{
let div = document.createElement("div")
let div2_ = document.createElement("div")
var divslist=[]
//var ListOfSelected=[]
var ListerSelector = addSelect(txt,options,tab,()=>{
const Selected=GetSelected(ListerSelector)
ListerSelector.Lister.push(Selected)
let div2 = document.createElement("div")
var tt = addButton(Selected,div2,()=>{})
tt.style.width='80%'
var yoptov= addButton("X",div2,()=>{
const index = ListerSelector.Lister.indexOf(Selected);
if (index > -1) { // only splice array when item is found
ListerSelector.Lister.splice(index, 1); // 2nd parameter means remove one item only
}
div2.remove()
})
yoptov.style.width='15%'
div2_.appendChild(div2);
divslist.push(div2)
})
ListerSelector.Lister=[]
div.appendChild(div2_);
var ApplyButton=addButton('Apply',div,()=>{
func()
ListerSelector.Lister=[]
divslist.forEach(k=>k.remove())
},true)
tab.appendChild(div);
return ListerSelector
},
addBB:(name='unknown',id='unknown',box='unknown_box',choosen=0)=>{
let el=make('div');
var jo = el
el.className='scroller'
el.id=box;
el.style=`
position:absolute;
display:${choosen?'block':'none'};
width:75%;height:90%;
top:10%;
right:0px;
`;
html('console').appendChild(el);
el=make('div');
el.id='console_bar_'+id;
el.className='bar_element bar_element_'+(choosen?'on':'off');
el.textContent=name;
el.addEventListener('click',function(e){
if(this!=html('console_bar').cur){
html(box).style.display='block';
html('console').cur.style.display='none';
html('console').cur=html(box);
this.className='bar_element bar_element_on';
html('console_bar').cur.className='bar_element bar_element_off';
html('console_bar').cur=this;
}
});
html('console_bar').appendChild(el);
return jo
},
addColorPicker:(clss='unknown',value)=>{
let el=make('input');
el.className='color'+clss;
el.value = value
el.type='color';
el.style=`
background-color: rgb(192 192 192);
border-radius: 2px;
border: none;
height: 37%;
width: 40%;
`;
clss.appendChild(el);
return el;
},
addFile:(clss='unknown')=>{
let el=make('input');
el.className='fileClass';
el.type='file';
el.id = 'fileu'
el.style = 'position: fixed;right: 20000000000000%;'
clss.appendChild(el);
let button=make('input');
button.className='NewfileClass';
button.type='button';
button.id = 'filebutton';
button.value = 'Choose image';
button.onclick = function(){el.click()}
button.style = `
color: ${ConfigColor};
background-color: rgb(35 35 35);
border-radius: 5px;
border: 1px solid ${ConfigColor};
height: 25px;
width: 25%;
margin: 1px;`
clss.appendChild(button);
return el;
},
addSwitcher:(name='unknown',clss='unknown',state=[],func=[],funcint=[],time=0,vehicle='')=>{
let a=make('div');
a.id=vehicle+name+'_switcher_settings';
a.style=`
display:flex;
justify-content:center;
align-items:center;
margin:3px 0;
`;
clss.appendChild(a);
let elm=make('div');
elm.id=vehicle+name+'_switcher_attribute';
elm.style=`
color:#aaa;
width:49%;
display:flex;
align-items:center;
justify-content:center;
margin:1px 11px;
`;
elm.textContent=name;
a.appendChild(elm);
var el=make('input');
var switchinterval=0;
var i=0;
el.id=vehicle+name+'_switcher';
el.button_name=vehicle+name;
el.value=state[0];
el.className=clss+'_element';
el.type='button';
el.style=`
color:#aaa;
background-color:#4f545c;
border-radius:5px;
border:none;
height:23px;
width:49%;
margin:1px 11px;
`;
el.addEventListener('click',function(){
if(i)clearInterval(switchinterval);
i=++i%(state.length);
el.value=state[i];
if(func[i])func[i]();
if(i&&funcint[i])switchinterval=setInterval(funcint[i],time);
});
a.appendChild(el);
return a;
},
addList:(name,clss,list=[],func=[],Lists=Console_.Lists)=>{
let edl=make('div');
edl.id=name+'_list';
edl.className='scroller'
edl.setAttribute('style', `
display:none;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgb(35 35 35 / 94%);
direction: rtl;
border: 1px solid rgb(54, 57, 63);
`);
clss.appendChild(edl);
addCate(name,edl)
edl.CurrentButtons=[]
/*edl.UpdateFunctions=function(NewFunc){
edl.CurrentButtons.forEach(m=>m.remove())
edl.CurrentButtons=[]
for (var i=0;i>=Math.min(list.length,func.length); i++) {
var CB = addButton(list[i],edl,()=>{edl.style.display='none';NewFunc[i]();})
edl.CurrentButtons.push(CB)
}
}
edl.UpdateList=function(NewList){
edl.CurrentButtons.forEach(m=>m.remove())
edl.CurrentButtons=[]
for (var i=0;i>=Math.min(list.length,func.length); i++) {
var CB = addButton(NewList[i],edl,()=>{edl.style.display='none';func[i]();})
edl.CurrentButtons.push(CB)
}
}*/
edl.UpdateAll=function(NewList,NewFunc,time=10){
if(Math.min(NewList.length,NewFunc.length)!=0){
var i = 0
var ButtonMakerInter = setInterval(()=>{
if(i>=Math.min(NewList.length,NewFunc.length)){
clearInterval(ButtonMakerInter);ButtonMakerInter=0;
}else{
i++
var CB = addButton(NewList[i],edl,()=>{edl.style.display='none';NewFunc[i]();})
edl.CurrentButtons.push(CB)
}
},time)
}
}
if(Lists.Lists[name]==undefined){
Lists.Lists[name]=[]
}
Lists.Lists[name].push(edl)
if(Math.min(list.length,func.length)!=0){
var i = 0
var ButtonMakerInter = setInterval(()=>{
if(i>=Math.min(list.length,func.length)){
clearInterval(ButtonMakerInter);ButtonMakerInter=0;
}else{
i++
var CB = addButton(list[i],edl,()=>{edl.style.display='none';func[i]();})
edl.CurrentButtons.push(CB)
}
},10)
}
return edl
},
}
var sheet=top.document.head.appendChild(make('style')).sheet;
sheet.insertRules=rules=>rules.replace(/\}/g,'}^').split('^').map(r=>(r.indexOf('{')+1)&&sheet.insertRule(r));
sheet.insertRules(`
.scroller{overflow-y:auto;}
.scroller::-webkit-scrollbar{
width:10px;
}
.scroller::-webkit-scrollbar-thumb{
background-color:rgba(0,0,0,.4);
-webkit-box-shadow:inset 0 0 2px rgba(0,0,0,.5);
box-shadow:inset 0 0 2px rgba(0,0,0,.5);
}
.scroller::-webkit-scrollbar-track{
background-color:rgba(0,0,0,.3);
}
.scroller::-webkit-scrollbar-thumb{
background:#000;
}
.bar_element:hover{
opacity:0.9;
background:#40444bAA;
transition-duration: 0.3s;
}
.bar_element{
color:#FFF;
line-height: 200%;
cursor:pointer;
height:10%;
width:100%;
}
.cheat_element:hover{
color:#FFF !important;
}
.bar_element_off{
opacity:0.5;
background:#0000;
}
.bar_element_on{
opacity:1;
background:#40444b;
}
.CheatSelect {
background-color: rgb(38 38 38 / 0%);
color: rgb(219 220 220);
height: 40px;
box-sizing: border-box;
border: 1px solid;
width: 61%;
opacity: 0.7;
transition: all 0.5s ease 0s;
display: inline-block;
font-family: ${ConfigFont};
}
.CheatSelect:hover {
opacity: 1;
}
.CheatButton {
background-color: rgb(38 38 38 / 0%);
color: rgb(219, 220, 220);
height: 40px;
width: 140px;
text-align: center;
box-sizing: border-box;
border: 1px solid;
outline: none;
opacity: 0.7;
transition: all 0.5s ease 0s;
}
.CheatButton:hover {
opacity: 1;
}
.slider {
appearance: none;
width: 46%;
height: 5px;
background: rgb(219, 220, 220);
outline: none;
opacity: 0.7;
transition: opacity 0.2s ease 0s;
display: inline;
margin: 6px;
}
.slider:hover {
opacity: 1;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 7px;
height: 15px;
background:${ConfigColor};
cursor: pointer;
}
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.switcher {
position: absolute;
display: inline-block;
width: 57px;
height: 23px;
left: 74%;
}
.switcher input {
opacity: 0;
width: 0;
height: 0;
}
.toggle {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
-webkit-transition: .4s;
transition: .4s;
}
.toggle:before {
position: absolute;
content: "";
height: 21px;
width: 20px;
left: 8px;
border-radius: 4px;
bottom: 1px;
background-color: white;
transition: all 0.4s ease 0s;
}
input:checked + .toggle {
background-color:${ConfigColor};
}
input:focus + .toggle {
box-shadow: 0 0 1px #2196F3;
}
input:checked + .toggle:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
transform: translateX(26px);
}
`);
return window.Editor
}