Returns a formatted string with details on this NetworkViewID.
public static int GetNetworkViewID(UnityEngine.NetworkViewID viewID) { string str = viewID.ToString(); int id; var sceneID = Regex.Match(str, @"SceneID\: ([0-9]+)"); if (sceneID.Success && Int32.TryParse(sceneID.Groups[1].Value, out id)) { return(id); } var allocatedID = Regex.Match(str, @"AllocatedID\: ([0-9]+)"); if (allocatedID.Success && Int32.TryParse(allocatedID.Groups[1].Value, out id)) { return(id); } return(0); }
void JoinPlayer(NetworkViewID newPlayerView, Vector3 pos, NetworkPlayer p) { // instantiate the prefab // and set some of its properties GameObject newPlayer = Instantiate(playerPrefab, pos, Quaternion.identity) as GameObject; newPlayer.GetComponent<NetworkView>().viewID = newPlayerView; newPlayer.tag = "Player"; // set the remote player's target to its current location // so that non-moving remote player don't move to the origin newPlayer.GetComponent<playerController>().target = pos; // most importantly, populate the NetworkPlayer // structure with the data received from the player // this will allow us to ignore updates from ourself newPlayer.GetComponent<playerController>().netPlayer = p; // the local GameObject for any player is unknown to // the server, so it can only send updates for NetworkPlayer // IDs - which we need to translate to a player's local // GameObject representation // to do this, we will add the player to the "players" Hashtable // for fast reverse-lookups for player updates // Hashtable structure is NetworkPlayer --> GameObject players.Add(p,newPlayer); if(Network.isClient) { if(p.ipAddress==LocalAddress) { Debug.Log("Server accepted my connection request, I am real player now: " + newPlayerView.ToString()); // because this is the local player, activate the character controller newPlayer.GetComponent<CharacterController>().enabled = true; newPlayer.GetComponent<playerController>().isLocalPlayer = true; // also, set the global localPlayerObject as a convenience variable // to easily find the local player GameObject to send position updates localPlayerObject = newPlayer; // also, now put us into the "playing" GameState GameState = (int)state.playing; // and finally, attach the main camera to me Camera.main.transform.parent = newPlayer.transform; Camera.main.transform.localPosition = new Vector3(0,1,0); } else { Debug.Log("Another player connected: " + newPlayerView.ToString()); // because this in not the local player, deactivate the character controller newPlayer.GetComponent<CharacterController>().enabled = false; newPlayer.GetComponent<playerController>().isLocalPlayer = false; } } }
public void JoinPlayer(NetworkViewID newPlayerView, Vector3 pos, NetworkPlayer netPlayer) { if(netPlayer.ipAddress==LocalAddress) { Debug.Log("Server responded to my connection request, instantiating player " + newPlayerView.ToString()); GameObject newPlayer = Instantiate(LocalPlayerPrefab, pos, Quaternion.identity) as GameObject; newPlayer.GetComponent<NetworkView>().viewID = newPlayerView; newPlayer.tag = "Player"; newPlayer.name = "Player " + newPlayerView.ToString(); newPlayer.GetComponent<playerController>().isLocalPlayer = true; newPlayer.GetComponent<playerController>().target = pos; newPlayer.GetComponent<playerController>().netPlayer = netPlayer; // populate a data structure with player information players.Add(new Player(netPlayer, newPlayer, newPlayerView)); // set the global PlayerObject as a convenience variable // to easily find the local player GameObject to send position updates PlayerObject = newPlayer; // attach the main camera Camera.main.transform.position = PlayerObject.transform.position + new Vector3(0,1F,0); Camera.main.transform.parent = PlayerObject.transform; // provide the playerObject to all scripts on the world object gameObject.BroadcastMessage("SetLocalPlayerObject",PlayerObject,SendMessageOptions.DontRequireReceiver); } else { Debug.Log("Another player connected: " + newPlayerView.ToString()); GameObject newPlayer = Instantiate(RemotePlayerPrefab, pos, Quaternion.identity) as GameObject; newPlayer.GetComponent<NetworkView>().viewID = newPlayerView; newPlayer.tag = "Player"; newPlayer.name = "Player " + newPlayerView.ToString(); // because this in not the local player, deactivate the character controller newPlayer.GetComponent<CharacterController>().enabled = false; newPlayer.GetComponent<playerController>().isLocalPlayer = false; newPlayer.GetComponent<playerController>().target = pos; newPlayer.GetComponent<playerController>().netPlayer = netPlayer; // populate a data structure with player information players.Add(new Player(netPlayer, newPlayer, newPlayerView)); } }
static bool NetworkViewID_ToString(JSVCall vc, int argc) { int len = argc; if (len == 0) { UnityEngine.NetworkViewID argThis = (UnityEngine.NetworkViewID)vc.csObj; JSApi.setStringS((int)JSApi.SetType.Rval, argThis.ToString()); JSMgr.changeJSObj(vc.jsObjID, argThis); } return(true); }
// Use this for initialization void OnNetworkInstantiate(NetworkMessageInfo info) { thisPlayerColor = Color.black; ownedPrisms = new List<ManipulatableScript>(); lookAT = new Vector3(0.0f, 0.0f, 1.0f); playerTransform = cameraTransform = this.transform; //deal with this when adding multiple player support //thisView = this.gameObject.GetComponent(typeof(NetworkView)) as NetworkView; netid = thisView.viewID; theID = netid.ToString(); char[] space = {' '}; int tempIndex = theID.IndexOfAny(space); theID = theID.Substring(tempIndex + 1); int tempID = int.Parse(theID); setID(tempID); //GameObject secondary = GameObject.FindGameObjectWithTag("Secondary"); //secondaryTemplate = secondary.GetComponent(typeof(SecondaryProjectileScript)) as SecondaryProjectileScript; GameObject camera = GameObject.FindGameObjectWithTag("MainCamera"); camera_script = camera.GetComponent(typeof(FPSKinectCameraScript)) as FPSKinectCameraScript; }
void LoginToServer(string user, string pass, NetworkPlayer player, NetworkViewID id) { if(Network.isServer) { GameManager.NetMessage(user + " joined the game"); //Logger.Write("Player " + player.ToString() + " : " + user + " - " +player.ipAddress + " trying to log in"); //Loop through all connected players and send details. networkView.RPC("RandomMessage", player, "Sending players through"); foreach(KeyValuePair<NetworkPlayer, GameObject> pair in Players) { if(pair.Key != player) { Debug.Log("Sending player data : " + pair.Value.ToString() + " to " + player.ToString() + " : " + id.ToString()); networkView.RPC("SpawnPlayer", player, pair.Value.networkView.viewID, pair.Value.transform.position, PlayerNames[pair.Key]); //networkView.RPC("RandomMessage", player, pair.Value.networkView.viewID.ToString() + "being sent through"); pair.Value.networkView.SetScope(player, true); pair.Value.networkView.RPC("ResetNetworkView", pair.Key); } } //Test for player //if(false) // return; Players[player] = null; PlayerNames[player] = user; if(!LoadPlayerState(id,player)) { SpawnPlayer(id, GetSpawnLocation(), user); } GameObject itemGO = ItemManager.CraftItem("WoodStick", player); Players[player].networkView.RPC("ItemAttach", player, itemGO.networkView.viewID); //Loop through all items int itemCount = 0; foreach(GameObject go in GameObject.FindGameObjectsWithTag("Item")) { Item item = (Item)go.GetComponent(typeof(Item)); if(!item.IsOwned) { ItemManager.Instance.networkView.RPC("SpawnItemRPC", player, item.name, go.transform.position, go.networkView.viewID); item.VerifyItemWithServer(player); itemCount++; } } //GameManager.SendMessage("Sent " + itemCount + " itemSpawns to " + PlayerNames[player], true); //Loop through all AI networkView.RPC("RandomMessage", player, "Sending AI through"); foreach(GameObject go in GameObject.FindGameObjectsWithTag("AI")) { go.networkView.SetScope(player, true); AIManager.Instance.SpawnEnemy(go, player); } } }
private void RemotePlayerJoin(NetworkPlayer _NetClient, NetworkViewID _NetViewID) { Player joiningPlayer = new Player(_NetClient, _NetViewID, PlayerInputDevice.E_PlayerInputInvalid); m_Players.Add(joiningPlayer); Debug.Log("Remote player joined"); Debug.Log("IP: "+ _NetClient.ipAddress + ", port:" + _NetClient.port + ", NetViewID: " + _NetViewID.ToString()); }
private void LocalPlayerJoin(NetworkPlayer _NetClient, NetworkViewID _NetViewID) { Player joiningPlayer = null; foreach(Player pendingPlayer in m_PendingLocalPlayers) { if (pendingPlayer.m_NetViewID == _NetViewID) { System.Diagnostics.Debug.Assert(joiningPlayer.m_NetClient == _NetClient); joiningPlayer = pendingPlayer; break; } } System.Diagnostics.Debug.Assert(joiningPlayer != null); if (joiningPlayer != null) { m_Players.Add(joiningPlayer); m_PendingLocalPlayers.Remove(joiningPlayer); Debug.Log("Local player joined (input: " + joiningPlayer.m_LocalPlayerInput.ToString() + ")"); Debug.Log("IP: "+ _NetClient.ipAddress + ", port:" + _NetClient.port + ", NetViewID: " + _NetViewID.ToString()); } else { Debug.Log("Local player couldn't join: missing from the local players pending list!"); Debug.Log("IP: "+ _NetClient.ipAddress + ", port:" + _NetClient.port + ", NetViewID: " + _NetViewID.ToString()); } }
public void PlayerJoinAuthority(NetworkPlayer _NetClient, NetworkViewID _NetViewID) { Debug.Log("Player join on Authority"); Debug.Log("IP: "+ _NetClient.ipAddress + ", port:" + _NetClient.port + ", NetViewID: " + _NetViewID.ToString()); //@TODO: any team balancing or sthg to do here? //Remove NPC AIs if needed? //@FIXME: handle case where server is full? //player join on server PlayerJoin(_NetClient, _NetViewID); //player join on clients networkView.RPC("PlayerJoin", RPCMode.Others, _NetClient, _NetViewID); }