Skip to content

Instantly share code, notes, and snippets.

@raidan00
Created April 29, 2023 09:44
Show Gist options
  • Save raidan00/078d2c4cb63e3a2d45a73ae3fac69fa6 to your computer and use it in GitHub Desktop.
Save raidan00/078d2c4cb63e3a2d45a73ae3fac69fa6 to your computer and use it in GitHub Desktop.
StarBreak: Double Shoot
// ==UserScript==
// @name StarBreak: Double Shoot
// @version 1.0
// @author raidan00
// @match http*://www.starbreak.com/*
// @grant GM_setValue
// @grant GM_getValue
// @description https://www.youtube.com/@WipeFire
// ==/UserScript==
let mainAttackKeyCode = 68;
let doublShootKeyCode = 88;
function sendKey(type, keyCode) {
var pd = function dummyPreventDefault() {};
var ev = { type, keyCode, preventDefault: pd };
XDL.onKey(ev);
}
let delay = GM_getValue("delay") ?? 400;
function listener(e){
if (XDL.textInputActive) return;
if(e.keyCode == doublShootKeyCode){
document.removeEventListener('keydown', listener);
sendKey('keydown', mainAttackKeyCode);
sendKey('keyup', mainAttackKeyCode);
sendKey('keydown', mainAttackKeyCode);
setTimeout(()=>{
sendKey('keyup', mainAttackKeyCode);
document.addEventListener('keydown', listener);
}, delay);
}
}
document.addEventListener('keydown', listener);
let container = document.createElement("div");
container.className = 'doubleShoot';
document.body.appendChild(container);
let input = document.createElement("input");
input.type = "number";
input.value = delay;
input.onchange = ()=>{
delay= +input.value;
GM_setValue("delay", delay);
listContainer.style.display = "none";
};
input.onfocus = () => {
listContainer.style.display = "block";
}
container.appendChild(input);
let delayList = [
{name:"Dancer", value: 305},
{name:"Gavotte", value: 220},
{name:"Volta", value: 280},
{name:"Trinity", value: 280},
{name:"Range Dancer", value: 400},
{name:"Range Gavotte", value: 330},
{name:"Range Volta", value: 380},
{name:"Range Trinity", value: 380},
]
let listContainer = document.createElement("div");
container.appendChild(listContainer);
listContainer.style.display = "none";
for(let {name, value} of delayList){
let el = document.createElement("div");
el.innerHTML = `${ name } - ${ value }`;
el.style.cursor = "pointer";
el.onclick = ()=>{
input.value = value;
delay = value;
GM_setValue("delay", delay);
listContainer.style.display = "none";
}
listContainer.appendChild(el);
}
let styles = document.createElement('style');
container.appendChild(styles);
styles.textContent = `
.doubleShoot {
position: fixed;
left: 250px;
top: 0px;
}
.doubleShoot input {
background: #ffffff52;
outline: none;
border: 1px solid black;
border-radius: 6px;
font-size: 25px;
width: 60px;
}
.doubleShoot div div{
font-size: 26px;
background: #ffffff52;
border: 1px solid black;
border-radius: 6px;
padding: 0px 10px;
}
`;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment