Загрузка данных
// ==UserScript==
// @grant none
// @run-at document-idle
// @namespace Mist
// @include https://world.mist-game.ru/
// @include https://world.stage.mist-game.ru/
// @name Mist - Расширение архива
// @description По возможности отображает источник или получателя платежа в архиве банка и рынка и инициатора оплаты в истории КО
const tradeHistory = function ()
{
if (!C || !C.PR || !C.PR.intf || !C.PR.data)
return;
const markerAlreadyProcessed = 'MextTradeHistoryProcessedMarker';
if (C.PR.intf == 'municipalityClanExp')
{
if (!C.PR.data.history || !C.PR.data.history.length)
return;
const table = $('#cln_bills');
if (table.length == 0 || table.hasClass (markerAlreadyProcessed))
return;
const clanExpPlayerInfo = function (id)
{
let playerInfoHtml = MOD.name ({login:'<профиль>', sex:2, level:0, id:id});
/* здесь надо запускать запрос к профилю пользователя, парсить оттуда инфу и кешировать её в отдельный словарь */
return playerInfoHtml;
};
C.PR.data.history.forEach (function (entry, idx, obj)
{
let dealInfo;
/* Покупка кланового улучшения */
if (entry.op_type == 36)
{
dealInfo = `Приобрёл: ${clanExpPlayerInfo (entry.fk_operator)}`;
}
if (dealInfo)
{
table.find ('tbody tr').eq (idx+1)
.children ('td').eq (3)
.append ('<br><nobr>' + dealInfo + '</nobr>');
}
});
/* зачем этот лимит по ширине? */
table.parent ().removeClass ('w700')
table.addClass (markerAlreadyProcessed);
}
else if (C.PR.intf == 'marketHistory')
{
if (!C.PR.data.reports || !C.PR.data.reports.length)
return;
const table = $('#mp_log');
if (table.length == 0 || table.hasClass (markerAlreadyProcessed))
return;
let tableRows = table.find ('tbody tr');
tableRows.eq (0).append ('<th>Покупатель</th>');
const marketPlayerInfo = function (id)
{
let infoClass = (id && C.PR.data.users.hasOwnProperty (id)) ? C.PR.data.users [id] : undefined;
return ( infoClass ? MOD.name ( infoClass ) : 'неизвестно' );
};
C.PR.data.reports.forEach (function ( entry, idx, obj )
{
tableRows.eq (idx+1).append (`<td><nobr>${marketPlayerInfo (entry.src.fk_owner)}</nobr></td>` );
});
/* надо выключить ограничение ширины, а то места не хватает */
$('#scr_center').removeClass ('w700');
table.addClass (markerAlreadyProcessed);
}
else if (C.PR.intf == 'bankHistory')
{
if (!C.PR.data.history || !C.PR.data.history.length)
return;
const table = $('#bnk_bills');
if (table.length == 0 || table.hasClass (markerAlreadyProcessed))
return;
const bankPlayerInfo = function (id)
{
let infoClass = (id && C.PR.data.chars.hasOwnProperty (id)) ? C.PR.data.chars [id] : undefined;
return infoClass ? MOD.name (infoClass) : 'неизвестно';
};
const bankClanInfo = function (id)
{
return id ? MOD.clan (id) : 'неизвестно';
};
const accountType = C.PR.data.account.type;
if (accountType != 1 && accountType != 2)
{
console.log (`MEXT.tradeHistory: unknown account type`);
return;
}
C.PR.data.history.forEach (function (entry, idx, obj)
{
let dealInfo;
/* Продажа на аукционе */
if (entry.op_type == 7)
{
if (accountType == 1)
dealInfo = `Покупатель: ${bankPlayerInfo (entry.info3)}`;
}
/* Покупка на рынке */
else if (entry.op_type == 14)
{
dealInfo = `Продавец: ${bankPlayerInfo (entry.dest.fk_owner)}`; // entry.info4
}
/* Торговая операция */
/* Плата за услуги созидателя */
/* Плата за изготовление рецепта */
else if (entry.op_type == 15 || entry.op_type == 69 || entry.op_type == 115)
{
dealInfo = `${bankPlayerInfo (entry.src.fk_owner)} \u2192 ${bankPlayerInfo (entry.dest.fk_owner)}`;
}
/* Выкуп лота на аукционе */
else if (entry.op_type == 28)
{
if (entry.info2 == 1)
dealInfo = `Продавец: ${bankPlayerInfo (entry.info3)}`;
else if (entry.info2 == 2)
dealInfo = `Продавцы: клан ${bankClanInfo (entry.info3)}`;
else
dealInfo = `[неизвестное значение info2: ${entry.info2}]`;
}
/* Продажа на товарной бирже */
else if (entry.op_type == 41)
{
dealInfo = `Покупатель: ${bankPlayerInfo (entry.info3)}`;
}
/* Перевод с кланового счёта */
else if (entry.op_type == 61)
{
dealInfo = `Перевёл: ${bankPlayerInfo (entry.fk_operator)}`;
}
/* Выпало из дырявого кармана */
else if (entry.op_type == 169)
{
if (entry.info2 == 1)
dealInfo = `Потерявший: ${bankPlayerInfo (entry.info1)}`;
}
/* Покупка кланового улучшения */
else if (entry.op_type == 36)
{
dealInfo = `Покупатель: ${bankPlayerInfo (entry.fk_operator)}`;
}
if (dealInfo)
{
table.find ('tbody tr').eq (idx+1)
.children ('td').eq (3)
.append ('<br><nobr>' + dealInfo + '</nobr>');
}
});
table.addClass (markerAlreadyProcessed);
}
};
window.eval ("$ ('html').ajaxSuccess (" + tradeHistory.toString () + ");");
// ==/UserScript==