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); }
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); }
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 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); } }
private static void LoadPacket(byte[] buffer) { ReceiveGPacket p = new ReceiveGPacket(buffer); short num1 = p.readH(); try { switch (num1) { case 1: Net_Room_Pass_Portal.Load(p); break; case 2: Net_Room_C4.Load(p); break; case 3: Net_Room_Death.Load(p); break; case 4: Net_Room_HitMarker.Load(p); break; case 5: Net_Room_Sabotage_Sync.Load(p); break; case 10: Account account1 = AccountManager.getAccount(p.readQ(), true); if (account1 == null) { break; } account1.SendPacket((SendPacket) new AUTH_ACCOUNT_KICK_PAK(1)); account1.SendPacket((SendPacket) new SERVER_MESSAGE_ERROR_PAK(2147487744U)); account1.Close(1000, false); break; case 11: int num2 = (int)p.readC(); int num3 = (int)p.readC(); Account account2 = AccountManager.getAccount(p.readQ(), 0); if (account2 == null) { break; } Account account3 = AccountManager.getAccount(p.readQ(), true); if (account3 == null) { break; } FriendState friendState = num3 == 1 ? FriendState.Online : FriendState.Offline; if (num2 == 0) { int index = -1; Friend friend = account3.FriendSystem.GetFriend(account2.player_id, out index); if (index == -1 || friend == null || friend.state != 0) { break; } account3.SendPacket((SendPacket) new FRIEND_UPDATE_PAK(FriendChangeState.Update, friend, friendState, index)); break; } account3.SendPacket((SendPacket) new CLAN_MEMBER_INFO_CHANGE_PAK(account2, friendState)); break; case 13: long id1 = p.readQ(); byte num4 = p.readC(); byte[] data = p.readB((int)p.readUH()); Account account4 = AccountManager.getAccount(id1, true); if (account4 == null) { break; } if (num4 == (byte)0) { account4.SendPacket(data); break; } account4.SendCompletePacket(data); break; case 15: int id2 = p.readD(); int num5 = p.readD(); GameServerModel server = ServersXML.getServer(id2); if (server == null) { break; } server._LastCount = num5; break; case 16: Net_Clan_Sync.Load(p); break; case 17: Net_Friend_Sync.Load(p); break; case 18: Net_Inventory_Sync.Load(p); break; case 19: Net_Player_Sync.Load(p); break; case 20: Net_Server_Warning.LoadGMWarning(p); break; case 21: Net_Clan_Servers_Sync.Load(p); break; case 22: Net_Server_Warning.LoadShopRestart(p); break; case 23: Net_Server_Warning.LoadServerUpdate(p); break; case 24: Net_Server_Warning.LoadShutdown(p); break; case 31: EventLoader.ReloadEvent((int)p.readC()); Logger.warning("[Game_SyncNet] Evento re-carregado."); break; case 32: ServerConfigSyncer.GenerateConfig((int)p.readC()); Logger.warning("[Game_SyncNet] Configurações (DB) resetadas."); break; default: Logger.warning("[Game_SyncNet] Tipo de conexão não encontrada: " + (object)num1); break; } } catch (Exception ex) { Logger.error("[Crash/Game_SyncNet] Tipo: " + (object)num1 + "\r\n" + ex.ToString()); if (p == null) { return; } Logger.error("COMP: " + BitConverter.ToString(p.getBuffer())); } }
private static void LoadPacket(byte[] buffer) { ReceiveGPacket p = new ReceiveGPacket(buffer); short opcode = p.readH(); //Printf.warnDark("Receive SYNC - " + opcode.ToString()); try { switch (opcode) { case 1: Net_Room_Pass_Portal.Load(p); break; case 2: // Bomba Net_Room_C4.Load(p); break; case 3: //Death Net_Room_Death.Load(p); break; case 4: Net_Room_HitMarker.Load(p); break; case 5: Net_Room_Sabotage_Sync.Load(p); break; case 10: Account player = AccountManager.getAccount(p.readQ(), true); if (player != null) { player.SendPacket(new AUTH_ACCOUNT_KICK_PAK(1)); player.SendPacket(new SERVER_MESSAGE_ERROR_PAK(0x80001000)); player.Close(1000); } break; case 11: //Request to sync a specific friend or clan info int type = p.readC(); int isConnect = p.readC(); Account player11 = AccountManager.getAccount(p.readQ(), 0); if (player11 != null) { Account friendAcc = AccountManager.getAccount(p.readQ(), true); if (friendAcc != null) { FriendState state = isConnect == 1 ? FriendState.Online : FriendState.Offline; if (type == 0) { int idx = -1; Friend friend = friendAcc.FriendSystem.GetFriend(player11.player_id, out idx); if (idx != -1 && friend != null && friend.state == 0) { friendAcc.SendPacket(new FRIEND_UPDATE_PAK(FriendChangeState.Update, friend, state, idx)); } } else { friendAcc.SendPacket(new CLAN_MEMBER_INFO_CHANGE_PAK(player11, state)); } } } break; case 13: long playerId = p.readQ(); byte type13 = p.readC(); byte[] data = p.readB(p.readUH()); Account player13 = AccountManager.getAccount(playerId, true); if (player13 != null) { if (type13 == 0) { player13.SendPacket(data); } else { player13.SendCompletePacket(data); } } break; case 15: short serverId = p.readH(); short count = p.readH(); GameServerModel gs = ServersXML.getServer(serverId); if (gs != null) { gs._LastCount = count; } break; case 16: Net_Clan_Sync.Load(p); break; case 17: Net_Friend_Sync.Load(p); break; case 18: Net_Inventory_Sync.Load(p); break; case 19: Net_Player_Sync.Load(p); break; case 21: Net_Clan_Servers_Sync.Load(p); break; case 100: ReadAPI_Cash.Load(p); break; default: Printf.warning("[Game_SyncNet] Tipo de conexão não encontrada: " + opcode); break; } } catch (Exception ex) { SaveLog.fatal("[Game_SyncNet.LoadPacket] Tipo: " + opcode + "\r\n" + ex.ToString()); Printf.b_danger("[GameSyncNet.LoadPacket] Erro fatal!"); } }