[Request] ArtisanWind Met/DB Upgrade TC

07/17/2009 22:18 nestreys#1
Anyone has a code for artisanwind that upgrades items in twin city. Its LOTF. Anyone can help me. thanks
07/17/2009 22:22 n0mansland#2
What source are you using? Most likely Binary right?
07/17/2009 22:37 InfamousNoone#3
sigh, work out the changes for yourself.
though I doubt the mass of epvp is capable of that.

Code:
using System;
using System.IO;
using ConquerServer_v2.Core;
using ConquerServer_v2.Client;
using ConquerServer_v2.Database;
using ConquerServer_v2.Packet_Structures;

namespace ConquerServer_v2.Packet_Processor
{
    public unsafe partial class PacketProcessor
    {
        public static void UpgradeItemLevel(GameClient Client, ItemUsuagePacket* Packet)
        {
            Item MainItem = Client.Inventory.Search(Packet->UID);
            if (MainItem != null)
            {
                byte SubItemSlot;
                Item SubItem = Client.Inventory.Search(Packet->dwParam1, out SubItemSlot);
                if (SubItem != null)
                {
                    if (SubItem.ID == 1088001)
                    {
                        uint itemID = MainItem.ID;
                        int itemType = MainItem.GetSmallItemType();
                        switch (itemType)
                        {
                            case 11: itemID += 10; break; // head
                            case 12: itemID += 20; break; // neck
                            case 15: itemID += 20; break; // ring
                            case 13: itemID += 10; break; // armor
                            case 16: itemID += 20; break; // boots
                            default:
                                {
                                    if (itemType >= 40 && itemType <= 61) // weapons
                                        itemID += 10;
                                    break;
                                }
                        }
                        if (itemID != MainItem.ID)
                        {
                            if (File.Exists(ServerDatabase.Path + @"\Items\" + itemID.ToString() + ".ini"))
                            {
                                Client.Inventory.RemoveBySlot(SubItemSlot);
                                if (Kernel.Random.Next(1000) % 100 <= 40)
                                {
                                    MainItem.ID = itemID;
                                    MainItem.SendInventoryUpdate(Client);
                                }
                                return;
                            }
                        }
                        Client.Send(MessageConst.CANNOT_UPGRADE_LEVEL);
                    }
                }
            }
        }
    }
}
Code:
using System;
using ConquerServer_v2.Core;
using ConquerServer_v2.Client;
using ConquerServer_v2.Database;
using ConquerServer_v2.Packet_Structures;

namespace ConquerServer_v2.Packet_Processor
{
    public unsafe partial class PacketProcessor
    {
        public static void UpgradeItemQuality(GameClient Client, ItemUsuagePacket* Packet)
        {
            Item MainItem = Client.Inventory.Search(Packet->UID);
            if (MainItem != null)
            {
                byte SubItemSlot;
                Item SubItem = Client.Inventory.Search(Packet->dwParam1, out SubItemSlot);
                if (SubItem != null)
                {
                    if (SubItem.ID == 1088000)
                    {
                        byte itemQuality = MainItem.GetQuality();
                        if (itemQuality >= 3 && itemQuality < 9)
                        {   
                            Client.Inventory.RemoveBySlot(SubItemSlot);
                            bool Lucky = false;
                            if (itemQuality < 6)
                                Lucky = Kernel.Random.Next(1000) % 100 <= 80;
                            else if (itemQuality == 6)
                                Lucky = Kernel.Random.Next(1000) % 100 <= 50;
                            else if (itemQuality == 7)
                                Lucky = Kernel.Random.Next(1000) % 100 <= 20;
                            else if (itemQuality == 8)
                                Lucky = Kernel.Random.Next(1000) % 100 <= 8;
                            if (Lucky)
                            {
                                MainItem.ID++;
                                MainItem.SendInventoryUpdate(Client);
                            }
                        }
                        else
                        {
                            Client.Send(MessageConst.CANNOT_UPGRADE_QUALITY);
                        }
                    }
                }
            }
        }
    }
}
07/18/2009 04:57 nestreys#4
Its an LOTF source.