From f02e9c0f6a5439ba468a4a6b247d3a2a2a228c7e Mon Sep 17 00:00:00 2001 From: David Markowitz <39972741+EmosewaMC@users.noreply.github.com> Date: Fri, 21 Oct 2022 17:35:12 -0700 Subject: [PATCH] Address being able to friend yourself (#779) * Address being able to friend yourself Fix an issue where players could friend themselves. Also stops yourself as appearing as a friend on your own friends list. * Send a Response instead Send a MYTHRAN response since the player is attempting to friend a Mythran. --- dChatServer/ChatPacketHandler.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dChatServer/ChatPacketHandler.cpp b/dChatServer/ChatPacketHandler.cpp index a51716ca..0f7f6919 100644 --- a/dChatServer/ChatPacketHandler.cpp +++ b/dChatServer/ChatPacketHandler.cpp @@ -33,9 +33,10 @@ void ChatPacketHandler::HandleFriendlistRequest(Packet* packet) { "WHEN friend_id = ? THEN player_id " "END AS requested_player, best_friend FROM friends) AS fr " "JOIN charinfo AS ci ON ci.id = fr.requested_player " - "WHERE fr.requested_player IS NOT NULL;")); + "WHERE fr.requested_player IS NOT NULL AND fr.requested_player != ?;")); stmt->setUInt(1, static_cast(playerID)); stmt->setUInt(2, static_cast(playerID)); + stmt->setUInt(3, static_cast(playerID)); std::vector friends; @@ -113,6 +114,10 @@ void ChatPacketHandler::HandleFriendRequest(Packet* packet) { inStream.Read(isBestFriendRequest); auto requestor = playerContainer.GetPlayerData(requestorPlayerID); + if (requestor->playerName == playerName) { + SendFriendResponse(requestor, requestor, AddFriendResponseType::MYTHRAN); + return; + }; std::unique_ptr requestee(playerContainer.GetPlayerData(playerName)); // Check if player is online first