Download from here https://github.com/OpenKore/openkore/tree/tRO
send > trO
Receive > tRO#################################################################################################
# OpenKore - Network subsystem #
# This module contains functions for sending messages to the server. #
# #
# This software is open source, licensed under the GNU General Public #
# License, version 2. #
# Basically, this means that you're allowed to modify and distribute #
# this software. However, if you distribute modified versions, you MUST #
# also distribute the source code. #
# See http://www.gnu.org/licenses/gpl.html for the full license. #
#################################################################################################
# tRO (Thai)
package Network::Send::tRO;
use strict;
use base qw(Network::Send::ServerType0);
sub new {
my ($class) = @_;
my $self = $class->SUPER::new(@_);
my %packets = (
'0369' => ['actor_action', 'a4 C', [qw(targetID type)]],
'035F' => ['character_move','a3', [qw(coords)]],
'0361' => ['actor_look_at', 'v C', [qw(head body)]],
'0362' => ['item_take', 'a4', [qw(ID)]],
'0363' => ['item_drop', 'v2', [qw(index amount)]],
'023B' => ['storage_password'],
'0364' => ['storage_item_add', 'v V', [qw(index amount)]],
'0365' => ['storage_item_remove', 'v V', [qw(index amount)]],
'0366' => ['skill_use_location', 'v4', [qw(lv skillID x y)]],
'0368' => ['actor_info_request', 'a4', [qw(ID)]],
'022D' => ['party_join_request_by_name', 'Z24', [qw(partyName)]],
'0802' => ['homunculus_command', 'v C', [qw(commandType, commandID)]],
'0970' => ['char_create', 'a24 C v2', [qw(name, slot, hair_style, hair_#color)]],
'0436' => ['map_login', 'a4 a4 a4 V C', [qw(accountID charID sessionID tick sex)]],
);
$self->{packet_list}{$_} = $packets{$_} for keys %packets;
my %handlers = qw(
actor_action 0089
party_join_request_by_name 022D
storage_password 023B
game_login 0275
character_move 035F
actor_look_at 0361
item_take 0362
item_drop 0363
storage_item_add 0364
storage_item_remove 0365
skill_use_location 0366
actor_info_request 0368
actor_name_request 0369
skill_use 0438
party_setting 07D7
buy_bulk_vender 0801
homunculus_command 0802
char_create 0970
send_equip 0998
ban_check 0187
map_login 0436
sync 0360
);
$self->{packet_lut}{$_} = $handlers{$_} for keys %handlers;
$self->cryptKeys(0x4d8e77b2, 0x6e7b6757, 0x46ae0414);
return $self;
}
1;
#################################################################################################
# OpenKore - Network subsystem #
# This module contains functions for sending messages to the server. #
# #
# This software is open source, licensed under the GNU General Public #
# License, version 2. #
# Basically, this means that you're allowed to modify and distribute #
# this software. However, if you distribute modified versions, you MUST #
# also distribute the source code. #
# See http://www.gnu.org/licenses/gpl.html for the full license. #
#################################################################################################
# tRO (Thai)
package Network::Receive::tRO;
use strict;
use base qw(Network::Receive::ServerType0);
use Globals;
sub new {
my ($class) = @_;
my $self = $class->SUPER::new(@_);
my %packets = (
# '0069' => ['account_server_info', 'x2 a4 a4 a4 x30 C1 x4 a*', [qw(sessionID accountID sessionID2 accountSex serverInfo)]],
'0276' => ['account_server_info', 'x2 a4 a4 a4 x30 C1 x4 a*', [qw(sessionID accountID sessionID2 accountSex serverInfo)]],
'0078' => ['actor_exists', 'C a4 v14 a4 a2 v2 C2 a3 C3 v', [qw(object_type ID walk_speed opt1 opt2 option type hair_style weapon lowhead shield tophead midhead hair_color clothes_color head_dir guildID emblemID manner opt3 stance sex coords unknown1 unknown2 act lv)]], # 55 # standing
'007C' => ['actor_connected', 'C a4 v14 C2 a3 C2', [qw(object_type ID walk_speed opt1 opt2 option hair_style weapon lowhead type shield tophead midhead hair_color clothes_color head_dir stance sex coords unknown1 unknown2)]], # 42 # spawning
'0097' => ['private_message', 'v Z24 V Z*', [qw(len privMsgUser flag privMsg)]], # -1
'022C' => ['actor_moved', 'C a4 v3 V v5 V v5 a4 a2 v V C2 a6 C2 v', [qw(object_type ID walk_speed opt1 opt2 option type hair_style weapon shield lowhead tick tophead midhead hair_color clothes_color head_dir guildID emblemID manner opt3 stance sex coords unknown1 unknown2 lv)]], # 65 # walking
'082D' => ['sync_received_characters'],
'099D' => ['received_characters', 'x2 a*', [qw(charInfo)]],
'0367' => ['sync_request_ex'],
'085A' => ['sync_request_ex'],
'085B' => ['sync_request_ex'],
'085C' => ['sync_request_ex'],
'085D' => ['sync_request_ex'],
'085E' => ['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'],
'0865' => ['sync_request_ex'],
'0866' => ['sync_request_ex'],
'0867' => ['sync_request_ex'],
'0868' => ['sync_request_ex'],
'023B' => ['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'],
'0917' => ['sync_request_ex'],
'0918' => ['sync_request_ex'],
'0919' => ['sync_request_ex'],
'091A' => ['sync_request_ex'],
'091B' => ['sync_request_ex'],
'091C' => ['sync_request_ex'],
'091D' => ['sync_request_ex'],
'091E' => ['sync_request_ex'],
'091F' => ['sync_request_ex'],
'0920' => ['sync_request_ex'],
'0921' => ['sync_request_ex'],
'0361' => ['sync_request_ex'],
'0923' => ['sync_request_ex'],
'0924' => ['sync_request_ex'],
'0925' => ['sync_request_ex'],
'0926' => ['sync_request_ex'],
'0927' => ['sync_request_ex'],
'0928' => ['sync_request_ex'],
'0929' => ['sync_request_ex'],
'092A' => ['sync_request_ex'],
'092B' => ['sync_request_ex'],
'092C' => ['sync_request_ex'],
'092D' => ['sync_request_ex'],
'092E' => ['sync_request_ex'],
'092F' => ['sync_request_ex'],
'0930' => ['sync_request_ex'],
'0931' => ['sync_request_ex'],
'0932' => ['sync_request_ex'],
'0933' => ['sync_request_ex'],
'0934' => ['sync_request_ex'],
'0935' => ['sync_request_ex'],
'0936' => ['sync_request_ex'],
'0937' => ['sync_request_ex'],
'0938' => ['sync_request_ex'],
'0939' => ['sync_request_ex'],
'093A' => ['sync_request_ex'],
'093B' => ['sync_request_ex'],
'093C' => ['sync_request_ex'],
'093D' => ['sync_request_ex'],
'093E' => ['sync_request_ex'],
'093F' => ['sync_request_ex'],
);
foreach my $switch (keys %packets) {
$self->{packet_list}{$switch} = $packets{$switch};
}
my %handlers = qw(
received_characters 099D
sync_request 0187
received_character_ID_and_Map 0071
account_id 0283
actor_moved 0856
actor_exists 0857
actor_connected 0858
received_sync 007f
actor_info 0095
);
$self->{packet_lut}{$_} = $handlers{$_} for keys %handlers;
$self->{sync_ex_reply} = {
'0367' => '02C4',
'085A' => '0884',
'085B' => '0885',
'085C' => '0886',
'085D' => '0887',
'085E' => '0888',
'085F' => '0889',
'0860' => '088A',
'0861' => '088B',
'0862' => '088C',
'0863' => '088D',
'0864' => '088E',
'0865' => '088F',
'0866' => '0890',
'0867' => '0891',
'0868' => '0892',
'023B' => '0893',
'086A' => '0894',
'086B' => '0895',
'086C' => '0202',
'086D' => '0897',
'086E' => '0898',
'086F' => '0899',
'0870' => '089A',
'0871' => '089B',
'0872' => '089C',
'0873' => '089D',
'0874' => '089E',
'0875' => '089F',
'0876' => '08A0',
'0877' => '08A1',
'0878' => '08A2',
'0879' => '08A3',
'087A' => '08A4',
'087B' => '08A5',
'087C' => '08A6',
'087D' => '08A7',
'087E' => '08A8',
'087F' => '08A9',
'0880' => '08AA',
'0881' => '0436',
'0882' => '08AC',
'0883' => '08AD',
'0917' => '0941',
'0918' => '0942',
'0919' => '0943',
'091A' => '0944',
'091B' => '0945',
'091C' => '0946',
'091D' => '0947',
'091E' => '0948',
'091F' => '0949',
'0920' => '094A',
'0921' => '094B',
'0361' => '094C',
'0923' => '094D',
'0924' => '094E',
'0925' => '094F',
'0926' => '0950',
'0927' => '0951',
'0928' => '0952',
'0929' => '0953',
'092A' => '0954',
'092B' => '0955',
'092C' => '0956',
'092D' => '0957',
'092E' => '0958',
'092F' => '0959',
'0930' => '095A',
'0931' => '095B',
'0932' => '095C',
'0933' => '095D',
'0934' => '0940',
'0935' => '095E',
'0936' => '0960',
'0937' => '0961',
'0938' => '0962',
'0939' => '0963',
'093A' => '0964',
'093B' => '0965',
'093C' => '0966',
'093D' => '0967',
'093E' => '0968',
'093F' => '0969',
};
return $self;
}
1;
help me pls