المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : تصليح اسكل ال CliffCrusher لشخصية Dune Wonder


Muhammad
2026-05-22, 01:38 PM
بسم الله الرحمن الرحيم

نبدأ علي طول من غير مقدمات ورغي كتير دي اسكل ال 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.Monste r))
{
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.CanAttac kMonster.Verified(client, monster, spell.DBSkill))
{
Game.MsgServer.MsgSpellAnimation.SpellObj AnimationObj;
Game.MsgServer.AttackHandler.Calculate.Physical.On Monster(client.Player, monster, spell.DBSkill, out AnimationObj);
Experience += Game.MsgServer.AttackHandler.ReceiveAttack.Monster .Execute(stream, AnimationObj, client, monster);

spellclient.SpellPacket.Targets.Enqueue(AnimationO bj);
}
}
}
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.CanAttac kPlayer.Verified(client, target, spell.DBSkill))
{
Game.MsgServer.MsgSpellAnimation.SpellObj AnimationObj;
Game.MsgServer.AttackHandler.Calculate.Physical.On Player(client.Player, target, spell.DBSkill, out AnimationObj);
Game.MsgServer.AttackHandler.ReceiveAttack.Player. Execute(AnimationObj, client, target);
spellclient.SpellPacket.Targets.Enqueue(AnimationO bj);
}
}
}
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.CanAttac kNpc.Verified(client, target, spell.DBSkill))
{
Game.MsgServer.MsgSpellAnimation.SpellObj AnimationObj;
Game.MsgServer.AttackHandler.Calculate.Physical.On Npcs(client.Player, target, spell.DBSkill, out AnimationObj);



Experience += Game.MsgServer.AttackHandler.ReceiveAttack.Npc.Exe cute(stream, AnimationObj, client, target);


AnimationObj.Hit = 1;

spellclient.SpellPacket.Targets.Enqueue(AnimationO bj);
}
}
}
spellclient.SendView(stream, client);

Game.MsgServer.AttackHandler.Updates.IncreaseExper ience.Up(stream, client, Experience);

spell.FloorPacket.DropType = Game.MsgFloorItem.MsgDropID.RemoveEffect;

foreach (var user in spellclient.GMap.View.Roles(Role.MapObjectType.Pla yer, spellclient.X, spellclient.Y,
p => Role.Core.GetDistance(p.X, p.Y, spellclient.X, spellclient.Y) <= 18))
user.Send(stream.ItemPacketCreate(spell.FloorPacke t));
}
}
}
while (RemoveSpells.Count > 0)
spellclient.RemoveItem(RemoveSpells.Dequeue());

if (spellclient.Spells.Count == 0)
{
Role.FloorSpell.ClientFloorSpells FloorSpell;
client.Player.FloorSpells.TryRemove(spellclient.DB Skill.ID, out FloorSpell);
}

break;
}

بس كدا تمام
هي مش كاملة اوي بصراحة هي في تكاية كدا بحيث تعمل اي مجهود في الحاجة انت كمان مانتقشش وخلاص



صورة


عفواً لايمكن عرض الروابط في الإرشيف (عفواً لايمكن عرض الروابط في الإرشيف)

Posidon
2026-05-23, 10:28 AM
3a4

ALz3em
2026-05-24, 10:49 PM
شكرا

A_H_M_E_D
2026-05-28, 07:47 AM
تسلم

MOO
2026-06-02, 07:01 AM
تسلم