Advertisement
Guest User

Untitled

a guest
May 20th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.44 KB | None | 0 0
  1. package com.illerai.core.network.mysql;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. import java.util.concurrent.ArrayBlockingQueue;
  9.  
  10. import com.illerai.rs2.content.skill.Skills;
  11. import com.illerai.rs2.entity.player.Player;
  12.  
  13. public class Highscores {
  14.  
  15. /**
  16. * @author: Pax M
  17. */
  18.  
  19. public Player runPlayer;
  20.  
  21. public static Connection con;
  22. public static boolean connected;
  23. public static Statement stmt;
  24.  
  25. private static ArrayBlockingQueue<Statement> dbStatements = new ArrayBlockingQueue<Statement>(1);
  26. private static transient Statement statement;
  27.  
  28. public static Statement getStatement() {
  29. return statement;
  30. }
  31.  
  32. public static int count = 0;
  33.  
  34. public static void init() {
  35. try {
  36. Class.forName("com.mysql.jdbc.Driver").newInstance();
  37. Connection conn = DriverManager.getConnection("jdbc:mysql://drogon.rawhost.net/illerazu_scores", "illerazu_scores",
  38. "JZ2~4vusrU1G");
  39.  
  40. statement = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
  41. statement.setEscapeProcessing(true);
  42. dbStatements.offer(statement);
  43. } catch (Exception e) {
  44. System.err.println("Highscores: Could not connect to SQL Database!");
  45. }
  46. }
  47.  
  48. public static Statement getNextStatement() {
  49. return dbStatements.poll();
  50. }
  51.  
  52. /**
  53. * Query.
  54. *
  55. * @param s
  56. * the s
  57. * @return the result set
  58. * @throws SQLException
  59. * the SQL exception
  60. */
  61. public static int executeUpdate(String query) {
  62. try {
  63. statement = dbStatements.poll();
  64. int results = statement.executeUpdate(query);
  65. dbStatements.offer(statement);
  66. return results;
  67. } catch (SQLException ex) {
  68. System.err.println("Highscores: Highscores failed to update.");
  69. }
  70. return -1;
  71. }
  72.  
  73. public static ResultSet executeQuery(String query) {
  74. try {
  75. statement = dbStatements.poll();
  76. ResultSet results = statement.executeQuery(query);
  77. dbStatements.offer(statement);
  78. return results;
  79. } catch (SQLException ex) {
  80. System.err.println("Highscores: Highscores failed to update.");
  81. }
  82. return null;
  83. }
  84.  
  85. public static boolean canSave(Player p) {
  86. switch(p.getRights().getId()) {
  87. case 10:
  88. case 11:
  89. case 12:
  90. case 13:
  91. return false;
  92. }
  93. return true;
  94. }
  95.  
  96. public static boolean saveHighScore(Player player) {
  97. if (!canSave(player))
  98. return true;
  99. try {
  100. String username = player.getUsername();
  101. ResultSet rs = executeQuery("SELECT * FROM hs_users WHERE username='" + username + "' LIMIT 1");
  102. if (!rs.next()) {
  103. rs.moveToInsertRow();
  104. rs.updateString("username", username);
  105. rs.updateInt("rights", player.getRights().getId());
  106. rs.updateInt("difficulty", getGameMode(player));
  107. rs.updateInt("prestige", player.getTotalPrestiges());
  108. rs.updateString("overall_xp", getTotalXp(player));
  109. for (int i = 0; i < Skills.SKILL_COUNT; i++) {
  110. if (i == Skills.CONSTRUCTION || i == Skills.DUNGEONEERING || i == Skills.SUMMONING)
  111. continue;
  112. //System.out.println("Skillsss: "+i);
  113. rs.updateInt("" + Skills.SKILL_NAMES[i].toLowerCase() + "_xp", (int) player.getSkill().getExperience()[i]);
  114. rs.updateInt("" + Skills.SKILL_NAMES[i].toLowerCase() + "_prestige", (int) player.getSkillPrestiges()[i]);
  115. }
  116. rs.insertRow();
  117. } else {
  118. rs.updateString("username", username);
  119. rs.updateInt("rights", player.getRights().getId());
  120. rs.updateInt("difficulty", getGameMode(player));
  121. rs.updateInt("prestige", player.getTotalPrestiges());
  122. rs.updateString("overall_xp", getTotalXp(player));
  123. for (int i = 0; i < Skills.SKILL_COUNT; i++) {
  124. if (i == Skills.CONSTRUCTION || i == Skills.DUNGEONEERING || i == Skills.SUMMONING)
  125. continue;
  126. //System.out.println("Skills: "+i);
  127. rs.updateInt("" + Skills.SKILL_NAMES[i].toLowerCase() + "_xp", (int) player.getSkill().getExperience()[i]);
  128. rs.updateInt("" + Skills.SKILL_NAMES[i].toLowerCase() + "_prestige", (int) player.getSkillPrestiges()[i]);
  129. }
  130. rs.updateRow();
  131. }
  132. } catch (Exception e) {
  133. System.err.println("Highscores: Error while saving Highscores SQL.");
  134. e.printStackTrace();
  135. return false;
  136. }
  137. return true;
  138. }
  139.  
  140. private static int getGameMode(Player player) {
  141. return player.getGameMode().getId();
  142. }
  143.  
  144. public static String getTotalXp(Player player) {
  145. return ""+player.getSkill().getTotalExperience();
  146. }
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement