diff --git a/src/CNShardServer.cpp b/src/CNShardServer.cpp index e2aefc2..e6bc59a 100644 --- a/src/CNShardServer.cpp +++ b/src/CNShardServer.cpp @@ -47,7 +47,6 @@ void CNShardServer::keepAliveTimer(CNServer* serv, time_t currTime) { } void CNShardServer::periodicSaveTimer(CNServer* serv, time_t currTime) { - std::cout << "players size: " << PlayerManager::players.size() << std::endl; for (auto& pair : PlayerManager::players) { Database::updatePlayer(pair.second.plr); } diff --git a/src/ItemManager.cpp b/src/ItemManager.cpp index b6b2bc2..627192e 100644 --- a/src/ItemManager.cpp +++ b/src/ItemManager.cpp @@ -162,6 +162,12 @@ void ItemManager::itemGMGiveHandler(CNSocket* sock, CNPacketData* data) { // sock->sendPacket(new CNPacketData((void*)resp, P_FE2CL_REP_PC_GIVE_ITEM_FAIL, sizeof(sP_FE2CL_REP_PC_GIVE_ITEM_FAIL), sock->getFEKey())); } else if (itemreq->eIL == 1 && itemreq->Item.iType >= 0 && itemreq->Item.iType <= 10) { + if (ItemData.find(std::pair(itemreq->Item.iID, itemreq->Item.iType)) == ItemData.end()) { + // invalid item + std::cout << "[WARN] Item id " << itemreq->Item.iID << " with type " << itemreq->Item.iType << " is invalid (give item)" << std::endl; + return; + } + INITSTRUCT(sP_FE2CL_REP_PC_GIVE_ITEM_SUCC, resp); resp.eIL = itemreq->eIL;