UO-Dev Arama


Yazar: Bilinmiyor
Tarih: 30-08-2009 15:47


Paylaş : Paylaş

Kod:
using System;
using Server;
using Server.Mobiles;
using Server.Network;

namespace Server.Costum
{
    public class Kral
    {
        public static Mobile TheKral = null;
        private const string m_Title = "[Oyun Birincisi][KRAL]";
        private static TimeSpan m_Delay = TimeSpan.FromSeconds(1.0);  //Gecikme payı    *Teorik olarak sadece birkez çalışıyor, server açıldığında girdiğiniz süre kadar sonra ilk seçim yapılır, bundan sonra aşağıdaki interval etkileyici roldedir*
        private static TimeSpan m_Interval = TimeSpan.FromMinutes(15.0);  //Seçim aralığı

        /// <summary>
        /// Her interval kadar sürede bir kral seçimi yapılır
        /// </summary>
        public static void Initialize()
        {
            Timer.DelayCall(m_Delay, m_Interval, new TimerCallback(SelectKralCallback));
        }

        private static void SelectKralCallback()
        {
            try
            {
                Console.WriteLine("Kral seçimleri başladı");
                RemoveOldKral();
                SelectNewKral();
            }
            catch
            {
                Console.WriteLine("Kral seçimlerinde bir hata oluştu");
            }
            finally
            {
                AnnounceNewKral();
            }
        }

        /// <summary>
        /// Eski kral silinir
        /// </summary>
        /// <returns></returns>
        private static void RemoveOldKral()
        {
            if (TheKral != null)
                TheKral.Title = null;
        }

        /// <summary>
        /// Online oyuncular arasından yeni bir kral seçilir
        /// </summary>
        /// <returns></returns>
        private static Mobile SelectNewKral()
        {
            Mobile m_Candidate = null;

            if (NetState.Instances.Count >= 10)
            {
                foreach (NetState n in NetState.Instances)
                {
                    if (n.Mobile != null)
                    {
                        m_Candidate = n.Mobile;

                        if (TheKral == null)
                        {
                            TheKral = m_Candidate;
                            continue;
                        }

                        if (m_Candidate.Title == m_Title)
                        {
                            m_Candidate.Title = null;
                        }

                        if (m_Candidate.NetState != null && m_Candidate.Kills > TheKral.Kills)
                        {
                            TheKral = m_Candidate;
                        }
                    }
                }
            }
            return m_Candidate;
        }

        /// <summary>
        /// Seçilen kralı anons eder
        /// </summary>
        private static void AnnounceNewKral()
        {
            if (TheKral != null)
            {
                Console.WriteLine("Krallık seçimi bitti, kral = {0}", TheKral.Name);
                World.Broadcast(1153, false, "Yeni kral seçildi, [{0}]", TheKral.Name);
                TheKral.Title = m_Title;

                DoEffect();
            }
            else
            {
                World.Broadcast(1153, false, "Yeni bir kral seçilemedi...");
                Console.WriteLine("Yeni bir kral seçilemedi");
            }
        }

        private static void DoEffect()
        {
            Effects.SendMovingParticles(new Entity(Serial.Zero, new Point3D(TheKral.X - 6, TheKral.Y - 6, TheKral.Z + 15), TheKral.Map), TheKral, 0x36D4, 7, 0, false, true, 1160, 0, 9502, 1, 0, (EffectLayer)255, 0x100);
            Effects.SendMovingParticles(new Entity(Serial.Zero, new Point3D(TheKral.X - 4, TheKral.Y - 6, TheKral.Z + 15), TheKral.Map), TheKral, 0x36D4, 7, 0, false, true, 1160, 0, 9502, 1, 0, (EffectLayer)255, 0x100);
            Effects.SendMovingParticles(new Entity(Serial.Zero, new Point3D(TheKral.X - 6, TheKral.Y - 4, TheKral.Z + 15), TheKral.Map), TheKral, 0x36D4, 7, 0, false, true, 1160, 0, 9502, 1, 0, (EffectLayer)255, 0x100);
        }
    }
}



Yorumlar

Henüz yorum yapılmamıştır.

Oylamalar

Oylama :
Üyelerin oylama ortalaması (10 dışında) : Henüz Oylanmamış   
Oylar: 0

Benzer Sayfalar

SayfalarYorumlarGönderenTarih
Oyun Anons Sistemi0TheRaskol30-08-2009
Kral Seçimleri0Amesron18-08-2009
Oyun Komutları0TheRaskol04-08-2009
Oyun Ekranı0TheRaskol04-08-2009
Oyun içi Şifre Değişimi0TheRaskol01-08-2009


Keywords:

ultima online, RunUO, ultima online download, sphere scripting, role play, uo grafik, second age ultima, uo loop, macroman, pvp server, server kurulumu, sphere, multool, ml mulls, 56b 55r 55i, htmlgumps, client 4x, client edit, sphere release, osi, rp server, sunucular, ghost mouse, inside uo, kingdom reborn, stygian abyss, uo nasıl oynanır, mondain's legacy, age of shadows, world build, grandmaster, ultima online pvp, player dosyaları, ultima online indir, frp game, RunUO 1.0.0, razor, uo rice, hue editör, skill tools, ultima online patch, axis, world build, verdata, verdata patcher, map editör, gump editör, mul patcher, aos mulls, scriptler, anim edit, anim publish, hues mul, hosting vps, event dialog, account sistemi, skill gain, static yapımı,