/* * This file is part of the Unity networking tutorial by M2H (http://www.M2H.nl) * The original author of this code is Mike Hergaarden, even though some small parts * are copied from the Unity tutorials/manuals. * Feel free to use this code for your own projects, drop us a line if you made something exciting! */ #pragma strict var thisName : String = "Bugged name"; var rigidBodyView : NetworkView; var hp : int = 100; var theScoreBoard : scoreBoard; var localPlayer : boolean = false; var metalMaterial : Material; private var orgMaterial : Material; private var coloredUntill : float; private var invincible : boolean; function Awake(){ orgMaterial = renderer.material; theScoreBoard= GameObject.Find("Generalscripts").GetComponent(scoreBoard); } function OnNetworkInstantiate (msg : NetworkMessageInfo) { // This is our own player if (networkView.isMine) { //camera.main.enabled=false; localPlayer=true; networkView.RPC("setName", RPCMode.Others, thisName); Destroy(GameObject.Find("LevelCamera")); thisName=PlayerPrefs.GetString("playerName"); var gun : Machinegun = transform.Find("CrateCamera/Weapon").GetComponent("Machinegun"); gun.localPlayer=true; } // This is just some remote controlled player, don't execute direct // user input on this. DO enable multiplayer controll else { thisName="Remote"+Random.Range(1,10); name += thisName; transform.Find("CrateCamera").gameObject.active=false; var tmp2 : FPSWalker = GetComponent(FPSWalker); tmp2.enabled = false; var tmp5 : MouseLook = GetComponent(MouseLook); tmp5.enabled = false; networkView.RPC("askName", networkView.viewID.owner, Network.player); } } function OnGUI(){ if(localPlayer){ GUILayout.Label("HP: "+hp); } } @RPC function StartInvincibility(){ invincible=true; renderer.material=metalMaterial; yield new WaitForSeconds (10); renderer.material=orgMaterial; invincible=false; } function ApplyDamage (info : String[]){ var damage : float= parseFloat(info[0]); var killerName : String= info[1]; if(invincible){ return; } hp -= damage; if(hp<0){ theScoreBoard.LocalPlayerHasKilled(); networkView.RPC("Respawn",RPCMode.All); }else{ networkView.RPC("setHP",RPCMode.Others, hp); } } @RPC function setHP(newHP : int){ hp=newHP; } @RPC function Respawn(){ if (networkView.isMine) { theScoreBoard.LocalPlayerDied(); // Randomize starting location var spawnpoints : GameObject[] = GameObject.FindGameObjectsWithTag ("Spawnpoint"); var spawnpoint : Transform = spawnpoints[Random.Range(0, spawnpoints.length)].transform; transform.position=spawnpoint.position; transform.rotation=spawnpoint.rotation; } hp=100; } @RPC function setName(name : String){ thisName=name; } @RPC function askName(asker : NetworkPlayer){ networkView.RPC("setName", asker, thisName); }