| 
 
					المشاركة الأصلية كتبت بواسطة hassan emprator
					(المشاركة 20020)
				 
بسم الله الرحمن الرحيم 
 
اول حاجه هتفتح كلاس packethandler
 
وتضيف دا
 
	كود PHP: 
		
 
		
			
#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
 
 وابحث عن دا
 وتبدله بي دا
 
	كود PHP: 
		
 
		
			
#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
 
 بعدين هتبحث عن دا
 
	كود PHP: 
		
 
		
			
  public void addclone(ushort cloneid) 
 وتبدله كاااامل بي دا
 
	كود PHP: 
		
 
		
			
 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)
 
 }
 
 جرب وقولي 
 
هل تم الحل 
 |