Skip to content

Instantly share code, notes, and snippets.

@hot-2130
Last active June 21, 2023 12:13
Show Gist options
  • Select an option

  • Save hot-2130/8d07bb2199574ad14546f5fa047e4c59 to your computer and use it in GitHub Desktop.

Select an option

Save hot-2130/8d07bb2199574ad14546f5fa047e4c59 to your computer and use it in GitHub Desktop.
ブラウザ三国志 自動同盟加入・脱退承認、5禁解除、配下編入自動化ツール
// ==UserScript==
// @name bro3_alliance_member_operation
// @namespace bro3_alliance_member_operation
// @description ブラウザ三国志 自動同盟加入・脱退承認、5禁解除、配下編入自動化ツール byほっと
// @version 1.15
// @include https://*.3gokushi.jp/village.php*
// @include http://*.3gokushi.jp/village.php*
// @include https://*.3gokushi.jp/alliance/*
// @include http://*.3gokushi.jp/alliance/*
// @include https://*.3gokushi.jp/bbs/*
// @include http://*.3gokushi.jp/bbs/*
// @include https://*.3gokushi.jp/card/deck.php*
// @include http://*.3gokushi.jp/card/deck.php*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js
// @require http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js
// @resource jqueryui_css http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css
// ==/UserScript==
// version date author
// 1.1 2018/06/04 greasemonkey4用に再作成開始
// 1.6 2018/06/15 公開開始
// 1.9 2018/08/01 https対応
// 1.10 2018/08/05 プロトコル変更対応
// 1.11 2021/11/06 プロフィール変更に対応
// 1.12 2022/03/14 5禁対応
// 1.13 2022/03/14 配下編入処理プロフィール変更の対応
// 1.15 2023/06/21 プロフィールが取得できなくなっていたので修正
// to do
// 同盟トップページのメニューに「加入脱退設定」が追加されます
// 設定リストに存在する君主名、ユーザIDで処理を実施します
// ======自動加入脱退の仕様======
// ①同盟管理ページに加入(脱退)申請が存在する yes→②へ no→処理終了
// ②盟主名が許可リストに存在する yes→③へ no→処理終了
// ③加入(脱退)許可処理を実施 (書簡の開封処理は行わない)
// ======自動配下編入の仕様======
// ①1ページ目に表示される未開封書簡の件名に「【編入希望】」が含まれている書簡がある yes→②へ no→処理終了
// ②書簡の送信者が編入許可リストに存在する yes→③へ no→処理終了
// ③書簡の送信者が同盟員に存在する yes→書簡開封して処理終了 no→④へ
// ④送信者の親同盟が同盟名と同じ yes→⑤へ no→書簡開封して処理終了
// ⑤編入希望が○ yes→編入許可処理を実施 no→書簡開封して処理終了
// load jQuery
jQuery.noConflict();
j$ = jQuery;
//----------//
// 変数定義 //
//----------//
// ソフトウェアバージョン
var VERSION = "1.15";
var SERVER_NAME = location.hostname.match(/^(.*)\.3gokushi/)[1];
// 特殊定数
var PROTOCOL = location.protocol;
var HOST = location.hostname; // アクセスURLホスト
var SERVICE = ''; // サービス判定が必要な場合に使用する予約定数
var SVNAME = HOST.substr(0,location.hostname.indexOf(".")) + SERVICE;
var AMO_KEY = "AMO_" + HOST.substr(0,HOST.indexOf("."));
var AMO_JOINFLG = 'amo_joinflg';
var AMO_DROPFLG = 'amo_dropflg';
var AMO_5KINFLG = 'amo_5kinflg';
var AMO_PULLFLG = 'amo_pullflg';
var AMO_RELOADFLG = 'amo_reloadflg';
var AMO_TXTRELOAD = 'amo_txtreload';
var AMO_TXTAREA1 = 'amo_txtarea1';
var AMO_TXTAREA2 = 'amo_txtarea2';
var AMO_TXTAREA3 = 'amo_txtarea3';
var AMO_TXTAREA4 = 'amo_txtarea4';
var AMO_LOGCOUNT = 'amo_logcount';
var AMO_DEBUGFLG = 'amo_debugflg';
// 保存データデリミタ
var AMO_DELIMIT = "#$%{=]";
var m_amo_options;
var m_manager = "";
var m_id = "";
var m_alliance_name = "";
var m_alliance_id = "";
var m_join = new Array();
var m_join2 = new Array();
var m_drop = new Array();
var m_transfer = new Array();
//-----------------//
// メインルーチン //
//-----------------//
(function() {
// main処理
var promise = Promise.resolve();
promise
.then(amo_getprofile) // プロフ読み取り
.then(function(){
// 設定のロード
amo_loadSettings();
// 同盟プロフ画面
if (location.pathname == "/alliance/info.php") {
amo_setting();
}
})
.then(amo_joindrop) // 加入脱退許可
.then(amo_5kinoff) // 5禁解除
.then(amo_transfer) // 編入申請許可
.then(amo_reload()) // リロード
.catch(onRejectted);
})();
function onRejectted(error) {
console.log("error = " + error);
}
//----------------------------//
// プロフ取得 //
//----------------------------//
function amo_getprofile(){
console.log('プロフィールを取得します');
return new Promise(function (resolve, reject) {
var l_len=0;
j$.ajax({
url: PROTOCOL + '//' + location.hostname + '/user/',
type: 'get',
datatype: 'html',
cache: false
}).done(function(data) {
console.log('役職を取得しました');
l_len = j$(data).find("table[class='commonTables profileTable'] tbody").length;
if (l_len > 0) {
m_manager = j$(data).find("table[class='commonTables profileTable'] tbody tr:eq(5) td:eq(3)").text().replace(/\s| /g, ""); //役職
m_id = j$(data).find("table[class='commonTables profileTable'] tbody tr:eq(1) a:eq(0)").attr("href").match(/\?.*user_id=([0-9]+)/)[1]; //個人ID
m_alliance_name = j$(data).find("table[class='commonTables profileTable'] tbody tr:eq(4) td:eq(3)").text().replace(/\s| /g, "");    //同盟名
m_alliance_id = j$(data).find("table[class='commonTables profileTable'] tbody tr:eq(4) td:eq(3) a:eq(0)").attr("href").match(/\?.*id=([0-9]+)/)[1]; //同盟ID
resolve(0);
}
});
});
}
//----------------------------//
// 編入自動許可処 //
//----------------------------//
function amo_transfer(){
return new Promise(function (resolve, reject) {
console.log('自動編入処理を行う');
if (m_amo_options[AMO_DEBUGFLG]==true){
amo_savelog("自動編入処理を開始します");
amo_savelog("役職:" + m_manager + " 自動編入実行フラグ:" + m_amo_options[AMO_PULLFLG]);
}
if (((m_manager == "盟主") || (m_manager == "盟主補佐"))
&& (m_amo_options[AMO_PULLFLG] == true)) {
var promise4 = Promise.resolve();
promise4
.then(amo_transferlist) // 編入申請リスト作成
.then(amo_mailview) // 書簡表示を変更
.then(amo_allianceinfo) // 同盟員チェック
.then(amo_listuserinfo()) // ユーザページから同盟取得
.then(amo_depuserallyinfo()) // ユーザの同盟情報取得
.then(amo_transferpost()) // 編入処理を行う
.catch(onRejectted);
resolve(0);
} else {
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("編入許可処理は行いません");}
resolve(0);
}
});
}
//----------------------------//
// 編入申請リスト作成 //
//----------------------------//
function amo_transferlist(){
return new Promise(function (resolve, reject) {
console.log('編入申請リストを作成します');
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("編入申請リストを作成します");}
var l_permitlist = m_amo_options[AMO_TXTAREA4].split(',');
if (l_permitlist.length < 1){
resolve(0);
return;
}
j$.ajax({
url: PROTOCOL + '//' + location.hostname + '/message/inbox.php?d=0&o=1&a=0&u=new',
type: 'get',
datatype: 'html',
cache: false
}).done(function(data) {
console.log('編入申請リストを取得しました');
j$(data).find("table[class='commonTables'] tbody tr").each(function(){
if (j$(this).find("td").length>4){
// 件名に「【編入希望】」が存在する書簡が対象
if (j$(this).find("td:eq(1)").text().replace(/\s| /g, '').match(/^【編入希望】/)){
var l_name = j$(this).find("td:eq(2)").text().replace(/\s| /g, "");
var l_user_id = j$(this).find("td:eq(2) a:eq(0)").attr("href").match(/\?.*user_id=([0-9]+)/)[1];
var l_mailid = j$(this).find("td:eq(1) a:eq(0)").attr("href").match(/id=([0-9]+)/)[1];
// 編入許可リストに存在すれば編入申請リストに追加
var l_chkflag = false;
Label1:
for (var i=0; i<l_permitlist.length; i++){
if (l_permitlist[i] == l_name){
l_chkflag = true; // 君主名が一致
break Label1;
}
if (l_permitlist[i] == l_user_id){
l_chkflag=true; // 君主IDが一致
break Label1;
}
}
if (l_chkflag){
m_transfer.push({
'user_name': l_name,
'user_id': l_user_id,
'mail_id': l_mailid
});
}
}
}
});
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("編入申請リストを取得しました");}
resolve(0);
}).fail(function(jqXHR, textStatus, errorThrown) {
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("編入申請リストを取得できませんでした");}
});
});
}
//----------------------------//
// 書簡の表示を戻す //
//----------------------------//
function amo_mailview(){
return new Promise(function (resolve, reject) {
console.log('書簡の表示を変更します');
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("書簡の表示を変更します");}
j$.ajax({
url: PROTOCOL + '//' + location.hostname + '/message/inbox.php?d=1&o=1&a=1&u=0',
type: 'get',
datatype: 'html',
cache: false
}).done(function(data) {
console.log('書簡の表示を変更しました');
});
resolve(0);
});
}
//---------------------------------//
// 同盟員を取得し編入リストと比べる//
//---------------------------------//
function amo_allianceinfo(){
return new Promise(function (resolve, reject) {
console.log('同盟員一覧を作成します');
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("同盟員一覧を作成します");}
j$.ajax({
url: PROTOCOL + '//' + location.hostname + '/alliance/info.php?id=' + m_alliance_id,
type: 'get',
datatype: 'html',
cache: false
}).done(function(data) {
console.log('同盟員一覧を取得しました');
j$(data).find("table[summary='ランキング'] tbody tr").each(function(){
if (j$(this).find("td:eq(0)").hasClass('rankNum')) {
var l_name = j$(this).find("td:eq(1) a:eq(0)").text().replace(/\s| /g, "");
Label2:
for (var i=0; i<m_transfer.length; i++){
if (m_transfer[i].user_name == l_name){
// 同盟員に編入申請者が存在する
// 書簡を開封する
j$.ajax({
url: PROTOCOL + '//' + location.hostname + '/message/detail.php?id='+ m_transfer[i].mail_id +'&m=inbox&p=1',
type: 'get',
datatype: 'html',
cache: false
}).done(function(data) {
console.log(l_name + ':同盟員に存在するので編入書簡を開封');
amo_savelog('編入希望者' + l_name + 'は同盟員に存在するので編入書簡を開封しました');
});
// リストから削除
m_transfer.splice(i, 1);
break Label2;
}
}
}
});
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("同盟員一覧を取得しました");}
resolve(0);
}).fail(function(jqXHR, textStatus, errorThrown) {
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("同盟員一覧を取得できませんでした");}
});
});
}
//-----------------------------//
// 編入リストのユーザ情報取得 //
//-----------------------------//
function amo_listuserinfo(){
return function() {
return new Promise(function (resolve, reject) {
console.log('編入リストのユーザ情報取得します');
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("編入リストのユーザ情報取得します");}
var l_wait = false;
var l_count = 0;
var l_max = m_transfer.length;
var l_user_id = "";
if (l_max < 1){
resolve(0);
return;
}
var l_timer4 = setInterval(function(){
if (l_wait){
return;
}
l_wait = true;
l_user_id = m_transfer[l_count].user_id;
// 繰り返し処理
j$.ajax({
url: PROTOCOL + '//' + location.hostname + "/user/?user_id=" + l_user_id,
type: 'get',
datatype: 'html',
cache: false
}).done(function(data) {
console.log('編入リストのユーザ情報取得');
var l_len = j$(data).find("table[class='commonTables profileTable'] tbody").length;
var l_alliance_id = "";
var l_alliance_name = "";
if (l_len > 0) {
l_alliance_id = j$(data).find("table[class='commonTables profileTable'] tbody tr:eq(4) td:eq(3) a:eq(0)").attr("href").match(/\?.*id=([0-9]+)/)[1];
l_alliance_name = j$(data).find("table[class='commonTables profileTable'] tbody tr:eq(4) td:eq(3) a:eq(0)").text().replace(/\s| /g, "");
}
m_transfer[l_count].alliance_id = l_alliance_id;
m_transfer[l_count].alliance_name = l_alliance_name;
if (m_amo_options[AMO_DEBUGFLG]==true){
amo_savelog('編入希望者' + m_transfer[l_count].user_name + 'は同盟:' + l_alliance_name + '(id:' + l_alliance_id +')に所属しています');
}
l_count++;
if ((l_count+1) > l_max){
clearInterval(l_timer4);
resolve(0);
} else {
l_wait = false;
}
});
}, 200);
});
};
}
//-----------------------------------//
// 編入リストのユーザの同盟情報取得 //
//-----------------------------------//
function amo_depuserallyinfo(){
return function() {
return new Promise(function (resolve, reject) {
console.log('編入リストのユーザの同盟情報取得します');
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("編入リストのユーザの同盟情報取得します");}
var l_wait = false;
var l_count = 0;
var l_max = m_transfer.length;
if (l_max < 1){
resolve(0);
return;
}
var l_timer5 = setInterval(function(){
if (l_wait){
return;
}
l_wait = true;
if (m_transfer[l_count].alliance_id != ""){
var l_alliance_id = m_transfer[l_count].alliance_id;
// 繰り返し処理
j$.ajax({
url: PROTOCOL + '//' + location.hostname + "/alliance/info.php?id=" + l_alliance_id,
type: 'get',
datatype: 'html',
cache: false
}).done(function(data) {
console.log('編入リストのユーザの同盟情報取得');
var l_len = j$(data).find("table[class='commonTables'] tbody").length;
var l_alliance_psid = "";
var l_alliance_psname = "";
var l_transfer_status = "";
if (l_len > 0) {
l_alliance_psid = j$(data).find("table[class='commonTables'] tbody tr:eq(5) td:eq(1) a:eq(0)").attr("href").match(/\?.*id=([0-9]+)/)[1];
l_alliance_psname = j$(data).find("table[class='commonTables'] tbody tr:eq(5) td:eq(1) a:eq(0)").text().replace(/\s| /g, "");
}
j$(data).find("table[summary='ランキング'] tbody tr").each(function(){
if (j$(this).find("td:eq(0)").hasClass('rankNum')) {
var l_name = j$(this).find("td:eq(1) a:eq(0)").text().replace(/\s| /g, "");
if (l_name == m_transfer[l_count].user_name){
// 編入状態の取得
l_transfer_status = j$(this).find("td:eq(5) a:eq(0)").text().replace(/\s| /g, "");
}
}
});
m_transfer[l_count].alliance_psid = l_alliance_psid;
m_transfer[l_count].alliance_psname = l_alliance_psname;
m_transfer[l_count].transfer_status = l_transfer_status;
if (m_amo_options[AMO_DEBUGFLG]==true){
amo_savelog('編入希望者' + m_transfer[l_count].user_name + 'の親同盟:' + l_alliance_psname + '(id:' + l_alliance_psid +')です');
amo_savelog('編入希望者' + m_transfer[l_count].user_name + 'の編入状態は' + l_transfer_status + 'です');
}
l_count++;
if ((l_count+1) > l_max){
clearInterval(l_timer5);
resolve(0);
} else {
l_wait = false;
}
});
} else {
l_count++;
if ((l_count+1) > l_max){
clearInterval(l_timer5);
resolve(0);
} else {
l_wait = false;
}
}
}, 200);
});
};
}
//----------------------//
// 編入処理 //
//----------------------//
function amo_transferpost(){
return function() {
return new Promise(function (resolve, reject) {
console.log('編入処理を行います');
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("編入処理を行います");}
var l_wait = false;
var l_count = 0;
var l_max = m_transfer.length;
var l_mailchk = false;
if (l_max < 1){
resolve(0);
return;
}
var l_timer6 = setInterval(function(){
if (l_wait){
return;
}
l_wait = true;
if (m_transfer[l_count].alliance_id != ""){
l_mailchk = false;
if (m_transfer[l_count].alliance_psid != m_alliance_id){
// 親同盟が異なる
console.log('親同盟が異なります');
amo_savelog('編入希望者[' + m_transfer[l_count].user_name + ']の親同盟が異なります');
l_mailchk = true;
} else if (m_transfer[l_count].transfer_status != '○'){
console.log('編入希望状態が"○"ではありません');
amo_savelog('編入希望者[' + m_transfer[l_count].user_name + ']の編入希望状態が"○"ではありません');
l_mailchk = true;
}
if (l_mailchk){
// 書簡を開封する
j$.ajax({
url: PROTOCOL + '//' + location.hostname + '/message/detail.php?id='+ m_transfer[i].mail_id +'&m=inbox&p=1',
type: 'get',
datatype: 'html',
cache: false
}).done(function(data) {
console.log(m_transfer[l_count].user_name + ':編入書簡を開封する');
amo_savelog('編入希望者[' + m_transfer[l_count].user_name + ']の編入書簡を開封しました');
l_count++;
if ((l_count+1) > l_max){
clearInterval(l_timer6);
resolve(0);
} else {
l_wait = false;
}
});
} else {
// 同盟情報取得
j$.ajax({
url: PROTOCOL + '//' + location.hostname + '/alliance/level.php',
type: 'get',
datatype: 'html',
cache: false
}).done(function(data) {
console.log('編入処理');
// 現在の同盟人数
var l_alliance_member = parseInt(j$(data).find("table[class='commonTables'] tbody tr:eq(0) td:eq(1)").text().replace(/\s| /g, ''));
// 最大同盟人数
var l_alliance_max = parseInt(j$(data).find("table[class='commonTables'] tbody tr:eq(1) td:eq(1)").text().replace(/\s| /g, ''));
if (m_amo_options[AMO_DEBUGFLG]==true){
amo_savelog('現在の同盟員の人数[' + l_alliance_member + '] 最大同盟人数[' + l_alliance_max + ']');
}
if ((!l_alliance_member) || (!l_alliance_max) || (!m_alliance_id)){
//falseか0かundefinedかnull
l_count++;
if ((l_count+1) > l_max){
clearInterval(l_timer6);
resolve(0);
} else {
l_wait = false;
}
} else if (l_alliance_member >= l_alliance_max) {
// 現在のメンバーで同盟員がいっぱい
console.log('同盟の人数に空きがありません');
amo_savelog('現在、同盟の人数に空きがないので編入許可ができません');
clearInterval(l_timer6);
resolve(0);
} else {
// 編入処理
var l_ssid = amo_getSessionId();
var params = new Object;
params['id'] = m_alliance_id;
params['mode'] = 'transfer';
params['ssid'] = l_ssid;
params['member'] = l_alliance_member;
params['member_max'] = l_alliance_max;
params['offer_num'] = 0;
params['target_user'] = m_transfer[l_count].user_id;
j$.ajax({
url: PROTOCOL + '//' + location.hostname + "/alliance/info.php",
type: 'post',
datatype: 'html',
cache: false,
data: params
}).done(function(data) {
console.log('編入処理メッセージを送信');
amo_savelog('君主[' + m_transfer[l_count].user_name + ']の編入を許可をしました');
l_count++;
if ((l_count+1) > l_max){
clearInterval(l_timer6);
resolve(0);
} else {
l_wait = false;
}
});
}
});
}
} else {
l_count++;
if ((l_count+1) > l_max){
clearInterval(l_timer6);
resolve(0);
} else {
l_wait = false;
}
}
}, 500);
});
};
}
//----------------------------//
// 5禁解除処理 //
//----------------------------//
function amo_5kinoff(){
return new Promise(function (resolve, reject) {
console.log('5禁解除処理を実行します');
var l_wait = false;
var l_count = 1;
var l_max = 1;
var l_chkflag = false;
var l_chkflag2 = false;
if (m_amo_options[AMO_DEBUGFLG]==true){
amo_savelog("5禁解除処理を開始します");
amo_savelog("役職:" + m_manager + " 5禁解除実行フラグ:" + m_amo_options[AMO_5KINFLG]);
}
if (((m_manager != "盟主") && (m_manager != "盟主補佐") && (m_manager != "大督") && (m_manager != "軍師") && (m_manager != "外交官"))
|| (m_amo_options[AMO_5KINFLG] == false)) {
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("5禁解除処理ができません");}
resolve(0);
return;
}
var l_permitlist = m_amo_options[AMO_TXTAREA3].split(',');
if (l_permitlist.length < 1){
resolve(0);
return;
}
var l_timer3 = setInterval(function(){
if (l_wait){
return;
}
l_wait = true;
// 送信パラメータ
var params={};
params = {'p': l_count};
// 繰り返し処理
j$.ajax({
url: PROTOCOL + '//' + location.hostname + '/alliance/manage_dep.php',
type: 'get',
datatype: 'html',
cache: false,
data: params
}).done(function(data) {
//ページ数
if (j$(data).find("ul[class='pager']").length > 0) {
var l_pages = j$(data).find("ul[class='pager'] li");
for (var i = 0; i < l_pages.length; i++) {
var l_page = parseInt(j$(l_pages[i]).text());
if ((!isNaN(l_page)) && (l_max < l_page)) {
l_max = l_page;
}
}
}
l_chkflag2 = false;
// 送信パラメータ
var post_params = new Object;
j$(data).find("table[class='tables'] tr[class='center']").each(function(){
var l_name = j$(this).find("td:eq(2)").text().replace(/\s| /g, "");
var l_id = j$(this).find("td:eq(2) a:eq(0)").attr("href").match(/\?.*user_id=([0-9]+)/)[1];
var l_alliance_id = j$(this).find("td:eq(0) a:eq(0)").attr("href").match(/\?.*id=([0-9]+)/)[1];
var l_attack = j$(this).find("td:eq(3) div:eq(0)").hasClass("status_ok");
var l_weapon = j$(this).find("td:eq(4) div:eq(0)").hasClass("status_ok");
var l_reinforcement = j$(this).find("td:eq(5) div:eq(0)").hasClass("status_ok");
var l_receive_transfer = j$(this).find("td:eq(6) div:eq(0)").hasClass("status_ok");
var l_friendly_army = j$(this).find("td:eq(7) div:eq(0)").hasClass("status_ok");
l_chkflag = false;
Label0:
for (var i=0; i<l_permitlist.length;i++ ){
if (l_permitlist[i] == l_name){
l_chkflag=true; // 君主名が一致
break Label0;
}
if (l_permitlist[i] == l_id){
l_chkflag=true; // 君主IDが一致
break Label0;
}
}
if (l_chkflag){
post_params["permit_attack[" + l_alliance_id + "]"] = 1;
post_params["permit_weapon[" + l_alliance_id + "]"] = 1;
post_params["permit_reinforcement[" + l_alliance_id + "]"] = 1;
post_params["permit_receive_transfer[" + l_alliance_id + "]"] = 1;
post_params["permit_friendly_army[" + l_alliance_id + "]"] = 1;
if (!(l_attack) || !(l_weapon) || !(l_reinforcement) || !(l_receive_transfer)){
amo_savelog("君主:" + l_permitlist[i] + "(" + l_count +"ページ目)の5禁解除の準備をします");
l_chkflag2 = true;
}
} else {
// 許可不許可維持
if (l_attack){
post_params["permit_attack[" + l_alliance_id + "]"] = 1;
} else {
post_params["permit_attack[" + l_alliance_id + "]"] = 0;
}
if (l_weapon){
post_params["permit_weapon[" + l_alliance_id + "]"] = 1;
} else {
post_params["permit_weapon[" + l_alliance_id + "]"] = 0;
}
if (l_reinforcement){
post_params["permit_reinforcement[" + l_alliance_id + "]"] = 1;
} else {
post_params["permit_reinforcement[" + l_alliance_id + "]"] = 0;
}
if (l_receive_transfer){
post_params["permit_receive_transfer[" + l_alliance_id + "]"] = 1;
} else {
post_params["permit_receive_transfer[" + l_alliance_id + "]"] = 0;
}
if (l_friendly_army){
post_params["permit_friendly_army[" + l_alliance_id + "]"] = 1;
} else {
post_params["permit_friendly_army[" + l_alliance_id + "]"] = 0;
}
}
});
if (l_chkflag2){
var l_ssid = amo_getSessionId();
post_params['ssid'] = l_ssid;
post_params['p'] = l_count;
j$.ajax({
url: PROTOCOL + '//' + location.hostname + "/alliance/manage_dep.php",
type: 'post',
datatype: 'html',
cache: false,
data: post_params
}).done(function(data) {
console.log('5禁解除メッセージ送信');
amo_savelog('5禁解除を行いました');
});
}
l_count++;
if (l_count > l_max){
clearInterval(l_timer3);
resolve(0);
} else {
l_wait = false;
}
});
}, 200);
});
}
//----------------------------//
// 加入脱退処理 //
//----------------------------//
function amo_joindrop(){
return new Promise(function (resolve, reject) {
console.log('加入処理を行う');
if (m_amo_options[AMO_DEBUGFLG]==true){
amo_savelog("加入脱退処理を開始します 役職:" + m_manager);
amo_savelog("加入処理実行フラグ:" + m_amo_options[AMO_JOINFLG]);
amo_savelog("脱退処理実行フラグ:" + m_amo_options[AMO_DROPFLG]);
}
if (((m_manager == "盟主") || (m_manager == "盟主補佐"))
&& ((m_amo_options[AMO_JOINFLG] == true) || (m_amo_options[AMO_DROPFLG] == true))) {
// 申請page取得
var promise2 = Promise.resolve();
promise2
.then(amo_joindroplist) // 加入脱退リスト作成
.then(amo_join) // 加入処理
.then(amo_droppost) // 脱退処理
.catch(onRejectted);
resolve(0);
} else {
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("加入脱退処理は行いません");}
resolve(0);
}
});
}
//----------------------------//
// 加入脱退リスト作成 //
//----------------------------//
function amo_joindroplist(){
return new Promise(function (resolve, reject) {
console.log('加入脱退リストを作成します');
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("加入脱退希望者リストを作成します");}
j$.ajax({
url: PROTOCOL + '//' + location.hostname + '/alliance/manage.php',
type: 'get',
datatype: 'html',
cache: false
}).done(function(data) {
console.log('加入脱退リストを取得しました');
var l_mode = "";
var l_len = 0;
var l_name = "";
var l_id = "";
var l_url = "";
j$(data).find("table[class='commonTables'] tbody").each(function(){
l_mode = "";
var l_lines = j$(this).find("tr:eq(0) th:eq(0)").text().replace(/\s| /g, "");
if (l_lines == "加入申請"){
l_mode = "join";
} else if (l_lines == "脱退申請") {
l_mode = "drop";
} else {
return true; // continue
}
if (l_mode != ""){
l_len = j$(this).find("tr").length;
for (var i=1; i<l_len; i++){
l_name = j$(this).find("tr").eq(i).find("td:eq(0)").text().replace(/\s| /g, "");
l_id = j$(this).find("tr").eq(i).find("form input[type='hidden']").attr("value");
l_url = j$(this).find("tr").eq(i).find("td:eq(0) a:eq(0)").attr("href");
if (l_mode == "join"){
m_join.push({
'alliance_name': l_name,
'alliance_action_id': l_id,
'alliance_url': l_url
});
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("加入希望同盟:" + l_name);}
} else if (l_mode == "drop"){
var l_user_id = l_url.match(/\?.*user_id=([0-9]+)/)[1];
m_drop.push({
'user_name': l_name,
'user_id': l_user_id,
'alliance_action_id': l_id
});
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("脱退希望者:" + l_name);}
}
}
}
});
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("加入脱退希望者リストを取得しました");}
resolve(0);
}).fail(function(jqXHR, textStatus, errorThrown) {
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("加入脱退希望者リストを取得できませんでした");}
});
});
}
//--------------------//
// 加入処理 //
//--------------------//
function amo_join(){
console.log('加入処理を行います');
return new Promise(function (resolve, reject) {
if (m_amo_options[AMO_DEBUGFLG]==true){
amo_savelog("加入処理を開始します");
amo_savelog("加入処理実行フラグ:" + m_amo_options[AMO_JOINFLG]);
}
if (((m_manager == "盟主") || (m_manager == "盟主補佐"))
&& (m_amo_options[AMO_JOINFLG] == true)) {
// 加入処理
var promise3 = Promise.resolve();
promise3
.then(amo_joinuser()) // 加入リストの同盟の盟主名を取得
.then(amo_joinpost()) // 加入処理
.catch(onRejectted);
resolve(0);
} else {
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("加入処理は行いません");}
resolve(0);
}
});
}
//---------------------------------//
// 加入リストの同盟の盟主名を取得 //
//---------------------------------//
function amo_joinuser(){
return function() {
return new Promise(function (resolve, reject) {
console.log('加入リストの同盟の盟主名を取得します');
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("加入希望同盟の盟主名を取得します");}
var l_wait = false;
var l_count = 0;
var l_max = m_join.length;
var l_url = "";
var l_alliance_name = "";
var l_alliance_action_id = "";
var l_alliance_url = "";
if (l_max < 1){
resolve(0);
return;
}
var l_timer1 = setInterval(function(){
if (l_wait){
return;
}
l_wait = true;
l_alliance_name = m_join[l_count].alliance_name;
l_alliance_action_id = m_join[l_count].alliance_action_id;
l_alliance_url = m_join[l_count].alliance_url;
l_url = PROTOCOL + '//' + location.hostname + "/alliance/" + l_alliance_url;
// 繰り返し処理
j$.ajax({
url: l_url,
type: 'get',
datatype: 'html',
cache: false
}).done(function(data) {
console.log('同盟ページを取得');
var l_len = 0;
var l_name = "";
var l_id = "";
var l_manager = "";
j$(data).find("table[summary='ランキング'] tbody").each(function(){
l_len = j$(this).find("tr").length;
for (var i=2; i<l_len; i++){
l_manager = j$(this).find("tr").eq(i).find("td:eq(5)").text().replace(/\s| /g, "");
if (l_manager=='盟主'){
l_name = j$(this).find("tr").eq(i).find("td:eq(1) a:eq(0)").text().replace(/\s| /g, "");
l_id = j$(this).find("tr").eq(i).find("td:eq(1) a:eq(0)").attr("href").match(/\?.*user_id=([0-9]+)/)[1];
m_join2.push({
'user_name': l_name,
'user_id': l_id,
'alliance_name': l_alliance_name,
'alliance_action_id': l_alliance_action_id,
});
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("加入希望同盟の盟主名:" + l_name + '(id:' + l_id + ')');}
return false;
}
}
});
l_count++;
if ((l_count+1) > l_max){
clearInterval(l_timer1);
resolve(0);
} else {
l_wait = false;
}
});
}, 200);
});
};
}
//--------------------------------//
// 脱退許可のメッセージを送信 //
//--------------------------------//
function amo_droppost(){
return new Promise(function (resolve, reject) {
console.log('脱退メッセージを送る');
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("脱退処理をします");}
var l_wait = false;
var l_count = 0;
var l_max = 0;
var l_chkflag=false;
l_max = m_drop.length;
var l_arry = m_drop;
var l_permitlist = m_amo_options[AMO_TXTAREA2].split(',');
if ((l_max < 1) || (l_permitlist.length < 1)){
resolve(0);
return;
}
var l_timer2 = setInterval(function(){
if (l_wait){
return;
}
l_wait = true;
l_chkflag=false;
// 許可リストに存在するかチェック
for (var i=0; i<l_permitlist.length;i++ ){
if (l_permitlist[i]==l_arry[l_count].user_name){
l_chkflag=true; // 君主名が一致
break;
}
if (l_permitlist[i]==l_arry[l_count].user_id){
l_chkflag=true; // 君主IDが一致
break;
}
}
if (l_chkflag){
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog(l_arry[l_count].user_name + "は脱退許可リストに存在します");}
// 送信データの作成
var params = new Object;
params['alliance_action_id'] = l_arry[l_count].alliance_action_id;
params['secession_accept'] = "許可";
// 繰り返し処理
j$.ajax({
url: PROTOCOL + '//' + location.hostname + "/alliance/manage.php",
type: 'post',
datatype: 'html',
cache: false,
data: params
}).done(function(data) {
console.log('脱退メッセージ送信');
amo_savelog('君主[' + l_arry[l_count].user_name + ']の脱退を許可をしました');
l_count++;
if ((l_count+1) > l_max){
clearInterval(l_timer2);
resolve(0);
} else {
l_wait = false;
}
});
} else{
l_count++;
if ((l_count+1) > l_max){
clearInterval(l_timer2);
resolve(0);
} else {
l_wait = false;
}
}
}, 200);
});
}
//-----------------------------//
// 加入許可のメッセージを送信 //
//-----------------------------//
function amo_joinpost(){
return function() {
return new Promise(function (resolve, reject) {
console.log('加入メッセージを送る');
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog("加入処理をします");}
var l_wait = false;
var l_count = 0;
var l_max = 0;
var l_chkflag=false;
l_max = m_join2.length;
var l_arry = m_join2;
var l_permitlist = m_amo_options[AMO_TXTAREA1].split(',');
if ((l_max < 1) || (l_permitlist.length < 1)){
resolve(0);
return;
}
// 同盟情報取得
j$.ajax({
url: PROTOCOL + '//' + location.hostname + '/alliance/level.php',
type: 'get',
datatype: 'html',
cache: false
}).done(function(data) {
console.log('同盟レベルページ取得');
// 現在の同盟人数
var l_alliance_member = parseInt(j$(data).find("table[class='commonTables'] tbody tr:eq(0) td:eq(1)").text().replace(/\s| /g, ''));
// 最大同盟人数
var l_alliance_max = parseInt(j$(data).find("table[class='commonTables'] tbody tr:eq(1) td:eq(1)").text().replace(/\s| /g, ''));
if (m_amo_options[AMO_DEBUGFLG]==true){
amo_savelog('現在の同盟員の人数[' + l_alliance_member + '] 最大同盟人数[' + l_alliance_max + ']');
}
if ((!l_alliance_member) || (!l_alliance_max) || (!m_alliance_id)){
//falseか0かundefinedかnull
} else if (l_alliance_member >= l_alliance_max) {
// 現在のメンバーで同盟員がいっぱい
console.log('同盟の人数に空きがありません');
amo_savelog('現在、同盟の人数に空きがないので加入許可ができません');
resolve(0);
} else {
// 加入処理
var l_timer2 = setInterval(function(){
if (l_wait){
return;
}
l_wait = true;
l_chkflag=false;
// 許可リストに存在するかチェック
for (var i=0; i<l_permitlist.length;i++ ){
if (l_permitlist[i]==l_arry[l_count].user_name){
l_chkflag=true; // 君主名が一致
break;
}
if (l_permitlist[i]==l_arry[l_count].user_id){
l_chkflag=true; // 君主IDが一致
break;
}
}
if (l_chkflag){
if (m_amo_options[AMO_DEBUGFLG]==true){amo_savelog(l_arry[l_count].user_name + "は加入許可リストに存在します");}
if ((l_alliance_member + l_count + 1) > l_alliance_max) {
// 現在のメンバーで同盟員がいっぱい
console.log('同盟の人数に空きがありません');
amo_savelog('現在、同盟の人数に空きがないので加入許可ができません');
clearInterval(l_timer2);
resolve(0);
} else {
// 送信データの作成
var params = new Object;
params['alliance_action_id'] = l_arry[l_count].alliance_action_id;
params['apply_accept'] = "許可";
// 繰り返し処理
j$.ajax({
url: PROTOCOL + '//' + location.hostname + "/alliance/manage.php",
type: 'post',
datatype: 'html',
cache: false,
data: params
}).done(function(data) {
console.log('加入メッセージ送信');
amo_savelog('君主[' + l_arry[l_count].user_name + ']の加入を許可をしました');
l_count++;
if ((l_count+1) > l_max){
clearInterval(l_timer2);
resolve(0);
} else {
l_wait = false;
}
});
}
} else {
l_count++;
if ((l_count+1) > l_max){
clearInterval(l_timer2);
resolve(0);
} else {
l_wait = false;
}
}
}, 200);
}
}, 200);
});
}
}
//----------------------------//
// リロード //
//----------------------------//
function amo_reload(){
return function() {
return new Promise(function(resolve, reject) {
console.log('リロードを行います');
if (m_amo_options[AMO_RELOADFLG]){
var min = 5;
if ((!isNaN(m_amo_options[AMO_TXTRELOAD])) && (1 <= m_amo_options[AMO_TXTRELOAD])) {
min = m_amo_options[AMO_TXTRELOAD];
}
var timer = setInterval(
function () {
location.reload();
clearInterval(timer);
resolve(0);
}, min*60*1000
);
} else {
resolve(0);
}
});
}
}
//----------------------------//
//ログ保存 //
//----------------------------//
function amo_savelog(l_logtxt){
var dt = new Date();
var l_strDate = amo_LocalString(dt);
var l_log=new Array();
var l_chklog=amo_getValue(AMO_KEY + m_id + '_amo_log', "");
var lognum=50;
if (l_chklog!=""){
l_log = amo_getValue(AMO_KEY + m_id + '_amo_log', []).split(AMO_DELIMIT);
var l_loglen=l_log.length;
if(!isNaN(AMO_LOGCOUNT)){
lognum=AMO_LOGCOUNT;
}
if (l_loglen > lognum){
//多いログを消す
l_log.splice(lognum, l_loglen-lognum);
//ログ末尾削除
l_log.pop();
}
}
//最初に挿入
l_log.unshift(l_strDate +" "+ l_logtxt);
var l_save = l_log.join(AMO_DELIMIT);
amo_setValue(AMO_KEY + m_id + '_amo_log', l_save); //ログ保存
}
function amo_LocalString(date){
return [
date.getFullYear(),
date.getMonth() + 1,
date.getDate()
].join( '/' ) + ' ' + date.toLocaleTimeString();
}
//-----------------------//
// 設定画面の描画 //
//-----------------------//
function amo_setting(){
//css定義を追加
amo_addCss();
var l_num = j$("ul[id=statMenu]").eq(0).children("li[class='last']").length;
// 設定リンクの作成
j$("ul[id=statMenu]").eq(0).children("li[class='last']").eq(l_num-1).after(
"<li class='last'><a href='#' id='amo_setting' class='darkgreen'>加入脱退設定</a></li>"
).attr('class', '');
amo_drawSetWindow();
j$("#amo_setting").on("click", function(){
amo_loadSettings();
// 保存されているoption設定を設定画面に反映
for (var key in m_amo_options) {
if (j$("#" + key).length > 0) {
// チェックボックスの場合、チェックのオンオフを再現
if (j$("#" + key).attr('type') == 'checkbox') {
j$("#" + key).prop('checked', m_amo_options[key]);
} else if (j$("#" + key).attr('type') == 'text') {
j$("#" + key).val(m_amo_options[key]);
} else if (j$("#" + key).is('select')) {
j$("#" + key + ' option').filter(function(index){return j$(this).val() == m_amo_options[key];}).prop('selected', true);
} else if (j$("#" + key).is('textarea')) {
j$("#" + key).val(m_amo_options[key]);
}
}
}
//ログを反映
var l_log=new Array();
var l_chklog = amo_getValue(AMO_KEY + m_id + '_amo_log', "");
if (l_chklog!=""){
l_log = amo_getValue(AMO_KEY + m_id + '_amo_log', []).split(AMO_DELIMIT);
var l_loglen=l_log.length;
var l_txtlog="";
for (var i=l_loglen; i--;){
l_txtlog = l_txtlog + l_log[i] + "\n";
}
j$("#amo_logarea").val(l_txtlog);
}
j$("#amo_setting_view").css({'display':'block'});
});
}
//-----------------------//
// 設定の読み込み //
//-----------------------//
function amo_loadSettings() {
// 保存データの取得
var obj = amo_getValue(AMO_KEY + m_id + '_amo_options', null);
var options;
if (obj == null) {
options = amo_getDefaultOptions();
} else {
options = JSON.parse(obj);
}
// 保存データにデフォルト設定の情報がない場合、デフォルト設定を追加
var defaults = amo_getDefaultOptions();
for (var key in defaults) {
if (typeof options[key] == "undefined") {
options[key] = defaults[key];
}
}
m_amo_options = options;
}
//-----------------------//
// 重複メンバー削除 //
//-----------------------//
function amo_uniquemember(str_members) {
var l_storage = {};
var l_newmembers = "";
var i, value, l_separator;
var l_array = str_members.split(/(\r\n|\n|,)/);
var array_len = l_array.length;
for (i = 0; i < array_len; i += 2) {
value = l_array[i];
l_separator = l_array[i + 1];
if (!(value in l_storage)) {
l_storage[value] = true;
l_newmembers += value + ((typeof l_separator === "undefined") ? "" : l_separator);
}
}
return l_newmembers;
}
//---------------------------//
// 設定を保存する //
//---------------------------//
function amo_savesettings() {
var options = amo_getDefaultOptions();
var obj = new Object;
var l_items = j$("#amo_setting_view input");
for (var i = 0; i < l_items.length; i++) {
if (l_items.eq(i).attr('type') == 'checkbox') {
obj[l_items.eq(i).attr('id')] = l_items.eq(i).prop('checked');
} else if (l_items.eq(i).attr('type') == 'text') {
if (!isNaN(l_items.eq(i).val())) {
var num = parseInt(l_items.eq(i).val().replace(/,/g, ''));
if (!isNaN(num)) {
obj[l_items.eq(i).attr('id')] = num;
} else {
obj[l_items.eq(i).attr('id')] = options[l_items.eq(i).attr('id')];
}
} else {
obj[l_items.eq(i).attr('id')] = l_items.eq(i).val().trim();
}
}
}
var l_items2 = j$("#amo_setting_view textarea");
for (var j = 0; j < l_items2.length; j++) {
if (l_items2.eq(j).hasClass('amo_txtset')) {
var l_textarea = l_items2.eq(j).val();
var l_reptext = l_textarea.replace(/\r?\n/g, ','); // 改行をカンマに変換して保存
var l_arry = l_reptext.split(','); // テキストエリアの内容をカンマ区切りで配列aにする
var l_arry2 = j$.grep(l_arry, function(e){return e !== "";}); // 配列から空白削除
l_textarea = l_arry2.join(','); // カンマで配列結合
obj[l_items2.eq(j).attr('id')] = l_textarea;
}
}
//設定を保存
amo_setValue(AMO_KEY + m_id + '_amo_options', JSON.stringify(obj));
}
//-------------------//
// デフォルト設定値 //
//-------------------//
function amo_getDefaultOptions(){
var settings = new Object;
settings[AMO_JOINFLG] = false; // 加入フラグ
settings[AMO_DROPFLG] = false; // 脱退フラグ
settings[AMO_5KINFLG] = false; // 5禁解除フラグ
settings[AMO_PULLFLG] = false; // 編入フラグ
settings[AMO_RELOADFLG] = true; // リロードフラグ
settings[AMO_TXTRELOAD] = 5; // リロード時間
settings[AMO_TXTAREA1] = ''; // 加入リスト
settings[AMO_TXTAREA2] = ''; // 脱退リスト
settings[AMO_TXTAREA3] = ''; // 5禁解除リスト
settings[AMO_TXTAREA4] = ''; // 編入リスト
//ログ
settings[AMO_LOGCOUNT] = false; // ログ詳細
settings[AMO_LOGCOUNT] = 50; // ログ件数
return settings;
}
//---------------------//
// 設定画面作成 //
//---------------------//
function amo_drawSetWindow() {
//表示コンテナ作成
var l_html = "<div id='amo_setting_view' class='amo_winset' style='display: none;width: 650px;'>\
<span style='color: #000000;font-size: 15px; margin: 10px; font-weight: bold;'>自動加入脱退設定画面</span>\
<span style='color: #0000ff;font-size: 12px; margin: 10px;'> ver." + VERSION +"</span>\
</div>";
var amo_facContainer = j$(l_html);
j$("#statMenu").eq(0).append(amo_facContainer);
amo_facContainer.draggable();
var amo_table = j$("<div id='amo_tabs'>\
<ul>\
<li><a href='#amo_maintab'>設定</a></li>\
<li><a href='#amo_logtab'>ログ</a></li>\
</ul>\
<div id='amo_maintab'></div>\
<div id='amo_logtab'></div>\
</div>");
var amo_setbutton = j$("<div style='margin: 10px;'>\
<input type='button' class='amo_btn_def' id='amo_saveSetWindow' value='設定を保存' >\
<input type='button' class='amo_btn_def' id='amo_closeSetWindow' value='閉じる' >\
</div>");
amo_facContainer.append(amo_table);
amo_facContainer.append(amo_setbutton);
amo_mainset();
amo_logset();
j$("#amo_tabs li").css({'padding':'0px', 'min-width':'0px'});
j$("#amo_tabs li a").css({'background':'none'});
j$('#amo_tabs').tabs();
j$("#amo_tabs").css({'background':'white'});
// 保存ボタンのクリックイベント
j$("#amo_saveSetWindow").on('click',function() {
amo_savesettings();
alert("保存しました");
j$("#amo_setting_view").css('display', 'none');
});
// 閉じるボタンのクリックイベント
j$("#amo_closeSetWindow").on('click',function() {
j$("#amo_setting_view").css('display', 'none');
});
//同盟員リスト追加ボタン
j$("[id^='amo_addlistbutton']").on('click',function() {
var no = this.id.slice(-1);
var tmp = "";
//var tmp2 = "";
j$("table[summary='ランキング'] tbody tr").each(function(index){
if ((j$("td", this).eq(1).find('a').length)>0){
tmp += j$("td", this).eq(1).find('a').eq(0).text().replace(/\s| /g, "") + ",";
//tmp2 += j$("td", this).eq(1).find('a').eq(0).attr('href').match(/\?.*user_id=([0-9]+)/)[1] + ",";
}
});
var l_txt = j$("#amo_txtarea" + no).val();
l_txt += "\n" + tmp;
j$("#amo_txtarea" + no).val(l_txt);
});
// 重複削除
j$("[id^='amo_dellistbutton']").on('click',function() {
var no = this.id.slice(-1);
var l_txt = j$("#amo_txtarea" + no).val();
var l_newtxt=amo_uniquemember(l_txt);
j$("#amo_txtarea" + no).val(l_newtxt);
});
}
//------------------------//
// 設定画面の描画 //
//------------------------//
function amo_mainset(){
var table = j$("<table style='margin:2px;border-collapse: separate;'>");
j$("#amo_maintab").append(table);
j$(table).append(j$("<tr><td id=amo_td1_11 class=amo_font_bold style='margin:2px;'></td></tr>\
<tr><td id=amo_td1_21></td></tr>\
<tr><td id=amo_td1_31></td></tr>\
<tr><td id=amo_td1_41 class=amo_font_bold style='padding-top:15px;'></td></tr>\
<tr><td id=amo_td1_51></td></tr>\
<tr><td id=amo_td1_61></td></tr>\
<tr><td id=amo_td1_71 class=amo_font_bold style='padding-top:15px;'></td></tr>\
<tr><td id=amo_td1_81></td></tr>\
<tr><td id=amo_td1_91></td></tr>\
<tr><td id=amo_td1_101 class=amo_font_bold style='padding-top:15px;'></td></tr>\
<tr><td id=amo_td1_111></td></tr>\
<tr><td id=amo_td1_121></td></tr>\
<tr><td id=amo_td1_131 class=amo_font_bold style='padding-top:15px;'></td></tr>\
<tr><td id=amo_td1_141 '></td></tr>\
"));
amo_createCheckBox("#amo_td1_11", "amo_joinflg","自動加入承認を行う ※盟主・盟主補佐のみ","amo_joinflg","1", m_amo_options[AMO_JOINFLG]);
amo_createSpan("#amo_td1_21", "自動加入対象リスト(君主名かユーザIDをカンマまたは改行区切りで記入)");
amo_createButton("#amo_td1_21", "amo_addlistbutton1", "現在の同盟員追加", "amo_btn_def");
amo_createButton("#amo_td1_21", "amo_dellistbutton1", "重複削除", "amo_btn_def");
amo_createTextArea("#amo_td1_31", "amo_txtarea1",'600','120', false, m_amo_options[AMO_TXTAREA1], "amo_txtset");
amo_createCheckBox("#amo_td1_41", "amo_dropflg","自動脱退承認を行う ※盟主・盟主補佐のみ","amo_dropflg","1", m_amo_options[AMO_DROPFLG]);
amo_createSpan("#amo_td1_51", "自動脱退対象リスト(君主名かユーザIDをカンマまたは改行区切りで記入)");
amo_createButton("#amo_td1_51", "amo_addlistbutton2", "現在の同盟員追加", "amo_btn_def");
amo_createButton("#amo_td1_51", "amo_dellistbutton2", "重複削除", "amo_btn_def");
amo_createTextArea("#amo_td1_61", "amo_txtarea2",'600','120', false, m_amo_options[AMO_TXTAREA2], "amo_txtset");
amo_createCheckBox("#amo_td1_71", "amo_5kinflg","自動5禁解除を行う ※盟主・盟主補佐・大督・軍師・外交官のみ","amo_5kinflg","1", m_amo_options[AMO_PULLFLG]);
amo_createSpan("#amo_td1_81", "自動5禁解除対象リスト(君主名かユーザIDをカンマまたは改行区切りで記入)");
amo_createButton("#amo_td1_81", "amo_addlistbutton3", "現在の同盟員追加", "amo_btn_def");
amo_createButton("#amo_td1_81", "amo_dellistbutton3", "重複削除", "amo_btn_def");
amo_createTextArea("#amo_td1_91", "amo_txtarea3",'600','120', false, m_amo_options[AMO_TXTAREA3], "amo_txtset");
amo_createCheckBox("#amo_td1_101", "amo_pullflg","自動配下編入を行う ※盟主・盟主補佐のみ","amo_pullflg","1", m_amo_options[AMO_PULLFLG]);
amo_createSpan("#amo_td1_111", "自動配下編入対象リスト(君主名かユーザIDをカンマまたは改行区切りで記入)");
amo_createButton("#amo_td1_111", "amo_addlistbutton4", "現在の同盟員追加", "amo_btn_def");
amo_createButton("#amo_td1_111", "amo_dellistbutton4", "重複削除", "amo_btn_def");
amo_createTextArea("#amo_td1_121", "amo_txtarea4",'600','120', false, m_amo_options[AMO_TXTAREA4], "amo_txtset");
amo_createCheckBox("#amo_td1_131", "amo_reloadflg","","amo_reloadflg","1", m_amo_options[AMO_RELOADFLG]);
amo_createTextBox("#amo_td1_131", "amo_txtreload" , "", m_amo_options[AMO_TXTRELOAD],'2','20px',false);
amo_createSpan("#amo_td1_131", "分おきにリロードを行う");
}
function amo_logset(){
var table = j$("<table style='margin:2px;border-collapse: separate;'>");
j$("#amo_logtab").append(table);
j$(table).
append(j$("<tr><td colspan='2' id=amo_td2_11 style='margin:2px;' class=amo_font_bold></td></tr>\
<tr><td class=amo_ctd0></td><td id=amo_td2_21></td></tr>\
<tr><td class=amo_ctd0></td><td id=amo_td2_31></td></tr>\
"));
amo_createSpan("#amo_td2_11", "直近のログ(手動で行ったものは残りません)");
amo_createTextBox("#amo_td2_21", "amo_logcount" , " ログ件数:",m_amo_options[AMO_LOGCOUNT],'4','40px',false);
amo_createCheckBox("#amo_td2_21", "amo_debugflg" , "詳細出力","amo_debugflg","1",m_amo_options[AMO_DEBUGFLG]);
amo_createTextArea("#amo_td2_31", "amo_logarea",'600','600', false,"", "amo_txtnoset");
}
//---------------//
// css定義の追加 //
//---------------//
function amo_addCss() {
var css =" \
div[id^='amo'] .ui-widget-header {background:#ffb83f;} \
div[id^='amo'] {text-align: left;} \
.amo_font_bold {font-size:12px; \
color:#000000; \
font-weight:bold;} \
.amo_btn_def {background-color: #F0F0F0; \
border-width: 1px; \
box-sizing: border-box; \
font-family: sans-serif; \
font-size: 10pt; \
overflow: hidden; \
padding: 1px 5px; \
text-align: center; \
zoom: 1;} \
div.amo_winset { \
-moz-border-radius:3px; \
border-radius: 3px; \
-webkit-border-radius: 3px; \
margin-bottom:6px; \
border: 2px solid #009; \
position: absolute; \
z-index:9999; \
background-color: white; \
}\
";
amo_addGlobalStyle(css);
}
function amo_createTextBox(i_container, i_id, i_text, i_value, i_len, i_size, i_input){
var l_lbl = j$("<label>").text(i_text);
var l_txBox = j$("<input>",{
type: 'text',
id: i_id,
value: i_value,
maxlength: i_len,
width: i_size,
readonly: i_input
});
j$(i_container).append(l_lbl);
j$(i_container).append(l_txBox);
}
function amo_createTextArea(i_container, i_id, i_width, i_height, i_input, i_value, i_class){
var l_txBox = j$("<textarea>",{
id: i_id,
value: i_value,
class: i_class,
disabled: i_input,
width: i_width,
height: i_height
});
j$(i_container).append(l_txBox);
}
function amo_createButton(i_container, i_id, i_text, i_class){
var l_btn = j$("<input>",{
type: 'button',
id: i_id,
class: i_class,
value: i_text
});
j$(i_container).append(l_btn);
}
function amo_createCheckBox(i_container, i_id, i_text, i_class, i_value, i_ckflag){
var l_lbl = j$("<label>").text(i_text);
var l_ckBox = j$("<input>",{
type: 'checkbox',
id: i_id,
class: i_class,
value: i_value,
checked: i_ckflag
});
j$(i_container).append(l_ckBox);
j$(i_container).append(l_lbl);
}
function amo_createSpan(i_container, i_text){
var l_text = j$("<span>");
l_text.html(i_text);
j$(i_container).append(l_text);
}
function amo_addGlobalStyle(css) {
var head, style;
head = document.getElementsByTagName('head')[0];
if (!head) { return; }
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = css;
head.appendChild(style);
}
function amo_setValue(name, value) {
value = (typeof value)[0] + value;
localStorage.setItem(name, value);
}
function amo_getValue(name, defaultvalue) {
var value = localStorage.getItem(name);
if (!value) return defaultvalue;
var type = value[0];
value = value.substring(1);
switch (type) {
case 'b':
return value == 'true';
case 'n':
return Number(value);
default:
return value;
}
}
//------------------//
// セッションID取得 //
//------------------//
function amo_getSessionId() {
return amo_getCookie('SSID');
}
function amo_getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment