Просмотр полной версии : Манор. недоступная покупка семян
Wimmwimm
29.02.2012, 19:32
На сервере покупка семян разрешена только владельцам замка(и сокланам видимо). При попытке купить пишет "для вас нет предложений". Можно ли как-то это обойти?
MyGarant.net
29.02.2012, 20:28
Подкинуть бэкдор админу на сервер. И ручками сделать себя владельцем замка. И владычицей морскою.
Wimmwimm
29.02.2012, 21:00
Есть идея попробовать пакет на покупку семени. ведь если не пускает к меню покупки,то может купить можно. Только пакет найти не могу. знаю что пакет C4 RequestBuySeed. но его структуры не знаю
Есть идея попробовать ... покупку семени.
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 Тогда
ОтправитьКлиентуПакет("Манор тока по талонам");
КонецЕсли;
если есть пруф то зачем понимать гипотетически?
и где ты увидел в пруфе эту проверку?
Гипотетически - связано с тем что на основе пруфа, реализовать как то иначе было бы излишне.
Пруф - исходник обработчика пакета RequestBuySeed. Поставь себя на место кодера, реализующего механизм описанный топикстартером, и задайся вопросом - как это сделать? Ответ придет сам собой. И уверен, что отличаться он будет незначительно.
Прокатить может, если проверка стоит только в вызове диалога Неписи. Тогда как топикстартер и писал, можно попробовать вослать пакет покупки семян. Для этого я как раз и привел кусок кода, который показывает структуру пакета.
Одно но, ежели проверка при вызове диалога Неписи сбрасывает player.LastFolkNPC и player.Target в ноль, то отправка пакета покупки семок приведет к:
if (!(manager instanceof L2ManorManagerInstance))
105 return;
и следовательно, семки незакупятся.
supernewbie
02.03.2012, 14:36
Одно но, ежели проверка при вызове диалога Неписи сбрасывает player.LastFolkNPC и player.Target в ноль, то отправка пакета покупки семок приведет к
какие диалоги? судя по коду - достаточно взять менеджера в таргет и послать пакет
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);
Если мне память не изменяет, данные для getClient().getFloodProtectors() формируются для текеущего чара как раз при положительной обработке сервером RequestActionUse Тут я был не прав. Тут просто контроль на флуд пакетов.
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot