From a067975f27af5d2469cc0f7d5d03062b7dd5db6a Mon Sep 17 00:00:00 2001 From: dongresource Date: Fri, 28 Aug 2020 22:01:49 +0200 Subject: [PATCH] Players can now see eachother fight monsters. --- src/CombatManager.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/CombatManager.cpp b/src/CombatManager.cpp index 2836dab..bb77b75 100644 --- a/src/CombatManager.cpp +++ b/src/CombatManager.cpp @@ -15,6 +15,7 @@ void CombatManager::init() { void CombatManager::pcAttackNpcs(CNSocket *sock, CNPacketData *data) { sP_CL2FE_REQ_PC_ATTACK_NPCs* pkt = (sP_CL2FE_REQ_PC_ATTACK_NPCs*)data->buf; + Player *plr = PlayerManager::getPlayer(sock); // sanity check if (!validInVarPacket(sizeof(sP_CL2FE_REQ_PC_ATTACK_NPCs), pkt->iNPCCnt, sizeof(int32_t), data->size)) { @@ -66,6 +67,20 @@ void CombatManager::pcAttackNpcs(CNSocket *sock, CNPacketData *data) { } sock->sendPacket((void*)respbuf, P_FE2CL_PC_ATTACK_NPCs_SUCC, resplen); + + // a bit of a hack: these are the same size, so we can reuse the output packet + assert(sizeof(sP_FE2CL_PC_ATTACK_NPCs_SUCC) == sizeof(sP_FE2CL_PC_ATTACK_NPCs)); + sP_FE2CL_PC_ATTACK_NPCs *resp1 = (sP_FE2CL_PC_ATTACK_NPCs*)respbuf; + + resp1->iPC_ID = plr->iID; + + // send to other players + for (CNSocket *s : PlayerManager::players[sock].viewable) { + if (s == sock) + continue; + + s->sendPacket((void*)respbuf, P_FE2CL_PC_ATTACK_NPCs, resplen); + } } void CombatManager::combatBegin(CNSocket *sock, CNPacketData *data) {} // stub