Added packet for sending credit updates
This commit is contained in:
@@ -1,12 +1,16 @@
|
|||||||
package ms.net.event;
|
package ms.net.event;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.Statement;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import ms.Management;
|
import ms.Management;
|
||||||
import ms.net.IoReadEvent;
|
import ms.net.IoReadEvent;
|
||||||
import ms.net.IoSession;
|
import ms.net.IoSession;
|
||||||
import ms.net.packet.IoBuffer;
|
import ms.net.packet.IoBuffer;
|
||||||
|
import ms.system.mysql.SQLManager;
|
||||||
import ms.system.util.ManagementConstants;
|
import ms.system.util.ManagementConstants;
|
||||||
import ms.world.PlayerSession;
|
import ms.world.PlayerSession;
|
||||||
import ms.world.WorldDatabase;
|
import ms.world.WorldDatabase;
|
||||||
@@ -73,6 +77,47 @@ public final class HSReadEvent extends IoReadEvent {
|
|||||||
player.getWorld().getPlayers().remove(username);
|
player.getWorld().getPlayers().remove(username);
|
||||||
player.setWorldId(0);
|
player.setWorldId(0);
|
||||||
break;
|
break;
|
||||||
|
case 36:
|
||||||
|
buf = new IoBuffer();
|
||||||
|
username = ByteBufferUtils.getString(buffer).toLowerCase();
|
||||||
|
password = ByteBufferUtils.getString(buffer);
|
||||||
|
int credits = buffer.getInt();
|
||||||
|
if (!password.equals(ManagementConstants.getSECRET_KEY())){
|
||||||
|
System.out.println("Password mismatch (attempt=" + password + ")!");
|
||||||
|
buf.put(1);
|
||||||
|
buff = buf.toByteBuffer();
|
||||||
|
buff.flip();
|
||||||
|
session.queue(buff);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try (Connection con = SQLManager.getConnection()) {
|
||||||
|
Statement stmt = con.createStatement();
|
||||||
|
ResultSet rs = stmt.executeQuery("SELECT credits FROM members WHERE username = \"" + username + "\";");
|
||||||
|
int original;
|
||||||
|
if (rs.next()) original = rs.getInt(1);
|
||||||
|
else {
|
||||||
|
buf.put(2);
|
||||||
|
buff = buf.toByteBuffer();
|
||||||
|
buff.flip();
|
||||||
|
session.queue(buff);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
stmt.execute("UPDATE members SET credits = " + (original + credits) + " WHERE username = \"" + username + "\";");
|
||||||
|
buf.put(0);
|
||||||
|
buf.putInt(original + credits);
|
||||||
|
buff = buf.toByteBuffer();
|
||||||
|
buff.flip();
|
||||||
|
session.queue(buff);
|
||||||
|
} catch (Exception e) {
|
||||||
|
buf.put(3);
|
||||||
|
buf.putString(e.toString());
|
||||||
|
buff = buf.toByteBuffer();
|
||||||
|
buff.flip();
|
||||||
|
session.queue(buff);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
System.err.println("Unhandled handshake opcode: " + opcode + ".");
|
System.err.println("Unhandled handshake opcode: " + opcode + ".");
|
||||||
session.disconnect();
|
session.disconnect();
|
||||||
|
|||||||
Reference in New Issue
Block a user