Guida AutoPerfezione tramite NPC

Exco

Utente Gold
8 Agosto 2013
461
53
74
218


C#:
```csharp

case 19418:
                                            {
                                                try
                                                {
                                                    ItemInstance specialistInstance1 = Session.Character.Inventory.LoadBySlotAndType((byte)EquipmentType.Sp, InventoryType.Wear);
                                                    if (specialistInstance1 != null)
                                                    {

                                                        short[] upsuccess = { 50, 40, 30, 20, 10 };

                                                        int[] goldprice = { 5000, 10000, 20000, 50000, 100000 };
                                                        byte[] stoneprice = { 1, 2, 3, 4, 5 };
                                                        short stonevnum;
                                                        byte upmode = 1;
                                                        short SpDamage = 0;
                                                        short SpDefence = 0;
                                                        short SpElement = 0;
                                                        short SpHP = 0;
                                                        short SpFire = 0;
                                                        short SpWater = 0;
                                                        short SpLight = 0;
                                                        short SpDark = 0;
                                                        short Fallimenti = 0;
                                                        short Successi = 0;

                                                        switch (specialistInstance1.Item.Morph)
                                                        {
                                                            case 2:
                                                            case 6:
                                                            case 9:
                                                            case 12:
                                                                stonevnum = 2514;
                                                                break;

                                                            case 3:
                                                            case 4:
                                                            case 14:
                                                                stonevnum = 2515;
                                                                break;

                                                            case 5:
                                                            case 11:
                                                            case 15:
                                                                stonevnum = 2516;
                                                                break;

                                                            case 10:
                                                            case 13:
                                                            case 7:
                                                                stonevnum = 2517;
                                                                break;

                                                            case 17:
                                                            case 18:
                                                            case 19:
                                                                stonevnum = 2518;
                                                                break;

                                                            case 20:
                                                            case 21:
                                                            case 22:
                                                                stonevnum = 2519;
                                                                break;

                                                            case 23:
                                                            case 24:
                                                            case 25:
                                                                stonevnum = 2520;
                                                                break;

                                                            case 26:
                                                            case 27:
                                                            case 28:
                                                                stonevnum = 2521;
                                                                break;

                                                            default:
                                                                return;
                                                        }

                                                        while (Session.Character.Inventory.CountItem(stonevnum) > 0)
                                                        {
                                                            if (specialistInstance1.SpStoneUpgrade > 99)
                                                            {
                                                                break;
                                                            }
                                                            if (specialistInstance1.SpStoneUpgrade > 80)
                                                            {
                                                                upmode = 5;
                                                            }
                                                            else if (specialistInstance1.SpStoneUpgrade > 60)
                                                            {
                                                                upmode = 4;
                                                            }
                                                            else if (specialistInstance1.SpStoneUpgrade > 40)
                                                            {
                                                                upmode = 3;
                                                            }
                                                            else if (specialistInstance1.SpStoneUpgrade > 20)
                                                            {
                                                                upmode = 2;
                                                            }

                                                            if (Session.Character.Gold < goldprice[upmode - 1])
                                                            {
                                                                break;
                                                            }
                                                            if (Session.Character.Inventory.CountItem(stonevnum) < stoneprice[upmode - 1])
                                                            {
                                                                break;
                                                            }
                                                            int rnd = ServerManager.RandomNumber();
                                                            if (rnd < upsuccess[upmode - 1])
                                                            {
                                                                byte type = (byte)ServerManager.RandomNumber(0, 16), count = 1;
                                                                if (upmode == 4)
                                                                {
                                                                    count = 2;
                                                                }
                                                                if (upmode == 5)
                                                                {
                                                                    count = (byte)ServerManager.RandomNumber(3, 6);
                                                                }
                                                                if (type < 3)
                                                                {
                                                                    specialistInstance1.SpDamage += count;
                                                                    SpDamage += count;
                                                                }
                                                                else if (type < 6)
                                                                {
                                                                    specialistInstance1.SpDefence += count;
                                                                    SpDefence += count;
                                                                }
                                                                else if (type < 9)
                                                                {
                                                                    specialistInstance1.SpElement += count;
                                                                    SpElement += count;
                                                                }
                                                                else if (type < 12)
                                                                {
                                                                    specialistInstance1.SpHP += count;
                                                                    SpHP += count;
                                                                }
                                                                else if (type == 12)
                                                                {
                                                                    specialistInstance1.SpFire += count;
                                                                    SpFire += count;
                                                                }
                                                                else if (type == 13)
                                                                {
                                                                    specialistInstance1.SpWater += count;
                                                                    SpWater += count;
                                                                }
                                                                else if (type == 14)
                                                                {
                                                                    specialistInstance1.SpLight += count;
                                                                    SpLight += count;
                                                                }
                                                                else if (type == 15)
                                                                {
                                                                    specialistInstance1.SpDark += count;
                                                                    SpDark += count;
                                                                }
                                                                specialistInstance1.SpStoneUpgrade++;
                                                                Successi++;
                                                            }
                                                            else
                                                            {
                                                                Fallimenti++;
                                                            }
                                                            Session.SendPacket(specialistInstance1.GenerateInventoryAdd());
                                                            Session.Character.Gold -= goldprice[upmode - 1];
                                                            Session.SendPacket(Session.Character.GenerateGold());
                                                            Session.Character.Inventory.RemoveItemAmount(stonevnum, stoneprice[upmode - 1]);
                                                        }
                                                        if (Successi > 0 || Fallimenti > 0)
                                                        {
                                                            Session.CurrentMapInstance.Broadcast(StaticPacketHelper.GenerateEff(UserType.Player, Session.Character.CharacterId, 3005), Session.Character.MapX, Session.Character.MapY);
                                                            Session.SendPacket(Session.Character.GenerateSay("---------------Perfection Status---------------", 11));
                                                            Session.SendPacket(Session.Character.GenerateSay("Succès: " + Successi, 11));
                                                            Session.SendPacket(Session.Character.GenerateSay("Fails: " + Fallimenti, 11));
                                                            Session.SendPacket(Session.Character.GenerateSay("Attaque: " + SpDamage, 11));
                                                            Session.SendPacket(Session.Character.GenerateSay("Défense: " + SpDefence, 11));
                                                            Session.SendPacket(Session.Character.GenerateSay("HP: " + SpHP, 11));
                                                            Session.SendPacket(Session.Character.GenerateSay("Element " + SpElement, 11));
                                                            Session.SendPacket(Session.Character.GenerateSay("Feu: " + SpFire, 11));
                                                            Session.SendPacket(Session.Character.GenerateSay("Eau: " + SpWater, 11));
                                                            Session.SendPacket(Session.Character.GenerateSay("Lumière: " + SpLight, 11));
                                                            Session.SendPacket(Session.Character.GenerateSay("Obscure: " + SpDark, 11));
                                                            Session.SendPacket(Session.Character.GenerateSay("-----------------------------------------------", 11));
                                                        }
                                                        else
                                                        {
                                                            Session.SendPacket(Session.Character.GenerateSay("NOT_ENOUGH_ITEM", 10));
                                                        }
                                                    }
                                                    else
                                                    {
                                                        Session.SendPacket(Session.Character.GenerateSay("WEAR_SP", 10));
                                                    }
                                                }
                                                catch (Exception ex)
                                                {
                                                    Logger.Error(ex);
                                                }

                                            }
                                            break;


```
 
  • Mi piace
Reazioni: Israff
Prima cosa va inserito nell NRunHanlder e seconda cosa devi trovare un dialogo che usi quel nrun oppure lo crei tu dal client;)