From e0808ffcbd92dbf718259e6a095f00d0ca9d6cd3 Mon Sep 17 00:00:00 2001 From: dongresource Date: Mon, 21 Dec 2020 01:57:56 +0100 Subject: [PATCH] Read the NPC ID limit from the XDT --- src/ChatManager.cpp | 8 ++++++-- src/NPCManager.cpp | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) 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++) {