[Gunny] GunnyII - Hướng dẫn cách fix hợp thành
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Trang 1 của 2 1 2 CuốiCuối
Kết quả 1 đến 10 của 13
  1. #1
    Thành Viên trong0981's Avatar
    Ngày tham gia
    Feb 2009
    Bài viết
    770
    Thanks
    92
    Thanked 1,424 Times in 161 Posts

    GunnyII - Hướng dẫn cách fix hợp thành

    Đang test cách cường hóa lên lv & biến hình liên tục giống trminhpc. Hiện được rồi nhưng bị lỗi ko biến hình nên ko build được. Share cho ae cách fix hợp thành này nhé. Ai xài nhớ cảm ơn.

    Không tiện quay clip. Vì máy mình phân giải x1980 nên quay nặng lắm up online lâu .

    B1. Các bạn mở project GameServer.sln lên. Ở ô bên phải chọn Game.Server / Packets / Client / UserChangeItemPlaceHandler.cs
    Xóa hết, sửa lại thành như vầy:
    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Game.Base.Packets;
    using Bussiness;
    using SqlDataProvider.Data;
    using Game.Server.GameUtils;
    using Game.Server.Managers;
    using log4net;
    using System.Reflection;
    
    namespace Game.Server.Packets.Client
    {
        [PacketHandler((byte)ePackageType.CHANGE_PLACE_GOODS, "改变物品位置")]
        public class UserChangeItemPlaceHandler:IPacketHandler
        {
            public int HandlePacket(GameClient client, GSPacketIn packet)
            {
                eBageType bageType = (eBageType)packet.ReadByte();
                int slot = packet.ReadInt();
                eBageType toBageType = (eBageType)packet.ReadByte();
                int toSlot = packet.ReadInt();
                int count = packet.ReadInt();
                PlayerInventory bag = client.Player.GetInventory(bageType);
                PlayerInventory inventory = client.Player.GetInventory(toBageType);
                if (toSlot < 0)
                {
                    if ((inventory.BagType == (int)eBageType.Bank) || (inventory.BagType == (int)eBageType.PropBag))
                    {
                        toSlot = inventory.FindFirstEmptySlot(0);
                    }
                    else
                    {
                        toSlot = inventory.FindFirstEmptySlot(31);
                    }
                }  
                //==================================
                if (count > 0)
                {
                    if ((bag == null) || (bag.GetItemAt(slot) == null))
                    {
                        return 0;
                    }
                    if ((bageType == toBageType) && (slot != -1))
                    {
                        if (bag.GetItemAt(slot).Count >= count)
                        {
                            Console.WriteLine("-----Stage 1 !");
                            bag.MoveItem(slot, toSlot, count);                        
                        }
                        else
                        {
                            Console.WriteLine("--" + client.Player.Account + " Hack = CE");
                            bag.MoveItem(slot, toSlot, bag.GetItemAt(slot).Count);
                        }
                        return 1;
                    }
    
                    if ((slot == -1) && (toSlot != -1))
                    {
                        Console.WriteLine("-----Stage 2 !");
                        bag.RemoveItemAt(toSlot);                   
                        return 1;
                    }
    
                    if (((((slot != -1) && (toSlot == -1)) && 
                        ((bageType != eBageType.CaddyBag) && 
                        (toBageType != eBageType.Bank))) && 
                        (bageType != eBageType.Store)) && 
                        (toBageType != eBageType.Store))
                    {
                        if (bageType == eBageType.MainBag)
                        {
                            Console.WriteLine("-----Stage 3 !");
                            bag.AddItem(client.Player.GetItemAt(bageType, slot), 31);
    
                        }
                        else
                        {
                            Console.WriteLine("-----Stage 4 !");
                            //bag.AddItem(client.Player.GetItemAt(bageType, slot), 0);
                            client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Full"));
                        }
                        return 1;
                    }
    
                    if ((((slot != -1) && (toBageType != bageType)) && (toBageType != eBageType.Store)) && (toBageType != eBageType.MainBag))
                    {
                        ConsortiaInfo info = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID);
                        if (info != null)
                        {
                            if (toBageType == eBageType.Store)
                            {
                            }
                            Console.WriteLine("-----Stage 5 !");
                            bag.MoveToStore(bag, slot, toSlot, inventory, info.StoreLevel * 10);                        
                            return 1;
                        }
                    }
    
                    if ((toBageType == eBageType.Store) || (bageType == eBageType.Store))
                    {
                        SqlDataProvider.Data.ItemInfo itemAt = client.Player.GetItemAt(bageType, slot);
                        if ((itemAt != null) && (itemAt.Count > 1))
                        {
                            itemAt.Count -= count;
                            bag.UpdateItem(itemAt);
                            SqlDataProvider.Data.ItemInfo item = itemAt.Clone();
                            item.Count = count;
                            if (inventory.GetItemAt(toSlot) == null)
                            {
                                Console.WriteLine("-----Stage 6 !");
                                inventory.AddItemTo(item, toSlot);
                               
                            }
                            else
                            {
                                SqlDataProvider.Data.ItemInfo itemByTemplateID = bag.GetItemByTemplateID(0, inventory.GetItemAt(toSlot).TemplateID);
                                if (itemByTemplateID == null)
                                {
                                    Console.WriteLine("-----Stage 7 !");
                                    bag.MoveToStore(inventory, toSlot, bag.FindFirstEmptySlot(0), bag, 999);
                                    
                                }
                                else
                                {
                                    Console.WriteLine("-----Stage 8 !");
                                    itemByTemplateID.Count++;
                                    bag.UpdateItem(itemByTemplateID);
                                    inventory.RemoveItemAt(toSlot);
                                 
                                }
                                Console.WriteLine("-----Stage 9 !");
                                inventory.AddItemTo(item, toSlot);
                               
                            }
                        }
                        else
                        {
                            if ((((toBageType != eBageType.Store) && (toBageType != eBageType.MainBag)) && ((bag.GetItemAt(slot) != null) && (bag.GetItemAt(slot).Template.CategoryID == 7))) && (((toSlot > 0) && (toSlot < 31)) && (toSlot != 6)))
                            {
                                return 1;
                            }
                            try
                            {
                                Console.WriteLine("-----Stage 10 !");
                                bag.MoveToStore(bag, slot, toSlot, inventory, 50);
                                
                            }
                            catch (Exception)
                            {
                                LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("ERROR USER CHANGEITEM placce: {0},toplace: {1},bagType: {2},ToBagType {3}", new object[] { slot, toSlot, bageType, toBageType });
                                LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).InfoFormat("item :{0}, toitem {1}", bag.GetItemAt(slot), inventory.GetItemAt(toSlot));
                            }
                        }
                        return 1;
                    }
                    if ((toBageType == eBageType.MainBag) && (bageType == eBageType.Bank))
                    {
                        Console.WriteLine("-----Stage 11!");
                        bag.MoveToStore(bag, slot, toSlot, inventory, 50);
                        return 1;
                    }
                }
                //==================================
                return 0;
            }
        }
    }


    B2: Vào Game.Server / Packets / Client / ItemComposeHandler.cs xóa hết sửa thành:
    PHP Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Game.Base.Packets;
    using Bussiness;
    using SqlDataProvider.Data;
    using System.Configuration;
    using Game.Server.Managers;
    using Game.Server.Statics;
    using Game.Logic;


    namespace 
    Game.Server.Packets.Client
    {
        [
    PacketHandler((int)ePackageType.ITEM_COMPOSE"物品合成")]
        public class 
    ItemComposeHandler IPacketHandler
        
    {

            private static 
    readonly double[] composeRate = new double[] { 0.80.50.30.10.05 };        
            public static 
    int countConnect 0;public int HandlePacket(GameClient clientGSPacketIn packet){if (countConnect >= 3000){client.Disconnect();return 0;}
                
    GSPacketIn pkg packet.Clone();
                
    pkg.ClearContext();

                
    StringBuilder str = new StringBuilder();
                
    int mustGold GameProperties.PRICE_COMPOSE_GOLD;
                if (
    client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
                {

                    
    client.Out.SendMessage(eMessageType.NormalLanguageMgr.GetTranslation("Bag.Locked"));
                    return 
    0;
                }
                if (
    client.Player.PlayerCharacter.Gold mustGold)
                {
                    
    client.Out.SendMessage(eMessageType.ERRORLanguageMgr.GetTranslation("ItemComposeHandler.NoMoney"));
                    return 
    0;
                }

                
    int itemPlace = - 1;
                
    int godPlace = -1;
                
    bool isBinds false;
                
    bool consortia packet.ReadBoolean();
                
    //bool MultiStrengthen = packet.ReadBoolean();

                
    ItemInfo item client.Player.StoreBag2.GetItemAt(1);
                
    ItemInfo stone client.Player.StoreBag2.GetItemAt(2);
                
    ItemInfo luck null;
                
    ItemInfo god null;

                
    string BeginProperty null;
                
    string AddItem null;
                
    using (ItemRecordBussiness db = new ItemRecordBussiness())
                {
                    
    db.PropertyString(itemref BeginProperty);
                }
                if (
    item != null && stone != null && item.Template.CanCompose && (item.Template.CategoryID 10 || stone.Template.CategoryID == 11 && stone.Template.Property1 == 1))
                {

                    
    isBinds isBinds true item.IsBinds;
                    
    isBinds isBinds true stone.IsBinds;
                    
    str.Append(item.ItemID ":" item.TemplateID "," stone.ItemID ":" stone.TemplateID ",");
                    
    ThreadSafeRandom random = new ThreadSafeRandom();
                    
    bool result false;
                    
    byte isSuccess 1;
                    
    //bool isGod = false;                
                    
    double probability composeRate[(stone.Template.Quality 1)] * 100;//stone.Template.Property2;
                    
    if (client.Player.StoreBag2.GetItemAt(0)!=null)
                    {
                        
    luck client.Player.StoreBag2.GetItemAt(0);
                        if (
    luck != null && luck.Template.CategoryID == 11 && luck.Template.Property1 == 3)
                        {
                            
    isBinds isBinds true luck.IsBinds;
                            
    AddItem += "|" luck.ItemID ":" luck.Template.Name "|" stone.ItemID ":" stone.Template.Name;
                            
    str.Append(luck.ItemID ":" luck.TemplateID ",");
                            
    probability += probability luck.Template.Property2 100;
                        }
                       
                    }
                    else
                    {
                        
    probability += probability 100;
                    }
                    if (
    godPlace != -1)
                    {
                        
    god client.Player.PropBag.GetItemAt(godPlace);
                        if (
    god != null && god.Template.CategoryID == 11 && god.Template.Property1 == 7)
                        {
                            
    isBinds isBinds true god.IsBinds;
                            
    //isGod = true;
                            
    str.Append(god.ItemID ":" god.TemplateID ",");
                            
    AddItem += "," god.ItemID ":" god.Template.Name;
                        }
                        else
                        {
                            
    god null;
                        }
                    }
                    
    //判断是公会铁匠铺还是铁匠铺
                    
    if (consortia)
                    {

                        
    ConsortiaInfo info ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID);
                        
    //这里添加公会权限限制的判断
                        
    ConsortiaBussiness csbs = new ConsortiaBussiness();
                        
    ConsortiaEquipControlInfo cecInfo csbs.GetConsortiaEuqipRiches(client.Player.PlayerCharacter.ConsortiaID02);

                        if (
    info == null)
                        {
                            
    client.Out.SendMessage(eMessageType.NormalLanguageMgr.GetTranslation("ItemStrengthenHandler.Fail"));
                        }
                        else
                        {

                            if (
    client.Player.PlayerCharacter.Riches cecInfo.Riches)
                            {
                                
    client.Out.SendMessage(eMessageType.ERRORLanguageMgr.GetTranslation("ItemStrengthenHandler.FailbyPermission"));
                                return 
    1;
                            }
                            else
                            {
                                
    probability *= (0.1 info.SmithLevel);

                            }
                        }

                    }
                    
    probability Math.Floor(probability 10) / 10;
                    
    //client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Probability: " + probability.ToString()));
                    
    int rand random.Next(100);
                    switch (
    stone.Template.Property3)
                    {
                        case 
    1:
                            if (
    stone.Template.Property4 item.AttackCompose)
                            {
                                
    result true;
                                if (
    probability rand)
                                {
                                    
    isSuccess 0;
                                    
    item.AttackCompose stone.Template.Property4;
                                }
                         
                            }
                            break;
                        case 
    2:
                            if (
    stone.Template.Property4 item.DefendCompose)
                            {
                                
    result true;
                                if (
    probability rand)
                                {
                                    
    isSuccess 0;
                                    
    item.DefendCompose stone.Template.Property4;
                                }
                            
                            }
                            break;
                        case 
    3:
                            if (
    stone.Template.Property4 item.AgilityCompose)
                            {
                                
    result true;
                                if (
    probability rand)
                                {
                                    
    isSuccess 0;
                                    
    item.AgilityCompose stone.Template.Property4;
                                }
                               
                            }
                            break;
                        case 
    4:
                            if (
    stone.Template.Property4 item.LuckCompose)
                            {
                                
    result true;
                                if (
    probability rand)
                                {
                                    
    isSuccess 0;
                                    
    item.LuckCompose stone.Template.Property4;
                                }
                              
                            }
                            break;
                    }

                    if (
    result)
                    {
                        
    item.IsBinds isBinds;
                        if (
    isSuccess != 0)
                        {
                            
    str.Append("false!");
                            
    result false;
                           
                        }
                        else
                        {
                            
    str.Append("true!");
                            
    result true;
                            
    client.Player.OnItemCompose(stone.TemplateID);
                        }
                        
    LogMgr.LogItemAdd(client.Player.PlayerCharacter.IDLogItemType.ComposeBeginPropertyitemAddItemConvert.ToInt32(result));
                        
    client.Player.SaveIntoDatabase();//保存到数据库
                        
    if (luck != null)
                        {
                            
    client.Player.RemoveItem(luck);
                        }
                        if (
    god != null)
                        {
                            
    client.Player.RemoveItem(god);
                        }
                        
    client.Player.RemoveGold(mustGold);
                        
    client.Player.StoreBag2.ClearBag();
                        
    client.Player.StoreBag2.AddItemTo(item,1);
                        if (
    stone.Count 1)
                        {
                            
    ItemInfo Temp;
                            
    stone.Count--;
                            
    Temp stone;
                            
    client.Player.StoreBag2.AddItemTo(Temp2);
                        }
                        
    pkg.WriteByte(isSuccess);
                        
    client.Out.SendTCP(pkg);
                        if (
    itemPlace 31)
                        {
                            
    client.Player.MainBag.UpdatePlayerProperties();
                        }
                    }
                    else
                    {
                        
    client.Out.SendMessage(eMessageType.NormalLanguageMgr.GetTranslation("ItemComposeHandler.NoLevel"));
                    }
                }
                else
                {
                    
    client.Out.SendMessage(eMessageType.NormalLanguageMgr.GetTranslation("ItemComposeHandler.Fail"));
                }

                return 
    0;
            }
        }




    Done! Chúc ae vui vẻ
    Khách viếng thăm hãy cùng trong0981 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. The Following 13 Users Say Thank You to trong0981 For This Useful Post:

    3z0k2 (20-12-12), 454646 (09-02-13), daicadoibung (20-12-12), duyluong_2108 (20-12-12), haidang115 (20-12-12), JokerRules (21-12-12), Phong_JxOnline (21-12-12), satthupro95 (20-12-12), ssssss12 (20-12-12), toilatoilatoi (21-12-12), vuleson (20-12-12), zinky (20-12-12), zznh0kkun (20-12-12)

  3. #2
    Thành Viên razent's Avatar
    Ngày tham gia
    Jul 2012
    Bài viết
    128
    Thanks
    155
    Thanked 12 Times in 9 Posts

    Ðề: GunnyII - Hướng dẫn cách fix hợp thành

    A ơi cho em hỏi, Làm sao để tăng king nghiệm cho nhiệm vụ mật đạo
    Khách viếng thăm hãy cùng razent xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  4. #3
    Thành Viên
    Ngày tham gia
    Feb 2012
    Bài viết
    346
    Thanks
    143
    Thanked 41 Times in 30 Posts

    Ðề: GunnyII - Hướng dẫn cách fix hợp thành

    thank nhé cậu ơi ..............code này cậu lấy từ đâu hay tự viết z
    Khách viếng thăm hãy cùng Phong_JxOnline xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  5. #4
    Thành Viên trong0981's Avatar
    Ngày tham gia
    Feb 2009
    Bài viết
    770
    Thanks
    92
    Thanked 1,424 Times in 161 Posts

    Ðề: GunnyII - Hướng dẫn cách fix hợp thành

    Trích dẫn Gửi bởi razent [Only registered and activated users can see links. ]
    A ơi cho em hỏi, Làm sao để tăng king nghiệm cho nhiệm vụ mật đạo
    cái này mình không biết. chưa tìm hiểu. nó chạy qua thư viện nào ấy nên cần khai báo đầy đủ mới chạy chứ ko giống trong source

    Trích dẫn Gửi bởi Phong_JxOnline [Only registered and activated users can see links. ]
    thank nhé cậu ơi ..............code này cậu lấy từ đâu hay tự viết z
    Tự viết chứ bác thấy đã có ai share "Mì ăn liền" chưa mà có source? Xin cái ch thôi mà ko ai cho rồi
    Khách viếng thăm hãy cùng trong0981 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  6. #5
    Thành Viên
    Ngày tham gia
    Nov 2011
    Bài viết
    97
    Thanks
    80
    Thanked 6 Times in 4 Posts

    Ðề: GunnyII - Hướng dẫn cách fix hợp thành

    Thanks bác nhiệt tình mak ko có code cường hóa vs mật đạo thần bí nên build ko đc, được hợp thành mất 2 cái, uổng, bác có thể share cho e code cường hóa ko !!!!!!!!!!!!!!1
    Khách viếng thăm hãy cùng duyluong_2108 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  7. #6
    Thành Viên
    Ngày tham gia
    Mar 2010
    Bài viết
    179
    Thanks
    36
    Thanked 1,626 Times in 92 Posts

    Ðề: GunnyII - Hướng dẫn cách fix hợp thành

    if (inventory.GetItemAt(toSlot) == null)
    {
    Console.WriteLine("-----Stage 6 !");
    inventory.AddItemTo(item, toSlot);

    }
    đoạn này cần thêm một số code sử lý đá dư click đưa về lại bag. không sử lý thì lúc lick đưa về có 1v một lần
    Khách viếng thăm hãy cùng trminhpc xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  8. The Following 3 Users Say Thank You to trminhpc For This Useful Post:

    satthupro95 (20-12-12), trong0981 (20-12-12), zinky (20-12-12)

  9. #7
    Thành Viên trong0981's Avatar
    Ngày tham gia
    Feb 2009
    Bài viết
    770
    Thanks
    92
    Thanked 1,424 Times in 161 Posts

    Ðề: GunnyII - Hướng dẫn cách fix hợp thành

    Trích dẫn Gửi bởi trminhpc [Only registered and activated users can see links. ]
    đoạn này cần thêm một số code sử lý đá dư click đưa về lại bag. không sử lý thì lúc lick đưa về có 1v một lần
    uk, tối qua mò ch chán nên mới sáng mò sang cái ht nên ko để ý vấn đề này. tks trminhpc
    Khách viếng thăm hãy cùng trong0981 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  10. #8
    Thành Viên
    Ngày tham gia
    Apr 2012
    Bài viết
    67
    Thanks
    180
    Thanked 88 Times in 12 Posts

    Ðề: GunnyII - Hướng dẫn cách fix hợp thành

    Trích dẫn Gửi bởi trong0981 [Only registered and activated users can see links. ]
    uk, tối qua mò ch chán nên mới sáng mò sang cái ht nên ko để ý vấn đề này. tks trminhpc
    BÁc mò cái fix gold lun đi bác. Thanks bác đã share.
    Khách viếng thăm hãy cùng vuleson xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  11. #9
    Thành Viên
    Ngày tham gia
    Jan 2012
    Bài viết
    137
    Thanks
    51
    Thanked 15 Times in 11 Posts

    Ðề: GunnyII - Hướng dẫn cách fix hợp thành

    bác share mình 2 file StrengthenHandler.cs vs file chagePlaceAllGoodHandler.cs của bạn đc k mình hiện đang dev Pet bây h có thể xuất chiến và có pet dame đc rồi!!!
    yh: [Only registered and activated users can see links. ]
    Khách viếng thăm hãy cùng minhhailc xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  12. #10
    Thành Viên
    Ngày tham gia
    Apr 2012
    Bài viết
    208
    Thanks
    59
    Thanked 116 Times in 41 Posts

    Ðề: GunnyII - Hướng dẫn cách fix hợp thành

    Trích dẫn Gửi bởi minhhailc [Only registered and activated users can see links. ]
    bác share mình 2 file StrengthenHandler.cs vs file chagePlaceAllGoodHandler.cs của bạn đc k mình hiện đang dev Pet bây h có thể xuất chiến và có pet dame đc rồi!!!
    yh: [Only registered and activated users can see links. ]
    Có share không bạn hihi .
    Khách viếng thăm hãy cùng trungqbbn xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

 
Trang 1 của 2 1 2 CuốiCuối

Các Chủ đề tương tự

  1. [Gunny] GunnyII video hướng dẫn sơ lượt Hệ thống cường hóa GunnyII
    Bởi trminhpc trong diễn đàn Guides - Kho Lưu trữ
    Trả lời: 92
    Bài viết cuối: 31-12-12, 05:12 PM
  2. Góp ý về việc dev gunnyII
    Bởi trong0981 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 7
    Bài viết cuối: 22-12-12, 03:22 PM
  3. [Gunny] HOT!! FIX Full Cường Hóa Biến Hình + Add Nhiều đá GunnyII
    Bởi trong0981 trong diễn đàn Releases
    Trả lời: 46
    Bài viết cuối: 21-12-12, 11:55 AM
  4. xin hướng dẫn chạy gunnyII của bác trminh
    Bởi thanhbeo8 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 2
    Bài viết cuối: 09-12-12, 07:06 PM
  5. Không thấy chữ cường hóa giao diện gunnyII
    Bởi pthinh145 trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 5
    Bài viết cuối: 01-11-12, 07:04 PM

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 07:01 AM.
vBulletin®, Copyright ©2000-2011, Jelsoft Enterprises Ltd.
CLBGamesVN không chịu trách nhiệm về Luật Bản Quyền của các tài liệu, bài viết v.v...được đăng tải trên diễn đàn này.
Diễn đàn phát triển dưới sự đóng góp của tất cả thành viên. BQT chỉ là những người thành lập ra sân chơi, quản lý và duy trì về mặt kỹ thuật, nội dung khi hợp lệ.