RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
HighscoreService.java
1package com.osroyale.game.service;
2
3import com.osroyale.Config;
4import com.osroyale.game.world.WorldType;
5import com.osroyale.game.world.entity.mob.player.Player;
6import com.osroyale.game.world.entity.mob.player.PlayerRight;
7import com.osroyale.game.world.entity.skill.Skill;
8import org.apache.logging.log4j.LogManager;
9import org.apache.logging.log4j.Logger;
10
11import java.sql.Connection;
12import java.sql.DriverManager;
13import java.sql.PreparedStatement;
14import java.sql.SQLException;
15
42
43public final class HighscoreService {
44
45 private static final Logger logger = LogManager.getLogger(HighscoreService.class);
46
47 private static final String CONNECTION_STRING = "jdbc:mysql://45.88.231.118:3306/hiscores";
48 private static final String USERNAME = "root";
49 private static final String PASSWORD = "bQ9R#UnPsW5^HLiU9$4LcJvE4%ZwJWLz";
50
51 public static void saveHighscores(Player player) {
52 if (player == null || Config.WORLD_TYPE != WorldType.LIVE || PlayerRight.isAdministrator(player)) {
53 return;
54 }
55
56 try (Connection connection = DriverManager.getConnection(CONNECTION_STRING, USERNAME, PASSWORD);
57 PreparedStatement dsta = connection.prepareStatement("DELETE FROM hs_users WHERE id = ?");
58 PreparedStatement ista = connection.prepareStatement(generateQuery())) {
59
60 dsta.setInt(1, player.getMemberId());
61 dsta.execute();
62
63 ista.setInt(1, player.getMemberId());
64 ista.setString(2, player.getName());
65 ista.setInt(3, getRank(player.right));
66 ista.setInt(4, getRank(player.right));
67 ista.setInt(5, player.prestige.totalPrestige);
68
69 for (int x = 0; x < Skill.SKILL_COUNT; x++) {
70 ista.setInt(6 + x, player.prestige.prestige[x]);
71 }
72
73 ista.setInt(29, player.skills.getTotalLevel());
74 ista.setLong(30, player.skills.getTotalXp());
75
76 for (int i = 0; i < Skill.SKILL_COUNT; i++) {
77 ista.setInt(31 + i, player.skills.get(i).getRoundedExperience());
78 }
79
80 ista.execute();
81 } catch (SQLException ex) {
82 logger.error(String.format("Failed to save highscores for player=%s", player.getName()), ex);
83 }
84 }
85
86 private static int getRank(PlayerRight right) {
87 if (right == PlayerRight.ULTIMATE_IRONMAN)
88 return 3;
89 if (right == PlayerRight.HARDCORE_IRONMAN)
90 return 2;
91 if (right == PlayerRight.IRONMAN)
92 return 1;
93 return 0;
94 }
95
96 private static String generateQuery() {
97 StringBuilder sb = new StringBuilder();
98 sb.append("INSERT INTO hs_users (");
99 sb.append("id, ");
100 sb.append("username, ");
101 sb.append("rights, ");
102 sb.append("mode, ");
103 sb.append("total_prestiges, ");
104 sb.append("attack_prestiges, ");
105 sb.append("defence_prestiges, ");
106 sb.append("strength_prestiges, ");
107 sb.append("hitpoints_prestiges, ");
108 sb.append("ranged_prestiges, ");
109 sb.append("prayer_prestiges, ");
110 sb.append("magic_prestiges, ");
111 sb.append("cooking_prestiges, ");
112 sb.append("woodcutting_prestiges, ");
113 sb.append("fletching_prestiges, ");
114 sb.append("fishing_prestiges, ");
115 sb.append("firemaking_prestiges, ");
116 sb.append("crafting_prestiges, ");
117 sb.append("smithing_prestiges, ");
118 sb.append("mining_prestiges, ");
119 sb.append("herblore_prestiges, ");
120 sb.append("agility_prestiges, ");
121 sb.append("thieving_prestiges, ");
122 sb.append("slayer_prestiges, ");
123 sb.append("farming_prestiges, ");
124 sb.append("runecrafting_prestiges, ");
125 sb.append("hunter_prestiges, ");
126 sb.append("construction_prestiges,");
127 sb.append("total_level, ");
128 sb.append("overall_xp, ");
129 sb.append("attack_xp, ");
130 sb.append("defence_xp, ");
131 sb.append("strength_xp, ");
132 sb.append("hitpoints_xp, ");
133 sb.append("ranged_xp, ");
134 sb.append("prayer_xp, ");
135 sb.append("magic_xp, ");
136 sb.append("cooking_xp, ");
137 sb.append("woodcutting_xp, ");
138 sb.append("fletching_xp, ");
139 sb.append("fishing_xp, ");
140 sb.append("firemaking_xp, ");
141 sb.append("crafting_xp, ");
142 sb.append("smithing_xp, ");
143 sb.append("mining_xp, ");
144 sb.append("herblore_xp, ");
145 sb.append("agility_xp, ");
146 sb.append("thieving_xp, ");
147 sb.append("slayer_xp, ");
148 sb.append("farming_xp, ");
149 sb.append("runecrafting_xp, ");
150 sb.append("hunter_xp, ");
151 sb.append("construction_xp)");
152 sb.append("VALUES (" +
153 "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " +
154 "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " +
155 "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " +
156 "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " +
157 "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " +
158 "?, ?, ?)");
159 return sb.toString();
160 }
161
162 private HighscoreService() {
163
164 }
165
166}