Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Mar 14th, 2010 | Syntax: Delphi | Size: 2.15 KB | Hits: 50 | Expires: Never
Copy text to clipboard
  1. class procedure TServerListReqHandler.HandlePacket(Packet: TMapleStream;
  2.   C: TMapleClient);
  3. var
  4.   i: Integer;
  5. begin
  6.   for i := 0 to frmSettings.LVWorlds.Items.Count - 1 do
  7.     C.EncryptAndSend(GetServerList(MSH.Worlds[i]));
  8.  
  9.   C.EncryptAndSend(GetEndOfServerList);
  10. end;
  11.  
  12.  
  13.  
  14.  
  15. function GetServerList(World: TWorldServer): TMapleStream;
  16. var
  17.   i: Integer;
  18. begin
  19.   Result := TMapleStream.Create;
  20.   with Result do
  21.   begin
  22.     WriteShort(OpHandler.SendOps['ServerList']);
  23.  
  24.     WriteByte(World.Index);   // Server ID: 0 = Scania; 1 = Bera; 2 = Broa and so on
  25.     WriteMapleAnsiString(World.Name);
  26.     WriteByte(0);    // Ribbon: 1 = E; 2 = N; 3 = H
  27.     WriteMapleAnsiString(frmSettings.edtEventMsg.Text);
  28.  
  29.                 WriteShort(100);  // rate modifier, don't ask O.O!
  30.                 WriteShort(100);  // rate modifier, don't ask O.O!
  31.     {$IFNDEF EMS}
  32.                 WriteByte(0);
  33.     {$ENDIF}
  34.  
  35.     WriteByte(World.Channels.Count);
  36.     for i := 0 to World.Channels.Count - 1 do
  37.     begin
  38.       WriteMapleAnsiString(World.Name + '-' + IntToStr(i + 1));
  39.  
  40.       // Here we can see the last 7 bytes of each of the 14 channels.  [EMS]
  41.     // L  O  A  D |Sv|ID|LANGUAGE
  42.    (* '00 03 00 00 00 00 05 ' +
  43.       '56 01 00 00 00 01 05 ' +
  44.       '5C 01 00 00 00 02 05 ' +
  45.       '1E 01 00 00 00 03 00 ' +
  46.       'FB 00 00 00 00 04 00 ' +
  47.       'EE 00 00 00 00 05 00 ' +
  48.       'F9 00 00 00 00 06 02 ' +
  49.       'B4 00 00 00 00 07 02 ' +
  50.       '46 FF FF FF 00 08 03 ' +
  51.       'FA FF FF FF 00 09 03 ' +
  52.       '49 01 00 00 00 0A 04 ' +
  53.       '12 01 00 00 00 0B 04 ' +
  54.       '88 00 00 00 00 0C 01 ' +
  55.       '73 00 00 00 00 0D 01 ' +
  56.       '00 00');   *)
  57.  
  58.       WriteInt(0);         // xxx Channel-Population (Load)
  59.       WriteByte(World.Index);
  60.       WriteByte(i);
  61.       // Language: 0 = English; 1 = French; 2 = German; 3 = Spanish; 4 = NL; 5 = Europe (All)
  62.       WriteByte({$IFNDEF EMS} 0 {$ELSE} 5 {$ENDIF});
  63.       // ===================
  64.     end;
  65.  
  66.     WriteShort(0);       // End
  67.   end;
  68. end;
  69.  
  70. function GetEndOfServerList: TMapleStream;
  71. begin
  72.   Result := TMapleStream.Create;
  73.   with Result do
  74.   begin
  75.     WriteShort(OpHandler.SendOps['ServerList']);
  76.  
  77.     WriteByte($FF);
  78.   end;
  79. end;