ServerType17.pm.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:4k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. #########################################################################
  2. #  OpenKore - Network subsystem
  3. #  Copyright (c) 2006 OpenKore Team
  4. #
  5. #  This software is open source, licensed under the GNU General Public
  6. #  License, version 2.
  7. #  Basically, this means that you're allowed to modify and distribute
  8. #  this software. However, if you distribute modified versions, you MUST
  9. #  also distribute the source code.
  10. #  See http://www.gnu.org/licenses/gpl.html for the full license.
  11. #########################################################################
  12. # tRO (Thai) for 2007-05-22bRagexe by kLabMouse (thanks to abt123 and penz for support)
  13. # Servertype overview: http://www.openkore.com/wiki/index.php/ServerType
  14. package Network::Receive::ServerType17;
  15. use strict;
  16. use Network::Receive;
  17. use base qw(Network::Receive);
  18. use Log qw(message warning error debug);
  19. use AI;
  20. use Translation;
  21. use Globals;
  22. use I18N qw(bytesToString);
  23. use Utils qw(getHex swrite makeIP makeCoords);
  24.  
  25. sub new {
  26. my ($class) = @_;
  27. my $self = $class->SUPER::new;
  28. return $self;
  29. }
  30. sub account_server_info {
  31. my ($self, $args) = @_;
  32. my $msg = substr($args->{serverInfo},4); # tRO uses some king of offset for the data.
  33. my $msg_size = length($msg);
  34. $net->setState(2);
  35. undef $conState_tries;
  36. $sessionID = $args->{sessionID};
  37. $accountID = $args->{accountID};
  38. $sessionID2 = $args->{sessionID2};
  39. $accountSex = $args->{accountSex} % 2;
  40. $accountSex2 = ($config{'sex'} ne "") ? $config{'sex'} : $accountSex;
  41. message swrite(
  42. T("-----------Account Info------------n" . 
  43. "Account ID: @<<<<<<<<< @<<<<<<<<<<n" .
  44. "Sex:        @<<<<<<<<<<<<<<<<<<<<<n" .
  45. "Session ID: @<<<<<<<<< @<<<<<<<<<<n" .
  46. "            @<<<<<<<<< @<<<<<<<<<<n" .
  47. "-----------------------------------"), 
  48. [unpack("V1",$accountID), getHex($accountID), $sex_lut{$accountSex}, unpack("V1",$sessionID), getHex($sessionID),
  49. unpack("V1",$sessionID2), getHex($sessionID2)]), 'connection';
  50. my $num = 0;
  51. undef @servers;
  52. for (my $i = 0; $i < $msg_size; $i+=32) {
  53. $servers[$num]{ip} = makeIP(substr($msg, $i, 4));
  54. $servers[$num]{ip} = $masterServer->{ip} if ($masterServer && $masterServer->{private});
  55. $servers[$num]{port} = unpack("v1", substr($msg, $i+4, 2));
  56. $servers[$num]{name} = bytesToString(unpack("Z*", substr($msg, $i + 6, 20)));
  57. $servers[$num]{users} = unpack("V",substr($msg, $i + 26, 4));
  58. $num++;
  59. }
  60. message T("--------- Servers ----------n" .
  61. "#   Name                  Users  IP              Portn"), 'connection';
  62. for (my $num = 0; $num < @servers; $num++) {
  63. message(swrite(
  64. "@<< @<<<<<<<<<<<<<<<<<<<< @<<<<< @<<<<<<<<<<<<<< @<<<<<",
  65. [$num, $servers[$num]{name}, $servers[$num]{users}, $servers[$num]{ip}, $servers[$num]{port}]
  66. ), 'connection');
  67. }
  68. message("-------------------------------n", 'connection');
  69. if ($net->version != 1) {
  70. message T("Closing connection to Account Servern"), 'connection';
  71. $net->serverDisconnect();
  72. if (!$masterServer->{charServer_ip} && $config{server} eq "") {
  73. my @serverList;
  74. foreach my $server (@servers) {
  75. push @serverList, $server->{name};
  76. }
  77. my $ret = $interface->showMenu(
  78. T("Please select your login server."),
  79. @serverList,
  80. title => T("Select Login Server"));
  81. if ($ret == -1) {
  82. quit();
  83. } else {
  84. main::configModify('server', $ret, 1);
  85. }
  86. } elsif ($masterServer->{charServer_ip}) {
  87. message TF("Forcing connect to char server %s: %sn", $masterServer->{charServer_ip}, $masterServer->{charServer_port}), 'connection';
  88. } else {
  89. message TF("Server %s selectedn",$config{server}), 'connection';
  90. }
  91. }
  92. }
  93. 1;