// ==UserScript==
// @name TinyGrail Helper Next
// @namespace https://gitee.com/Yinr/TinyGrail-Helper-Next
// @version 3.0.1.1
// @description 为小圣杯增加一些小功能,讨论/反馈:https://bgm.tv/group/topic/353368
// @author Liaune,Cedar,Yinr
// @include /^https?://(bgm\.tv|bangumi\.tv|chii\.in)/(user|character|rakuen\/topiclist|rakuen\/home|rakuen\/topic\/crt).*
// @grant GM_addStyle
// @downloadURL none
// ==/UserScript==
GM_addStyle(`
ul.timelineTabs li a {
margin: 2px 0 0 0;
padding: 5px 10px 5px 10px;
}
img.cover {
background-color: transparent;
}
.assets .my_temple.item .card {
box-shadow: 3px 3px 5px #FFEB3B;
borderList: 1px solid #FFC107;
}
html[data-theme='dark'] .assets .my_temple.item .card {
box-shadow: 0px 0px 15px #FFEB3B;
borderList: 1px solid #FFC107;
}
.assets .my_temple.item .name a {
font-weight: bold;
color: #0084b4;
}
#grail .temple_list .item {
margin: 5px 5px 5px 0;
width: 107px;
}
.assets_box .item {
margin: 5px 5px 5px 0;
width: 90px;
}
#lastTemples .assets .item {
margin: 5px 5px 5px 0;
width: 107px;
}
.item .card {
width: 105px;
height: 140px;
}
.assets_box .item .card {
width: 90px;
height: 120px;
}
#grailBox .my_auction, #TB_window .my_auction {
color: #ffa7cc;
margin-right: 5px;
}
#grailBox .user_auction, #TB_window .user_auction {
color: #a7e3ff;
margin-right: 5px;
}
html[data-theme='dark'] #grailBox .title {
background-color: transparent;
}
#grailBox .trade_box button {
min-width: 50px;
padding: 0 9px;
}
.link .swapPos {
margin-left: 0.5em;
cursor: pointer;
}
.link.swapped .swapPos {
text-decoration: underline;
}
#TB_window.temple .container {
text-align: center;
}
#TB_window .action .text_button {
margin: 0 8px 0 0;
padding: 0;
width: fit-content;
height: fit-content;
min-width: fit-content;
}
`);
const api = 'https://tinygrail.com/api/';
let lastEven = false;
function getData(url) {
if (!url.startsWith('http')) url = api + url;
return new Promise((resovle, reject) => {
$.ajax({
url: url,
type: 'GET',
xhrFields: { withCredentials: true },
success: res => {resovle(res)},
error: err => {reject(err)}
});
});
}
function postData(url, data) {
let d = JSON.stringify(data);
if(!url.startsWith('http')) url = api + url;
return new Promise((resovle, reject) => {
$.ajax({
url: url,
type: 'POST',
contentType: 'application/json',
data: d,
xhrFields: { withCredentials: true },
success: res => {resovle(res)},
error: err => {reject(err)}
});
});
}
function renderCharacterDepth(chara) {
let depth = `+${formatNumber(chara.Bids, 0)} -${formatNumber(chara.Asks, 0)} ${formatNumber(chara.Change, 0)} `
return depth;
}
function renderCharacterTag(chara, item) {
let id = chara.Id;
let flu = '--';
let tclass = 'even';
if (chara.Fluctuation > 0) {
tclass = 'raise';
flu = `+${formatNumber(chara.Fluctuation * 100, 2)}%`;
} else if (chara.Fluctuation < 0) {
tclass = 'fall';
flu = `${formatNumber(chara.Fluctuation * 100, 2)}%`;
}
let tag = `
自动建塔 - #${charaId} 「${chara.Name}」 ${target} / ₵${bidPrice}
当已献祭股数+持有股数达到目标数量时将自动建塔
输入 目标数量 / 买入价格(不超过此价格的卖单将自动买入)
`;
$('body').append(dialog);
$('#TB_closeWindowButton').on('click', closeDialog);
$('#cancelBuildButton').on('click', function(){
if(intempleList){
autoTempleList.splice(index,1);
localStorage.setItem('TinyGrail_autoTempleList',JSON.stringify(autoTempleList));
alert(`取消自动建塔${chara.Name}`);
$('#autobuildButton').text('[自动建塔]');
}
closeDialog();
});
$('#startBuildButton').on('click', function () {
let info = {};
info.charaId = charaId.toString();
info.name = chara.Name;
info.target = $('.trade.build .target').val();
info.bidPrice = $('.trade.build .bidPrice').val();
if(intempleList){
autoTempleList.splice(index,1);
autoTempleList.unshift(info);
}
else autoTempleList.unshift(info);
localStorage.setItem('TinyGrail_autoTempleList',JSON.stringify(autoTempleList));
alert(`启动自动建塔#${info.charaId} ${info.name}`);
closeDialog();
$('#autobuildButton').text('[自动建塔中]');
autoBuildTemple([info]);
});
}
function setBuildTemple(chara){
let in_TempleList = false;
let charaId = chara.Id;
if(chara.CharacterId) charaId = chara.CharacterId;
for(let i = 0; i < autoTempleList.length; i++){
if(autoTempleList[i].charaId == charaId) in_TempleList = true;
}
let button;
if(in_TempleList){
button = `
[自动建塔中] `;
}
else{
button = `
[自动建塔] `;
}
if($('#buildButton').length) $('#buildButton').after(button);
else $('#grailBox .title .text').after(button);
$('#autobuildButton').on('click', () => {
openBuildDialog(chara);
});
}
function followChara(charaId){ //关注角色
followList = JSON.parse(localStorage.getItem('TinyGrail_followList'))|| {"user":'',"charas":[], "auctions":[]};
let button = `
[关注角色] `;
if(followList.charas.includes(charaId)){
button = `
[取消关注] `;
}
if($('#kChartButton').length) $('#kChartButton').before(button);
else $('#grailBox .title .text').after(button);
$('#followCharaButton').on('click', () => {
if(followList.charas.includes(charaId)){
followList.charas.splice(followList.charas.indexOf(charaId),1);
$('#followCharaButton').text('[关注角色]');
}
else{
followList.charas.unshift(charaId);
$('#followCharaButton').text('[取消关注]');
}
localStorage.setItem('TinyGrail_followList',JSON.stringify(followList));
});
}
async function autoJoinICO(icoList){
for (let i = 0; i < icoList.length; i++) {
let charaId = icoList[i].CharacterId;
await getData(`chara/${charaId}`).then((d)=>{
if (d.State == 0){
let offer = 5000;
let Id = d.Value.Id;
if(d.Value.Total < 100000 && d.Value.Users < 15){
getData(`chara/initial/${Id}`).then((d)=>{
if(d.State == 1){
postData(`chara/join/${Id}/${offer}`, null).then((d)=>{
if (d.State === 0) {
console.log(`#${charaId} 追加注资成功。`);
$(`#eden_tpc_list li[data-id=${charaId}] .row`).append(`
+${offer} `);
}
});
}
});
}
}
});
}
}
async function fullfillICO(icoList){
var dialog = `
`;
if(!$('#TB_window').length) $('body').append(dialog);
$('#TB_closeWindowButton').on('click', closeDialog);
$('#TB_overlay').on('click', closeDialog);
for (let i = 0; i < icoList.length; i++) {
let Id = icoList[i].Id;
let charaId = icoList[i].charaId;
let targetlv = icoList[i].target;
let target = ICO_standard(targetlv);
await getData(`chara/${charaId}`).then((d)=>{
if (d.State == 0){
let predicted = caculateICO(d.Value);
if(predicted.Level >= targetlv){
console.log(charaId+'总额:'+d.Value.Total+',已达标,无需补款');
$('.info_box .result').prepend(`
自动补款 - #${chara.CharacterId} 「${chara.Name}」 lv${target}
目标等级:
`;
$('body').append(dialog);
$('#TB_closeWindowButton').on('click', closeDialog);
$('#cancelfillICOButton').on('click', function(){
if(inorder){
alert(`取消自动补款${chara.Name}`);
$('#followICOButton').text('[自动补款]');
fillicoList.splice(index,1);
localStorage.setItem('TinyGrail_fillicoList',JSON.stringify(fillicoList));
}
closeDialog();
console.log(fillicoList);
});
$('#startfillICOButton').on('click', function () {
let target = parseFloat($('.desc .target').val());
if(target <= 0 || !Number.isInteger(target)){
alert('请输入正整数!');
return;
}
let info = {};
info.Id = chara.Id.toString();
info.charaId = chara.CharacterId.toString();
info.name = chara.Name;
info.target = target;
info.end = chara.End;
if(inorder){
fillicoList[index] = info;
}
else fillicoList.push(info);
localStorage.setItem('TinyGrail_fillicoList',JSON.stringify(fillicoList));
alert(`启动自动补款#${chara.Id} ${chara.Name}`);
$('#followICOButton').text('[自动补款中]');
closeDialog();
console.log(fillicoList);
});
$('#fillICOButton').on('click', function () {
let target = parseFloat($('.desc .target').val());
if(target <= 0 || !Number.isInteger(target)){
alert('请输入正整数!');
return;
}
let info = {};
info.Id = chara.Id.toString();
info.charaId = chara.CharacterId.toString();
info.name = chara.Name;
info.target = target;
info.end = chara.End;
closeDialog();
if(confirm(`立即补款#${chara.Id} ${chara.Name} 至 lv${target}`)){
fullfillICO([info]);
}
});
}
function setFullFillICO(chara){ //设置自动补款
fillicoList = JSON.parse(localStorage.getItem('TinyGrail_fillicoList')) || [];
let button, inorder = false;
let charaId = chara.CharacterId;
for(let i = 0; i < fillicoList.length; i++){
if(fillicoList[i].charaId == charaId){
inorder = true;
}
}
if(inorder){
button = `
[自动补款中] `;
}
else{
button = `
[自动补款] `;
}
$('#grailBox .title .text').after(button);
$('#followICOButton').on('click', () => {
openICODialog(chara);
});
}
function showEndTime(chara){
let endTime = (chara.End).slice(0,19);
$('#grailBox .title .text').append(`
结束时间: ${endTime}
`);
}
function followAuctions(charaId){ //关注竞拍情况
getData(`chara/user/${charaId}/tinygrail/false`).then((d)=>{
if (d.State == 0) {
let button;
if(followList.auctions.includes(charaId)){
button = `
[取消关注] `;
}
else{
button = `
[关注竞拍] `;
}
$('#buildButton').before(button);
$('#followAuctionButton').on('click', () => {
if(followList.auctions.includes(charaId)){
followList.auctions.splice(followList.auctions.indexOf(charaId),1);
$('#followAuctionButton').text('[关注竞拍]');
}
else{
followList.auctions.unshift(charaId);
$('#followAuctionButton').text('[取消关注]');
}
localStorage.setItem('TinyGrail_followList',JSON.stringify(followList));
});
}
});
}
async function loadValhalla(ids){
for(let i = 0; i < ids.length; i++){
let Id = ids[i];
await getData(`chara/user/${Id}/tinygrail/false`).then((d)=>{
let valhalla = `
₵${formatNumber(d.Value.Price,2)} / ${d.Value.Amount} `;
$(`.cancel_auction[data-id=${Id}]`).before(valhalla);
});
}
}
async function joinAuctions(ids){
for(let i = 0; i < ids.length; i++){
let Id = ids[i];
await postData('chara/auction/list', [Id]).then((d)=>{
let myAuctionAmount = 0;
if(d.Value.length) myAuctionAmount = d.Value[0].Amount;
if(myAuctionAmount){
let myAuction = `
₵${formatNumber(d.Value[0].Price, 2)} / ${myAuctionAmount} `;
$(`.item_list[data-id=${Id}] .time`).after(myAuction);
}
else{
getData(`chara/user/${Id}/tinygrail/false`).then((d)=>{
let price = Math.ceil(d.Value.Price * 100)/100;
let amount = 1;
postData(`chara/auction/${Id}/${price}/${amount}`, null).then((d)=>{
if (d.State == 0) {
let myAuction = `
₵${price} / ${amount} `;
$(`.item_list[data-id=${Id}] .time`).after(myAuction);
} else {
console.log(d.Message);
}
});
});
}
});
}
}
function loadUserAuctions(d) {
d.Value.forEach((a) => {
if (a.State != 0) {
let userAuction = `
${formatNumber(a.State, 0)} / ${formatNumber(a.Type, 0)} `;
$(`.item_list[data-id=${a.CharacterId}] .time`).after(userAuction);
$(`#auctionHistoryButton`).before(userAuction);
$('#TB_window.dialog .desc').append(userAuction);
}
if (a.Price != 0) {
let myAuction = `
₵${formatNumber(a.Price, 2)} / ${formatNumber(a.Amount, 0)} `;
$(`.item_list[data-id=${a.CharacterId}] .time`).after(myAuction);
$(`#auctionHistoryButton`).before(myAuction);
$('#TB_window.dialog .desc').append(myAuction);
}
});
}
function fixAuctions(chara){
getData(`chara/user/${chara.Id}/tinygrail/false`).then((d)=>{
chara.Price = d.Value.Price;
chara.State = d.Value.Amount;
let button = `
[萌王投票] `;
if (d.State == 0 && d.Value.Amount > 0) button = `
[参与竞拍] `;
$('#buildButton').before(button);
$('#auctionButton').hide();
launchObserver({
parentNode: document.body,
selector: '#auctionButton',
successCallback: () => {
$('#auctionButton').hide()
}
});
postData('chara/auction/list', [chara.Id]).then((d)=>{
loadUserAuctions(d);
$('#auctionButton2').on('click', () => {
openAuctionDialog(chara, d);
});
});
});
}
function cancelAuction(chara){
let message = '确定取消竞拍?';
let Day = new Date().getDay();
if(Day == 6) message = '周六取消竞拍将收取20%税,确定取消竞拍?';
if (!confirm(message)) return;
$("#TB_window .loading").show();
$('#TB_window .label').hide();
$("#TB_window .desc").hide();
$("#TB_window .trade").hide();
getData(`chara/user/auction/1/100`).then((d)=>{
let id = 0;
for(let i = 0;i < d.Value.Items.length; i++){
if(chara.Id == d.Value.Items[i].CharacterId){
id = d.Value.Items[i].Id;
break;
}
}
if(id){
postData(`chara/auction/cancel/${id}`, null).then((d)=>{
$("#TB_window .loading").hide();
$('#TB_window .label').show();
$("#TB_window .desc").show();
$("#TB_window .trade").show();
if (d.State == 0){
$('#TB_window .trade').hide();
$('#TB_window .label').hide();
$('#TB_window .desc').text('取消竞拍成功');
}
else alert(d.Message);
});
}
else{
$("#TB_window .loading").hide();
$('#TB_window .desc').text('未找到竞拍角色');
}
});
}
function bidAuction(chara) {
$("#TB_window .loading").show();
$('#TB_window .label').hide();
$("#TB_window .desc").hide();
$("#TB_window .trade").hide();
let price = $('.trade.auction .price').val();
let amount = $('.trade.auction .amount').val();
postData(`chara/auction/${chara.Id}/${price}/${amount}`, null).then((d)=>{
$("#TB_window .loading").hide();
$('#TB_window .label').show();
$("#TB_window .desc").show();
$("#TB_window .trade").show();
if (d.State == 0) {
let message = d.Value;
$('#TB_window .trade').hide();
$('#TB_window .label').hide();
$('#TB_window .desc').text(message);
} else {
alert(d.Message);
}
});
}
function openAuctionDialog(chara, auction) {
let auction_num = chara.State;
if(settings.auction_num == 'one') auction_num = 1;
let price = Math.ceil(chara.Price * 100)/100;
let total = formatNumber(price * chara.State, 2);
let dialog = `
`;
$('body').append(dialog);
$('#TB_closeWindowButton').on('click', closeDialog);
$('.assets_box .auction_tip').remove();
loadUserAuctions(auction);
$('#cancelAuctionButton').on('click', function() {
cancelAuction(chara);
});
$('#bidAuctionButton').on('click', function () {
bidAuction(chara);
});
if(!auction.Value.length){
auction.Value = [{"Price":0, "Amount":0, "Type":0, "State":0}];
}
if(auction.Value[0].Price){
$('.trade.auction .price').val(auction.Value[0].Price);
$('.trade.auction .amount').val(auction.Value[0].Amount);
let total = formatNumber(auction.Value[0].Price * auction.Value[0].Amount, 2);
$("#TB_window .label .total").text(`合计 -₵${total}`);
$('#cancelAuctionButton').show();
}
$('#TB_window .auction input').on('keyup', () => {
let price = $('.trade.auction .price').val();
let amount = $('.trade.auction .amount').val();
let total = formatNumber(price * amount, 2);
$("#TB_window .label .total").text(`合计 -₵${total}`);
});
$('#fullfill_auction').on('click', function() {
let total_auction = chara.State;
let amount = total_auction - auction.Value[0].Type + auction.Value[0].Amount;
let price = Math.ceil(chara.Price * 100)/100;
$('.trade.auction .price').val(price);
$('.trade.auction .amount').val(amount);
$("#TB_window .label .total").text(`合计 -₵${formatNumber(price * amount, 2)}`);
});
$('#change_amount').on('click', function() {
let price = parseFloat($('.trade.auction .price').val());
let total = auction.Value[0].Price * auction.Value[0].Amount;
let amount = Math.ceil(total / price);
$('.trade.auction .amount').val(amount);
$("#TB_window .label .total").text(`合计 -₵${formatNumber(price * amount, 2)}`);
});
$('#change_price').on('click', function() {
let amount = parseInt($('.trade.auction .amount').val());
let total = auction.Value[0].Price * auction.Value[0].Amount;
let price = Math.ceil(total / amount * 100)/100;
$('.trade.auction .price').val(price);
$("#TB_window .label .total").text(`合计 -₵${formatNumber(price * amount, 2)}`);
});
}
function showAuctionHistory(chara){
let button = `
[往期拍卖] `;
$('#auctionHistoryButton').after(button);
$('#auctionHistoryButton').hide();
$('#auctionHistorys').on('click', () => {
openHistoryDialog(chara, 1);
});
}
/*
function openHistoryDialog(chara) {
var dialog = `
上周拍卖结果 - #${chara.Id} 「${chara.Name}」 ₵${formatNumber(chara.Current, 2)} / ${formatNumber(chara.Total, 0)}
X关闭
`;
$('body').append(dialog);
$('body').css('overflow-y', 'hidden');
getData(`chara/auction/list/${chara.Id}/1`, (d => {
$('#auctionHistoryDialog .loading').hide();
if (d.State == 0 && d.Value.length > 0) {
var success = 0;
var total = 0;
d.Value.forEach((a) => {
var state = "even";
var name = "失败";
if (a.State == 1) {
success++;
total += a.Amount;
state = "raise";
name = "成功";
}
var record = `
${formatDate(a.Bid)}
${a.Nickname}
₵${formatNumber(a.Price, 2)} / ${formatNumber(a.Amount, 0)}
${name}
`;
$('#auctionHistoryDialog .result').append(record);
});
$('#auctionHistoryDialog .desc').text(`共有${d.Value.length}人参与拍卖,成功${success}人 / ${total}股`);
$('#auctionHistoryDialog .result').show();
} else {
$('#auctionHistoryDialog .desc').text('暂无拍卖数据');
}
$('#auctionHistoryDialog .desc').show();
centerDialog('#auctionHistoryDialog .new_dialog');
}));
centerDialog('#auctionHistoryDialog .new_dialog');
addCloseDialog('#auctionHistoryDialog');
}*/
function openHistoryDialog(chara, page) {
let dialog = `
上${page}周拍卖结果 - #${chara.Id} 「${chara.Name}」 ₵${formatNumber(chara.Current, 2)} / ${formatNumber(chara.Total, 0)}
X关闭
`;
$('body').append(dialog);
$('#TB_closeWindowButton').on('click', closeDialog);
$('#TB_overlay').on('click', closeDialog);
chara_initPrice = JSON.parse(localStorage.getItem('TinyGrail_chara_initPrice')) || {};
const week_ms = 7*24*3600*1000;
let templeWeek = Math.floor((new Date() - new Date('2019/10/05'))/week_ms + 1);
let icoWeek = Math.floor((new Date() - new Date(chara_initPrice[chara.Id].time))/week_ms + 1);
let week = Math.min(templeWeek, icoWeek);
getData(`chara/auction/list/${chara.Id}/${page}`).then((d)=>{
$('#TB_window .loading').hide();
if (d.State == 0 && d.Value.length > 0) {
let success = 0;
let total = 0;
d.Value.forEach((a) => {
let state = "even";
let name = "失败";
if (a.State == 1) {
success++;
total += a.Amount;
state = "raise";
name = "成功";
}
let record =`
${formatDate(a.Bid)}
${a.Nickname}
₵${formatNumber(a.Price, 2)} / ${formatNumber(a.Amount, 0)}
${name} `;
$('#TB_window .result').append(record);
});
$('#TB_window .desc').text(`共有${d.Value.length}人参与拍卖,成功${success}人 / ${total}股`);
$('#TB_window .result').show();
} else {
$('#TB_window .desc').text('暂无拍卖数据');
}
$('#TB_window .desc').show();
if(page > 1) $('#nextweek').show();
if(page < week) $('#lastweek').show();
$('#nextweek').on('click', () => {
page--;
closeDialog();
openHistoryDialog(chara, page);
});
$('#lastweek').on('click', () => {
page++;
closeDialog();
openHistoryDialog(chara, page);
});
});
}
function showTradeHistory(chara){
$('#kChartButton').after('
[交易记录] ');
$('#tradeHistoryButton').on('click', () => {
openTradeHistoryDialog(chara);
});
}
function openTradeHistoryDialog(chara) {
var dialog = `
交易历史记录 - #${chara.Id} 「${chara.Name}」 ₵${formatNumber(chara.Current, 2)} / ${formatNumber(chara.Total, 0)}
X关闭
`;
$('body').append(dialog);
$('#TB_closeWindowButton').on('click', closeDialog);
$('#TB_overlay').on('click', closeDialog);
let tradeHistory, totalPages;
getData(`chara/charts/${chara.Id}/2019-08-08`).then((d)=>{
if(d.State == 0){
tradeHistory = d.Value.reverse();
totalPages = Math.ceil(d.Value.length / 50);
loadTradeHistory(1);
}
});
function loadTradeHistory(page) {
$(`#TB_window .loading`).hide();
$(`#TB_window .result`).show();
$(`#TB_window .result`).html('');
let records = tradeHistory.slice(50*(page-1),50*page);
if(records.length){
for(let i = 0; i < records.length; i++){
var record = `
${formatDate(records[i].Time)}
₵${formatNumber((records[i].Price/records[i].Amount), 2)}
${formatNumber(records[i].Amount, 0)}
₵${formatNumber(records[i].Price, 2)}
`;
$(`#TB_window .result`).append(record);
}
$(`#TB_window .desc`).html('');
$(`#TB_window .desc`).text(`共有${tradeHistory.length}条记录,当前 ${page} / ${totalPages} 页`);
for (let i = 1; i <= totalPages; i++) {
let pager = `
[${i}] `;
$(`#TB_window .desc`).append(pager);
}
$(`#TB_window .desc .page`).on('click', (e) => {
let page = $(e.target).data('page');
loadTradeHistory(page);
})
$(`#TB_window .result`).show();
} else {
$(`#TB_window .desc`).text('暂无交易记录');
}
$(`#TB_window .desc`).show();
}
}
function getShareBonus() {
let asiaTime = new Date().toLocaleString("en-US", {timeZone: "Asia/Shanghai"});
asiaTime = new Date(asiaTime)
let Day = asiaTime.getDay();
if(Day == 6){
getData('event/share/bonus/check').then((d)=>{
if (d.State === 0) {
getWeeklyShareBonus();
}
});
}
}
function hideBonusButton() {
if(!$('#bonusButton').length) return;
getData('event/share/bonus/test').then((d)=>{
let x = d.Value.Share / 10000;
let allowance = Math.log10(x + 1)*30 - x;
if(d.State == 0 && allowance < 0 ) $('#bonusButton').remove();
//else $('#shareBonusButton').hide();
});
}
function showHideGrailBox() {
let config = settings.hide_grail;
if(config=='on'){
$('#grail').hide();
setTimeout(()=>{$('#pager1').hide();},500);
}
}
function showTopWeek() {
getData(`chara/topweek`).then((d)=>{
let totalExtra = 0, totalPeople = 0;
for(let i = 0; i < d.Value.length; i++){
totalExtra += d.Value[i].Extra;
totalPeople += d.Value[i].Type;
}
console.log(totalExtra+'/'+totalPeople+'='+totalExtra / totalPeople);
$('#topWeek .auction_button').hide();
let charas = {};
for(let i=0; i
${d.Value[i].Type} / ${d.Value[i].Assets} / ${d.Value[i].Sacrifices} `);
$($(`#topWeek .assets .item`)[i]).append(auction_button);
let chara= {"Id":d.Value[i].CharacterId, "Name":d.Value[i].CharacterName, "Price":d.Value[i].Price, "State":d.Value[i].Sacrifices, "Total":0};
auction_button.on('click', () => {
postData('chara/auction/list', [charaId]).then((d)=>{
openAuctionDialog(chara, d);
});
});
}
});
}
function add_chara_info() {
try{
let charaId = $('#grailBox .title .name a')[0].href.split('/').pop();
followChara(charaId); //关注角色
followAuctions(charaId); //关注竞拍情况
showInitialPrice(charaId); //显示发行价
priceWarning(); //买入价格过高提醒
mergeorderListHistory(charaId); //合并同一时间订单历史记录
launchObserver({
parentNode: document.body,
selector: '#lastTemples .item',
successCallback: () => {
showOwnTemple(); //显示自己的圣殿
changeTempleCover(charaId); //修改他人圣殿封面
},
});
launchObserver({
parentNode: document.body,
selector: '#lastLinks .link.item',
successCallback: () => {
showOwnLink(); //前置自己的连接
changeLinkPos('#lastLinks'); // 修改连接顺序
},
});
showGallery(); //查看画廊
getData(`chara/${charaId}`).then((d)=>{
let chara = d.Value;
showAuctionHistory(chara); //历史拍卖
showTradeHistory(chara); //交易记录
showPrice(chara); //显示评估价
showTempleRate(chara); //显示各级圣殿数量及股息计算值
setBuildTemple(chara); //自动建塔
fixAuctions(chara); //修改默认拍卖底价和数量
});
} catch (e) {};
}
function add_ico_info() {
let charaId = location.pathname.split('/').pop();
followChara(charaId); //关注角色
getData(`chara/${charaId}`).then((d)=>{
let chara = d.Value;
showEndTime(chara); //显示结束时间
setBuildTemple(chara); //自动建塔
setFullFillICO(chara); //自动补款
});
}
function launchObserver({
parentNode,
selector,
failCallback = null,
successCallback = null,
stopWhenSuccess = true,
config = {'childList': true, 'subtree': true},
}) {
// if parent node does not exist, return
if(!parentNode) return;
const observeFunc = mutationList => {
if(!document.querySelector(selector)) {
if(failCallback) failCallback();
return;
}
if(stopWhenSuccess) observer.disconnect();
if(successCallback) successCallback();
}
let observer = new MutationObserver(observeFunc);
observer.observe(parentNode, config);
}
function addExpandButton() {
if ($('.assets_box .desc .link_count').text().startsWith('固定资产')) {
let expandButton = '