RuneHive-Game
Loading...
Searching...
No Matches
HighscoreService.java
Go to the documentation of this file.
1package com.runehive.game.service;
2
3import com.runehive.Config;
4import com.runehive.game.world.WorldType;
5import com.runehive.game.world.entity.mob.player.Player;
6import com.runehive.game.world.entity.mob.player.PlayerRight;
7import com.runehive.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
16public final class HighscoreService {
17
18 private static final Logger logger = LogManager.getLogger(HighscoreService.class);
19
20 private static final String CONNECTION_STRING = "jdbc:mysql://45.88.231.118:3306/hiscores";
21 private static final String USERNAME = "root";
22 private static final String PASSWORD = "bQ9R#UnPsW5^HLiU9$4LcJvE4%ZwJWLz";
23
24 public static void saveHighscores(Player player) {
25 if (player == null || Config.WORLD_TYPE != WorldType.LIVE || PlayerRight.isAdministrator(player)) {
26 return;
27 }
28
29 try (Connection connection = DriverManager.getConnection(CONNECTION_STRING, USERNAME, PASSWORD);
30 PreparedStatement dsta = connection.prepareStatement("DELETE FROM hs_users WHERE id = ?");
31 PreparedStatement ista = connection.prepareStatement(generateQuery())) {
32
33 dsta.setInt(1, player.getMemberId());
34 dsta.execute();
35
36 ista.setInt(1, player.getMemberId());
37 ista.setString(2, player.getName());
38 ista.setInt(3, getRank(player.right));
39 ista.setInt(4, getRank(player.right));
40 ista.setInt(5, player.prestige.totalPrestige);
41
42 for (int x = 0; x < Skill.SKILL_COUNT; x++) {
43 ista.setInt(6 + x, player.prestige.prestige[x]);
44 }
45
46 ista.setInt(29, player.skills.getTotalLevel());
47 ista.setLong(30, player.skills.getTotalXp());
48
49 for (int i = 0; i < Skill.SKILL_COUNT; i++) {
50 ista.setInt(31 + i, player.skills.get(i).getRoundedExperience());
51 }
52
53 ista.execute();
54 } catch (SQLException ex) {
55 logger.error(String.format("Failed to save highscores for player=%s", player.getName()), ex);
56 }
57 }
58
59 private static int getRank(PlayerRight right) {
60 if (right == PlayerRight.ULTIMATE_IRONMAN)
61 return 3;
62 if (right == PlayerRight.HARDCORE_IRONMAN)
63 return 2;
64 if (right == PlayerRight.IRONMAN)
65 return 1;
66 return 0;
67 }
68
69 private static String generateQuery() {
70 StringBuilder sb = new StringBuilder();
71 sb.append("INSERT INTO hs_users (");
72 sb.append("id, ");
73 sb.append("username, ");
74 sb.append("rights, ");
75 sb.append("mode, ");
76 sb.append("total_prestiges, ");
77 sb.append("attack_prestiges, ");
78 sb.append("defence_prestiges, ");
79 sb.append("strength_prestiges, ");
80 sb.append("hitpoints_prestiges, ");
81 sb.append("ranged_prestiges, ");
82 sb.append("prayer_prestiges, ");
83 sb.append("magic_prestiges, ");
84 sb.append("cooking_prestiges, ");
85 sb.append("woodcutting_prestiges, ");
86 sb.append("fletching_prestiges, ");
87 sb.append("fishing_prestiges, ");
88 sb.append("firemaking_prestiges, ");
89 sb.append("crafting_prestiges, ");
90 sb.append("smithing_prestiges, ");
91 sb.append("mining_prestiges, ");
92 sb.append("herblore_prestiges, ");
93 sb.append("agility_prestiges, ");
94 sb.append("thieving_prestiges, ");
95 sb.append("slayer_prestiges, ");
96 sb.append("farming_prestiges, ");
97 sb.append("runecrafting_prestiges, ");
98 sb.append("hunter_prestiges, ");
99 sb.append("construction_prestiges,");
100 sb.append("total_level, ");
101 sb.append("overall_xp, ");
102 sb.append("attack_xp, ");
103 sb.append("defence_xp, ");
104 sb.append("strength_xp, ");
105 sb.append("hitpoints_xp, ");
106 sb.append("ranged_xp, ");
107 sb.append("prayer_xp, ");
108 sb.append("magic_xp, ");
109 sb.append("cooking_xp, ");
110 sb.append("woodcutting_xp, ");
111 sb.append("fletching_xp, ");
112 sb.append("fishing_xp, ");
113 sb.append("firemaking_xp, ");
114 sb.append("crafting_xp, ");
115 sb.append("smithing_xp, ");
116 sb.append("mining_xp, ");
117 sb.append("herblore_xp, ");
118 sb.append("agility_xp, ");
119 sb.append("thieving_xp, ");
120 sb.append("slayer_xp, ");
121 sb.append("farming_xp, ");
122 sb.append("runecrafting_xp, ");
123 sb.append("hunter_xp, ");
124 sb.append("construction_xp)");
125 sb.append("VALUES (" +
126 "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " +
127 "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " +
128 "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " +
129 "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " +
130 "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " +
131 "?, ?, ?)");
132 return sb.toString();
133 }
134
136
137 }
138
139}
The class that contains setting-related constants for the server.
Definition Config.java:24
static WorldType WORLD_TYPE
Definition Config.java:103
int totalPrestige
The total amount of prestiges.
Definition Prestige.java:32
This class represents a character controlled by a player.
Definition Player.java:125
String getName()
Gets the name of this entity.
Definition Player.java:774
Represents a trainable and usable skill.
Definition Skill.java:18
static final int SKILL_COUNT
The amount of available skills.
Definition Skill.java:90
int getRoundedExperience()
Gets the floor experience.
Definition Skill.java:232
Skill get(int id)
Gets the skill for an id.
int getTotalLevel()
Gets the total level of the mob.
The OS Royale world types.
Definition WorldType.java:8
static boolean isAdministrator(Player player)
Checks if the player is a privileged member.