منتدي اكواد

منتدي اكواد (https://code.vpscairo.com/index.php)
-   تطوير سيرفرات كونكر (https://code.vpscairo.com/forumdisplay.php?f=11)
-   -   رانك الوحوش ف ديتي لاند [RayzoV3] (https://code.vpscairo.com/showthread.php?t=3058)

Rider 2019-11-22 02:04 PM

رانك الوحوش ف ديتي لاند [RayzoV3]
 

هتعمل كلاس جديد و تسميه BossHarming او اي اسم يعجبك

بعد مده هترمي فيه دول متنساش تغير اسم بروجيكت
كود PHP:

using ProtoBuf;
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Collections.Concurrent;
using System.Text;
using VirusX;
using VirusX.Database;
using System.Threading.Tasks;
 
namespace 
VirusX.Network.GamePackets
{
    public class 
MsgBossHarmRanking
    
{
        public 
MsgBossHarmRanking() { }
        public 
MsgBossHarmRankingProto Info;
        [
ProtoContract]
        public class 
MsgBossHarmRankingProto
        
{
            [
ProtoMember(1IsRequired true)]
            public 
uint Type;
            [
ProtoMember(2IsRequired true)]
            public 
uint BossUID;
            [
ProtoMember(3IsRequired true)]
            public 
Hunter[] Hunters;
        }
        [
ProtoContract]
        public class 
Hunter
        
{
            [
ProtoMember(1IsRequired true)]
            public 
uint Rank;
            [
ProtoMember(2IsRequired true)]
            public 
uint ServerID;
            [
ProtoMember(3IsRequired true)]
            public 
uint UID;
            [
ProtoMember(4IsRequired true)]
            public 
string Name;
            [
ProtoMember(5IsRequired true)]
            public 
uint Damage;
        }
        public 
bool Read(byte[] packet)
        {
            
using (var memoryStream = new MemoryStream(packet))
            {
                
Info Serializer.DeserializeWithLengthPrefix<MsgBossHarmRankingProto>(memoryStreamPrefixStyle.Fixed32);
            }
            return 
true;
        }
        public 
void Ready(VirusX.Client.GameState client)
        {
            var 
proto = new MsgBossHarmRankingProto();
            
proto.BossUID Info.BossUID;
            
proto.Type 1;
            
/* var scores = client.Map.Entities.Where(i => i.Key == proto.BossUID).FirstOrDefault().Value.MonsterInfo.Score.OrderByDescending(i => i.Value).ToArray();
             if (scores.Length != 0)
             {
                 proto.Hunters = new Hunter[scores.Length];
                 for (int i = 0; i < proto.Hunters.Length; i++)
                 {
                     proto.Hunters[i] = new Hunter();
                     proto.Hunters[i].UID = scores[i].Key.UID;
                     proto.Hunters[i].Name = scores[i].Key.Name;
                     proto.Hunters[i].Damage = scores[i].Value;
                     proto.Hunters[i].ServerID = scores[i].Key.ServerID;
                     proto.Hunters[i].Rank = (uint)(i + 1);
                 }
             } */
            
client.Send(Kernel.FinalizeProtoBuf(proto1044));
            
//client.Send(Kernel.FinalizeProtoBuf(Info, 3282));
        
}
        public 
void Handle(VirusX.Client.GameState client)
        {
            switch (
Info.Type)
            {
                case 
0:
                    {
                        var 
proto = new MsgBossHarmRankingProto();
                        
proto.BossUID Info.BossUID;
                        
proto.Type 1;
                        var 
scores client.Map.Entities.Where(=> i.Key == proto.BossUID).FirstOrDefault().Value.MonsterInfo.Score.OrderByDescending(=> i.Value).ToArray();
                        if (
scores.Length != 0)
                        {
                            
proto.Hunters = new Hunter[scores.Length];
                            for (
int i 0proto.Hunters.Lengthi++)
                            {
                                
proto.Hunters[i] = new Hunter();
                                
proto.Hunters[i].UID scores[i].Key.UID;
                                
proto.Hunters[i].Name scores[i].Key.Name;
                                
proto.Hunters[i].Damage scores[i].Value;
                                
proto.Hunters[i].ServerID scores[i].Key.ServerID;
                                
proto.Hunters[i].Rank = (uint)(1);
                            }
                        }
                        
client.Send(Kernel.FinalizeProtoBuf(proto1044));
                        break;
                    }
            }
        }
    }




بعد كده هنفتح packethandler.cs
و ننزل لحد البكتات و نرمي ده وسطهم
كود PHP:

#region MsgBossHarmRanking
                
case 1044:
                    {
                        var 
pkt = new VirusX.Network.GamePackets.MsgBossHarmRanking();
                        var 
myPacket = new byte[packet.Length 8];
                        for (
int i 0myPacket.Lengthi++)
                        {
                            
myPacket[i] = packet[i];
                        }
                        if (
pkt.Read(myPacket))
                            
pkt.Handle(client);
                        break;
                    }
                
#endregion 

بعد كده هنروح MonsterTable.cs
و هرمي ده جواه
كود PHP:

 public Dictionary<Game.EntityuintScore = new Dictionary<Game.Entityuint>(); 

و اخيرا و ليس اخرا هنروح Monster.cs
و هنحط جواه ده
كود PHP:

#region Monster Score
            
if (monster.EntityFlag == EntityFlag.Monster)
            {
                
//if (attacked.Boss > 0)
                
{
                    if (
monster.MonsterInfo != null)
                    {
                        if (
monster.MonsterInfo.Score.ContainsKey(client.Entity))
                            
monster.MonsterInfo.Score[client.Entity] += obj.Damage;
                        else 
monster.MonsterInfo.Score.Add(client.Entityobj.Damage);
 
                        
//new VirusX.Network.GamePackets.MsgBossHarmRanking().Ready(attacker.Owner);
                    
}
                }
            } 


nova 2019-11-23 05:31 AM

رد: رانك الوحوش ف ديتي لاند [RayzoV3]
 
عندى ايرورين ف كلمة packet يا رايدر معلش ممكن حل
عفواً لايمكن عرض الروابط إلا بعد الرد على الموضوع

Rider 2019-11-23 10:33 AM

رد: رانك الوحوش ف ديتي لاند [RayzoV3]
 
انته ضايف كود ف مكان غلط سيرش case 1126: و ضيفه تحته

nova 2019-11-23 10:51 AM

رد: رانك الوحوش ف ديتي لاند [RayzoV3]
 
اقتباس:

المشاركة الأصلية كتبت بواسطة rider (المشاركة 22842)
انته ضايف كود ف مكان غلط سيرش case 1126: و ضيفه تحته

تمام اتحلت يا عالمى

محمد ياسر 2019-11-23 06:30 PM

رد: رانك الوحوش ف ديتي لاند [RayzoV3]
 
عاش

Mo Khalid 2019-11-24 06:03 PM

رد: رانك الوحوش ف ديتي لاند [RayzoV3]
 
ابو الصحاب هو الرنك دا ممكن اضيفو ف سورس 2 دي كلينت 6609

Rider 2019-11-25 05:12 PM

رد: رانك الوحوش ف ديتي لاند [RayzoV3]
 
اقتباس:

المشاركة الأصلية كتبت بواسطة Mo Khalid (المشاركة 22958)
ابو الصحاب هو الرنك دا ممكن اضيفو ف سورس 2 دي كلينت 6609

ايوه يا حب بس كود ده
كود PHP:

            if (monster.EntityFlag == EntityFlag.Monster)
            {
                
//if (attacked.Boss > 0)
                
{
                    if (
monster.MonsterInfo != null)
                    {
                        if (
monster.MonsterInfo.Score.ContainsKey(client.Entity))
                            
monster.MonsterInfo.Score[client.Entity] += obj.Damage;
                        else 
monster.MonsterInfo.Score.Add(client.Entityobj.Damage);
 
                        
//new VirusX.Network.GamePackets.MsgBossHarmRanking().Ready(attacker.Owner);
                    
}
                }
            } 

هيتضاف ف PVM.cs

MRonlineGvrix 2019-12-23 03:13 AM

رد: رانك الوحوش ف ديتي لاند [RayzoV3]
 
اقتباس:

المشاركة الأصلية كتبت بواسطة Rider (المشاركة 23044)
ايوه يا حب بس كود ده
كود PHP:

            if (monster.EntityFlag == EntityFlag.Monster)
            {
                
//if (attacked.Boss > 0)
                
{
                    if (
monster.MonsterInfo != null)
                    {
                        if (
monster.MonsterInfo.Score.ContainsKey(client.Entity))
                            
monster.MonsterInfo.Score[client.Entity] += obj.Damage;
                        else 
monster.MonsterInfo.Score.Add(client.Entityobj.Damage);
 
                        
//new VirusX.Network.GamePackets.MsgBossHarmRanking().Ready(attacker.Owner);
                    
}
                }
            } 

هيتضاف ف PVM.cs



لو سمحت ممكن تضيفو هنا
كود PHP:

// * Created by CptSky
// * Copyright © 2011
// * COPS v6 Emulator - Project

using System;
using CO2_CORE_DLL.IO;
using AbdoRedaGxV4.Game;
using AbdoRedaGxV4.Database;
using AbdoRedaGxV4.Network.GamePackets;
using AbdoRedaGxV4;
using AbdoRedaGxV4.Game.Attacking;
using System.Collections.Generic;

namespace 
AbdoRedaGxV4
{
    public 
partial class MyMath
    
{
        public static 
Int32 GetDamageEntity2Monster(Entity AttackerEntity Monsteruint AtkTyperef Attack Packet)
        {
            
Double Damage 0;

            switch (
AtkType)
            {
                case 
Attack.Melee:
                    {
                        if (!
Attacker.Transformed)
                            
Damage MyMath.Generate(Attacker.MinAttackAttacker.MaxAttack);
                        else
                            
Damage MyMath.Generate(Attacker.TransformationMinAttackAttacker.TransformationMaxAttack);

                        
AbdoRedaGxV4.Game.Attacking.Calculate.Refinary(AttackerMonsterref Damageref Packetfalse);

                        
//      Damage += Attacker.getFan(false);
                        
Damage Attacker.AdjustAttack((int)Damage);

                        var 
bonus Attacker.Gems[GemTypes.Dragon];
                        if (
bonus 0)
                            
Damage += MathHelper.MulDiv((int)Damagebonus100);

                        
Damage AdjustDamageEntity2Monster(DamageAttackerMonster);
                        
Damage -= Monster.Defence;
                        break;
                    }
                case 
Attack.Magic:
                    {
                        
Damage Attacker.MagicAttack;
                        
Damage AdjustDamageEntity2Monster(DamageAttackerMonster);
                        
AbdoRedaGxV4.Game.Attacking.Calculate.Refinary(AttackerMonsterref Damageref Packettrue);

                        
Damage *= ((Double)(100 Monster.MagicDefence) / 100);
                        
Damage -= Monster.Block;
                        
Damage *= 0.75;

                        
Damage += Attacker.MagicDamageIncrease;
                        
Damage -= Monster.MagicDamageDecrease;

                        var 
effect Attacker.Gems[GemTypes.Phoenix];
                        
Damage += Damage effect 100;
                        if (
effect >= 180)
                            
Damage += Damage 20;
                        break;
                    }
                case 
Attack.Ranged:
                    {
                        
Damage MyMath.Generate((int)Attacker.MinAttack, (int)Attacker.MaxAttack) / 25;
                        
AbdoRedaGxV4.Game.Attacking.Calculate.Refinary(AttackerMonsterref Damageref Packetfalse);

                        
Damage AdjustDamageEntity2Monster(DamageAttackerMonster);

                        var 
bonus Attacker.Gems[GemTypes.Dragon];
                        if (
bonus 0)
                            
Damage += MathHelper.MulDiv((int)Damagebonus100);

                        break;
                    }
            }

            if (
AtkType != Attack.Magic)
            {
                if (
Attacker.Gems[GemTypes.Dragon] >= 210)
                    
Damage += Damage 50 100;
            }

            if (
Attacker.OnSuperCyclone())
                
Damage += (int)((double)Damage 0.2);

            if (
Attacker.OnOblivion())
                
Damage += (int)((double)Damage 0.2);

            if (
Attacker.OnFatalStrike())
                
Damage += (int)((double)Damage 0.2);

            if (
Attacker.BattlePower Monster.Level)
                
Damage *= 0.01;

            
Damage += Attacker.getFan(AtkType == Attack.Magic);
            if (
Damage 1)
                
Damage 1;
            
Damage AdjustMinDamageEntity2Monster(DamageAttackerMonster);
            if (
Attacker.EntityFlag == EntityFlag.Entity)
            {
                if (
Attacker.Owner.BlessTime && MyMath.Success(1))
                {
                    
Damage *= 1;
                    
_String str = new _String(true);
                    
str.UID Attacker.UID;
                    
str.TextsCount 1;
                    
str.Type _String.Effect;
                    
str.Texts.Add("LuckyGuy");
                    
Attacker.Owner.SendScreen(strtrue);

                }
            }
            return (
Int32)Math.Round(Damage0);
        }

        public static 
Int32 GetDamageEntity2Monster(Entity AttackerEntity Monsterushort MagicTypeByte MagicLevelref Attack Packet)
        {
            var 
Info SpellTable.GetSpell(MagicTypeMagicLevel);

            
Double Damage 0;

            List<
ushortspells = new List<ushort>()
            {
                
11190,
                
10315
            
};
            if (
Info.ID == 1115 || spells.Contains(Info.ID) || (Info.WeaponSubtype.Count && !Info.WeaponSubtype.Contains(500) && !Info.WeaponSubtype.Contains(613) && !Attacker.IsChaser1()))
            {
                
Damage MyMath.Generate((int)Attacker.MinAttack, (int)Attacker.MaxAttack);
                
AbdoRedaGxV4.Game.Attacking.Calculate.Refinary(AttackerMonsterref Damageref Packetfalse);

                if (
Info.Power 30000)
                    
Damage *= (Double)(Info.Power 30000) / 100;
                else
                    
Damage += Info.Power;
                
//    Damage += Attacker.getFan(false);

                
var bonus Attacker.Gems[GemTypes.Dragon];
                if (
bonus 0)
                    
Damage += MathHelper.MulDiv((int)Damagebonus100);

                
Damage AdjustDamageEntity2Monster(DamageAttackerMonster);

                
Damage -= Monster.Defence;

                
Damage Attacker.AdjustAttack((int)Damage);


                if (
Attacker.Gems[GemTypes.Dragon] >= 210)
                    
Damage += Damage 50 100;
            }
            else if (
Info.WeaponSubtype.Contains(500) || Info.WeaponSubtype.Contains(613) || Attacker.IsChaser1())
            {
                
Damage MyMath.Generate((int)Attacker.MinAttack, (int)Attacker.MaxAttack);
                
AbdoRedaGxV4.Game.Attacking.Calculate.Refinary(AttackerMonsterref Damageref Packetfalse);
                
//  Damage += Attacker.getFan(false);

                
if (Info.Power 30000)
                    
Damage *= (Double)(Info.Power 30000) / 100;
                else
                    
Damage += Info.Power;

                
Damage AdjustDamageEntity2Monster(DamageAttackerMonster);

                
Damage Attacker.AdjustAttack((int)Damage);

                var 
bonus Attacker.Gems[GemTypes.Dragon];
                if (
bonus 0)
                    
Damage += MathHelper.MulDiv((int)Damagebonus100);



                if (
Attacker.Gems[GemTypes.Dragon] >= 210)
                    
Damage += Damage 50 100;
            }
            else
            {
                
Damage Attacker.MagicAttack;
                
AbdoRedaGxV4.Game.Attacking.Calculate.Refinary(AttackerMonsterref Damageref Packettrue);
                if (
Info.Power 30000)
                    
Damage *= (Double)(Info.Power 30000) / 100;
                else
                    
Damage += Info.Power;
                
//   Damage += Attacker.getFan(true);
                
var effect Attacker.Gems[GemTypes.Phoenix];
                
Damage += Damage effect 100;
                
Damage AdjustDamageEntity2Monster(DamageAttackerMonster);

                
Damage *= ((Double)(100 Monster.MagicDefence) / 100);
                
Damage -= Monster.Block;
                
// Damage *= 0.75;


                
if (effect >= 180)
                    
Damage += Damage 20;


            }

            if (
Attacker.BattlePower Monster.Level)
                
Damage *= 0.01;

            
Damage += Attacker.getFan(Packet.AttackType == Attack.Magic);
            if (
Attacker.OnSuperman())
                
Damage += (int)((double)Damage 2.5); //PvP Reduction!
            
if (Damage 1)
                
Damage 1;

            
Damage AdjustMinDamageEntity2Monster(DamageAttackerMonster);



            if (
Attacker.EntityFlag == EntityFlag.Entity)
            {
                if (
Attacker.Owner.BlessTime && MyMath.Success(1))
                {
                    
Damage *= 1;
                    
_String str = new _String(true);
                    
str.UID Attacker.UID;
                    
str.TextsCount 1;
                    
str.Type _String.Effect;
                    
str.Texts.Add("LuckyGuy");
                    
Attacker.Owner.SendScreen(strtrue);
                }
            }
            return (
Int32)Math.Round(Damage0);
        }

        private static 
Int32 AdjustMinDamageEntity2Monster(Double DamageEntity AttackerEntity Monster)
        {
            
Int32 MinDmg 1;
            
MinDmg += (Int32)(Attacker.Level 10);

            var 
Item Attacker.Owner.Equipment.TryGetItem(4);
            if (
Item != null)
                
MinDmg += (int)Item.ID 10;

            return 
Math.Max(MinDmg, (Int32)Damage);
        }

        private static 
Int32 AdjustDamageEntity2Monster(Double DamageEntity AttackerEntity Monster)
        {
            if (!
Monster.IsGreen(Attacker))
                return 
Math.Max(0, (Int32)Damage);

            
Int32 DeltaLvl Attacker.Level Monster.Level;
            if (
DeltaLvl >= && DeltaLvl <= 5)
                
Damage *= 1.5;
            else if (
DeltaLvl && DeltaLvl <= 10)
                
Damage *= 2;
            else if (
DeltaLvl 10 && DeltaLvl <= 20)
                
Damage *= 2.5;
            else if (
DeltaLvl 20)
                
Damage *= 3;
            else
                
Damage *= 1;

            return 
Math.Max(0, (Int32)Damage);
        }
    }



taha 2020-02-14 08:36 AM

رد: رانك الوحوش ف ديتي لاند [RayzoV3]
 
فين الان بى سى علشان اضيفوا فى النفى كات

احمد كرم 2020-02-16 11:55 PM

رد: رانك الوحوش ف ديتي لاند [RayzoV3]
 
لو سمحت يا ابو الصحاب عاوز اضيف المابة بتاعة الديتي لاند كاملة في سورس 3 دي ممكن تعمل موضوع تشرح فيه ازاي اضيفها


الساعة الآن 04:15 AM

مرحبا بكم في منتدي اكواد لتطوير الالعاب