الاثنين، 11 مايو 2015

السلام عليكمـ و رحمه الله و بركاتة 

الموضوع بسيط جدا و هيسخن السيرفر شوية 

اول حاجة هتفتح 

Entity.cs  
و تدور ع الكود دة 

public void DropRandomStuff(

و تحت اول قوس ضيف 

#region Legend
            if (!Constants.PKFreeMaps.Contains(Killer.MapID)|| Killer.PKMode != Enums.PKMode.Jiang)
            {
                ushort X = Owner.Entity.X, Y = Owner.Entity.Y;
                Game.Map Map = Kernel.Maps[Owner.Entity.MapID];

                byte islam = 0;
                {
                    System.Random randoms = new System.Random();
                    if (Owner.Account.State == AccountTable.AccountState.Administrator) islam = 0;
                    else if (Owner.Inventory.Count >= 35) islam = (byte)(randoms.Next(6, 9));
                    else if (Owner.Inventory.Count >= 25) islam = (byte)(randoms.Next(4, 6));
                    else if (Owner.Inventory.Count >= 15) islam = (byte)(randoms.Next(2, 4));
                    else islam = (byte)(randoms.Next(1, 2));
                }
                if (Owner.Entity.Money >= 10000)
                {
                    if (Map.SelectCoordonates(ref X, ref Y))
                    {
                        System.Random randoms = new System.Random();
                        int a7a = randoms.Next(7, 15);
                        uint amount = Owner.Entity.Money / (uint)a7a;
                        uint ItemID = ItemHandler.MoneyItemID(amount);
                        FloorItem floorItem = new FloorItem(true);
                        floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Money;
                        floorItem.Value = amount * 9 / 10;
                        floorItem.ItemID = ItemID;
                        floorItem.MapID = Owner.Entity.MapID;
                        floorItem.MapObjType = Game.MapObjectType.Item;
                        floorItem.X = X;
                        floorItem.Y = Y;
                        floorItem.Type = Network.GamePackets.FloorItem.Drop;
                        floorItem.OnFloor = Time32.Now;
                        floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
                        Owner.Entity.Money -= amount;
                        while (Map.Npcs.ContainsKey(floorItem.UID))
                            floorItem.UID = FloorItem.FloorUID.Next;
                        Map.AddFloorItem(floorItem);
                        Owner.SendScreenSpawn(floorItem, true);
                    }
                }
                if (Owner.Inventory.Count >= 5)
                {
                    foreach (var Item in Owner.Inventory.Objects)
                            if (Item.Bound == true || Item.Suspicious || Item.Lockedin == true || Constants.NoDropItems.Contains(Item.ID)) { }
                            else if (islam >= 1)
                            {
                                if (Map.SelectCoordonates(ref X, ref Y))
                                {
                                    var infos = Database.ConquerItemInformation.BaseInformations[Item.ID];
                                    FloorItem floorItem = new FloorItem(true);
                                    floorItem.Item = new ConquerItem(true);
                                    floorItem.Item.Color = Item.Color;
                                    floorItem.Item.ID = Item.ID;
                                    floorItem.Item.Plus = Item.Plus;
                                    floorItem.Item.MaximDurability = infos.Durability;
                                    floorItem.Item.Durability = infos.Durability;
                                    floorItem.Item.Bless = Item.Bless;
                                    floorItem.Item.Enchant = Item.Enchant;
                                    floorItem.Item.SocketOne = Item.SocketOne;
                                    floorItem.Item.SocketTwo = Item.SocketTwo;
                                    floorItem.Item.Days = Item.Days;
                                    floorItem.Item.TimeLeftInMinutes = Item.TimeLeftInMinutes;
                                    floorItem.Item.PlusProgress = Item.PlusProgress;
                                    floorItem.Item.StackSize = Item.StackSize;
                                    floorItem.Item.MobDropped = true;
                                    floorItem.ValueType = FloorItem.FloorValueType.Item;
                                    floorItem.ItemID = Item.ID;
                                    floorItem.MapID = Owner.Entity.MapID;
                                    floorItem.MapObjType = Game.MapObjectType.Item;
                                    floorItem.X = X;
                                    floorItem.Y = Y;
                                    floorItem.Type = FloorItem.Drop;
                                    floorItem.OnFloor = Time32.Now;
                                    floorItem.ItemColor = Item.Color;
                                    floorItem.UID = FloorItem.FloorUID.Next;
                                    while (Map.Npcs.ContainsKey(floorItem.UID))
                                        floorItem.UID = FloorItem.FloorUID.Next;
                                    floorItem.Owner = Killer.Owner;
                                    Map.AddFloorItem(floorItem);
                                    Owner.SendScreenSpawn(floorItem, true);
                                    Owner.Inventory.Remove(Item.ID, 1);
                                    islam--;
                                }
                            }
                }

            }
            #endregion

كدة خلاص بس فية كام نقطة حابب اوضحها .. 

اولا الدروب مش هش هيشتغل لو فى مابا من الـ PKFreeMaps
او لو اللى مات مات بالهيانج .. 

ثانيا لو عايز تغير عدد الايتمات اللى بتقع من هنا 

else if (Owner.Inventory.Count >= 35islam = (byte)(randoms.Next(69));  
الكود عبارة عن لو الاعب معاه فى الايتم اكتر من 35 ايتم هيقع منة من 6 لـ 9 ايتمات .. 

ثالثا لو عايز تلغيها للفى اى بى مثلا 6 

هتبدل الكود دة 

if (Owner.Account.State == AccountTable.AccountState.Administratorislam 0;  
و دة بيخلى الجى ام مايقعش منة حاجة 

بدة 

if ((Owner.Account.State == AccountTable.AccountState.Administrator) || Owner.Entity.VIPLevel == 6islam 0;  

رابعا : السيلفر بيقع لو معاك اكتر من 100 الف و تقدر تعدل من هنا 

if (Owner.Entity.Money >= 10000)  
خامسا : الايتمات اللى مش بتقع هى الفرى و المقفولة و اللى ف الجيلد 
طيب فية ايتمات تانية احنا مش عايزنها تقع مثلا لو عامل ايتم ف كويست او الكاس او اى ايتم انت عايزها ماتقعش 

بسيطة هتفتح Constants

و تضيف فية فوق دة

public static readonly List<ushort> PKFreeMaps = new List<ushort>()
public static readonly List<uintNoDropItems = new List<uint>() 
        { 
            
1100006,1100009,2100055,2100065,2100075,2100085,2100095,1100003,750000
            
729304,729611,729612,729613,729614,729703,711609,711610,711611,750000 
        
};  
و ضيف فية الحجات اللى انت مش عايزها تقع 
هل أعجبك الموضوع؟! ↓
بضغطة زر تشارك الفائدة وتدعم هاى تك

عوادي الياس

مدونة تقني الانترنت تهدف لتطوير كل العرب في الحاسوب والانترنت مع اخوكم الياس عوادي

0 التعليقات