Advertisement
Nik

Freya & H5 Under 1 LS

Nik
Jan 4th, 2012
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 7.23 KB | None | 0 0
  1. Index: /trunk/L2_GameServer/java/com/l2jserver/gameserver/network/loginserverpackets/RequestCharacters.java
  2. ===================================================================
  3. --- /trunk/L2_GameServer/java/com/l2jserver/gameserver/network/loginserverpackets/RequestCharacters.java    (revision 646)
  4. +++ /trunk/L2_GameServer/java/com/l2jserver/gameserver/network/loginserverpackets/RequestCharacters.java    (revision 646)
  5. @@ -0,0 +1,40 @@
  6. +/*
  7. + * This program is free software: you can redistribute it and/or modify it under
  8. + * the terms of the GNU General Public License as published by the Free Software
  9. + * Foundation, either version 3 of the License, or (at your option) any later
  10. + * version.
  11. + *
  12. + * This program is distributed in the hope that it will be useful, but WITHOUT
  13. + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  14. + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  15. + * details.
  16. + *
  17. + * You should have received a copy of the GNU General Public License along with
  18. + * this program. If not, see <http://www.gnu.org/licenses/>.
  19. + */
  20. +package com.l2jserver.gameserver.network.loginserverpackets;
  21. +
  22. +import com.l2jserver.util.network.BaseRecievePacket;
  23. +
  24. +/**
  25. + * @author mrTJO
  26. + * Thanks to mochitto
  27. + */
  28. +public class RequestCharacters extends BaseRecievePacket
  29. +{
  30. +   private String _account;
  31. +  
  32. +   public RequestCharacters(byte[] decrypt)
  33. +   {
  34. +       super(decrypt);
  35. +       _account = readS();
  36. +   }
  37. +  
  38. +   /**
  39. +    * @return Return account name
  40. +    */
  41. +   public String getAccount()
  42. +   {
  43. +       return _account;
  44. +   }
  45. +}
  46. Index: /trunk/L2_GameServer/java/com/l2jserver/gameserver/network/gameserverpackets/ReplyCharacters.java
  47. ===================================================================
  48. --- /trunk/L2_GameServer/java/com/l2jserver/gameserver/network/gameserverpackets/ReplyCharacters.java   (revision 646)
  49. +++ /trunk/L2_GameServer/java/com/l2jserver/gameserver/network/gameserverpackets/ReplyCharacters.java   (revision 646)
  50. @@ -0,0 +1,47 @@
  51. +/*
  52. + * This program is free software: you can redistribute it and/or modify it under
  53. + * the terms of the GNU General Public License as published by the Free Software
  54. + * Foundation, either version 3 of the License, or (at your option) any later
  55. + * version.
  56. + *
  57. + * This program is distributed in the hope that it will be useful, but WITHOUT
  58. + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  59. + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  60. + * details.
  61. + *
  62. + * You should have received a copy of the GNU General Public License along with
  63. + * this program. If not, see <http://www.gnu.org/licenses/>.
  64. + */
  65. +package com.l2jserver.gameserver.network.gameserverpackets;
  66. +
  67. +import java.io.IOException;
  68. +import java.util.List;
  69. +
  70. +import com.l2jserver.util.network.BaseSendablePacket;
  71. +
  72. +/**
  73. + * @author mrTJO
  74. + * Thanks to mochitto
  75. + */
  76. +public class ReplyCharacters extends BaseSendablePacket
  77. +{
  78. +  
  79. +   public ReplyCharacters(String account, int chars, List<Long> timeToDel)
  80. +   {
  81. +       writeC(0x08);
  82. +       writeS(account);
  83. +       writeC(chars);
  84. +       writeC(timeToDel.size());
  85. +       for (long time : timeToDel)
  86. +       {
  87. +           writeQ(time);
  88. +       }
  89. +   }
  90. +  
  91. +   @Override
  92. +   public byte[] getContent() throws IOException
  93. +   {
  94. +       return getBytes();
  95. +   }
  96. +  
  97. +}
  98. Index: /trunk/L2_GameServer/java/com/l2jserver/gameserver/LoginServerThread.java
  99. ===================================================================
  100. --- /trunk/L2_GameServer/java/com/l2jserver/gameserver/LoginServerThread.java   (revision 612)
  101. +++ /trunk/L2_GameServer/java/com/l2jserver/gameserver/LoginServerThread.java   (revision 646)
  102. @@ -27,4 +27,9 @@
  103.  import java.security.spec.RSAKeyGenParameterSpec;
  104.  import java.security.spec.RSAPublicKeySpec;
  105. +import java.sql.Connection;
  106. +import java.sql.PreparedStatement;
  107. +import java.sql.ResultSet;
  108. +import java.sql.SQLException;
  109. +import java.util.ArrayList;
  110.  import java.util.List;
  111.  import java.util.Map;
  112. @@ -37,4 +42,5 @@
  113.  
  114.  import com.l2jserver.Config;
  115. +import com.l2jserver.L2DatabaseFactory;
  116.  import com.l2jserver.gameserver.model.L2World;
  117.  import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  118. @@ -51,4 +57,5 @@
  119.  import com.l2jserver.gameserver.network.gameserverpackets.PlayerLogout;
  120.  import com.l2jserver.gameserver.network.gameserverpackets.PlayerTracert;
  121. +import com.l2jserver.gameserver.network.gameserverpackets.ReplyCharacters;
  122.  import com.l2jserver.gameserver.network.gameserverpackets.ServerStatus;
  123.  import com.l2jserver.gameserver.network.gameserverpackets.UnBanIP;
  124. @@ -60,4 +67,5 @@
  125.  import com.l2jserver.gameserver.network.loginserverpackets.LoginServerFail;
  126.  import com.l2jserver.gameserver.network.loginserverpackets.PlayerAuthResponse;
  127. +import com.l2jserver.gameserver.network.loginserverpackets.RequestCharacters;
  128.  import com.l2jserver.gameserver.network.serverpackets.CharSelectionInfo;
  129.  import com.l2jserver.gameserver.network.serverpackets.LoginFail;
  130. @@ -206,9 +214,11 @@
  131.                             if (Config.DEBUG)
  132.                                 _log.info("Init received");
  133. -                           if (init.getRevision() != REVISION)
  134. +                           int loginServerRevision;
  135. +                           if ((loginServerRevision = init.getRevision()) != REVISION)
  136.                             {
  137.                                 //TODO: revision mismatch
  138. -                               _log.warning("/!\\ Revision mismatch between LS and GS /!\\");
  139. -                               break;
  140. +                               _log.warning(String.format("<!> Revision mismatch between LS(0x%04X) and GS(0x%04X) <!>", loginServerRevision, REVISION));
  141. +                               if (loginServerRevision != 0x0105 && loginServerRevision != 0x0106) //if High Five then pass
  142. +                                   break;
  143.                             }
  144.                             try
  145. @@ -338,4 +348,8 @@
  146.                             doKickPlayer(kp.getAccount());
  147.                             break;
  148. +                       case 0x05:
  149. +                           RequestCharacters rc = new RequestCharacters(decrypt);
  150. +                           getCharsOnServer(rc.getAccount());
  151. +                           break;
  152.                         case 0xF8:
  153.                             new ChangePasswordResponse(decrypt);
  154. @@ -350,4 +364,12 @@
  155.                 if (Config.DEBUG)
  156.                     _log.log(Level.WARNING, "", e);
  157. +           }
  158. +           catch (java.net.ConnectException e)
  159. +           {
  160. +               _log.log(Level.WARNING, "Cannot connect LoginServer.");
  161. +           }
  162. +           catch (java.net.SocketException e)
  163. +           {
  164. +               _log.warning("LoginServer not avaible, trying to reconnect...");
  165.             }
  166.             catch (IOException e)
  167. @@ -491,4 +513,46 @@
  168.     }
  169.    
  170. +   private void getCharsOnServer(String account)
  171. +   {
  172. +       Connection con = null;
  173. +       int chars = 0;
  174. +       List<Long> charToDel = new ArrayList<Long>();
  175. +       try
  176. +       {
  177. +           con = L2DatabaseFactory.getInstance().getConnection();
  178. +           PreparedStatement statement = con.prepareStatement("SELECT deletetime FROM characters WHERE account_name=?");
  179. +           statement.setString(1, account);
  180. +           ResultSet rset = statement.executeQuery();
  181. +           while (rset.next())
  182. +           {
  183. +               chars++;
  184. +               long delTime = rset.getLong("deletetime");
  185. +               if (delTime != 0)
  186. +                   charToDel.add(delTime);
  187. +           }
  188. +           rset.close();
  189. +           statement.close();
  190. +       }
  191. +       catch (SQLException e)
  192. +       {
  193. +           _log.log(Level.WARNING, "Exception: getCharsOnServer: " + e.getMessage(), e);
  194. +       }
  195. +       finally
  196. +       {
  197. +           L2DatabaseFactory.close(con);
  198. +       }
  199. +      
  200. +       ReplyCharacters rec = new ReplyCharacters(account, chars, charToDel);
  201. +       try
  202. +       {
  203. +           sendPacket(rec);
  204. +       }
  205. +       catch (IOException e)
  206. +       {
  207. +           if (Config.DEBUG)
  208. +               _log.log(Level.WARNING, "", e);
  209. +       }
  210. +      
  211. +   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement