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(); }
/* * // 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(); } }
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(); }