diff --git a/src/ChatManager.cpp b/src/ChatManager.cpp index 9af206e..e6b7537 100644 --- a/src/ChatManager.cpp +++ b/src/ChatManager.cpp @@ -209,8 +209,10 @@ void summonWCommand(std::string full, std::vector& args, CNSocket* return; } + int limit = NPCManager::NPCData.back()["m_iNpcNumber"]; + // permission & sanity check - if (type >= 3314) + if (type > limit) return; BaseNPC *npc = NPCManager::summonNPC(plr->x, plr->y, plr->z, plr->instanceID, type, true); @@ -540,8 +542,10 @@ void summonGroupCommand(std::string full, std::vector& args, CNSock return; } + int limit = NPCManager::NPCData.back()["m_iNpcNumber"]; + // permission & sanity check - if (type >= 3314 || type2 >= 3314 || count > 5) { + if (type > limit || type2 > limit || count > 5) { ChatManager::sendServerMessage(sock, "Invalid parameters; double check types and count"); return; } diff --git a/src/NPCManager.cpp b/src/NPCManager.cpp index 3cc54bc..e49d93a 100644 --- a/src/NPCManager.cpp +++ b/src/NPCManager.cpp @@ -498,8 +498,10 @@ void NPCManager::npcSummonHandler(CNSocket* sock, CNPacketData* data) { sP_CL2FE_REQ_NPC_SUMMON* req = (sP_CL2FE_REQ_NPC_SUMMON*)data->buf; Player* plr = PlayerManager::getPlayer(sock); + int limit = NPCData.back()["m_iNpcNumber"]; + // permission & sanity check - if (plr->accountLevel > 30 || req->iNPCType >= 3314 || req->iNPCCnt > 100) + if (plr->accountLevel > 30 || req->iNPCType >= limit || req->iNPCCnt > 100) return; for (int i = 0; i < req->iNPCCnt; i++) {