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);
}
}
}
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.
|
OylamalarOylama :![]()
Üyelerin oylama ortalaması (10 dışında) : Henüz Oylanmamış
Oylar: 0 |
Benzer Sayfalar
| Sayfalar | Yorumlar | Gönderen | Tarih |
| Oyun Anons Sistemi | 0 | TheRaskol | 30-08-2009 |
| Kral Seçimleri | 0 | Amesron | 18-08-2009 |
| Oyun Komutları | 0 | TheRaskol | 04-08-2009 |
| Oyun Ekranı | 0 | TheRaskol | 04-08-2009 |
| Oyun içi Şifre Değişimi | 0 | TheRaskol | 01-08-2009 |







