Player.getIsMasterClient() giving wrong result?

Options
Hey, I have this function from LoadBalancingListener override
void PhotonLoadBalancingListener::joinRoomEventAction(int playerNr, 
	const ExitGames::Common::JVector<int>& playernrs, const ExitGames::LoadBalancing::Player& player)
and everytime I do

if (PhotonLBClient->getLocalPlayer().getIsMasterClient()),
it is always returning true for every player, even for new player joins.

I also tried taking player from the function parameter and calling
player.getIsMasterClient(), it's also returning true all the time.

Am i doing the wrong things? do I need to loop manually through all integer JVector and get the lowest one to check if it is master client?

Comments

  • Neposeda
    Options
    Hi, I think problem in somewhere else. I`ve just checked it on my application and getIsMasterClient() works as expected
  • Kaiserludi
    Kaiserludi admin
    edited August 2016
    Options
    Hi @kingathur61.

    Client::getLocalPlayer().getIsMasterClient() works just fine for me.

    I have added the following two lines at the end of void NetworkLogic::joinRoomEventAction(int playerNr, const ExitGames::Common::JVector<int>& /*playernrs*/, const ExitGames::LoadBalancing::Player& player) in demo_loadBalancing from the Client SDK:
    	bool isMaster = mLoadBalancingClient.getLocalPlayer().getIsMasterClient();
    	EGLOG(ExitGames::Common::DebugLevel::INFO, L"local Client isMaster: %ls", isMaster?L"true":L"false");
    No further code modifications have been done (except for adding a valid appID, of course).

    Then I have started three instances of the demo and let the first one create a room and the second and third one join that room.
    As expected and intended the first one logs "true", while the second and third one both log "false".

    Thank you @Neposeda for confirming this.
  • juaxix
    juaxix ✭✭
    edited February 2022
    Options

    Please check that method, in the latest SDK (5.2.0.3) it is returning an incorrect value after some frames, having just one player in the room, while joined a room

    ExitGames::LoadBalancing::MutablePlayer& Player = m_photonCloudClient->getLocalPlayer();
    return Player .getIsMasterClient();
    

    will return false. but it is true (it's the only player in there, and the master client id is the local player one). While using

    m_photonCloudClient->getLocalPlayer().getNumber() == m_photonCloudClient->getCurrentlyJoinedRoom().getMasterClientID()
    

    will return true (getIsInGameRoom also returns true of course)