private static void Prefix(PhotonNetworkController __instance) { try { if (__instance.currentGameType != null) { if (MapLoader._lobbyName != null) { if (__instance.currentGameType == "") { return; } if (__instance.currentGameType.Contains(MapLoader._lobbyName) == false) { MapLoader.ResetMapProperties(); } } } else { MapLoader.ResetMapProperties(); } } catch { UnityEngine.Debug.LogError("Error in monkemaploader on joined room prefix"); } }
public static void JoinPrivateLobby(string code, PhotonNetworkController __instance) { RoomCode = code; __instance.currentGameType = "privatetag"; __instance.customRoomID = code; __instance.isPrivate = true; if (PhotonNetwork.InRoom && PhotonNetwork.CurrentRoom.Name != code) { PhotonNetworkController.instance.currentGorillaParent.GetComponentInChildren <GorillaScoreboardSpawner>().OnLeftRoom(); __instance.attemptingToConnect = true; foreach (SkinnedMeshRenderer skinnedMeshRenderer2 in __instance.offlineVRRig) { if (skinnedMeshRenderer2 != null) { skinnedMeshRenderer2.enabled = true; } } PhotonNetwork.Disconnect(); } if (!PhotonNetwork.InRoom && !__instance.attemptingToConnect) { __instance.attemptingToConnect = true; __instance.AttemptToConnectToRoom(); UnityEngine.Debug.Log("attempting to connect"); } }
private static void Prefix(PhotonNetworkController __instance, out string[] __state) { __state = GorillaComputer.instance.allowedMapsToJoin; var newMaps = new string[__state.Length + 1]; GorillaComputer.instance.allowedMapsToJoin.CopyTo(newMaps, 0); newMaps[newMaps.Length - 1] = "MOD_"; GorillaComputer.instance.allowedMapsToJoin = newMaps; }
/// <inheritdoc cref="JoinPrivateLobby(string, bool)"/> /// <inheritdoc cref="JoinPrivateLobby(PhotonNetworkController)"/> public static void JoinPrivateLobby(string code, PhotonNetworkController __instance, bool casual = false) { RoomCode = code; __instance.customRoomID = code; __instance.isPrivate = true; Debug.Log("attempting to connect"); __instance.AttemptToJoinSpecificRoom(code); if (casual) { PhotonNetworkPatch.setCasualPrivate = true; } return; }
private static void Prefix(PhotonNetworkController __instance) { if (__instance.currentGameType != null) { if (MapLoader._lobbyName != null) { if (__instance.currentGameType.Contains(MapLoader._lobbyName) == false) { MapLoader.ResetMapProperties(); } } } else { MapLoader.ResetMapProperties(); } }
/// <inheritdoc cref="JoinModdedLobby(string)"/> /// <param name="casual">Whether or not to make the room casual.</param> public static void JoinModdedLobby(string map, bool casual = false) { string gameModeName = "infection_MOD_" + map; PhotonNetworkController photonNetworkController = PhotonNetworkController.Instance; string queue = casual ? "CASUAL" : "DEFAULT"; defaultQueue = GorillaComputer.instance.currentQueue; GorillaComputer.instance.currentQueue = queue; // Setting player prefs is not needed // PlayerPrefs.SetString("currentQueue", queue); // PlayerPrefs.Save(); // What does this do? FieldInfo field = photonNetworkController.GetType().GetField("pastFirstConnection", BindingFlags.Instance | BindingFlags.NonPublic); field.SetValue(photonNetworkController, true); // Go to code_MAP for maps while in a private if (PhotonNetwork.InRoom && (PhotonNetwork.CurrentRoom.CustomProperties["gameMode"] as string).Contains("private")) { string customRoomID = photonNetworkController.customRoomID; if (!customRoomID.Contains("_MAP")) { Debug.Log("JOINING"); JoinPrivateLobby(customRoomID + "_MAP", casual); return; } } //photonNetworkController.currentGameType = gameModeName; if (joinTrigger == null) { joinTrigger = new GameObject("UtillaJoinTrigger").AddComponent <GorillaNetworkJoinTrigger>(); joinTrigger.makeSureThisIsDisabled = Array.Empty <GameObject>(); joinTrigger.makeSureThisIsEnabled = Array.Empty <GameObject>(); joinTrigger.joinScreens = Array.Empty <GorillaLevelScreen>(); joinTrigger.leaveScreens = Array.Empty <GorillaLevelScreen>(); } joinTrigger.gameModeName = gameModeName; photonNetworkController.AttemptToJoinPublicRoom(joinTrigger); }
public static void JoinModdedLobby(string map) { string gameModeName = "infection_MOD_" + map; PhotonNetworkController photonNetworkController = PhotonNetworkController.instance; GorillaComputer.instance.currentQueue = "DEFAULT"; PlayerPrefs.SetString("currentQueue", "DEFAULT"); PlayerPrefs.Save(); if (PhotonNetwork.InRoom && PhotonNetwork.CurrentRoom.CustomProperties["gameMode"].ToString().Contains("privatetag")) { return; } if (PhotonNetwork.InRoom && (string)PhotonNetwork.CurrentRoom.CustomProperties["gameMode"] != gameModeName) { photonNetworkController.currentGameType = gameModeName; photonNetworkController.attemptingToConnect = true; SkinnedMeshRenderer[] offlineVRRig = photonNetworkController.offlineVRRig; for (int i = 0; i < offlineVRRig.Length; i++) { offlineVRRig[i].enabled = true; } PhotonNetwork.Disconnect(); return; } if (!PhotonNetwork.InRoom && !photonNetworkController.attemptingToConnect) { try { photonNetworkController.currentGameType = gameModeName; photonNetworkController.attemptingToConnect = true; photonNetworkController.AttemptToConnectToRoom(); Debug.Log("attempting to connect"); } catch (Exception e) { Debug.Log(e); } } }
/// <inheritdoc cref="JoinPrivateLobby()"/> /// <param name="__instance">Instance of PhotonNetworkController to use.</param> public static void JoinPrivateLobby(PhotonNetworkController __instance) => JoinPrivateLobby(RoomCode, __instance);
private static bool Prefix(PhotonNetworkController __instance, PhotonNetworkController.ConnectionEvent connectionEvent, ref bool ___joiningWithFriend, ref bool ___pastFirstConnection, ref int[] ___playersInRegion) { switch (connectionEvent) { // Attempting to join a room, try and join a random room ignoring used regions case PhotonNetworkController.ConnectionEvent.OnDisconnected: // These code paths do different things, don't alter them if (___joiningWithFriend || !___pastFirstConnection) { return(true); } Debug.Log("attempt to join master and join a random room"); // Ignore used reigons int[] playersInRegion = (int[])___playersInRegion.Clone(); foreach (int i in usedRegions) { playersInRegion[i] = 0; } // Lemming's code, choose a random region weighted with the players in each region float value = UnityEngine.Random.value; int num = 0; for (int i = 0; i < playersInRegion.Length; i++) { num += playersInRegion[i]; } float num2 = 0f; int num3 = -1; while (num2 < value && num3 < playersInRegion.Length - 1) { num3++; num2 += (float)playersInRegion[num3] / (float)num; } PhotonNetwork.PhotonServerSettings.AppSettings.FixedRegion = __instance.serverRegions[num3]; Debug.Log("joining past the first room, so we weighted randomly picked " + __instance.serverRegions[num3]); // End of lemming's code // For some reason the first time this is called it just runs again, so don't ignore the region we just chose if (!firstRegion) { usedRegions.Add(num3); } firstRegion = false; PhotonNetwork.ConnectUsingSettings(); return(false); // Failed to join a room in the region, try the next one case PhotonNetworkController.ConnectionEvent.OnJoinRandomFailed: if (usedRegions.Count < __instance.serverRegions.Length) { // Not enough server regions used, so we will try again PhotonNetwork.Disconnect(); return(false); } else { // Tried all of the regions, make a new room return(true); } // Successsfully joined room, so reset everything case PhotonNetworkController.ConnectionEvent.OnJoinedRoom: usedRegions = new List <int>(); firstRegion = true; return(true); // Not a case we care about, return default: return(true); } }
public void OnGUI() { if (ShowGui) { if (GUI.Button(new Rect(20, 20, 160, 20), "SPECTATOR")) { ShowHide = !ShowHide; } if (ShowHide) { if (PhotonNetwork.CurrentRoom != null) { if (PhotonNetwork.CurrentRoom.IsVisible) { Spectate = false; GUI.Box(new Rect(20, 50, 170, 170), "KFC'S Spectator Client"); GUI.Label(new Rect(50, 90, 170, 20), "IN A PUBLIC"); roomCode = GUI.TextArea(new Rect(20, 120, 160, 20), roomCode, 200); if (GUI.Button(new Rect(25, 150, 160f, 30f), "Join Room")) { PhotonNetworkController __instance = PhotonNetworkController.instance; if (PhotonNetwork.InRoom) { PhotonNetwork.LeaveRoom(); } __instance.AttemptToJoinSpecificRoom(roomCode); } GUI.Label(new Rect(20, 190, 170, 20), "Current Room: " + PhotonNetwork.CurrentRoom.Name); return; } } GUI.Box(new Rect(20, 50, 170, 150), "KFC'S Spectator Client"); if (GUI.Button(new Rect(25, 80, 160f, 30f), string1)) { Spectate = !Spectate; } if (Spectate) { string1 = "Spectator <color=green>ON</color>"; } else { string1 = "Spectator <color=red>OFF</color>"; } roomCode = GUI.TextArea(new Rect(20, 120, 160, 20), roomCode, 200); if (GUI.Button(new Rect(25, 150, 160f, 30f), "Join Room")) { PhotonNetworkController __instance = PhotonNetworkController.instance; if (PhotonNetwork.InRoom) { PhotonNetwork.LeaveRoom(); } __instance.AttemptToJoinSpecificRoom(roomCode); } if (PhotonNetwork.InRoom) { GUI.Box(new Rect(20, 200, 170, 270), "Current Room: " + PhotonNetwork.CurrentRoom.Name); } else { GUI.Box(new Rect(20, 200, 170, 270), "Currently Not in a room"); } if (GUI.Button(new Rect(20, 240, 160, 20), string3)) { muted = !muted; foreach (VRRig player in GorillaParent.instance.GetComponentsInChildren <VRRig>()) { if (player.GetComponent <Player>() != PhotonNetwork.LocalPlayer && player != null) { player.GetComponent <PhotonVoiceView>().SpeakerInUse.gameObject.GetComponent <AudioSource>().enabled = (!muted); if (!muted) { player.GetComponent <PhotonVoiceView>().SpeakerInUse.RestartPlayback(); } } } } if (muted) { string3 = "Mute ALL OTHERS <color=green>ON</color>"; } else { string3 = "Mute ALL OTHERS <color=red>OFF</color>"; } if (GUI.Button(new Rect(20, 270, 160, 20), string4)) { muteSelf = !muteSelf; PhotonVoiceNetwork.Instance.PrimaryRecorder.TransmitEnabled = !muteSelf; PhotonNetworkController.instance.GetComponent <Recorder>().TransmitEnabled = !MyPatcher.muteSelf; } if (muteSelf) { string4 = "Mute SELF <color=green>ON</color>"; } else { string4 = "Mute SELF <color=red>OFF</color>"; } GUI.Label(new Rect(25, 300, 160, 20), "SensX"); sensX = GUI.HorizontalSlider(new Rect(25, 330, 160, 30), sensX, 0.0F, 1.0F); GUI.Label(new Rect(25, 370, 160, 20), "SensY"); sensY = GUI.HorizontalSlider(new Rect(25, 400, 160, 30), sensY, 0.0F, 1.0F); if (GUI.Button(new Rect(20, 430, 160, 20), "Load Maps")) { GameObject Canyon = GameObject.Find("NetworkTriggers/Geo Trigger/EnteringCanyonGeo"); GameObject Cave = GameObject.Find("NetworkTriggers/Geo Trigger/EnteringCaveGeo"); GameObject Forest = GameObject.Find("NetworkTriggers/Geo Trigger/LeavingCosmetics"); Canyon.GetComponent <GorillaGeoHideShowTrigger>().OnBoxTriggered(); Forest.GetComponent <GorillaGeoHideShowTrigger>().OnBoxTriggered(); Cave.GetComponent <GorillaGeoHideShowTrigger>().OnBoxTriggered(); Forest.GetComponent <GorillaGeoHideShowTrigger>().OnBoxTriggered(); } } } }