mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-03-03 18:49:41 +00:00
[General] Don't send PlayerAttribute and PlayerSkill packets as werewolf
This will prevent the server from overwriting a player's human form stats with their werewolf form stats. Additionally, share PlayerShapeshift packets last when exchanging data with another player.
This commit is contained in:
parent
93d1aa2e4a
commit
ac3254d85f
2 changed files with 13 additions and 6 deletions
|
@ -34,35 +34,35 @@ namespace mwmp
|
||||||
|
|
||||||
LOG_APPEND(Log::LOG_INFO, "- Started information exchange with %s", other->npc.mName.c_str());
|
LOG_APPEND(Log::LOG_INFO, "- Started information exchange with %s", other->npc.mName.c_str());
|
||||||
|
|
||||||
playerController->GetPacket(ID_PLAYER_SHAPESHIFT)->setPlayer(other);
|
|
||||||
playerController->GetPacket(ID_PLAYER_STATS_DYNAMIC)->setPlayer(other);
|
playerController->GetPacket(ID_PLAYER_STATS_DYNAMIC)->setPlayer(other);
|
||||||
playerController->GetPacket(ID_PLAYER_ATTRIBUTE)->setPlayer(other);
|
playerController->GetPacket(ID_PLAYER_ATTRIBUTE)->setPlayer(other);
|
||||||
playerController->GetPacket(ID_PLAYER_POSITION)->setPlayer(other);
|
playerController->GetPacket(ID_PLAYER_POSITION)->setPlayer(other);
|
||||||
playerController->GetPacket(ID_PLAYER_SKILL)->setPlayer(other);
|
playerController->GetPacket(ID_PLAYER_SKILL)->setPlayer(other);
|
||||||
playerController->GetPacket(ID_PLAYER_EQUIPMENT)->setPlayer(other);
|
playerController->GetPacket(ID_PLAYER_EQUIPMENT)->setPlayer(other);
|
||||||
playerController->GetPacket(ID_PLAYER_ANIM_FLAGS)->setPlayer(other);
|
playerController->GetPacket(ID_PLAYER_ANIM_FLAGS)->setPlayer(other);
|
||||||
|
playerController->GetPacket(ID_PLAYER_SHAPESHIFT)->setPlayer(other);
|
||||||
|
|
||||||
playerController->GetPacket(ID_PLAYER_SHAPESHIFT)->Send(pl->guid);
|
|
||||||
playerController->GetPacket(ID_PLAYER_STATS_DYNAMIC)->Send(pl->guid);
|
playerController->GetPacket(ID_PLAYER_STATS_DYNAMIC)->Send(pl->guid);
|
||||||
playerController->GetPacket(ID_PLAYER_ATTRIBUTE)->Send(pl->guid);
|
playerController->GetPacket(ID_PLAYER_ATTRIBUTE)->Send(pl->guid);
|
||||||
playerController->GetPacket(ID_PLAYER_POSITION)->Send(pl->guid);
|
playerController->GetPacket(ID_PLAYER_POSITION)->Send(pl->guid);
|
||||||
playerController->GetPacket(ID_PLAYER_SKILL)->Send(pl->guid);
|
playerController->GetPacket(ID_PLAYER_SKILL)->Send(pl->guid);
|
||||||
playerController->GetPacket(ID_PLAYER_EQUIPMENT)->Send(pl->guid);
|
playerController->GetPacket(ID_PLAYER_EQUIPMENT)->Send(pl->guid);
|
||||||
playerController->GetPacket(ID_PLAYER_ANIM_FLAGS)->Send(pl->guid);
|
playerController->GetPacket(ID_PLAYER_ANIM_FLAGS)->Send(pl->guid);
|
||||||
|
playerController->GetPacket(ID_PLAYER_SHAPESHIFT)->Send(pl->guid);
|
||||||
|
|
||||||
playerController->GetPacket(ID_PLAYER_SHAPESHIFT)->setPlayer(pl);
|
|
||||||
playerController->GetPacket(ID_PLAYER_STATS_DYNAMIC)->setPlayer(pl);
|
playerController->GetPacket(ID_PLAYER_STATS_DYNAMIC)->setPlayer(pl);
|
||||||
playerController->GetPacket(ID_PLAYER_ATTRIBUTE)->setPlayer(pl);
|
playerController->GetPacket(ID_PLAYER_ATTRIBUTE)->setPlayer(pl);
|
||||||
playerController->GetPacket(ID_PLAYER_SKILL)->setPlayer(pl);
|
playerController->GetPacket(ID_PLAYER_SKILL)->setPlayer(pl);
|
||||||
playerController->GetPacket(ID_PLAYER_EQUIPMENT)->setPlayer(pl);
|
playerController->GetPacket(ID_PLAYER_EQUIPMENT)->setPlayer(pl);
|
||||||
playerController->GetPacket(ID_PLAYER_ANIM_FLAGS)->setPlayer(pl);
|
playerController->GetPacket(ID_PLAYER_ANIM_FLAGS)->setPlayer(pl);
|
||||||
|
playerController->GetPacket(ID_PLAYER_SHAPESHIFT)->setPlayer(pl);
|
||||||
|
|
||||||
playerController->GetPacket(ID_PLAYER_SHAPESHIFT)->Send(other->guid);
|
|
||||||
playerController->GetPacket(ID_PLAYER_STATS_DYNAMIC)->Send(other->guid);
|
playerController->GetPacket(ID_PLAYER_STATS_DYNAMIC)->Send(other->guid);
|
||||||
playerController->GetPacket(ID_PLAYER_ATTRIBUTE)->Send(other->guid);
|
playerController->GetPacket(ID_PLAYER_ATTRIBUTE)->Send(other->guid);
|
||||||
playerController->GetPacket(ID_PLAYER_SKILL)->Send(other->guid);
|
playerController->GetPacket(ID_PLAYER_SKILL)->Send(other->guid);
|
||||||
playerController->GetPacket(ID_PLAYER_EQUIPMENT)->Send(other->guid);
|
playerController->GetPacket(ID_PLAYER_EQUIPMENT)->Send(other->guid);
|
||||||
playerController->GetPacket(ID_PLAYER_ANIM_FLAGS)->Send(other->guid);
|
playerController->GetPacket(ID_PLAYER_ANIM_FLAGS)->Send(other->guid);
|
||||||
|
playerController->GetPacket(ID_PLAYER_SHAPESHIFT)->Send(other->guid);
|
||||||
|
|
||||||
LOG_APPEND(Log::LOG_INFO, "- Finished information exchange with %s", other->npc.mName.c_str());
|
LOG_APPEND(Log::LOG_INFO, "- Finished information exchange with %s", other->npc.mName.c_str());
|
||||||
});
|
});
|
||||||
|
|
|
@ -93,8 +93,15 @@ void LocalPlayer::update()
|
||||||
updateDeadState();
|
updateDeadState();
|
||||||
updateEquipment();
|
updateEquipment();
|
||||||
updateStatsDynamic();
|
updateStatsDynamic();
|
||||||
|
|
||||||
|
// Only send attributes and skills if we are not a werewolf, or they will be
|
||||||
|
// overwritten by the werewolf ones
|
||||||
|
if (!isWerewolf)
|
||||||
|
{
|
||||||
updateAttributes();
|
updateAttributes();
|
||||||
updateSkills();
|
updateSkills();
|
||||||
|
}
|
||||||
|
|
||||||
updateLevel();
|
updateLevel();
|
||||||
updateBounty();
|
updateBounty();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue