MCPcopy Create free account
hub / github.com/BZFlag-Dev/bzflag / execute

Method execute

src/bzfs/bzfsClientMessages.cpp:833–878  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

831class MessageHandler : public PlayerFirstHandler {
832 public:
833 virtual bool execute(uint16_t& /*code*/, void* buf, int len) {
834 if (!player || len < MessageLen + 1) {
835 return false;
836 }
837 if (!player->player.isCompletelyAdded()) {
838 return false;
839 }
840
841 // data: target player/team, message string
842 PlayerId dstPlayer;
843 char message[MessageLen];
844
845 buf = nboUnpackUInt8(buf, dstPlayer);
846 buf = nboUnpackString(buf, message, sizeof(message));
847 message[MessageLen - 1] = '\0';
848
849 player->player.hasSent();
850 if (dstPlayer == AllPlayers) {
851 debugf(1, "Player %s [%d] -> All: %s\n", player->player.getCallSign(), player->getIndex(), message);
852 }
853 else {
854 if (dstPlayer == AdminPlayers) {
855 debugf(1, "Player %s [%d] -> Admin: %s\n", player->player.getCallSign(), player->getIndex(), message);
856 }
857 else {
858 if (dstPlayer > LastRealPlayer) {
859 debugf(1, "Player %s [%d] -> Team: %s\n", player->player.getCallSign(), player->getIndex(), message);
860 }
861 else {
862 GameKeeper::Player* p = GameKeeper::Player::getPlayerByIndex(dstPlayer);
863 if (p != NULL) {
864 debugf(1, "Player %s [%d] -> Player %s [%d]: %s\n", player->player.getCallSign(), player->getIndex(), p->player.getCallSign(), dstPlayer, message);
865 }
866 else {
867 debugf(1, "Player %s [%d] -> Player Unknown [%d]: %s\n", player->player.getCallSign(), player->getIndex(), dstPlayer, message);
868 }
869 }
870 }
871 }
872 // check for spamming and garbage
873 if (!checkChatSpam(message, player, player->getIndex()) && !checkChatGarbage(message, player, player->getIndex())) {
874 sendPlayerMessage(player, dstPlayer, message);
875 }
876
877 return true;
878 }
879};
880
881

Callers

nothing calls this directly

Calls 11

nboUnpackUInt8Function · 0.85
nboUnpackStringFunction · 0.85
debugfFunction · 0.85
checkChatSpamFunction · 0.85
checkChatGarbageFunction · 0.85
sendPlayerMessageFunction · 0.85
isCompletelyAddedMethod · 0.80
hasSentMethod · 0.80
getPlayerByIndexFunction · 0.50
getCallSignMethod · 0.45
getIndexMethod · 0.45

Tested by

no test coverage detected