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); }
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); }
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); }
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); } }
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); } } }
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); } }
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); } }
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()); } }
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++; } } }