예제 #1
0
        public static void Respawn(BasePlayer player, bool newPos)
        {
            Player       p  = new Player(player);
            RespawnEvent re = new RespawnEvent(p);

            OnRespawn.OnNext(re);

            ++ServerPerformance.spawns;
            if (newPos)
            {
                BasePlayer.SpawnPoint spawnPoint = ServerMgr.FindSpawnPoint();
                player.transform.position = spawnPoint.pos;
                player.transform.rotation = spawnPoint.rot;
            }
            if (re.ChangePos && re.SpawnPos != Vector3.zero)
            {
                player.transform.position = re.SpawnPos;
            }
            player.supressSnapshots = true;
            player.StopSpectating();
            player.UpdateNetworkGroup();
            player.UpdatePlayerCollider(true, false);
            player.StartSleeping();
            player.metabolism.Reset();
            if (re.GiveDefault)
            {
                player.inventory.GiveDefaultItems();
            }

            player.SendFullSnapshot();
        }
예제 #2
0
        /*
         * // In future create an Event, allow people to adjust certain resources to give certain amounts!
         * public static void ResourceGatherMultiplier(int amount, BaseEntity receiver, ItemAmount itemAmt)
         * {
         *  int newAmt = amount;
         *  if (receiver.ToPlayer() != null)
         *      newAmt = (int)((double)amount * World.GetInstance().ResourceGatherMultiplier);
         *
         *  Item item = ItemManager.CreateByItemID(itemAmt.itemid, newAmt);
         *  receiver.GiveItem(item);
         * }*/

        public static void Respawn(BasePlayer player, bool newPos)
        {
            Player       p  = Server.GetPlayer(player);
            RespawnEvent re = new RespawnEvent(p);

            OnRespawn.OnNext(re);

            ++ServerPerformance.spawns;
            if (newPos)
            {
                BasePlayer.SpawnPoint spawnPoint = ServerMgr.FindSpawnPoint();
                player.transform.position = spawnPoint.pos;
                player.transform.rotation = spawnPoint.rot;
            }
            if (re.ChangePos && re.SpawnPos != Vector3.zero)
            {
                player.transform.position = re.SpawnPos;
            }
            player.SetPlayerFlag(BasePlayer.PlayerFlags.Wounded, false);
            player.SetPlayerFlag(BasePlayer.PlayerFlags.ReceivingSnapshot, true);
            player.SetFieldValue("lastTickTime", 0f);
            player.CancelInvoke("DieFromWounds");
            player.StopSpectating();
            player.UpdateNetworkGroup();
            player.UpdatePlayerCollider(true, false);
            player.StartSleeping();
            player.Invoke("LifeStoryStart", 0f);
            player.metabolism.Reset();

            if (re.StartHealth < Single.Epsilon)
            {
                player.InitializeHealth(player.StartHealth(), player.StartMaxHealth());
            }
            else
            {
                player.InitializeHealth(re.StartHealth, player.StartMaxHealth());
            }

            if (re.GiveDefault)
            {
                player.inventory.GiveDefaultItems();
            }

            if (re.WakeUp)
            {
                player.EndSleeping();
            }
        }
예제 #3
0
파일: Hooks.cs 프로젝트: gnerex2/Pluton
 public static void Respawn(BasePlayer player, bool newPos)
 {
     ++ServerPerformance.spawns;
     if (newPos)
     {
         BasePlayer.SpawnPoint spawnPoint = ServerMgr.FindSpawnPoint();
         player.transform.position = spawnPoint.pos;
         player.transform.rotation = spawnPoint.rot;
     }
     player.supressSnapshots = true;
     player.StopSpectating();
     player.UpdateNetworkGroup();
     player.UpdatePlayerCollider(true, false);
     player.StartSleeping();
     player.metabolism.Reset();
     player.inventory.GiveDefaultItems();
     player.SendFullSnapshot();
 }