TRO Fix 2008-09-16 (Satan Morocc)

Wrote new code? Fixed a bug? Want to discuss technical stuff? Feel free to post it here.

Moderator: Moderators

Message
Author
UltimaWeapon
Human
Human
Posts: 37
Joined: 04 Apr 2008, 22:55
Noob?: Yes
Location: Thailand
Contact:

TRO Fix 2008-09-16 (Satan Morocc)

#1 Post by UltimaWeapon »

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 .
New files.

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;
src\Network\Receive\ServerType21.pm

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;
Tables patch.

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
I may make you misunderstand. Because my English isn't good enough. So Sorry.
Image

DII
Noob
Noob
Posts: 1
Joined: 04 Apr 2008, 11:42

Re: TRO Fix 2008-09-16 (Satan Morocc)

#2 Post by DII »

Thank You very much

RoBo
Noob
Noob
Posts: 9
Joined: 04 Apr 2008, 10:29
Noob?: Yes
Location: Bkk Thailand

Re: TRO Fix 2008-09-16 (Satan Morocc)

#3 Post by RoBo »

Thanks you.

Bibian
Perl Monk
Perl Monk
Posts: 416
Joined: 04 Apr 2008, 03:08

Re: TRO Fix 2008-09-16 (Satan Morocc)

#4 Post by Bibian »

has this been tested on server that do not use the same s ervertype / packets as tRO?
since you alter receive.pm it may affect other servertypes aswell

Technology
Super Moderators
Super Moderators
Posts: 801
Joined: 06 May 2008, 12:47
Noob?: No

Re: TRO Fix 2008-09-16 (Satan Morocc)

#5 Post by Technology »

At first glance this code seems to be pretty compatible with other serverTypes.
None of the packetsswitches already exist in receive.pm, and the rest of the code doesn't look harmless.
There seem to be some TODO's in it tho.
But ofcourse, test it first to be sure.
One ST0 to rule them all? One PE viewer to find them!
One ST_kRO to bring them all and in the darkness bind them...

Mount Doom awaits us, fellowship of OpenKore!

RoBo
Noob
Noob
Posts: 9
Joined: 04 Apr 2008, 10:29
Noob?: Yes
Location: Bkk Thailand

Re: TRO Fix 2008-09-16 (Satan Morocc)

#6 Post by RoBo »

Please help us test with other servers since sooner or later Satan Morroc patch would apply to any official servers.

freezer123
Plain Yogurt
Plain Yogurt
Posts: 90
Joined: 28 Jul 2008, 05:12
Noob?: No

Re: TRO Fix 2008-09-16 (Satan Morocc)

#7 Post by freezer123 »

I have tested this on pRO Sakray and it can log-in to the game, but there a lot of unknown packets and it always dropping its target. I think the servertypes should also be updated.
Last edited by freezer123 on 23 Sep 2008, 12:50, edited 1 time in total.
Image

sli
Perl Monk
Perl Monk
Posts: 810
Joined: 04 Apr 2008, 17:26
Noob?: No

Re: TRO Fix 2008-09-16 (Satan Morocc)

#8 Post by sli »

Maybe because this is a tRO patch, not pRO?
cs : ee : realist

freezer123
Plain Yogurt
Plain Yogurt
Posts: 90
Joined: 28 Jul 2008, 05:12
Noob?: No

Re: TRO Fix 2008-09-16 (Satan Morocc)

#9 Post by freezer123 »

We have the same problem in pRO Sakray when they patch the episode 18. (Satan Morocc), were having this unknown packets 02EB and KO disconnects. I tried to use the above additional packet and succesfully connects me to the game, but it always dropping its target.
Image

kali
OpenKore Monk
OpenKore Monk
Posts: 457
Joined: 04 Apr 2008, 10:10

Re: TRO Fix 2008-09-16 (Satan Morocc)

#10 Post by kali »

The patches look good.

Ultima, don't you have SVN access yet?
Got your topic trashed by a mod?

Trashing topics is one click, and moving a topic to its proper forum is a lot harder. You expend the least effort in deciding where to post, mods expend the least effort by trashing.

Have a nice day.

Locked