// ==UserScript==
// @name Alienware Arena Giveaway Keys Checker
// @name:ja Alienware Arena ギブアウェイキー チェッカー
// @name:zh-CN Alienware Arena 赠品密钥检查器
// @name:zh-TW Alienware Arena 贈品密鑰檢查器
// @license GPL-3.0
// @namespace https://twitch.tv/kikka1225
// @version 1.9.3
// @description Generate a button in the top left corner of the page to check the available country and remaining keys.
// @description:ja ページの左上に、利用可能な国と残りのキーを確認するためのボタンを生成します。
// @description:zh-CN 在页面左上角生成一个按钮,用于检查可用的国家/地区和剩余密钥。
// @description:zh-TW 在頁面左上角產生一個按鈕,以查看可用的國家/地區和剩餘的密鑰。
// @author Saulios & Misha
// @match *://*.alienwarearena.com/ucf/show/*/Giveaway/*
// @match *://*.alienwarearena.com/ucf/Giveaway
// @icon data:image/webp;base64,UklGRmQEAABXRUJQVlA4IFgEAAAQFgCdASpaAFoAPm0ylkekIqIspHZrmZANiWQAv2xWECfK/kz+QHYQdI+Fej7tHnS+KX0ivMB5zvSAf0n/M9ZL6AHSsft56QDyNDWoZ2ZX44vpL2DP1o6ID2VSftZa4e9NF9BFIYpv7LM/gdaKHEIXpwhQxskxDiNaqk+1LrzGK+JK5ODt6WEJK6iiMBCTDygJsQtOBAsNO9+0UgbiNCKwer1RWr/7G1JQmreJlJNdg5hiI3VW8HKeAAD+ubJ7JuE2f/UGFOZFFj//EMShCERN2Z28b8ofZ34CKzIJVgbOrRmLp//nHpHjhAmBAOnVDZ/yfRD/t1ZwzDerm+r1RPkQzXNnXBMwt64Q5Mjz4GVcZF8be2A3gc7WOmZkJDRdSgMHAJ1L1VHBWKupG1uH+biA7g9nrXu2jd9JPF1FRShz46dXB13FQtcs4RRePGaU0vgJC/D/o252tWPE2S1F0GI6Ux7dr4XkSLrHoGOxei0zWMBXDfheSpB01f5xge2fTdEl/0TveavbTUnsSxXzLLIMB2Hwd7P+LDTab/XdufQKdkUJn2sLhIHddWgxpt1gDbAQ8bXm/ZlQiAsAc/OWkj2SfzhL+4zogOIcbrEr2LVGPgYsnPSupzIF3N4MNujbvGAq6/LgG6Dh+6voPM0cD/8ci/38Hw9IY0/eC8h3XfWm9xgmBYoiWuzQ2Pt1/pEJnLxEqUupdPWTlOG9wyZ4rSWhHM1l6eOcEUG7FxO7MVsTWzcfH6EdeNiy8Rk/S/DbdTa/CHJqTKlPdxNvI1XBTs7j4ArulK0CUPuLl8ospJ2Xr/TCfbzPXdF68QtYheYsLtSQTNNWgMq4dm6w4VBFM+j0BppbmsH/X8aN184PTe2c5OnqYmyoxeqS4MD5LVfss0k93wN6VIQ/s5hzCcdj+NDvZB/6MCkcyAwz6awMBNGyfz7UVxOv5IWB4i4/aj5VTxMMCX++8kcFOv0eP0X25jTTfm0beAlqkjxcVsxc5a7GuCPMWut6Wz9jqk0i9/zn5/sRBaZeXNV6I6Z7DDjKR+p4+5t/6iz9Rd3J7vztncuRkjledVSnUI5XJcGvT2U0p+Zm2NEzdFn3BQNtENIbgYnLeQu/vKqX8nuQoP8rQODSopxfiocdfFLKgy/97ykCNM7HyYdmGvThhBDR68JutTs1h3K+6qIyKtAxGQMCAwom+HmzAKr6ooYdi80m69kp85TP6tnLTnyDw+mqnIRWDwSs5axLCJLt/rr3/lcRw1mjFC2BwMya4+IJKWeNQk8P9FE8IL48RP/iwN1nF+v9De7fyf+hnje4cwq/L/zkw4vY0WlfZC36ofPLm9+qChJfiTbzrU+KbTHqYFRGQAHxLRT59CURVc0dRaw1zw+KpcVLk01/jz70wZ6a0V4v8YPOUKRDF9s5l0HD36/kyHYojf2KrN++/qgF3wdSp4WUojZOFTqOdxXThPjKAPOqPH6IcJR0WOf2+bAAAA==
// @grant none
// @run-at document-idle
// @supportURL https://github.com/Mishasama/UserScript/issues
// @homepageURL https://github.com/Mishasama/UserScript/tree/master/Misha's%20US/AWA%20GA%20Keys%20Checker/
// @contributionURL https://ko-fi.com/mishasama
// @contributionAmount 1¥
// @compatible Chrome
// @compatible Edge
// @compatible Firefox
// ==/UserScript==
(function() {
'use strict';
// ボタンのテキストを設定する関数
function getButtonText() {
const lang = navigator.language || navigator.userLanguage;
switch (lang) {
case 'ja':
return '残りのキーを確認';
case 'zh-CN':
return '检查剩余密钥';
case 'zh-TW':
return '檢查剩餘密鑰';
default:
return 'Check Keys';
}
}
// メッセージのテキストを設定する関数
function getMessageText(type) {
const lang = navigator.language || navigator.userLanguage;
const messages = {
'withKeys': {
'ja': 'キーがある国:',
'zh-CN': '有密钥的国家:',
'zh-TW': '有密鑰的國家:',
'en': 'Countries with keys:'
},
'withoutKeys': {
'ja': 'キーがない国:',
'zh-CN': '没有密钥的国家:',
'zh-TW': '沒有密鑰的國家:',
'en': 'Countries without keys:'
},
'allOut': {
'ja': 'すべて終了!このギブアウェイにはもうキーが残っていません!',
'zh-CN': '全部派完了!本次赠送活动中的密钥被抢光了!',
'zh-TW': '全部發完了!本次贈送活動中的密鑰壹個都不剩了!',
'en': 'All out! There are no more keys left in this giveaway!'
},
'everyCountry': {
'ja': 'すべての国にキーがあります!',
'zh-CN': '所有的国家都有密钥!',
'zh-TW': '每個國家都有密鑰!',
'en': 'Every country has keys available!'
},
'keyAvailability': {
'ja': 'キー在庫状況:',
'zh-CN': '密钥库存情况:',
'zh-TW': '密鑰庫存狀況:',
'en': 'Key Availability:'
}
};
return messages[type][lang] || messages[type]['en'];
}
// ボタンを作成してスタイルを設定
const button = document.createElement('button');
button.textContent = getButtonText();
button.style.position = 'fixed';
button.style.top = '100px';
button.style.left = '100px';
button.style.padding = '10px 20px';
button.style.backgroundColor = '#007bff';
button.style.color = '#fff';
button.style.border = 'none';
button.style.borderRadius = '5px';
button.style.cursor = 'pointer';
button.style.zIndex = '1000';
button.style.whiteSpace = 'pre-wrap'; // 多行表示のサポート
// 閉じるボタンを作成してスタイルを設定
const closeButton = document.createElement('button');
closeButton.textContent = '×';
closeButton.style.position = 'fixed';
closeButton.style.top = '100px';
closeButton.style.left = `calc(${button.style.left} - 30px)`; // メインボタンの左側
closeButton.style.padding = '10px';
closeButton.style.backgroundColor = '#dc3545';
closeButton.style.color = '#fff';
closeButton.style.border = 'none';
closeButton.style.borderRadius = '5px';
closeButton.style.cursor = 'pointer';
closeButton.style.zIndex = '1000';
// ボタンをクリックしたときに実行する関数
let originalText = getButtonText();
button.onclick = function() {
if (button.textContent === originalText) {
var country_with_keys = [];
var country_without_keys = [];
var countries = new function () {
var list = [{
code: "AF",
name: "Afghanistan"}, {
code: "AX",
name: "Aland Islands"}, {
code: "AL",
name: "Albania"}, {
code: "DZ",
name: "Algeria"}, {
code: "AS",
name: "American Samoa"}, {
code: "AD",
name: "Andorra"}, {
code: "AO",
name: "Angola"}, {
code: "AI",
name: "Anguilla"}, {
code: "AQ",
name: "Antarctica"}, {
code: "AG",
name: "Antigua and Barbuda"}, {
code: "AR",
name: "Argentina"}, {
code: "AM",
name: "Armenia"}, {
code: "AW",
name: "Aruba"}, {
code: "AU",
name: "Australia"}, {
code: "AT",
name: "Austria"}, {
code: "AZ",
name: "Azerbaijan"}, {
code: "BS",
name: "Bahamas"}, {
code: "BH",
name: "Bahrain"}, {
code: "BD",
name: "Bangladesh"}, {
code: "BB",
name: "Barbados"}, {
code: "BY",
name: "Belarus"}, {
code: "BE",
name: "Belgium"}, {
code: "BZ",
name: "Belize"}, {
code: "BJ",
name: "Benin"}, {
code: "BM",
name: "Bermuda"}, {
code: "BT",
name: "Bhutan"}, {
code: "BO",
name: "Bolivia"}, {
code: "BQ",
name: "Bonaire, Sint Eustatius and Saba"}, {
code: "BA",
name: "Bosnia and Herzegovina"}, {
code: "BW",
name: "Botswana"}, {
code: "BV",
name: "Bouvet Island"}, {
code: "BR",
name: "Brazil"}, {
code: "IO",
name: "British Indian Ocean Territory"}, {
code: "BN",
name: "Brunei Darussalam"}, {
code: "BG",
name: "Bulgaria"}, {
code: "BF",
name: "Burkina Faso"}, {
code: "BI",
name: "Burundi"}, {
code: "CV",
name: "Cabo Verde"}, {
code: "KH",
name: "Cambodia"}, {
code: "CM",
name: "Cameroon"}, {
code: "CA",
name: "Canada"}, {
code: "KY",
name: "Cayman Islands"}, {
code: "CF",
name: "Central African Republic"}, {
code: "TD",
name: "Chad"}, {
code: "CL",
name: "Chile"}, {
code: "CN",
name: "China"}, {
code: "CX",
name: "Christmas Island"}, {
code: "CC",
name: "Cocos (Keeling) Islands"}, {
code: "CO",
name: "Colombia"}, {
code: "KM",
name: "Comoros"}, {
code: "CG",
name: "Congo"}, {
code: "CD",
name: "Congo"}, {
code: "CK",
name: "Cook Islands"}, {
code: "CR",
name: "Costa Rica"}, {
code: "CI",
name: "Côte d\"Ivoire"}, {
code: "HR",
name: "Croatia"}, {
code: "CU",
name: "Cuba"}, {
code: "CW",
name: "Curaçao"}, {
code: "CY",
name: "Cyprus"}, {
code: "CZ",
name: "Czech Republic"}, {
code: "DK",
name: "Denmark"}, {
code: "DJ",
name: "Djibouti"}, {
code: "DM",
name: "Dominica"}, {
code: "DO",
name: "Dominican Republic"}, {
code: "EC",
name: "Ecuador"}, {
code: "EG",
name: "Egypt"}, {
code: "SV",
name: "El Salvador"}, {
code: "GQ",
name: "Equatorial Guinea"}, {
code: "ER",
name: "Eritrea"}, {
code: "EE",
name: "Estonia"}, {
code: "ET",
name: "Ethiopia"}, {
code: "FK",
name: "Falkland Islands"}, {
code: "FO",
name: "Faroe Islands"}, {
code: "FJ",
name: "Fiji"}, {
code: "FI",
name: "Finland"}, {
code: "FR",
name: "France"}, {
code: "GF",
name: "French Guiana"}, {
code: "PF",
name: "French Polynesia"}, {
code: "TF",
name: "French Southern Territories"}, {
code: "GA",
name: "Gabon"}, {
code: "GM",
name: "Gambia"}, {
code: "GE",
name: "Georgia"}, {
code: "DE",
name: "Germany"}, {
code: "GH",
name: "Ghana"}, {
code: "GI",
name: "Gibraltar"}, {
code: "GR",
name: "Greece"}, {
code: "GL",
name: "Greenland"}, {
code: "GD",
name: "Grenada"}, {
code: "GP",
name: "Guadeloupe"}, {
code: "GU",
name: "Guam"}, {
code: "GT",
name: "Guatemala"}, {
code: "GG",
name: "Guernsey"}, {
code: "GN",
name: "Guinea"}, {
code: "GW",
name: "Guinea-Bissau"}, {
code: "GY",
name: "Guyana"}, {
code: "HT",
name: "Haiti"}, {
code: "HM",
name: "Heard Island and McDonald Islands"}, {
code: "VA",
name: "Holy See"}, {
code: "HN",
name: "Honduras"}, {
code: "HK",
name: "Hong Kong"}, {
code: "HU",
name: "Hungary"}, {
code: "IS",
name: "Iceland"}, {
code: "IN",
name: "India"}, {
code: "ID",
name: "Indonesia"}, {
code: "IR",
name: "Iran"}, {
code: "IQ",
name: "Iraq"}, {
code: "IE",
name: "Ireland"}, {
code: "IM",
name: "Isle of Man"}, {
code: "IL",
name: "Israel"}, {
code: "IT",
name: "Italy"}, {
code: "JM",
name: "Jamaica"}, {
code: "JP",
name: "Japan"}, {
code: "JE",
name: "Jersey"}, {
code: "JO",
name: "Jordan"}, {
code: "KZ",
name: "Kazakhstan"}, {
code: "KE",
name: "Kenya"}, {
code: "KI",
name: "Kiribati"}, {
code: "KP",
name: "Korea"}, {
code: "KR",
name: "Korea"}, {
code: "KW",
name: "Kuwait"}, {
code: "KG",
name: "Kyrgyzstan"}, {
code: "LA",
name: "Lao"}, {
code: "LV",
name: "Latvia"}, {
code: "LB",
name: "Lebanon"}, {
code: "LS",
name: "Lesotho"}, {
code: "LR",
name: "Liberia"}, {
code: "LY",
name: "Libya"}, {
code: "LI",
name: "Liechtenstein"}, {
code: "LT",
name: "Lithuania"}, {
code: "LU",
name: "Luxembourg"}, {
code: "MO",
name: "Macao"}, {
code: "MK",
name: "Macedonia"}, {
code: "MG",
name: "Madagascar"}, {
code: "MW",
name: "Malawi"}, {
code: "MY",
name: "Malaysia"}, {
code: "MV",
name: "Maldives"}, {
code: "ML",
name: "Mali"}, {
code: "MT",
name: "Malta"}, {
code: "MH",
name: "Marshall Islands"}, {
code: "MQ",
name: "Martinique"}, {
code: "MR",
name: "Mauritania"}, {
code: "MU",
name: "Mauritius"}, {
code: "YT",
name: "Mayotte"}, {
code: "MX",
name: "Mexico"}, {
code: "FM",
name: "Micronesia"}, {
code: "MD",
name: "Moldova"}, {
code: "MC",
name: "Monaco"}, {
code: "MN",
name: "Mongolia"}, {
code: "ME",
name: "Montenegro"}, {
code: "MS",
name: "Montserrat"}, {
code: "MA",
name: "Morocco"}, {
code: "MZ",
name: "Mozambique"}, {
code: "MM",
name: "Myanmar"}, {
code: "NA",
name: "Namibia"}, {
code: "NR",
name: "Nauru"}, {
code: "NP",
name: "Nepal"}, {
code: "NL",
name: "Netherlands"}, {
code: "NC",
name: "New Caledonia"}, {
code: "NZ",
name: "New Zealand"}, {
code: "NI",
name: "Nicaragua"}, {
code: "NE",
name: "Niger"}, {
code: "NG",
name: "Nigeria"}, {
code: "NU",
name: "Niue"}, {
code: "NF",
name: "Norfolk Island"}, {
code: "MP",
name: "Northern Mariana Islands"}, {
code: "NO",
name: "Norway"}, {
code: "OM",
name: "Oman"}, {
code: "PK",
name: "Pakistan"}, {
code: "PW",
name: "Palau"}, {
code: "PS",
name: "Palestine"}, {
code: "PA",
name: "Panama"}, {
code: "PG",
name: "Papua New Guinea"}, {
code: "PY",
name: "Paraguay"}, {
code: "PE",
name: "Peru"}, {
code: "PH",
name: "Philippines"}, {
code: "PN",
name: "Pitcairn"}, {
code: "PL",
name: "Poland"}, {
code: "PT",
name: "Portugal"}, {
code: "PR",
name: "Puerto Rico"}, {
code: "QA",
name: "Qatar"}, {
code: "RE",
name: "Réunion"}, {
code: "RO",
name: "Romania"}, {
code: "RU",
name: "Russia"}, {
code: "RW",
name: "Rwanda"}, {
code: "BL",
name: "Saint Barthélemy"}, {
code: "SH",
name: "Saint Helena, Ascension and Tristan da Cunha"}, {
code: "KN",
name: "Saint Kitts and Nevis"}, {
code: "LC",
name: "Saint Lucia"}, {
code: "MF",
name: "Saint Martin"}, {
code: "PM",
name: "Saint Pierre and Miquelon"}, {
code: "VC",
name: "Saint Vincent and the Grenadines"}, {
code: "WS",
name: "Samoa"}, {
code: "SM",
name: "San Marino"}, {
code: "ST",
name: "Sao Tome and Principe"}, {
code: "SA",
name: "Saudi Arabia"}, {
code: "SN",
name: "Senegal"}, {
code: "RS",
name: "Serbia"}, {
code: "SC",
name: "Seychelles"}, {
code: "SL",
name: "Sierra Leone"}, {
code: "SG",
name: "Singapore"}, {
code: "SX",
name: "Sint Maarten"}, {
code: "SK",
name: "Slovakia"}, {
code: "SI",
name: "Slovenia"}, {
code: "SB",
name: "Solomon Islands"}, {
code: "SO",
name: "Somalia"}, {
code: "ZA",
name: "South Africa"}, {
code: "GS",
name: "South Georgia and the South Sandwich Islands"}, {
code: "SS",
name: "South Sudan"}, {
code: "ES",
name: "Spain"}, {
code: "LK",
name: "Sri Lanka"}, {
code: "SD",
name: "Sudan"}, {
code: "SR",
name: "Suriname"}, {
code: "SJ",
name: "Svalbard and Jan Mayen"}, {
code: "SZ",
name: "Swaziland"}, {
code: "SE",
name: "Sweden"}, {
code: "CH",
name: "Switzerland"}, {
code: "SY",
name: "Syrian Arab Republic"}, {
code: "TW",
name: "Taiwan"}, {
code: "TJ",
name: "Tajikistan"}, {
code: "TZ",
name: "Tanzania"}, {
code: "TH",
name: "Thailand"}, {
code: "TL",
name: "Timor-Leste"}, {
code: "TG",
name: "Togo"}, {
code: "TK",
name: "Tokelau"}, {
code: "TO",
name: "Tonga"}, {
code: "TT",
name: "Trinidad and Tobago"}, {
code: "TN",
name: "Tunisia"}, {
code: "TR",
name: "Turkey"}, {
code: "TM",
name: "Turkmenistan"}, {
code: "TC",
name: "Turks and Caicos Islands"}, {
code: "TV",
name: "Tuvalu"}, {
code: "UG",
name: "Uganda"}, {
code: "UA",
name: "Ukraine"}, {
code: "AE",
name: "United Arab Emirates"}, {
code: "GB",
name: "United Kingdom"}, {
code: "US",
name: "United States of America"}, {
code: "UM",
name: "United States Minor Outlying Islands"}, {
code: "UY",
name: "Uruguay"}, {
code: "UZ",
name: "Uzbekistan"}, {
code: "VU",
name: "Vanuatu"}, {
code: "VE",
name: "Venezuela"}, {
code: "VN",
name: "Vietnam"}, {
code: "VG",
name: "Virgin Islands (British)"}, {
code: "VI",
name: "Virgin Islands (U.S.)"}, {
code: "WF",
name: "Wallis and Futuna"}, {
code: "EH",
name: "Western Sahara"}, {
code: "YE",
name: "Yemen"}, {
code: "ZM",
name: "Zambia"}, {
code: "ZW",
name: "Zimbabwe"}, {
code: "AN",
name: "Netherlands Antilles"}, {
code: "CS",
name: "Serbia and Montenegro"}, {
code: "AC",
name: "Ascension Island"}, {
code: "CP",
name: "Clipperton Island"}, {
code: "DG",
name: "Diego Garcia"}, {
code: "EA",
name: "Ceuta, Melilla"}, {
code: "EU",
name: "European Union"}, {
code: "IC",
name: "Canary Islands"}, {
code: "TA",
name: "Tristan da Cunha"}, {
code: "QO",
name: "Outlying Oceania"}
];
var codes = {};
for (var i = 0; i < list.length; ++i) {
var entry = list[i];
codes[entry.code] = entry;
}
this.getEntry = function (code) {
return codes[code];
};
};
for (var country in countryKeys) {
var get_country = countries.getEntry(country);
var get_country_name = get_country.name
if (countryKeys[country].length === 0) {
country_without_keys.push(" " + get_country_name);
} else {
country_with_keys.push(" " + get_country_name);
}
};
country_with_keys.sort();
country_without_keys.sort();
if (country_with_keys.length !== 0) {
country_with_keys[0] = country_with_keys[0].split(" ").join("");
}
if (country_without_keys.length !== 0) {
country_without_keys[0] = country_without_keys[0].split(" ").join("");
}
let content = '';
if (country_without_keys.length !== 0 && country_with_keys.length !== 0) {
content += `${getMessageText('withKeys')}\n${country_with_keys.toString()}\n`;
} else if (country_with_keys.length === 0) {
content += `${getMessageText('allOut')}\n`;
button.style.backgroundColor = '#dc3545'; // すべてのキーが配布されると、ボタンは赤色で表示されます。
} else {
content += `${getMessageText('everyCountry')}\n`;
}
for (var country in countryKeys) {
if (countryKeys[country].length === 0) {
continue
};
for (var level in countryKeys[country]) {
content += `${getMessageText('keyAvailability')}\nTier: ${level} - Keys: ${countryKeys[country][level]}\n`;
};
break
};
if (country_without_keys.length !== 0 && country_with_keys.length !== 0) {
content += `${getMessageText('withoutKeys')}\n${country_without_keys.toString()}\n`;
}
button.textContent = content;
if (country_with_keys.length !== 0) {
button.style.backgroundColor = '#28a745'; // 変更後の背景色
}
} else {
button.textContent = originalText;
button.style.backgroundColor = '#007bff'; // 元の背景色
}
};
// 閉じるボタンをクリックしたときに実行する関数
closeButton.onclick = function() {
document.body.removeChild(button);
document.body.removeChild(closeButton);
};
// ボタンをページに追加
document.body.appendChild(button);
document.body.appendChild(closeButton);
})();