ThunderCloud[Beta] نسخه تجريبيه [2d Normal]   
		
		
		Monstertable.cs
search
 
	كود PHP: 
	
		 
		
		
			
  public void Drop(Game.Entity killer) 
 
		 
		
		 
	 
 add
 
	كود PHP: 
	
		 
		
		
			
  if (killer.Name == "Thundercloud") return; 
 
		 
		
		 
	 
 search
 
	كود PHP: 
	
		 
		
		
			
 public static void Refinary(Entity attacker, Entity attacked, ref double Damage, ref Attack Packet, bool magic = false) 
 
		 
		
		 
	 
 add
 
	كود PHP: 
	
		 
		
		
			
if (attacker.Name == "Thundercloud") return; 
 
		 
		
		 
	 
 handle.cs 
search
 add
 
	كود PHP: 
	
		 
		
		
			
 if (attacker.Name != "Thundercloud")
                     {
                         if (Constants.PKForbiddenMaps.Contains(attacker.MapID))
                             return;
                     }
                     #region ThunderCloud
                     if (attacker.Name == "Thundercloud")
                     {
                         Console.WriteLine("Test 1");
                         if (Kernel.GamePool.ContainsKey(attacker.OwnerUID))
                         {
                             Console.WriteLine("Test 2");
                             var owner = Kernel.GamePool[attacker.OwnerUID];
                             var spell = Database.SpellTable.GetSpell(12840, owner);
                             var spell2 = Database.SpellTable.GetSpell(12970, owner);
                             byte percent = 0;
                             if (spell2 != null)
                             {
                                 if (spell2.Level == 0) percent = 130;
                                 if (spell2.Level == 1) percent = 140;
                                 if (spell2.Level == 2) percent = 150;
                                 if (spell2.Level == 3) percent = 160;
                                 if (spell2.Level == 4) percent = 170;
                                 if (spell2.Level == 5) percent = 180;
                                 if (spell2.Level == 6) percent = 200;
                             }
                             attack = new Attack(true);
                             attack.Attacker = attacker.UID;
                             attack.Attacked = attacked.UID;
                             attack.AttackType = Network.GamePackets.Attack.Kill;
                             attack.X = attacked.X;
                             attack.Y = attacked.Y;
                             attack.Damage = 1;
                             uint damage2 = (uint)(Calculate.Melee(owner.Player, attacked, ref attack) * spell.FirstDamage / 100);
                             if (attacker.SpawnPacket[50] == 128)//ThunderBolt
                                 damage2 = (uint)(damage2 * percent / 100);
                             SpellUse suse2 = new SpellUse(true);
                             suse2.Attacker = attacker.UID;
                             suse2.Attacker1 = attacked.UID;
                             suse2.SpellID = 13190;
                             suse2.X = attacked.X;
                             suse2.Y = attacked.Y;
                             suse2.AddTarget(attacked, damage2, attack);
                             attacker.MonsterInfo.SendScreen(suse2);
                             if (attacked.Hitpoints <= damage2)
                             {
                                 attacked.Die(attacker);
                                 attack.ResponseDamage = damage2;
                                 attacker.MonsterInfo.SendScreen(attack);
                             }
                             else
                             {
                                 attacked.Hitpoints -= damage2;
                             }
                             return;
                         }
                         else
                             return;
                     }
                     #endregion
                     #region ThunderCloudSight
                     if (attacker != null && Kernel.Maps[attacker.MapID] != null)
                     {
                         foreach (var th in Kernel.Maps[attacker.MapID].Entities.Values.Where(i => i.Name == "Thundercloud"))
                         {
                             if (th.OwnerUID == attacked.UID)
                             {
                                 if (attacker == null || Kernel.GetDistance(attacker.X, attacker.Y, th.X, th.Y) > th.MonsterInfo.AttackRange || attacker.Dead) break;
                                 th.MonsterInfo.InSight = attacker.UID;
                                 break;
                             }
                         }
                     }
                     #endregion 
 
		 
		
		 
	 
 search
 
	كود PHP: 
	
		 
		
		
			
 if (attacker.MonsterInfo.SpellID == 0) 
 
		 
		
		 
	 
 فوق
 
	كود PHP: 
	
		 
		
		
			
 uint damage = Calculate.MonsterDamage(attacker, attacked, ref attack, false); 
 
		 
		
		 
	 
 add
 
	كود PHP: 
	
		 
		
		
			
 #region ThunderCloud
                         if (attacker.Name == "Thundercloud")
                         {
                             if (Kernel.GamePool.ContainsKey(attacker.OwnerUID))
                             {
                                 var owner = Kernel.GamePool[attacker.OwnerUID];
                                 var spell = Database.SpellTable.GetSpell(12840, owner);
                                 var spell2 = Database.SpellTable.GetSpell(12970, owner);
                                 uint damage2 = (uint)(Calculate.Melee(owner.Player, attacked, ref attack, 0) * (spell.Level < 8 ? spell.FirstDamage : 50) / 100);
                                 if (attacker.SpawnPacket[50] == 128)
                                     damage2 = (uint)(damage2 * spell2.FirstDamage);
                                 SpellUse suse2 = new SpellUse(true);
                                 suse2.Attacker = attacker.UID;
                                 suse2.Attacker1 = attacked.UID;
                                 suse2.SpellID = 13190;
                                 suse2.X = attacked.X;
                                 suse2.Y = attacked.Y;
                                 suse2.AddTarget(attacked, damage2, attack);
                                 attacker.MonsterInfo.SendScreen(suse2);
                                 if (attacked.Hitpoints <= damage2)
                                 {
                                     attacked.Die(attacker);
                                     attack = new Attack(true);
                                     attack.Attacker = attacker.UID;
                                     attack.Attacked = attacked.UID;
                                     attack.AttackType = Network.GamePackets.Attack.Kill;
                                     attack.X = attacked.X;
                                     attack.Y = attacked.Y;
                                     attack.Damage = 1;
                                     attack.ResponseDamage = damage2;
                                     attacker.MonsterInfo.SendScreen(attack);
                                 }
                                 else
                                 {
                                     attacked.Hitpoints -= damage2;
                                 }
                                 return;
                             }
                             else
                                 return;
                         }
                         #endregion 
 
		 
		
		 
	 
 الاسكلتين
 
	كود PHP: 
	
		 
		
		
			
  #region ThunderCloud[Chaser]
                                 case 12840:
                                     {
                                         if (CanUseSpell(spell, attacker.Owner))
                                         {
                                             attacker.GreenEffect = 10;
                                             PrepareSpell(spell, attacker.Owner);
                                             SpellUse suse = new SpellUse(true);
                                             suse.Attacker = attacker.UID;
                                             suse.Attacker1 = attacker.UID;
                                             suse.SpellID = spell.ID;
                                             suse.SpellLevel = spell.Level;
                                             var cl = new WindWalker.ThunderCloud(attacker.Owner, attack.X, attack.Y);
                                             suse.AddTarget(cl.UID, 0, null);
                                             attacker.Owner.SendScreen(suse, true);
                                         }
                                         break;
                                     }
                                 #endregion
                                 #region ThunderBolt[Chaser]
                                 case 12970:
                                     {
                                         if (CanUseSpell(spell, attacker.Owner))
                                         {
                                             //attacker.GreenEffect = 10;
                                             PrepareSpell(spell, attacker.Owner);
                                             SpellUse suse = new SpellUse(true);
                                             suse.Attacker = attacker.UID;
                                             suse.Attacker1 = attacker.UID;
                                             suse.SpellID = spell.ID;
                                             suse.SpellLevel = spell.Level;
                                             suse.AddTarget(attacker.UID, 0, null);
                                             attacker.Owner.SendScreen(suse, true);
                                             foreach (var Cloud in attacker.Owner.Map.Clouds.Values.ToList())
                                             {
                                                 Cloud.ThunderBolt = true;
                                                 attacker.ThunderBolt = true;
                                                 //Cloud.DisposeCloud2(attacker.Owner);
                                                 if (Kernel.GetDistance(Cloud.X, Cloud.Y, attacker.Owner.Player.X, attacker.Owner.Player.Y) > 16) continue;
                                                 Cloud.SendSpawn2(attacker.Owner, false);
                                                 //ThunderCloud cl = new ThunderCloud(attacker.Owner, Cloud.X, Cloud.Y);
                                             }
 
                                         }
                                         break;
                                     }
                                 #endregion 
 
		 
		
		 
	 
 سيرش
 add
 
	كود PHP: 
	
		 
		
		
			
 #region ThunderCloud
             if (attacked.Name == "Thundercloud")
             {
                 if (spell != null && spell.ID != 0)
                 {
                     if (Kernel.Rate(75)) damage = 1;
                     else damage = 0;
                 }
                 else if (spell == null || spell.ID == 0)
                 {
                     damage = 1;
                 }
             }
             foreach (var th in Kernel.Maps[attacker.MapID].Entities.Values.Where(i => i.Name == "Thundercloud"))
             {
                 if (th.UID == attacked.UID)
                 {
                     if (attacker == null || Kernel.GetDistance(attacker.X, attacker.Y, th.X, th.Y) > th.MonsterInfo.AttackRange || attacker.Dead) break;
                     th.MonsterInfo.InSight = attacker.UID;
                     break;
                 }
             }
             #endregion 
 
		 
		
		 
	 
 search
 
	كود PHP: 
	
		 
		
		
			
attacked.Owner.LoadItemStats(); 
 
		 
		
		 
	 
 تحتها  
add
 
	كود PHP: 
	
		 
		
		
			
 #region ThunderCloud
             foreach (var th in Kernel.Maps[attacker.MapID].Entities.Values.Where(i => i.Name == "Thundercloud"))
             {
                 if (th.OwnerUID == attacker.UID)
                 {
                     if (attacked == null || Kernel.GetDistance(attacked.X, attacked.Y, th.X, th.Y) > th.MonsterInfo.AttackRange || attacked.Dead) break;
                     th.MonsterInfo.InSight = attacked.UID;
                     break;
                 }
             }
             #endregion 
 
		 
		
		 
	 
 search
 
	كود PHP: 
	
		 
		
		
			
public static bool CanAttack(Game.Entity attacker, Game.Entity attacked, Database.SpellInformation spell, bool melee) 
 
		 
		
		 
	 
 add
 
	كود PHP: 
	
		 
		
		
			
 #region ThunderCloud
             if (attacked.Name == "Thundercloud")
             {
                 if (attacked.OwnerUID == attacker.UID) return false;
                 if (!Constants.PKForbiddenMaps.Contains(attacker.MapID))
                 {
                     if (attacker.PKMode != Game.Enums.PKMode.PK &&
                      attacker.PKMode != Game.Enums.PKMode.Team)
                         return false;
                     else
                     {
                         attacker.AddFlag(Network.GamePackets.Update.Flags.FlashingName);
                         attacker.FlashingNameStamp = Time32.Now;
                         attacker.FlashingNameTime = 20;
 
                         return true;
                     }
                 }
                 else return false;
             }
             #endregion 
 
		 
		
		 
	 
 Entity.cs
search 
تحتها 
add
 
	كود PHP: 
	
		 
		
		
			
  bool _thbolt;
 
         public bool ThunderBolt
         {
             get
             {
                 return _thbolt;
             }
             set
             {
                 if (Cloud != null)
                     Cloud.ThunderBolt = value;
                 _thbolt = value;
             }
         }
         public WindWalker.ThunderCloud Cloud; 
 
		 
		
		 
	 
 search
 add جنبها
 search
 set 
لحد قفلت قوس بتعها بدلهم ب دي
 
	كود PHP: 
	
		 
		
		
			
 set
             {
                 if (EntityFlag == EntityFlag.Entity)
                     Update((byte)Network.GamePackets.Update.DataType.Hitpoints, value, true);
                 else if (EntityFlag == EntityFlag.Monster)
                 {
                     if (Name != "Thundercloud")
                     {
                         var update = new Update(true);
                         update.UID = UID;
                         update.Append(Network.GamePackets.Update.Hitpoints, value);
                         MonsterInfo.SendScreen(update);
                     }
                     else
                     {
                         var update = new Update(true);
                         update.UID = UID;
                         update.Append(Network.GamePackets.Update.Hitpoints, value / 400);
                         MonsterInfo.SendScreen(update);
                     }
                 }
                 _hitpoints = value;
                 if (Boss > 0 && Name != "Thundercloud")
                 {
                     uint key = (uint)(MaxHitpoints / 10000);
                     if (key != 0)
                         Writer.Write((ushort)(value / key), _Hitpoints, SpawnPacket);
                     else
                         Writer.Write((ushort)(value * MaxHitpoints / 1000 / 1.09), _Hitpoints, SpawnPacket);
                 }
                 else
                     Writer.Write((ushort)value, _Hitpoints, SpawnPacket);
                 /*   if (EntityFlag == EntityFlag.Entity)
                    {
                        if (Owner != null)
                        {
                            if (Owner.Team != null)
                            {
                                foreach (var Team in Owner.Team.Temates)
                                {
                                    AddToTeam addme = new AddToTeam();
                                    addme.UID = Owner.Entity.UID;
                                    addme.Hitpoints = (ushort)Owner.Entity.Hitpoints;
                                    addme.Mesh = Owner.Entity.Mesh;
                                    addme.Name = Owner.Entity.Name;
                                    addme.MaxHitpoints = (ushort)Owner.Entity.MaxHitpoints;
                                    Team.entry.Send(addme.ToArray());
                                }
                            }
                        }
                    }*/
             }
         } 
 
		 
		
		 
	 
 enmus.cs 
Map.cs
بعد فتحة القوس 
Add
 
	كود PHP: 
	
		 
		
		
			
public Dictionary<uint, WindWalker.ThunderCloud> Clouds = new Dictionary<uint, WindWalker.ThunderCloud>();
         public void AddCloud(WindWalker.ThunderCloud entity)
         {
             if (!this.Clouds.ContainsKey(entity.UID))
                 this.Clouds.Add(entity.UID, entity);
 
         } 
 
		 
		
		 
	 
 screen.cs
Search
  add
 
	كود PHP: 
	
		 
		
		
			
 #region ThunderCloud
                 foreach (var Cloud in client.Map.Clouds.Values)
                 {
                     if (Cloud == null) continue;
                     if (Kernel.GetDistance(Cloud.X, Cloud.Y, client.Player.X, client.Player.Y) > 16) continue;
                     if (DateTime.Now > Cloud.EndTime || Cloud.Owner == null)
                     {
                         Cloud.DisposeCloud(client);
                         return;
                     }
                 }
                 #endregion 
 
		 
		
		 
	 
 search
  Add
 
	كود PHP: 
	
		 
		
		
			
#region ThunderCloud
             foreach (var Cloud in client.Map.Clouds.Values)
             {
                 if (Cloud == null) continue;
                 if (Kernel.GetDistance(Cloud.X, Cloud.Y, client.Player.X, client.Player.Y) > 16) continue;
                 if (DateTime.Now > Cloud.EndTime || Cloud.Owner == null)
                 {
                     Cloud.DisposeCloud(client);
                     return;
                 }
                 #region ThunderCloud
                 if (!Cloud.Dead && Time32.Now > Cloud.LastCloudAttack.AddSeconds(Cloud.ThunderBolt == true ? 1 : 2))
                 {
                     if (client.Player.Cloud != null)
                     {
                         var spell = Database.SpellTable.GetSpell(12970, client);
                         SpellUse suse = new SpellUse(true);
                         suse.Attacker = client.Player.Cloud.UID;
                         suse.SpellID = 13190;
                         suse.SpellLevel = 0;
                         suse.X = client.Player.Cloud.X;
                         suse.Y = client.Player.Cloud.Y;
                         Entity attacked = null;
                         foreach (Interfaces.IMapObject _obj in client.Screen.Objects)
                         {
                             if (_obj == null) continue;
                             if (_obj.MapObjType == MapObjectType.Monster || _obj.MapObjType == MapObjectType.Entity)
                             {
                                 Cloud.LastCloudAttack = Time32.Now;
                                 attacked = _obj as Entity;
                                 if (Kernel.GetDistance(Cloud.X, Cloud.Y, attacked.X, attacked.Y) <= 15)
                                 {
                                     Attack attack = new Attack(true);
                                     if (Game.Attacking.Handle.CanAttack(Cloud.Owner.Player, attacked, spell, attack.AttackType == Attack.Melee))
                                     {
                                         attack.Effect1 = Attack.AttackEffects1.None;
                                         uint damage = Game.Attacking.Calculate.Melee(Cloud.Owner.Player, attacked, spell, ref attack);
                                         damage = (uint)(damage * 0.2);
                                         if (Cloud.ThunderBolt)
                                             damage += Game.Attacking.Calculate.Melee(Cloud.Owner.Player, attacked, Database.SpellTable.GetSpell(12970, client), ref attack);
                                         suse.Effect1 = attack.Effect1;
                                         Game.Attacking.Handle.ReceiveAttack(Cloud.Owner.Player, attacked, attack, ref damage, spell);
                                         suse.AddTarget(attacked, damage, attack);
                                         break;
                                     }
                                 }
                             }
                         }
                         client.SendScreen(suse, true);
                     }
                 }
                 #endregion
             }
             #endregion 
 
		 
		
		 
	 
 Search
 
	كود PHP: 
	
		 
		
		
			
public void Reload(Interfaces.IPacket spawnWith = null) 
 
		 
		
		 
	 
 Add
 
	كود PHP: 
	
		 
		
		
			
  #region ThunderCloud
                 foreach (var Cloud in Map.Clouds.Values)
                 {
                     if (Cloud == null) continue;
                     if (Kernel.GetDistance(Cloud.X, Cloud.Y, Owner.Player.X, Owner.Player.Y) > 16) continue;
                     Cloud.SendSpawn(Owner, false);
                 }
                 #endregion 
 
		 
		
		 
	 
 Data.cs
search
 
	كود PHP: 
	
		 
		
		
			
public Game.Enums.ConquerAngle Facing 
 
		 
		
		 
	 
 فوقه 
add
 
	كود PHP: 
	
		 
		
		
			
public ushort Thundercloud
         {
             get { return BitConverter.ToUInt16(Buffer, 26); }
             set { Writer.WriteUInt16(value, 26, Buffer); }
         } 
 
		 
		
		 
	 
 add
 
	كود PHP: 
	
		 
		
		
			
 public class ThunderCloud
         {
             public static Counter ThunderCloudCounter = new Counter(700000);
             byte[] Buffer;
             public ushort X = 0, Y = 0;
             public uint UID = 0;
             public uint OwnerID;
             public GameState Owner;
             public DateTime EndTime;
             public bool Dead = false;
             bool _bol;
             public bool ThunderBolt
             {
                 get { return _bol; }
                 set
                 {
                     if (value == true)
                         Writer.WriteUInt32(128, 50, Buffer);
                     else
                         Writer.WriteUInt32(0, 50, Buffer);
                     _bol = value;
                 }
             }
             public Time32 LastCloudAttack;
             public ThunderCloud(GameState client, ushort X, ushort Y)
             {
                 Owner = client;
                 Owner.Player.Cloud = this;
                 EndTime = DateTime.Now.AddSeconds(24);
                 this.X = X;
                 this.Y = Y;
                 OwnerID = client.Player.UID;
                 UID = ThunderCloudCounter.Next;
                 string _Name = "Thundercloud";
                 byte[] Packet_2035 = new byte[68 + 8];
                 Writer.WriteUInt16((ushort)(Packet_2035.Length - 8), 0, Packet_2035);
                 Writer.WriteUInt16(2035, 2, Packet_2035);
                 Writer.WriteUInt32(UID, 4, Packet_2035);
                 Writer.WriteUInt32(4264, 8, Packet_2035);
                 Packet_2035[12] = 3;
                 Writer.WriteUInt32(980, 16, Packet_2035);//mesh
                 Packet_2035[24] = 14;
                 Writer.WriteUInt32(22348141, 26, Packet_2035);
                 Writer.WriteString(_Name, 30, Packet_2035);
                 Buffer = new byte[8 + Game.Entity._Names + _Name.Length + 36];
                 Writer.WriteUInt16((ushort)(Buffer.Length - 8), 0, Buffer);
                 Writer.WriteUInt16(10014, 2, Buffer);
                 Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, Buffer);
                 Writer.WriteUInt32(980, 8, Buffer);//Mesh
                 Writer.WriteUInt32(UID, 12, Buffer);//Uid
                 var seconds = System.Math.Abs((EndTime - DateTime.Now).TotalSeconds);
                 Writer.WriteUInt32((uint)((seconds * 10000) / 24), 111, Buffer);//Time
                 Writer.WriteUInt32(140, 117, Buffer);//Level
                 Writer.WriteUInt32(X, 119, Buffer);
                 Writer.WriteUInt32(Y, 121, Buffer);
                 Writer.WriteUInt32(5, 125, Buffer);
                 Writer.WriteUInt32(client.Player.UID, 274, Buffer);//OwnerUID
                 Buffer[278] = 1;
                 Buffer[220] = 1;
                 Writer.WriteUInt16(768, 270, Buffer);
                 Writer.WriteStringList(new List<string>() { _Name, "", "", "", "", "", "" }, Game.Entity._Names, Buffer);
                 Network.GamePackets.Data d = new Data(true);
                 d.UID = UID;
                 d.ID = Data.SpawnEffect;
                 d.Facing = (Game.Enums.ConquerAngle)5;
                 client.Send(Packet_2035);
                 client.Send(Buffer);
                 client.Send(d);
                 client.Map.AddCloud(this);
             }
             public void DisposeCloud(GameState c)
             {
                 if (c != null)
                     if (c.Map.Clouds.ContainsKey(UID))
                     {
                         c.Map.Clouds.Remove(UID);
                         Data d = new Data(true);
                         d.UID = UID;
                         d.ID = Data.RemoveEntity;
                         c.SendScreen(d, true);
                         ThunderBolt = false;
                         if (Owner != null)
                             Owner.Player.ThunderBolt = false;
                         Dead = true;
                     }
             }
 
             public void SendSpawn(GameState Owner, bool p)
             {
                 var seconds = System.Math.Abs((EndTime - DateTime.Now).TotalSeconds);
                 if (seconds > 24) seconds = 0;
                 Writer.WriteUInt32((uint)((seconds * 10000) / 24), 111, Buffer);//Time
                 Owner.Send(Buffer);
             }
 
             public byte[] Refresh()
             {
                 var seconds = System.Math.Abs((EndTime - DateTime.Now).TotalSeconds);
                 if (seconds > 24) seconds = 0;
                 Writer.WriteUInt32((uint)((seconds * 10000) / 24), 111, Buffer);//Time
                 return Buffer;
             }
             public void SendSpawn2(GameState Owner, bool p)
             {
                 byte[] Packet_2035 = new byte[68 + 8];
                 var seconds = System.Math.Abs((EndTime - DateTime.Now).TotalSeconds);
                 if (seconds > 24) seconds = 0;
                 Writer.WriteUInt32((uint)((seconds * 10000) / 24), 111, Buffer);//Time
                 Writer.Write(128, 50, Buffer);//Flag4(128)
                 Writer.Write(128, 50, Packet_2035);//Flag4(128)
                 Owner.Send(Buffer);
             }
         } 
 
		 
		
		 
	 
 Search
 
	كود PHP: 
	
		 
		
		
			
 public void Init(bool onlylogin = false)
         {
             if (!onlylogin)
             { 
 
		 
		
		 
	 
 add
 
	كود PHP: 
	
		 
		
		
			
 ThunderCloud = new TimerRule<Entity>(ThunderCloudTimer, 250, ThreadPriority.Lowest); 
 
		 
		
		 
	 
 search
 
	كود PHP: 
	
		 
		
		
			
public void CreateTournaments() 
 
		 
		
		 
	 
 تحتها 
add
 
	كود PHP: 
	
		 
		
		
			
  public bool Register(Entity ThunderCloudd)
         {
             if (ThunderCloudd.Owner.TimerSubscriptions == null)
             {
                 ThunderCloudd.Owner.TimerSyncRoot = new object();
                 ThunderCloudd.Owner.TimerSubscriptions = new IDisposable[]
                 {
                     ThunderCloud.Add(ThunderCloudd)
                 };
                 return true;
             }
             return false;
         }
         public void Unregister(Entity Thundercloud)
         {
             if (Thundercloud.Owner == null || Thundercloud.Owner.TimerSubscriptions == null) return;
             lock (Thundercloud.Owner.TimerSyncRoot)
             {
                 if (Thundercloud.Owner.TimerSubscriptions != null)
                 {
                     foreach (var timer in Thundercloud.Owner.TimerSubscriptions)
                         timer.Dispose();
                     Thundercloud.Owner.TimerSubscriptions = null;
                 }
             }
         } 
 
		 
		
		 
	 
 search
 
	كود PHP: 
	
		 
		
		
			
private void CharactersCallback( 
 
		 
		
		 
	 
 فوقها او تحتها  
Add
 
	كود PHP: 
	
		 
		
		
			
 public TimerRule<Entity> ThunderCloud;
         private void ThunderCloudTimer(Entity ThunderCloud, int time)
         {
             if (ThunderCloud == null) return;
             if (!Kernel.Maps.ContainsKey(ThunderCloud.MapID))
             {
                 Kernel.Maps[ThunderCloud.MapID].RemoveEntity(ThunderCloud);
                 Data data = new Data(true);
                 data.UID = ThunderCloud.UID;
                 data.ID = Data.RemoveEntity;
                 ThunderCloud.MonsterInfo.SendScreen(data);
                 ThunderCloud.MonsterInfo.SendScreen(data);
                 foreach (var client in Kernel.GamePool.Values)
                 {
                     if (Kernel.GetDistance(ThunderCloud.X, ThunderCloud.Y, client.Player.X, client.Player.Y) > 16) continue;
                     client.RemoveScreenSpawn(ThunderCloud, true);
                 }
                 Unregister(ThunderCloud);
                 return;
             }
             if (Time32.Now >= ThunderCloud.ThunderCloudStamp.AddSeconds(1))
             {
                 ThunderCloud.ThunderCloudStamp = Time32.Now;
                 if (ThunderCloud.Hitpoints > 400)
                     ThunderCloud.Hitpoints -= 400;
                 else
                 {
                     Kernel.Maps[ThunderCloud.MapID].RemoveEntity(ThunderCloud);
                     Data data = new Data(true);
                     data.UID = ThunderCloud.UID;
                     data.ID = Data.RemoveEntity;
                     ThunderCloud.MonsterInfo.SendScreen(data);
                     ThunderCloud.MonsterInfo.SendScreen(data);
                     foreach (var client in Kernel.GamePool.Values)
                     {
                         if (Kernel.GetDistance(ThunderCloud.X, ThunderCloud.Y, client.Player.X, client.Player.Y) > 16) continue;
                         client.RemoveScreenSpawn(ThunderCloud, true);
                     }
                     Unregister(ThunderCloud);
                     return;
                 }
             }
             if ((ThunderCloud.SpawnPacket[50] == 0 && Time32.Now >= ThunderCloud.MonsterInfo.LastMove.AddMilliseconds(750)) || ThunderCloud.SpawnPacket[50] == 128)
             {
                 ThunderCloud.MonsterInfo.LastMove = Time32.Now;
                 if (ThunderCloud.MonsterInfo.InSight == 0)
                 {
                     foreach (var one in Kernel.Maps[ThunderCloud.MapID].Entities.Values.Where(i => Kernel.GetDistance(ThunderCloud.X, ThunderCloud.Y, i.X, i.Y) <= ThunderCloud.MonsterInfo.AttackRange))
                     {
                         if (one == null || one.Dead || one.MonsterInfo.Guard || one.Companion) continue;
                         ThunderCloud.MonsterInfo.InSight = one.UID;
                         Entity insight = null;
                         if (Kernel.Maps[ThunderCloud.MapID].Entities.ContainsKey(ThunderCloud.MonsterInfo.InSight))
                             insight = Kernel.Maps[ThunderCloud.MapID].Entities[ThunderCloud.MonsterInfo.InSight];
                         else if (Kernel.GamePool.ContainsKey(ThunderCloud.MonsterInfo.InSight))
                             insight = Kernel.GamePool[ThunderCloud.MonsterInfo.InSight].Player;
                         if (insight == null || insight.Dead || (insight.MonsterInfo != null && insight.MonsterInfo.Guard))
                         {
                             ThunderCloud.MonsterInfo.InSight = 0;
                             break;
                         }
                         new Game.Attacking.Handle(null, ThunderCloud, insight);
                         break;
                     }
                 }
                 else
                 {
                     Entity insight = null;
                     if (Kernel.Maps[ThunderCloud.MapID].Entities.ContainsKey(ThunderCloud.MonsterInfo.InSight))
                         insight = Kernel.Maps[ThunderCloud.MapID].Entities[ThunderCloud.MonsterInfo.InSight];
                     else if (Kernel.GamePool.ContainsKey(ThunderCloud.MonsterInfo.InSight))
                         insight = Kernel.GamePool[ThunderCloud.MonsterInfo.InSight].Player;
                     if (insight == null || insight.Dead || (insight.MonsterInfo != null && insight.MonsterInfo.Guard))
                     {
                         ThunderCloud.MonsterInfo.InSight = 0;
                         return;
                     }
                     new Game.Attacking.Handle(null, ThunderCloud, insight);
                 }
             }
 
         } 
 
		 
		
		 
	 
  
	 |