/* // 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 On_Respawn(BasePlayer player, Vector3 pos, Quaternion quat) { Player p = Server.GetPlayer(player); RespawnEvent re = new RespawnEvent(p, pos, quat); OnNext("On_Respawn", re); ++ServerPerformance.spawns; player.SetFieldValue("lastPositionValue", pos); player.transform.position = re.SpawnPos; player.transform.rotation = re.SpawnRot; player.SetPlayerFlag(BasePlayer.PlayerFlags.Wounded, false); player.SetPlayerFlag(BasePlayer.PlayerFlags.ReceivingSnapshot, true); player.SetFieldValue("lastTickTime", 0f); player.CancelInvoke("WoundingEnd"); 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(); player.SendNetworkUpdateImmediate(false); player.ClientRPCPlayer(null, player, "StartLoading"); player.SendFullSnapshot (); player.SetPlayerFlag (BasePlayer.PlayerFlags.ReceivingSnapshot, false); player.ClientRPCPlayer(null, player, "FinishLoading"); }