Advertisement
Guest User

fdsfsd

a guest
Mar 21st, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 17.07 KB | None | 0 0
  1. server Managment
  2.  
  3. case (ushort)SpellID.BladeTempest:
  4.                                 {
  5.                                     var spellclient = ID.Value;
  6.                                     Queue<FloorSpell> RemoveSpells = new Queue<FloorSpell>();
  7.  
  8.                                     foreach (var spell in spellclient.Spells.GetValues())
  9.                                     {
  10.                                         if (spellclient.CheckInvocke(Now, spell))
  11.                                         {
  12.                                             RemoveSpells.Enqueue(spell);
  13.                                             //spellclient.CreateMsgSpell(100);
  14.                                             spellclient.SpellPacket = new Network.Messages.MsgMagicEffect(spellclient.UID, 100, spellclient.X, spellclient.Y, 14250, spellclient.DBSkill.Level, spellclient.LevelHu, 1);
  15.                                             uint Experience = 0;
  16.  
  17.                                             List<Structures.AttackHandler.Algoritms.InLineAlgorithm.coords> coord = Structures.AttackHandler.Algoritms.MoveCoords.CheckBladeTeampsCoords(spell.FloorPacket.X, spell.FloorPacket.Y, spell.FloorPacket.OwnerX, spell.FloorPacket.OwnerY, ID.Value.GMap);
  18.                                             foreach (var obj in client.Screen.Where<Character>(p => p.MapObjType == IO.MapObjectType.Monster))
  19.                                             {
  20.                                                 var monster = obj as Character;
  21.                                                 if (monster == null) continue;
  22.                                                 if (CoMath.GetDistance(spell.FloorPacket.OwnerX, spell.FloorPacket.OwnerY, monster.X, monster.Y) <= spell.DBSkill.Range)
  23.                                                 {
  24.                                                     if (Structures.AttackHandler.Algoritms.MoveCoords.InRange(monster.X, monster.Y, 1, coord))
  25.                                                     {
  26.                                                         if (Structures.AttackHandler.CheckAttack.CanAttackMonster.Verified(client, monster, spell.DBSkill))
  27.                                                         {
  28.                                                             Structures.AttackHandler.Calculate.Physical.OnMonster(client.Character, monster, spell.DBSkill, out MsgMagicEffect.SpellObj SpellObj);
  29.                                                             Experience += Structures.AttackHandler.ReceiveAttack.Monster.Execute(SpellObj, client, monster);
  30.                                                             SpellObj.Damage = Structures.AttackHandler.Calculate.Base.CalculateSoul(SpellObj.Damage, spellclient.LevelHu);
  31.                                                             spellclient.SpellPacket.Targets.Enqueue(SpellObj);
  32.                                                         }
  33.                                                     }
  34.                                                 }
  35.                                             }
  36.                                             foreach (var obj in client.Screen.Where<Character>(p => p.MapObjType == IO.MapObjectType.Player))
  37.                                             {
  38.                                                 var target = obj as Character;
  39.                                                 if (target == null) continue;
  40.                                                 if (CoMath.GetDistance(spell.FloorPacket.OwnerX, spell.FloorPacket.OwnerY, target.X, target.Y) <= spell.DBSkill.Range)
  41.                                                 {
  42.                                                     if (Structures.AttackHandler.Algoritms.MoveCoords.InRange(target.X, target.Y, 1, coord))
  43.                                                     {
  44.                                                         if (Structures.AttackHandler.CheckAttack.CanAttackPlayer.Verified(client, target, spell.DBSkill))
  45.                                                         {
  46.                                                             Structures.AttackHandler.Calculate.Physical.OnPlayer(client.Character, target, spell.DBSkill, out MsgMagicEffect.SpellObj SpellObj, false);
  47.                                                             Structures.AttackHandler.ReceiveAttack.Player.Execute(SpellObj, client, target);
  48.                                                             SpellObj.Damage = Structures.AttackHandler.Calculate.Base.CalculateSoul(SpellObj.Damage, spellclient.LevelHu);
  49.                                                             spellclient.SpellPacket.Targets.Enqueue(SpellObj);
  50.                                                         }
  51.                                                     }
  52.                                                 }
  53.                                             }
  54.                                             foreach (var obj in client.Screen.Where<NpcsHandler.NpcInfoEx>(p => p.MapObjType == IO.MapObjectType.SobNpc))
  55.                                             {
  56.                                                 var target = obj as NpcsHandler.NpcInfoEx;
  57.                                                 if (target == null) continue;
  58.                                                 if (CoMath.GetDistance(spell.FloorPacket.OwnerX, spell.FloorPacket.OwnerY, target.X, target.Y) <= spell.DBSkill.Range)
  59.                                                 {
  60.                                                     if (Structures.AttackHandler.Algoritms.MoveCoords.InRange(target.X, target.Y, 1, coord))
  61.                                                     {
  62.                                                         if (Structures.AttackHandler.CheckAttack.CanAttackNpc.Verified(client, target, spell.DBSkill))
  63.                                                         {
  64.                                                             Structures.AttackHandler.Calculate.Physical.OnNpcs(client.Character, target, spell.DBSkill, out MsgMagicEffect.SpellObj SpellObj);
  65.                                                             Experience += Structures.AttackHandler.ReceiveAttack.Npc.Execute(SpellObj, client, target);
  66.                                                             SpellObj.Damage = Structures.AttackHandler.Calculate.Base.CalculateSoul(SpellObj.Damage, spellclient.LevelHu);
  67.                                                             spellclient.SpellPacket.Targets.Enqueue(SpellObj);
  68.                                                         }
  69.                                                     }
  70.                                                 }
  71.                                             }
  72.                                             ActionQuery action = new ActionQuery()
  73.                                             {
  74.                                                 ObjId = spell.FloorPacket.UID,
  75.                                                 TargetPositionX = spell.FloorPacket.X,
  76.                                                 TargetPositionY = spell.FloorPacket.Y,
  77.                                                 wParam1 = spell.FloorPacket.X,
  78.                                                 wParam2 = spell.FloorPacket.Y,
  79.                                                 Type = ActionType.RemoveTrap
  80.                                             };
  81.  
  82.                                             client.SendScreen(new MsgAction(action), true);
  83.                                             spell.FloorPacket.DropType = MsgDropID.RemoveEffect;
  84.  
  85.                                             client.Send(new MsgAction(action));
  86.                                             client.SendScreen(new MsgMapItem(spell.FloorPacket), true);
  87.  
  88.                                             spellclient.SpellPacket.Send(client);
  89.                                         }
  90.                                     }
  91.                                     while (RemoveSpells.Count > 0)
  92.                                         spellclient.RemoveItem(RemoveSpells.Dequeue());
  93.  
  94.                                     if (spellclient.Spells.Count == 0)
  95.                                     {
  96.                                         FloorSpell.ClientFloorSpells FloorSpell;
  97.                                         client.Character.FloorSpells.TryRemove(spellclient.DBSkill.ID, out FloorSpell);
  98.                                     }
  99.                                     break;
  100.                                 }
  101.  
  102.  
  103. Class Move Line
  104.  
  105.  
  106.  
  107.  
  108. public class MoveLine
  109.     {
  110.         public unsafe static void Execute(Core.Client user, InteractQuery Attack, Dictionary<ushort, Database.MagicType.Magic> DBSpells)
  111.         {
  112.             Database.MagicType.Magic DBSpell;
  113.             MsgMagicInfo ClientSpell;
  114.             if (CheckAttack.CanUseSpell.Verified(Attack, user, DBSpells, out ClientSpell, out DBSpell))
  115.             {
  116.                 var MsgSpell = new MsgMagicEffect(user.Character.UID, 0, Attack.X, Attack.Y, ClientSpell.ID, ClientSpell.Level, ClientSpell.UseSpellSoul, (uint)(user.MySpells.ClientSpells.ContainsKey(14250) ? 1 : 0));
  117.  
  118.                 List<Algoritms.InLineAlgorithm.coords> coord = Algoritms.MoveCoords.CheckBladeTeampsCoords(user.Character.X, user.Character.Y, Attack.X
  119.                         , Attack.Y, user.Map);
  120.                 if (coord == null || coord.Count == 0) return;
  121.  
  122.                 if (user.MySpells.ClientSpells.ContainsKey(14250))
  123.                 {
  124.  
  125.                     if (!user.Character.FloorSpells.ContainsKey(ClientSpell.ID))
  126.                         user.Character.FloorSpells.TryAdd(ClientSpell.ID, new FloorSpell.ClientFloorSpells(user.Character.UID, Attack.X, Attack.Y, ClientSpell.SoulLevel, DBSpell, user.Map));
  127.                     var FloorItem = new FloorSpell(MsgMapItem.TideTrap, (ushort)user.Character.X, (ushort)user.Character.Y, 14, DBSpell, 2000);
  128.  
  129.                     FloorItem.FloorPacket.ItemOwnerUID = user.Character.UID;
  130.                     FloorItem.FloorPacket.OwnerX = Attack.X;
  131.                     FloorItem.FloorPacket.OwnerY = Attack.Y;
  132.                     user.Character.FloorSpells[ClientSpell.ID].AddItem(FloorItem);
  133.  
  134.                     user.SendScreen(new MsgMapItem(FloorItem.FloorPacket), true);
  135.                 }
  136.                 else
  137.                 {
  138.                     int i = 0;
  139.                     for (i = 0; i < coord.Count; i++)
  140.                     {
  141.                         if (user.Map.Floor[coord[i].X, coord[i].Y, IO.MapObjectType.Player])
  142.                         //&& !user.Entity.ThroughGate(coord[i].X, coord[i].Y))
  143.                         {
  144.                             user.Character.X = (ushort)coord[i].X;
  145.                             user.Character.Y = (ushort)coord[i].Y;
  146.                         }
  147.                         else
  148.                         {
  149.                             break;
  150.                         }
  151.                     }
  152.                     //if (!CheckAttack.CheckFloors.CheckGuildWar(user, coord[coord.Count - 1].X, coord[coord.Count - 1].Y)) Soon For GuildWar
  153.                     //{
  154.                     //    return;
  155.                     //}
  156.                 }
  157.                 MsgSpell.X = user.Character.X;
  158.                 MsgSpell.Y = user.Character.Y;
  159.                 if (!user.Map.Floor[user.Character.X, user.Character.Y, IO.MapObjectType.Player, null])
  160.                     return;
  161.                 uint Experience = 0;
  162.                 foreach (IO.IMapObject target in user.Screen.Where<Core.Character>(m => m.MapObjType == IO.MapObjectType.Monster))
  163.                 {
  164.                     var attacked = target as Core.Character;
  165.                     if (attacked == null) continue;
  166.                     if (Calculate.Base.GetDistance(Attack.X, Attack.Y, attacked.X, attacked.Y) <= DBSpell.Range)
  167.                     {
  168.                         if (CheckAttack.CanAttackMonster.Verified(user, attacked, DBSpell))
  169.                         {
  170.                             if (!Algoritms.MoveCoords.InRange(attacked.X, attacked.Y, 1, coord))
  171.                                 continue;
  172.                             Calculate.Physical.OnMonster(user.Character, attacked, DBSpell, out MsgMagicEffect.SpellObj SpellObj);
  173.                             SpellObj.Damage = Calculate.Base.CalculateSoul(SpellObj.Damage, ClientSpell.UseSpellSoul);
  174.                             Experience += ReceiveAttack.Monster.Execute(SpellObj, user, attacked);
  175.                             MsgSpell.Targets.Enqueue(SpellObj);
  176.                             if (target.Alive)
  177.                             {
  178.                                 if (Core.CoMath.Rate(35))
  179.                                 {
  180.                                     attacked.BlackSpot = true;
  181.                                     attacked.Stamp_BlackSpot = ConquerBoxLib.Extensions.Time32.Now.AddSeconds((int)DBSpell.Duration);
  182.  
  183.                                     user.SendScreen(new MsgDeadMark(true, attacked.UID), true);
  184.                                 }
  185.                             }
  186.                         }
  187.                     }
  188.                 }
  189.                 foreach (IO.IMapObject target in user.Screen.Where<Core.Character>(p => p.MapObjType == IO.MapObjectType.Player))
  190.                 {
  191.                     var attacked = target as Core.Character;
  192.                     if (attacked == null) continue;
  193.                     if (Calculate.Base.GetDistance(Attack.X, Attack.Y, attacked.X, attacked.Y) <= 6)
  194.                     {
  195.                         if (!Algoritms.MoveCoords.InRange(attacked.X, attacked.Y, 1, coord))
  196.                             continue;
  197.                         if (CheckAttack.CanAttackPlayer.Verified(user, attacked, DBSpell))
  198.                         {
  199.                             Calculate.Physical.OnPlayer(user.Character, attacked, DBSpell, out MsgMagicEffect.SpellObj SpellObj);
  200.                             SpellObj.Damage = Calculate.Base.CalculateSoul(SpellObj.Damage, ClientSpell.UseSpellSoul);
  201.                             ReceiveAttack.Player.Execute(SpellObj, user, attacked);
  202.                             MsgSpell.Targets.Enqueue(SpellObj);
  203.                             if (attacked.Alive)
  204.                             {
  205.                                 if (Core.CoMath.Rate(35))
  206.                                 {
  207.                                     attacked.BlackSpot = true;
  208.                                     attacked.Stamp_BlackSpot = ConquerBoxLib.Extensions.Time32.Now.AddSeconds((int)DBSpell.Duration);
  209.  
  210.                                     user.SendScreen(new MsgDeadMark(true, attacked.UID), true);
  211.                                 }
  212.                             }
  213.                         }
  214.                     }
  215.  
  216.                 }
  217.                 foreach (IO.IMapObject target in user.Screen.Where<NpcsHandler.NpcInfoEx>(p => p.MapObjType == IO.MapObjectType.SobNpc))
  218.                 {
  219.                     var attackedsob = target as NpcsHandler.NpcInfoEx;
  220.                     if (attackedsob == null) continue;
  221.                     if (Calculate.Base.GetDistance(Attack.X, Attack.Y, attackedsob.X, attackedsob.Y) <= 6)
  222.                     {
  223.                         if (CheckAttack.CanAttackNpc.Verified(user, attackedsob, DBSpell))
  224.                         {
  225.                             if (!Algoritms.MoveCoords.InRange(attackedsob.X, attackedsob.Y, 1, coord))
  226.                                 continue;
  227.                             Calculate.Physical.OnNpcs(user.Character, attackedsob, DBSpell, out MsgMagicEffect.SpellObj SpellObj);
  228.                             SpellObj.Damage = Calculate.Base.CalculateSoul(SpellObj.Damage, ClientSpell.UseSpellSoul);
  229.                             Experience += ReceiveAttack.Npc.Execute(SpellObj, user, attackedsob);
  230.                             MsgSpell.Targets.Enqueue(SpellObj);
  231.                         }
  232.                     }
  233.                 }
  234.                 Updates.IncreaseExperience.Up(user, Experience);
  235.                 Updates.UpdateSpell.CheckUpdate(user, Attack, Experience, DBSpells);
  236.                 MsgSpell.SendRole(user);
  237.             }
  238.         }
  239.     }
  240.  
  241.  
  242. MsgMagicEffect
  243.  
  244.  
  245. Send(Core.Character monster) monster dont forgeetttttttttttt
  246.  
  247.  
  248. public void Send(Core.Character monster)
  249.         {
  250.             var f = this;
  251.  
  252.             if (Targets.Count < 30)
  253.             {
  254.                 //ToArray(Targets, monster.Owner, false);
  255.                 monster.MonsterInfo.SendScreen(new MsgMagicEffect(Targets, f));
  256.             }
  257.             else
  258.             {
  259.                 Dictionary<uint, Queue<SpellObj>> BigArray = new Dictionary<uint, Queue<SpellObj>>();
  260.                 var TargetsArray = Targets.ToArray();
  261.                 uint count = 0;
  262.                 for (int x = 0; x < TargetsArray.Length; x++)
  263.                 {
  264.                     if (x % 30 == 0)
  265.                     {
  266.                         count++;
  267.                         BigArray.Add(count, new Queue<SpellObj>());
  268.                     }
  269.                     BigArray[count].Enqueue(TargetsArray[x]);
  270.                 }
  271.                 foreach (var small_array in BigArray.Values)
  272.                 {
  273.                     //ToArray(small_array, monster.Owner, false);
  274.                     monster.Owner.Send(new MsgMagicEffect(small_array, f));
  275.                 }
  276.             }
  277.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement