عاوز ابجريد اسكلايه الشادو بتاع النينجا علشان مش شغاله عندى
Handle.cs
سيرش علي
public static bool CanAttack
ضيف تحته
#region Clone Section
if (attacker.MyClones != null)
{
if (attacker.MyClones.ContainsKey(attacked.UID))
{
// attacker.Owner.Send(new Message("u Can't Kill Your Shadow Clone", System.Drawing.Color.Red, Message.TopLeft));
return false;
}
}
#endregion
الاسكله
#region ShadowClone
case 12090:
{
if (attacker.Owner.Map.ID == 6565 || attacker.Owner.Map.ID == 5555 || attacker.Owner.Map.ID == 2014)
{
Kernel.SendWorldMessage(new Message("Mr: " + attacker.Name + " You Can`t Use ThisSpell Here !!!", System.Drawing.Color.Red, Message.Talk), Program.Values);
return;
}
attacker.AttackPacket = null;
if (attacker.MyClones.Count > 0)
{
var clones = attacker.MyClones.Values.ToArray();
for (int i = 0; i < clones.Length; i++)
{
var item = clones[i];
if (item == null)
continue;
Data data = new Data(true);
data.UID = item.UID;
attacker.Stamina -= spell.UseStamina;
data.ID = Network.GamePackets.Data.RemoveEntity;
attacker.Owner.SendScreen(data);
attacker.MyClones[item.UID] = null;
}
attacker.MyClones.Clear();
}
else
{
if (CanUseSpell(spell, attacker.Owner))
{
PrepareSpell(spell, attacker.Owner);
SpellUse spellUse = new SpellUse(true);
spellUse.Attacker = attacker.UID;
spellUse.SpellID = spell.ID;
spellUse.SpellLevel = spell.Level;
spellUse.X = X;
spellUse.Y = Y;
attacker.AddClone(3);
if (spell.Level >= 4)
attacker.AddClone(10003);
foreach (var item in attacker.MyClones.Values)
spellUse.AddTarget(item, 0, attack);
attacker.Owner.SendScreen(spellUse, true);
}
}
break;
}
#endregion
GameState.cs
سيرش علي
private void ShutDown()
ضيف
if (Entity.MyClones.Count > 0)
{
foreach (var item in Entity.MyClones.Values)
{
Data data = new Data(true);
data.UID = item.UID;
data.ID = Network.GamePackets.Data.RemoveEntity;
item.MonsterInfo.SendScreen(data);
}
Entity.MyClones.Clear();
}
Entity.cs
ضيف
public void AddClone(ushort cloneid)
{
#region SpawnPacket(10014)
var Entity = new Entity(EntityFlag.Entity, true);
Entity.MonsterInfo = new MonsterInformation();
MonsterInformation.MonsterInformations.TryGetValue (9003, out Entity.MonsterInfo);
Entity.Owner = Owner;
Entity.MonsterInfo.Owner = Entity;
Entity.IsClone = true;
Entity._Name = "ShadowClone";
Entity.clan = Name;
Entity.SpawnPacket = new byte[8 + _Names + _Name.Length + 36];
Array.Copy(SpawnPacket, Entity.SpawnPacket, Entity.SpawnPacket.Length);
WriteStringList(new List<string>() { "ShadowClone", "", "", Name, "" }, _Names, Entity.SpawnPacket);
Entity.Mesh = Mesh;
Entity.Hitpoints = 1;
Entity.UID = Owner.Map.CloneCounter.Next;
Entity.GuildID = Entity.GuildRank = Entity.Action = 0;
Entity.CountryID = Enums.CountryID.Default;
Entity.StatusFlag = Entity.StatusFlag2 = Entity.StatusFlag3 = Entity.StatusFlag4 = 0;
Writer.Write((uint)0, Game.ConquerStructures.Equipment.Steed, Entity.SpawnPacket);
Writer.Write((uint)0, Game.ConquerStructures.Equipment.SteedPlus, Entity.SpawnPacket);
Writer.Write((uint)0, Game.ConquerStructures.Equipment.SteedColor, Entity.SpawnPacket);
Writer.Write((uint)0, Game.ConquerStructures.Equipment.MountArmor, Entity.SpawnPacket);
Writer.Write((uint)0, Game.ConquerStructures.Equipment.Wing, Entity.SpawnPacket);
Writer.Write((uint)0, Game.ConquerStructures.Equipment.WingPlus, Entity.SpawnPacket);
Entity.FlowerRank = 0;
Entity.NobilityRank = ConquerStructures.NobilityRank.Serf;
Entity.Class = Entity.FirstRebornClass = Entity.SecondRebornClass = Entity.JiangTalent = Entity.SubClassesActive = Entity.Reborn = Entity.Level = Entity.ServerID = 0;
Writer.Write((byte)2, 271, Entity.SpawnPacket);
Writer.Write(cloneid, 272, Entity.SpawnPacket);
Entity.OwnerUID = UID;
Entity.JiangActive = false;
Writer.Write((uint)0, 178, Entity.SpawnPacket);
Writer.Write((uint)0, 182, Entity.SpawnPacket);
Writer.Write((uint)0, 186, Entity.SpawnPacket);
Writer.Write((uint)0, _UnionExploits, Entity.SpawnPacket);
Writer.Write((uint)0, _UnionID, Entity.SpawnPacket);
Writer.Write((uint)0, _UnionRank, Entity.SpawnPacket);
Writer.Write((uint)0, _UnionType, Entity.SpawnPacket);
Writer.Write((uint)0, _MyTitle, Entity.SpawnPacket);
Writer.Write((uint)0, _MyTitleScore, Entity.SpawnPacket);
Writer.Write((uint)0, _MyWing, Entity.SpawnPacket);
Entity.MinAttack = MinAttack;
Entity.MaxAttack = Entity.MagicAttack = Math.Max(MinAttack, MaxAttack);
Entity.Appearance = Appearance;
Entity.MapID = Owner.Map.ID;
Entity.SendUpdates = true;
#endregion SpawnPacket(10014)
#region Pet(2035)
MsgPetInfo pet = new MsgPetInfo();
pet.UID = Entity.UID;
pet.PetID = cloneid;
pet.PetType = 2;
pet.Mesh = Mesh;
pet.AttackRange = (byte)AttackRange;
pet.X = X;
pet.Y = Y;
pet.Name = "ShadowClone";
Owner.Send(pet);
#endregion Pet(2035)
MyClones.Add(Entity.UID, Entity);
Owner.SendScreen(Entity.SpawnPacket, true);
Owner.SendScreenSpawn(Entity, true);
#region Data(10010)
Data data = new Data(true);
data.UID = Entity.UID;
data.Facing = Entity.Facing;
data.ID = Data.AddEntity;
data.wParam1 = Entity.X;
data.wParam2 = Entity.Y;
Owner.Send(data);
#endregion Data(10010)
}
سيرش
public void Die(
ضيف
if (MyClones.Count > 0)
{
foreach (var item in MyClones.Values)
{
Data data = new Data(true);
data.UID = item.UID;
data.ID = Network.GamePackets.Data.RemoveEntity;
item.MonsterInfo.SendScreen(data);
}
MyClones.Clear();
}
سيرش if (Companion)
ضيف
if (Owner.Entity.MyClones.ContainsKey(UID))
{
Owner.Entity.MyClones.Remove(UID);
return;
}
screen.cs
سيرش
foreach (GameState pClient in Kernel.GamePool.Values)
ضيف
if (pClient.Entity.MyClones.Count > 0)
{
foreach (var clone in pClient.Entity.MyClones.Values)
{
if (clone == null) continue;
if (Kernel.GetDistance(clone.X, clone.Y, Owner.Entity.X, Owner.Entity.Y) <= 18 && !Contains(clone.UID))
{
if (!clone.Dead)
clone.SendSpawn(Owner);
}
}
}
PacketHandler.cs
سيرشcase 2812:
موجود امسحه و حط ده مش موجود ضيفه
#region Clone Attack
case 2812:
{
var attackd = BitConverter.ReadUint(packet, 4);
var clonecount = packet[8];
for (int i = 0; i < clonecount; i++)
{
var attackr = BitConverter.ReadUint(packet, 9 + (i * 4));
if (client.Entity.MyClones.Count < clonecount)
return;
var attack = client.Entity.AttackPacket;
if (attack == null)
attack = new GamePackets.Attack(true);
attack.Attacker = attackr;
attack.Attacked = attackd;
if (client.Entity.MyClones.Count == 0)
return;
if (attackd == client.Entity.UID || client.Entity.MyClones.ContainsKey(attackd))
return;
KhaledMohamed.Database.SpellInformation MySpell = null;
try
{
MySpell = Database.SpellTable.GetSpell(client.Spells[12090].ID, client.Spells[12090].Level);
}
catch { MySpell = Database.SpellTable.GetSpell(12090, 4); }
Entity Clone = null;
if (client.Entity.MyClones.TryGetValue(attackr, out Clone))
{
Entity attacked = null;
SobNpcSpawn attackedsob = null;
if (client.Screen.TryGetValue(attackd, out attacked))
{
uint damage = 0;
var spell = Database.SpellTable.GetSpell(attack.MagicType, (byte)attack.MagicLevel);
if (spell == null)
spell = Database.SpellTable.GetSpell(12080, 0);
if (attack.AttackType == GamePackets.Attack.Melee)
{
if (Game.Attacking.Handle.CanAttack(client.Entity, attacked, spell, true))
{
damage = Game.Attacking.Calculate.Melee(client.Entity, attacked, spell, ref attack);
double power = (0.5);
damage = (uint)((double)damage * power / 8);
Game.Attacking.Handle.ReceiveAttack(Clone, attacked, attack, ref damage, spell);
attack.Damage = damage;
client.SendScreen(attack);
}
}
else
{
if (Game.Attacking.Handle.CanAttack(client.Entity, attacked, spell, false))
{
damage = Game.Attacking.Calculate.Magic(client.Entity, attacked, spell, ref attack);
double power = (0.5);
damage = (uint)((double)damage * power / 8);
Game.Attacking.Handle.ReceiveAttack(Clone, attacked, attack, ref damage, spell);
attack.Damage = damage;
client.SendScreen(attack);
}
}
SpellUse suse = new SpellUse(true);
suse.Attacker = Clone.UID;
suse.SpellID = spell.ID;
suse.SpellLevel = spell.Level;
suse.X = attacked.X;
suse.Y = attacked.Y;
suse.Effect1 = attack.Effect1;
suse.AddTarget(attacked, damage, attack);
client.SendScreen(suse, true);
if (client.Account.State == KhaledMohamed.Database.AccountTable.AccountState.P rojectManager)
client.Send(new Message("Clone Attack With Skill: " + spell.Name, System.Drawing.Color.CadetBlue, Message.Talk));
}
else if (client.Screen.TryGetSob(attackd, out attackedsob))
{
uint damage = 0;
var spell = Database.SpellTable.GetSpell(attack.MagicType, (byte)attack.MagicLevel);
if (spell == null)
spell = Database.SpellTable.GetSpell(12080, 0);
if (attack.AttackType == GamePackets.Attack.Melee)
{
if (Game.Attacking.Handle.CanAttack(client.Entity, attackedsob, null))
{
damage = Game.Attacking.Calculate.Melee(client.Entity, attackedsob, ref attack);
double power = ((MySpell.Power / 100.0) / 100.0);
damage = (uint)((double)damage * power);
Game.Attacking.Handle.ReceiveAttack(Clone, attackedsob, attack, damage, null);
attack.Damage = damage;
client.SendScreen(attack);
}
}
else
{
if (Game.Attacking.Handle.CanAttack(client.Entity, attackedsob, spell))
{
damage = Game.Attacking.Calculate.Magic(client.Entity, attackedsob, spell, ref attack);
double power = ((MySpell.Power / 100.0) / 100.0);
damage = (uint)((double)damage * power);
Game.Attacking.Handle.ReceiveAttack(Clone, attackedsob, attack, damage, spell);
attack.Damage = damage;
client.SendScreen(attack);
}
}
SpellUse suse = new SpellUse(true);
suse.Attacker = Clone.UID;
suse.SpellID = spell.ID;
suse.SpellLevel = spell.Level;
suse.X = attackedsob.X;
suse.Y = attackedsob.Y;
suse.Effect1 = attack.Effect1;
suse.AddTarget(attackedsob, damage, attack);
client.SendScreen(suse, true);
if (client.Account.State == KhaledMohamed.Database.AccountTable.AccountState.P rojectManager)
client.Send(new Message("Clone Attack With Skill: " + spell.Name, System.Drawing.Color.CadetBlue, Message.Talk));
}
}
}
break;
}
#endregion
سيرش
if (!client.Entity.HasMagicDefender)
تحت قفلة القوس بتاعت Else
{
}
ضيف
if (client.Entity.MyClones.Count > 0)
{
foreach (var clone in client.Entity.MyClones.Values)
{
clone.X = client.Entity.X;
clone.Y = client.Entity.Y;
}
}
تمام ادى اسم الاسكلايه
ShadowClone
قولى كل حاجه هتتحط فين بالظبط وتحت ايه يا ريدار
قولى كل حاجه هتتحط فين بالظبط وتحت ايه يا ريدار
Handle.cs
كل الي تحته هيتضاف في نفس الكلاس
لحد ما تلاقي كلمه تانيه و انا ملونهالك بالاحمر عشان تشوفها
كل كلاس انا كاتبه كل الي تحته هيتضاف فيه
ماشى ابحث على ايه واضيف الحجات دى تحتها
هتلاقي و الله في الموضوع لو كلفت نفسك و قراتش مكتوب سيرش = ابحث عن
اسف لو طريقة شرحي وحشه لو مفهمتش ان شاء الله حازم اول ما ييجي هيشرحلك بطريقه اسهل بس يا ريت توضح اذا كنت فهمت ولا لا
عفواً لايمكن عرض الروابط في الإرشيف
لا تسلم يا غالى كدا تمام التمام
واوعا تزعل انتا اخويا ولو زعلان حقق عليا
كدا فهمت تمام يا غالى تسلم وربنا يقويك على فعل الخير
لا تسلم يا غالى كدا تمام التمام
واوعا تزعل انتا اخويا ولو زعلان حقق عليا
حبيبي
ربنا ما يجيب زعل ابدا احنا كلنا اخوات هنا <3
تسلملى يارب يا غالى وربنا ميحرمنى منك ولا رجاله المنتدى المحترمه كلها الى هنا
تسلملى يارب يا غالى وربنا ميحرمنى منك ولا رجاله المنتدى المحترمه كلها الى هنا
حبيبي ربنا يخليك