您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Auto Farm
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/399421/787671/FarmTab.js
/******autofarm***********/ Tabs.farm = { tabLabel: 'Farm', tabOrder : 8000, tabColor : 'red', myDiv : null, MapAjax : new CMapAjax(), BlockList : [], Blocks : [], popFirst : true, opt : {}, nextattack : null, updateSeedTimer: null, searchRunning : false, tilesSearched : 0, tilesFound : 0, curX : 0, curY : 0, lastX : 0, firstX : 0, firstY : 0, lastY : 0, rallypointlevel:0, knt:{}, helpArray:{}, FarmArray:{}, marchArray:[], troopDef : [], lookup:1, city:0, deleting:false, DipArray: ["friendly","hostile","friendlyToThem","friendlyToYou","neutral","unallied"], interval: ["Continuously","1 Hour","2 Hours","3 Hours","6 Hours","12 Hours","24 Hours","29 Hours","36 Hours","2 Days","4 Days"], Options : { RallyClip: 0, Running: false, MinMight: 10000000000, MaxMight: 999999999999, Interval: 1, SendInterval: 5, MaxDistance: 50, Inactive:1, MinFarmRes:250, DeleteReports:true, Troops: {1: 0,2: 0,3: 0,4: 0,5: 0,6: 0,7: 0,8: 0,9: 0,10: 0,11: 0,12: 0}, FarmNumber: {1: 0,2: 0,3: 0,4: 0,5: 0,6: 0,7: 0,8: 0}, CityEnable: {1: true,2: false,3: false,4: false,5: false,6: false,7: false,8: false}, CityLevel: {1: false,2: false,3: false,4: false,5: false,6: false,7: false,8: false,9: true,10: true,11: true,12: true,13: true,14: true,15: true}, Diplomacy: {friendly: false,hostile: true,friendlyToThem: false,friendlyToYou: false,neutral:true,unallied:false}, FarmMarches: [], farmMarches: {}, Attacks:0, Checks:0, Farmbtns:false, }, init : function (div){ var t = Tabs.farm; t.myDiv = div; for (var ui in unsafeWindow.cm.UNIT_TYPES){ var i = unsafeWindow.cm.UNIT_TYPES[ui]; var trp = []; trp.push(unsafeWindow.unitcost['unt'+i][0]); trp.push(i); t.troopDef.push(trp); } if (!Options.FarmOptions) { Options.FarmOptions = t.Options; } else { for (var y in t.Options) { if (!Options.FarmOptions.hasOwnProperty(y)) { Options.FarmOptions[y] = t.Options[y]; } } } if(Options.FarmOptions.Farmbtns)AddSubTabLink(unsafeWindow.g_js_strings.grove.farms,t.toggleBarbState, 'FarmToggleTab'); var m = '<DIV id=pbTowrtDivF class=divHeader align=center>AUTOMATED FARMING FUNCTION</div><TABLE id=pbbarbingfunctions width=100% height=0% class=pbTab><TR align="center">'; if (Options.FarmOptions.Running == false) { m += '<TD><INPUT id=FarmAttSearch type=submit value="Farming = OFF"></td>'; if(document.getElementById('FarmToggleTab'))document.getElementById('FarmToggleTab').innerHTML = '<span style="color: #CCC">'+unsafeWindow.g_js_strings.grove.farms+': Off</span>'; } else { m += '<TD><INPUT id=FarmAttSearch type=submit value="Farming = ON"></td>'; if(document.getElementById('FarmToggleTab'))document.getElementById('FarmToggleTab').innerHTML = '<span style="color: #FFFF00">'+unsafeWindow.g_js_strings.grove.farms+': On</span>'; } m +='<TD><INPUT id=pbpaintFarms type=submit value="Show Farms">'; m += '<SELECT id=pbFarmcity type=list></td></tr></table>'; m += '</tr></table></div>'; m += '<DIV id=pbTraderDivD class=divHeader align=center>FARMING STATS</div>'; m += '<TABLE id=pbfarmstats width=95% height=0% class=pbTab><TR align="left"><TR>'; for(i=0;i<Seed.cities.length;i++){ m += '<TD>' + Seed.cities[i][1] +'</td>'; } m+='</tr><TR>'; for(i=0;i<Seed.cities.length;i++){ m += '<TD><DIV><span id='+ 'pdtotalFarm' + i +'></span></div></td>'; } m+='</tr><TR>'; for(i=0;i<Seed.cities.length;i++){ m += '<TD><DIV><span id='+ 'pddataFarm' + i +'></span></div></td>'; } m+='</tr><TR>' for(i=0;i<Seed.cities.length;i++){ m += '<TD><DIV><span id='+ 'pddataFarmarray' + i +'></span></div></td>'; } m+='</tr></table>'; m+='<DIV id=FarmCheck></div>'; m += '<DIV id=pbTraderDivD class=divHeader align=center>FARMING OPTIONS</div>'; m += '<TABLE id=pbfarmstats width=90% height=0% class=pbTab>'; m +='<tr><td>Add toggle button: </td><td><INPUT id=pbfarmtoggle type=checkbox '+(Options.FarmOptions.Farmbtns?'CHECKED':'')+' \></td></tr>'; m += '<TR><TD>Keep rallypoint slot(s) free: </td><TD nowrap><INPUT id=FarmRallyClip type=text size=2 maxlength=2 value=' + Options.FarmOptions.RallyClip +' >'; m += ' Attacks interval:<INPUT id=FarmAttacksInterval type=text size=2 maxlength=2 value=' + Options.FarmOptions.SendInterval +' sec.></td>'; m += '<TD>Farm Interval:<SELECT id=FarmInterval type=list>'; m += ' <INPUT id=FarmReports type=checkbox '+(Options.FarmOptions.DeleteReports?'CHECKED':'')+'> - Delete reports</td></tr>'; m += '<TR><TD>Search distance:</td><TD><INPUT type=text id=FarmRadius size=3 maxlength=3 value='+ Options.FarmOptions.MaxDistance +'>'; m += '<INPUT id=FarmSearch type=submit value="Search ALL again" style="background-color:#DEDEDE;color:#fff">'; m +='</td>'; m +='<TD><INPUT id=pbcompactFarms1 type=submit value="Remove NOT Farms"></td>' m +='</tr>'; m += '<TR><TD>Might:</td>'; m += '<TD width=50>Min.:<INPUT type=text id=FarmMinMight size=10 maxlength=11 value='+ Options.FarmOptions.MinMight +'></td>'; m += '<TD>Max.:<INPUT type=text id=FarmMaxMight size=10 maxlength=14 value='+ Options.FarmOptions.MaxMight +'></td></tr>'; m += '<TR><TD>Farm if inactive for more then: </td>'; m += '<TD><INPUT type=text id=FarmInactive size=2 value='+ Options.FarmOptions.Inactive +'>days(checked every 23 hours).</td>'; m += '<TD> Farm is BAD if brought less then: '; m += '<INPUT type=text id=FarmBadRess size=2 value='+ Options.FarmOptions.MinFarmRes +'> millions of resources</td>' m += '</tr></table></tr>'; m +='<TABLE id=pbfarmstats width=90% height=0% class=pbTabLined3>' m +='<TR><TD>Works only for DISABLED cities:</td>'; m +='<TD><INPUT id=pbFarmSearch2 type=submit value="Search again"></td>'; m +='<TD><INPUT id=pbcompactFarms2 type=submit value="Remove BAD Farms"></td>'; m +='<TD><INPUT id=pbcompactFarms3 type=submit value="Reset collected resources info"></td>' m +='</tr></table>'; m += '<TABLE id=pbfarmstats width=90% height=0% class=pbTab><TR align="left"><TR><TD width=100>City:</td>'; for (i=1;i<=Seed.cities.length;i++) { m+='<TD class=pbCityEn><INPUT id=CityEnable'+ i +' type=checkbox '+(Options.FarmOptions.CityEnable[i]?'CHECKED':'')+'>'+ Seed.cities[i-1][1] +'</td>'; } m += '</tr></table><TABLE id=pbfarmstats width=90% height=0% class=pbTab><TR align="left"><TD width=100>City Level:</td>'; for (i=1;i<=15;i++) { m+='<TD class=pbCityOpt><INPUT id=CityLevel'+ i +' type=checkbox '+(Options.FarmOptions.CityLevel[i]?'CHECKED':'')+'>'+ i +'</td>'; } m += '</tr></table><TABLE id=pbfarmstats width=90% height=0% class=pbTab><TR align="left"><TR><TD width=100>Diplomacy:</td>'; for (i=0;i<t.DipArray.length;i++) { m+='<TD class=pbDipOpt><INPUT id=Diplomacy'+ t.DipArray[i] +' type=checkbox '+(Options.FarmOptions.Diplomacy[t.DipArray[i]]?'CHECKED':'')+'>'+ t.DipArray[i] +'</td>'; } m+='</tr></table>'; var icon_link = 'units/'; var dude = unsafeWindow.unitnamedesctranslated; m += '<DIV id=pbTraderDivD class=divHeader align=center>FARMING TROOPS</div>'; var c = 0; var LineBreak = 6; if (GlobalOptions.btWinSize.x == 750) {LineBreak = 4;} if (GlobalOptions.btWinSize.x == 1250) {LineBreak = 8;} m += '<TABLE id=pbaddreasignroute width=100% height=0% class=pbTab><TR align="center">'; for (i=1; i<parseInt(t.troopDef.length+1); i++) { var n = '<td><table class=xtab cellspacing=0 cellpadding=0><tr style="vertical-align:top;"><td rowspan=2 width="30px"><img src='+IMGURL+icon_link+'unit_'+t.troopDef[i-1][1]+'_50.jpg title='+dude['unt'+t.troopDef[i-1][1]][0]+'></td><td>'+dude['unt'+t.troopDef[i-1][1]][0]+'</td></tr>'; n += '<tr><td><INPUT class=pbTroopOpt id="FarmTroop'+i+'" type=text size=11 maxlength=12 value="'+parseIntNan(Options.FarmOptions.Troops[i])+'" \></td></tr></table></td>'; if (c%LineBreak==0) m+= '</tr><tr>'; m+=n; c++; } m += '</tr></table><br> '; t.myDiv.innerHTML = m; t.checkFarmData(); if(t.nextattack == null) t.nextattack = setInterval(t.getnextCity, parseInt(Math.random()*3)+Options.FarmOptions.SendInterval*1000); if (Options.FarmOptions.Running == true) { setInterval(t.startdeletereports,(120000)); setInterval( t.checkMarches ,parseInt(Math.random()*3)+14*1000); } document.getElementById('pbfarmtoggle').addEventListener('click', function(){ Options.FarmOptions.Farmbtns=document.getElementById('pbfarmtoggle').checked; saveOptions(); },false); document.getElementById('pbFarmcity').options.length=0; for (i=0;i<Seed.cities.length;i++){ var o = document.createElement("option"); o.text = Seed.cities[i][1] o.value = i+1; document.getElementById("pbFarmcity").options.add(o); } document.getElementById('FarmInterval').options.length=0; for (i=0;i<t.interval.length;i++){ var o = document.createElement("option"); o.text = t.interval[i]; o.value = i; document.getElementById("FarmInterval").options.add(o); } document.getElementById('FarmInterval').value = Options.FarmOptions.Interval; for(i=0;i<Seed.cities.length;i++){ var elem = 'pdtotalFarm'+i; if (t.FarmArray[i+1] == undefined) document.getElementById(elem).innerHTML = 'No Data'; else { var l_ok_farms =0; for (a=0;a<t.helpArray[i+1].length;a++){ if ((t.helpArray[i+1][a]['DaysInactive']=='?') ||(t.helpArray[i+1][a]['DaysInactive']> Options.FarmOptions.Inactive)) l_ok_farms++; } document.getElementById(elem).innerHTML = '' + l_ok_farms+'/'+t.FarmArray[i+1].length +'/'+ t.helpArray[i+1].length+''; } } document.getElementById('FarmInterval').addEventListener('change', function(){ Options.FarmOptions.Interval = document.getElementById('FarmInterval').value; saveOptions(); } , false); document.getElementById('FarmRallyClip').addEventListener('change', function(){ Options.FarmOptions.RallyClip = document.getElementById('FarmRallyClip').value; saveOptions(); } , false); document.getElementById('FarmAttacksInterval').addEventListener('change', function(){ Options.FarmOptions.SendInterval = document.getElementById('FarmAttacksInterval').value; saveOptions(); } , false); document.getElementById('FarmReports').addEventListener('change', function(){ Options.FarmOptions.DeleteReports = document.getElementById('FarmReports').checked; saveOptions(); } , false); document.getElementById('FarmRadius').addEventListener('change', function(){ Options.FarmOptions.MaxDistance = parseInt(document.getElementById('FarmRadius').value); saveOptions(); } , false); document.getElementById('FarmAttSearch').addEventListener('click', function(){t.toggleBarbState(this)} , false); document.getElementById('FarmSearch').addEventListener('click', function(){ for (i=1;i<=Seed.cities.length;i++) { GM_deleteValue('Farms_' + unsafeWindow.tvuid + '_city_' + i + '_' + getServerId()); GM_deleteValue('Farms_' + Seed.player['name'] + '_city_' + i + '_' + getServerId()); } for(i=0;i<Seed.cities.length;i++){ var elem = 'pdtotalFarm'+i; document.getElementById(elem).innerHTML = 'No Data'; } t.checkFarmData(); } , false); document.getElementById('pbFarmSearch2').addEventListener('click', function(){ for (i=1;i<=Seed.cities.length;i++) { if (Options.FarmOptions.CityEnable[i] == false) { GM_deleteValue('Farms_' + unsafeWindow.tvuid + '_city_' + i + '_' + getServerId()); GM_deleteValue('Farms_' + Seed.player['name'] + '_city_' + i + '_' + getServerId()); } } for(i=0;i<Seed.cities.length;i++){ var elem = 'pdtotalFarm'+i; if (Options.FarmOptions.CityEnable[i+1] == false)document.getElementById(elem).innerHTML = 'No Data'; } t.checkFarmData(); } , false); document.getElementById('pbcompactFarms1').addEventListener('click', function(){ for(i=0;i<Seed.cities.length;i++){ var elem = 'pdtotalFarm'+i; if (Options.FarmOptions.CityEnable[i] == false) document.getElementById(elem).innerHTML = 'No Data'; } t.compactFarmData(); } , false); document.getElementById('pbcompactFarms2').addEventListener('click', function(){ for(i=0;i<Seed.cities.length;i++){ var elem = 'pdtotalFarm'+i; document.getElementById(elem).innerHTML = 'No Data'; } t.compactFarmData2(); } , false); document.getElementById('pbcompactFarms3').addEventListener('click', function(){ for(i=0;i<Seed.cities.length;i++){ var elem = 'pdtotalFarm'+i; document.getElementById(elem).innerHTML = 'No Data'; } t.compactFarmData3(); } , false); document.getElementById('pbpaintFarms').addEventListener('click', function(){t.showFarms(document.getElementById("pbFarmcity").value,Seed.cities[document.getElementById("pbFarmcity").value -1][1]);},false); document.getElementById('FarmMinMight').addEventListener('change', function(){ Options.FarmOptions.MinMight = parseInt(document.getElementById('FarmMinMight').value); t.FilterFarms(); saveOptions(); } , false); document.getElementById('FarmMaxMight').addEventListener('change', function(){ Options.FarmOptions.MaxMight = parseInt(document.getElementById('FarmMaxMight').value); t.FilterFarms(); saveOptions(); } , false); document.getElementById('FarmInactive').addEventListener('change', function(){ Options.FarmOptions.Inactive = parseInt(document.getElementById('FarmInactive').value); t.FilterFarms(); saveOptions(); } , false); document.getElementById('FarmBadRess').addEventListener('change', function(){ Options.FarmOptions.MinFarmRes = parseInt(document.getElementById('FarmBadRess').value); t.FilterFarms(); saveOptions(); } , false); var element = document.getElementsByClassName('pbTroopOpt'); for (k=0;k<element.length;k++){ element[k].addEventListener('change', function(){ for (i=1; i<parseInt(t.troopDef.length+1); i++) { Options.FarmOptions.Troops[i] = parseIntNan(document.getElementById('FarmTroop' + i).value); saveOptions(); } }, false); } element = document.getElementsByClassName('pbCityOpt'); for (k=0;k<element.length;k++){ element[k].addEventListener('change', function(){ for (i=1;i<=15;i++){ Options.FarmOptions.CityLevel[i] = document.getElementById('CityLevel' + i).checked; saveOptions(); } t.FilterFarms(); }, false); } element = document.getElementsByClassName('pbCityEn'); for (k=0;k<element.length;k++){ element[k].addEventListener('change', function(){ for (i=1;i<=Seed.cities.length;i++){ Options.FarmOptions.CityEnable[i] = document.getElementById('CityEnable' + i).checked; saveOptions(); } t.FilterFarms(); }, false); } element = document.getElementsByClassName('pbDipOpt'); for (k=0;k<element.length;k++){ element[k].addEventListener('change', function(){ for (i=0;i<t.DipArray.length;i++){ Options.FarmOptions.Diplomacy[t.DipArray[i]] = document.getElementById('Diplomacy' + t.DipArray[i]).checked; saveOptions(); } t.FilterFarms(); }, false); } }, checkMarches: function () { var t = Tabs.farm; for (i=0;i<Options.FarmOptions.FarmMarches.length;i++){ var cityId = "city"+ Options.FarmOptions.FarmMarches[i]["cityId"]; var cityNo = Options.FarmOptions.FarmMarches[i]["city"]; var marchID = Options.FarmOptions.FarmMarches[i]["marchId"]; var farmNo = Options.FarmOptions.FarmMarches[i]["number"] var marchId = "m" + marchID; if (Seed.queue_atkp[cityId][marchId] !=undefined){ var l_marchStatus = Seed.queue_atkp[cityId][marchId].marchStatus; if (Seed.queue_atkp[cityId][marchId].marchType==4) { if ((l_marchStatus==8 &&Seed.queue_atkp[cityId][marchId].hasUpdated)||(l_marchStatus==5)){ //actionLog('CityNo '+cityNo + '; i ='+i+'; farmNo'+farmNo+';marchID-'+marchID+';marchstatus'+l_marchStatus+'. '+Seed.queue_atkp[cityId][marchId].hasUpdated); Options.FarmOptions.Checks++; Options.FarmOptions.FarmMarches.splice(i,1); saveOptions(); //document.getElementById('FarmCheck').innerHTML = "Attacks: " + Options.FarmOptions.Attacks + " - Checks:" + Options.FarmOptions.Checks+' (Last city '+cityNo+')'; t.getRetMarchInfo (marchID,cityNo,farmNo, parseInt(t.FarmArray[cityNo][farmNo]["Gold"]), parseInt(t.FarmArray[cityNo][farmNo]["Food"]), parseInt(t.FarmArray[cityNo][farmNo]["Wood"]),parseInt(t.FarmArray[cityNo][farmNo]["Stone"]), parseInt(t.FarmArray[cityNo][farmNo]["Ore"]),0,parseInt(t.helpArray[cityNo][farmNo]["empty"])); saveOptions(); } } } else { Options.FarmOptions.FarmMarches.splice(i,1); saveOptions(); } } }, checkInactives : function (citynumber,city,FarmNumber,xcoord,ycoord,kid,uid,trps){ var t = Tabs.farm; var now = new Date().getTime()/1000.0; var hours = (now - t.FarmArray[city][FarmNumber]['LastCheck']) / 3600; if (t.FarmArray[city][FarmNumber]['DaysInactive'] == "?" || hours > 12){ 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) { var lastLogin = rslt.playerInfo.lastLogin; var fullDate = lastLogin.substr(0,4) +", "+ lastLogin.substr(5,2) +", "+ lastLogin.substr(8,2) ; var time = new Date (fullDate).getTime()/1000; var days = Math.floor((now - time) / 86400); t.FarmArray[city][FarmNumber]['DaysInactive'] = days; var AllianceName = rslt.playerInfo.allianceName; t.FarmArray[city][FarmNumber]["AllianceName"] = AllianceName; if (!(!!AllianceName)) {t.FarmArray[city][FarmNumber]["Diplomacy"] = 'unallied';t.FarmArray[city][FarmNumber]["AllianceName"]="";} else { if (t.FarmArray[city][FarmNumber]["Diplomacy"] == 'unallied') t.FarmArray[city][FarmNumber]["Diplomacy"]='neutral' }; t.FarmArray[city][FarmNumber]["might"] = rslt.playerInfo.might; for (i=0;i<t.helpArray[city].length;i++){ if (xcoord == parseInt(t.helpArray[city][i]['x']) && ycoord == parseInt(t.helpArray[city][i]['y'])){ t.helpArray[city][i]['DaysInactive'] = days; t.helpArray[city][i]['LastCheck'] = now; t.helpArray[city][i] ["AllianceName"] = rslt.playerInfo.allianceName; t.helpArray[city][i] ["might"] = rslt.playerInfo.might; } //var not_hit_list = 'family pride';//"The Highlanders" // if (t.helpArray[city][i]["AllianceName"] == not_hit_list && t.helpArray[city][i]["enabled"]!='true'&&days>2) t.helpArray[city][i]["enabled"] = false; //if (parseInt(t.helpArray[city][i]["attacked"]) >1) t.helpArray[city][i]["attacked"] = 1; } GM_setValue('Farms_' + unsafeWindow.tvuid + '_city_' + city + '_' + getServerId(), JSON2.stringify(t.helpArray[city])); if (days > Options.FarmOptions.Inactive) { t.doBarb(citynumber,city,FarmNumber,xcoord,ycoord,kid,trps); } else { Options.FarmOptions.FarmNumber[city]++; saveOptions(); t.barbing(); } }, onFailure: function () { notify (); }, },true); } else { var l_inactive_days_koef =1; var Diplomacy = t.FarmArray[city][FarmNumber]['Diplomacy']; if (Diplomacy=='unallied') l_inactive_days_koef=0.2; if (t.FarmArray[city][FarmNumber]['DaysInactive'] >= Options.FarmOptions.Inactive*l_inactive_days_koef) { t.doBarb(citynumber,city,FarmNumber,xcoord,ycoord,kid,trps); } else{ Options.FarmOptions.FarmNumber[city]++; saveOptions(); t.barbing(); } } }, getRetMarchInfo: function (marchIDs,cityNum,farmNum,l_g,l_f,l_w,l_s,l_o,l_a,l_got_info_times) { var t = Tabs.farm; var ret = {}; var l_lost = false; var l_enabled = true; var ll_got_info = l_got_info_times; ret.marchUnits = []; ret.returnUnits = []; ret.Coords = []; ret.reso = []; // ret.Coords[0]=-1;ret.Coords[0]=-1; // for (ik=0; ik<15; ik++){ ret.marchUnits[ik] = 0;ret.returnUnits[ik] = 0;} // for (il=0; il<=5; il++){ret.reso[il] = 0;} var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams); params.rid = marchIDs; new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/fetchMarch.php" + unsafeWindow.g_ajaxsuffix, { method: "post", parameters: params, onSuccess: function (rslt) { // rslt.march["knightName"] parseInt(rslt.march["marchType"]) {1: transport;2: reinforce;3: scout;4: attack;5: reassign} //switch (parseInt(rslt.march["marchStatus"])){1: marching;2: defending;8: returning;9: aborting; default:undefined} //rslt.march["unit" + i + "Return"] //for (i=0; i<15; i++){ ret.returnUnits[i] = parseInt(rslt.march["unit" + i + "Return"]);//ret.marchUnits[i] = parseInt(rslt.march["unit" + i + "Count"]); // } var l_debug_on =0; var marchStatus = rslt.march["marchStatus"]; ret.Coords[0]= parseInt(rslt.march["xCoord"]);ret.Coords[1]=parseInt(rslt.march["yCoord"]); ret.reso[0] = parseInt(rslt.march["gold"]); for (var j = 1; j <= 5; j++) {ret.reso[j] = parseInt(rslt.march["resource" +j]);} for (a=0;a<t.helpArray[cityNum].length;a++){ if (ret.Coords[0] == parseInt(t.helpArray[cityNum][a]['x']) && ret.Coords[1] == parseInt(t.helpArray[cityNum][a]['y'])){ if (l_debug_on==1 &&(ll_got_info>0||marchStatus ==1)) actionLog('City-'+cityNum+' Farm('+farmNum+')'+marchIDs+'('+ ret.Coords[0]+','+ret.Coords[1]+')'+ '; Res-'+Math.round((ret.reso[0]+ret.reso[1]+ret.reso[2]+ret.reso[3]+ret.reso[4])/1000)+'!!!MARCH_STATUS=' + marchStatus+'. ll_got_info-'+ll_got_info,'FARM'); if (marchStatus ==1) {myVar2 = setTimeout(function(){t.getRetMarchInfo(marchIDs,cityNum,farmNum,l_g,l_f,l_w,l_s,l_o,l_a,ll_got_info)},10*1000); return;} for(u=1;u<=15;u++) { var l_ret_units = parseInt(rslt.march["unit"+u+"Return"]); var l_sent_units = parseInt(rslt.march["unit"+u+"Count"]); if (l_ret_units < l_sent_units){ l_lost = true; actionLog('City-'+cityNum+' Farm('+farmNum+')('+ ret.Coords[0]+','+ret.Coords[1]+')'+'.l_ret_units'+u+'+sent: '+l_ret_units+'/'+l_sent_units,'FARM'); if (l_ret_units < (l_sent_units*75/100)) l_enabled = false; } } if (l_debug_on==1) actionLog('City-'+cityNum+'||FOOD-'+ Math.round(ret.reso[1]/1000000)+ 'M; ORE-'+ Math.round(ret.reso[4]/1000000)+ 'M||;wood-'+ Math.round(ret.reso[2]/1000000)+'M;stone-'+ Math.round(ret.reso[3]/1000000)+'M.'+' Farm('+farmNum+',marchno'+marchIDs+')('+ ret.Coords[0]+','+ret.Coords[1]+')','FARM'); // Before food1-'+t.FarmArray[cityNum][farmNum]["Food"] ); l_g += ret.reso[0]; l_f += ret.reso[1]; l_w += ret.reso[2]; l_s += ret.reso[3]; l_o += ret.reso[4]; if (l_f+l_w+l_s+l_o < 1.5*1000*1000) l_enabled = false; // disable farm because it have only less then 1.5 mil res. if (ret.reso[5]>0) { actionLog('City-'+cityNum+' Farm have astone ['+ret.reso[5]+'] at ('+ ret.Coords[0]+','+ret.Coords[1]+') !!! :)','FARM');} if ((ret.reso[0]+ret.reso[1]+ret.reso[2]+ret.reso[3]+ret.reso[4])/1000000>=(Options.FarmOptions.MinFarmRes*2)) { //actionLog('City-'+cityNum+' Send wags to that FAT Farm ['+parseInt((ret.reso[0]+ret.reso[1]+ret.reso[2]+ret.reso[3]+ret.reso[4])/1000000)+' mil res ] at ('+ ret.Coords[0]+','+ret.Coords[1]+') !!! :)'); var now = new Date().getTime()/1000.0; now = now.toFixed(0); t.helpArray[cityNum][a]['time'] = now-55*3600; } t.helpArray[cityNum][a]['Ore'] = l_o; t.helpArray[cityNum][a]["Wood"] = l_w; t.helpArray[cityNum][a]['Stone'] = l_s; t.helpArray[cityNum][a]["Food"] = l_f; t.helpArray[cityNum][a]["Gold"] = l_g; t.helpArray[cityNum][a]['enabled'] = l_enabled; t.helpArray[cityNum][a]['lost'] = l_lost; t.helpArray[cityNum][a]['empty'] ++; GM_setValue('Farms_' + unsafeWindow.tvuid + '_city_' + cityNum + '_' + getServerId(), JSON2.stringify(t.helpArray[cityNum])); }} }, onFailure: function () { } },true) }, showFarms: function (citynumber,cityname) { var t = Tabs.farm; var popTradeRoutes = null; t.popTradeRoutes = new CPopup('pbShowFarms', 0, 0, 1100, 485, true, function() {clearTimeout (1000);}); var m = '<DIV style="max-height:460px; height:460px; overflow-y:auto"><TABLE align=center cellpadding=0 cellspacing=0 width=100% class="pbShowBarbs" id="pbBars">'; t.popTradeRoutes.getMainDiv().innerHTML = '</table></div>' + m; t.popTradeRoutes.getTopDiv().innerHTML = '<TD><center><B>Farms for city: '+cityname+'</center></td>'; t.paintFarms(citynumber,cityname); t._addTabHeader(citynumber,cityname); t.popTradeRoutes.show(true) ; }, ToggleFarms: function(citynumber) { var t = Tabs.farm; var id=0; var element_class = document.getElementsByClassName('Farm'); for (d = 1; d <= t.FarmArray[citynumber].length; d++) { id = d-1; var ele = document.getElementById('FarmToggle' + d); if (ele.checked) { t.FarmArray[citynumber][id].enabled = true; t.FarmArray[citynumber][id].lost = false; //t.FarmArray[citynumber][id].empty = 0; } else t.FarmArray[citynumber][id].enabled = false; } for (i=0;i<t.helpArray[citynumber].length;i++){ for (j=0;j<t.FarmArray[citynumber].length;j++){ if (parseInt(t.FarmArray[citynumber][j]['x']) == parseInt(t.helpArray[citynumber][i]['x']) && parseInt(t.FarmArray[citynumber][j]['y']) == parseInt(t.helpArray[citynumber][i]['y'])) t.helpArray[citynumber][i].enabled = t.FarmArray[citynumber][j].enabled; } } GM_setValue('Farms_' + unsafeWindow.tvuid + '_city_' + citynumber + '_' + getServerId(), JSON2.stringify(t.helpArray[citynumber])); }, paintFarms: function(i,cityname){ var t = Tabs.farm; var now = new Date().getTime()/1000.0; now = now.toFixed(0); for (k=(t.FarmArray[i].length-1);k>=0;k--) { var Hourss = 0; //if (t.FarmArray[i][k]['DaysInactive'] > 5 || t.FarmArray[i][k]['DaysInactive']=='?') { if (parseInt(t.FarmArray[i][k]['time'])>0) Hourss = Math.round((now - parseInt(t.FarmArray[i][k]['time'])) / 3600); t._addTab(i,cityname,k+1,t.FarmArray[i][k]['enabled'], t.FarmArray[i][k]['x'], t.FarmArray[i][k]['y'],t.FarmArray[i][k]['dist'], t.FarmArray[i][k]['level'],t.FarmArray[i][k]['AllianceName'], t.FarmArray[i][k]['Diplomacy'], t.FarmArray[i][k]['PlayerName'], t.FarmArray[i][k]['cityName'],t.FarmArray[i][k]['might'], t.FarmArray[i][k]['cityNumber'], t.FarmArray[i][k]['attacked'],t.FarmArray[i][k]['DaysInactive'],t.FarmArray[i][k]['lost'],t.FarmArray[i][k]['empty'],t.FarmArray[i][k]['Ore'],t.FarmArray[i][k]['Wood'],t.FarmArray[i][k]['Stone'],t.FarmArray[i][k]['Food'],t.FarmArray[i][k]['Gold'], Hourss ); //} } }, _addTab: function(citynumber,cityname,queueId,status,X,Y,dist,level,AllianceName,diplomacy,playerName,cityName,might,cityNumber,attacked,DaysInactive,lost,empty,Ore,Wood,Stone,Food,Gold, last_hit_time){ var t = Tabs.farm; var row = document.getElementById('pbBars').insertRow(0); row.vAlign = 'top'; if (lost) {row.style.color = "red"; }else{ if (!lost) {row.style.color = "brown"; row.style.background = "rgb(246,243,236)"; if (Math.round(Ore /1000000,1) +Math.round(Food /1000000,1)+Math.round(Stone/1000000,1)+Math.round(Wood/1000000,1)+Math.round(Gold/1000000,1)<Options.FarmOptions.MinFarmRes) row.style.color = "lightblue"; if (Math.round(Ore /1000000,1)+Math.round(Food /1000000,1)>Options.FarmOptions.MinFarmRes*0.70) {row.style.color = "darkgreen";row.style.backgroundColor = "#BDD1A7";} } var l_inactive_days_koef =1; if (diplomacy=='unallied') l_inactive_days_koef=0.2; if (Options.FarmOptions.Inactive*l_inactive_days_koef > DaysInactive) row.style.color = "#E8C384"; //"orange"; if (!lost &&!status) row.style.color = "gray";} row.insertCell(0).innerHTML = queueId; row.insertCell(1).innerHTML = coordLink(X,Y); row.insertCell(2).innerHTML = dist; row.insertCell(3).innerHTML = level; row.insertCell(4).innerHTML = AllianceName; row.insertCell(5).innerHTML = diplomacy; row.insertCell(6).innerHTML = playerName; row.insertCell(7).innerHTML = cityName; row.insertCell(8).innerHTML = addCommas(might); row.insertCell(9).innerHTML = DaysInactive; row.insertCell(10).innerHTML = attacked; row.insertCell(11).innerHTML = '<INPUT class=Farm id="FarmToggle' + queueId + '" type=checkbox>'; row.insertCell(12).innerHTML = Math.round(Ore /1000000,1) +'|'; row.insertCell(13).innerHTML = Math.round(Food /1000000,1) +'|'; row.insertCell(14).innerHTML = Math.round(Stone/1000000,1)+'||'; row.insertCell(15).innerHTML = Math.round(Wood/1000000,1)+'|'; row.insertCell(16).innerHTML = Math.round(Gold /1000000,1)+'|'; row.insertCell(17).innerHTML = '('+empty +'-' +last_hit_time+'h)'; //Math.round(last_hit_time,2); var element_class = document.getElementsByClassName('Farm'); for (c = 0; c < element_class.length; c++) { element_class[c].checked = t.FarmArray[citynumber][c].enabled; element_class[c].addEventListener('click', function(){t.ToggleFarms(citynumber)}, false); } }, _addTabHeader: function(citynumber,cityname) { var t = Tabs.farm; var row = document.getElementById('pbBars').insertRow(0); row.vAlign = 'top'; row.insertCell(0).innerHTML = "Id"; row.insertCell(1).innerHTML = "Coords"; row.insertCell(2).innerHTML = "Dist."; row.insertCell(3).innerHTML = "Level"; row.insertCell(4).innerHTML = "Allaince Name"; row.insertCell(5).innerHTML = "Diplomacy"; row.insertCell(6).innerHTML = "Player Name"; row.insertCell(7).innerHTML = "City Name"; row.insertCell(8).innerHTML = "Might"; row.insertCell(9).innerHTML = "Inactive"; row.insertCell(10).innerHTML = "# Attacks"; row.insertCell(11).innerHTML = " [on/off] "; row.insertCell(12).innerHTML = "Ore"; row.insertCell(13).innerHTML = "Food"; row.insertCell(14).innerHTML = "Stone"; row.insertCell(15).innerHTML = "Wood"; row.insertCell(16).innerHTML = "Gold"; row.insertCell(17).innerHTML = "Visited"; }, startdeletereports : function (){ var t = Tabs.farm; if (!Options.FarmOptions.DeleteReports) return; if(!t.deleting){ t.deleting = true; t.fetchbarbreports(0, t.checkbarbreports); } }, fetchbarbreports : function (pageNo, callback){ var t = Tabs.farm; var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams); if(pageNo > 0) params.pageNo = pageNo; new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/listReports.php" + unsafeWindow.g_ajaxsuffix, { method: "post", parameters: params, onSuccess: function (rslt) { callback(rslt); }, onFailure: function () { }, }); }, checkbarbreports : function (rslt){ var t = Tabs.farm; if(!rslt.ok){ return; } if(rslt.arReports.length < 1){ return; } var reports = rslt.arReports; var now = new Date().getTime()/1000.0; now = now.toFixed(0); // t.helpArray[cityNum][a]['time'] = now-55*3600; var totalPages = rslt.totalPages; var deletes1 = new Array(); for(k in reports){ for (i=1;i<=Seed.cities.length;i++){ var x=Seed.cities[i-1]["2"]; var y=Seed.cities[i-1]["3"]; for (j=0;j<t.FarmArray[i].length;j++){ if (reports[k].side1XCoord == x && reports[k].side1YCoord == y && reports[k].side0XCoord == t.FarmArray[i][j]["x"] && reports[k].side0YCoord == t.FarmArray[i][j]["y"]&&(!(t.FarmArray[i][j]['lost'])) &&(t.FarmArray[i][j]['enabled']||(!(t.FarmArray[i][j]['enabled'])&&(now-t.FarmArray[i][j]['time']<25*60))) ) { deletes1.push(k.substr(2)); } } } } if(deletes1.length > 0){ t.deletereports(deletes1); } else { t.deleting = false; return; } }, deletereports : function (deletes1){ var t = Tabs.farm; var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams); params.s1rids = deletes1.join(","); params.s0rids = ''; params.cityrids = ''; new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/deleteCheckedReports.php" + unsafeWindow.g_ajaxsuffix, { method: "post", parameters: params, onSuccess: function (rslt) { Seed.newReportCount = parseInt(Seed.newReportCount) - parseInt(deletes1.length); t.fetchbarbreports(0, t.checkbarbreports); }, onFailure: function () { }, }); }, isMyself: function(userID){ if(!Seed.players["u"+userID]) return false; if(Seed.players["u"+userID].n == Seed.player.name) return true; else return false; return false; }, checkFarmData: function(){ if(!Options.FarmOptions.Running)return; var t = Tabs.farm; for (i=1;i<=Seed.cities.length;i++){ t.helpArray[i] = []; if(!Options.FarmOptions.CityEnable[i])continue; var myarray = (GM_getValue('Farms_' + unsafeWindow.tvuid + '_city_' + i + '_' + getServerId())); if (myarray == null) myarray = (GM_getValue('Farms_' + Seed.player['name'] + '_city_' + i + '_' + getServerId())); if (myarray == undefined && t.searchRunning==false) { t.searchRunning = true; t.lookup=i; t.opt.startX=parseInt(Seed.cities[(i-1)][2]); t.opt.startY=parseInt(Seed.cities[(i-1)][3]); t.clickedSearch(); } if (myarray != undefined){ myarray = JSON2.parse(myarray); //if(Method == 'distance') t.helpArray[i] = myarray.sort(function sortBarbs(a,b) {a = a['dist'];b = b['dist'];return a == b ? 0 : (a < b ? -1 : 1);}); GM_setValue('Farms_' + unsafeWindow.tvuid + '_city_' + i + '_' + getServerId(), JSON2.stringify(t.helpArray[i])); } } t.FilterFarms(); }, compactFarmData: function(){ var t = Tabs.farm; for (cityNum=1;cityNum<=Seed.cities.length;cityNum++){ var n =0; var max_attacks = 0; t.FarmArray[cityNum] = []; for (a=0;a<t.helpArray[cityNum].length;a++){ if ((t.helpArray[cityNum][a]['might']< Options.FarmOptions.MaxMight)&&( t.helpArray[cityNum][a]['DaysInactive']=='?' || parseInt(t.helpArray[cityNum][a]['DaysInactive'])>2)) { t.FarmArray[cityNum][n++] = t.helpArray[cityNum][a]; } } GM_setValue('Farms_' + unsafeWindow.tvuid + '_city_' + cityNum + '_' + getServerId(), JSON2.stringify(t.FarmArray[cityNum])); } t.FilterFarms(); reloadKOC(); }, compactFarmData2: function(){ var t = Tabs.farm; var l_min_res = Options.FarmOptions.MinFarmRes * 1000000; for (cityNum=1;cityNum<=Seed.cities.length;cityNum++){ if (!(Options.FarmOptions.CityEnable[cityNum])){ var n =0; var max_attacks = 0; for (a=0;a<t.helpArray[cityNum].length;a++){ if (max_attacks < t.helpArray[cityNum][a]['attacked'] ) max_attacks=t.helpArray[cityNum][a]['attacked']; } if (max_attacks>0) { t.FarmArray[cityNum] = []; for (a=0;a<t.helpArray[cityNum].length;a++){ var l_o = parseInt(t.helpArray[cityNum][a]['Ore']) var l_w = parseInt(t.helpArray[cityNum][a]["Wood"]); var l_s = parseInt(t.helpArray[cityNum][a]['Stone']); var l_f = parseInt(t.helpArray[cityNum][a]["Food"]); var l_g = parseInt(t.helpArray[cityNum][a]["Gold"]); var l_attacked = parseInt(t.helpArray[cityNum][a]['empty']); if (t.helpArray[cityNum][a]['enabled']&&t.helpArray[cityNum][a]['DaysInactive']!='?' &&(l_attacked<1&&parseInt(t.helpArray[cityNum][a]['DaysInactive'])>3 || (l_attacked>0 && ((l_o+l_w+l_s+l_f+l_g)>l_min_res||(l_o+l_f)>l_min_res*0.70)) )) { t.FarmArray[cityNum][n++] = t.helpArray[cityNum][a]; } } GM_setValue('Farms_' + unsafeWindow.tvuid + '_city_' + cityNum + '_' + getServerId(), JSON2.stringify(t.FarmArray[cityNum])); } } } t.FilterFarms(); reloadKOC(); }, compactFarmData3: function(){ var t = Tabs.farm; for (cityNum=1;cityNum<=Seed.cities.length;cityNum++){ if (!(Options.FarmOptions.CityEnable[cityNum])){ var n =0; t.FarmArray[cityNum] = []; for (a=0;a<t.helpArray[cityNum].length;a++){ if (t.helpArray[cityNum][a]['enabled']){ t.helpArray[cityNum][a]['Ore']=0; t.helpArray[cityNum][a]["Wood"]=0; t.helpArray[cityNum][a]['Stone']=0; t.helpArray[cityNum][a]["Food"]=0; t.helpArray[cityNum][a]["Gold"]=0; t.helpArray[cityNum][a]['attacked']=0; t.helpArray[cityNum][a]['empty']=0; } t.FarmArray[cityNum][n++] = t.helpArray[cityNum][a]; } GM_setValue('Farms_' + unsafeWindow.tvuid + '_city_' + cityNum + '_' + getServerId(), JSON2.stringify(t.FarmArray[cityNum])); } } t.FilterFarms(); reloadKOC(); }, FilterFarms: function() { var t = Tabs.farm; if (t.searchRunning) return; t.FarmArray = new Array(); t.FarmArray["1"] = new Array(); t.FarmArray["2"] = new Array(); t.FarmArray["3"] = new Array(); t.FarmArray["4"] = new Array(); t.FarmArray["5"] = new Array(); t.FarmArray["6"] = new Array(); t.FarmArray["7"] = new Array(); t.FarmArray["8"] = new Array(); for (u=1;u<=Seed.cities.length;u++){ for (i=0;i<t.helpArray[u].length;i++){ var checkLvl = false; var checkMight = false; var checkDip = false; var checkAlliance = false; var AllianceName = ""; for (j=1;j<=15;j++) if (Options.FarmOptions.CityLevel[j] && t.helpArray[u][i].level == j) checkLvl=true; if (Seed.allianceDiplomacies.allianceName != undefined) AllianceName = Seed.allianceDiplomacies.allianceName; if (t.helpArray[u][i].AllianceName != AllianceName) checkAlliance = true; if (t.helpArray[u][i].might >= Options.FarmOptions.MinMight && t.helpArray[u][i].might <= Options.FarmOptions.MaxMight) checkMight = true; for (j in Options.FarmOptions.Diplomacy) if (Options.FarmOptions.Diplomacy[j] && t.helpArray[u][i].Diplomacy == j) checkDip=true; if (checkLvl && checkMight && checkDip && checkAlliance) t.FarmArray[u].push (t.helpArray[u][i]); } var elem = 'pdtotalFarm'+(u-1); if (t.FarmArray[u] == undefined) document.getElementById(elem).innerHTML = 'No Data'; else { var l_ok_farms =0; for (a=0;a<t.helpArray[u].length;a++){ if (t.helpArray[u][a]['enabled']&&((t.helpArray[u][a]['DaysInactive']=='?') ||(t.helpArray[u][a]['DaysInactive']> Options.FarmOptions.Inactive))) l_ok_farms++; } document.getElementById(elem).innerHTML = '' + l_ok_farms+'/'+t.FarmArray[u].length +'/'+ t.helpArray[u].length+''; } } }, SortDist: function(a,b) { a = parseFloat(a['dist']); b = parseFloat(b['dist']); return (a < b )? -1 : ((a > b ? 1 : 0)); }, toggleBarbState: function(obj){ var t = Tabs.farm; obj = document.getElementById('FarmAttSearch'); if (Options.FarmOptions.Running == true) { Options.FarmOptions.Running = false; obj.value = "Farm = OFF"; if(document.getElementById('FarmToggleTab'))document.getElementById('FarmToggleTab').innerHTML = '<span style="color: #CCC">'+unsafeWindow.g_js_strings.grove.farms+': Off</span>'; saveOptions(); t.nextattack = null; t.updateSeedTimer = null; } else { Options.FarmOptions.Running = true; Options.FarmOptions.DeleteReports = true; obj.value = "Farm = ON"; if(document.getElementById('FarmToggleTab'))document.getElementById('FarmToggleTab').innerHTML = '<span style="color: #FFFF00">'+unsafeWindow.g_js_strings.grove.farms+': On</span>'; saveOptions(); t.checkFarmData(); t.nextattack = setInterval(t.getnextCity,(parseInt(Math.random()*3)*100+Options.FarmOptions.SendInterval*1000)); // ReloadKOC(); } }, barbing : function(){ var t = Tabs.farm; var city = t.city; var trps = Options.FarmOptions.Troops; var now = new Date().getTime()/1000.0; now = now.toFixed(0); citynumber = Seed.cities[city-1][0]; cityID = 'city' + citynumber; t.getAtkKnight(cityID); //t.rallypointlevel = March.getRallypointLevel(cityID); t.rallypointlevel = March.getTotalSlots(citynumber); numMarches = t.rallypointlevel; var slots= March.getMarchSlots(citynumber); var element2 = 'pddataFarmarray'+(city-1); document.getElementById(element2).innerHTML = 'RP: (' + slots + '/' + numMarches +')'; if (!Options.FarmOptions.CityEnable[city]) { document.getElementById(element2).innerHTML ='Disabled';return;} if (Number(Number(numMarches)-Number(slots)) <= Number(Options.FarmOptions.RallyClip)) return; var Farms_count=t.FarmArray[city].length; if (Farms_count==0) {document.getElementById(element2).innerHTML = 'No Farms'; return;} if (t.knt.toSource() == "[]") return; for (ii=1; ii<parseInt(t.troopDef.length+1); ii++) { if(parseIntNan(trps[ii]) > parseInt(Seed.units[cityID]['unt'+t.troopDef[ii-1][1]])) return; }; if (Options.FarmOptions.FarmNumber[city]>=Farms_count) Options.FarmOptions.FarmNumber[city]=0; var kid = t.knt[0].ID; var interval = 0; switch(Options.FarmOptions.Interval){ case "1":interval = 1;break; case "2":interval = 2;break; case "3":interval = 3;break; case "4":interval = 6;break; case "5":interval = 12;break; case "6":interval = 24;break; case "7":interval = 29;break; case "8":interval = 36;break; case "9":interval = 48;break; case "10":interval = 94;break; } var checkas=0; var tmp_loop =0; var Hourss_max=0; while (checkas == 0){ var Hourss =0; checkas=1; var gotsome = false; for (i=1; i<parseInt(t.troopDef.length+1); i++) { if (parseIntNan(Options.FarmOptions.Troops[i]) > parseInt(Seed.units[cityID]['unt'+i])) checkas=0; if (parseIntNan(Options.FarmOptions.Troops[i]) > 0) gotsome=true; }; if (!gotsome) checkas=0; if (!t.FarmArray[city][Options.FarmOptions.FarmNumber[city]]['enabled']) checkas=0; var farmtime = parseInt(t.FarmArray[city][Options.FarmOptions.FarmNumber[city]]['time']); var AllianceName = t.FarmArray[city][Options.FarmOptions.FarmNumber[city]]['AllianceName']; var l_inactive_days_koef =1; if (!(!!AllianceName)) l_inactive_days_koef=0.2; if (farmtime>0) {Hourss = Math.round((now - farmtime) / 3600);} else{ if (t.FarmArray[city][Options.FarmOptions.FarmNumber[city]]['DaysInactive'] =="?"||(farmtime==0&&t.FarmArray[city][Options.FarmOptions.FarmNumber[city]]['DaysInactive']>=Options.FarmOptions.Inactive*l_inactive_days_koef) ) Hourss=interval+1;} if (Hourss < interval) {checkas=0;} if (Hourss >= interval && t.FarmArray[city][Options.FarmOptions.FarmNumber[city]]['DaysInactive']<Options.FarmOptions.Inactive*l_inactive_days_koef) {checkas=0;} if (farmtime>0&&Hourss > Hourss_max&&t.FarmArray[city][Options.FarmOptions.FarmNumber[city]]['enabled']&& t.FarmArray[city][Options.FarmOptions.FarmNumber[city]]['DaysInactive']>=Options.FarmOptions.Inactive*l_inactive_days_koef) {Hourss_max=Hourss;} //if (checkas ==0) var l_farm_no = Options.FarmOptions.FarmNumber[city]; if (checkas == 0) {Options.FarmOptions.FarmNumber[city]++; saveOptions();} if (Options.FarmOptions.FarmNumber[city]>=Farms_count) { Options.FarmOptions.FarmNumber[city]=0; saveOptions(); document.getElementById(element2).innerHTML = 'Checked all '+ (Farms_count) + ' farms'; //return; // break; } } //if (t.FarmArray[city] == undefined) {document.getElementById(element2).innerHTML = 'No Data'; return;} if (checkas == 0) { //{actionLog(' Nothing to farm from city'+city+' next hit after:' + (interval-Hourss_max) +'hours.')}; document.getElementById(element2).innerHTML = 'Wait.Next '+ (interval-Hourss_max) + 'h'; saveOptions(); return;} else{ var xcoord = t.FarmArray[city][l_farm_no]['x']; var ycoord = t.FarmArray[city][l_farm_no]['y']; var uid = t.FarmArray[city][l_farm_no]['UserId']; if ((numMarches - Options.FarmOptions.RallyClip) > slots) t.checkInactives(citynumber,city,l_farm_no,xcoord,ycoord,kid,uid,trps); } }, getnextCity: function(){ var t = Tabs.farm; if (!Options.FarmOptions.Running) return; if(t.searchRunning) return; var city = t.city+1; if (city>Seed.cities.length){ city=1; } t.city = city; t.barbing(); }, getAtkKnight : function(cityID){ var t = Tabs.farm; t.knt = new Array(); for (k in Seed.knights[cityID]){ if (Seed.knights[cityID][k]["knightStatus"] == 1 && Seed.leaders[cityID]["resourcefulnessKnightId"] != Seed.knights[cityID][k]["knightId"] && Seed.leaders[cityID]["politicsKnightId"] != Seed.knights[cityID][k]["knightId"] && Seed.leaders[cityID]["combatKnightId"] != Seed.knights[cityID][k]["knightId"] && Seed.leaders[cityID]["intelligenceKnightId"] != Seed.knights[cityID][k]["knightId"]){ t.knt.push ({ Name: Seed.knights[cityID][k]["knightName"], Combat: Seed.knights[cityID][k]["combat"], ID: Seed.knights[cityID][k]["knightId"], }); } } t.knt = t.knt.sort(function sort(a,b) {a = a['Combat'];b = b['Combat'];return a == b ? 0 : (a > b ? -1 : 1);}); }, doBarb: function(cityID,counter,number,xcoord,ycoord,kid,trps){ var t = Tabs.farm; var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams); params.cid=cityID; params.type=4; params.kid=kid; params.xcoord = xcoord; params.ycoord = ycoord; for (ii=1; ii<parseInt(t.troopDef.length+1); ii++) { if(parseIntNan(trps[ii]) > 0) params['u'+t.troopDef[ii-1][1]]=parseIntNan(trps[ii]); }; params.gold =0; params.r1=0; params.r2=0; params.r3=0; params.r4=0; params.r5=0; March.addMarch(params, function(rslt){ if (rslt.ok) { var slots=March.getMarchSlots(cityID); var element1 = 'pddataFarmarray'+(counter-1); document.getElementById(element1).innerHTML = 'RP: (' + slots + '/' + t.rallypointlevel +')'; var now = new Date().getTime()/1000.0; now = now.toFixed(0); t.FarmArray[counter][number]['time'] = now; t.FarmArray[counter][number]['attacked']++; Options.FarmOptions.FarmMarches.push ({city:counter,cityId:cityID,marchId:rslt.marchId,number:number}); Options.FarmOptions.FarmNumber[counter]++; Options.FarmOptions.Attacks++; saveOptions(); document.getElementById('FarmCheck').innerHTML = "Attacks: " + Options.FarmOptions.Attacks + " - Checks:" + Options.FarmOptions.Checks + ' (Sent last march from city -' +counter+' Farm No.'+(number+1)+')'; for (i=0;i<t.helpArray[counter].length;i++){ for (j=0;j<t.FarmArray[counter].length;j++){ if (parseInt(t.FarmArray[counter][j]['x']) == parseInt(t.helpArray[counter][i]['x']) && parseInt(t.FarmArray[counter][j]['y']) == parseInt(t.helpArray[counter][i]['y'])){ t.helpArray[counter][i]['time'] = t.FarmArray[counter][j]['time']; t.helpArray[counter][i]['attacked'] = t.FarmArray[counter][j]['attacked']; } } } GM_setValue('Farms_' + unsafeWindow.tvuid + '_city_' + counter + '_' + getServerId(), JSON2.stringify(t.helpArray[counter])); saveOptions(); } else { //onFailure actionLog('Send farm march FAIL :' + Seed.cities[counter-1][1] + " To: (" + xcoord + ',' + ycoord +')' +' -> ' + rslt.error_code + ' - ' + rslt.msg + ' - ' + rslt.feedback,'FARM'); } }); }, clickedSearch : function (){ var t = Tabs.farm; t.opt.searchType = 0; t.opt.maxDistance = Options.FarmOptions.MaxDistance; t.opt.searchShape = 'circle'; t.mapDat = []; t.firstX = t.opt.startX - t.opt.maxDistance; t.firstY = t.opt.startY - t.opt.maxDistance; t.tilesSearched = 0; t.tilesFound = 0; var element = 'pddataFarm'+(t.lookup-1); t.BlockList = t.MapAjax.generateBlockList(t.firstX,t.firstY,t.opt.maxDistance); var counter = t.BlockList.length; if (counter > MAX_BLOCKS) { counter = MAX_BLOCKS; } var curX = t.firstX; var curY = t.firstY; document.getElementById(element).innerHTML = 'Searching at '+ curX +','+ curY; t.Blocks = []; for (var i=1;i<=counter;i++) { t.Blocks.push(t.BlockList.shift()); t.blocksSearched++; } var blockString = t.Blocks.join("%2C"); setTimeout (function(){t.MapAjax.LookupMap (blockString, t.mapCallback)}, MAP_DELAY); }, mapCallback : function (rslt){ var t = Tabs.farm; if (!t.searchRunning) return; if (rslt.ok){ map = rslt.data; for (k in map){ var dist = distance (t.opt.startX, t.opt.startY, map[k].xCoord, map[k].yCoord); var CityCheck = true; var who = "u" + map[k].tileUserId; var AllianceName = ""; if (map[k].cityName == null && map[k].misted ==false) CityCheck = false; if (t.isMyself(map[k].tileUserId)) CityCheck = false; if (map[k].tileType== 51 && CityCheck) { var Diplomacy = "neutral"; for (DipStatus in t.DipArray) { var AllianceId = 0; if (rslt.userInfo[who] != undefined) AllianceId = "a" + rslt.userInfo[who].a; for (alliance in Seed.allianceDiplomacies[t.DipArray[DipStatus]]) if (Seed.allianceDiplomacies[t.DipArray[DipStatus]][AllianceId] != undefined) Diplomacy = t.DipArray[DipStatus]; } if (rslt.allianceNames[AllianceId] != undefined) AllianceName = rslt.allianceNames[AllianceId]; if (Diplomacy == "neutral" && AllianceName =="") Diplomacy = "unallied"; //AudriusPPP: have added it to avoid to big list/array witch slows down computer later if (map[k].tileLevel>8 && rslt.userInfo[who].m>Options.FarmOptions.MinMight && rslt.userInfo[who].m<Options.FarmOptions.MaxMight){ t.mapDat.push ({time:0,empty:0,lost:false,enabled:'true',attacked:0,DaysInactive:"?",LastCheck:0,Diplomacy:Diplomacy,UserId:map[k].tileUserId,AllianceName:AllianceName,x:map[k].xCoord,y:map[k].yCoord,dist:dist,level:map[k].tileLevel,PlayerName:rslt.userInfo[who].n,cityName:map[k].cityName,might:rslt.userInfo[who].m,cityNumber:map[k].cityNum,Ore:0,Wood:0,Stone:0,Food:0,Gold:0}); }; } } } else { if (rslt.BotCode && rslt.BotCode==999) { // map captcha var dtime = new Date(); actionLog('Map Captcha detected!','FARM'); } } t.tilesSearched += (t.opt.searchDistance*t.opt.searchDistance); var counter = t.BlockList.length; if (counter==0) { var element = 'pdtotalFarm'+(t.lookup-1); document.getElementById(element).innerHTML = 'Found: ' + t.mapDat.length; var element = 'pddataFarm'+(t.lookup-1); document.getElementById(element).innerHTML = ""; GM_setValue('Farms_' + unsafeWindow.tvuid + '_city_' + t.lookup + '_' + getServerId(), JSON2.stringify(t.mapDat)); t.searchRunning = false; for (y=1;y<=8;y++) Options.FarmOptions.FarmNumber[y] = 0; t.checkFarmData(); return; } if (counter > MAX_BLOCKS) { counter = MAX_BLOCKS; } var nextblock = t.BlockList[0]; var curX = nextblock.split("_")[1]; var curY = nextblock.split("_")[3]; var element = 'pddataFarm'+(t.lookup-1); document.getElementById(element).innerHTML = 'Searching at '+ curX +','+ curY; t.Blocks = []; for (var i=1;i<=counter;i++) { t.Blocks.push(t.BlockList.shift()); t.blocksSearched++; } var blockString = t.Blocks.join("%2C"); setTimeout (function(){t.MapAjax.LookupMap (blockString, t.mapCallback)}, MAP_DELAY); }, stopSearch : function (msg){ var t = Tabs.farm; var element = 'pddataFarm'+(t.lookup-1); document.getElementById(element).innerHTML = msg; t.searchRunning = false; }, hide : function (){ }, show : function (){ }, };
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址