PDA

Просмотр полной версии : Манор. недоступная покупка семян


Wimmwimm
29.02.2012, 19:32
На сервере покупка семян разрешена только владельцам замка(и сокланам видимо). При попытке купить пишет "для вас нет предложений". Можно ли как-то это обойти?

MyGarant.net
29.02.2012, 20:28
Подкинуть бэкдор админу на сервер. И ручками сделать себя владельцем замка. И владычицей морскою.

Wimmwimm
29.02.2012, 21:00
Есть идея попробовать пакет на покупку семени. ведь если не пускает к меню покупки,то может купить можно. Только пакет найти не могу. знаю что пакет C4 RequestBuySeed. но его структуры не знаю

Sherman
29.02.2012, 22:44
Есть идея попробовать ... покупку семени.
faxed.

ПРУФ на обработчик пакета (http://trac.l2jserver.com/browser/branches/unstable/L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestBuySeed.java)

Из пруфа можно гипотетически понять, что скорее всего, стоит проверка типа:
Если Замок.КланВладелец.ID <> ТекущийПерсонаж.Клан.ID Тогда
ОтправитьКлиентуПакет("Манор тока по талонам");
КонецЕсли;

Ну, а из способа чтения сервером пакета RequestBuySeed можно понять как его читать:

protected void readImpl()
{
_manorId = readD(); //id замка

int count = readD(); //кол-во типов семок
if (count <= 0
|| count > Config.MAX_ITEM_IN_PACKET
|| count * BATCH_LENGTH != _buf.remaining())
{
return;
}
_seeds = new Seed[count];
for (int i = 0; i < count; i++) //читаем в цикле по количеству типов семок
{
int itemId = readD(); //думаю понятно - типа семка
long cnt = readQ(); //для непонятлевых - количество семок данного типа
if (cnt < 1)
{
_seeds = null;
return;
}
_seeds[i] = new Seed(itemId, cnt);
}
}

supernewbie
02.03.2012, 11:56
Из пруфа можно гипотетически понять, что скорее всего, стоит проверка типа:
PHP код:
Если Замок.КланВладелец.ID <> ТекущийПерсонаж.Клан.ID Тогда
ОтправитьКлиентуПакет("Манор тока по талонам");
КонецЕсли;
если есть пруф то зачем понимать гипотетически?
и где ты увидел в пруфе эту проверку?

Sherman
02.03.2012, 12:59
Гипотетически - связано с тем что на основе пруфа, реализовать как то иначе было бы излишне.
Пруф - исходник обработчика пакета RequestBuySeed. Поставь себя на место кодера, реализующего механизм описанный топикстартером, и задайся вопросом - как это сделать? Ответ придет сам собой. И уверен, что отличаться он будет незначительно.

Прокатить может, если проверка стоит только в вызове диалога Неписи. Тогда как топикстартер и писал, можно попробовать вослать пакет покупки семян. Для этого я как раз и привел кусок кода, который показывает структуру пакета.
Одно но, ежели проверка при вызове диалога Неписи сбрасывает player.LastFolkNPC и player.Target в ноль, то отправка пакета покупки семок приведет к:
if (!(manager instanceof L2ManorManagerInstance))
105 return;
и следовательно, семки незакупятся.

supernewbie
02.03.2012, 14:36
Одно но, ежели проверка при вызове диалога Неписи сбрасывает player.LastFolkNPC и player.Target в ноль, то отправка пакета покупки семок приведет к
какие диалоги? судя по коду - достаточно взять менеджера в таргет и послать пакет

Sherman
02.03.2012, 14:44
if (!getClient().getFloodProtectors().getManor().tryP erformAction("BuySeed"))
return;
Без вызова 45=RequestActionUse:d(ActionID)d(CtrlPressed)c(Shi ftPressed)
Ни один NPC не будет с тобой разговаривать.... Если мне память не изменяет, данные для getClient().getFloodProtectors() формируются для текеущего чара как раз при положительной обработке сервером RequestActionUse

Сам с этим сталкивался давно при сдаче итемов в сепах. Сначала шлешь RequestActionUse, потом пакет выбора пункта диалога.

supernewbie
02.03.2012, 14:49
Sherman, че за бред?

L2GameClient (http://trac.l2jserver.com/browser/branches/unstable/L2J_Server_BETA/java/com/l2jserver/gameserver/network/L2GameClient.java)

// flood protectors
93 private final FloodProtectors _floodProtectors = new FloodProtectors(this);

Sherman
02.03.2012, 14:56
Если мне память не изменяет, данные для getClient().getFloodProtectors() формируются для текеущего чара как раз при положительной обработке сервером RequestActionUse Тут я был не прав. Тут просто контроль на флуд пакетов.