عرض مشاركة واحدة
قديم 2019-10-30, 04:57 PM
المشاركة 3
Mostafa Shalby
.:: عضو نشيط ::.
  • غير متواجد
افتراضي رد: بخصوص اسكلة ShadowClone


بسم الله الرحمن الرحيم


اول حاجه هتفتح كلاس packethandler

وتضيف دا


كود:
#region clone attack
                
case 2812:
                    {
                        var 
attackd bitconverter.readuint(packet4);
                        var 
clonecount packet[8];
                        for (
int i 0clonecounti++)
                        {
                            var 
attackr bitconverter.readuint(packet+ (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].idclient.spells[12090].level);
                            }
                            catch { 
myspell database.spelltable.getspell(120904); }
                            
entity clone = null;
                            if (
client.entity.myclones.trygetvalue(attackrout clone))
                            {
                                
entity attacked null;
                                
sobnpcspawn attackedsob null;
                                if (
client.screen.trygetvalue(attackdout attacked))
                                {
                                    
uint damage 0;
                                    var 
spell database.spelltable.getspell(attack.magictype, (byte)attack.magiclevel);
                                    if (
spell == null)
                                        
spell database.spelltable.getspell(120800);
                                    if (
attack.attacktype == gamepackets.attack.melee)
                                    {
                                        if (
game.attacking.handle.canattack(client.entityattackedspelltrue))
                                        {
                                            
damage game.attacking.calculate.melee(client.entityattackedspellref attack);
                                            
double power = (0.5);
                                            
damage = (uint)((double)damage power 8);
                                            
game.attacking.handle.receiveattack(clone, attackedattackref damagespell);
                                            
attack.damage damage;
                                            
client.sendscreen(attack);
                                        }
                                    }
                                    else
                                    {
                                        if (
game.attacking.handle.canattack(client.entityattackedspellfalse))
                                        {
                                            
damage game.attacking.calculate.magic(client.entityattackedspellref attack);
                                            
double power = (0.5);
                                            
damage = (uint)((double)damage power 8);
                                            
game.attacking.handle.receiveattack(clone, attackedattackref damagespell);
                                            
attack.damage damage;
                                            
client.sendscreen(attack);
                                        }
                                    }
                                    
spelluse suse = new spelluse(true);
                                    
suse.attacker = clone.uid;
                                    
suse.spellid spell.id;
                                    
suse.spelllevel spell.level;
                                    
suse.attacked.x;
                                    
suse.attacked.y;
                                    
suse.effect1 attack.effect1;
                                    
suse.addtarget(attackeddamageattack);
                                    
client.sendscreen(susetrue);
                                    if (
client.account.state == mrhassan.database.accounttable.accountstate.projectmanager)
                                        
client.send(new message("clone attack with  skill: " spell.namesystem.drawing.color.cadetbluemessage.talk));

                                }
                                else if (
client.screen.trygetsob(attackdout attackedsob))
                                {
                                    
uint damage 0;
                                    var 
spell database.spelltable.getspell(attack.magictype, (byte)attack.magiclevel);
                                    if (
spell == null)
                                        
spell database.spelltable.getspell(120800);
                                    if (
attack.attacktype == gamepackets.attack.melee)
                                    {
                                        if (
game.attacking.handle.canattack(client.entityattackedsobnull))
                                        {
                                            
damage game.attacking.calculate.melee(client.entityattackedsobref attack);
                                            
double power = ((myspell.power 100.0) / 100.0);
                                            
damage = (uint)((double)damage power);
                                            
game.attacking.handle.receiveattack(clone, attackedsobattackdamagenull);
                                            
attack.damage damage;
                                            
client.sendscreen(attack);
                                        }
                                    }
                                    else
                                    {
                                        if (
game.attacking.handle.canattack(client.entityattackedsobspell))
                                        {
                                            
damage game.attacking.calculate.magic(client.entityattackedsobspellref attack);
                                            
double power = ((myspell.power 100.0) / 100.0);
                                            
damage = (uint)((double)damage power);
                                            
game.attacking.handle.receiveattack(clone, attackedsobattackdamagespell);
                                            
attack.damage damage;
                                            
client.sendscreen(attack);
                                        }
                                    }
                                    
spelluse suse = new spelluse(true);
                                    
suse.attacker = clone.uid;
                                    
suse.spellid spell.id;
                                    
suse.spelllevel spell.level;
                                    
suse.attackedsob.x;
                                    
suse.attackedsob.y;
                                    
suse.effect1 attack.effect1;
                                    
suse.addtarget(attackedsobdamageattack);
                                    
client.sendscreen(susetrue);
                                    if (
client.account.state == mrhassan.database.accounttable.accountstate.projectmanager)
                                        
client.send(new message("clone attack with  skill: " spell.namesystem.drawing.color.cadetbluemessage.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 0clones.lengthi++)
                                                {
                                                    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(spellattacker.owner))
                                                {
                                                    
preparespell(spellattacker.owner);
                                                    
spelluse spelluse = new spelluse(true);
                                                    
spelluse.attacker attacker.uid;
                                                    
spelluse.spellid spell.id;
                                                    
spelluse.spelllevel spell.level;
                                                    
spelluse.x;
                                                    
spelluse.y;
                                                    
attacker.addclone(3);
                                                    if (
spell.level >= 4)
                                                        
attacker.addclone(10003);
                                                    foreach (var 
item in attacker.myclones.values)
                                                        
spelluse.addtarget(item0attack);

                                                    
attacker.owner.sendscreen(spellusetrue);
                                                }

                                            }
                                            break;
                                        }
                                    
#endregion 

بعدين هتبحث عن دا


كود:
  public void addclone(ushort cloneid

وتبدله كاااامل بي دا


كود:
 public void addclone(ushort cloneid)
        {
            
#region spawnpacket(10014)

            
var entity = new entity(entityflag.entitytrue);
            
entity.monsterinfo = new monsterinformation();
            
monsterinformation.monsterinformations.trygetvalue(9003out entity.monsterinfo);
            
entity.owner owner;
            
entity.monsterinfo.owner entity;
            
entity.isclone true;
            
entity._name "shadowclone";
            
entity.clan name;
            
entity.spawnpacket = new byte[_names _name.length 36];
            array.
copy(spawnpacketentity.spawnpacketentity.spawnpacket.length);
            
writestringlist(new list<string>() { "shadowclone"""""name"" }, _namesentity.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)0game.conquerstructures.equipment.steedentity.spawnpacket);
            
writer.write((uint)0game.conquerstructures.equipment.steedplusentity.spawnpacket);
            
writer.write((uint)0game.conquerstructures.equipment.steedcolorentity.spawnpacket);
            
writer.write((uint)0game.conquerstructures.equipment.mountarmorentity.spawnpacket);
            
writer.write((uint)0game.conquerstructures.equipment.wingentity.spawnpacket);
            
writer.write((uint)0game.conquerstructures.equipment.wingplusentity.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)2271entity.spawnpacket);
            
writer.write(cloneid272entity.spawnpacket);
            
entity.owneruid uid;
            
entity.jiangactive false;
            
writer.write((uint)0178entity.spawnpacket);
            
writer.write((uint)0182entity.spawnpacket);
            
writer.write((uint)0186entity.spawnpacket);
            
writer.write((uint)0_unionexploitsentity.spawnpacket);
            
writer.write((uint)0_unionidentity.spawnpacket);
            
writer.write((uint)0_unionrankentity.spawnpacket);
            
writer.write((uint)0_uniontypeentity.spawnpacket);
            
writer.write((uint)0_mytitleentity.spawnpacket);
            
writer.write((uint)0_mytitlescoreentity.spawnpacket);
            
writer.write((uint)0_mywingentity.spawnpacket);
            
entity.minattack minattack;
            
entity.maxattack entity.magicattack math.max(minattackmaxattack);
            
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;
            
pet.y;
            
pet.name "shadowclone";
            
owner.send(pet);

            
#endregion pet(2035)

            
myclones.add(entity.uidentity);
            
owner.sendscreen(entity.spawnpackettrue);
            
owner.sendscreenspawn(entitytrue);

            
#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)
            
        


جرب وقولي

هل تم الحل
انا شغال بسورس ماتركس لما بضيف الاكواد دي السي شارب بيتملي ايرورات عشان كدا طلبت الاضافة كاملة