PDA

Просмотр полной версии : [Программа] Примерочная


AнTиKиJIеP
10.04.2014, 22:59
С помощью программы вы сможете узнать, как выглядит на персонажах тот или иной игровой предмет (одежда и оружие). Амуниция отображается непосредственно в игре (в окне выбора персонажа), поэтому для работы программы требуется наличие официального клиента ArcheAge. Программа работает автономно, игровой аккаунт не нужен, официальные серверы могут быть отключены.

Ссылка: [Ссылки могут видеть только зарегистрированные и активированные пользователи]
VT 1 ([Ссылки могут видеть только зарегистрированные и активированные пользователи] 3cc03d87ce71ae/analysis/1397156138/) | VT 2 ([Ссылки могут видеть только зарегистрированные и активированные пользователи] 5b3267c5a46be9/analysis/1397156292/)

[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Чтобы добавить полезности, вот так отсылаю список персонажей:

procedure TGame.SendPlayerList(Stream: TGameStream; Char: TCharacter);
var
P: TGamePacket;
S: RawByteString;
I: Integer;

procedure WriteItem(ItemId: Integer);
var
I: Integer;
begin
P.WriteD(ItemId);
if ItemId > 0 then
begin
P.WriteD(1); // ObjectId
for I := 1 to 6 do P.WriteC(0);
P.WriteC(1);
for I := 1 to 3 do P.WriteC(0);
P.WriteC(1);
for I := 1 to 4 do P.WriteC(0);
P.WriteC(1);
for I := 1 to 62 do P.WriteC(0);
P.WriteC(3);
for I := 1 to 16 do P.WriteC(0);
end;
end;
begin
P := TGamePacket.Create;
try
P.Id := $003901DD;
P.WriteC(1);
P.WriteC(1);
P.WriteD(Char.Id);
P.WriteS(Char.Name);

P.WriteC(Char.Model.race);
P.WriteC(Char.Model.gender);
P.WriteC(Char.Level);
P.WriteC($64);
P.WriteC(1);
P.WriteC(0);
P.WriteC(0);
P.WriteD($178);
P.WriteD(180); // zone_id?
P.WriteC(101); // faction_id?
for I := 1 to 21 do P.WriteC(0);

WriteItem(Char.Chest);
WriteItem(Char.Head);
WriteItem(Char.Legs);
WriteItem(Char.Gloves);
WriteItem(Char.Feet);

P.WriteD(0);
P.WriteD(0);
P.WriteD(0);
P.WriteD(0);
P.WriteD(0);
P.WriteD(0);
P.WriteD(0);
P.WriteD(0);

WriteItem(Char.Weapon);
WriteItem(Char.WeaponExtra);
WriteItem(Char.WeaponRanged);
WriteItem(Char.Instrument);

P.WriteD(Char.Model.face);
P.WriteD(Char.Model.hair_id);

P.WriteD(0);
P.WriteD(0);
P.WriteD(0);

P.WriteD(Char.Model.body);

S := RawByteString(#$00#$00#$00#$00#$00#$00#$00#$00#$00 #$00#$00#$00#$01 +
#$0B#$0B#$00#$00#$00#$00#$28#$5F#$CD#$03#$00#$00#$ 00#$00#$40#$2F +
#$C1#$03#$AC#$7D#$FC#$42#$03);
P.WriteB(@S[1], Length(S));

P.WriteD(Char.Model.hair_color_id);
P.WriteD(Char.Model.skin_color_id);
P.WriteD(0);
P.WriteD(0);
P.WriteSingle(1);
P.WriteSingle(1);
P.WriteD(0);
P.WriteD(0);
P.WriteD(Char.Model.face_fixed_decal_asset_0_id);
P.WriteSingle(Char.Model.face_fixed_decal_asset_0_ weight);
P.WriteD(Char.Model.face_fixed_decal_asset_1_id);
P.WriteSingle(Char.Model.face_fixed_decal_asset_1_ weight);
P.WriteD(Char.Model.face_fixed_decal_asset_2_id);
P.WriteSingle(Char.Model.face_fixed_decal_asset_2_ weight);
P.WriteD(Char.Model.face_fixed_decal_asset_3_id);
P.WriteSingle(Char.Model.face_fixed_decal_asset_3_ weight);
P.WriteD(0);
P.WriteD(Char.Model.face_normal_map_id);
P.WriteD(0);
P.WriteSingle(1);
P.WriteD(0);
P.WriteD(Char.Model.left_pupil_color);
P.WriteD(Char.Model.right_pupil_color);
P.WriteD(Char.Model.eyebrow_color);
P.WriteD(Char.Model.deco_color);

S := HexToStr(Char.Model.modifier);
P.WriteH(Length(S));
if S <> '' then
begin
P.WriteB(@S[1], Length(S));
end;

P.WriteD(500); // очки работы

S := RawByteString(#$BF +
#$F5#$F0#$52#$00#$00#$00#$00#$00#$00#$6B#$52#$EF#$ 52#$00#$00#$00 +
#$00#$00#$00#$00#$00#$6B#$52#$EF#$52#$00#$00#$00#$ 00#$00#$00#$00 +
#$00#$7A#$F5#$F0#$52#$00#$00#$00#$00#$00#$00#$00#$ 00#$00#$00#$00 +
#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$ 00#$00#$00#$00 +
#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$ 00#$00#$00#$00 +
#$00#$00#$00#$00#$00#$00#$00#$00#$00#$03#$00#$00#$ 00#$00#$00#$00 +
#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$ 00#$00#$00#$00 +
#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$00#$ 00#$00#$00#$00 +
#$00#$00#$5E#$D5#$F0#$52#$00#$00#$00#$00);
P.WriteB(@S[1], Length(S));

Stream.Send(P);
finally
FreeAndNil(P);
end;
end;
Code: Pascal