please testing & fix
Code:
//Add global var
var _minASTRALtoZEN = 100000; //minimum amount AD to start exchange
var _visitEXCHANGEcount = 0; //
// Page definitions
var pages = {
LOGIN: {
name: "Login",
path: "div#login"
},
GUARD: {
name: "Account Guard",
path: "div#page-accountguard"
},
CHARSELECT: {
name: "Character Select",
path: "div.page-characterselect"
},
FRONTPAGE: {
name: "Front Page",
path: "div.page-front"
},
PROFESSIONS: {
name: "Professions",
path: "div.page-professions"
},
EXCHANGE: { // <-- !!!
name: "Exchange",
path: "div.page-exchange"
},
};
function pagePROFESSIONS() {
WaitForElement("")
.then(function () {
return professionCollectRewards();
})
.then( function () {
// assign tasks if slots available
if (professionAssignTasks()) {
// dfdNextRun.resolve();
return;
}
// <-- !!!
if ( ( unsafeWindow.client.dataModel.model.ent.main.currencies.diamonds > _minASTRALtoZEN && _visitEXCHANGEcount < 5 ) || ( unsafeWindow.client.dataModel.model.loginInfo.choices[0].name == unsafeWindow.client.dataModel.model.ent.main.name ) ) {
if ( _visitEXCHANGEcount < 0 ) {
//choices[0], skip
_visitEXCHANGEcount++;
} else {
_visitEXCHANGEcount++;
_log('pageEXCHANGE: switching to exchange page, ' + _visitEXCHANGEcount);
$("a.exchange").click();
dfdNextRun.resolve();
return; //????
}
}
// <-- !!!
characterSwitch();
});
}
// function process()
switch (getCurrentPage()) {
case pages.CHARSELECT:
pageCHARSELECT();
break;
case pages.FRONTPAGE:
pageFRONTPAGE();
break;
case pages.EXCHANGE: // <-- !!!
pageEXCHANGE();
break;
case pages.PROFESSIONS:
pagePROFESSIONS();
break;
case pages.LOGIN:
pageLOGIN();
break;
default:
_log('No logic defined for current page, sleeping for: ' + delay.LONG + 'ms.');
dfdNextRun.resolve(delay.LONG);
}
//add new function ;p
function _dropExchange( _orderID ) {
var i;
_dfd = $.Deferred();
try {
for (i = 0; i < _orderID.length; i++ ) {
if ( _orderID[i] > 0) {
unsafeWindow.client.sendCommand("GatewayExchange_WithdrawOrder", { orderId: _orderID[i] });
WaitForElement("button.closeNotification").done(function () {
$('button.closeNotification').click();
});
_log("Cancel order: " + i);
_orderID[i] = 0; //set 0 id
} else if ( _orderID[i] < 0 ) {
var _exchRedy = unsafeWindow.client.dataModel.model.exchangeaccountdata.readytoclaimescrow;
if (_exchRedy > 0) {
//withdraw diamonds /index 0 char/
unsafeWindow.client.sendCommand("GatewayExchange_ClaimTC", { amount: _exchRedy });
WaitForElement("button.closeNotification").done(function () { $('button.closeNotification').click(); });
_log("Withdraw diamonds: " + _exchRedy);
}
}
}
} catch (e) {}
setTimeout(function () {
_dropExchange( _orderID);
}, (delay.SHORT));
_dfd.resolve();
}
function pageEXCHANGE() {
var _exch;
var _orderID = [];
var _diamonds = unsafeWindow.client.dataModel.model.ent.main.currencies.diamonds;
if ( _diamonds > _minASTRALtoZEN && unsafeWindow.client.dataModel.model.loginInfo.choices[0].name != unsafeWindow.client.dataModel.model.ent.main.name) {
if (unsafeWindow.client.dataModel.model.xchangeaccountdata !== null) {
_exch = unsafeWindow.client.dataModel.model.exchangeaccountdata;
var _quantity;
var _price = 500; // = _exch.globaldata.maxmtcprice;
_quantity = Math.floor( _diamonds / _price ); // ZEN
if (_quantity > _exch.globaldata.maxquantityperorder) { _quantity = _exch.globaldata.maxquantityperorder; } //max 5000 ZEN
if ( _exch.openorders.length < _exch.globaldata.maxplayeropenorders ) { //max 5 orders
unsafeWindow.client.sendCommand(
"GatewayExchange_CreateBuyOrder", {
quantity: _quantity,
price: _price
});
// ??? Wait for the notification and close it
WaitForElement("button.closeNotification").done(function () {
$('button.closeNotification').click();
});
_log("Exchange: " + ( _quantity * _price) + " AD -> " + unsafeWindow.client.dataModel.model.ent.main.name );
} else {
_log("Max orders " + _exch.openorders.length + " ? " + _exch.globaldata.maxplayeropenorders);
}
} else {
_log("Exchange: null");
}
} else if (unsafeWindow.client.dataModel.model.loginInfo.choices[0].name == unsafeWindow.client.dataModel.model.ent.main.name ) {
_visitEXCHANGEcount = -1; //skip next cycle, choices[0]
if (unsafeWindow.client.dataModel.model.xchangeaccountdata !== null) {
_exch = unsafeWindow.client.dataModel.model.exchangeaccountdata;
if (_exch.readytoclaimescrow > 0) {
//withdraw diamonds /index 0 char/
unsafeWindow.client.sendCommand("GatewayExchange_ClaimTC", { amount: _exch.readytoclaimescrow });
WaitForElement("button.closeNotification").done(function () { $('button.closeNotification').click(); });
}
for (i = 0; i < _exch.openorders.length; i++ ){
_orderID.push( _exch.openorders[i].orderid );
}
_orderID.push( -1 ); // withdraw
_dropExchange( _orderID );
}
}
_log("Return to professions page");
$("a.professions").click();
dfdNextRun.resolve();
}