| Muhammad |
2026-05-22 01:38 PM |
تصليح اسكل ال CliffCrusher لشخصية Dune Wonder
بسم الله الرحمن الرحيم
نبدأ علي طول من غير مقدمات ورغي كتير دي اسكل ال CliffCrusher للشخصية الجديدة في السورس اللي نزلته
دور علي
كود:
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;
}
خش في PoolProcesses
تحت ال case (ushort)Role.Flags.SpellIDDune.FinalStand:
كود:
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;
}
بس كدا تمام
هي مش كاملة اوي بصراحة هي في تكاية كدا بحيث تعمل اي مجهود في الحاجة انت كمان مانتقشش وخلاص
صورة
عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع
|