Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: src/Network/Receive/bRO.pm
- ===================================================================
- --- src/Network/Receive/bRO.pm (revision 7958)
- +++ src/Network/Receive/bRO.pm (working copy)
- @@ -1,57 +1,59 @@
- # bRO (Brazil): Odin
- package Network::Receive::bRO;
- use strict;
- -use Log qw(message warning error debug);
- +use Log qw(warning);
- use base 'Network::Receive::ServerType0';
- use Globals qw($messageSender);
- +my @recvPackets = (0x085C, 0x0922, 0x08AC, 0x091D, 0x0931, 0x08A2, 0x088A, 0x0953, 0x0811, 0x08A8, 0x0879, 0x0962, 0x093F, 0x0366, 0x0883, 0x0968, 0x0956, 0x0437, 0x093B, 0x093C, 0x095B, 0x0886, 0x0895, 0x0862, 0x094B, 0x0951, 0x085A, 0x088E, 0x0942, 0x0917, 0x085F, 0x087A, 0x092E, 0x023B, 0x0892, 0x0960, 0x08A1, 0x089E, 0x0202, 0x089C, 0x0865, 0x089F);
- +my @sendPackets = (0x08A4, 0x092C, 0x0925, 0x0957, 0x0881, 0x0894, 0x0918, 0x0937, 0x0362, 0x0958, 0x094C, 0x0940, 0x089A, 0x083C, 0x08A6, 0x0874, 0x0863, 0x096A, 0x0873, 0x0888, 0x094E, 0x0935, 0x094F, 0x0965, 0x0964, 0x095D, 0x0802, 0x092D, 0x0920, 0x0864, 0x0954, 0x0930, 0x0929, 0x0835, 0x087E, 0x0868, 0x0919, 0x0939, 0x091B, 0x0897, 0x0928, 0x0898);
- sub new {
- my ($class) = @_;
- my $self = $class->SUPER::new(@_);
- my %packets = (
- '0097' => ['private_message', 'v Z24 V Z*', [qw(len privMsgUser flag privMsg)]], # -1
- + '085C' => ['sync_request_ex'],
- + '0922' => ['sync_request_ex'],
- + '08AC' => ['sync_request_ex'],
- + '091D' => ['sync_request_ex'],
- + '0931' => ['sync_request_ex'],
- + '08A2' => ['sync_request_ex'],
- + '088A' => ['sync_request_ex'],
- + '0953' => ['sync_request_ex'],
- + '0811' => ['sync_request_ex'],
- + '08A8' => ['sync_request_ex'],
- + '0879' => ['sync_request_ex'],
- + '0962' => ['sync_request_ex'],
- + '093F' => ['sync_request_ex'],
- + '0366' => ['sync_request_ex'],
- + '0883' => ['sync_request_ex'],
- + '0968' => ['sync_request_ex'],
- + '0956' => ['sync_request_ex'],
- + '0437' => ['sync_request_ex'],
- + '093B' => ['sync_request_ex'],
- + '093C' => ['sync_request_ex'],
- + '095B' => ['sync_request_ex'],
- + '0886' => ['sync_request_ex'],
- + '0895' => ['sync_request_ex'],
- + '0862' => ['sync_request_ex'],
- + '094B' => ['sync_request_ex'],
- + '0951' => ['sync_request_ex'],
- '085A' => ['sync_request_ex'],
- - '085B' => ['sync_request_ex'],
- - '085C' => ['sync_request_ex'],
- - '085D' => ['sync_request_ex'],
- - '085E' => ['sync_request_ex'],
- + '088E' => ['sync_request_ex'],
- + '0942' => ['sync_request_ex'],
- + '0917' => ['sync_request_ex'],
- '085F' => ['sync_request_ex'],
- - '0860' => ['sync_request_ex'],
- - '0861' => ['sync_request_ex'],
- - '0862' => ['sync_request_ex'],
- - '0863' => ['sync_request_ex'],
- - '0864' => ['sync_request_ex'],
- + '087A' => ['sync_request_ex'],
- + '092E' => ['sync_request_ex'],
- + '023B' => ['sync_request_ex'],
- + '0892' => ['sync_request_ex'],
- + '0960' => ['sync_request_ex'],
- + '08A1' => ['sync_request_ex'],
- + '089E' => ['sync_request_ex'],
- + '0202' => ['sync_request_ex'],
- + '089C' => ['sync_request_ex'],
- '0865' => ['sync_request_ex'],
- - '0866' => ['sync_request_ex'],
- - '0867' => ['sync_request_ex'],
- - '0868' => ['sync_request_ex'],
- - '0869' => ['sync_request_ex'],
- - '086A' => ['sync_request_ex'],
- - '086B' => ['sync_request_ex'],
- - '086C' => ['sync_request_ex'],
- - '086D' => ['sync_request_ex'],
- - '086E' => ['sync_request_ex'],
- - '086F' => ['sync_request_ex'],
- - '0870' => ['sync_request_ex'],
- - '0871' => ['sync_request_ex'],
- - '0872' => ['sync_request_ex'],
- - '0873' => ['sync_request_ex'],
- - '0874' => ['sync_request_ex'],
- - '0875' => ['sync_request_ex'],
- - '0876' => ['sync_request_ex'],
- - '0877' => ['sync_request_ex'],
- - '0878' => ['sync_request_ex'],
- - '0879' => ['sync_request_ex'],
- - '087A' => ['sync_request_ex'],
- - '087B' => ['sync_request_ex'],
- - '087C' => ['sync_request_ex'],
- - '087D' => ['sync_request_ex'],
- - '087E' => ['sync_request_ex'],
- - '087F' => ['sync_request_ex'],
- - '0880' => ['sync_request_ex'],
- - '0881' => ['sync_request_ex'],
- - '0882' => ['sync_request_ex'],
- - '0883' => ['sync_request_ex'],
- + '089F' => ['sync_request_ex'],
- );
- foreach my $switch (keys %packets) {
- @@ -98,7 +100,14 @@
- my $PacketID = $args->{switch};
- # Cleaning Leading Zeros
- $PacketID =~ s/^0+//;
- - my $SyncID = (hex($PacketID) + 0x29);
- + my $SyncID = hex($PacketID);
- + my $index;
- + for $index (0 .. scalar(@recvPackets)) {
- + if ($SyncID == $recvPackets[$index]) {
- + $SyncID = $sendPackets[$index];
- + last;
- + }
- + }
- # Dispatching Sync Ex Reply
- $messageSender->sendReplySyncRequestEx($SyncID);
- }
- Index: src/Network/Send/bRO.pm
- ===================================================================
- --- src/Network/Send/bRO.pm (revision 7958)
- +++ src/Network/Send/bRO.pm (working copy)
- @@ -16,19 +16,19 @@
- '0232' => ['homunculus_move','a4 a4', [qw(homumID coordString)]],
- '02B0' => ['master_login', 'V Z24 a24 C Z16 Z14 C', [qw(version username password_rijndael master_version ip mac isGravityID)]],
- '0801' => ['buy_bulk_vender', 'x2 a4 a4 a*', [qw(venderID venderCID itemInfo)]],
- - '0802' => ['actor_look_at', 'v C', [qw(head body)]],
- - '0838' => ['storage_item_add', 'v V', [qw(index amount)]],
- - '0862' => ['move','a4', [qw(coordString)]],
- - '086D' => ['map_login', 'a4 a4 a4 V C', [qw(accountID charID sessionID tick sex)]],
- - '089A' => ['actor_info_request', 'a4', [qw(ID)]],
- - '0919' => ['sync', 'V', [qw(time)]],
- - '091F' => ['actor_action', 'a4 C', [qw(targetID type)]],
- - '0923' => ['item_drop', 'v2', [qw(index amount)]],
- - '092D' => ['storage_item_remove', 'v V', [qw(index amount)]],
- - '0932' => ['party_join_request_by_name', 'a24', [qw(partyName)]],
- - '0946' => ['homunculus_command', 'v C', [qw(commandType, commandID)]],
- - '094E' => ['item_take', 'a4', [qw(ID)]],
- - '0953' => ['skill_use_location', 'v4', [qw(lv skillID x y)]],
- + '086B' => ['actor_look_at', 'v C', [qw(head body)]],
- + '093A' => ['storage_item_add', 'v V', [qw(index amount)]],
- + '0870' => ['move','a4', [qw(coordString)]],
- + '094A' => ['map_login', 'a4 a4 a4 V C', [qw(accountID charID sessionID tick sex)]],
- + '0438' => ['actor_info_request', 'a4', [qw(ID)]],
- + '02C4' => ['sync', 'V', [qw(time)]],
- + '0882' => ['actor_action', 'a4 C', [qw(targetID type)]],
- + '088F' => ['item_drop', 'v2', [qw(index amount)]],
- + '0860' => ['storage_item_remove', 'v V', [qw(index amount)]],
- + '08A3' => ['party_join_request_by_name', 'a24', [qw(partyName)]],
- + '095E' => ['homunculus_command', 'v C', [qw(commandType, commandID)]],
- + '087B' => ['item_take', 'a4', [qw(ID)]],
- + '0880' => ['skill_use_location', 'v4', [qw(lv skillID x y)]],
- );
- $self->{packet_list}{$_} = $packets{$_} for keys %packets;
- @@ -38,19 +38,19 @@
- homunculus_move 0232
- master_login 02B0
- buy_bulk_vender 0801
- - actor_look_at 0802
- - storage_item_add 0838
- - move 0862
- - map_login 086D
- - actor_info_request 089A
- - sync 0919
- - actor_action 091F
- - item_drop 0923
- - storage_item_remove 092D
- - party_join_request_by_name 0932
- - homunculus_command 0946
- - item_take 094E
- - skill_use_location 0953
- + actor_look_at 086B
- + storage_item_add 093A
- + move 0870
- + map_login 094A
- + actor_info_request 0438
- + sync 02C4
- + actor_action 0882
- + item_drop 088F
- + storage_item_remove 0860
- + party_join_request_by_name 08A3
- + homunculus_command 095E
- + item_take 087B
- + skill_use_location 0880
- );
- $self->{packet_lut}{$_} = $handlers{$_} for keys %handlers;
- @@ -100,9 +100,9 @@
- my $type = shift;
- my $msg;
- if ($type == 3) {
- - $msg = pack("v v", 0x23B, $type).$pass.pack("H*", "EC62E539BB6BBC811A60C06FACCB7EC8");
- + $msg = pack("v v", 0x93E, $type).$pass.pack("H*", "EC62E539BB6BBC811A60C06FACCB7EC8");
- } elsif ($type == 2) {
- - $msg = pack("v v", 0x23B, $type).pack("H*", "EC62E539BB6BBC811A60C06FACCB7EC8").$pass;
- + $msg = pack("v v", 0x93E, $type).pack("H*", "EC62E539BB6BBC811A60C06FACCB7EC8").$pass;
- } else {
- ArgumentException->throw("The 'type' argument has invalid value ($type).");
- }
- @@ -182,14 +182,24 @@
- debug "Sent Request Join Party (by name): $name\n", "sendPacket", 2;
- }
- +sub sendSkillUse {
- + my ($self, $ID, $lv, $targetID) = @_;
- + my $msg;
- +
- + $msg = pack("C*", 0x23, 0x09).pack("v*",$lv,$ID).$targetID;
- +
- + $self->sendToServer($msg);
- + debug "Skill Use: $ID\n", "sendPacket", 2;
- +}
- +
- sub CalculateHash()
- {
- # K
- - $enc_val1 = Math::BigInt->new('0x00000000BF63E862')->bxor(0xFFFFFFFF);
- + $enc_val1 = Math::BigInt->new('0x737D211C');
- # M
- - $enc_val3 = Math::BigInt->new('0x00000000807EC6ED')->bxor(0xFFFFFFFF);
- + $enc_val3 = Math::BigInt->new('0x456F57EF');
- # A
- - $enc_val2 = Math::BigInt->new('0x00000000ABE5F430')->bxor(0xFFFFFFFF);
- + $enc_val2 = Math::BigInt->new('0x38424E43');
- }
- 1;
Advertisement
Add Comment
Please, Sign In to add comment