|
|
المشاركات 79 |
+التقييم 0.03 |
تاريخ التسجيل May 2019 |
الاقامة |
نظام التشغيل |
رقم العضوية 158 |
case (ushort)Role.Flags.SpellIDDune.CliffCrusher:
case (ushort)Role.Flags.SpellIDDune.CliffCrusher:
{
MsgSpellAnimation MsgSpell = new MsgSpellAnimation(user.Player.UID
, 0, Attack.X, Attack.Y, ClientSpell.ID
, ClientSpell.Level, ClientSpell.UseSpellSoul);
Algoritms.InLineAlgorithm Line = new Algoritms.InLineAlgorithm(user.Player.X, Attack.X, user.Player.Y, Attack.Y, user.Map, DBSpell.Range, 0, ClientSpell.ID);
int width = 3;
uint Experience = 0;
foreach (Role.IMapObj target in user.Player.View.Roles(Role.MapObjectType.Monster))
{
if (Line.InLine(target.X, target.Y, width))
{
MsgMonster.MonsterRole attacked = target as MsgMonster.MonsterRole;
if (CheckAttack.CanAttackMonster.Verified(user, attacked, DBSpell))
{
MsgSpellAnimation.SpellObj AnimationObj;
Calculate.Physical.OnMonster(user.Player, attacked, DBSpell, out AnimationObj);
Experience += ReceiveAttack.Monster.Execute(stream, AnimationObj, user, attacked);
MsgSpell.Targets.Enqueue(AnimationObj);
}
}
}
foreach (Role.IMapObj targer in user.Player.View.Roles(Role.MapObjectType.Player))
{
if (Line.InLine(targer.X, targer.Y, 0))
{
var attacked = targer as Role.Player;
if (CheckAttack.CanAttackPlayer.Verified(user, attacked, DBSpell, true, Attack))
{
MsgSpellAnimation.SpellObj AnimationObj;
Calculate.Physical.OnPlayer(user.Player, attacked, DBSpell, out AnimationObj);
ReceiveAttack.Player.Execute(AnimationObj, user, attacked);
MsgSpell.Targets.Enqueue(AnimationObj);
}
}
else if (Line.InLine(targer.X, targer.Y, width))
{
var attacked = targer as Role.Player;
if (CheckAttack.CanAttackPlayer.Verified(user, attacked, DBSpell, true, Attack))
{
MsgSpellAnimation.SpellObj AnimationObj;
Calculate.Physical.OnPlayer(user.Player, attacked, DBSpell, out AnimationObj, false, 1);
ReceiveAttack.Player.Execute(AnimationObj, user, attacked);
MsgSpell.Targets.Enqueue(AnimationObj);
}
}
}
foreach (Role.IMapObj targer in user.Player.View.Roles(Role.MapObjectType.SobNpc))
{
if (Line.InLine(targer.X, targer.Y, width))
{
var attacked = targer as Role.SobNpc;
if (CheckAttack.CanAttackNpc.Verified(user, attacked, DBSpell))
{
MsgSpellAnimation.SpellObj AnimationObj;
Calculate.Physical.OnNpcs(user.Player, attacked, DBSpell, out AnimationObj);
Experience += ReceiveAttack.Npc.Execute(stream, AnimationObj, user, attacked);
MsgSpell.Targets.Enqueue(AnimationObj);
}
}
}
MsgSpell.SetStream(stream);
MsgSpell.Send(user);
if (!user.Player.FloorSpells.ContainsKey(ClientSpell.ID))
{
user.Player.FloorSpells.TryAdd(ClientSpell.ID, new FloorSpell.ClientFloorSpells(user.Player.UID, user.Player.X, user.Player.Y, ClientSpell.SoulLevel, DBSpell, user.Map));
}
var FloorItem = new FloorSpell(MsgItemPacket.CliffCrusher, Attack.X, Attack.Y, 23, DBSpell, 2000, 1000);
FloorItem.FloorPacket.m_X = Attack.X;
FloorItem.FloorPacket.m_Y = Attack.Y;
FloorItem.FloorPacket.OwnerX = user.Player.X;
FloorItem.FloorPacket.OwnerY = user.Player.Y;
FloorItem.FloorPacket.GuildID = user.Player.GuildID;
FloorItem.FloorPacket.ItemOwnerUID = user.Player.UID;
FloorItem.FloorPacket.m_Color = 14;
FloorItem.FloorPacket.FlowerType = 31;
FloorItem.FloorPacket.Name = "STR_TRAP_ID_@@" + (uint)FloorItem.FloorPacket.m_ID;
user.Player.FloorSpells[ClientSpell.ID].AddItem(FloorItem);
user.Player.View.SendView(stream.ItemPacketCreate(FloorItem.FloorPacket), true);
break;
}
case (ushort)Role.Flags.SpellIDDune.CliffCrusher:
{
var spellclient = ID.Value;
Queue<Role.FloorSpell> RemoveSpells = new Queue<Role.FloorSpell>();
using (var rec = new ServerSockets.RecycledPacket())
{
var stream = rec.GetStream();
var spells = spellclient.Spells.ToArray();
foreach (var spell in spells)
{
if (spellclient.CheckInvocke(Now, spell))
{
uint Experience = 0;
RemoveSpells.Enqueue(spell);
//if (Attack)
spellclient.X = spell.FloorPacket.m_X;
spellclient.Y = spell.FloorPacket.m_Y;
spellclient.CreateMsgSpell(0);
spellclient.SpellPacket.bomb = 1;
foreach (var obj in client.Player.View.Roles(Role.MapObjectType.Monster))
{
var monster = obj as Game.MsgMonster.MonsterRole;
if (Role.Core.GetDistance(obj.X, obj.Y, spell.FloorPacket.m_X, spell.FloorPacket.m_Y) <= 3)
{
if (Game.MsgServer.AttackHandler.CheckAttack.CanAttackMonster.Verified(client, monster, spell.DBSkill))
{
Game.MsgServer.MsgSpellAnimation.SpellObj AnimationObj;
Game.MsgServer.AttackHandler.Calculate.Physical.OnMonster(client.Player, monster, spell.DBSkill, out AnimationObj);
Experience += Game.MsgServer.AttackHandler.ReceiveAttack.Monster.Execute(stream, AnimationObj, client, monster);
spellclient.SpellPacket.Targets.Enqueue(AnimationObj);
}
}
}
foreach (var obj in client.Player.View.Roles(Role.MapObjectType.Player))
{
var target = obj as Role.Player;
if (Role.Core.GetDistance(obj.X, obj.Y, spell.FloorPacket.m_X, spell.FloorPacket.m_Y) <= 3)
{
if (Game.MsgServer.AttackHandler.CheckAttack.CanAttackPlayer.Verified(client, target, spell.DBSkill))
{
Game.MsgServer.MsgSpellAnimation.SpellObj AnimationObj;
Game.MsgServer.AttackHandler.Calculate.Physical.OnPlayer(client.Player, target, spell.DBSkill, out AnimationObj);
Game.MsgServer.AttackHandler.ReceiveAttack.Player.Execute(AnimationObj, client, target);
spellclient.SpellPacket.Targets.Enqueue(AnimationObj);
}
}
}
foreach (var obj in client.Player.View.Roles(Role.MapObjectType.SobNpc))
{
var target = obj as Role.SobNpc;
if (Role.Core.GetDistance(obj.X, obj.Y, spell.FloorPacket.m_X, spell.FloorPacket.m_Y) <= 3)
{
if (Game.MsgServer.AttackHandler.CheckAttack.CanAttackNpc.Verified(client, target, spell.DBSkill))
{
Game.MsgServer.MsgSpellAnimation.SpellObj AnimationObj;
Game.MsgServer.AttackHandler.Calculate.Physical.OnNpcs(client.Player, target, spell.DBSkill, out AnimationObj);
Experience += Game.MsgServer.AttackHandler.ReceiveAttack.Npc.Execute(stream, AnimationObj, client, target);
AnimationObj.Hit = 1;
spellclient.SpellPacket.Targets.Enqueue(AnimationObj);
}
}
}
spellclient.SendView(stream, client);
Game.MsgServer.AttackHandler.Updates.IncreaseExperience.Up(stream, client, Experience);
spell.FloorPacket.DropType = Game.MsgFloorItem.MsgDropID.RemoveEffect;
foreach (var user in spellclient.GMap.View.Roles(Role.MapObjectType.Player, spellclient.X, spellclient.Y,
p => Role.Core.GetDistance(p.X, p.Y, spellclient.X, spellclient.Y) <= 18))
user.Send(stream.ItemPacketCreate(spell.FloorPacket));
}
}
}
while (RemoveSpells.Count > 0)
spellclient.RemoveItem(RemoveSpells.Dequeue());
if (spellclient.Spells.Count == 0)
{
Role.FloorSpell.ClientFloorSpells FloorSpell;
client.Player.FloorSpells.TryRemove(spellclient.DBSkill.ID, out FloorSpell);
}
break;
}
| الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
| أدوات الموضوع | |
|
|
| الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
| كيفيه تغير اسم البوت في اسكل تيم وي تيم بك | Hassan Emprator | تطوير سيرفرات كونكر | 2 | 2022-04-06 04:51 PM |
| مشكلة بخصوص اسكل ShadowClone | OmarMimi5095 | مشكلات السيرفيرات كونكر الشخصيه | 1 | 2021-08-05 04:23 AM |
| اسكل اكس بي القرصان | Tefa | قسم الاقتراحات والابداع | 1 | 2020-02-23 01:20 PM |
| كود اسكل | Mostafa Shalby | مشكلات السيرفيرات كونكر الشخصيه | 1 | 2020-02-04 10:38 PM |