Пример #1
0
        private static void OnPlayerDeath(PlayerDeathEventArgs e)
        {
            PlayerMobile dead = e.Mobile as PlayerMobile;

            if (dead == null || dead.Deleted || dead.Alive)
            {
                return;
            }

            if (!DeathRegister.Contains(dead))
            {
                DeathRegister.Add(dead);
            }

            dead.Frozen = false;

            if (dead.LastKiller == null || dead.LastKiller is BaseCreature)
            {
                dead.SendMessage("Has sido noqueado");
                Timer.DelayCall(TimeSpan.FromSeconds(60), DeleteCorpseAndResurrect, dead);
            }
            else
            {
                dead.SendMessage("Has sido noqueado");
                Timer.DelayCall(TimeSpan.FromSeconds(60), DeleteCorpseAndResurrect, dead);
                // you use DeletePlayer instead DeleteCorpseAndResurrect for instant PVP Kill
            }
        }
Пример #2
0
        private static void DeathOnTick()
        {
            if (Processing)
            {
                return;
            }

            Processing = true;

            foreach (PlayerMobile dead in DeathRegister.ToArray())
            {
                if (dead.Deleted || dead.Alive)
                {
                    //if (dead.Corpse != null)
                    //dead.Corpse.Delete();

                    DeathRegister.Remove(dead);
                    continue;
                }

                Corpse corpse = dead.Corpse as Corpse;

                if (corpse != null && !corpse.Deleted && corpse.Carved && DeleteOnCorpseCarved)
                {
                    dead.SendMessage("Alguien talló tus restos en pedazos pequeños e irreconocibles. Estás muerto.");
                    Timer.DelayCall(TimeSpan.FromSeconds(5), DeletePlayer, dead);
                    DeathRegister.Remove(dead);
                }
            }

            Processing = false;
        }