لا ينبغي أن لا يتم تثبيت هذا السكريت مباشرة. هو مكتبة لسكبتات لتشمل مع التوجيه الفوقية // @require https://update.greasyfork.org/scripts/399268/787098/RaidTab.js
/********************************* Raid Tab ***********************************/
// @tabversion 20171101
Tabs.Raid = {
tabDisabled : false,
tabOrder : 8000,
tabColor : 'brown',
myDiv : null,
tabLabel : unsafeWindow.g_js_strings.commonstr.raid,
rallypointlevel:null,
knt:{},
Troops:{},
city:0,
raidtimer:null,
rslt:{},
save:{},
stopping:false,
resuming:false,
deleting:false,
stopprogress:0,
stopcount:0,
activecount:0,
count:0,
Options : {
RemoveDeleteTab : false,
foodreport : false,
MsgInterval : 1,
LastReport : 0,
raidbtns : false,
Foodstatus : {1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},
},
init : function (div){
var t = Tabs.Raid;
t.myDiv = div;
if (!Options.RaidOptions) {
Options.RaidOptions = t.Options;
}
else {
for (var y in t.Options) {
if (!Options.RaidOptions.hasOwnProperty(y)) {
Options.RaidOptions[y] = t.Options[y];
}
}
}
setInterval(t.lookup, 2500);
setInterval(t.sendreport, 1*60*1000);
if(Options.RaidOptions.raidbtns) {
AddMainTabLink('Raids: S', 'pboldraidtab', t.StopAllRaids);
AddMainTabLink('R', 'pboldraidtabRes', t.ResumeAllRaids);
if (!Options.RaidOptions.RemoveDeleteTab) AddMainTabLink('D', 'pboldraidtabDel', t.DeleteAllRaids);
document.getElementById('pboldraidtabRes').style.marginLeft = '0px';
if (!Options.RaidOptions.RemoveDeleteTab) document.getElementById('pboldraidtabDel').style.marginLeft = '0px';
document.getElementById('pboldraidtab').title = 'Click to Stop Active Raids';
document.getElementById('pboldraidtabRes').title = 'Click to Resume Stopped Raids';
if (!Options.RaidOptions.RemoveDeleteTab) document.getElementById('pboldraidtabDel').title = 'Click to Delete Stopped Raids';
};
var m = '<DIV class=divHeader align=center>RAID FUNCTIONS</div><TABLE width=100% height=0% class=xtab><TR align="center">';
m += '<TD> </td>';
m += '<TD><INPUT id=pbRaidBut type=checkbox '+ (Options.RaidOptions.raidbtns?'CHECKED ':'') +'/></td><TD>'+translate("Raid toggle buttons on top of screen")+'</td><TD><INPUT id=pbDeleteTab type=checkbox '+ (Options.RaidOptions.RemoveDeleteTab?'CHECKED':'') +'\> Remove Delete Tab ';
m += '<TD><INPUT id=pbsendraidreport type=checkbox '+ (Options.RaidOptions.foodreport?'CHECKED':'') +'\> Send raid report every ';
m += '<INPUT id=pbsendreportint value='+ Options.RaidOptions.MsgInterval +' type=text size=3 \> hours </td>';
m += '</tr></table></div>';
m += '<DIV class=divHeader align=center>ACTIVE RAIDS</div><TABLE width=100% height=0% class=xtab><TR align="center">';
m += '<TD><DIV style="margin-bottom:10px;"><span id=ptRaidCity></span></div></td></tr>';
m +='<TR><TD><DIV style="margin-bottom:10px;"><span id=ptRaidTimer></span></div></td></tr></table>';
m += '<DIV id=PaintRaids></div>';
m += '<DIV class=divHeader align=center>SAVED RAIDS</div><TABLE width=100% height=0% class=xtab><TR align="center">';
m += '<DIV id=SavedRaids></div>';
t.myDiv.innerHTML = m;
t.from = new CdispCityPicker ('ptRaidpicker', document.getElementById('ptRaidCity'), true, t.clickCitySelect, 0);
document.getElementById('pbRaidBut').addEventListener('change', function(){
Options.RaidOptions.raidbtns = document.getElementById('pbRaidBut').checked;
saveOptions();
}, false);
document.getElementById('pbDeleteTab').addEventListener('change', function(){
Options.RaidOptions.RemoveDeleteTab = document.getElementById('pbDeleteTab').checked;
saveOptions();
}, false);
document.getElementById('pbsendraidreport').addEventListener('change', function(){
Options.RaidOptions.foodreport = document.getElementById('pbsendraidreport').checked;
saveOptions();
}, false);
document.getElementById('pbsendreportint').addEventListener('change', function(){
Options.RaidOptions.MsgInterval = parseInt(document.getElementById('pbsendreportint').value);
saveOptions();
}, false);
var serverID = getServerId();
t.save = GM_getValue ('SavedRaids_'+unsafeWindow.tvuid+'_'+serverID);
if (t.save == null) t.save = GM_getValue ('SavedRaids_'+serverID);
if (t.save != undefined) t.save = JSON2.parse (t.save);
setInterval (t.paint,1000);
},
lookup : function (){
var t = Tabs.Raid;
t.activecount=0;
t.stopcount=0;
for (c=0; c< Seed.cities.length;c++) {
cityID = 'city' + Seed.cities[c][0];
for (b in Seed.queue_atkp[cityID]){
destinationUnixTime = Seed.queue_atkp[cityID][b]['destinationUnixTime'];
MarchStatus = Seed.queue_atkp[cityID][b]['marchStatus'];
MarchType = Seed.queue_atkp[cityID][b]['marchType'];
botMarchStatus = Seed.queue_atkp[cityID][b]['botMarchStatus'];
if (MarchType == 9 && (MarchStatus == 3 || MarchStatus==10)) t.stopcount++;
else if (MarchType == 9) t.activecount++;
}
}
if(!Options.RaidOptions.raidbtns)return;
if (t.resuming == false && t.stopping == false && t.deleting == false && t.activecount != 0)
document.getElementById('pboldraidtab').innerHTML = '<span style="color: #ff6">Raids: S ('+ t.activecount + ')</span>'
else if (t.resuming == false && t.stopping == false && t.deleting == false)
document.getElementById('pboldraidtab').innerHTML = '<span style="color: #CCC">Raids: S ('+ t.activecount + ')</span>'
if (t.resuming == false && t.resuming == false && t.deleting == false && t.stopcount !=0)
document.getElementById('pboldraidtabRes').innerHTML = '<span style="color: #ff6">R ('+ t.stopcount + ')</span>'
else if (t.resuming == false && t.stopping == false && t.deleting == false)
document.getElementById('pboldraidtabRes').innerHTML = '<span style="color: #CCC">R ('+ t.stopcount + ')</span>'
if (!Options.RaidOptions.RemoveDeleteTab) {
if (t.resuming == false && t.stopping == false && t.deleting == false && t.stopcount !=0)
document.getElementById('pboldraidtabDel').innerHTML = '<span style="color: #ff6">D ('+ t.stopcount + ')</span>'
else if (t.resuming == false && t.stopping == false && t.deleting == false)
document.getElementById('pboldraidtabDel').innerHTML = '<span style="color: #CCC">D ('+ t.stopcount + ')</span>'
}
},
paint : function () {
var t = Tabs.Raid;
var botMarchStat = {0:'Inactive',
1:'Raiding',
2:'Returning',
3:'Stopped',
4:'Resting',
5:'Unknown',
7:'Situation Changed',
8:'Returning',
9:'Aborting'};
var botStat = { 0:'Undefined',
1:'Marching',
2:'Returning',
3:'Stopped',
4:'Insufficient Troops',
5:'Max Raids Exceeded',
7:'Timed out',
8:'Resting'};
var o = '';
if (t.rslt.settings != undefined) o+= '<FONT size=2px><B>Raid Timer: '+ timestr( 86400 - ( unixTime() - t.rslt.settings.lastUpdated )) +'</b></font>';
document.getElementById('ptRaidTimer').innerHTML = o;
var z ='<TABLE class=xtab><TR><TD width=60px align=center><A onclick="pbStopAll('+t.cityId+')">STOP</a></td><TD width=70px>Time</td><TD width=85px>Coords</td><TD width=50px>Level</td><TD width=50px></td><TD width=50px><A onclick="pbDeleteAll('+t.cityId+')">DELETE</a></td></TR>';
if (t.rslt['queue'] != ""){
for (y in t.rslt['queue']) {
if (t.rslt['queue'][y]['botMarches'] != undefined) {
for (k in Seed.queue_atkp['city' + t.cityId]){
if (Seed.queue_atkp['city' + t.cityId][k]['marchId'] == t.rslt['queue'][y]['botMarches']['marchId']) {
botMarchStatus = Seed.queue_atkp['city' + t.cityId][k]['botMarchStatus'];
MarchStatus = Seed.queue_atkp['city' + t.cityId][k]['marchStatus'];
restPeriod = (Seed.queue_atkp['city' + t.cityId][k]['restPeriod']/60);
destinationUnixTime = Seed.queue_atkp['city' + t.cityId][k]['destinationUnixTime'];
returnUnixTime = Seed.queue_atkp['city' + t.cityId][k]['returnUnixTime']
now = unixTime();
z+='<TR>';
if (MarchStatus ==1) z+='<TD align=center><img src='+IMGURL+'attacking.jpg></td>';
else if (MarchStatus ==8 && (destinationUnixTime - now) <= 0 && botMarchStatus !=3 && returnUnixTime > now) z+='<TD align=center><img src='+IMGURL+'returning.jpg></td>';
else if (MarchStatus == 3) z+='<TD align=center><img src='+IMGURL+'autoAttack/raid_stopped_desat.png></td>';
else if (MarchStatus == 4 || (returnUnixTime < now && botMarchStatus !=3)) z+='<TD align=center><img src='+IMGURL+'autoAttack/raid_resting.png></td>';
else z+='<TD align=center><img src='+IMGURL+'autoAttack/raid_stopped_desat.png></td>';
if (destinationUnixTime >= now) z+='<TD>'+ timestr(Seed.queue_atkp['city' + t.cityId][k]['destinationUnixTime'] - unixTime())+'</td>';
if (destinationUnixTime <= now) {
if ((destinationUnixTime - now) <= 0 && returnUnixTime > now) z+='<TD>'+ timestr(returnUnixTime - now)+'</td>';
if (returnUnixTime <= now) z+='<TD>'+ timestr(now - returnUnixTime)+'</td>';
}
}
}
z+='<TD>('+ t.rslt['queue'][y]['botMarches']['toXCoord'] +','+ t.rslt['queue'][y]['botMarches']['toYCoord']+')</td>';
z+='<TD align=center>'+ t.rslt['queue'][y]['botMarches']['toTileLevel'] +'</td>';
if (botMarchStatus == 3) z+='<TD><A onclick="pbEditRaid('+ y +')">Edit</a></td>';
else z+='<TD><FONT COLOR= "CCCCCC">Edit</font></td>';
if (botMarchStatus == 3) z+='<TD align=center><A onclick="pbDeleteRaid('+ t.rslt['queue'][y]['botMarches']['marchId']+')">Delete</a></td>';
else z+='<TD align=center><FONT COLOR= "CCCCCC">Delete</font></td>';
z +='<TD width=25px></td><TD>Rest Time: '+ timestr(restPeriod) +'</td>';
z+='</tr>';
}
}
}
z+='</table>';
if (t.rslt['queue'] == "") z ='<TABLE class=xtab><TR><TD>No Raids in city!</td></TR>';
document.getElementById('PaintRaids').innerHTML = z;
var check = true;
if (t.save != ""){
var a ='<TABLE class=xtab><TR><TD width=60px></td><TD width=70px></td><TD width=85px>Coords</td><TD width=50px>Level</td><TD width=50px></td><TD width=50px></td></tr>';
for (y in t.save){
if (t.save[y] != undefined && t.cityId == t.save[y]['cityId']){
a +='<TR><TD align=center><A onclick="pbDeleteSavedRaid('+ t.save[y]['marchId'] +')">X</a></td>';
a +='<TD></td><TD><FONT COLOR= "CC0000">('+t.save[y]['toXCoord']+','+t.save[y]['toYCoord']+')</font></td>';
a +='<TD align=center>'+t.save[y]['toTileLevel']+'</td>';
a +='<TD><A onclick="pbEditSavedRaid('+ y +')">Edit</a></td>';
a +='<TD align=center><A onclick="pbAddRaid('+ t.save[y]['marchId']+')">Add</a></td></tr>';
check = false;
}
}
m+='</table>';
}
if (check) a ='<TABLE class=xtab><TR><TD>No Saved Raids in city!</td></TR>';
document.getElementById('SavedRaids').innerHTML = a;
unsafeWindow.pbDeleteRaid = t.DeleteRaid;
unsafeWindow.pbEditRaid = t.EditRaid;
unsafeWindow.pbAddRaid = t.AddRaid;
unsafeWindow.pbDeleteSavedRaid = t.DeleteSavedRaid;
unsafeWindow.pbEditSavedRaid = t.EditSavedRaid;
unsafeWindow.pbStopAll = t.StopCityRaids;
unsafeWindow.pbDeleteAll = t.DeleteCityRaids;
},
DeleteSavedRaid : function (Id){
var t = Tabs.Raid;
for (yy=0;yy<t.save.length;yy++){
if (t.save[yy]['marchId'] == Id){
t.save.splice (yy,1);
}
}
var serverID = getServerId();
setTimeout (function (){GM_setValue ('SavedRaids_'+unsafeWindow.tvuid+'_'+serverID, JSON2.stringify(t.save));}, 0);
t.paint();
},
EditSavedRaid : function (y){
var t = Tabs.Raid;
var pop = new CPopup ('pbEditRaid', 0,0, 750,350, true);
if (t.popFirst){
pop.centerMe (mainPop.getMainDiv());
t.popFirst = false;
}
pop.getTopDiv().innerHTML = '<CENTER><B>Edit Saved Raid</b></center>';
cityId = t.save[y]['cityId'];
var m = '<BR><TABLE id=pbRaidAdd height=0% class=xtab><TR align="center">';
m+='<TR></tr><TR><TD width=25px>X= <INPUT id=toXCoord type=text size=3 maxlength=3 value='+t.save[y]['toXCoord']+'></td>';
m+='<TD width=10px></td><TD widht=25px>Y= <INPUT id=toYCoord type=text size=3 maxlength=3 value='+ t.save[y]['toYCoord'] +'></td>';
m+='<TD width=25px></td><TD>Round Trip: '+ timestr((t.save[y]['returnUnixTime'] - t.save[y]['destinationUnixTime'])*2)+ '</td></tr></table>';
m += '<BR><TABLE id=pbRaidAdd width=100% height=0% class=xtab><TR align="center">';
var rowcounter = 0;
for (var ui in unsafeWindow.cm.UNIT_TYPES){
var i = unsafeWindow.cm.UNIT_TYPES[ui];
rowcounter++;
if (rowcounter > 4) {
m += '</tr><tr align="center">';
rowcounter = 1;
}
m += '<td><table class=xtab><tr><td rowspan=2><img src="'+IMGURL+'units/unit_'+i+'_50.jpg?6545"></td><td>'+ addCommas(Seed.units['city'+cityId]['unt'+i]) +'</td></tr><tr><td><INPUT id=Unit'+i+' type=text size=6 maxlength=6 value="'+t.save[y]['unit'+i+'Count']+'"></td></tr></table></td>';
}
m += '</tr></table>';
m += '<BR><CENTER><SELECT id=AddKnights type=list></select></center>';
m+= '<BR><CENTER>'+ strButton20('Save', 'id=pbSaveRaid') +'</center>';
pop.getMainDiv().innerHTML = m;
t.getKnights(cityId);
document.getElementById ('AddKnights').value = t.save[y]['knightId'];
document.getElementById ('pbSaveRaid').addEventListener ('click', function(){
t.save[y]['knightId'] = parseInt(document.getElementById ('AddKnights').value);
t.save[y]['toXCoord'] = parseInt(document.getElementById ('toXCoord').value);
t.save[y]['toYCoord'] = parseInt(document.getElementById ('toYCoord').value);
for (var ui in unsafeWindow.cm.UNIT_TYPES){
var i = unsafeWindow.cm.UNIT_TYPES[ui];
t.save[y]['unit'+i+'Count'] = parseInt(document.getElementById ('Unit'+i).value);
}
var serverID = getServerId();
setTimeout (function (){GM_setValue ('SavedRaids_'+unsafeWindow.tvuid+'_'+serverID, JSON2.stringify(t.save));}, 0);
pop.show (false);
}, false);
pop.show (true);
},
EditRaid : function (y){
var t = Tabs.Raid;
var pop = new CPopup ('pbEditRaid', 0,0, 750,430, true);
if (t.popFirst){
pop.centerMe (mainPop.getMainDiv());
t.popFirst = false;
}
pop.getTopDiv().innerHTML = '<CENTER><B>Edit Raid</b></center>';
cityId = t.rslt['queue'][y]['botMarches']['cityId'];
var m = '<BR><TABLE id=pbRaidAdd height=0% class=xtab><TR align="center">';
m+='<TR></tr><TR><TD width=25px>X= <INPUT id=toXCoord type=text size=3 maxlength=3 value='+t.rslt['queue'][y]['botMarches']['toXCoord']+'></td>';
m+='<TD width=10px></td><TD widht=25px>Y= <INPUT id=toYCoord type=text size=3 maxlength=3 value='+ t.rslt['queue'][y]['botMarches']['toYCoord'] +'></td>';
m+='<TD width=25px></td><TD>Round Trip: '+ timestr((t.rslt['queue'][y]['botMarches']['returnUnixTime'] - t.rslt['queue'][y]['botMarches']['destinationUnixTime'])*2)+ '</td></tr></table>';
m += '<BR><TABLE id=pbRaidAdd width=100% height=0% class=xtab><TR align="center">';
var rowcounter = 0;
for (var ui in unsafeWindow.cm.UNIT_TYPES){
var i = unsafeWindow.cm.UNIT_TYPES[ui];
rowcounter++;
if (rowcounter > 4) {
m += '</tr><tr align="center">';
rowcounter = 1;
}
m += '<td><table class=xtab><tr><td rowspan=2><img src="'+IMGURL+'units/unit_'+i+'_50.jpg?6545"></td><td>'+ addCommas(Seed.units['city'+cityId]['unt'+i]) +'</td></tr><tr><td><INPUT id=Unit'+i+' type=text size=6 maxlength=6 value="'+t.rslt['queue'][y]['botMarches']['unit'+i+'Count']+'"></td></tr></table></td>';
}
m += '</tr></table>';
m += '<BR><CENTER><SELECT id=AddKnights type=list></select></center>';
m+= '<BR><CENTER>'+ strButton20('Save', 'id=pbRaidSave') +'</center>';
pop.getMainDiv().innerHTML = m;
t.getKnights(cityId);
document.getElementById ('AddKnights').value = t.rslt['queue'][y]['botMarches']['knightId'];
document.getElementById ('pbRaidSave').addEventListener ('click', function(){
var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
params.pf = 0;
params.ctrl = 'BotManager';
params.action = 'editMarch';
params.settings = {};
params.settings.cityId = t.rslt['queue'][y]['botMarches']['fromCityId'];
params.queue = {0:{botMarches:{botMarchStatus:1,botState:1},cityMarches:{}}};
params.queue[0].cityMarches.knightId = parseInt(document.getElementById ('AddKnights').value);
params.queue[0].cityMarches.toXCoord = parseInt(document.getElementById ('toXCoord').value);
params.queue[0].cityMarches.toYCoord = parseInt(document.getElementById ('toYCoord').value);
params.queue[0].cityMarches.unit0Count = 0; //document.getElementById ('Unit0').value;
for (var ui in unsafeWindow.cm.UNIT_TYPES){
var i = unsafeWindow.cm.UNIT_TYPES[ui];
params.queue[0]['cityMarches']['unit'+i+'Count'] = parseIntNan(document.getElementById ('Unit'+i).value);
}
params.queue[0].cityMarches.marchId = t.rslt['queue'][y]['botMarches']['marchId'];
new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/_dispatch.php" + unsafeWindow.g_ajaxsuffix, {
method: "post",
parameters: params,
loading: true,
onSuccess: function(rslt){
if (rslt.ok) {
pop.show (false);
unsafeWindow.cityinfo_army();
setTimeout(unsafeWindow.update_seed_ajax, 250);
setTimeout(t.GetRaids, (750),Seed.cities[i][0]);
}
},
},true);
}, false);
pop.show (true);
},
DeleteRaid : function (Id){
var t = Tabs.Raid;
var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
for (y in t.rslt['queue']) {
if (t.rslt['queue'][y]['botMarches'] != undefined) {
if (t.rslt['queue'][y]['botMarches']['marchId'] == Id) {
marchId = t.rslt['queue'][y]['botMarches']['marchId'];
cityId = t.rslt['queue'][y]['botMarches']['cityId'];
knightId = t.rslt['queue'][y]['botMarches']['knightId'];
toTileLevel = t.rslt['queue'][y]['botMarches']['toTileLevel'];
returnUnixTime = t.rslt['queue'][y]['botMarches']['returnUnixTime'];
destinationUnixTime = t.rslt['queue'][y]['botMarches']['destinationUnixTime'];
toXCoord = t.rslt['queue'][y]['botMarches']['toXCoord'];
toYCoord = t.rslt['queue'][y]['botMarches']['toYCoord'];
var units = {};
for (var ui in unsafeWindow.cm.UNIT_TYPES){
var i = unsafeWindow.cm.UNIT_TYPES[ui];
units[i] = t.rslt['queue'][y]['botMarches']['unit'+i+'Count'];
}
}
}
}
params.pf = 0;
params.ctrl = 'BotManager';
params.action = 'deleteMarch';
params.marchId = marchId;
params.settings = {};
params.settings.cityId = cityId;
new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/_dispatch.php" + unsafeWindow.g_ajaxsuffix, {
method: "post",
parameters: params,
loading: true,
onSuccess: function(rslt){
if (rslt.ok) {
var serverID = getServerId();
t.save = GM_getValue ('SavedRaids_'+unsafeWindow.tvuid+'_'+serverID);
if (t.save == null) t.save = GM_getValue ('SavedRaids_'+serverID);
if (t.save == undefined) t.save =new Array();
else t.save = JSON2.parse (t.save);
var RaidObj = {};
RaidObj.marchId = marchId;
RaidObj.cityId = cityId;
RaidObj.knightId = knightId;
RaidObj.toTileLevel = toTileLevel;
RaidObj.returnUnixTime = destinationUnixTime;
RaidObj.returnUnixTime = returnUnixTime;
RaidObj.toXCoord = toXCoord;
RaidObj.toYCoord = toYCoord;
for (var ui in unsafeWindow.cm.UNIT_TYPES){
var i = unsafeWindow.cm.UNIT_TYPES[ui];
RaidObj['unit'+i+'Count'] = units[i];
}
t.save.push (RaidObj);
for (u in Seed.queue_atkp['city' + cityId]){
if (Seed.queue_atkp['city' + cityId][u]['marchId'] == marchId){
delete Seed.queue_atkp['city' + cityId][u];
if (Object.keys(Seed.queue_atkp['city' + cityId]).length == 0) {
Seed.queue_atkp['city' + cityId] = uWCloneInto([]);
}
break;
}
}
for (u in Seed.knights['city' + cityId]){
if (Seed.knights['city' + cityId][u]['knightId'] == knightId){
Seed.knights['city' + cityId][u]["knightStatus"] = 1;
break;
}
}
GM_setValue ('SavedRaids_'+unsafeWindow.tvuid+'_'+serverID, JSON2.stringify(t.save));
unsafeWindow.cityinfo_army();
setTimeout(unsafeWindow.update_seed_ajax, 250);
t.GetRaids(cityId);
}
},
},true);
},
StopCityRaids : function (cityId){
var t = Tabs.Raid;
var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
params.pf = 0;
params.ctrl = 'BotManager';
params.action = 'stopAll';
params.settings = {};
params.settings.cityId = cityId;
new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/_dispatch.php" + unsafeWindow.g_ajaxsuffix, {
method: "post",
parameters: params,
loading: true,
onSuccess: function(rslt){
if (rslt.ok) {
}
},
},true);
setTimeout(t.GetRaids, (750), cityId);
},
StopAllRaids : function (){
var t = Tabs.Raid;
if (t.stopping == true || t.resuming == true || t.deleting == true) return;
if (t.activecount == 0) return;
t.stopping = true;
for (i=0;i<Seed.cities.length;i++){
setTimeout(t.DoAllStop, (i*1500),i);
}
},
ResumeAllRaids : function (){
var t = Tabs.Raid;
if (t.stopping == true || t.resuming == true || t.deleting == true) return;
if (t.stopcount == 0) return;
t.resuming = true;
for (i=0;i<Seed.cities.length;i++){
setTimeout(t.DoAllResume, (i*1500),i);
}
},
DeleteAllRaids : function (){
var t = Tabs.Raid;
if (t.stopping == true || t.resuming == true || t.deleting == true) return;
if (t.stopcount == 0) return;
t.deleting = true;
count=0;
t.count = t.stopcount;
for (d=0; d< Seed.cities.length;d++) {
var cityId = Seed.cities[d][0];
var city_atkp = Seed.queue_atkp['city'+cityId];
for (var e in city_atkp){
destinationUnixTime = city_atkp[e]['destinationUnixTime'];
MarchId = city_atkp[e]['marchId'];
MarchStatus = city_atkp[e]['marchStatus'];
MarchType = city_atkp[e]['marchType'];
botMarchStatus = city_atkp[e]['botMarchStatus'];
if (MarchType == 9 && botMarchStatus == 3 && MarchStatus == 10) {
count++;
setTimeout(t.DoAllDelete, (count*1250), MarchId,d,count);
}
}
}
},
DoAllStop: function(i) {
var t = Tabs.Raid;
var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
params.pf = 0;
params.ctrl = 'BotManager';
params.action = 'stopAll';
params.settings = {};
params.settings.cityId = Seed.cities[i][0];
new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/_dispatch.php" + unsafeWindow.g_ajaxsuffix, {
method: "post",
parameters: params,
loading: true,
onSuccess: function(rslt){
if (rslt.ok) {
t.stopprogress = t.stopprogress + (100/Seed.cities.length);
actionLog('Stopping: '+ Seed.cities[i][1],'RAIDS');
t.updatebotbutton('Stopping: '+ t.stopprogress.toFixed(0) + '%', 'pboldraidtab');
if (t.stopprogress.toFixed(0) == 100) {
t.stopprogress = 0;
setTimeout(function(){t.updatebotbutton('Raids: S ('+ t.activecount + ')', 'pboldraidtab');t.stopping = false;}, (5000));
}
}
else {
if (rslt.msg == "The system is busy, please try again later") setTimeout (t.DoAllStop, (2000),i);
else {
t.stopprogress = t.stopprogress + (100/Seed.cities.length);
actionLog('Stopping: '+ Seed.cities[i][1] + ' - ' + rslt.msg,'RAIDS');
t.updatebotbutton('Stopping: '+ t.stopprogress.toFixed(0) + '%', 'pboldraidtab')
if (t.stopprogress.toFixed(0) == 100) {
t.stopprogress = 0;
setTimeout(function(){t.updatebotbutton('Raids: S ('+ t.activecount + ')', 'pboldraidtab');t.stopping = false;}, (5000));
}
}
}
},
},true);
},
DoAllResume: function(i) {
var t = Tabs.Raid;
var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
params.pf = 0;
params.ctrl = 'BotManager';
params.action = 'resumeAll';
params.settings = {};
params.settings.cityId = Seed.cities[i][0];
new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/_dispatch.php" + unsafeWindow.g_ajaxsuffix, {
method: "post",
parameters: params,
loading: true,
onSuccess: function(rslt){
if (rslt.ok) {
t.stopprogress = t.stopprogress + (100/Seed.cities.length);
actionLog('Resuming: '+ Seed.cities[i][1],'RAIDS');
t.updatebotbutton('Resuming: '+ t.stopprogress.toFixed(0) + '%', 'pboldraidtab');
if (t.stopprogress.toFixed(0) == 100) {
t.stopprogress = 0;
setTimeout(function(){t.updatebotbutton('Raids: S ('+ t.activecount + ')', 'pboldraidtab');t.resuming = false;}, (5000));
}
}
else {
if (rslt.msg == "The system is busy, please try again later") setTimeout (t.DoAllResume, (2000),i);
else {
t.stopprogress = t.stopprogress + (100/Seed.cities.length);
actionLog('Resuming: '+ Seed.cities[i][1] + ' - ' + rslt.msg,'RAIDS');
t.updatebotbutton('Resuming: '+ t.stopprogress.toFixed(0) + '%', 'pboldraidtab')
if (t.stopprogress.toFixed(0) == 100) {
t.stopprogress = 0;
setTimeout(function(){t.updatebotbutton('Raids: S ('+ t.activecount + ')', 'pboldraidtab');t.resuming = false;}, (5000));
}
}
}
},
},true);
},
DoAllDelete : function (Id,city,count){
var t = Tabs.Raid;
var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
cityID = 'city'+ Seed.cities[city][0];
for (f in Seed.queue_atkp[cityID]){
if (Seed.queue_atkp[cityID][f]['marchId'] == Id) {
marchId = Seed.queue_atkp[cityID][f]['marchId'];
cityId = Seed.queue_atkp[cityID][f]['cityId'];
knightId = Seed.queue_atkp[cityID][f]['knightId'];
toTileLevel = Seed.queue_atkp[cityID][f]['toTileLevel'];
returnUnixTime = Seed.queue_atkp[cityID][f]['returnUnixTime'];
destinationUnixTime = Seed.queue_atkp[cityID][f]['destinationUnixTime'];
toXCoord = Seed.queue_atkp[cityID][f]['toXCoord'];
toYCoord = Seed.queue_atkp[cityID][f]['toYCoord'];
var units = {};
for (var ui in unsafeWindow.cm.UNIT_TYPES){
var i = unsafeWindow.cm.UNIT_TYPES[ui];
units[i] = Seed.queue_atkp[cityID][f]['unit'+i+'Count'];
}
}
}
params.pf = 0;
params.ctrl = 'BotManager';
params.action = 'deleteMarch';
params.marchId = marchId;
params.settings = {};
params.settings.cityId = cityId;
new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/_dispatch.php" + unsafeWindow.g_ajaxsuffix, {
method: "post",
parameters: params,
loading: true,
onSuccess: function(rslt){
if (rslt != "") {
var serverID = getServerId();
t.save = GM_getValue ('SavedRaids_'+unsafeWindow.tvuid+'_'+serverID, "[]");
if (t.save == undefined) t.save = GM_getValue ('SavedRaids_'+serverID, "[]");
if (t.save != undefined) t.save = JSON2.parse (t.save);
if (t.save == undefined) t.save =new Array();
var RaidObj = {};
RaidObj.marchId = marchId;
RaidObj.cityId = cityId;
RaidObj.knightId = knightId;
RaidObj.toTileLevel = toTileLevel;
RaidObj.returnUnixTime = destinationUnixTime;
RaidObj.returnUnixTime = returnUnixTime;
RaidObj.toXCoord = toXCoord;
RaidObj.toYCoord = toYCoord;
for (var ui in unsafeWindow.cm.UNIT_TYPES){
var u = unsafeWindow.cm.UNIT_TYPES[ui];
RaidObj['unit'+u+'Count'] = units[u];
}
t.save.push (RaidObj);
for (u in Seed.queue_atkp['city' + cityId]){
if (Seed.queue_atkp['city' + cityId][u]['marchId'] == marchId){
delete Seed.queue_atkp['city' + cityId][u];
if (Object.keys(Seed.queue_atkp['city' + cityId]).length == 0) {
Seed.queue_atkp['city' + cityId] = uWCloneInto([]);
}
break;
}
}
for (u in Seed.knights['city' + cityId]){
if (Seed.knights['city' + cityId][u]['knightId'] == knightId){
Seed.knights['city' + cityId][u]["knightStatus"] = 1;
break;
}
}
setTimeout (function (){GM_setValue ('SavedRaids_'+unsafeWindow.tvuid+'_'+serverID, JSON2.stringify(t.save));}, 0);
unsafeWindow.cityinfo_army();
setTimeout(unsafeWindow.update_seed_ajax, 250);
}
},
},true);
t.stopprogress = count * (100/t.count);
actionLog('Deleting: '+ Seed.cities[city][1],'RAIDS');
t.updatebotbutton('Deleting: '+ t.stopprogress.toFixed(0) + '%', 'pboldraidtab');
if (t.stopprogress.toFixed(0) == 100) {
t.stopprogress = 0;
setTimeout(function(cid){t.GetRaids(cid); t.updatebotbutton('Raids: S ('+ t.activecount + ')', 'pboldraidtab');t.deleting = false; }, 5000, cityId);
}
},
DeleteCityRaids : function (cityId){
var t = Tabs.Raid;
if (t.stopping == true || t.resuming == true || t.deleting == true) return;
count=0;
for (d=0; d< Seed.cities.length;d++) {
if (Seed.cities[d][0]==cityId) {
var cityId = Seed.cities[d][0];
var city_atkp = Seed.queue_atkp['city'+cityId];
for (var e in city_atkp){
destinationUnixTime = city_atkp[e]['destinationUnixTime'];
MarchStatus = city_atkp[e]['marchStatus'];
MarchType = city_atkp[e]['marchType'];
botMarchStatus = city_atkp[e]['botMarchStatus'];
if (MarchType == 9 && botMarchStatus == 3 && MarchStatus == 10) {
count++;
}
}
}
}
t.count = count;
if (t.count == 0) return;
t.deleting = true;
count=0;
for (d=0; d< Seed.cities.length;d++) {
if (Seed.cities[d][0]==cityId) {
var cityId = Seed.cities[d][0];
var city_atkp = Seed.queue_atkp['city'+cityId];
for (var e in city_atkp){
destinationUnixTime = city_atkp[e]['destinationUnixTime'];
MarchId = city_atkp[e]['marchId'];
MarchStatus = city_atkp[e]['marchStatus'];
MarchType = city_atkp[e]['marchType'];
botMarchStatus = city_atkp[e]['botMarchStatus'];
if (MarchType == 9 && botMarchStatus == 3 && MarchStatus == 10) {
count++;
setTimeout(t.DoAllDelete, (count*1250), MarchId,d,count);
}
}
}
}
},
AddRaid : function (Id){
var t = Tabs.Raid;
var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
update = {};
params.pf = 0;
params.ctrl = 'BotManager';
params.action = 'saveMarch';
params.settings = {};
params.queue = {0:{botMarches:{botMarchStatus:1,botState:1},cityMarches:{}}};
for (y in t.save){
if (t.save[y]['marchId'] == Id){
params.settings.cityId = t.save[y]['cityId'];
params.queue[0].cityMarches.knightId = t.save[y]['knightId']; //parseInt(document.getElementById('AddKnights').value);
params.queue[0].cityMarches.toXCoord = t.save[y]['toXCoord'];
params.queue[0].cityMarches.toYCoord = t.save[y]['toYCoord'];
params.queue[0].cityMarches.unit0Count = 0;
for (var ui in unsafeWindow.cm.UNIT_TYPES){
var i = unsafeWindow.cm.UNIT_TYPES[ui];
params.queue[0]['cityMarches']['unit'+i+'Count'] = t.save[y]['unit'+i+'Count'];
}
}
}
new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/_dispatch.php" + unsafeWindow.g_ajaxsuffix, {
method: "post",
parameters: params,
loading: true,
onSuccess: function(rslt){
if (rslt.ok) {
t.GetRaids(params.settings.cityId);
unsafeWindow.cityinfo_army();
setTimeout(unsafeWindow.update_seed_ajax, 250);
for (yy=0;yy<t.save.length;yy++){
if (t.save[yy]['marchId'] == Id){
t.save.splice (yy,1);
}
}
var serverID = getServerId();
setTimeout (function (){GM_setValue ('SavedRaids_'+unsafeWindow.tvuid+'_'+serverID, JSON2.stringify(t.save));}, 0);
t.paint();
} else {
alert('Error: '+ rslt.msg);
}
},
},true);
},
getKnights : function(cityId){
var t = Tabs.Raid;
var knt = new Array();
var status ="";
for (k in Seed.knights['city' + cityId]){
if ( Seed.leaders['city' + cityId]["resourcefulnessKnightId"] != Seed.knights['city' + cityId][k]["knightId"] && Seed.leaders['city' + cityId]["politicsKnightId"] != Seed.knights['city' + cityId][k]["knightId"] && Seed.leaders['city' + cityId]["combatKnightId"] != Seed.knights['city' + cityId][k]["knightId"] && Seed.leaders['city' + cityId]["intelligenceKnightId"] != Seed.knights['city' + cityId][k]["knightId"]){
if (Seed.knights['city' + cityId][k]["knightStatus"] == 1 ) status = "Free";
else status = "Marching";
knt.push ({
Name: Seed.knights['city' + cityId][k]["knightName"],
Combat: parseInt(Seed.knights['city' + cityId][k]["combat"]),
ID: Seed.knights['city' + cityId][k]["knightId"],
Status: status,
});
}
}
knt = knt.sort(function sort(a,b) {a = a['Combat'];b = b['Combat'];return a == b ? 0 : (a > b ? -1 : 1);});
document.getElementById('AddKnights').options.length=0;
var o = document.createElement("option");
o.text = '--Choose a Knight--';
o.value = 0;
document.getElementById("AddKnights").options.add(o);
for (k in knt){
if (knt[k]["Name"] !=undefined){
var o = document.createElement("option");
o.text = (knt[k]["Name"] + ' (' + knt[k]["Combat"] +') (' + knt[k]["Status"] +')');
o.value = knt[k]["ID"];
document.getElementById("AddKnights").options.add(o);
}
}
},
clickCitySelect : function (city){
var t = Tabs.Raid;
t.cityId = city['id'];
t.GetRaids(t.cityId);
},
GetRaids : function(cityId){
var t = Tabs.Raid;
var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
params.pf = 0;
params.ctrl = 'BotManager';
params.action = 'getMarches';
params.settings = {};
params.settings.cityId = cityId;
new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/_dispatch.php" + unsafeWindow.g_ajaxsuffix, {
method: "post",
parameters: params,
loading: true,
onSuccess: function(rslt){
if (rslt.ok) {
t.rslt = rslt;
t.paint();
unsafeWindow.cityinfo_army();
setTimeout(unsafeWindow.update_seed_ajax, 250);
}
},
},true);
},
resetRaids : function(cityId,cityName){
var t = Tabs.Raid;
var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
params.pf = 0;
params.ctrl = 'BotManager';
params.action = 'resetRaidTimer';
params.settings = {};
params.settings.cityId = cityId;
new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/_dispatch.php" + unsafeWindow.g_ajaxsuffix, {
method: "post",
parameters: params,
loading: true,
onSuccess: function(rslt){
if (rslt.ok) {
unsafeWindow.cityinfo_army();
setTimeout(unsafeWindow.update_seed_ajax, 250);
t.citiesdone += cityName + ' ';
}
},
},true);
},
sendreport: function(){
var t = Tabs.Raid;
if(!Options.RaidOptions.foodreport) return;
var now = new Date().getTime()/1000.0;
now = now.toFixed(0);
if (now < (parseInt(Options.RaidOptions.LastReport)+(Options.RaidOptions.MsgInterval*60*60))) return;
var total = 0;
var message = 'Raid Stats: %0A';
message += '%0A Food Gain (for '+ Options.RaidOptions.MsgInterval +' hour of raiding) %0A';
for (q=1;q<=Seed.cities.length;q++){
var cityID = 'city' + Seed.cities[q-1][0];
var gain = parseInt(Seed.resources[cityID]['rec1'][0] / 3600) - parseIntNan(Options.RaidOptions.Foodstatus[q]);
message+= Seed.cities[q-1][1] + ': Start: ' + addCommas(parseIntNan(Options.RaidOptions.Foodstatus[q])) + ' End :' + addCommas(parseInt(Seed.resources[cityID]['rec1'][0] / 3600)) + ' Gain: ';
message += addCommas(gain) + '%0A';
total += gain;
Options.RaidOptions.Foodstatus[q] = parseIntNan(Seed.resources[cityID]['rec1'][0] / 3600);
}
message += '%0A Total food gain : '+addCommas(total)+'%0A';
var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
params.emailTo = Seed.player['name'];
params.subject = "Raid Overview";
params.message = message;
params.requestType = "COMPOSED_MAIL";
new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/getEmail.php" + unsafeWindow.g_ajaxsuffix, {
method: "post",
parameters: params,
onSuccess: function (rslt) {
if (rslt.ok) {
DeleteLastMessage();
} else {
}
},
onFailure: function () {
},
},true);
Options.RaidOptions.LastReport = now;
saveOptions();
},
hide : function (){
},
show : function (){
},
updatebotbutton : function (text, id) {
var but=document.getElementById(id);
but.innerHTML = '<span style="color: #ff6">'+text+'</span>';
},
};