mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-10-04 21:56:32 +00:00
[Server] Send some packets only to nearest players
This commit is contained in:
parent
846ceacc90
commit
b760015071
3 changed files with 41 additions and 10 deletions
|
@ -150,7 +150,10 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
|
||||||
if (!player->creatureStats.mDead)
|
if (!player->creatureStats.mDead)
|
||||||
{
|
{
|
||||||
myPacket->Read(player);
|
myPacket->Read(player);
|
||||||
myPacket->Send(player, true); //send to other clients
|
//myPacket->Send(player, true); //send to other clients
|
||||||
|
|
||||||
|
player->sendToNearest(myPacket);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -197,7 +200,9 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
|
||||||
if (!player->creatureStats.mDead)
|
if (!player->creatureStats.mDead)
|
||||||
{
|
{
|
||||||
myPacket->Read(player);
|
myPacket->Read(player);
|
||||||
myPacket->Send(player, true);
|
//myPacket->Send(player, true);
|
||||||
|
|
||||||
|
player->sendToNearest(myPacket);
|
||||||
|
|
||||||
Script::Call<Script::CallbackIdentity("OnPlayerAttributesChange")>(player->getId());
|
Script::Call<Script::CallbackIdentity("OnPlayerAttributesChange")>(player->getId());
|
||||||
}
|
}
|
||||||
|
@ -210,7 +215,8 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
|
||||||
if (!player->creatureStats.mDead)
|
if (!player->creatureStats.mDead)
|
||||||
{
|
{
|
||||||
myPacket->Read(player);
|
myPacket->Read(player);
|
||||||
myPacket->Send(player, true);
|
//myPacket->Send(player, true);
|
||||||
|
player->sendToNearest(myPacket);
|
||||||
|
|
||||||
Script::Call<Script::CallbackIdentity("OnPlayerSkillsChange")>(player->getId());
|
Script::Call<Script::CallbackIdentity("OnPlayerSkillsChange")>(player->getId());
|
||||||
}
|
}
|
||||||
|
@ -223,7 +229,7 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
|
||||||
if (!player->creatureStats.mDead)
|
if (!player->creatureStats.mDead)
|
||||||
{
|
{
|
||||||
myPacket->Read(player);
|
myPacket->Read(player);
|
||||||
myPacket->Send(player, true);
|
//myPacket->Send(player, true);
|
||||||
|
|
||||||
Script::Call<Script::CallbackIdentity("OnPlayerLevelChange")>(player->getId());
|
Script::Call<Script::CallbackIdentity("OnPlayerLevelChange")>(player->getId());
|
||||||
}
|
}
|
||||||
|
@ -235,7 +241,9 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
|
||||||
DEBUG_PRINTF("ID_PLAYER_EQUIPMENT\n");
|
DEBUG_PRINTF("ID_PLAYER_EQUIPMENT\n");
|
||||||
|
|
||||||
myPacket->Read(player);
|
myPacket->Read(player);
|
||||||
myPacket->Send(player, true);
|
//myPacket->Send(player, true);
|
||||||
|
|
||||||
|
player->sendToNearest(myPacket);
|
||||||
|
|
||||||
Script::Call<Script::CallbackIdentity("OnPlayerEquipmentChange")>(player->getId());
|
Script::Call<Script::CallbackIdentity("OnPlayerEquipmentChange")>(player->getId());
|
||||||
|
|
||||||
|
@ -298,7 +306,8 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
myPacket->Send(player, true);
|
//myPacket->Send(player, true);
|
||||||
|
player->sendToNearest(myPacket);
|
||||||
playerController->GetPacket(ID_PLAYER_DYNAMICSTATS)->RequestData(player->attack.target);
|
playerController->GetPacket(ID_PLAYER_DYNAMICSTATS)->RequestData(player->attack.target);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -308,7 +317,10 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
|
||||||
{
|
{
|
||||||
DEBUG_PRINTF("ID_PLAYER_DYNAMICSTATS\n");
|
DEBUG_PRINTF("ID_PLAYER_DYNAMICSTATS\n");
|
||||||
myPacket->Read(player);
|
myPacket->Read(player);
|
||||||
myPacket->Send(player, true);
|
//myPacket->Send(player, true);
|
||||||
|
|
||||||
|
player->sendToNearest(myPacket);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -359,7 +371,10 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
|
||||||
{
|
{
|
||||||
DEBUG_PRINTF("ID_PLAYER_DRAWSTATE\n");
|
DEBUG_PRINTF("ID_PLAYER_DRAWSTATE\n");
|
||||||
myPacket->Read(player);
|
myPacket->Read(player);
|
||||||
myPacket->Send(player, true);
|
//myPacket->Send(player, true);
|
||||||
|
|
||||||
|
player->sendToNearest(myPacket);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -136,7 +136,21 @@ std::chrono::steady_clock::time_point Player::getLastAttackerTime()
|
||||||
return lastAttackerTime;
|
return lastAttackerTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
CellController::TContainer Player::GetCells()
|
CellController::TContainer Player::getCells()
|
||||||
{
|
{
|
||||||
return cells;
|
return cells;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Player::sendToNearest(mwmp::PlayerPacket *myPacket)
|
||||||
|
{
|
||||||
|
for(auto cell : getCells())
|
||||||
|
{
|
||||||
|
for(auto pl : *cell)
|
||||||
|
{
|
||||||
|
if(pl == this)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
myPacket->Send(this, pl->guid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
#include <components/openmw-mp/Log.hpp>
|
#include <components/openmw-mp/Log.hpp>
|
||||||
#include <components/openmw-mp/Base/BasePlayer.hpp>
|
#include <components/openmw-mp/Base/BasePlayer.hpp>
|
||||||
|
#include <components/openmw-mp/Packets/Player/PlayerPacket.hpp>
|
||||||
#include "Cell.hpp"
|
#include "Cell.hpp"
|
||||||
|
|
||||||
struct Player;
|
struct Player;
|
||||||
|
@ -69,7 +70,8 @@ public:
|
||||||
|
|
||||||
virtual ~Player();
|
virtual ~Player();
|
||||||
|
|
||||||
CellController::TContainer GetCells();
|
CellController::TContainer getCells();
|
||||||
|
void sendToNearest(mwmp::PlayerPacket *myPacket);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
mwmp::InventoryChanges inventoryChangesBuffer;
|
mwmp::InventoryChanges inventoryChangesBuffer;
|
||||||
|
|
Loading…
Reference in a new issue