RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
DonationService.java
1package com.osroyale.game.service;
2
3import com.osroyale.content.dialogue.Expression;
4import com.osroyale.content.donators.DonatorBond;
5import com.osroyale.game.world.entity.mob.player.Player;
6import com.osroyale.game.world.items.Item;
7import org.apache.logging.log4j.LogManager;
8import org.apache.logging.log4j.Logger;
9
10import java.sql.*;
11import java.util.concurrent.TimeUnit;
12
35
36public final class DonationService {
37 private static final Logger logger = LogManager.getLogger(DonationService.class);
38 private static final String USER = "osroyjs_exo1";
39 private static final String PASS = "3AXbU=W7IfzX";
40 private static final String CONNECTION_STRING = "jdbc:mysql://173.82.152.23:3306/osroyjs_store_2";
41
42 private DonationService() {
43
44 }
45
46 public static void claimDonation(Player player) {
47 if (!player.databaseRequest.elapsed(1, TimeUnit.MINUTES)) {
48 player.dialogueFactory.sendNpcChat(5523,"You can only check our database once every 1 minute!").execute();
49 return;
50 }
51
52 if (!player.inventory.isEmpty()) {
53 player.dialogueFactory.sendNpcChat(5523, Expression.SAD, "You must have an empty inventory to do this!").execute();
54 return;
55 }
56
57 player.dialogueFactory.sendStatement("Checking request...").execute();
58 boolean claimed = false;
59 player.databaseRequest.reset();
60
61 try(Connection connection = DriverManager.getConnection(CONNECTION_STRING, USER, PASS);
62 PreparedStatement sta = connection.prepareStatement("SELECT * FROM payments WHERE player_name = ? AND status='Completed' AND claimed=0", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE)) {
63 sta.setString(1, player.getName().replace("_", " "));
64
65 ResultSet rs = sta.executeQuery();
66
67
68 while(rs.next()) {
69 final int itemNumber = rs.getInt("item_number");
70 final int quantity = rs.getInt("quantity");
71
72 switch(itemNumber) {
73 //$10 DONATOR BOND
74 case 10:
75 if (player.inventory.add(new Item(DonatorBond.BOND_10.item, quantity))) {
76 claimed = true;
77 }
78 break;
79
80 //$50 DONATOR BOND
81 case 20:
82 if (player.inventory.add(new Item(DonatorBond.BOND_50.item, quantity))) {
83 claimed = true;
84 }
85 break;
86
87 //$100 DONATOR BOND
88 case 21:
89 if (player.inventory.add(new Item(DonatorBond.BOND_100.item, quantity))) {
90 claimed = true;
91 }
92 break;
93
94 //$200 DONATOR BOND
95 case 22:
96 if (player.inventory.add(new Item(DonatorBond.BOND_200.item, quantity))) {
97 claimed = true;
98 }
99 break;
100
101 //$500 DONATOR BOND
102 case 23:
103 if (player.inventory.add(new Item(DonatorBond.BOND_500.item, quantity))) {
104 claimed = true;
105 }
106 break;
107 }
108
109 if (claimed) {
110 rs.updateInt("claimed", 1);
111 rs.updateRow();
112 }
113
114 }
115
116 if (!claimed) {
117 player.dialogueFactory.sendNpcChat(5523,"There is no donation reward for you to claim!").execute();
118 } else {
119 player.dialogueFactory.sendNpcChat(5523,"Thank-you for your donation!").execute();
120 }
121
122 } catch (SQLException ex) {
123 logger.error(String.format("Failed to claim donation for player=%s", player.getName()), ex);
124 }
125 }
126}
final DialogueFactory sendStatement(String... lines)
final DialogueFactory sendNpcChat(int id, String... lines)