diff --git a/src/CNProtocol.hpp b/src/CNProtocol.hpp index e101175..2d72ec8 100644 --- a/src/CNProtocol.hpp +++ b/src/CNProtocol.hpp @@ -7,7 +7,9 @@ #include #ifdef _WIN32 // windows + #ifndef NOMINMAX #define NOMINMAX + #endif #define _WINSOCK_DEPRECATED_NO_WARNINGS #include #include diff --git a/src/GroupManager.cpp b/src/GroupManager.cpp index a40512e..d3902f0 100644 --- a/src/GroupManager.cpp +++ b/src/GroupManager.cpp @@ -147,9 +147,6 @@ void GroupManager::joinGroup(CNSocket* sock, CNPacketData* data) { } void GroupManager::leaveGroup(CNSocket* sock, CNPacketData* data) { - if (data->size != sizeof(P_CL2FE_REQ_PC_GROUP_LEAVE)) - return; // malformed packet - Player* plr = PlayerManager::getPlayer(sock); if (plr == nullptr) diff --git a/src/NPCManager.cpp b/src/NPCManager.cpp index 841ddf8..225fe47 100644 --- a/src/NPCManager.cpp +++ b/src/NPCManager.cpp @@ -351,7 +351,7 @@ void NPCManager::npcVendorTable(CNSocket* sock, CNPacketData* data) { INITSTRUCT(sP_FE2CL_REP_PC_VENDOR_TABLE_UPDATE_SUCC, resp); - for (int i = 0; i < listings.size() && i < 20; i++) { // 20 is the max + for (int i = 0; i < (int)listings.size() && i < 20; i++) { // 20 is the max sItemBase base; base.iID = listings[i].iID; base.iOpt = 0; @@ -393,7 +393,7 @@ void NPCManager::npcVendorBuyBattery(CNSocket* sock, CNPacketData* data) { if (plr == nullptr) return; - int cost = req->Item.iOpt * 100; + int cost = req->Item.iOpt * 10; if ((req->Item.iID == 3 ? (plr->batteryW >= 9999) : (plr->batteryN >= 9999)) || plr->money < cost) { // sanity check INITSTRUCT(sP_FE2CL_REP_PC_VENDOR_BATTERY_BUY_FAIL, failResp); failResp.iErrorCode = 0; diff --git a/src/NanoManager.cpp b/src/NanoManager.cpp index 41b7435..2454800 100644 --- a/src/NanoManager.cpp +++ b/src/NanoManager.cpp @@ -702,6 +702,8 @@ void NanoManager::nanoBuff(CNSocket* sock, int16_t nanoId, int skillId, int16_t if (groupPower) pktCnt = leader->groupCnt; + else + leader = plr; if (!validOutVarPacket(sizeof(sP_FE2CL_NANO_SKILL_USE), pktCnt, sizeof(sSkillResult_Buff))) { std::cout << "[WARN] bad sP_FE2CL_NANO_SKILL_USE packet size\n"; @@ -783,6 +785,8 @@ void NanoManager::nanoUnbuff(CNSocket* sock, int32_t iCBFlag, int16_t eCharStatu if (groupPower) pktCnt = leader->groupCnt; + else + leader = plr; for (int i = 0; i < pktCnt; i++) { Player* varPlr; @@ -813,7 +817,7 @@ void NanoManager::nanoUnbuff(CNSocket* sock, int32_t iCBFlag, int16_t eCharStatu // 0=A 1=B 2=C -1=Not found int NanoManager::nanoStyle(int nanoId) { - if (nanoId < 0 || nanoId >= NanoTable.size()) + if (nanoId < 0 || nanoId >= (int)NanoTable.size()) return -1; return NanoTable[nanoId].style; }