관리 메뉴

Acxien

[ 로스트아크 ] 로아 지금까지 지른 금액 확인하는 방법 본문

게임/로스트아크

[ 로스트아크 ] 로아 지금까지 지른 금액 확인하는 방법

Acxien 2021. 12. 12. 18:18
반응형

해당 게시글은 게시자가 정보 보관을 하기 위해 작성함

 

 

 

로아 공홈에서 로그인 후 F12 콘솔 탭에 붙여넣기 후 엔터

패치가 된 건지 확인은 이제 1년치 밖에 안된다.

해서 밑에 음영처리한 부분을 수정해서 확인하면 된다..

 


var lastNum = 1;
var sum = 0;
var regexp = /\B(?=(\d{3})+(?!\d))/g;
var cashList=[];
$.ajax({
            url: '/Cash/GetChargeList',
            type: 'GET',
            data: { Page: 1, StartDate: '1990.01.01', EndDate: '2100.12.31'},
            dataType: 'html',
            async: false,
            success: function (data) {
var pageNum = $(data).find(".pagination__last")[0].getAttribute("onClick");
                if(pageNum != null){
                    lastNum = pageNum.replace(/[^0-9]/g,"");
                }
            },
            error: function (xhr, status, error) {
                ajaxErrorHandler(xhr, status, error);
                return;
            }
        });
for(var i=1;i<=lastNum;i++){
    $.ajax({
            url: '/Cash/GetChargeList',
            type: 'GET',
            data: { Page: i, StartDate: '1990.01.01', EndDate: '2100.12.31'},
            dataType: 'html',
            async: false,
            success: function (data) {
$(data).find("td.list__price").each(function(){ 
var $cash = $(this)
cashList.push($cash.text().replace(/[^0-9]/g,""))
});
            },
            error: function (xhr, status, error) {
                ajaxErrorHandler(xhr, status, error);
                return;
            }
        });
}

cashList.forEach(function(cash){
    sum += Number(cash);
});

sum = sum.toString().replace(regexp, ',');

alert("현재까지 "+sum+"원 사용하셨습니다");

 


 

사용 금액과 기타 패키지 등, 여러 내역까지 볼 수 있는 코드.

너무 길어서 접은 글에 넣어둠 ( 변함 없이 일자 수정은 음영 )

 

더보기

const Categories = Object.freeze({

  REINFORCE: { name: '강화재료', dic: ['T3', '돌파', '실링', '금화', '결정', '파편', '융화'] },

  CARD: { name: '카드패키지', dic: ['카드', '설맞이 복주머니'] },

  JUMPING: {

    name: '점핑/슬롯확장권',

    dic: ['베른 패스', '로헨델 패스', '욘 패스', '페이튼 패스', '파푸니카 패스', '슬롯 확장권'],

  },

  BLESSING: {

    name: '축복(베아,니나브)',

    dic: ['니나브의 축복', '베아트리스의 축복'],

  },

  CONSUABLE: { name: '배틀아이템', dic: ['배틀 아이템 상자', '레이드 지원', '전투 지원'] },

  LUCKY: { name: '럭키박스/옷감', dic: ['옷감', '럭키 박스'] },

  ARKPASS: { name: '아크패스', dic: ['아크 패스'] },

  AVATAR: {

    name: '아바타/펫/탈것',

    dic: ['아바타', '무기', '펫', '탈 것', '- 스페셜', '염색'],

  },

  CRYSTAL: {

    name: '크리스탈',

    dic: ['크리스탈', '아이템 레벨 달성', '아이템 레벨 성장', '클리어팩', '성장 패키지 - '],

  },

  EXCHANGE: { name: '화폐거래소', dic: [] },

  ETC: { name: '기타(드레스룸, 미분류 패키지 등)', dic: [] },

});



function getCategory(title) {

  let category = Categories.ETC.name;

  for (const value of Object.values(Categories)) {

    const isInclude = value.dic.some((word) => title.includes(word));

    if (isInclude) {

      category = value.name;

      break;

    }

  }

  return category;

}



function numberFormat(num) {

  const regexp = /\B(?=(\d{3})+(?!\d))/g;

  return num.toString().replace(regexp, ',');

}



let purchaseSum = 0;

let purchaseLastNum = 1;

let purchaseList = [];

$.ajax({

  url: '/Cash/GetPurchaseList',

  type: 'GET',

  data: { Page: 1, StartDate: '2021.08.01', EndDate: '2022.7.31' },

  dataType: 'html',

  async: false,

  success: function (data) {

    let pageNum = $(data).find('.pagination__last')[0].getAttribute('onClick');

    if (pageNum != null) {

      purchaseLastNum = pageNum.replace(/[^0-9]/g, '');

      console.log(`캐시 아이템 ${purchaseLastNum} 페이지 존재`);

    }

  },

  error: function (xhr, status, error) {

    ajaxErrorHandler(xhr, status, error);

    return;

  },

});



for (let i = 1; i <= purchaseLastNum; i++) {

  $.ajax({

    url: '/Cash/GetPurchaseList',

    type: 'GET',

    data: { Page: i, StartDate: '2021.08.01', EndDate: '2022.7.31' },

    dataType: 'html',

    async: false,

    success: function (data) {

      let $items = $(data).find('tr');

      for (let i = 0; i < $items.length; i++) {

        let $item = $($items[i]);

        let $cash = $($item.find('td.list__price')[0]);

        let $itemName = $($item.find('span.list__buy-name')[0]);

        if ($itemName.text() != '') {

          purchaseList.push({

            cash: $cash.text().replace(/[^0-9]/g, ''),

            name: $itemName.text(),

          });

        }

      }

    },

    error: function (xhr, status, error) {

      ajaxErrorHandler(xhr, status, error);

      return;

    },

  });

}



let table = {};

purchaseList.forEach(function (item) {

  let cash = parseInt(item.cash);

  if (cash == 0) return;



  purchaseSum += cash;

  if (item.name in table) {

    table[item.name] += cash;

  } else {

    table[item.name] = cash;

  }

});



let etcList = [];

let categoryTable = {};

for (const [key, value] of Object.entries(table)) {

  const category = getCategory(key);

  if (category == Categories.ETC.name) {

    etcList.push({ name: key, sum: value });

  }

  if (category in categoryTable) {

    categoryTable[category] += value;

  } else {

    categoryTable[category] = value;

  }

}



let marketSum = 0;

let marketLastNum = 1;

let marketList = [];

$.ajax({

  url: '/Cash/GetMarketList',

  type: 'GET',

  data: { Page: 1, StartDate: '2021.08.01', EndDate: '2022.7.31' },

  dataType: 'html',

  async: false,

  success: function (data) {

    let pageNum = $(data).find('.pagination__last')[0].getAttribute('onClick');

    if (pageNum != null) {

      marketLastNum = pageNum.replace(/[^0-9]/g, '');

      console.log(`화폐 거래소 ${marketLastNum} 페이지 존재`);

    }

  },

  error: function (xhr, status, error) {

    ajaxErrorHandler(xhr, status, error);

    return;

  },

});



for (let i = 1; i <= marketLastNum; i++) {

  $.ajax({

    url: '/Cash/GetMarketList',

    type: 'GET',

    data: { Page: i, StartDate: '2021.08.01', EndDate: '2022.7.31' },

    dataType: 'html',

    async: false,

    success: function (data) {

      let $items = $(data).find('tr');

      for (let i = 0; i < $items.length; i++) {

        let $item = $($items[i]);

        let $cash = $($item.find('td.list__exchange')[0]);

        marketList.push($cash.text().replace(/[^0-9]/g, ''));

      }

    },

    error: function (xhr, status, error) {

      ajaxErrorHandler(xhr, status, error);

      return;

    },

  });

}



marketList.forEach(function (value) {

  if (value != '') {

    marketSum += parseInt(value);

  }

});

categoryTable[Categories.EXCHANGE.name] = marketSum;



let itemsHTML = '';

for (const [key, value] of Object.entries(categoryTable)) {

  itemsHTML += `<li>${key}: ${numberFormat(value)}원</li>`;

}



let etcItemsHTML = '';

etcList.forEach(function (item) {

  etcItemsHTML += `<li>${item.name}: ${numberFormat(item.sum)}원</li>`;

});



document.children[0].innerHTML = `<!DOCTYPE html><html lang="ko"><head><title>충전한 캐시는 어디로 갔을까?</title></head><body><h1>충전한 캐시는 어디로 갔을까? (총 ${numberFormat(

  purchaseSum + marketSum,

)}원)</h1><ul>${itemsHTML}</ul><br><h3>기타에 포함된 내역</h3><ul>${etcItemsHTML}</ul></body></html>`;

 

 

 

 

반응형
Comments