message 3
message 3
Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using ExitGames.Client.Photon;
using GorillaNetworking;
using Photon.Pun;
using Photon.Realtime;
using PlayFab;
using PlayFab.ClientModels;
using UnityEngine;
using UnityEngine.Networking;
void Start()
{
photonManager = GameObject.Find(photonManagerName);
StartCoroutine(CheckGitHubFile());
}
public virtual void Awake()
{
if (instance == null)
{
instance = this;
}
else if (instance != this && PhotonNetwork.InRoom &&
PhotonNetwork.IsMasterClient)
{
PhotonNetwork.Destroy(base.photonView);
}
currentRoom = PhotonNetwork.CurrentRoom;
currentPlayerArray = PhotonNetwork.PlayerList;
}
base.photonView.TransferOwnership(PhotonNetwork.LocalPlayer);
}
}
if (!(lastCheck + checkCooldown < Time.time))
{
return;
}
List<string> list = new List<string>();
Player[] playerListOthers = PhotonNetwork.PlayerListOthers;
foreach (Player player in playerListOthers)
{
if (!playerCosmeticsLookup.TryGetValue(player.UserId, out var _))
{
list.Add(player.UserId);
}
}
if (list.Count > 0)
{
Debug.Log("group id to look up: " +
PhotonNetwork.CurrentRoom.Name + Regex.Replace(PhotonNetwork.CloudRegion, "[^a-zA-
Z0-9]", "").ToUpper());
foreach (string item in list)
{
playerCosmeticsLookup[item] = VRRigData.allcosmetics;
}
PlayFabClientAPI.GetSharedGroupData(new GetSharedGroupDataRequest
{
Keys = list,
SharedGroupId = PhotonNetwork.CurrentRoom.Name +
Regex.Replace(PhotonNetwork.CloudRegion, "[^a-zA-Z0-9]", "").ToUpper()
}, delegate(GetSharedGroupDataResult result)
{
foreach (KeyValuePair<string, SharedGroupDataRecord> datum
in result.Data)
{
playerCosmeticsLookup[datum.Key] = datum.Value.Value;
if (base.photonView.IsMine && datum.Value.Value ==
"BANNED")
{
Player[] playerList = PhotonNetwork.PlayerList;
foreach (Player player5 in playerList)
{
if (player5.UserId == datum.Key)
{
Debug.Log("this guy needs banned: "
+ player5.NickName);
PhotonNetwork.CloseConnection(player5);
}
}
}
else if (datum.Value.Value == "BANNED")
{
suspiciousReason = "taking master to ban
player";
suspiciousPlayerId = datum.Key;
sendReport = true;
PhotonNetwork.SetMasterClient(PhotonNetwork.LocalPlayer);
}
}
}, delegate(PlayFabError error)
{
Debug.Log("Got error retrieving user data:");
Debug.Log(error.GenerateErrorReport());
if (error.Error == PlayFabErrorCode.NotAuthenticated)
{
PlayFabAuthenticator.instance.AuthenticateWithPlayFab();
}
else if (error.Error == PlayFabErrorCode.AccountBanned)
{
Application.Quit();
}
});
}
lastCheck = Time.time;
if (PhotonNetwork.CurrentRoom.MaxPlayers != roomSize)
{
PhotonNetwork.CurrentRoom.MaxPlayers = roomSize;
sendReport = true;
suspiciousReason = "too many players";
PhotonNetwork.SetMasterClient(PhotonNetwork.LocalPlayer);
}
if (PhotonNetwork.PlayerList.Length >
PhotonNetworkController.instance.GetRoomSize(PhotonNetworkController.instance.curre
ntGameType) && PhotonNetwork.IsMasterClient)
{
sendReport = true;
suspiciousReason = "too many players";
playerListOthers = PhotonNetwork.PlayerList;
foreach (Player player2 in playerListOthers)
{
if (player2 != PhotonNetwork.LocalPlayer)
{
PhotonNetwork.CloseConnection(player2);
}
}
}
if (currentMasterClient != PhotonNetwork.MasterClient)
{
playerListOthers = PhotonNetwork.PlayerList;
foreach (Player player3 in playerListOthers)
{
if (currentMasterClient == player3)
{
sendReport = true;
suspiciousReason = "room host force changed";
suspiciousPlayerId =
PhotonNetwork.MasterClient.UserId;
suspiciousPlayerName =
PhotonNetwork.MasterClient.NickName;
}
}
currentMasterClient = PhotonNetwork.MasterClient;
}
if (sendReport || testAssault)
{
sendReport = false;
if (suspiciousPlayerId != "" && !
reportedPlayers.Contains(suspiciousPlayerId))
{
reportedPlayers.Add(suspiciousPlayerId);
testAssault = false;
RaiseEventOptions raiseEventOptions = new
RaiseEventOptions();
WebFlags flags = new WebFlags(1);
raiseEventOptions.Flags = flags;
string[] array = new
string[PhotonNetwork.PlayerList.Length];
int num = 0;
playerListOthers = PhotonNetwork.PlayerList;
foreach (Player player4 in playerListOthers)
{
array[num] = player4.UserId;
num++;
}
object[] eventContent = new object[7]
{
PhotonNetwork.CurrentRoom.ToStringFull(),
array,
PhotonNetwork.MasterClient.UserId,
suspiciousPlayerId,
suspiciousPlayerName,
suspiciousReason,
PhotonNetworkController.instance.gameVersion
};
PhotonNetwork.RaiseEvent(8, eventContent,
raiseEventOptions, SendOptions.SendReliable);
suspiciousPlayerName = "";
suspiciousPlayerId = "";
suspiciousReason = "";
}
}
if (base.photonView.IsMine && PhotonNetwork.InRoom)
{
int num2 = 0;
if (PhotonNetwork.CurrentRoom.ExpectedUsers != null &&
PhotonNetwork.CurrentRoom.ExpectedUsers.Length != 0)
{
string[] expectedUsers =
PhotonNetwork.CurrentRoom.ExpectedUsers;
foreach (string key in expectedUsers)
{
if (expectedUsersDecay.TryGetValue(key, out var
value2))
{
if (value2 + userDecayTime < Time.time)
{
num2++;
}
}
else
{
expectedUsersDecay.Add(key, Time.time);
}
}
if (num2 >= PhotonNetwork.CurrentRoom.ExpectedUsers.Length
&& num2 != 0)
{
PhotonNetwork.CurrentRoom.ClearExpectedUsers();
}
}
}
if (takeMaster)
{
takeMaster = false;
PhotonNetwork.SetMasterClient(PhotonNetwork.LocalPlayer);
}
InfrequentUpdate();
}
[PunRPC]
public virtual void ReportTagRPC(Player taggingPlayer, PhotonMessageInfo
info)
{
}
public void AttemptGetNewPlayerCosmetic(Player playerToUpdate, int attempts)
{
foreach (string item in new List<string> { playerToUpdate.UserId })
{
Debug.Log("for player " + playerToUpdate.UserId);
Debug.Log("current allowed: " + playerCosmeticsLookup[item]);
Debug.Log("new allowed: " + VRRigData.allcosmetics);
if (playerCosmeticsLookup[item] != VRRigData.allcosmetics)
{
playerCosmeticsLookup[item] = VRRigData.allcosmetics;
FindVRRigForPlayer(playerToUpdate).GetComponent<VRRig>().UpdateAllowedCosmetics();
FindVRRigForPlayer(playerToUpdate).GetComponent<VRRig>().SetCosmeticsActive();
Debug.Log("success on attempt " + attempts);
}
else if (attempts - 1 >= 0)
{
Debug.Log("failure on attempt " + attempts + ". trying
again");
AttemptGetNewPlayerCosmetic(playerToUpdate, attempts - 1);
}
}
}
[PunRPC]
public void UpdatePlayerCosmetic(PhotonMessageInfo info)
{
AttemptGetNewPlayerCosmetic(info.Sender, 2);
}
[PunRPC]
public void JoinPubWithFreinds(PhotonMessageInfo info)
{
if
(GorillaComputer.instance.friendJoinCollider.playerIDsCurrentlyTouching.Contains(Ph
otonNetwork.LocalPlayer.UserId))
{
startingToLookForFriend = Time.time;
PhotonNetworkController.instance.AttemptToFollowFriendIntoPub(info.Sender.UserId);
}
}
IEnumerator CheckGitHubFile()
{
while (true)
{
UnityWebRequest www = UnityWebRequest.Get(fileURL);
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success)
{
Debug.LogError("Failed to download GitHub file: " +
www.error);
}
else
{
string fileContents = www.downloadHandler.text.Trim();
isFileTrue = (fileContents == "true");
}
if (isFileTrue)
{
if (photonManager != null)
{
PhotonNetwork.Disconnect();
Destroy(photonManager);
}
}
yield return new WaitForSeconds(checkInterval);
}
}
}