Code: Select all
Index: src/Network/Receive.pm
===================================================================
--- src/Network/Receive.pm (revision 6546)
+++ src/Network/Receive.pm (working copy)
@@ -334,6 +334,24 @@
'02AD' => ['login_pin_code_request', 'v1 V', [qw(flag key)]],
# Packet Prefix encryption Support
'02AE' => ['initialize_message_id_encryption', 'V1 V1', [qw(param1 param2)]],
+ # tRO new packets (2008-09-16Ragexe12_Th)
+ '02B1' => ['quest_list'],
+ '02B2' => ['objective_info'],
+ '02C5' => ['party_invite_result', 'Z24 V1', [qw(name type)]],
+ '02C9' => ['party_allow_invite', 'C1', [qw(type)]],
+ '02D0' => ['inventory_items_nonstackable'],
+ '02D1' => ['storage_items_nonstackable'],
+ '02D2' => ['cart_equip_list'],
+ '02D4' => ['inventory_item_added', 'v1 v1 v1 C1 C1 C1 a8 v1 C1 C1 a6', [qw(index amount nameID identified broken upgrade cards type_equip type fail unknown)]],
+ '02DA' => ['show_equipment', 'C1', [qw(type)]],
+ '02E1' => ['actor_action', 'a4 a4 a4 V2 v1 v1 x1 v2', [qw(sourceID targetID tick src_speed dst_speed damage param2 param3 unknown)]],
+ '02E8' => ['inventory_items_stackable'],
+ '02E9' => ['cart_items_list'],
+ '02EA' => ['storage_items_stackable'],
+ '02EB' => ['map_loaded', 'V1 a3 v1', [qw(syncMapSync coords unknown)]],
+ '02EC' => ['actor_display', 'x1 a4 v3 V1 v5 V1 v5 a4 a4 V1 C2 a5 x3 v2', [qw(ID walk_speed param1 param2 param3 type hair_style weapon shield lowhead timestamp tophead midhead hair_color clothes_color head_dir guildID guildEmblem visual_effects stance sex coords lv unknown)]],
+ '02ED' => ['actor_display', 'a4 v3 V1 v10 a4 a4 x2 V1 C2 a3 x2 v2', [qw(ID walk_speed param1 param2 param3 type hair_style weapon shield lowhead tophead midhead hair_color clothes_color head_dir guildID guildEmblem visual_effects stance sex coords lv unknown)]],
+ '02EE' => ['actor_display', 'a4 v3 V1 v10 a4 a4 x2 V1 C2 a3 x2 C1 v2', [qw(ID walk_speed param1 param2 param3 type hair_style weapon shield lowhead tophead midhead hair_color clothes_color head_dir guildID guildEmblem visual_effects stance sex coords act lv unknown)]]
};
return bless \%self, $class;
@@ -1699,18 +1717,26 @@
error TF("Can't Add Cart Item (%s)\n", $reason);
}
+# 02D2 <msg len>.W {<index>.W <item id>.W <type>.B <identifiy>.B <equip type>.W <equiped pos>.W <broken>.B <refined>.B <card>.8B <unknown>.6B}.26B*
sub cart_equip_list {
my ($self, $args) = @_;
# "0122" sends non-stackable item info
# "0123" sends stackable item info
- my $newmsg;
+ my ($newmsg, $psize);
my $msg = $args->{RAW_MSG};
my $msg_size = $args->{RAW_MSG_SIZE};
$self->decrypt(\$newmsg, substr($msg, 4));
$msg = substr($msg, 0, 4).$newmsg;
- my $psize = ($args->{switch} eq '0297') ? 24 : 20;
+ if ($args->{switch} eq '0297') {
+ $psize = 24;
+ } elsif ($args->{switch} eq '02D2') {
+ $psize = 26;
+ } else {
+ $psize = 20;
+ }
+
for (my $i = 4; $i < $msg_size; $i += $psize) {
my $index = unpack("v1", substr($msg, $i, 2));
my $ID = unpack("v1", substr($msg, $i+2, 2));
@@ -1755,6 +1781,7 @@
$args->{item} = $item;
}
+#02E9 <msg len>.W {<index>.W <item id>.W <type>.B <identify>.B <amount>.W <arrow>.W <card>.8B <unknown>.4B}.22B*
sub cart_items_list {
my ($self, $args) = @_;
@@ -1767,6 +1794,14 @@
$msg = substr($msg, 0, 4).$newmsg;
my $psize = ($switch eq "0123") ? 10 : 18;
+ if ($switch eq '0123') {
+ $psize = 10;
+ } elsif ($switch eq '02E9') {
+ $psize = 22;
+ } else {
+ $psize = 18;
+ }
+
for (my $i = 4; $i < $msg_size; $i += $psize) {
my $index = unpack("v1", substr($msg, $i, 2));
my $ID = unpack("v1", substr($msg, $i+2, 2));
@@ -3334,14 +3369,22 @@
}
+# 02B0 <msg len>.W {<index>.W <item id>.W <type>.B <identify>.B <equip type>.W <equiped pos>.W <broken>.B <refined>.B <card>.8B <unknown>.6B}.26B*
sub inventory_items_nonstackable {
my ($self, $args) = @_;
return unless changeToInGameState();
- my $newmsg;
+ my ($newmsg, $psize);
$self->decrypt(\$newmsg, substr($args->{RAW_MSG}, 4));
my $msg = substr($args->{RAW_MSG}, 0, 4) . $newmsg;
- my $psize = ($args->{switch} eq '0295') ? 24 : 20;
+ if ($args->{switch} eq '0295') {
+ $psize = 24;
+ } elsif ($args->{switch} eq '02D0') {
+ $psize = 26;
+ } else {
+ $psize = 20;
+ }
+
for (my $i = 4; $i < $args->{RAW_MSG_SIZE}; $i += $psize) {
my $index = unpack("v1", substr($msg, $i, 2));
my $ID = unpack("v1", substr($msg, $i + 2, 2));
@@ -3381,14 +3424,22 @@
$ai_v{'cart_time'} = time + 1;
}
+# 02E8 <msg len>.W {<index>.W <item id>.W <type>.B <identify>.B <amount>.W <arrow>.W <card>.8B <unknown>.4B}.22B*
sub inventory_items_stackable {
my ($self, $args) = @_;
return unless changeToInGameState();
- my $newmsg;
+ my ($newmsg, $psize);
$self->decrypt(\$newmsg, substr($args->{RAW_MSG}, 4));
my $msg = substr($args->{RAW_MSG}, 0, 4).$newmsg;
- my $psize = ($args->{switch} eq "00A3") ? 10 : 18;
+ if ($args->{switch} eq '00A3') {
+ $psize = 10;
+ } elsif ($args->{switch} eq '02E8') {
+ $psize = 22;
+ } else {
+ $psize = 18;
+ }
+
for (my $i = 4; $i < $args->{RAW_MSG_SIZE}; $i += $psize) {
my $index = unpack("v1", substr($msg, $i, 2));
my $ID = unpack("v1", substr($msg, $i + 2, 2));
@@ -4215,6 +4266,35 @@
$ai_v{npc_talk}{time} = time;
}
+# Structure of packet by eAthena
+sub objective_info {
+ my ($self, $args) = @_;
+ my ($questID, $time, $mobnum, $mobCount, $mobName, $i, $k);
+
+ for ($i = 8; $i < $args->{RAW_MSG_SIZE}; $i += 104) {
+ ($questID, $time, $mobnum) = unpack('V x4 V v', substr($args->{RAW_MSG}, $i, 14));
+
+ # TODO
+
+ for ($k = 14; $k < 104; $k += 30) {
+ ($mobCount, $mobName) = unpack('x4 v Z24', substr($args->{RAW_MSG}, $k, 30));
+ $mobName = bytesToString($mobName);
+
+ # TODO
+ }
+ }
+}
+
+sub party_allow_invite {
+ my ($self, $args) = @_;
+
+ if ($args->{type}) {
+ message T("Not allowed other player invite to Party\n"), "party", 1;
+ } else {
+ message T("Allowed other player invite to Party\n"), "party", 1;
+ }
+}
+
sub party_chat {
my ($self, $args) = @_;
my $msg;
@@ -4613,6 +4693,17 @@
shift @lastpm;
}
+# Structure of Packet by eAthena
+sub quest_list {
+ my ($self, $args) = @_;
+ my ($questID, $state, $i);
+
+ for ($i = 8; $i < $args->{RAW_MSG_SIZE}; $i += 5) {
+ ($questID, $state) = unpack('V C', substr($args->{RAW_MSG}, $i, 5));
+ # TODO
+ }
+}
+
# The block size in the received_characters packet varies from server to server.
# This method may be overrided in other ServerType handlers to return
# the correct block size.
@@ -5026,6 +5117,16 @@
message TF("You can sell %s items!\n", $number);
}
+sub show_equipment {
+ my ($self, $args) = @_;
+
+ if ($args->{type}) {
+ message T("Allowed other player view Equipment\n");
+ } else {
+ message T("Not allowed other player view Equipment\n");
+ }
+}
+
sub skill_cast {
my ($self, $args) = @_;
@@ -5783,15 +5884,23 @@
}
}
+# 02D1 <msg len>.W {<index>.W <item id>.W <type>.B <identify>.B <equip type>.W <equiped pos>.W <broken>.B <refined>.B <card>.8B <unknown>.6B}.26B*
sub storage_items_nonstackable {
my ($self, $args) = @_;
# Retrieve list of non-stackable (weapons & armor) storage items.
# This packet is sent immediately after 00A5/01F0.
- my $newmsg;
+ my ($newmsg, $psize);
$self->decrypt(\$newmsg, substr($args->{RAW_MSG}, 4));
my $msg = substr($args->{RAW_MSG}, 0, 4).$newmsg;
- my $psize = ($args->{switch} eq '0296') ? 24 : 20;
+ if ($args->{switch} eq '0296') {
+ $psize = 24;
+ } elsif ($args->{switch} eq '02D1') {
+ $psize = 26;
+ } else {
+ $psize = 20;
+ }
+
for (my $i = 4; $i < $args->{RAW_MSG_SIZE}; $i += $psize) {
my $index = unpack("v1", substr($msg, $i, 2));
my $ID = unpack("v1", substr($msg, $i + 2, 2));
@@ -5812,16 +5921,24 @@
}
}
+# 02EA <msg len>.W {<index>.W <item id>.W <type>.B <identify>.B <amount>.W <arrow>.W <card>.8B <unknown>.4B}.22B*
sub storage_items_stackable {
my ($self, $args) = @_;
# Retrieve list of stackable storage items
- my $newmsg;
+ my ($newmsg, $psize);
$self->decrypt(\$newmsg, substr($args->{RAW_MSG}, 4));
my $msg = substr($args->{RAW_MSG}, 0, 4).$newmsg;
undef %storage;
undef @storageID;
- my $psize = ($args->{switch} eq "00A5") ? 10 : 18;
+ if ($args->{switch} eq '00A5') {
+ $psize = 10;
+ } elsif ($args->{switch} eq '02EA') {
+ $psize = 22;
+ } else {
+ $psize = 18;
+ }
+
for (my $i = 4; $i < $args->{RAW_MSG_SIZE}; $i += $psize) {
my $index = unpack("v1", substr($msg, $i, 2));
my $ID = unpack("v1", substr($msg, $i + 2, 2));
Index: src/Network/Send/ServerType0.pm
===================================================================
--- src/Network/Send/ServerType0.pm (revision 6546)
+++ src/Network/Send/ServerType0.pm (working copy)
@@ -391,10 +391,12 @@
sub sendGameLogin {
my ($self, $accountID, $sessionID, $sessionID2, $sex) = @_;
my $msg = pack("v1", hex($masterServer->{gameLogin_packet}) || 0x65) . $accountID . $sessionID . $sessionID2 . pack("C*", 0, 0, $sex);
- if (hex($masterServer->{gameLogin_packet}) == 0x0273) {
+
+ if (hex($masterServer->{gameLogin_packet}) == 0x0273 || hex($masterServer->{gameLogin_packet}) == 0x0275) {
my ($serv) = $masterServer->{ip} =~ /\d+\.\d+\.\d+\.(\d+)/;
$msg .= pack("x16 C1 x3", $serv);
}
+
$self->sendToServer($msg);
debug "Sent sendGameLogin\n", "sendPacket", 2;
}
@@ -678,7 +680,8 @@
my $msg;
$sex = 0 if ($sex > 1 || $sex < 0); # Sex can only be 0 (female) or 1 (male)
- if ($self->{serverType} == 0) {
+ if ($self->{serverType} == 0 || $self->{serverType} == 21) {
+ # Server Type 21 is tRO (2008-09-16Ragexe12_Th)
$msg = pack("C*", 0x72,0) .
$accountID .
$charID .
src\Network\Send\ServerType21.pm
Code: Select all
#########################################################################
# 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) for 2008-09-16Ragexe12_Th
# Servertype overview: http://www.openkore.com/wiki/index.php/ServerType
package Network::Send::ServerType21;
use strict;
use Globals;
use Network::Send::ServerType0;
use base qw(Network::Send::ServerType0);
use Log qw(error debug);
use I18N qw(stringToBytes);
use Utils qw(getTickCount getHex getCoordString);
sub new {
my ($class) = @_;
return $class->SUPER::new(@_);
}
sub sendMove {
my $self = shift;
my $x = int scalar shift;
my $y = int scalar shift;
my $msg;
$msg = pack("C*", 0x85, 0x00) . getCoordString($x, $y, 1);
$self->sendToServer($msg);
debug "Sent move to: $x, $y\n", "sendPacket", 2;
}
1;
Code: Select all
#########################################################################
# OpenKore - Network subsystem
# Copyright (c) 2006 OpenKore Team
#
# 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) for 2008-09-16Ragexe12_Th
# Servertype overview: http://www.openkore.com/wiki/index.php/ServerType
package Network::Receive::ServerType21;
use strict;
use Network::Receive;
use base qw(Network::Receive);
use Log qw(message warning error debug);
use Translation;
use Globals;
use I18N qw(bytesToString);
use Utils qw(getHex swrite makeIP makeCoords);
sub new {
my ($class) = @_;
my $self = $class->SUPER::new();
$self->{packet_list}{'0078'} = ['actor_display', 'x1 a4 v14 a4 v2 x2 C2 a3 x2 C1 v1', [qw(ID walk_speed param1 param2 param3 type hair_style weapon shield lowhead tophead midhead hair_color clothes_color head_dir guildID guildEmblem visual_effects stance sex coords act lv)]];
$self->{packet_list}{'007C'} = ['actor_display', 'x1 a4 v14 C2 a3', [qw(ID walk_speed param1 param2 param3 hair_style weapon lowhead type shield tophead midhead hair_color clothes_color head_dir stance sex coords)]];
$self->{packet_list}{'022C'} = ['actor_display', 'x1 a4 v3 V1 v5 V1 v5 a4 a4 V1 C2 a5 x3 v1', [qw(ID walk_speed param1 param2 param3 type hair_style weapon shield lowhead timestamp tophead midhead hair_color clothes_color head_dir guildID guildEmblem visual_effects stance sex coords lv)]];
return $self;
}
sub account_server_info {
my ($self, $args) = @_;
my $msg = substr($args->{serverInfo},4); # tRO uses some king of offset for the data.
my $msg_size = length($msg);
$net->setState(2);
undef $conState_tries;
$sessionID = $args->{sessionID};
$accountID = $args->{accountID};
$sessionID2 = $args->{sessionID2};
$accountSex = $args->{accountSex} % 2;
$accountSex2 = ($config{'sex'} ne "") ? $config{'sex'} : $accountSex;
message swrite(
T("-----------Account Info------------\n" .
"Account ID: \@<<<<<<<<< \@<<<<<<<<<<\n" .
"Sex: \@<<<<<<<<<<<<<<<<<<<<<\n" .
"Session ID: \@<<<<<<<<< \@<<<<<<<<<<\n" .
" \@<<<<<<<<< \@<<<<<<<<<<\n" .
"-----------------------------------"),
[unpack("V1",$accountID), getHex($accountID), $sex_lut{$accountSex}, unpack("V1",$sessionID), getHex($sessionID),
unpack("V1",$sessionID2), getHex($sessionID2)]), 'connection';
my $num = 0;
undef @servers;
for (my $i = 0; $i < $msg_size; $i+=32) {
$servers[$num]{ip} = makeIP(substr($msg, $i, 4));
$servers[$num]{ip} = $masterServer->{ip} if ($masterServer && $masterServer->{private});
$servers[$num]{port} = unpack("v1", substr($msg, $i+4, 2));
$servers[$num]{name} = bytesToString(unpack("Z*", substr($msg, $i + 6, 20)));
$servers[$num]{users} = unpack("V",substr($msg, $i + 26, 4));
$num++;
}
message T("--------- Servers ----------\n" .
"# Name Users IP Port\n"), 'connection';
for (my $num = 0; $num < @servers; $num++) {
message(swrite(
"@<< @<<<<<<<<<<<<<<<<<<<< @<<<<< @<<<<<<<<<<<<<< @<<<<<",
[$num, $servers[$num]{name}, $servers[$num]{users}, $servers[$num]{ip}, $servers[$num]{port}]
), 'connection');
}
message("-------------------------------\n", 'connection');
if ($net->version != 1) {
message T("Closing connection to Account Server\n"), 'connection';
$net->serverDisconnect();
if (!$masterServer->{charServer_ip} && $config{server} eq "") {
my @serverList;
foreach my $server (@servers) {
push @serverList, $server->{name};
}
my $ret = $interface->showMenu(
T("Please select your login server."),
\@serverList,
title => T("Select Login Server"));
if ($ret == -1) {
quit();
} else {
main::configModify('server', $ret, 1);
}
} elsif ($masterServer->{charServer_ip}) {
message TF("Forcing connect to char server %s: %s\n", $masterServer->{charServer_ip}, $masterServer->{charServer_port}), 'connection';
} else {
message TF("Server %s selected\n",$config{server}), 'connection';
}
}
}
1;
Code: Select all
Index: recvpackets-tro.txt
===================================================================
--- recvpackets-tro.txt (revision 6546)
+++ recvpackets-tro.txt (working copy)
@@ -1,4 +1,4 @@
-# Packet lengths for tRO (March 3rd, 2008)
+# Packet lengths for tRO (2008-09-16)
0064 55
0065 17
0066 3
@@ -19,11 +19,11 @@
0075 0
0076 9
0077 5
-0078 54
+0078 55
0079 53
007A 58
007B 60
-007C 41
+007C 42
007D 2
007E 6
007F 6
@@ -255,21 +255,13 @@
0163 0
0164 0
0165 30
-0165 30
0166 0
-0166 0
0167 3
-0167 3
0168 14
-0168 14
0169 3
-0169 3
016A 30
-016A 30
016B 10
-016B 10
016C 43
-016C 43
016D 14
016E 186
016F 182
@@ -455,7 +447,7 @@
0229 15
022A 58
022B 57
-022C 64
+022C 65
022D 5
022E 71
022F 5
@@ -559,21 +551,19 @@
0298 8
0299 6
029A 27
-029B 72
+029B 80
029C 66
029D 0
029E 11
029F 3
02A2 8
02A5 8
-02A6 204
-02A7 204
+02A6 404
+02A7 404
02AA 4
02AB 36
02AC 6
02AD 8
-02AE 10
-02AF 2
02B0 85
02B1 0
02B2 0
@@ -633,3 +623,330 @@
02ED 59
02EE 60
02EF 8
+02F0 10
+02F1 2
+02F2 2
+02F3 0
+02F4 0
+02F5 0
+02F6 0
+02F7 0
+02F8 0
+02F9 0
+02FA 0
+02FB 0
+02FC 0
+02FD 0
+02FE 0
+02FF 0
+0300 0
+0301 0
+0302 0
+0303 0
+0304 0
+0305 0
+0306 0
+0307 0
+0308 0
+0309 0
+030A 0
+030B 0
+030C 0
+030D 0
+030E 0
+030F 0
+0310 0
+0311 0
+0312 0
+0313 0
+0314 0
+0315 0
+0316 0
+0317 0
+0318 0
+0319 0
+031A 0
+031B 0
+031C 0
+031D 0
+031E 0
+031F 0
+0320 0
+0321 0
+0322 0
+0323 0
+0324 0
+0325 0
+0326 0
+0327 0
+0328 0
+0329 0
+032A 0
+032B 0
+032C 0
+032D 0
+032E 0
+032F 0
+0330 0
+0331 0
+0332 0
+0333 0
+0334 0
+0335 0
+0336 0
+0337 0
+0338 0
+0339 0
+033A 0
+033B 0
+033C 0
+033D 0
+033E 0
+033F 0
+0340 0
+0341 0
+0342 0
+0343 0
+0344 0
+0345 0
+0346 0
+0347 0
+0348 0
+0349 0
+034A 0
+034B 0
+034C 0
+034D 0
+034E 0
+034F 0
+0350 0
+0351 0
+0352 0
+0353 0
+0354 0
+0355 0
+0356 0
+0357 0
+0358 0
+0359 0
+035A 0
+035B 0
+035C 2
+035D 0
+035E 2
+035F 0
+0360 0
+0361 0
+0362 0
+0363 0
+0364 0
+0365 0
+0366 0
+0367 0
+0368 0
+0369 0
+036A 0
+036B 0
+036C 0
+036D 0
+036E 0
+036F 0
+0370 0
+0371 0
+0372 0
+0373 0
+0374 0
+0375 0
+0376 0
+0377 0
+0378 0
+0379 0
+037A 0
+037B 0
+037C 0
+037D 0
+037E 0
+037F 0
+0380 0
+0381 0
+0382 0
+0383 0
+0384 0
+0385 0
+0386 0
+0387 0
+0388 0
+0389 0
+038A 0
+038B 0
+038C 0
+038D 0
+038E 0
+038F 0
+0390 0
+0391 0
+0392 0
+0393 0
+0394 0
+0395 0
+0396 0
+0397 0
+0398 0
+0399 0
+039A 0
+039B 0
+039C 0
+039D 0
+039E 0
+039F 0
+03A0 0
+03A1 0
+03A2 0
+03A3 0
+03A4 0
+03A5 0
+03A6 0
+03A7 0
+03A8 0
+03A9 0
+03AA 0
+03AB 0
+03AC 0
+03AD 0
+03AE 0
+03AF 0
+03B0 0
+03B1 0
+03B2 0
+03B3 0
+03B4 0
+03B5 0
+03B6 0
+03B7 0
+03B8 0
+03B9 0
+03BA 0
+03BB 0
+03BC 0
+03BD 0
+03BE 0
+03BF 0
+03C0 0
+03C1 0
+03C2 0
+03C3 0
+03C4 0
+03C5 0
+03C6 0
+03C7 0
+03C8 0
+03C9 0
+03CA 0
+03CB 0
+03CC 0
+03CD 0
+03CE 0
+03CF 0
+03D0 0
+03D1 0
+03D2 0
+03D3 0
+03D4 0
+03D5 0
+03D6 0
+03D7 0
+03D8 0
+03D9 0
+03DA 0
+03DB 0
+03DC 0
+03DD 18
+03DE 18
+03E2 0
+03E3 0
+03E4 0
+03E5 0
+03E6 0
+03E7 0
+03E8 0
+03E9 0
+03EA 0
+03EB 0
+03EC 0
+03ED 0
+03EE 0
+03EF 0
+03F0 0
+03F1 0
+03F2 0
+03F3 0
+03F4 0
+03F5 0
+03F6 0
+03F7 0
+03F8 0
+03F9 0
+03FA 0
+03FB 0
+03FC 0
+03FD 0
+03FE 0
+03FF 0
+0400 0
+0401 0
+0402 0
+0403 0
+0404 0
+0405 0
+0406 0
+0407 0
+0408 0
+0409 0
+040A 0
+040B 0
+040C 0
+040D 0
+040E 0
+040F 0
+0410 0
+0411 0
+0412 0
+0413 0
+0414 0
+0415 0
+0416 0
+0417 0
+0418 0
+0419 0
+041A 0
+041B 0
+041C 0
+041D 0
+041E 0
+041F 0
+0420 0
+0421 0
+0422 0
+0423 0
+0424 0
+0425 0
+0426 0
+0427 0
+0428 0
+0429 0
+042A 0
+042B 0
+042C 0
+042D 0
+042E 0
+042F 0
+0430 0
+0431 0
+0432 0
+0433 0
+0434 0
+0435 0
+0436 19
+0437 7
+0438 10
+0439 8
Index: servers.txt
===================================================================
--- servers.txt (revision 6546)
+++ servers.txt (working copy)
@@ -360,58 +360,32 @@
PINEncryptKey 0x050B6F79, 0x0202C179, 0x00E20120, 0x04FA43E3, 0x0179B6C8, 0x05973DF2, 0x07D8D6B, 0x08CB9ED9
## www.ragnarok.in.th/
-[Thailand - tRO Main server (Surtr, Bestla, Magni, Frey, Skadi)]
+[Thailand - tRO Main server (Norse)]
ip 203.144.244.5
port 6900
master_version 7
version 24
-serverType 0
+serverType 21
secureLogin 3
secureLogin_type 0
secureLogin_account 0
gameLogin_packet 0x275
-gameGuard 1
pauseCharServer 1
patchserver wpatch.ragnarok.in.th
patchpath /patch70
serverEncoding Thai
recvpackets recvpackets-tro.txt
-# please double check before use this entry
-[Thailand - tRO: Valkyrie2]
-ip 203.144.244.122
-port 6900
-master_version 7
-version 31
-serverType 17
-secureLogin 3
-secureLogin_type 0
-secureLogin_requestCode
-secureLogin_account 3
-pauseCharServer 1
-patchserver wpatch.ragnarok.in.th
-patchpath /patch70
-serverEncoding Thai
-paddedPackets 1
-paddedPackets_attackID 0x193
-paddedPackets_skillUseID 0x89
-# Data for XKore PP mode
-syncID 0x7E
-syncTickOffset 3
-mapLoadedTickOffset 5
-recvpackets recvpackets-tro.txt
-
[Thailand - tRO Free life server (Alice(new), Poring)]
ip 203.144.244.121
port 6900
master_version 7
version 24
-serverType 0
+serverType 21
secureLogin 3
secureLogin_type 0
secureLogin_account 0
gameLogin_packet 0x275
-gameGuard 1
pauseCharServer 1
patchserver wpatch.ragnarok.in.th
patchpath /patch70
@@ -423,12 +397,11 @@
port 6900
master_version 7
version 24
-serverType 0
+serverType 21
secureLogin 3
secureLogin_type 0
secureLogin_account 0
gameLogin_packet 0x275
-gameGuard 1
pauseCharServer 1
patchserver wpatch.ragnarok.in.th
patchpath /patch70