|
#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;
MrHassan.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 == MrHassan.Database.AccountTable.AccountState.ProjectManager)
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 == MrHassan.Database.AccountTable.AccountState.ProjectManager)
client.Send(new Message("Clone Attack With Skill: " + spell.Name, System.Drawing.Color.CadetBlue, Message.Talk));
}
}
}
break;
}
#endregion
case 12090:
#region ShadowClone
case 12090:
{
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;
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
public void AddClone(ushort cloneid)
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)
}
#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;
mrhassan.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 == mrhassan.database.accounttable.accountstate.projectmanager)
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 == mrhassan.database.accounttable.accountstate.projectmanager)
client.send(new message("clone attack with skill: " + spell.name, system.drawing.color.cadetblue, message.talk));
}
}
}
break;
}
#endregion
case 12090:
#region shadowclone
case 12090:
{
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;
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
public void addclone(ushort cloneid)
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 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 AddClone(ushort cloneid)
public SafeDictionary<uint, Entity> MyClones = new SafeDictionary<uint, Entity>();
public bool IsClone = false;
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)
الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
|
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
مشكلة بخصوص اسكل ShadowClone | OmarMimi5095 | مشكلات السيرفيرات كونكر الشخصيه | 1 | 2021-08-05 04:23 AM |
بخصوص اسكلة ThunedCloud | Mostafa Shalby | مشكلات السيرفيرات كونكر الشخصيه | 13 | 2019-10-29 06:45 PM |
حل مشكله اسكلة ShadowClone | Tefa | تطوير سيرفرات كونكر | 2 | 2019-10-24 02:55 PM |
مشكله بخصوص ShadowClone | uncelsam | مشكلات السيرفيرات كونكر الشخصيه | 2 | 2019-10-23 08:06 PM |
مشكلة فى اسكلة ShadowClone | osama | مشكلات السيرفيرات كونكر الشخصيه | 2 | 2019-08-05 09:10 AM |