- // ==UserScript==
- // @name 仙灵
- // @namespace http://tampermonkey.net/
- // @version 0.2
- // @description 仙灵 角色导入
- // @author hhzxxx
- // @include *seelie.inmagi.com*
- // @match https://seelie.inmagi.com/
- // @icon https://www.google.com/s2/favicons?sz=64&domain=inmagi.com
- // @require https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js
- // @run-at document-end
- // @grant GM_setValue
- // @grant GM_getValue
- // @license MIT
- // ==/UserScript==
-
- $(document).ready(function(){
- var i, c, fl, fk, x, a, b, mo = 0,
- glzs = 0,
- ver=0;
-
- setInterval(() => {
- for (let index = 0; index < document.getElementsByTagName('a').length; index++) {
- document.getElementsByTagName('a')[index].setAttribute('rel','noreferrer')
- }
- },300)
-
-
-
-
- //--------------左下角按钮--设置界面------ 111-------
- let wdstyle = document.createElement('style');
- wdstyle.innerHTML = `
- .xfsz {
- transition: all 0.3s;
- height:60px;
- width: 60px;
- position: fixed;
- z-index: 10;
- opacity: 0;
- left: 0px;
- bottom: 0px;
- }
- .xfsz:hover{
- opacity: 1;
- }
- .xfck {
- display: none;
- background: #222;
- width: 300px;
- height: 100px;
- text-align: center;
- position: fixed;
- left: 50%;
- top: 50%;
- transform: translate(-50%, -50%);
- color: #fff;
- z-index: 99999;
- border: solid 3px #000000;
- }
- .xfsc {
- background: #444;
- right: 20px;
- border-radius: 35px;
- margin-bottom: 13px;
- margin-right: 10px;
- margin-left: 10px;
- cursor: pointer;
- border: solid 5px #444;
- white-space: nowrap;
- float: left;
- }
- .xfsc:hover {
- background: #000;
- border: solid 5px #000;
- }
- .xfan {
- width: 100px;
- height: 40px;
- }
- .xfyy {
- overflow: auto;
- width: 700px;
- height: 430px;
- margin: auto;
- }
- #xf_sr {
- width: 580px;
- height: 32px;
- margin: auto;
- }
- #xf_dc {
- margin-left: 40px;
- margin-right: 40px;
- }
- .xfgb {
- position: absolute;
- right: 3px;
- top: 3px;
- cursor: pointer;
- font-size: 40px;
- width: 40px;
- height: 40px;
- line-height: 40px;
- }
- .xfgb:hover {
- background: #f00;
- }
- .tabbox ul {
- list-style: none;
- display: table;
- margin: 0;
- padding-left: 70px;
- width: 1000px;
- }
- .tabbox ul li {
- float: left;
- width: 120px;
- height: 50px;
- line-height: 50px;
- font-size: 12px;
- border: 1px solid #aaccff;
- cursor: pointer;
- margin-left: 10px;
- margin-right: 10px;
- }
-
- .tabbox ul li:hover{
- background-color: #111;
- color: white;
- font-weight: bold;
- }
- .tabbox ul li.active {
- background-color: #004f69;
- color: white;
- font-weight: bold;
- }
- .xfan,
- #xf_sr {
- background: #333;
- color: #ddd;
- }
- .xfan:hover,
- #xf_sr:focus {
- background: #111;
- color: #fff;
- }
-
-
- .xfsz_an {
- pointer-events:auto;
- left: 10px;
- bottom:10px;
- cursor: pointer;
- --glow-color: rgb(217, 176, 255);
- --glow-spread-color: rgba(191, 123, 255, 0.781);
- --enhanced-glow-color: rgb(231, 206, 255);
- --btn-color: rgb(100, 61, 136);
- border: 3px solid var(--glow-color);
- color: var(--glow-color);
- font-size: 16px;
- font-weight: bold;
- background-color: var(--btn-color);
- border-radius: 50%;
- text-align: center;
- outline: none;
- box-shadow: 0 0 1em .25em var(--glow-color),
- 0 0 4em 1em var(--glow-spread-color),
- inset 0 0 .75em .25em var(--glow-color);
- text-shadow: 0 0 .5em var(--glow-color);
- position:absolute;
- display: block;
- transition: all 0.3s;
- width:40px;
- height:40px;
- line-height: 40px;
- }
-
- .xfsz_an:hover {
- color: var(--btn-color);
- background-color: var(--glow-color);
- box-shadow: 0 0 1em .25em var(--glow-color),
- 0 0 4em 2em var(--glow-spread-color),
- inset 0 0 .75em .25em var(--glow-color);
- }
-
- .xfsz_an:active {
- box-shadow: 0 0 0.6em .25em var(--glow-color),
- 0 0 2.5em 2em var(--glow-spread-color),
- inset 0 0 .5em .25em var(--glow-color);
- }
- `;
- let wddiv = `
- <div class="xfsz">
- <div class="xfsz_an xfsz_sz" title="过滤设置">0</div>
-
- </div>
- <div class="xfck">
- <div>仙灵角色上传 GOOD导入</div>
- <div class="xfgb">X
- </div>
- <div>
- <input type="file" id="files" class="xfan" value="导入">
- </div>
- </div>
- `;
-
-
- document.body.appendChild(wdstyle);
- setTimeout(() => {
- document.querySelector("body").innderHTML += wddiv;
- $(wddiv).appendTo($("body"));
- //关闭
- $(".xfgb").click(function () {
- $(".xfck").toggle();
- })
- $(".xfsz_an").click(function () {
- $(".xfck").toggle();
- });
-
- var inputElement = document.getElementById("files");
- inputElement.addEventListener("change", handleFiles, false);
- function handleFiles() {
- var selectedFile = document.getElementById("files").files[0];//获取读取的File对象
- var name = selectedFile.name;//读取选中文件的文件名
- var size = selectedFile.size;//读取选中文件的大小
- console.log("文件名:"+name+"大小:"+size);
- var reader = new FileReader();//这里是核心!!!读取操作就是由它完成的。
- reader.readAsText(selectedFile);//读取文件的内容
- let levelTextList = {
- 0:"1",
- 10:"1",
- 20:"20",
- 21:"20 A",
- 31:"20 A",
- 41:"40",
- 42:"40 A",
- 52:"50",
- 53:"50 A",
- 63:"60",
- 64:"60 A",
- 74:"70",
- 75:"70 A",
- 85:"80",
- 86:"80 A",
- 96:"90"
- }
-
- let levelList = [1,1,20,20,40,50,60,70,80,90]
- reader.onload = function(){
- let json = JSON.parse(this.result);
- if(json.characters){
- let goals = JSON.parse(localStorage.getItem('main-goals'))
- let newGoals = []
- let id = 1
- let character = null
- let nameList = []
- json.characters.filter(a => a.key != "TravelerDendro").forEach(c => {
- //久七人 九条沙罗
- let name = c.key.toLowerCase().replace("kukishinobu","shinobu").replace("kujousara","sara").replace("raidenshogun","shogun")
- if(nameList.indexOf(name) < 0){
- nameList.push(name)
- }
- character = {
- "type": "character",
- "character": name,
- "current": {
- "level": Math.round(c.level/10)*10,
- "asc": c.ascension,
- "text": levelTextList[Math.round(c.level/10)*10+c.ascension]
- },
- "goal": {
- "level": Math.round(c.level/10)*10,
- "asc": c.ascension,
- "text": levelTextList[Math.round(c.level/10)*10+c.ascension]
- },
- "cons": c.constellation,
- "id":id
- }
- let talent= {
- "type": "talent",
- "character": name,
- "normal": {
- "current": c.talent.auto,
- "goal": c.talent.auto
- },
- "skill": {
- "current": c.talent.skill,
- "goal": c.talent.skill
- },
- "burst": {
- "current": c.talent.burst,
- "goal": c.talent.burst
- },
- "id":id+1
- }
- let weapon = null
- if(goals){
- let existGoals = goals.filter(g => {
- return g.character == name
- }).forEach(e => {
- if(e.type == "character"){
- if((e.goal.level + e.goal.asc) > (character.goal.level + character.goal.asc)){
- character.goal = e.goal
- }
- }
- if(e.type == "talent"){
- talent.normal.goal = Math.max(e.normal.goal,talent.normal.goal)
- talent.skill.goal = Math.max(e.skill.goal,talent.skill.goal)
- talent.burst.goal = Math.max(e.burst.goal,talent.burst.goal)
- }
- if(e.type == "weapon"){
- weapon = e
- weapon.id = id+2
- }
- })
- }
-
- character.current.level = levelList[Math.round(character.current.level/10)]
- character.goal.level = levelList[Math.round(character.goal.level/10)]
- newGoals.push(character)
- newGoals.push(talent)
-
- id = id + 2
- if(weapon != null){
- newGoals.push(weapon)
- id = id + 1
- }
- })
- if(goals){
- let existGoals = goals.filter(g => {
- return nameList.indexOf(g.character) < 0
- }).forEach(e => {
- e.id = id
- newGoals.push(e)
- console.log(e,"old");
- id++
- })
- }
- console.log(newGoals);
- localStorage.setItem('main-goals',JSON.stringify(newGoals))
- setTimeout(() => {
- location.reload()
- }, 1000);
- }
-
- };
-
- }
-
- }, 1000);
- });