Exemple #1
0
        private static void WriteCharaInfo(SendGPacket pk,Room room,SLOT slot,CupomEffects effects)
        {
            int id  = room.room_type == (byte)7 || room.room_type == (byte)12 ? (room.rodada == 1 && slot._team == 1 || room.rodada == 2 && slot._team == 0 ? (room.rodada == 2 ? slot._equip._red : slot._equip._blue) : (room.TRex != slot._id ? slot._equip._dino : -1)) : (slot._team == 0 ? slot._equip._red : slot._equip._blue);
            int num = 0;

            if (effects.HasFlag((System.Enum)CupomEffects.Ketupat))
            {
                num += 10;
            }
            if (effects.HasFlag((System.Enum)CupomEffects.HP5))
            {
                num += 5;
            }
            if (effects.HasFlag((System.Enum)CupomEffects.HP10))
            {
                num += 10;
            }
            if (id == -1)
            {
                pk.writeC(byte.MaxValue);
                pk.writeH(ushort.MaxValue);
            }
            else
            {
                pk.writeC((byte)ComDiv.getIdStatics(id,2));
                pk.writeH((short)ComDiv.getIdStatics(id,4));
            }
            pk.writeC((byte)num);
            pk.writeC(effects.HasFlag((System.Enum)CupomEffects.C4SpeedKit));
        }
Exemple #2
0
 public INVENTORY_ITEM_EQUIP_PAK(uint erro, ItemsModel item = null, Account p = null)
 {
     this.erro = erro;
     if (erro != 1)
     {
         return;
     }
     if (item != null)
     {
         int wclass = ComDiv.getIdStatics(item._id, 1);
         if (wclass == 13 || wclass == 15)
         {
             if (item._count > 1 && item._equip == 1)
             {
                 ComDiv.updateDB("player_items", "count", (long)--item._count, "id", item._objId, "owner_id", p.player_id);
             }
             else
             {
                 PlayerManager.DeleteItem(item._objId, p.player_id);
                 p._inventory.RemoveItem(item);
                 item._id    = 0;
                 item._count = 0;
             }
         }
         else
         {
             item._equip = 2;
         }
         this.item = item;
     }
     else
     {
         this.erro = 0x80000000;
     }
 }
        public INVENTORY_ITEM_EQUIP_PAK(uint erro, ItemsModel item = null, Account p = null)
        {
            this.erro = erro;
            if (erro != 1U)
            {
                return;
            }
            if (item != null)
            {
                switch (ComDiv.getIdStatics(item._id, 1))
                {
                case 13:
                case 15:
                    if (item._count > 1U && item._equip == 1)
                    {
                        ComDiv.updateDB("player_items", "count", (object)(long)--item._count, "object_id", (object)item._objId, "owner_id", (object)p.player_id);
                        break;
                    }
                    PlayerManager.DeleteItem(item._objId, p.player_id);
                    p._inventory.RemoveItem(item);
                    item._id    = 0;
                    item._count = 0U;
                    break;

                default:
                    item._equip = 2;
                    break;
                }
                this.item = item;
            }
            else
            {
                this.erro = 2147483648U;
            }
        }
Exemple #4
0
        private static void WriteCharaInfo(SendGPacket pk,Room room,SLOT slot,CupomEffects effects)
        {
            int charaId = 0;

            if ((RoomType)room.room_type == RoomType.Boss || (RoomType)room.room_type == RoomType.Cross_Counter)
            {
                if (room.rodada == 1 && slot._team == 1 ||
                    room.rodada == 2 && slot._team == 0)
                {
                    charaId = room.rodada == 2 ? slot._equip._red : slot._equip._blue;
                }
                else if (room.TRex == slot._id)
                {
                    charaId = -1;
                }
                else
                {
                    charaId = slot._equip._dino;
                }
            }
            else
            {
                charaId = slot._team == 0 ? slot._equip._red : slot._equip._blue;
            }
            int HPBonus = 0;

            if (effects.HasFlag(CupomEffects.Ketupat))
            {
                HPBonus += 10;
            }
            if (effects.HasFlag(CupomEffects.HP5))
            {
                HPBonus += 5;
            }
            if (effects.HasFlag(CupomEffects.HP10))
            {
                HPBonus += 10;
            }
            if (charaId == -1)
            {
                pk.writeC(255);
                pk.writeH(65535);
            }
            else
            {
                pk.writeC((byte)ComDiv.getIdStatics(charaId,2));
                pk.writeH((short)ComDiv.getIdStatics(charaId,4));
            }
            pk.writeC((byte)HPBonus);
            pk.writeC(effects.HasFlag(CupomEffects.C4SpeedKit));
        }
        private void cupomIncreaseGold(Account p, int cupomId)
        {
            int increase = ComDiv.getIdStatics(cupomId, 4) * 1000 + ComDiv.getIdStatics(cupomId, 3) * 100 + ComDiv.getIdStatics(cupomId, 2) * 1000000;

            if (PlayerManager.updateAccountGold(p.player_id, p._gp + increase))
            {
                p._gp += increase;
                this._client.SendPacket((SendPacket) new AUTH_GOLD_REWARD_PAK(increase, p._gp, 0));
            }
            else
            {
                this.erro = 2147483648U;
            }
        }
        private void cupomIncreaseDays(Account p, string originalName)
        {
            int          itemId    = ComDiv.createItemId(12, ComDiv.getIdStatics(this.itemId, 2), ComDiv.getIdStatics(this.itemId, 3), 0);
            int          idStatics = ComDiv.getIdStatics(this.itemId, 4);
            CupomEffects effects   = p.effects;

            if (itemId == 1200065000 && (effects & (CupomEffects.Colete20 | CupomEffects.Colete10 | CupomEffects.Colete5)) > (CupomEffects)0 || itemId == 1200079000 && (effects & (CupomEffects.Colete90 | CupomEffects.Colete10 | CupomEffects.Colete5)) > (CupomEffects)0 || (itemId == 1200044000 && (effects & (CupomEffects.Colete90 | CupomEffects.Colete20 | CupomEffects.Colete5)) > (CupomEffects)0 || itemId == 1200030000 && (effects & (CupomEffects.Colete90 | CupomEffects.Colete20 | CupomEffects.Colete10)) > (CupomEffects)0) || (itemId == 1200078000 && (effects & (CupomEffects.HollowPointF | CupomEffects.HollowPoint | CupomEffects.IronBullet)) > (CupomEffects)0 || itemId == 1200032000 && (effects & (CupomEffects.HollowPointPlus | CupomEffects.HollowPointF | CupomEffects.IronBullet)) > (CupomEffects)0 || (itemId == 1200031000 && (effects & (CupomEffects.HollowPointPlus | CupomEffects.HollowPointF | CupomEffects.HollowPoint)) > (CupomEffects)0 || itemId == 1200036000 && (effects & (CupomEffects.HollowPointPlus | CupomEffects.HollowPoint | CupomEffects.IronBullet)) > (CupomEffects)0)) || (itemId == 1200028000 && effects.HasFlag((Enum)CupomEffects.HP5) || itemId == 1200040000 && effects.HasFlag((Enum)CupomEffects.HP10)))
            {
                this.erro = 2147483648U;
            }
            else
            {
                ItemsModel itemsModel1 = p._inventory.getItem(itemId);
                if (itemsModel1 == null)
                {
                    bool      flag        = p._bonus.AddBonuses(itemId);
                    CupomFlag cupomEffect = CupomEffectManager.getCupomEffect(itemId);
                    if (cupomEffect != null && cupomEffect.EffectFlag > (CupomEffects)0 && !p.effects.HasFlag((Enum)cupomEffect.EffectFlag))
                    {
                        p.effects |= cupomEffect.EffectFlag;
                        PlayerManager.updateCupomEffects(p.player_id, p.effects);
                    }
                    if (flag)
                    {
                        PlayerManager.updatePlayerBonus(p.player_id, p._bonus.bonuses, p._bonus.freepass);
                    }
                    GameClient client   = this._client;
                    int        type     = 1;
                    Account    player   = p;
                    int        id       = itemId;
                    int        category = 3;
                    string     name     = originalName + " [Active]";
                    int        equip    = 2;
                    DateTime   dateTime = DateTime.Now;
                    dateTime = dateTime.AddDays((double)idStatics);
                    int        num         = (int)uint.Parse(dateTime.ToString("yyMMddHHmm"));
                    long       objId       = 0;
                    ItemsModel itemsModel2 = new ItemsModel(id, category, name, equip, (uint)num, objId);
                    INVENTORY_ITEM_CREATE_PAK inventoryItemCreatePak = new INVENTORY_ITEM_CREATE_PAK(type, player, itemsModel2);
                    client.SendPacket((SendPacket)inventoryItemCreatePak);
                }
                else
                {
                    DateTime exact = DateTime.ParseExact(itemsModel1._count.ToString(), "yyMMddHHmm", (IFormatProvider)CultureInfo.InvariantCulture);
                    itemsModel1._count = uint.Parse(exact.AddDays((double)idStatics).ToString("yyMMddHHmm"));
                    ComDiv.updateDB("player_items", "count", (object)(long)itemsModel1._count, "object_id", (object)itemsModel1._objId, "owner_id", (object)p.player_id);
                    this._client.SendPacket((SendPacket) new INVENTORY_ITEM_CREATE_PAK(2, p, itemsModel1));
                }
            }
        }
Exemple #7
0
        private void cupomIncreaseGold(Account p, int cupomId)
        {
            int gold = ComDiv.getIdStatics(cupomId, 4) * 1000;

            gold += ComDiv.getIdStatics(cupomId, 3) * 100;
            gold += ComDiv.getIdStatics(cupomId, 2) * 1000000;
            if (PlayerManager.updateAccountGold(p.player_id, p._gp + (gold)))
            {
                p._gp += gold;
                _client.SendPacket(new AUTH_GOLD_REWARD_PAK(gold, p._gp, 0));
            }
            else
            {
                erro = 0x80000000;
            }
        }
Exemple #8
0
        private void cupomIncreaseDays(Account p, string originalName)
        {
            int cupomId      = ComDiv.createItemId(12, ComDiv.getIdStatics(itemId, 2), ComDiv.getIdStatics(itemId, 3), 0),
                days         = ComDiv.getIdStatics(itemId, 4);
            CupomEffects eff = p.effects;

            if (cupomId == 1200065000 && ((eff & (CupomEffects.Colete5 | CupomEffects.Colete10 | CupomEffects.Colete20)) > 0) ||
                cupomId == 1200079000 && ((eff & (CupomEffects.Colete5 | CupomEffects.Colete10 | CupomEffects.Colete90)) > 0) ||
                cupomId == 1200044000 && ((eff & (CupomEffects.Colete5 | CupomEffects.Colete20 | CupomEffects.Colete90)) > 0) ||
                cupomId == 1200030000 && ((eff & (CupomEffects.Colete20 | CupomEffects.Colete10 | CupomEffects.Colete90)) > 0) ||
                cupomId == 1200078000 && ((eff & (CupomEffects.IronBullet | CupomEffects.HollowPoint | CupomEffects.HollowPointF)) > 0) ||
                cupomId == 1200032000 && ((eff & (CupomEffects.HollowPointF | CupomEffects.HollowPointPlus | CupomEffects.IronBullet)) > 0) ||
                cupomId == 1200031000 && ((eff & (CupomEffects.HollowPointF | CupomEffects.HollowPointPlus | CupomEffects.HollowPoint)) > 0) ||
                cupomId == 1200036000 && ((eff & (CupomEffects.HollowPoint | CupomEffects.HollowPointPlus | CupomEffects.IronBullet)) > 0) ||
                cupomId == 1200028000 && eff.HasFlag(CupomEffects.HP5) ||
                cupomId == 1200040000 && eff.HasFlag(CupomEffects.HP10))
            {
                erro = 0x80000000;
            }
            else
            {
                ItemsModel item = p._inventory.getItem(cupomId);
                if (item == null)
                {
                    bool      changed = p._bonus.AddBonuses(cupomId);
                    CupomFlag cupom   = CupomEffectManager.getCupomEffect(cupomId);
                    if (cupom != null && cupom.EffectFlag > 0 && !p.effects.HasFlag(cupom.EffectFlag))
                    {
                        p.effects |= cupom.EffectFlag;
                        PlayerManager.updateCupomEffects(p.player_id, p.effects);
                    }
                    if (changed)
                    {
                        PlayerManager.updatePlayerBonus(p.player_id, p._bonus.bonuses, p._bonus.freepass);
                    }
                    _client.SendPacket(new INVENTORY_ITEM_CREATE_PAK(1, p, new ItemsModel(cupomId, 3, originalName + " [Active]", 2, uint.Parse(DateTime.Now.AddDays(days).ToString("yyMMddHHmm")))));
                }
                else
                {
                    DateTime data = DateTime.ParseExact(item._count.ToString(), "yyMMddHHmm", CultureInfo.InvariantCulture);
                    item._count = uint.Parse(data.AddDays(days).ToString("yyMMddHHmm"));
                    ComDiv.updateDB("player_items", "count", (long)item._count, "id", item._objId, "owner_id", p.player_id);
                    _client.SendPacket(new INVENTORY_ITEM_CREATE_PAK(2, p, item));
                }
            }
        }
Exemple #9
0
        public override void run()
        {
            try
            {
                Account    player     = this._client._player;
                ItemsModel itemsModel = player == null ? (ItemsModel)null : player._inventory.getItem(this.objId);
                if (itemsModel != null && itemsModel._id > 1300000000)
                {
                    int  itemId    = ComDiv.createItemId(12, ComDiv.getIdStatics(itemsModel._id, 2), ComDiv.getIdStatics(itemsModel._id, 3), 0);
                    uint cuponDays = uint.Parse(DateTime.Now.AddDays((double)ComDiv.getIdStatics(itemsModel._id, 4)).ToString("yyMMddHHmm"));
                    switch (itemId)
                    {
                    case 1200005000:
                    case 1201052000:
                        this.objetivo = BitConverter.ToUInt32(this.info, 0);
                        break;

                    case 1200010000:
                    case 1201047000:
                    case 1201051000:
                        this.txt = ComDiv.arrayToString(this.info, this.info.Length);
                        break;

                    default:
                        if (this.info.Length != 0)
                        {
                            this.objetivo = (uint)this.info[0];
                            break;
                        }
                        break;
                    }
                    this.CreateCuponEffects(itemId, cuponDays, player);
                }
                else
                {
                    this.erro = 2147483648U;
                }
                this._client.SendPacket((SendPacket) new INVENTORY_ITEM_EQUIP_PAK(this.erro, itemsModel, player));
            }
            catch (Exception ex)
            {
                Logger.info("INVENTORY_ITEM_EFFECT_REC: " + ex.ToString());
                this._client.SendPacket((SendPacket) new INVENTORY_ITEM_EQUIP_PAK(2147483648U, (ItemsModel)null, (Account)null));
            }
        }
        public override void run()
        {
            try
            {
                Account    p    = _client._player;
                ItemsModel item = p == null ? null : p._inventory.getItem(objId);
                if (item != null && item._id > 1300000000)
                {
                    int  cuponId   = ComDiv.createItemId(12, ComDiv.getIdStatics(item._id, 2), ComDiv.getIdStatics(item._id, 3), 0);
                    uint cuponDays = uint.Parse(DateTime.Now.AddDays(ComDiv.getIdStatics(item._id, 4)).ToString("yyMMddHHmm"));

                    if (cuponId == 1201047000 || cuponId == 1201051000 || cuponId == 1200010000)
                    {
                        txt = ComDiv.arrayToString(info, info.Length);
                    }
                    else if (cuponId == 1201052000 || cuponId == 1200005000)
                    {
                        objetivo = BitConverter.ToUInt32(info, 0);
                    }
                    else if (info.Length > 0)
                    {
                        objetivo = info[0];
                    }

                    CreateCuponEffects(cuponId, cuponDays, p);
                }
                else
                {
                    erro = 0x80000000;
                }
                _client.SendPacket(new INVENTORY_ITEM_EQUIP_PAK(erro, item, p));
            }
            catch (Exception ex)
            {
                SaveLog.fatal(ex.ToString());
                Printf.b_danger("[INVENTORY_ITEM_EFFECT_REC.run] Erro fatal!");
                _client.SendPacket(new INVENTORY_ITEM_EQUIP_PAK(0x80000000));
            }
        }
Exemple #11
0
        public static void Load(int type)
        {
            try
            {
                using (NpgsqlConnection connection = SQLjec.getInstance().conn())
                {
                    connection.Open();
                    NpgsqlCommand command = connection.CreateCommand();
                    command.CommandText = "SELECT * FROM shop";
                    command.CommandType = CommandType.Text;
                    NpgsqlDataReader data = command.ExecuteReader();
                    while (data.Read())
                    {
                        GoodItem good = new GoodItem
                        {
                            id         = data.GetInt32(0),
                            price_gold = data.GetInt32(3),
                            price_cash = data.GetInt32(4),
                            auth_type  = data.GetInt16(6),
                            buy_type2  = data.GetInt16(7),
                            buy_type3  = data.GetInt16(8),
                            tag        = data.GetInt16(9),
                            title      = data.GetInt16(10),
                            visibility = data.GetInt16(11)
                        };

                        good._item.SetItemId(data.GetInt32(1));
                        good._item._name  = data.GetString(2);
                        good._item._count = (UInt32)data.GetInt32(5);
                        int Static = ComDiv.getIdStatics(good._item._id, 1);
                        if (type == 1 || type == 2 && Static == 12)
                        {
                            ShopAllList.Add(good);
                            if (good.visibility != 2 && good.visibility != 4)
                            {
                                ShopBuyableList.Add(good);
                            }
                            if (!ShopUniqueList.ContainsKey(good._item._id) && good.auth_type > 0)
                            {
                                ShopUniqueList.Add(good._item._id, good);
                                if (good.visibility == 4)
                                {
                                    set4p++;
                                }
                            }
                        }
                    }
                    if (type == 1)
                    {
                        LoadDataMatching1Goods(0);
                        LoadDataMatching2(1);
                        LoadDataItems();
                    }
                    command.Dispose();
                    data.Close();
                    connection.Dispose();
                    connection.Close();
                }
                if (set4p > 0)
                {
                    Printf.warning("[Aviso] Existem " + set4p + " itens na loja invisíveis, porém com os ícones liberados.");
                }
            }
            catch (Exception ex)
            {
                SaveLog.fatal(ex.ToString());
                Printf.b_danger("[ShopManager.Load] Erro fatal!");
            }
        }
 public override void run()
 {
     try
     {
         Account player = this._client._player;
         if (player == null)
         {
             return;
         }
         ItemsModel  itemsModel = player._inventory.getItem(this.objId);
         PlayerBonus bonus      = player._bonus;
         if (itemsModel == null)
         {
             this.erro = 2147483648U;
         }
         else if (ComDiv.getIdStatics(itemsModel._id, 1) == 12)
         {
             if (bonus == null)
             {
                 this._client.SendPacket((SendPacket) new INVENTORY_ITEM_EXCLUDE_PAK(2147483648U, 0L));
                 return;
             }
             if (!bonus.RemoveBonuses(itemsModel._id))
             {
                 if (itemsModel._id == 1200014000)
                 {
                     if (ComDiv.updateDB("player_bonus", "sightcolor", (object)4, "player_id", (object)player.player_id))
                     {
                         bonus.sightColor = 4;
                         this._client.SendPacket((SendPacket) new BASE_USER_EFFECTS_PAK(0, bonus));
                     }
                     else
                     {
                         this.erro = 2147483648U;
                     }
                 }
                 else if (itemsModel._id == 1200010000)
                 {
                     if (bonus.fakeNick.Length == 0)
                     {
                         this.erro = 2147483648U;
                     }
                     else if (ComDiv.updateDB("accounts", "player_name", (object)bonus.fakeNick, "player_id", (object)player.player_id) && ComDiv.updateDB("player_bonus", "fakenick", (object)"", "player_id", (object)player.player_id))
                     {
                         player.player_name = bonus.fakeNick;
                         bonus.fakeNick     = "";
                         this._client.SendPacket((SendPacket) new BASE_USER_EFFECTS_PAK(0, bonus));
                         this._client.SendPacket((SendPacket) new AUTH_CHANGE_NICKNAME_PAK(player.player_name));
                     }
                     else
                     {
                         this.erro = 2147483648U;
                     }
                 }
                 else if (itemsModel._id == 1200009000)
                 {
                     if (ComDiv.updateDB("player_bonus", "fakerank", (object)55, "player_id", (object)player.player_id))
                     {
                         bonus.fakeRank = 55;
                         this._client.SendPacket((SendPacket) new BASE_USER_EFFECTS_PAK(0, bonus));
                     }
                     else
                     {
                         this.erro = 2147483648U;
                     }
                 }
                 else if (itemsModel._id == 1200006000)
                 {
                     if (ComDiv.updateDB("accounts", "name_color", (object)0, "player_id", (object)player.player_id))
                     {
                         player.name_color = 0;
                         this._client.SendPacket((SendPacket) new BASE_2612_PAK(player));
                         Room room = player._room;
                         if (room != null)
                         {
                             using (ROOM_GET_NICKNAME_PAK roomGetNicknamePak = new ROOM_GET_NICKNAME_PAK(player._slotId, player.player_name, player.name_color))
                                 room.SendPacketToPlayers((SendPacket)roomGetNicknamePak);
                         }
                     }
                     else
                     {
                         this.erro = 2147483648U;
                     }
                 }
             }
             else
             {
                 PlayerManager.updatePlayerBonus(player.player_id, bonus.bonuses, bonus.freepass);
             }
             CupomFlag cupomEffect = CupomEffectManager.getCupomEffect(itemsModel._id);
             if (cupomEffect != null && cupomEffect.EffectFlag > (CupomEffects)0 && player.effects.HasFlag((Enum)cupomEffect.EffectFlag))
             {
                 player.effects -= cupomEffect.EffectFlag;
                 PlayerManager.updateCupomEffects(player.player_id, player.effects);
             }
         }
         if (this.erro == 1U && itemsModel != null)
         {
             if (PlayerManager.DeleteItem(itemsModel._objId, player.player_id))
             {
                 player._inventory.RemoveItem(itemsModel);
             }
             else
             {
                 this.erro = 2147483648U;
             }
         }
         this._client.SendPacket((SendPacket) new INVENTORY_ITEM_EXCLUDE_PAK(this.erro, this.objId));
     }
     catch (Exception ex)
     {
         Logger.info("[INVENTORY_ITEM_EXCLUDE_REC] " + ex.ToString());
         this._client.SendPacket((SendPacket) new INVENTORY_ITEM_EXCLUDE_PAK(2147483648U, 0L));
     }
 }
 public override void run()
 {
     if (this._client == null)
     {
         return;
     }
     if (this._client._player == null)
     {
         return;
     }
     try
     {
         Account    player      = this._client._player;
         ItemsModel itemsModel1 = player._inventory.getItem(this.objId);
         if (itemsModel1 != null)
         {
             this.itemId   = itemsModel1._id;
             this.oldCOUNT = itemsModel1._count;
             if (itemsModel1._category == 3 && player._inventory._items.Count >= 500)
             {
                 this._client.SendPacket((SendPacket) new INVENTORY_ITEM_EQUIP_PAK(2147487785U, (ItemsModel)null, (Account)null));
                 Logger.warning("O inventário do jogador: '" + player.player_name + "' está cheio demais!");
                 return;
             }
             if (this.itemId == 1301049000)
             {
                 if (PlayerManager.updateKD(player.player_id, 0, 0, player._statistic.headshots_count, player._statistic.totalkills_count))
                 {
                     player._statistic.kills_count  = 0;
                     player._statistic.deaths_count = 0;
                     this._client.SendPacket((SendPacket) new BASE_USER_CHANGE_STATS_PAK(player._statistic));
                 }
                 else
                 {
                     this.erro = 2147483648U;
                 }
             }
             else if (this.itemId == 1301048000)
             {
                 if (PlayerManager.updateFights(0, 0, 0, 0, player._statistic.totalfights_count, player.player_id))
                 {
                     player._statistic.fights      = 0;
                     player._statistic.fights_win  = 0;
                     player._statistic.fights_lost = 0;
                     player._statistic.fights_draw = 0;
                     this._client.SendPacket((SendPacket) new BASE_USER_CHANGE_STATS_PAK(player._statistic));
                 }
                 else
                 {
                     this.erro = 2147483648U;
                 }
             }
             else if (this.itemId == 1301050000)
             {
                 if (ComDiv.updateDB("accounts", "escapes", (object)0, "player_id", (object)player.player_id))
                 {
                     player._statistic.escapes = 0;
                     this._client.SendPacket((SendPacket) new BASE_USER_CHANGE_STATS_PAK(player._statistic));
                 }
                 else
                 {
                     this.erro = 2147483648U;
                 }
             }
             else if (this.itemId == 1301053000)
             {
                 if (PlayerManager.updateClanBattles(player.clanId, 0, 0, 0))
                 {
                     Clan clan = ClanManager.getClan(player.clanId);
                     if (clan._id > 0 && clan.owner_id == this._client.player_id)
                     {
                         clan.partidas = 0;
                         clan.vitorias = 0;
                         clan.derrotas = 0;
                         this._client.SendPacket((SendPacket) new CLAN_CHANGE_FIGHTS_PAK());
                     }
                     else
                     {
                         this.erro = 2147483648U;
                     }
                 }
                 else
                 {
                     this.erro = 2147483648U;
                 }
             }
             else if (this.itemId == 1301055000)
             {
                 Clan clan = ClanManager.getClan(player.clanId);
                 if (clan._id > 0 && clan.owner_id == this._client.player_id)
                 {
                     if (clan.maxPlayers + 50 <= 250 && ComDiv.updateDB("clan_data", "max_players", (object)(clan.maxPlayers + 50), "clan_id", (object)player.clanId))
                     {
                         clan.maxPlayers += 50;
                         this._client.SendPacket((SendPacket) new CLAN_CHANGE_MAX_PLAYERS_PAK(clan.maxPlayers));
                     }
                     else
                     {
                         this.erro = 2147487830U;
                     }
                 }
                 else
                 {
                     this.erro = 2147487830U;
                 }
             }
             else if (this.itemId == 1301056000)
             {
                 Clan clan = ClanManager.getClan(player.clanId);
                 if (clan._id > 0 && (double)clan._pontos != 1000.0)
                 {
                     if (ComDiv.updateDB("clan_data", "pontos", (object)1000f, "clan_id", (object)player.clanId))
                     {
                         clan._pontos = 1000f;
                         this._client.SendPacket((SendPacket) new CLAN_CHANGE_POINTS_PAK());
                     }
                     else
                     {
                         this.erro = 2147487830U;
                     }
                 }
                 else
                 {
                     this.erro = 2147487830U;
                 }
             }
             else if (this.itemId > 1301113000 && this.itemId < 1301119000)
             {
                 int increase = this.itemId == 1301114000 ? 500 : (this.itemId == 1301115000 ? 1000 : (this.itemId == 1301116000 ? 5000 : (this.itemId == 1301117000 ? 10000 : 30000)));
                 if (ComDiv.updateDB("accounts", "gp", (object)(player._gp + increase), "player_id", (object)player.player_id))
                 {
                     player._gp += increase;
                     this._client.SendPacket((SendPacket) new AUTH_GOLD_REWARD_PAK(increase, player._gp, 0));
                 }
                 else
                 {
                     this.erro = 2147483648U;
                 }
             }
             else if (this.itemId == 1301999000)
             {
                 if (ComDiv.updateDB("accounts", "exp", (object)(player._exp + 515999), "player_id", (object)player.player_id))
                 {
                     player._exp += 515999;
                     this._client.SendPacket((SendPacket) new A_3096_PAK(515999, 0));
                 }
                 else
                 {
                     this.erro = 2147483648U;
                 }
             }
             else if (itemsModel1._category == 3 && RandomBoxXML.ContainsBox(this.itemId))
             {
                 RandomBoxModel box = RandomBoxXML.getBox(this.itemId);
                 if (box != null)
                 {
                     List <RandomBoxItem> sortedList = box.getSortedList(INVENTORY_ITEM_EQUIP_REC.GetRandomNumber(1, 100));
                     List <RandomBoxItem> rewardList = box.getRewardList(sortedList, INVENTORY_ITEM_EQUIP_REC.GetRandomNumber(0, sortedList.Count));
                     if (rewardList.Count > 0)
                     {
                         int index1 = rewardList[0].index;
                         this._client.SendPacket((SendPacket) new AUTH_RANDOM_BOX_REWARD_PAK(this.itemId, index1));
                         List <ItemsModel> items = new List <ItemsModel>();
                         for (int index2 = 0; index2 < rewardList.Count; ++index2)
                         {
                             RandomBoxItem randomBoxItem = rewardList[index2];
                             if (randomBoxItem.item != null)
                             {
                                 items.Add(randomBoxItem.item);
                             }
                             else if (PlayerManager.updateAccountGold(player.player_id, player._gp + (int)randomBoxItem.count))
                             {
                                 player._gp += (int)randomBoxItem.count;
                                 this._client.SendPacket((SendPacket) new AUTH_GOLD_REWARD_PAK((int)randomBoxItem.count, player._gp, 0));
                             }
                             else
                             {
                                 this.erro = 2147483648U;
                                 break;
                             }
                             if (randomBoxItem.special)
                             {
                                 using (AUTH_JACKPOT_NOTICE_PAK jackpotNoticePak = new AUTH_JACKPOT_NOTICE_PAK(player.player_name, this.itemId, index1))
                                     GameManager.SendPacketToAllClients((SendPacket)jackpotNoticePak);
                             }
                         }
                         if (items.Count > 0)
                         {
                             this._client.SendPacket((SendPacket) new INVENTORY_ITEM_CREATE_PAK(1, player, items));
                         }
                     }
                     else
                     {
                         this.erro = 2147483648U;
                     }
                 }
                 else
                 {
                     this.erro = 2147483648U;
                 }
             }
             else
             {
                 int idStatics = ComDiv.getIdStatics(itemsModel1._id, 1);
                 if (idStatics <= 11)
                 {
                     if (itemsModel1._equip == 1)
                     {
                         itemsModel1._equip = 2;
                         ItemsModel itemsModel2 = itemsModel1;
                         DateTime   dateTime    = DateTime.Now;
                         dateTime = dateTime.AddSeconds((double)itemsModel1._count);
                         int num = (int)uint.Parse(dateTime.ToString("yyMMddHHmm"));
                         itemsModel2._count = (uint)num;
                         ComDiv.updateDB("player_items", "object_id", (object)this.objId, "owner_id", (object)player.player_id, new string[2]
                         {
                             "count",
                             "equip"
                         }, (object)(long)itemsModel1._count, (object)itemsModel1._equip);
                     }
                     else
                     {
                         this.erro = 2147483648U;
                     }
                 }
                 else if (idStatics == 13)
                 {
                     this.cupomIncreaseDays(player, itemsModel1._name);
                 }
                 else if (idStatics == 15)
                 {
                     this.cupomIncreaseGold(player, itemsModel1._id);
                 }
                 else
                 {
                     this.erro = 2147483648U;
                 }
             }
         }
         else
         {
             this.erro = 2147483648U;
         }
         this._client.SendPacket((SendPacket) new INVENTORY_ITEM_EQUIP_PAK(this.erro, itemsModel1, player));
     }
     catch (OverflowException ex)
     {
         Logger.error("[Data do erro: " + DateTime.Now.ToString("dd/MM/yyyy HH:mm") + "] Obj: " + (object)this.objId + "; Id do item: " + (object)this.itemId + "; Count na Db: " + (object)this.oldCOUNT + "; Id do cara: " + (object)this._client.player_id + "; Nick: '" + this._client._player.player_name + "'\r\n" + ex.ToString());
         this._client.SendPacket((SendPacket) new INVENTORY_ITEM_EQUIP_PAK(2147483648U, (ItemsModel)null, (Account)null));
     }
     catch (Exception ex)
     {
         Logger.info("INVENTORY_ITEM_EQUIP_REC: " + ex.ToString());
         this._client.SendPacket((SendPacket) new INVENTORY_ITEM_EQUIP_PAK(2147483648U, (ItemsModel)null, (Account)null));
     }
 }
        public static void RegistryFragInfos(Room room,SLOT killer,out int score,bool isBotMode,bool isSuicide,FragInfos kills)
        {
            score = 0;
            ITEM_CLASS weaponClass = (ITEM_CLASS)ComDiv.getIdStatics(kills.weapon,1);

            for (int i = 0; i < kills.frags.Count; i++)
            {
                Frag       frag      = kills.frags[i];
                CharaDeath deathType = (CharaDeath)(frag.hitspotInfo >> 4);
                if (kills.killsCount - (isSuicide ? 1 : 0) > 1)
                {
                    frag.killFlag |= deathType == CharaDeath.BOOM || deathType == CharaDeath.OBJECT_EXPLOSION || deathType == CharaDeath.POISON || deathType == CharaDeath.HOWL || deathType == CharaDeath.TRAMPLED || weaponClass == ITEM_CLASS.SHOTGUN ? KillingMessage.MassKill : KillingMessage.PiercingShot;
                }
                else
                {
                    int num2 = 0;
                    if (deathType == CharaDeath.HEADSHOT)
                    {
                        num2 = 4;
                    }
                    else if (deathType == CharaDeath.DEFAULT && weaponClass == ITEM_CLASS.KNIFE)
                    {
                        num2 = 6;
                    }
                    if (num2 > 0)
                    {
                        int num3 = killer.lastKillState >> 12;
                        if (num2 == 4)
                        {
                            if (num3 != 4)
                            {
                                killer.repeatLastState = false;
                            }
                            killer.lastKillState = num2 << 12 | (killer.killsOnLife + 1);
                            if (killer.repeatLastState)
                            {
                                frag.killFlag |= (killer.lastKillState & 16383) <= 1 ? KillingMessage.Headshot : KillingMessage.ChainHeadshot;
                            }
                            else
                            {
                                frag.killFlag         |= KillingMessage.Headshot;
                                killer.repeatLastState = true;
                            }
                        }
                        else if (num2 == 6)
                        {
                            if (num3 != 6)
                            {
                                killer.repeatLastState = false;
                            }
                            killer.lastKillState = num2 << 12 | (killer.killsOnLife + 1);
                            if (killer.repeatLastState && (killer.lastKillState & 16383) > 1)
                            {
                                frag.killFlag |= KillingMessage.ChainSlugger;
                            }
                            else
                            {
                                killer.repeatLastState = true;
                            }
                        }
                    }
                    else
                    {
                        killer.lastKillState   = 0;
                        killer.repeatLastState = false;
                    }
                }
                int  victimId   = frag.VictimSlot;
                SLOT victimSlot = room._slots[victimId];
                if (victimSlot.killsOnLife > 3)
                {
                    frag.killFlag |= KillingMessage.ChainStopper;
                }
                if ((kills.weapon == 19016 || kills.weapon == 19022) && kills.killerIdx == victimId || victimSlot.specGM)
                {
                }
                else
                {
                    victimSlot.allDeaths++; //exprosao acid
                }
                if (killer._team != victimSlot._team)
                {
                    score += AllUtils.getKillScore(frag.killFlag);
                    killer.allKills++;
                    if (killer._deathState == DeadEnum.isAlive)
                    {
                        killer.killsOnLife++;
                    }
                    if (victimSlot._team == 0)
                    {
                        room._redDeaths++;
                        room._blueKills++;
                    }
                    else
                    {
                        room._blueDeaths++;
                        room._redKills++;
                    }
                    if (room.room_type == 7)
                    {
                        if (killer._team == 0)
                        {
                            room.red_dino += 4;
                        }
                        else
                        {
                            room.blue_dino += 4;
                        }
                    }
                }
                victimSlot.lastKillState   = 0;
                victimSlot.killsOnLife     = 0;
                victimSlot.repeatLastState = false;
                victimSlot.passSequence    = 0;
                victimSlot._deathState     = DeadEnum.isDead;
                if (!isBotMode)
                {
                    AllUtils.CompleteMission(room,victimSlot,MISSION_TYPE.DEATH,0);
                }
                if (deathType == CharaDeath.HEADSHOT)
                {
                    killer.headshots++;
                }
            }
        }
Exemple #15
0
        public override void run()
        {
            try
            {
                Account p = _client._player;
                if (p == null)
                {
                    return;
                }
                ItemsModel  item  = p._inventory.getItem(objId);
                PlayerBonus bonus = p._bonus;
                if (item == null)
                {
                    erro = 0x80000000;
                }
                else if (ComDiv.getIdStatics(item._id, 1) == 12)
                {
                    if (bonus == null)
                    {
                        _client.SendPacket(new INVENTORY_ITEM_EXCLUDE_PAK(0x80000000));
                        return;
                    }
                    bool changed = bonus.RemoveBonuses(item._id);
                    if (!changed)
                    {
                        if (item._id == 1200014000)
                        {
                            if (ComDiv.updateDB("player_bonus", "sightcolor", 4, "player_id", p.player_id))
                            {
                                bonus.sightColor = 4;
                                _client.SendPacket(new BASE_USER_EFFECTS_PAK(0, bonus));
                            }
                            else
                            {
                                erro = 0x80000000;
                            }
                        }
                        else if (item._id == 1200010000)
                        {
                            if (bonus.fakeNick.Length == 0)
                            {
                                erro = 0x80000000;
                            }
                            else
                            {
                                if (ComDiv.updateDB("contas", "player_name", bonus.fakeNick, "player_id", p.player_id) &&
                                    ComDiv.updateDB("player_bonus", "fakenick", "", "player_id", p.player_id))
                                {
                                    p.player_name  = bonus.fakeNick;
                                    bonus.fakeNick = "";
                                    _client.SendPacket(new BASE_USER_EFFECTS_PAK(0, bonus));
                                    _client.SendPacket(new AUTH_CHANGE_NICKNAME_PAK(p.player_name));
                                }
                                else
                                {
                                    erro = 0x80000000;
                                }
                            }
                        }
                        else if (item._id == 1200009000)
                        {
                            if (ComDiv.updateDB("player_bonus", "fakerank", 55, "player_id", p.player_id))
                            {
                                bonus.fakeRank = 55;
                                _client.SendPacket(new BASE_USER_EFFECTS_PAK(0, bonus));
                            }
                            else
                            {
                                erro = 0x80000000;
                            }
                        }
                        else if (item._id == 1200006000)
                        {
                            if (ComDiv.updateDB("contas", "name_color", 0, "player_id", p.player_id))
                            {
                                p.name_color = 0;
                                _client.SendPacket(new BASE_2612_PAK(p));
                                Room room = p._room;
                                if (room != null)
                                {
                                    using (ROOM_GET_NICKNAME_PAK packet = new ROOM_GET_NICKNAME_PAK(p._slotId, p.player_name, p.name_color))
                                        room.SendPacketToPlayers(packet);
                                }
                            }
                            else
                            {
                                erro = 0x80000000;
                            }
                        }
                    }
                    else
                    {
                        PlayerManager.updatePlayerBonus(p.player_id, bonus.bonuses, bonus.freepass);
                    }

                    CupomFlag cupom = CupomEffectManager.getCupomEffect(item._id);
                    if (cupom != null && cupom.EffectFlag > 0 && p.effects.HasFlag(cupom.EffectFlag))
                    {
                        p.effects -= cupom.EffectFlag;
                        PlayerManager.updateCupomEffects(p.player_id, p.effects);
                    }
                }
                if (erro == 1 && item != null)
                {
                    if (PlayerManager.DeleteItem(item._objId, p.player_id))
                    {
                        p._inventory.RemoveItem(item);
                    }
                    else
                    {
                        erro = 0x80000000;
                    }
                }
                _client.SendPacket(new INVENTORY_ITEM_EXCLUDE_PAK(erro, objId));
            }
            catch (Exception ex)
            {
                SaveLog.fatal(ex.ToString());
                Printf.b_danger("[INVENTORY_ITEM_EXCLUDE_REC.INVENTORY_ITEM_EXCLUDE_REC] Erro fatal!");
                _client.SendPacket(new INVENTORY_ITEM_EXCLUDE_PAK(0x80000000));
            }
        }
Exemple #16
0
 public override void run()
 {
     if (_client == null || _client._player == null)
     {
         return;
     }
     try
     {
         Account    p       = _client._player;
         ItemsModel itemObj = p._inventory.getItem(objId);
         if (itemObj != null)
         {
             itemId   = itemObj._id;
             oldCOUNT = itemObj._count;
             if (itemObj._category == 3 && p._inventory._items.Count >= 500)
             {
                 _client.SendPacket(new INVENTORY_ITEM_EQUIP_PAK(0x80001029));
                 SaveLog.warning("O inventário do jogador: '" + p.player_name + "' está cheio demais!");
                 Printf.warning("Inventario do jogador " + p.player_name + " esta cheio");
                 return;
             }
             if (itemId == 1301049000)
             {
                 if (PlayerManager.updateKD(p.player_id, 0, 0, p._statistic.headshots_count, p._statistic.totalkills_count))
                 {
                     p._statistic.kills_count  = 0;
                     p._statistic.deaths_count = 0;
                     _client.SendPacket(new BASE_USER_CHANGE_STATS_PAK(p._statistic));
                 }
                 else
                 {
                     erro = 0x80000000;
                 }
             }
             else if (itemId == 1301048000)
             {
                 if (PlayerManager.updateFights(0, 0, 0, 0, p._statistic.totalfights_count, p.player_id))
                 {
                     p._statistic.fights      = 0;
                     p._statistic.fights_win  = 0;
                     p._statistic.fights_lost = 0;
                     p._statistic.fights_draw = 0;
                     _client.SendPacket(new BASE_USER_CHANGE_STATS_PAK(p._statistic));
                 }
                 else
                 {
                     erro = 0x80000000;
                 }
             }
             else if (itemId == 1301050000)
             {
                 if (ComDiv.updateDB("contas", "escapes", 0, "player_id", p.player_id))
                 {
                     p._statistic.escapes = 0;
                     _client.SendPacket(new BASE_USER_CHANGE_STATS_PAK(p._statistic));
                 }
                 else
                 {
                     erro = 0x80000000;
                 }
             }
             else if (itemId == 1301053000)
             {
                 if (PlayerManager.updateClanBattles(p.clanId, 0, 0, 0))
                 {
                     Clan c = ClanManager.getClan(p.clanId);
                     if (c._id > 0 && c.owner_id == _client.player_id)
                     {
                         c.partidas = 0;
                         c.vitorias = 0;
                         c.derrotas = 0;
                         _client.SendPacket(new CLAN_CHANGE_FIGHTS_PAK());
                     }
                     else
                     {
                         erro = 0x80000000;
                     }
                 }
                 else
                 {
                     erro = 0x80000000;
                 }
             }
             else if (itemId == 1301055000)
             {
                 Clan c = ClanManager.getClan(p.clanId);
                 if (c._id > 0 && c.owner_id == _client.player_id)
                 {
                     if (c.maxPlayers + 50 <= 250 && ComDiv.updateDB("clan_data", "max_players", c.maxPlayers + 50, "clan_id", p.clanId))
                     {
                         c.maxPlayers += 50;
                         _client.SendPacket(new CLAN_CHANGE_MAX_PLAYERS_PAK(c.maxPlayers));
                     }
                     else
                     {
                         erro = 0x80001056;
                     }
                 }
                 else
                 {
                     erro = 0x80001056;
                 }
             }
             else if (itemId == 1301056000)
             {
                 Clan c = ClanManager.getClan(p.clanId);
                 if (c._id > 0 && c._pontos != 1000)
                 {
                     if (ComDiv.updateDB("clan_data", "pontos", 1000.0f, "clan_id", p.clanId))
                     {
                         c._pontos = 1000;
                         _client.SendPacket(new CLAN_CHANGE_POINTS_PAK());
                     }
                     else
                     {
                         erro = 0x80001056;
                     }
                 }
                 else
                 {
                     erro = 0x80001056;
                 }
             }
             else if (itemId > 1301113000 && itemId < 1301119000)
             {
                 int goldReceive = itemId == 1301114000 ? 500 : (itemId == 1301115000 ? 1000 : (itemId == 1301116000 ? 5000 : (itemId == 1301117000 ? 10000 : 30000)));
                 if (ComDiv.updateDB("contas", "gp", p._gp + goldReceive, "player_id", p.player_id))
                 {
                     p._gp += goldReceive;
                     _client.SendPacket(new AUTH_GOLD_REWARD_PAK(goldReceive, p._gp, 0));
                 }
                 else
                 {
                     erro = 0x80000000;
                 }
             }
             else if (itemId == 1301999000)
             {
                 if (ComDiv.updateDB("contas", "exp", p._exp + 515999, "player_id", p.player_id))
                 {
                     p._exp += 515999;
                     _client.SendPacket(new A_3096_PAK(515999, 0));
                 }
                 else
                 {
                     erro = 0x80000000;
                 }
             }
             else if (itemObj._category == 3 && RandomBoxXML.ContainsBox(itemId))
             {
                 RandomBoxModel box = RandomBoxXML.getBox(itemId);
                 if (box != null)
                 {
                     List <RandomBoxItem> sortedList = box.getSortedList(GetRandomNumber(1, 100));
                     List <RandomBoxItem> rewardList = box.getRewardList(sortedList, GetRandomNumber(0, sortedList.Count));
                     if (rewardList.Count > 0)
                     {
                         int itemIdx = rewardList[0].index;
                         _client.SendPacket(new AUTH_RANDOM_BOX_REWARD_PAK(itemId, itemIdx));
                         List <ItemsModel> rewards = new List <ItemsModel>();
                         for (int i = 0; i < rewardList.Count; i++)
                         {
                             RandomBoxItem cupom = rewardList[i];
                             if (cupom.item != null)
                             {
                                 rewards.Add(cupom.item);
                             }
                             else if (PlayerManager.updateAccountGold(p.player_id, p._gp + (int)cupom.count))
                             {
                                 p._gp += (int)cupom.count;
                                 _client.SendPacket(new AUTH_GOLD_REWARD_PAK((int)cupom.count, p._gp, 0));
                             }
                             else
                             {
                                 erro = 0x80000000;
                                 break;
                             }
                             if (cupom.special)
                             {
                                 using (AUTH_JACKPOT_NOTICE_PAK packet = new AUTH_JACKPOT_NOTICE_PAK(p.player_name, itemId, itemIdx))
                                     GameManager.SendPacketToAllClients(packet);
                             }
                         }
                         if (rewards.Count > 0)
                         {
                             _client.SendPacket(new INVENTORY_ITEM_CREATE_PAK(1, p, rewards));
                         }
                     }
                     else
                     {
                         erro = 0x80000000;
                     }
                     sortedList = null;
                     rewardList = null;
                 }
                 else
                 {
                     erro = 0x80000000;
                 }
             }
             else
             {
                 int wclass = ComDiv.getIdStatics(itemObj._id, 1);
                 if (wclass <= 11)
                 {
                     if (itemObj._equip == 1)
                     {
                         itemObj._equip = 2;
                         itemObj._count = uint.Parse(DateTime.Now.AddSeconds(itemObj._count).ToString("yyMMddHHmm"));
                         ComDiv.updateDB("player_items", "id", objId, "owner_id", p.player_id, new string[] { "count", "equip" }, (long)itemObj._count, itemObj._equip);
                     }
                     else
                     {
                         erro = 0x80000000;
                     }
                 }
                 else if (wclass == 13)
                 {
                     cupomIncreaseDays(p, itemObj._name);
                 }
                 else if (wclass == 15)
                 {
                     cupomIncreaseGold(p, itemObj._id);
                 }
                 else
                 {
                     erro = 0x80000000;
                 }
             }
         }
         else
         {
             erro = 0x80000000;
         }
         _client.SendPacket(new INVENTORY_ITEM_EQUIP_PAK(erro, itemObj, p));
     }
     catch (OverflowException ex)
     {
         Printf.b_danger("[INVENTORY_ITEM_EQUIP_REC.run] Erro fatal!");
         SaveLog.fatal(" Obj: " + objId + "; Id do item: " + itemId + "; Count na Db: " + oldCOUNT + "; Id do cara: " + _client.player_id + "; Nick: '" + _client._player.player_name + "'\r\n" + ex.ToString());
         _client.SendPacket(new INVENTORY_ITEM_EQUIP_PAK(0x80000000));
     }
     catch (Exception ex)
     {
         Printf.b_danger("[INVENTORY_ITEM_EQUIP_REC.run] Erro fatal!");
         SaveLog.fatal(ex.ToString());
         _client.SendPacket(new INVENTORY_ITEM_EQUIP_PAK(0x80000000));
     }
 }
Exemple #17
0
        public static void RegistryFragInfos(Room room,SLOT killer,out int score,bool isBotMode,bool isSuicide,FragInfos kills)
        {
            score = 0;
            ITEM_CLASS idStatics = (ITEM_CLASS)ComDiv.getIdStatics(kills.weapon,1);

            for (int index = 0; index < kills.frags.Count; ++index)
            {
                Frag       frag       = kills.frags[index];
                CharaDeath charaDeath = (CharaDeath)((int)frag.hitspotInfo >> 4);
                if ((int)kills.killsCount - (isSuicide ? 1 : 0) > 1)
                {
                    frag.killFlag |= charaDeath == CharaDeath.BOOM || charaDeath == CharaDeath.OBJECT_EXPLOSION || (charaDeath == CharaDeath.POISON || charaDeath == CharaDeath.HOWL) || (charaDeath == CharaDeath.TRAMPLED || idStatics == ITEM_CLASS.SHOTGUN) ? KillingMessage.MassKill : KillingMessage.PiercingShot;
                }
                else
                {
                    int num1 = 0;
                    switch (charaDeath)
                    {
                    case CharaDeath.DEFAULT:
                        if (idStatics == ITEM_CLASS.KNIFE)
                        {
                            num1 = 6;
                            break;
                        }
                        break;

                    case CharaDeath.HEADSHOT:
                        num1 = 4;
                        break;
                    }
                    if (num1 > 0)
                    {
                        int num2 = killer.lastKillState >> 12;
                        switch (num1)
                        {
                        case 4:
                            if (num2 != 4)
                            {
                                killer.repeatLastState = false;
                            }
                            killer.lastKillState = num1 << 12 | killer.killsOnLife + 1;
                            if (killer.repeatLastState)
                            {
                                frag.killFlag |= (killer.lastKillState & 16383) <= 1 ? KillingMessage.Headshot : KillingMessage.ChainHeadshot;
                                break;
                            }
                            frag.killFlag         |= KillingMessage.Headshot;
                            killer.repeatLastState = true;
                            break;

                        case 6:
                            if (num2 != 6)
                            {
                                killer.repeatLastState = false;
                            }
                            killer.lastKillState = num1 << 12 | killer.killsOnLife + 1;
                            if (killer.repeatLastState && (killer.lastKillState & 16383) > 1)
                            {
                                frag.killFlag |= KillingMessage.ChainSlugger;
                                break;
                            }
                            killer.repeatLastState = true;
                            break;
                        }
                    }
                    else
                    {
                        killer.lastKillState   = 0;
                        killer.repeatLastState = false;
                    }
                }
                int  victimSlot = frag.VictimSlot;
                SLOT slot       = room._slots[victimSlot];
                if (slot.killsOnLife > 3)
                {
                    frag.killFlag |= KillingMessage.ChainStopper;
                }
                if ((kills.weapon != 19016 && kills.weapon != 19022 || (int)kills.killerIdx != victimSlot) && !slot.specGM)
                {
                    ++slot.allDeaths;
                }
                if (killer._team != slot._team)
                {
                    score += AllUtils.getKillScore(frag.killFlag);
                    ++killer.allKills;
                    if (killer._deathState == DeadEnum.isAlive)
                    {
                        ++killer.killsOnLife;
                    }
                    if (slot._team == 0)
                    {
                        ++room._redDeaths;
                        ++room._blueKills;
                    }
                    else
                    {
                        ++room._blueDeaths;
                        ++room._redKills;
                    }
                    if (room.room_type == (byte)7)
                    {
                        if (killer._team == 0)
                        {
                            room.red_dino += 4;
                        }
                        else
                        {
                            room.blue_dino += 4;
                        }
                    }
                }
                slot.lastKillState   = 0;
                slot.killsOnLife     = 0;
                slot.repeatLastState = false;
                slot.passSequence    = 0;
                slot._deathState     = DeadEnum.isDead;
                if (!isBotMode)
                {
                    AllUtils.CompleteMission(room,slot,MISSION_TYPE.DEATH,0);
                }
                if (charaDeath == CharaDeath.HEADSHOT)
                {
                    ++killer.headshots;
                }
            }
        }