88 lines
3.0 KiB
Java
88 lines
3.0 KiB
Java
package org.moparscape.msc.ls.packethandler.loginserver;
|
|
|
|
import java.sql.SQLException;
|
|
|
|
import org.apache.mina.common.IoSession;
|
|
import org.moparscape.msc.ls.Server;
|
|
import org.moparscape.msc.ls.model.PlayerSave;
|
|
import org.moparscape.msc.ls.model.World;
|
|
import org.moparscape.msc.ls.net.LSPacket;
|
|
import org.moparscape.msc.ls.net.Packet;
|
|
import org.moparscape.msc.ls.packethandler.PacketHandler;
|
|
|
|
|
|
public class FriendHandler implements PacketHandler {
|
|
|
|
public void handlePacket(Packet p, IoSession session) throws Exception {
|
|
World world = (World) session.getAttachment();
|
|
Server server = Server.getServer();
|
|
|
|
long user = p.readLong();
|
|
long friend = p.readLong();
|
|
|
|
World w;
|
|
PlayerSave save = server.findSave(user, world);
|
|
switch (((LSPacket) p).getID()) {
|
|
case 10: // Send PM
|
|
boolean avoidBlock = p.readByte() == 1;
|
|
byte[] message = p.getRemainingData();
|
|
w = server.findWorld(friend);
|
|
if (w != null) {
|
|
w.getActionSender().sendPM(user, friend, avoidBlock, message);
|
|
}
|
|
break;
|
|
case 11: // Add friend
|
|
try {
|
|
save.addFriend(friend);
|
|
Server.db.updateQuery("INSERT INTO `pk_friends`(`user`, `friend`) VALUES('" + user + "', '" + friend + "')");
|
|
if (Server.db.getQuery("SELECT 1 FROM `pk_players` AS p LEFT JOIN `pk_friends` AS f ON f.user=p.user WHERE (p.block_private=0 OR f.friend='" + user + "') AND p.user='" + friend + "'").next()) {
|
|
w = server.findWorld(friend);
|
|
if (w != null) {
|
|
world.getActionSender().friendLogin(user, friend, w.getID());
|
|
}
|
|
}
|
|
if (Server.db.getQuery("SELECT 1 FROM `pk_players` AS p LEFT JOIN `pk_friends` AS f ON f.friend=p.user WHERE p.block_private=1 AND f.user='" + friend + "' AND p.user='" + user + "'").next()) {
|
|
w = server.findWorld(friend);
|
|
if (w != null) {
|
|
w.getActionSender().friendLogin(friend, user, world.getID());
|
|
}
|
|
}
|
|
} catch (SQLException e) {
|
|
Server.error(e.getMessage());
|
|
}
|
|
break;
|
|
case 12: // Remove friend
|
|
try {
|
|
save.removeFriend(friend);
|
|
Server.db.updateQuery("DELETE FROM `pk_friends` WHERE `user` LIKE '" + user + "' AND `friend` LIKE '" + friend + "'");
|
|
if (Server.db.getQuery("SELECT 1 FROM `pk_players` WHERE block_private=1 AND user='" + user + "'").next()) {
|
|
w = server.findWorld(friend);
|
|
if (w != null) {
|
|
w.getActionSender().friendLogout(friend, user);
|
|
}
|
|
}
|
|
} catch (SQLException e) {
|
|
Server.error(e.getMessage());
|
|
}
|
|
break;
|
|
case 13: // Add ignore
|
|
try {
|
|
save.addIgnore(friend);
|
|
Server.db.updateQuery("INSERT INTO `pk_ignores`(`user`, `ignore`) VALUES('" + user + "', '" + friend + "')");
|
|
} catch (SQLException e) {
|
|
Server.error(e.getMessage());
|
|
}
|
|
break;
|
|
case 14: // Remove ignore
|
|
try {
|
|
save.removeIgnore(friend);
|
|
Server.db.updateQuery("DELETE FROM `pk_ignores` WHERE `user` LIKE '" + user + "' AND `ignore` LIKE '" + friend + "'");
|
|
} catch (SQLException e) {
|
|
Server.error(e.getMessage());
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|