Guida NPC Auto Upgrade SP

Israff

Utente Bronze
12 Agosto 2018
28
19
4
40
Add Code : NRunHandler.cs

Codice:
                        ItemInstance specialistInstance = Session.Character.Inventory.LoadBySlotAndType((byte)EquipmentType.Sp, InventoryType.Wear);[/CENTER]
                        if (specialistInstance != null)
                        {
                            if (specialistInstance.Upgrade >= 15)
                            {
                                return;
                            }
                            byte[] upfail = { 20, 25, 30, 40, 50, 60, 65, 70, 75, 80, 90, 93, 95, 97, 99 };
                            byte[] destroy = { 0, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 70 };

                            int[] goldprice = { 200000, 200000, 200000, 200000, 200000, 500000, 500000, 500000, 500000, 500000, 1000000, 1000000, 1000000, 1000000, 1000000 };
                            byte[] feather = { 3, 5, 8, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 70 };
                            byte[] fullmoon = { 1, 3, 5, 7, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 };
                            byte[] soul = { 2, 4, 6, 8, 10, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5 };
                            const short featherVnum = 2282;
                            const short fullmoonVnum = 1030;
                            const short greenSoulVnum = 2283;
                            const short redSoulVnum = 2284;
                            const short blueSoulVnum = 2285;
                            const short dragonSkinVnum = 2511;
                            const short dragonBloodVnum = 2512;
                            const short dragonHeartVnum = 2513;
                            const short blueScrollVnum = 1363;
                            const short redScrollVnum = 1364;

                            int fallimento = 0;
                            short itemToRemove = 2283;

                            if (!Session.HasCurrentMapInstance)
                            {
                                return;
                            }
                            if (specialistInstance.SpLevel < 99)
                            {
                                Session.SendPacket(Session.Character.GenerateSay(string.Format(Language.Instance.GetMessageFromKey("LVL_REQUIRED"), 99), 11));
                                return;
                            }
                            while (specialistInstance.Upgrade < 15)
                            {
                                if (Session.Character.Gold < goldprice[specialistInstance.Upgrade])
                                {
                                    Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey("NOT_ENOUGH_MONEY"), 10));
                                    break;
                                }
                                if (Session.Character.Inventory.CountItem(featherVnum) < feather[specialistInstance.Upgrade])
                                {
                                    Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(featherVnum).Name, feather[specialistInstance.Upgrade])), 10));
                                    break;
                                }
                                if (Session.Character.Inventory.CountItem(fullmoonVnum) < fullmoon[specialistInstance.Upgrade])
                                {
                                    Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(featherVnum).Name, fullmoon[specialistInstance.Upgrade])), 10));
                                    break;
                                }
                                if (specialistInstance.Item.Morph <= 16)
                                {
                                    if (specialistInstance.Upgrade < 5)
                                    {
                                        if (Session.Character.Inventory.CountItem(greenSoulVnum) < soul[specialistInstance.Upgrade])
                                        {
                                            Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(greenSoulVnum).Name, soul[specialistInstance.Upgrade])), 10));
                                            break;
                                        }
                                        if (Session.Character.Inventory.CountItem(blueScrollVnum) == 0)
                                        {
                                            Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(blueScrollVnum).Name, 1)), 10));
                                            break;
                                        }
                                        itemToRemove = greenSoulVnum;
                                        Session.Character.Inventory.RemoveItemAmount(blueScrollVnum);
                                    }
                                    else if (specialistInstance.Upgrade < 10)
                                    {
                                        if (Session.Character.Inventory.CountItem(redSoulVnum) < soul[specialistInstance.Upgrade])
                                        {
                                            Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(redSoulVnum).Name, soul[specialistInstance.Upgrade])), 10));
                                            break;
                                        }
                                        if (Session.Character.Inventory.CountItem(blueScrollVnum) == 0)
                                        {
                                            Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(blueScrollVnum).Name, 1)), 10));
                                            break;
                                        }
                                        itemToRemove = redSoulVnum;
                                        Session.Character.Inventory.RemoveItemAmount(blueScrollVnum);

                                    }
                                    else
                                    {
                                        if (Session.Character.Inventory.CountItem(blueSoulVnum) < soul[specialistInstance.Upgrade])
                                        {
                                            Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(blueSoulVnum).Name, soul[specialistInstance.Upgrade])), 10));
                                            break;
                                        }
                                        if (Session.Character.Inventory.CountItem(redScrollVnum) == 0)
                                        {
                                            Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(redScrollVnum).Name, 1)), 10));
                                            break;
                                        }
                                        itemToRemove = blueSoulVnum;
                                        Session.Character.Inventory.RemoveItemAmount(redScrollVnum);
                                    }
                                }
                                else
                                {
                                    if (specialistInstance.Upgrade < 5)
                                    {
                                        if (Session.Character.Inventory.CountItem(dragonSkinVnum) < soul[specialistInstance.Upgrade])
                                        {
                                            Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(dragonSkinVnum).Name, soul[specialistInstance.Upgrade])), 10));
                                            break;
                                        }
                                        if (Session.Character.Inventory.CountItem(blueScrollVnum) == 0)
                                        {
                                            Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(blueScrollVnum).Name, 1)), 10));
                                            break;
                                        }
                                        Session.Character.Inventory.RemoveItemAmount(blueScrollVnum);
                                        itemToRemove = dragonSkinVnum;
                                    }
                                    else if (specialistInstance.Upgrade < 10)
                                    {
                                        if (Session.Character.Inventory.CountItem(dragonBloodVnum) < soul[specialistInstance.Upgrade])
                                        {
                                            Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(dragonBloodVnum).Name, soul[specialistInstance.Upgrade])), 10));
                                            break;
                                        }
                                        if (Session.Character.Inventory.CountItem(blueScrollVnum) == 0)
                                        {
                                            Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(blueScrollVnum).Name, 1)), 10));
                                            break;
                                        }
                                        Session.Character.Inventory.RemoveItemAmount(blueScrollVnum);
                                        itemToRemove = dragonBloodVnum;

                                    }
                                    else
                                    {
                                        if (Session.Character.Inventory.CountItem(dragonHeartVnum) < soul[specialistInstance.Upgrade])
                                        {
                                            Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(dragonHeartVnum).Name, soul[specialistInstance.Upgrade])), 10));
                                            break;
                                        }
                                        if (Session.Character.Inventory.CountItem(redScrollVnum) == 0)
                                        {
                                            Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey(string.Format(Language.Instance.GetMessageFromKey("NOT_ENOUGH_ITEMS"), ServerManager.GetItem(redScrollVnum).Name, 1)), 10));
                                            break;
                                        }
                                        Session.Character.Inventory.RemoveItemAmount(redScrollVnum);
                                        itemToRemove = dragonHeartVnum;
                                    }
                                }

                                Session.Character.Gold -= goldprice[specialistInstance.Upgrade];
                                Session.Character.Inventory.RemoveItemAmount(featherVnum, feather[specialistInstance.Upgrade]);
                                int rnd = ServerManager.RandomNumber();
                                if (rnd < upfail[specialistInstance.Upgrade])
                                {
                                    Session.Character.Inventory.RemoveItemAmount(itemToRemove, soul[specialistInstance.Upgrade]);
                                    Session.Character.Inventory.RemoveItemAmount(fullmoonVnum, fullmoon[specialistInstance.Upgrade]);
                                    fallimento++;
                                }
                                else
                                {
                                    Session.Character.Inventory.RemoveItemAmount(itemToRemove, soul[specialistInstance.Upgrade]);
                                    Session.Character.Inventory.RemoveItemAmount(fullmoonVnum, fullmoon[specialistInstance.Upgrade]);
                                    specialistInstance.Upgrade++;
                                    if (specialistInstance.Upgrade == 5 || specialistInstance.Upgrade >= 10)
                                    {
                                        Session.Character.InsertSpUpgradeLog(specialistInstance.Upgrade, specialistInstance.ItemVNum);
                                    }
                                    if (specialistInstance.Upgrade > 8)
                                    {
                                        Session.Character.Family?.InsertFamilyLog(FamilyLogType.ItemUpgraded, Session.Character.Name, itemVNum: specialistInstance.ItemVNum, upgrade: specialistInstance.Upgrade);
                                    }
                                    Session.SendPacket(specialistInstance.GenerateInventoryAdd());
                                }
                                Session.SendPacket(Session.Character.GenerateGold());
                                Session.SendPacket(Session.Character.GenerateEq());
                            }
                            Session.CurrentMapInstance.Broadcast(StaticPacketHelper.GenerateEff(UserType.Player, Session.Character.CharacterId, 3005), Session.Character.MapX, Session.Character.MapY);
                            Session.SendPacket(Session.Character.GenerateSay("-------------Upgrade Status-------------", 11));
                            Session.SendPacket(Session.Character.GenerateSay("Upgrade Sp: " + specialistInstance.Upgrade, 11));
                            Session.SendPacket(Session.Character.GenerateSay("Fallimenti: " + fallimento, 11));
                            Session.SendPacket(Session.Character.GenerateSay("---------------------------------------", 11));
                        }
 
  • Mi piace
Reazioni: Thomas Shelby