Пример #1
0
 private void Client_OnSetLootTable(object sender, LootTableArgs e)
 {
     if (BuildAuthorizedConnection((FFClient)sender))
     {
         FFTask task = new FFTask(FFTask.FFTaskType.Build_LootTableInfo, (FFClient)sender, e);
         TaskProcessor.AddTask(task);
     }
 }
Пример #2
0
        public void SetLootTable(LootTableArgs args)
        {
            BeginPacket(FFPacketType.SetLootTable);

            _outgoingBW.Write(args.TableID);
            _outgoingBW.Write(args.BaseDropChance);
            _outgoingBW.Write(args.MarkerBonus);
            _outgoingBW.Write(args.Ranges.Length);
            foreach (LootTableArgs.Range r in args.Ranges)
            {
                _outgoingBW.Write(r.Percentage);
                _outgoingBW.Write(r.Templates.Length);

                foreach( int tid in r.Templates )
                    _outgoingBW.Write(tid);
            }

            SendPacket();
        }
Пример #3
0
        void SetLootTableHandler(BinaryReader br)
        {
            LootTableArgs args = new LootTableArgs();
            args.TableID = br.ReadInt32();
            args.BaseDropChance = br.ReadSingle();
            args.MarkerBonus = br.ReadSingle();
            int ranges = br.ReadInt32();
            if (ranges > 0)
            {
                args.Ranges = new LootTableArgs.Range[ranges];
                for (int i = 0; i < ranges; i++)
                {
                    LootTableArgs.Range range = new LootTableArgs.Range();
                    range.Percentage = br.ReadSingle();
                    int templateCount = br.ReadInt32();
                    if (templateCount > 0)
                    {
                        range.Templates = new int[templateCount];
                        for (int j = 0; j < templateCount; j++)
                            range.Templates[j] = br.ReadInt32();
                    }
                    args.Ranges[i] = range;
                }
            }

            OnSetLootTable(this, args);
        }
Пример #4
0
    public void SetLootTable(LootTable lt)
    {
        LootTableArgs args = new LootTableArgs();
        args.TableID = lt.TableID;
        args.BaseDropChance = lt.BaseDropChance;
        args.MarkerBonus = lt.MarkerBonus;

        List<LootTableArgs.Range> ranges = new List<LootTableArgs.Range>();
        foreach (LootRange lr in lt.Ranges)
        {
            LootTableArgs.Range range = new LootTableArgs.Range();
            range.Percentage = lr.Percentage;
            range.Templates = new int[lr.Templates.Length];

            int index = 0;
            foreach( ItemTemplate it in lr.Templates )
                range.Templates[index++] = it.TemplateID;
            ranges.Add(range);
        }
        args.Ranges = ranges.ToArray();

        _ffc.SetLootTable(args);
    }