diff --git a/src/CNProtocol.hpp b/src/CNProtocol.hpp index 62b94f6..c39314f 100644 --- a/src/CNProtocol.hpp +++ b/src/CNProtocol.hpp @@ -210,5 +210,5 @@ public: static void printPacket(CNPacketData *data, int type); virtual void newConnection(CNSocket* cns); virtual void killConnection(CNSocket* cns); - virtual void onStep(); // called every 2 seconds + virtual void onStep(); }; diff --git a/src/MobManager.cpp b/src/MobManager.cpp index 3cb7ec8..1b84817 100644 --- a/src/MobManager.cpp +++ b/src/MobManager.cpp @@ -59,8 +59,6 @@ void MobManager::pcAttackNpcs(CNSocket *sock, CNPacketData *data) { mob->appearanceData.iHP -= 100; - std::cout << "mob health is now " << mob->appearanceData.iHP << std::endl; - if (mob->appearanceData.iHP <= 0) killMob(sock, mob); diff --git a/src/PlayerManager.cpp b/src/PlayerManager.cpp index e96094c..b510dbe 100644 --- a/src/PlayerManager.cpp +++ b/src/PlayerManager.cpp @@ -57,22 +57,29 @@ void PlayerManager::removePlayer(CNSocket* key) { PlayerView cachedView = players[key]; // if players have them in their viewable lists, remove it - for (CNSocket* otherSock : players[key].viewable) { - players[otherSock].viewable.remove(key); // gone + for (auto& pair : players) { + if (pair.first == key) + continue; + + PlayerView& otherPlayer = pair.second; + otherPlayer.viewable.remove(key); // gone + + std::cout << "PlayerId = " << otherPlayer.plr->iID << " removed from " << otherPlayer.plr->iID << "'s viewable list" << std::endl; // now send PC_EXIT packet - sP_FE2CL_PC_EXIT exitPacket; + INITSTRUCT(sP_FE2CL_PC_EXIT, exitPacket); exitPacket.iID = players[key].plr->iID; - otherSock->sendPacket((void*)&exitPacket, P_FE2CL_PC_EXIT, sizeof(sP_FE2CL_PC_EXIT)); + pair.first->sendPacket((void*)&exitPacket, P_FE2CL_PC_EXIT, sizeof(sP_FE2CL_PC_EXIT)); } - std::cout << U16toU8(cachedView.plr->PCStyle.szFirstName) << " " << U16toU8(cachedView.plr->PCStyle.szLastName) << " has left!" << std::endl; - std::cout << players.size() << " players" << std::endl; + std::cout << U16toU8(cachedView.plr->PCStyle.szFirstName) << " " << U16toU8(cachedView.plr->PCStyle.szLastName) << " (PlayerId = " << key->plr->iID << ") has left!" << std::endl; key->plr = nullptr; delete cachedView.plr; players.erase(key); + + std::cout << players.size() << " players" << std::endl; } void PlayerManager::updatePlayerPosition(CNSocket* sock, int X, int Y, int Z, int angle) {