forked from teamnwah/openmw-tes3coop
Fix packet spam
This commit is contained in:
parent
96e2d749c7
commit
24617589e4
4 changed files with 30 additions and 23 deletions
|
@ -49,15 +49,6 @@ void Networking::Update(RakNet::Packet *packet)
|
||||||
|
|
||||||
Player *player = Players::GetPlayer(packet->guid);
|
Player *player = Players::GetPlayer(packet->guid);
|
||||||
|
|
||||||
if (player == 0)
|
|
||||||
{
|
|
||||||
controller->GetPacket(ID_HANDSHAKE)->RequestData(packet->guid);
|
|
||||||
Players::NewPlayer(packet->guid);
|
|
||||||
player = Players::GetPlayer(packet->guid);
|
|
||||||
controller->GetPacket(ID_USER_MYID)->Send(Players::GetPlayer(packet->guid), false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
RakNet::BitStream bsIn(&packet->data[1], packet->length, false);
|
RakNet::BitStream bsIn(&packet->data[1], packet->length, false);
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -68,6 +59,15 @@ void Networking::Update(RakNet::Packet *packet)
|
||||||
|
|
||||||
controller->SetStream(&bsIn, 0);
|
controller->SetStream(&bsIn, 0);
|
||||||
|
|
||||||
|
if (player == 0)
|
||||||
|
{
|
||||||
|
controller->GetPacket(ID_HANDSHAKE)->RequestData(packet->guid);
|
||||||
|
Players::NewPlayer(packet->guid);
|
||||||
|
player = Players::GetPlayer(packet->guid);
|
||||||
|
controller->GetPacket(ID_USER_MYID)->Send(Players::GetPlayer(packet->guid), false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
BasePacket *myPacket = controller->GetPacket(packet->data[0]);
|
BasePacket *myPacket = controller->GetPacket(packet->data[0]);
|
||||||
|
|
||||||
if (packet->data[0] == ID_HANDSHAKE)
|
if (packet->data[0] == ID_HANDSHAKE)
|
||||||
|
@ -109,7 +109,7 @@ void Networking::Update(RakNet::Packet *packet)
|
||||||
|
|
||||||
if (packet->data[0] == ID_LOADED)
|
if (packet->data[0] == ID_LOADED)
|
||||||
{
|
{
|
||||||
player->Loaded();
|
player->Loaded(Player::LOADED);
|
||||||
|
|
||||||
static constexpr unsigned int ident = Script::CallbackIdentity("OnPlayerConnect");
|
static constexpr unsigned int ident = Script::CallbackIdentity("OnPlayerConnect");
|
||||||
Script::CallBackReturn<ident> result = true;
|
Script::CallBackReturn<ident> result = true;
|
||||||
|
@ -131,12 +131,13 @@ void Networking::Update(RakNet::Packet *packet)
|
||||||
myPacket->Send(player, true);
|
myPacket->Send(player, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!player->isLoaded())
|
if (player->LoadedState() == Player::NOTLOADED)
|
||||||
return;
|
return;
|
||||||
else if(player->BirthSign()->empty())
|
else if (player->LoadedState() == Player::LOADED)
|
||||||
{
|
{
|
||||||
(*player->BirthSign()) = "a";
|
player->Loaded(Player::POSTLOADED);
|
||||||
NewPlayer(packet->guid);
|
NewPlayer(packet->guid);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (packet->data[0])
|
switch (packet->data[0])
|
||||||
|
|
|
@ -92,12 +92,12 @@ bool Player::isHandshaked()
|
||||||
return handshake;
|
return handshake;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::Loaded()
|
void Player::Loaded(int state)
|
||||||
{
|
{
|
||||||
loaded = true;
|
loaded = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::isLoaded()
|
int Player::LoadedState()
|
||||||
{
|
{
|
||||||
return loaded;
|
return loaded;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,12 @@ class Player : public mwmp::BasePlayer
|
||||||
unsigned short id;
|
unsigned short id;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
NOTLOADED=0,
|
||||||
|
LOADED,
|
||||||
|
POSTLOADED
|
||||||
|
};
|
||||||
Player(RakNet::RakNetGUID id);
|
Player(RakNet::RakNetGUID id);
|
||||||
|
|
||||||
unsigned short GetID();
|
unsigned short GetID();
|
||||||
|
@ -48,13 +54,13 @@ public:
|
||||||
bool isHandshaked();
|
bool isHandshaked();
|
||||||
void Handshake();
|
void Handshake();
|
||||||
|
|
||||||
void Loaded();
|
void Loaded(int state);
|
||||||
bool isLoaded();
|
int LoadedState();
|
||||||
|
|
||||||
virtual ~Player();
|
virtual ~Player();
|
||||||
private:
|
private:
|
||||||
bool handshake;
|
bool handshake;
|
||||||
bool loaded;
|
int loaded;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //OPENMW_PLAYER_HPP
|
#endif //OPENMW_PLAYER_HPP
|
||||||
|
|
|
@ -91,11 +91,11 @@ void Main::Configure(const boost::program_options::variables_map &variables)
|
||||||
Main::addr = variables["connect"].as<string>();
|
Main::addr = variables["connect"].as<string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings::CategorySettingValueMap saveUserSettings;
|
static Settings::CategorySettingValueMap saveUserSettings;
|
||||||
Settings::CategorySettingValueMap saveDefaultSettings;
|
static Settings::CategorySettingValueMap saveDefaultSettings;
|
||||||
Settings::CategorySettingVector saveChangedSettings;
|
static Settings::CategorySettingVector saveChangedSettings;
|
||||||
|
|
||||||
Settings::Manager InitMgr(Settings::Manager &mgr)
|
void InitMgr(Settings::Manager &mgr)
|
||||||
{
|
{
|
||||||
saveUserSettings = mgr.mUserSettings;
|
saveUserSettings = mgr.mUserSettings;
|
||||||
saveDefaultSettings = mgr.mDefaultSettings;
|
saveDefaultSettings = mgr.mDefaultSettings;
|
||||||
|
|
Loading…
Reference in a new issue