Esempio n. 1
0
        public static void genDeath(Room room,SLOT killer,FragInfos kills,bool isSuicide)
        {
            bool isBotMode = room.isBotMode();
            int  score;

            Net_Room_Death.RegistryFragInfos(room,killer,out score,isBotMode,isSuicide,kills);
            if (isBotMode)
            {
                killer.Score += killer.killsOnLife + (int)room.IngameAiLevel + score;
                if (killer.Score > (int)ushort.MaxValue)
                {
                    killer.Score = (int)ushort.MaxValue;
                    Logger.warning("[PlayerId: " + (object)killer._id + "] chegou a pontuação máxima do modo BOT.");
                }
                kills.Score = killer.Score;
            }
            else
            {
                killer.Score += score;
                AllUtils.CompleteMission(room,killer,kills,MISSION_TYPE.NA,0);
                kills.Score = score;
            }
            using (BATTLE_DEATH_PAK battleDeathPak = new BATTLE_DEATH_PAK(room,kills,killer,isBotMode))
                room.SendPacketToPlayers((SendPacket)battleDeathPak,SLOT_STATE.BATTLE,0);
            Net_Room_Death.EndBattleByDeath(room,killer,isBotMode,isSuicide);
        }
Esempio n. 2
0
        private static void CompleteMission(Room room, SLOT slot)
        {
            MISSION_TYPE autoComplete = MISSION_TYPE.NA;

            if (slot.passSequence == 1)
            {
                autoComplete = MISSION_TYPE.TOUCHDOWN;
            }
            else if (slot.passSequence == 2)
            {
                autoComplete = MISSION_TYPE.TOUCHDOWN_ACE_ATTACKER;
            }
            else if (slot.passSequence == 3)
            {
                autoComplete = MISSION_TYPE.TOUCHDOWN_HATTRICK;
            }
            else if (slot.passSequence >= 4)
            {
                autoComplete = MISSION_TYPE.TOUCHDOWN_GAME_MAKER;
            }
            if (autoComplete == MISSION_TYPE.NA)
            {
                return;
            }
            AllUtils.CompleteMission(room,slot,autoComplete,0);
        }
Esempio n. 3
0
        public static void genDeath(Room room,SLOT killer,FragInfos kills,bool isSuicide)
        {
            int  score;
            bool isBotMode = room.isBotMode();

            Net_Room_Death.RegistryFragInfos(room,killer,out score,isBotMode,isSuicide,kills);
            if (isBotMode)
            {
                killer.Score += killer.killsOnLife + room.IngameAiLevel + score;
                if (killer.Score > 65535) // 65535
                {
                    killer.Score = 65535;
                    SaveLog.LogAbuse("{2} [PlayerId: " + killer._id + "] chegou a pontuação máxima do modo BOT.");
                }
                kills.Score = killer.Score;
            }
            else
            {
                killer.Score += score;
                AllUtils.CompleteMission(room,killer,kills,MISSION_TYPE.NA,0);
                kills.Score = score;
            }
            using (BATTLE_DEATH_PAK packet = new BATTLE_DEATH_PAK(room,kills,killer,isBotMode))
                room.SendPacketToPlayers(packet,SLOT_STATE.BATTLE,0);
            Net_Room_Death.EndBattleByDeath(room,killer,isBotMode,isSuicide);
        }
Esempio n. 4
0
        private static void CompleteMission(Room room,SLOT slot)
        {
            MISSION_TYPE mission = MISSION_TYPE.NA;

            if (slot.passSequence == 1)
            {
                mission = MISSION_TYPE.TOUCHDOWN;
            }
            else if (slot.passSequence == 2)
            {
                mission = MISSION_TYPE.TOUCHDOWN_ACE_ATTACKER;
            }
            else if (slot.passSequence == 3)
            {
                mission = MISSION_TYPE.TOUCHDOWN_HATTRICK;
            }
            else if (slot.passSequence >= 4)
            {
                mission = MISSION_TYPE.TOUCHDOWN_GAME_MAKER;
            }
            if (mission != MISSION_TYPE.NA)
            {
                AllUtils.CompleteMission(room,slot,mission,0);
            }
        }
 public override void run()
 {
     try
     {
         Account player = _client._player;
         if (player == null)
         {
             return;
         }
         Room room = player._room;
         if (room == null || room.round.Timer != null || room._state < RoomState.Battle)
         {
             return;
         }
         bool isBotMode = room.isBotMode();
         SLOT killer    = room.getSlot(kills.killerIdx);
         if (killer == null || !isBotMode && (killer.state < SLOT_STATE.BATTLE || killer._id != player._slotId))
         {
             return;
         }
         int score;
         Net_Room_Death.RegistryFragInfos(room,killer,out score,isBotMode,isSuicide,kills);
         if (isBotMode)
         {
             killer.Score += killer.killsOnLife + room.IngameAiLevel + score;
             if (killer.Score > 65535)
             {
                 _client.SendPacket(new AUTH_ACCOUNT_KICK_PAK(0));
                 killer.Score = 65535;
                 Printf.warning("O jogador " + player.player_name + " ultrapassou 65535 pontos no modo Bot");
                 SaveLog.LogAbuse("[Bot Mode] Score máximo atingido [Nick: " + player.player_name + "; Id: " + _client.player_id + "]");
             }
             kills.Score = killer.Score;
         }
         else
         {
             killer.Score += score;
             AllUtils.CompleteMission(room,player,killer,kills,MISSION_TYPE.NA,0);
             kills.Score = score;
         }
         using (BATTLE_DEATH_PAK packet = new BATTLE_DEATH_PAK(room,kills,killer,isBotMode))
             room.SendPacketToPlayers(packet,SLOT_STATE.BATTLE,0);
         Net_Room_Death.EndBattleByDeath(room,killer,isBotMode,isSuicide);
     }
     catch (Exception ex)
     {
         SaveLog.fatal(ex.ToString());
         Printf.b_danger("[BATTLE_DEATH_REC.run] Erro fatal!");
         _client.Close(0);
     }
 }
Esempio n. 6
0
 public BATTLE_STARTBATTLE_PAK(SLOT slot,Account pR,List <int> dinos,bool isBotMode,bool type)
 {
     this.slot  = slot;
     room       = pR._room;
     this.type  = type ? 0 : 1;
     this.dinos = dinos;
     if (room != null)
     {
         isBattle = 1;
         if (!isBotMode)
         {
             AllUtils.CompleteMission(room,pR,slot,type ? MISSION_TYPE.STAGE_ENTER : MISSION_TYPE.STAGE_INTERCEPT,0);
         }
     }
 }
Esempio n. 7
0
 public override void run()
 {
     try
     {
         Account player = this._client._player;
         if (player == null)
         {
             return;
         }
         Room room = player._room;
         if (room == null || room.round.Timer != null || room._state < RoomState.Battle)
         {
             return;
         }
         bool isBotMode = room.isBotMode();
         SLOT slot      = room.getSlot((int)this.kills.killerIdx);
         if (slot == null || !isBotMode && (slot.state < SLOT_STATE.BATTLE || slot._id != player._slotId))
         {
             return;
         }
         int score;
         Net_Room_Death.RegistryFragInfos(room,slot,out score,isBotMode,this.isSuicide,this.kills);
         if (isBotMode)
         {
             slot.Score += slot.killsOnLife + (int)room.IngameAiLevel + score;
             if (slot.Score > (int)ushort.MaxValue)
             {
                 slot.Score = (int)ushort.MaxValue;
                 Logger.LogHack("[Player: " + player.player_name + "; Id: " + (object)this._client.player_id + "] chegou a pontuação máxima do modo BOT.");
             }
             this.kills.Score = slot.Score;
         }
         else
         {
             slot.Score += score;
             AllUtils.CompleteMission(room,player,slot,this.kills,MISSION_TYPE.NA,0);
             this.kills.Score = score;
         }
         using (BATTLE_DEATH_PAK battleDeathPak = new BATTLE_DEATH_PAK(room,this.kills,slot,isBotMode))
             room.SendPacketToPlayers((SendPacket)battleDeathPak,SLOT_STATE.BATTLE,0);
         Net_Room_Death.EndBattleByDeath(room,slot,isBotMode,this.isSuicide);
     }
     catch (Exception ex)
     {
         Logger.info("BATTLE_DEATH_REC: " + ex.ToString());
         this._client.Close(0, false);
     }
 }
Esempio n. 8
0
 public static void UninstallBomb(Room room,SLOT slot)
 {
     if (!room.C4_actived)
     {
         return;
     }
     using (BATTLE_MISSION_BOMB_UNINSTALL_PAK packet = new BATTLE_MISSION_BOMB_UNINSTALL_PAK(slot._id))
         room.SendPacketToPlayers(packet,SLOT_STATE.BATTLE,0);
     if (room.room_type != 10)
     {
         slot.objetivos++;
         room.blue_rounds++;
         AllUtils.CompleteMission(room,slot,MISSION_TYPE.C4_DEFUSE,0);
         AllUtils.BattleEndRound(room,1,RoundEndType.Uninstall);
     }
 }
Esempio n. 9
0
 public static void InstallBomb(Room room,SLOT slot,int areaId,float x,float y,float z)
 {
     if (room.C4_actived)
     {
         return;
     }
     using (BATTLE_MISSION_BOMB_INSTALL_PAK packet = new BATTLE_MISSION_BOMB_INSTALL_PAK(slot._id,(byte)areaId,x,y,z))
         room.SendPacketToPlayers(packet,SLOT_STATE.BATTLE,0);
     if (room.room_type != 10)
     {
         room.C4_actived = true;
         slot.objetivos++;
         AllUtils.CompleteMission(room,slot,MISSION_TYPE.C4_PLANT,0);
         room.StartBomb();
     }
 }
 public override void run()
 {
     try
     {
         Account p = _client._player;
         if (p == null)
         {
             return;
         }
         Room room = p._room;
         if (room != null && room.round.Timer == null && room._state == RoomState.Battle &&
             room.TRex == TRex)
         {
             SLOT slot = room.getSlot(p._slotId);
             if (slot == null || slot.state != SLOT_STATE.BATTLE)
             {
                 return;
             }
             if (slot._team == 0)
             {
                 room.red_dino += 5;
             }
             else
             {
                 room.blue_dino += 5;
             }
             using (BATTLE_DINO_PLACAR_PAK packet = new BATTLE_DINO_PLACAR_PAK(room))
                 room.SendPacketToPlayers(packet,SLOT_STATE.BATTLE,0);
             AllUtils.CompleteMission(room,p,slot,MISSION_TYPE.DEATHBLOW,weaponId);
         }
     }
     catch (Exception ex)
     {
         SaveLog.fatal(ex.ToString());
         Printf.b_danger("[BATTLE_DINO_DEATHBLOW_REC.run] Erro fatal!");
     }
 }
 public override void run()
 {
     try
     {
         Account player = this._client._player;
         if (player == null)
         {
             return;
         }
         Room room = player._room;
         if (room == null || room.round.Timer != null || (room._state != RoomState.Battle || room.TRex != this.TRex))
         {
             return;
         }
         SLOT slot = room.getSlot(player._slotId);
         if (slot == null || slot.state != SLOT_STATE.BATTLE)
         {
             return;
         }
         if (slot._team == 0)
         {
             room.red_dino += 5;
         }
         else
         {
             room.blue_dino += 5;
         }
         using (BATTLE_DINO_PLACAR_PAK battleDinoPlacarPak = new BATTLE_DINO_PLACAR_PAK(room))
             room.SendPacketToPlayers((SendPacket)battleDinoPlacarPak,SLOT_STATE.BATTLE,0);
         AllUtils.CompleteMission(room,player,slot,MISSION_TYPE.DEATHBLOW,this.weaponId);
     }
     catch (Exception ex)
     {
         Logger.info("BATTLE_DINO_DEATHBLOW_REC: " + ex.ToString());
     }
 }
Esempio n. 12
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;
                }
            }
        }
        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++;
                }
            }
        }