Грубо говоря мысль такова:
1. есть 2 окна (1 - главное, 2 - саппорт\ассистент)
2. набор скилов с одной из панелей 2го окна - передаются в 1ое (например одна полоска с рутом\слипом и т.д.) - это приведет к отображению в 1ом клиенте панели 2го
3. вызов скилов с этой панели перехватывается и отправляется на сервер от имени 2го
Не перенос скилов между окнами) Просто вариант управления 2ым окном. Он будет более менее-универсален для разных проф, просто потребуется выставить нужные скилы (которые будут задействованы, к примеру рут\блок вв и прочее, что иногда хочется использовать) на одну из панелей, к примеру на 10ю, откуда ярлыки будут считаны и переданы в клиент 1, причем в самом скрипте править ничего не придется, все будет делаться в клиенте 2
Придется писать отдельную процедуру для распознавания пакета ShortCutInit, т.к. его структура записей в нем различна, в зависимости от ярлыков панели (ярлыки скила\макроса\банки - записываются по разному. Вот из исходников кусочек кода:
Оффтоп
{
private static final String _S__57_SHORTCUTINIT = "[S] 45 ShortCutInit";
private L2ShortCut[] _shortCuts;
private L2PcInstance _activeChar;
public ShortCutInit(L2PcInstance activeChar)
{
_activeChar = activeChar;
if (_activeChar == null)
return;
_shortCuts = _activeChar.getAllShortCuts();
}
@Override
protected final void writeImpl()
{
writeC(0x45);
writeD(_shortCuts.length);
for (L2ShortCut sc: _shortCuts)
{
writeD(sc.getType());
writeD(sc.getSlot() + sc.getPage() * 12);
switch(sc.getType())
{
case L2ShortCut.TYPE_ITEM: //1
writeD(sc.getId());
writeD(0x01);
writeD(-1);
writeD(0x00);
writeD(0x00);
writeH(0x00);
writeH(0x00);
break;
case L2ShortCut.TYPE_SKILL: //2
writeD(sc.getId());
writeD(sc.getLevel());
writeC(0x00); // C5
writeD(0x01); // C6
break;
case L2ShortCut.TYPE_ACTION: //3
writeD(sc.getId());
writeD(0x01); // C6
break;
case L2ShortCut.TYPE_MACRO: //4
writeD(sc.getId());
writeD(0x01); // C6
break;
case L2ShortCut.TYPE_RECIPE: //5
writeD(sc.getId());
writeD(0x01); // C6
break;
default:
writeD(sc.getId());
writeD(0x01); // C6
). Хотя если передавать панель с однотипными ярлыками - то все будет нормально.
Можно, конечно, все это сделать в виде массива, и вызывать по команде в чат, но в принципе большая часть скрипта будет одинаковой, а в случае с таким переносом - намного нагляднее
--------------------------------------------------------
Обновлено: не, настолько внаглую не получится, надо как-то подругому пробовать.................