Script này sẽ không được không được cài đặt trực tiếp. Nó là một thư viện cho các script khác để bao gồm các chỉ thị meta
// @require https://update.greasyfork.org/scripts/399270/787105/ResTab.js
/*********************************** Resources TAB ***********************************/
// @tabversion 20180619
Tabs.Resources = {
tabOrder : 1800,
tabLabel : 'Resources',
resource : {1:'Food', 2:'Wood', 3:'Stone', 4:'Ore'},
users : [],
myDiv : null,
doList : [], // list of gifts to accept
accepting : false,
city : null,
total : {gold:0, 1:0, 2:0, 3:0, 4:0},
init : function (div){
var t = Tabs.Resources;
t.myDiv = div;
div.innerHTML = '<style>div.indent25 {padding-left:25px}</style><div class=divHeader align=center>'+tx('COLLECT RESOURCES FROM COURTLY ACTIONS')+'</div><br><TABLE cellpadding=0 cellspacing=0 class=xtab width=100%><TR><TD align=center><INPUT id="pballlist" type=submit value="'+tx('Fetch Alliance List')+'" \> <INPUT id="pbfrndlist" type=submit value="'+tx('Fetch Friend List')+'" \></td></tr></table><HR>\
<DIV id=resDiv style="width:100%; min-height:400px; height:100%">';
document.getElementById('pballlist').addEventListener ('click', function() { t.e_clickfetchlist(1); }, false);
document.getElementById('pbfrndlist').addEventListener ('click', function() { t.e_clickfetchlist(2); }, false);
ResetFrameSize('btMain',100,GlobalOptions.btWinSize.x);
},
show : function (){
},
hide : function (){
},
progress : function (msg, span, add){
if(add)
document.getElementById(span).innerHTML+=msg;
else
document.getElementById(span).innerHTML=msg;
},
e_clickfetchlist : function (tt){ // (also cancel accepting)
var t = Tabs.Resources;
t.users = [];
if (t.accepting){
document.getElementById('pballlist').value = tx('Fetch Alliance List');
document.getElementById('pbfrndlist').value = tx('Fetch Friend List');
document.getElementById('resDiv').innerHTML+= '<BR><SPAN class=boldRed>'+tx('Cancelled')+'.</span>';
t.accepting = false;
return;
}
if (tt==1) {
document.getElementById('resDiv').innerHTML = tx('Fetching alliance list')+' ... <span id=pbResUserListCount></span>';
}
else {
document.getElementById('resDiv').innerHTML = tx('Fetching friend list')+' ... <span id=pbResUserListCount></span>';
}
t.fetchUserList (tt,gotUserList);
function gotUserList(userList){
if(userList.length < 1){
listGifts();
return;
}
document.getElementById('resDiv').innerHTML += '<BR>'+tx('Check if able to collect')+' ... <span id=pbResUserAvailCount></span>';
t.checkDailyAction(userList, listGifts);
}
function listGifts (){
t.city = Cities.cities[0];
if (t.users.length<1){
document.getElementById('resDiv').innerHTML = '<BR><BR><CENTER>'+tx('No players found')+'!</center>';
return;
}
var m = '';
m += '<TABLE class=xtab align=center width=100%><TR><TD width=50% align=right>'+tx('City to apply gifts to')+':</td><TD width=50% id=pbrescityselspan></td></tr>\
<TR><TD align=right>'+tx('Select resource to collect')+':</td><TD>'+htmlSelector(t.resource, Options.getResType, 'id=pbResColType')+'</td></tr>';
m += '<TR><TD align=right>'+tx('Select players you want to collect from and click')+':</td><TD width=250><INPUT type=submit id=pbResDo value="'+tx('Accept Resources')+'"> \
<SPAN id=pbResNone class=boldRed> </span></td></tr></table><HR><DIV class=divHeader><CENTER>'+tx('Player List')+' ('+ t.users.length +' '+tx('found')+')</center></div><TABLE class=xtab align=center><TR valign=top>';
m += '<TD width=10></td><TD><TABLE align=center cellpadding=2 cellspacing=0 class=xtab>\
<TBODY id=pbResTbody style="height:250px; overflow:auto; display:block;">\
<TR><TH class=xtabHD width=30> </th><TH align=left class=xtabHD width=200>'+tx('Name')+'</th><TH align=right class=xtabHD width=150>'+tx('Might')+'</th><TH align=center class=xtabHD width=50>'+tx('Select')+'</th></tr>';
var r = 0;
for (var i=0; i<t.users.length; i++){
if (++r % 2) { rowClass = 'evenRow'; }
else { rowClass = 'oddRow'; }
m += '<TR class="'+rowClass+'"><td><img width=30 src="'+t.users[i].pic+'"></td><TD align=left>'+ t.users[i].name +'</td><TD align=right>'+ addCommas(t.users[i].might) +'</td><td align=center><INPUT type=checkbox id=pbrchk_'+ i +'></td></tr>';
}
m += '</tbody></table></td><TD width=10></td>';
m += '<TD><INPUT id=pbResButAll type=submit value="'+tx('Select All')+'" style="width:100%; margin-bottom:5px"><BR><INPUT id=pbResButNone type=submit value="'+tx('Select None')+'"></td>';
m += '</tr></table>';
document.getElementById('resDiv').innerHTML = m;
new CdispCityPicker ('pbrescitysel', document.getElementById('pbrescityselspan'), true, t.e_CityButton, t.city.idx);
document.getElementById('pbResDo').addEventListener ('click', t.getErDone, false);
document.getElementById('pbResButAll').addEventListener ('click', t.e_butAll, false);
document.getElementById('pbResButNone').addEventListener ('click', t.e_butNone, false);
ResetFrameSize('btMain',100,GlobalOptions.btWinSize.x);
}
},
e_CityButton : function (city, x, y){
var t = Tabs.Resources;
t.city = city;
},
e_butAll : function (){
var t = Tabs.Resources;
for (var i=0; i<t.users.length; i++)
document.getElementById('pbrchk_'+i).checked = true;
},
e_butNone : function (){
var t = Tabs.Resources;
for (var i=0; i<t.users.length; i++)
document.getElementById('pbrchk_'+i).checked = false;
},
getErDone : function (){
var t = Tabs.Resources;
t.doList = [];
document.getElementById('pbResNone').innerHTML = ' ';
Options.getResType = document.getElementById('pbResColType').value;
t.total = {gold:0, 1:0, 2:0, 3:0, 4:0};
for (var i=0; i<t.users.length; i++){
if (document.getElementById('pbrchk_'+i).checked)
t.doList.push (t.users[i]);
}
if (t.doList.length==0){
document.getElementById('pbResNone').innerHTML = tx('None Selected')+'!';
return;
}
t.accepting = true;
document.getElementById('pballlist').value = tx('Stop Accepting');
document.getElementById('pbfrndlist').value = tx('Stop Accepting');
document.getElementById('resDiv').innerHTML = '<DIV id=rsltDiv style="height:400px; max-height:400px; overflow-y:auto"><B>'+tx('Accepting from')+' '+ t.doList.length +' '+tx('users')+':</b><BR></div>';
ResetFrameSize('btMain',100,GlobalOptions.btWinSize.x);
t.acceptNext ();
},
allDone : function (msg){
var t = Tabs.Resources;
msg += '<BR><BR> '+tx('Total resources gained')+' : <BR>\
'+tx('Gold')+': '+addCommas(t.total.gold)+'<BR>';
for(var i=1; i<=4; i++){
msg += tx(t.resource[i])+': '+addCommas(t.total[i])+'<BR>';
}
document.getElementById('rsltDiv').innerHTML += '<BR><BR>' + msg;
document.getElementById('pballlist').value = tx('Fetch Alliance List');
document.getElementById('pbfrndlist').value = tx('Fetch Friend List');
t.accepting = false;
},
acceptNext : function (){
var t = Tabs.Resources;
var gift = t.doList.shift();
if (gift == null){
t.allDone (tx('Done accepting resources')+'.');
return;
}
var acpDiv = document.getElementById('rsltDiv');
var curDiv = document.createElement ('div');
acpDiv.appendChild (curDiv);
curDiv.innerHTML = '<B>'+tx('From')+' '+ gift.name +': ';
var statSpan = document.createElement ('span');
curDiv.appendChild (statSpan);
statSpan.innerHTML = tx('Accepting')+' ... ';
t.getCourtAction (gift, gotGiftData);
function gotGiftData (rslt){
if (!t.accepting)
return;
if (rslt.ok){
var msg = rslt.gold +' '+tx('gold and')+' '+rslt.resource +' '+ tx(t.resource[rslt.resourcetype])+' '+tx('OK')+'.';
actionLog ('Accepted from '+gift.name+': '+ rslt.gold +' gold and '+ rslt.resource +' '+ t.resource[rslt.resourcetype],'RESOURCES');
statSpan.innerHTML += msg;
t.total.gold += rslt.gold;
t.total[rslt.resourcetype] += rslt.resource;
t.acceptNext ();
return;
}
if (rslt.msg)
msg = '<B>'+ rslt.msg + '</b>';
else
msg = '<SPAN class=boldRed>ERROR: '+ rslt.ajaxErr +'</span>';
curDiv.removeChild (statSpan);
curDiv = document.createElement ('div');
curDiv.className = 'indent25';
acpDiv.appendChild (curDiv);
curDiv.innerHTML = msg;
t.acceptNext ();
}
},
getMembersInfo : function (pageNo, notify) {
var t = Tabs.Resources;
var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
params.pageNo = pageNo;
new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/allianceGetMembersInfo.php" + unsafeWindow.g_ajaxsuffix, {
method: "post",
parameters: params,
onSuccess: function (rslt) {
notify (rslt);
},
onFailure: function (rslt) {
notify ({errMsg:'Ajax Comm Error'});
},
});
},
getFriendsInfo : function (notify) {
var t = Tabs.Resources;
var params = uW.Object.clone(uW.g_ajaxparams);
new MyAjaxRequest(uW.g_ajaxpath + "ajax/getAppFriends.php" + uW.g_ajaxsuffix, {
method: "post",
parameters: params,
onSuccess: function (rslt) {
notify (rslt);
},
onFailure: function (rslt) {
notify ({errMsg:'Ajax Comm Error'});
},
});
},
getDailyAction : function (uid, notify){
var t = Tabs.Resources;
var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
params.pid = uid;
new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/viewCourt.php" + unsafeWindow.g_ajaxsuffix, {
method: "post",
parameters: params,
onSuccess: function (rslt) {
notify (rslt);
},
onFailure: function (rslt) {
notify ({errMsg:'Ajax Comm Error'});
},
});
},
getCourtAction : function (gift, notify){
var t = Tabs.Resources;
var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
params.atype = Options.getResType;
params.toid = gift.userId;
params.givercityid = t.city.id;
new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/courtDoAction.php" + unsafeWindow.g_ajaxsuffix, {
method: "post",
parameters: params,
onSuccess: function (rslt) {
notify (rslt);
},
onFailure: function (rslt) {
notify ({errMsg:'Ajax Comm Error'});
},
});
},
checkDailyAction : function (userList, notify){
var t = Tabs.Resources;
var count = 0;
t.getDailyAction(userList[count].userId, parseViewCourt);
function parseViewCourt (rslt){
if (!rslt.ok || rslt.errMsg)
notify ({errMsg:'Ajax Comm Error'});
if(rslt.dailyActionFlag == 0)
t.users.push(userList[count]);
t.progress(count, 'pbResUserAvailCount');
count++;
if(count < userList.length){
t.getDailyAction(userList[count].userId, parseViewCourt);
} else {
notify();
}
}
},
fetchUserList : function (tt,notify){
var t = Tabs.Resources;
var userList = [];
if (tt==1) {
t.getMembersInfo(1, parseAlliancePage);
}
else {
t.getFriendsInfo(parseFriendPage);
}
function parseAlliancePage (rslt){
if (!rslt.ok || rslt.errMsg)
notify ({errMsg:'Ajax Comm Error'});
var users = rslt.memberInfo;
for(var k in users){
userList.push({userId:users[k].userId, name:users[k].name, might:users[k].prestige, pic:users[k].avatarurl});
}
t.progress(userList.length, 'pbResUserListCount');
if(rslt.currentPage < rslt.noOfPages){
t.getMembersInfo((rslt.currentPage+1), parseAlliancePage);
}
else {
notify(userList);
}
}
function parseFriendPage (rslt){
if (!rslt.ok || rslt.errMsg)
notify ({errMsg:'Ajax Comm Error'});
var users = rslt.data;
for(var k in users){
if (users[k].userId!=undefined)
userList.push({userId:users[k].userId, name:users[k].displayName, might:users[k].might, pic:users[k].realPhoto});
}
t.progress(userList.length, 'pbResUserListCount');
notify(userList);
}
},
}