Equipment is not showing up due to a typo.
Diff (package Network::XKore2::MapServer):
Code: Select all
Index: MapServer.pm
===================================================================
--- MapServer.pm (revision 6470)
+++ MapServer.pm (working copy)
@@ -195,7 +195,7 @@
# Send non-stackable item (mostly equipment) information
$output = '';
- foreach my $item (@stackable) {
+ foreach my $item (@nonstackable) {
$output .= pack('v2 C2 v2 C2 a8',
$item->{index}, $item->{nameID}, $item->{type},
$item->{identified}, $item->{type_equip}, $item->{equipped}, $item->{broken},
so does anyone know if it is normal that the RO client gets disconnected from the emulated map server whenever you use a skill manually inside the RO client?
[EDIT 1]
Well, that didn't seem to be normal, so here is the fix for the DC'ing upon skill usage for serverType 8 - 8_4.
Diff (package Base::Ragnarok::MapServer):
(changed spaces into tabs aswell, thats why so much seems to be changing)
Code: Select all
Index: MapServer.pm
===================================================================
--- MapServer.pm (revision 6487)
+++ MapServer.pm (working copy)
@@ -48,7 +48,7 @@
$self->{sessionStore}->remove($session);
$client->{session} = $session;
- $client->send($accountID);
+ $client->send($accountID) if ($self->getServerType() != '8_4');
my $charInfo = $self->getCharInfo($session);
my $coords = '';
@@ -66,15 +66,19 @@
sub process_0072 {
my ($self, $client, $message) = @_;
- if ($self->{serverType} == 0) {
+ if ($self->getServerType() == 0) {
# Map server login.
- my ($accountID, $charID, $sessionID, $gender) = unpack('x2 a4 a4 V x4 C', $message);
- $self->handleLogin($client, $accountID, $charID, $sessionID, $gender);
- return 1;
+ my ($accountID, $charID, $sessionID, $gender) = unpack('x2 a4 a4 V x4 C', $message);
+ $self->handleLogin($client, $accountID, $charID, $sessionID, $gender);
+ return 1;
+ } elsif ($self->getServerType() == 8) {
+ # packet sendSkillUse
+ $self->unhandledMessage($client, $message);
+ return 0;
} else { #oRO and pRO and idRO
my ($accountID, $charID, $sessionID, $gender) = unpack('x2 a4 x5 a4 x2 V x4 C', $message);
- $self->handleLogin($client, $accountID, $charID, $sessionID, $gender);
- return 1;
+ $self->handleLogin($client, $accountID, $charID, $sessionID, $gender);
+ return 1;
}
}
the m/^8(_[1-4])?$/ regex didn't seem to be needed, it seems that serverType 8 already includes 8_1,2,3,4
So i've changed "} elsif ($self->getServerType() == m/^8(_[1-4])?$/) {" to "} elsif ($self->getServerType() == 8) {" in the previous diff-patch. => IS THIS NORMAL? because this way if you check somewhere for serverType 8, you are also including the other 4 servertypes, and this might cause trouble.
For something completely different now.
I'm playing on a 8_4 server and i could only connect 1 out of 10 times to the RO client,
but by commenting out a line 51 in package Base::Ragnarok::MapServer ==> #$client->send($accountID);
it seems to work for 100%, you can even log in trough the dummy characters.
I think that the login sequence for serverType 8_4 is a bit different opposed to that off all previous serverTypes that it has worked on.
You already seem to be sending that accountID in package package Base::Ragnarok::CharServer on line 139.
What i want to ask now, is this actually needed for the serverType's sequences to send that accountID twice?
I don't want to make a fix for 8_4 that would screw up the others, and atm i don't have time to test it.
[EDIT 3]
Updated previous patch, so that 8_4 works perfectly and other serverTypes would not be affected.
I'm not sure tough if the last problem i've described only applies for serverType 8_4, so could anyone test this on other serverTypes (8, 8_1, ...) ?