Page 1 of 13

Temporary fix for openkore pRO problems (Feb 3, 2013)

Posted: 29 Jan 2013, 15:49
by heero
The changes have already been added to the latest version of openkore SVN just download from http://collectskin.com/openkore/

Fixed issues:
Can't reconstruct unknown packet: sync_received_characters at src/Network/PacketParser.pm line 172.
xKore 1 not working

I have managed to fix xkore 1 issue with pRO serverType but I am still working on fixing xkore 2, will update this topic when I have fixed xkore 2 problem.

Re: Temporary fix for openkore pRO disconnections (Jan 30, 2013)

Posted: 29 Jan 2013, 17:18
by Pornograffitti
It worked for me.

You're awesome heero.

Re: Temporary fix for openkore pRO disconnections (Jan 30, 2013)

Posted: 29 Jan 2013, 17:54
by NiTRO106
@heero

it also worked for me. thank you very much. can i ask a question? what file(s) specifically are modified through this fix? i try to copy the following files you mentioned to my original OpenKore folder (not to the temporary folder) and still it doesn't work. but after i copy my configurations to the temporary folder, and follow your instructions, it really works now.

Re: Temporary fix for openkore pRO disconnections (Jan 30, 2013)

Posted: 29 Jan 2013, 19:00
by gelo2012
you're our hero :)

Re: Temporary fix for openkore pRO disconnections (Jan 30, 2013)

Posted: 29 Jan 2013, 19:02
by Nex_Deus
This fix works! Thanks! :D

Re: Temporary fix for openkore pRO disconnections (Jan 30, 2013)

Posted: 29 Jan 2013, 19:04
by leahcim11
does this work on the "no character problem" in the character select in pRO? by the way sir heero what program should i use to edit the iRO.pm? i cant open it to edit. xD

Re: Temporary fix for openkore pRO disconnections (Jan 30, 2013)

Posted: 29 Jan 2013, 19:06
by ziphynx
Thanks Sir! It worked perfectly!

Re: Temporary fix for openkore pRO disconnections (Jan 30, 2013)

Posted: 29 Jan 2013, 19:15
by jeje665

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.
#########################################################################
# iRO (International)
# Servertype overview: http://wiki.openkore.com/index.php/ServerType
package Network::Receive::iRO;

use strict;
use base qw(Network::Receive::ServerType0);

use Globals qw($messageSender %timeout);
use Log qw(debug);
use Misc qw(monsterName);
use Utils qw(timeOut);

use Time::HiRes qw(time);

sub new {
   my ($class) = @_;
   my $self = $class->SUPER::new(@_);
   my %packets = (
      '006D' => ['character_creation_successful', 'a4 V9 v V2 v14 Z24 C6 v2', [qw(charID exp zeny exp_job lv_job opt1 opt2 option stance manner points_free hp hp_max sp sp_max walk_speed type hair_style weapon lv points_skill lowhead shield tophead midhead hair_color clothes_color name str agi vit int dex luk slot renameflag)]],
      '0097' => ['private_message', 'v Z24 V Z*', [qw(len privMsgUser flag privMsg)]], # -1
      '082D' => ['received_characters_info', 'x2 C5 x20', [qw(normal_slot premium_slot billing_slot producible_slot valid_slot)]],
      '09A0' => ['unknown_09A0', 'V', [qw(count)]],
      '099D' => ['received_characters', 'x2 a*', [qw(charInfo)]],
   );

   foreach my $switch (keys %packets) {
      $self->{packet_list}{$switch} = $packets{$switch};
   }

   my %handlers = qw(
      received_characters 099D
      actor_exists 0856
      actor_connected 0857
      actor_moved 0858
      account_id 0283
   );
   $self->{packet_lut}{$_} = $handlers{$_} for keys %handlers;
   
   return $self;
}

sub received_characters_info {
   my ($self, $args) = @_;

   Scalar::Util::weaken(my $weak = $self);
   my $timeout = {timeout => 6, time => time};

   $self->{charSelectTimeoutHook} = Plugins::addHook('Network::serverConnect/special' => sub {
      if ($weak && timeOut($timeout)) {
         $weak->received_characters({charInfo => '', RAW_MSG_SIZE => 4});
      }
   });

   $self->{charSelectHook} = Plugins::addHook(charSelectScreen => sub {
      if ($weak) {
         Plugins::delHook(delete $weak->{charSelectTimeoutHook}) if $weak->{charSelectTimeoutHook};
      }
   });

   $timeout{charlogin}{time} = time;

   $self->received_characters($args);
}

sub unknown_09A0 {
   my ($self, $args) = @_;
   for (my $count = $args->{count}; $count >= 1; $count--) {
      $messageSender->sendToServer($messageSender->reconstruct({switch => 'unknown_09A1'}));
   } 
}

*parse_quest_update_mission_hunt = *Network::Receive::ServerType0::parse_quest_update_mission_hunt_v2;
*reconstruct_quest_update_mission_hunt = *Network::Receive::ServerType0::reconstruct_quest_update_mission_hunt_v2;

1;

do i need to copy this code unto my iRo.pm? do i need to change the previous code that was written on iRo.pm or am I just going to paste it bellow the existing code into iRo.pm? sorry to bother...

Re: Temporary fix for openkore pRO disconnections (Jan 30, 2013)

Posted: 29 Jan 2013, 19:20
by koding
thanks! it worked. but the other problem is that we can't use xkore. :(

Re: Temporary fix for openkore pRO disconnections (Jan 30, 2013)

Posted: 29 Jan 2013, 19:32
by leahcim11
i ddint notice that i only should open the iro.pm file in notepad. xD what a relief haha thanks it worked perfectly heero ^_^