예제 #1
0
 /* Print all item sets in input item set table */
 public static void Print(ItemSetTable ist)
 {
     if (ist != null)
     {
         Console.WriteLine("Order: {0}", ist.order);
         Console.WriteLine(ist.ToString());
     }
     else
         Console.WriteLine("don't exist");
 }
예제 #2
0
        public static void Initialize()
        {
            nextPlayerGuid = CharacterTable.getNextGuid();
            nextPlayerGuid++;
            nextItemGuid = InventoryItemTable.getNextGuid();
            nextItemGuid++;
            nextGuildId = GuildTable.getNextGuid();
            nextGuildId++;
            nextMountId = MountTable.getNextGuid();
            nextMountId++;
            nextSpeakingId = SpeakingTable.getNextGuid();
            nextSpeakingId++;
            SpellTable.Load();
            ExpFloorTable.Load();
            MonsterTable.Load();
            ItemTemplateTable.Load();
            ItemTemplateTable.LoadItemActions();
            ItemSetTable.Load();
            DropTable.Load();
            TitleTable.Load();
            IObjectTemplateTable.Load();
            AreaTable.Load();
            AreaSubTable.Load();
            MapTable.Load();
            MapTable.LoadActions();
            CellActionTable.Load();
            MobGroupFixTable.Load();
            BreedTable.Load();
            NpcTemplateTable.Load();
            NpcTemplateTable.LoadPlaces();
            NpcQuestionTable.Load();
            NpcReplyTable.Load();
            ShopNpcTable.Initialize();
            GuildTable.Load();
            CharactersGuildTable.Load();
            TaxCollectorTable.Load();
            PrismeTable.Load();
            BidHouseTable.Load();
            BidHouseTable.LoadItems();
            MountParkTable.Load();
            StaticMountTable.Load();
            MountTable.Load();//TODO Dynamic load of Character mount
            ZaapTable.Load();
            ZaapiTable.Load();

            var Timer = new System.Timers.Timer(1000 * 60 * 25);

            Timer.Elapsed += delegate(object sender, ElapsedEventArgs e)
            {
                Save();
            };
            Timer.Start();
        }
예제 #3
0
 public void onMoveItem(InventoryItemModel Item)
 {
     lock (this.ItemSetEffects)
     {
         if (Item.Template.ItemSetID != -1)
         {
             if (ItemSetTable.getItemSet(Item.Template.ItemSetID) == null)
             {
                 return;
             }
             var countByItemSet = CountItemByItemSet(Item.Template.ItemSetID);
             var Stat           = ItemSetTable.getItemSet(Item.Template.ItemSetID).getBonusStatByItemCount(countByItemSet);
             if (!this.ItemSetEffects.Keys.Contains(Item.Template.ItemSetID))
             {
                 if (countByItemSet > 1)
                 {
                     this.ItemSetEffects.Add(Item.Template.ItemSetID, Stat);
                     this.Player.myStats.Merge(Stat);
                     this.Player.Life += Stat.GetTotal(EffectEnum.AddVitalite);
                 }
             }
             else
             {
                 if (countByItemSet <= 1)
                 {
                     this.Player.myStats.UnMerge(this.ItemSetEffects[Item.Template.ItemSetID]);
                     this.Player.Life -= this.ItemSetEffects[Item.Template.ItemSetID].GetTotal(EffectEnum.AddVitalite);
                     this.ItemSetEffects.Remove(Item.Template.ItemSetID);
                 }
                 else if (this.ItemSetEffects[Item.Template.ItemSetID] != Stat)
                 {
                     this.Player.myStats.UnMerge(this.ItemSetEffects[Item.Template.ItemSetID]);
                     this.Player.Life -= this.ItemSetEffects[Item.Template.ItemSetID].GetTotal(EffectEnum.AddVitalite);
                     this.ItemSetEffects[Item.Template.ItemSetID] = Stat;
                     this.Player.myStats.Merge(Stat);
                     this.Player.Life += Stat.GetTotal(EffectEnum.AddVitalite);
                 }
             }
             Player.BeginCachedBuffer();
             Player.Send(new ItemSetAppearMessage(Player, Item.Template.ItemSetID));
             Player.Send(new AccountStatsMessage(Player));
             Player.EndCachedBuffer();
         }
     }
 }
예제 #4
0
 public void RefreshSet()
 {
     lock (ItemsCache)
     {
         foreach (var Item in this.ItemsCache.Values.Where(x => x != null && x.Template.ItemSetID != -1 && ItemSetTable.getItemSet(x.Template.ItemSetID) != null && x.Slot > ItemSlotEnum.SLOT_INVENTAIRE && x.Slot <= ItemSlotEnum.SLOT_BOUCLIER))
         {
             if (!this.ItemSetEffects.Keys.Contains(Item.Template.ItemSetID))
             {
                 if (CountItemByItemSet(Item.Template.ItemSetID) > 1)
                 {
                     this.ItemSetEffects.Add(Item.Template.ItemSetID, ItemSetTable.getItemSet(Item.Template.ItemSetID).getBonusStatByItemCount(CountItemByItemSet(Item.Template.ItemSetID)));
                     this.Player.myStats.Merge(ItemSetTable.getItemSet(Item.Template.ItemSetID).getBonusStatByItemCount(CountItemByItemSet(Item.Template.ItemSetID)));
                     this.Player.Life += ItemSetTable.getItemSet(Item.Template.ItemSetID).getBonusStatByItemCount(CountItemByItemSet(Item.Template.ItemSetID)).GetTotal(EffectEnum.AddVitalite);
                 }
                 Player.Send(new ItemSetAppearMessage(Player, Item.Template.ItemSetID));
             }
         }
     }
 }
예제 #5
0
        public override string Compile()
        {
            StringBuilder Packet = new StringBuilder("OS");
            int           num    = Character.InventoryCache.CountItemByItemSet(Pano);

            if (num <= 0)
            {
                Packet.Append("-").Append(Pano);
            }
            else
            {
                Packet.Append("+").Append(Pano).Append("|");
                var ItemSet = ItemSetTable.getItemSet(Pano);
                if (ItemSet != null)
                {
                    StringBuilder Items = new StringBuilder();
                    foreach (var Item in ItemSet.Items)
                    {
                        if (Character.InventoryCache.HasTemplateEquiped(Item.ID))
                        {
                            if (Items.Length > 0)
                            {
                                Items.Append(";");
                            }
                            Items.Append(Item.ID);
                        }
                    }
                    var stat = ItemSet.getBonusStatByItemCount(num).ToItemStats();
                    if (stat.StartsWith(","))
                    {
                        stat = stat.Substring(1);
                    }
                    Packet.Append(Items.ToString()).Append("|").Append(stat);
                }
            }
            return(Packet.ToString());
        }
예제 #6
0
        public static void Main(string[] args)
        {
            Console.WriteLine(DateTime.Now.ToString("O"));
            string inputFile = null;
            string outputFile = null;
            int minSupPercent = 0;
            int minSupport = 0;

            if (args.Length != 3)
            {
                PrintUsage();
            }
            try
            {
                minSupPercent = Convert.ToInt32(args[0]);
                inputFile = String.Copy(args[1]);
                outputFile = String.Copy(args[2]);

                // If input file don't exist, throw exception.
                if (File.Exists(inputFile) == false)
                    throw new FileNotFoundException();

                // If output file already exists, the file will be deleted.
                if (File.Exists(outputFile) == true)
                    File.Delete(outputFile);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                PrintUsage();
            }

            TransactionDatabase database = new TransactionDatabase(inputFile, outputFile);
            ItemSetTable candidateTable = new ItemSetTable();
            ItemSetTable frequentTable = null;

            /* Printing input arguments.. */
            minSupport = minSupPercent * database.Count / 100;
            Console.WriteLine("minimum support: {0} %", minSupPercent);
            Console.WriteLine("minimum support: {0}", minSupport);
            ItemSetTable.SetMinSupport(minSupport);

            /* Build C(1), the candidate item sets with size 1 */
            candidateTable = database.FindFirstCandidateItemSetTable();

            /* Build L(1), the frequent item sets with size 1 */
            if (candidateTable != null)
                frequentTable = candidateTable.BuildFrequentItemSet();

            for (int k=1; frequentTable != null; ++k)
            {
                // C(k+1) = candidates generated from L(k)
                candidateTable = frequentTable.BuildCandidateItemSet();

                // for each transaction t in database do increment the count of
                // all candidates in C(k+1) that are contained in t
                database.IncrementCandidatesIn(candidateTable);

                // L(k+1) = candidates in C(K+1) with min_support
                frequentTable = candidateTable.BuildFrequentItemSet();
                if (frequentTable != null)
                {
                    foreach (ItemSet frequentItemSet in frequentTable.Keys)
                        database.FindAssociationRules(frequentItemSet);
                }
            }
            Console.WriteLine("Finding Association Rules is finished.");
            Console.WriteLine(DateTime.Now.ToString("O"));
        }