PDA

Просмотр полной версии : vpnbot правка пакета 09 chaterselectioninfo


wimax
23.05.2011, 04:40
ну вообщем вот короче наклепал вот такую фигню смотреть ниже но при приходе пакета 09 реакции от наклепанного 0 что там не так не могу понять помогите разабратса



procedure fixloginlist;
begin
size:=ReadD(2);
unk1:=ReadD(6);
unk2:=readC(10);
for m:=0 to size do
begin
d:=m*11;
nickname:=readS(d);
ReadMask('dsddddddddddffdq',d,temp4);
ReadMask('dddddddddddddddddddddddddddddddddddddddd ffdddchhd',d,temp5);
end;
begin
buf := #$09;
writed(size);
writed(unk1);
writec(unk2);
for m:=0 to size do
begin
writeS('dsgdsg');
writeMask('dsddddddddddffdq',temp4);
writef(0);
writeMask('ddddddddddddddddddddddddddddddddddddddd dffdddchhd',temp5);
writed(0);
writed(0);
writed(0);
writed(0);
writef(0);
writef(0);
writed(0);
end;
pck := buf;
end;
end;

begin
if fromserver then
case pck[1] of
#$09: fixloginlist;
end;


Добавлено через 51 секунду
writeS('dsgdsg'); -- для теста скрипта)

Nickers
26.05.2011, 21:34
Так, а в чем соль?

Добавлено через 1 минуту
Не нашел SendToServer; Может я что-то не понял?(

Добавлено через 53 секунды
Да, я не понял в чем смысл(

wimax
27.05.2011, 00:59
Nickers, pck := buf; тоже самое

Breadfan
27.05.2011, 11:29
Что оно делать то вообще должно, по замыслу автора?

Kilatif
27.05.2011, 14:10
Breadfan, поправляет список чаров в чарлисте для vpnbot'a Ибо там они криво отображаются

Breadfan
27.05.2011, 19:18
если я правильно понял, и надо из формата HF в Final перевести, то:procedure fixCS;
var
i, size, j:integer;
begin
size:=ReadD(2);buf:=#$09;WriteD(size);WriteD(7);Wr iteC(0);
j:=11;
for i:=1 to size do begin
WriteS(ReadS(j));WriteD(ReadD(j));WriteS(ReadS(j)) ;
WriteD(ReadD(j));WriteD(ReadD(j));WriteD(ReadD(j)) ;WriteD(ReadD(j));WriteD(ReadD(j));
WriteD(ReadD(j));WriteD(ReadD(j));WriteD(ReadD(j)) ;WriteD(ReadD(j));WriteD(ReadD(j));
WriteF(ReadF(j));WriteF(ReadF(j));WriteD(ReadD(j)) ;WriteQ(ReadQ(j));ReadF(j);
WriteD(ReadD(j));WriteD(ReadD(j));WriteD(ReadD(j)) ;WriteD(ReadD(j));WriteD(ReadD(j));
WriteD(ReadD(j));WriteD(ReadD(j));WriteD(ReadD(j)) ;WriteD(ReadD(j));WriteD(ReadD(j));
WriteD(ReadD(j));WriteD(ReadD(j));WriteD(ReadD(j)) ;WriteD(ReadD(j));WriteD(ReadD(j));
WriteD(ReadD(j));WriteD(ReadD(j));WriteD(ReadD(j)) ;WriteD(ReadD(j));WriteD(ReadD(j));
WriteD(ReadD(j));WriteD(ReadD(j));WriteD(ReadD(j)) ;WriteD(ReadD(j));WriteD(ReadD(j));
WriteD(ReadD(j));WriteD(ReadD(j));WriteD(ReadD(j)) ;WriteD(ReadD(j));WriteD(ReadD(j));
WriteD(ReadD(j));WriteD(ReadD(j));WriteD(ReadD(j)) ;WriteD(ReadD(j));WriteD(ReadD(j));
WriteD(ReadD(j));WriteD(ReadD(j));WriteD(ReadD(j)) ;WriteD(ReadD(j));WriteD(ReadD(j));
WriteF(ReadF(j));WriteF(ReadF(j));WriteD(ReadD(j)) ;WriteD(ReadD(j));WriteD(ReadD(j));
WriteC(ReadC(j));WriteH(ReadH(j));WriteH(ReadH(j)) ;WriteD(ReadD(j));WriteD(ReadD(j));
WriteD(ReadD(j));WriteD(ReadD(j));WriteD(ReadD(j)) ;WriteF(ReadF(j));WriteF(ReadF(j));
ReadD(j);
end;
pck:=buf;
end;
procedure Init; //Вызывается при включении скрипта
begin
end;
procedure Free; //Вызывается при выключении скрипта
begin
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if fromserver and (pck[1]=#$09) then fixCS;
end.

wimax
27.05.2011, 19:44
Breadfan, хмм спасибо можна узнать от куда инфу о пакетах брал?

Breadfan
27.05.2011, 19:48
c http://www.l2jserver.com/ исходники брал. Да впрочем любой декомпил работающей сборки сгодится для этого.

wimax
27.05.2011, 19:53
Breadfan, вопрос а имея хекс пакета можна както преобразовать ?
либо с клиента както достать как клиент понемает пакеты от сервера

пакеты от клиента я нашол в вот от сервера нет

Добавлено через 54 секунды
проста у меня пакеты не 100% с l2jserver и запуетса перебирать как они выглядят и править ) и то на 100% не уверен что правильно поправлено

Breadfan
27.05.2011, 20:07
Прицепил распакованое описание пакетов хроник HighFive.
CharSelected:
protected final void writeImpl()
{
writeC(9);
int size = _characterPackages.length;
writeD(size);
writeD(7);
writeC(0);
long lastAccess = 0L;
if(_activeId == -1)
{
for(int i = 0; i < size; i++)
if(lastAccess < _characterPackages[i].getLastAccess())
{
lastAccess = _characterPackages[i].getLastAccess();
_activeId = i;
}

}
for(int i = 0; i < size; i++)
{
CharSelectInfoPackage charInfoPackage = _characterPackages[i];
writeS(charInfoPackage.getName());
writeD(charInfoPackage.getCharId());
writeS(_loginName);
writeD(_sessionId);
writeD(charInfoPackage.getClanId());
writeD(0);
writeD(charInfoPackage.getSex());
writeD(charInfoPackage.getRace());
if(charInfoPackage.getClassId() == charInfoPackage.getBaseClassId())
writeD(charInfoPackage.getClassId());
else
writeD(charInfoPackage.getBaseClassId());
writeD(1);
writeD(charInfoPackage.getX());
writeD(charInfoPackage.getY());
writeD(charInfoPackage.getZ());
writeF(charInfoPackage.getCurrentHp());
writeF(charInfoPackage.getCurrentMp());
writeD(charInfoPackage.getSp());
writeQ(charInfoPackage.getExp());
writeF((float)(charInfoPackage.getExp() - Experience.LEVEL[charInfoPackage.getLevel()]) / (float)(Experience.LEVEL[charInfoPackage.getLevel() + 1] - Experience.LEVEL[charInfoPackage.getLevel()]));
writeD(charInfoPackage.getLevel());
writeD(charInfoPackage.getKarma());
writeD(charInfoPackage.getPkKills());
writeD(charInfoPackage.getPvPKills());
writeD(0);
writeD(0);
writeD(0);
writeD(0);
writeD(0);
writeD(0);
writeD(0);
writeD(charInfoPackage.getPaperdollItemId(2));
writeD(charInfoPackage.getPaperdollItemId(8));
writeD(charInfoPackage.getPaperdollItemId(9));
writeD(charInfoPackage.getPaperdollItemId(4));
writeD(charInfoPackage.getPaperdollItemId(13));
writeD(charInfoPackage.getPaperdollItemId(14));
writeD(charInfoPackage.getPaperdollItemId(1));
writeD(charInfoPackage.getPaperdollItemId(5));
writeD(charInfoPackage.getPaperdollItemId(7));
writeD(charInfoPackage.getPaperdollItemId(10));
writeD(charInfoPackage.getPaperdollItemId(6));
writeD(charInfoPackage.getPaperdollItemId(11));
writeD(charInfoPackage.getPaperdollItemId(12));
writeD(charInfoPackage.getPaperdollItemId(23));
writeD(charInfoPackage.getPaperdollItemId(5));
writeD(charInfoPackage.getPaperdollItemId(2));
writeD(charInfoPackage.getPaperdollItemId(3));
writeD(charInfoPackage.getPaperdollItemId(16));
writeD(charInfoPackage.getPaperdollItemId(15));
writeD(charInfoPackage.getPaperdollItemId(17));
writeD(charInfoPackage.getPaperdollItemId(18));
writeD(charInfoPackage.getPaperdollItemId(19));
writeD(charInfoPackage.getPaperdollItemId(20));
writeD(charInfoPackage.getPaperdollItemId(21));
writeD(charInfoPackage.getPaperdollItemId(22));
writeD(charInfoPackage.getPaperdollItemId(24));
writeD(charInfoPackage.getHairStyle());
writeD(charInfoPackage.getHairColor());
writeD(charInfoPackage.getFace());
writeF(charInfoPackage.getMaxHp());
writeF(charInfoPackage.getMaxMp());
long deleteTime = charInfoPackage.getDeleteTimer();
int deletedays = 0;
if(deleteTime > 0L)
deletedays = (int)((deleteTime - System.currentTimeMillis()) / 1000L);
writeD(deletedays);
writeD(charInfoPackage.getClassId());
if(i == _activeId)
writeD(1);
else
writeD(0);
writeC(charInfoPackage.getEnchantEffect() <= 127 ? charInfoPackage.getEnchantEffect() : 127);
writeH(0);
writeH(0);
writeD(0);
writeD(0);
writeD(0);
writeD(0);
writeD(0);
writeF(0.0D);
writeF(0.0D);
writeD(charInfoPackage.getVitalityPoints());
}

Breadfan
27.05.2011, 20:07
вот клиентского useskill:
protected void readImpl()
{
_magicId = readD();
_ctrlPressed = readD() != 0;
_shiftPressed = readC() != 0;
}

Структуры пакетов описаны в блоках WriteImpl\ReadImpl. Если же на сервере чтото индивидуальное сотворили - то руками :)