public static void LoadItem(Account player, ItemsModel item) { if (player == null || player._status.serverId == 0) { return; } GameServerModel gs = Game_SyncNet.GetServer(player._status); if (gs == null) { return; } using (SendGPacket pk = new SendGPacket()) { pk.writeH(18); pk.writeQ(player.player_id); pk.writeQ(item._objId); pk.writeD(item._id); pk.writeC((byte)item._equip); pk.writeC((byte)item._category); pk.writeD(item._count); Game_SyncNet.SendPacket(pk.mstream.ToArray(), gs._syncConn); } }
/* * public static void Update(Clan clan, int type) * { * foreach (GameServerModel gs in ServersXML._servers) * { * if (gs._serverId == 0 || gs._serverId == ConfigGS.serverId) * continue; * * using (SendGPacket pk = new SendGPacket()) * { * pk.writeH(22); * pk.writeC((byte)type); * if (type == 0) * pk.writeQ(clan.owner_id); * else if (type == 1) * { * pk.writeC((byte)(clan._name.Length + 1)); * pk.writeS(clan._name, clan._name.Length + 1); * } * else if (type == 2) * pk.writeC((byte)clan._name_color); * Game_SyncNet.SendPacket(pk.mstream.ToArray(), gs._syncConn); * } * } * } */ // send to game public static void Load(Clan clan, int type) { foreach (GameServerModel gs in ServersXML._servers) { if (gs._serverId == 0 || gs._serverId == ConfigGS.serverId) { continue; } using (SendGPacket pk = new SendGPacket()) { pk.writeH(21); pk.writeC((byte)type); pk.writeD(clan._id); if (type == 0) { pk.writeQ(clan.owner_id); pk.writeD(clan.creationDate); pk.writeC((byte)(clan._name.Length + 1)); pk.writeS(clan._name, clan._name.Length + 1); pk.writeC((byte)(clan._info.Length + 1)); pk.writeS(clan._info, clan._info.Length + 1); } Game_SyncNet.SendPacket(pk.mstream.ToArray(), gs._syncConn); } } }
/// <summary> /// /// </summary> /// <param name="player">Conta principal</param> /// <param name="friend">Amigo que será adicionado/atualizado..</param> /// <param name="type">0=Adicionar|1=Atualizar|2=Deletar</param> /// // send to Game or sync public static void Load(Account player, Friend friend, int type) { if (player == null) { return; } GameServerModel gs = Game_SyncNet.GetServer(player._status); if (gs == null) { return; } using (SendGPacket pk = new SendGPacket()) { pk.writeH(17); pk.writeQ(player.player_id); pk.writeC((byte)type); pk.writeQ(friend.player_id); if (type != 2) { pk.writeC((byte)friend.state); } Game_SyncNet.SendPacket(pk.mstream.ToArray(), gs._syncConn); } }
public static void Load(Account player, Friend friend, int type) { if (player == null) { return; } GameServerModel server = Game_SyncNet.GetServer(player._status); if (server == null) { return; } using (SendGPacket sendGpacket = new SendGPacket()) { sendGpacket.writeH((short)17); sendGpacket.writeQ(player.player_id); sendGpacket.writeC((byte)type); sendGpacket.writeQ(friend.player_id); if (type != 2) { sendGpacket.writeC((byte)friend.state); sendGpacket.writeC(friend.removed); } Game_SyncNet.SendPacket(sendGpacket.mstream.ToArray(), server.Connection); } }
public bool RemovePlayer(Account p) { bool result = false; try { p.channelId = -1; if (p.Session != null) { lock (_players) { result = _players.Remove(p.Session); } if (result) { Game_SyncNet.UpdateGSCount(serverId); } } } catch (Exception ex) { SaveLog.fatal(ex.ToString()); Printf.b_danger("[Channel.RemovePlayer] Erro fatal!"); } return(result); }
public static void Load(Clan clan, int type) { foreach (GameServerModel server in ServersXML._servers) { if (server._id != 0 && server._id != ConfigGS.serverId) { using (SendGPacket sendGpacket = new SendGPacket()) { sendGpacket.writeH((short)21); sendGpacket.writeC((byte)type); sendGpacket.writeD(clan._id); if (type == 0) { sendGpacket.writeQ(clan.owner_id); sendGpacket.writeD(clan.creationDate); sendGpacket.writeC((byte)(clan._name.Length + 1)); sendGpacket.writeS(clan._name, clan._name.Length + 1); sendGpacket.writeC((byte)(clan._info.Length + 1)); sendGpacket.writeS(clan._info, clan._info.Length + 1); } Game_SyncNet.SendPacket(sendGpacket.mstream.ToArray(), server.Connection); } } } }
public static void Update(Clan clan, int type) { foreach (GameServerModel server in ServersXML._servers) { if (server._id != 0 && server._id != ConfigGS.serverId) { using (SendGPacket sendGpacket = new SendGPacket()) { sendGpacket.writeH((short)22); sendGpacket.writeC((byte)type); switch (type) { case 0: sendGpacket.writeQ(clan.owner_id); break; case 1: sendGpacket.writeC((byte)(clan._name.Length + 1)); sendGpacket.writeS(clan._name, clan._name.Length + 1); break; case 2: sendGpacket.writeC((byte)clan._name_color); break; } Game_SyncNet.SendPacket(sendGpacket.mstream.ToArray(), server.Connection); } } } }
public void SendPacket(SendPacket sp, bool OnlyInServer) { if (_connection != null) { _connection.SendPacket(sp); } else if (!OnlyInServer && (_status.serverId != 255 && _status.serverId != ConfigGS.serverId)) { Game_SyncNet.SendBytes(player_id, sp, _status.serverId); } }
public void SendCompletePacket(byte[] data, bool OnlyInServer) { if (_connection != null) { _connection.SendCompletePacket(data); } else if (!OnlyInServer && (_status.serverId != 255 && _status.serverId != ConfigGS.serverId)) { Game_SyncNet.SendCompleteBytes(player_id, data, _status.serverId); } }
public bool AddPlayer(PlayerSession pS) { lock (_players) { if (!_players.Contains(pS)) { _players.Add(pS); Game_SyncNet.UpdateGSCount(serverId); return(true); } return(false); } }
public void SendCompletePacket(byte[] data, bool OnlyInServer) { if (this._connection != null) { this._connection.SendCompletePacket(data); } else { if (OnlyInServer || this._status.serverId == byte.MaxValue || (int)this._status.serverId == ConfigGS.serverId) { return; } Game_SyncNet.SendCompleteBytes(this.player_id, data, (int)this._status.serverId); } }
public void SendPacket(SendPacket sp, bool OnlyInServer) { if (this._connection != null) { this._connection.SendPacket(sp); } else { if (OnlyInServer || this._status.serverId == byte.MaxValue || (int)this._status.serverId == ConfigGS.serverId) { return; } Game_SyncNet.SendBytes(this.player_id, sp, (int)this._status.serverId); } }
public static void SendUDPPlayerLeave(Room room, int slotId) { if (room == null) { return; } int count = room.getPlayingPlayers(2, SLOT_STATE.BATTLE, 0, slotId); using (SendGPacket pk = new SendGPacket()) { pk.writeH(2); pk.writeD(room.UniqueRoomId); pk.writeD((room.mapId * 16) + room.room_type); pk.writeC((byte)slotId); pk.writeC((byte)count); Game_SyncNet.SendPacket(pk.mstream.ToArray(), room.UDPServer._battleSyncConn); } }
public static void SendUDPPlayerLeave(Room room, int slotId) { if (room == null) { return; } int playingPlayers = room.getPlayingPlayers(2, SLOT_STATE.BATTLE, 0, slotId); using (SendGPacket sendGpacket = new SendGPacket()) { sendGpacket.writeH((short)2); sendGpacket.writeD(room.UniqueRoomId); sendGpacket.writeD(room.mapId * 16 + (int)room.room_type); sendGpacket.writeC((byte)slotId); sendGpacket.writeC((byte)playingPlayers); Game_SyncNet.SendPacket(sendGpacket.mstream.ToArray(), room.UDPServer.Connection); } }
public static void Load(Account pl, Account member, int type) { if (pl == null) { return; } GameServerModel server = Game_SyncNet.GetServer(pl._status); if (server == null) { return; } using (SendGPacket sendGpacket = new SendGPacket()) { sendGpacket.writeH((short)16); sendGpacket.writeQ(pl.player_id); sendGpacket.writeC((byte)type); switch (type) { case 1: sendGpacket.writeQ(member.player_id); sendGpacket.writeC((byte)(member.player_name.Length + 1)); sendGpacket.writeS(member.player_name, member.player_name.Length + 1); sendGpacket.writeB(member._status.buffer); sendGpacket.writeC((byte)member._rank); break; case 2: sendGpacket.writeQ(member.player_id); break; case 3: sendGpacket.writeD(pl.clanId); sendGpacket.writeC((byte)pl.clanAccess); break; } Game_SyncNet.SendPacket(sendGpacket.mstream.ToArray(), server.Connection); } }
/// <summary> /// /// </summary> /// <param name="pl">Conta principal</param> /// <param name="member"></param> /// <param name="type">0=Zerar players e clanId|1=Adicionar|2=Remover|3=att clanid e aux</param> public static void Load(Account pl, Account member, int type) { if (pl == null) { return; } GameServerModel gs = Game_SyncNet.GetServer(pl._status); if (gs == null) { return; } using (SendGPacket pk = new SendGPacket()) { pk.writeH(16); pk.writeQ(pl.player_id); pk.writeC((byte)type); if (type == 1) //adicionar { pk.writeQ(member.player_id); pk.writeC((byte)(member.player_name.Length + 1)); pk.writeS(member.player_name, member.player_name.Length + 1); pk.writeB(member._status.buffer); pk.writeC((byte)member._rank); } else if (type == 2) //remover { pk.writeQ(member.player_id); } else if (type == 3) //atualizar id do clã e aux { pk.writeD(pl.clanId); pk.writeC((byte)pl.clanAccess); } Game_SyncNet.SendPacket(pk.mstream.ToArray(), gs._syncConn); } }
public static void LoadGoldCash(Account player) { if (player == null) { return; } GameServerModel server = Game_SyncNet.GetServer(player._status); if (server == null) { return; } using (SendGPacket sendGpacket = new SendGPacket()) { sendGpacket.writeH((short)19); sendGpacket.writeQ(player.player_id); sendGpacket.writeC((byte)0); sendGpacket.writeC((byte)player._rank); sendGpacket.writeD(player._gp); sendGpacket.writeD(player._money); Game_SyncNet.SendPacket(sendGpacket.mstream.ToArray(), server.Connection); } }
public bool RemovePlayer(Account p) { bool flag = false; try { p.channelId = -1; if (p.Session != null) { lock (this._players) flag = this._players.Remove(p.Session); if (flag) { Game_SyncNet.UpdateGSCount(this.serverId); } } } catch (Exception ex) { Logger.warning(ex.ToString()); } return(flag); }
/// <summary> /// Atualiza 'gp', 'money', 'rank'. /// </summary> /// <param name="player"></param> public static void LoadGoldCash(Account player) { if (player == null) { return; } GameServerModel gs = Game_SyncNet.GetServer(player._status); if (gs == null) { return; } using (SendGPacket pk = new SendGPacket()) { pk.writeH(19); pk.writeQ(player.player_id); pk.writeC(0); pk.writeC((byte)player._rank); pk.writeD(player._gp); pk.writeD(player._money); Game_SyncNet.SendPacket(pk.mstream.ToArray(), gs._syncConn); } }
public static void LoadItem(Account player, ItemsModel item) { if (player == null || player._status.serverId == (byte)0) { return; } GameServerModel server = Game_SyncNet.GetServer(player._status); if (server == null) { return; } using (SendGPacket sendGpacket = new SendGPacket()) { sendGpacket.writeH((short)18); sendGpacket.writeQ(player.player_id); sendGpacket.writeQ(item._objId); sendGpacket.writeD(item._id); sendGpacket.writeC((byte)item._equip); sendGpacket.writeC((byte)item._category); sendGpacket.writeD(item._count); Game_SyncNet.SendPacket(sendGpacket.mstream.ToArray(), server.Connection); } }
public static void Main(string[] args) { { Application.Run((Form) new ip()); } Console.Clear(); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(Programm.CurrentDomainOnUnhandledException); Console.Title = "Iniciando o Point Blank Game Server..."; Logger.StartedFor = "game"; Logger.checkDirectorys(); StringUtil stringUtil = new StringUtil(); stringUtil.AppendLine(" ________ _____ __ ______ _______ "); stringUtil.AppendLine(" / ____/ |/ / / / / / / / / / / / "); stringUtil.AppendLine(" / __/ / /|_/ / / / / / /__/_/ /__/ / "); stringUtil.AppendLine(" / /___/ / / / /_/ / _ / / / / / / "); stringUtil.AppendLine(" "); string str = ComDiv.GetLinkerTime(Assembly.GetExecutingAssembly(), (TimeZoneInfo)null).ToString("dd/MM/yyyy HH:mm"); stringUtil.AppendLine(" Data de Inicialização: " + str + " "); Logger.info(stringUtil.getString()); ConfigGS.Load(); ComDiv.GetDate(); BasicInventoryXML.Load(); ServerConfigSyncer.GenerateConfig(ConfigGS.configId); ServersXML.Load(); ChannelsXML.Load(ConfigGS.serverId); EventLoader.LoadAll(); TitlesXML.Load(); TitleAwardsXML.Load(); ClanManager.Load(); NickFilter.Load(); MissionCardXML.LoadBasicCards(1); BattleServerXML.Load(); RankXML.Load(); RankXML.LoadAwards(); ClanRankXML.Load(); MissionAwards.Load(); MissionsXML.Load(); Translation.Load(); ShopManager.Load(1); TorunamentRulesManager.LoadList(); RandomBoxXML.LoadBoxes(); CupomEffectManager.LoadCupomFlags(); bool flag1 = true; foreach (string text in args) { if (ComDiv.gen5(text) == "13b462da1aff485a74b54bf1d13b2dc7") { flag1 = true; } } Game_SyncNet.Start(); if (flag1) { bool flag2 = GameManager.Start(); Logger.warning("[Aviso] Padrão de textos: " + ConfigGB.EncodeText.EncodingName); Logger.warning("[Aviso] Modo atual: " + (ConfigGS.isTestMode ? "Testes" : "Público")); Logger.warning(Programm.StartSuccess()); if (flag2) { LoggerGS.updateRAM(); } } Process.GetCurrentProcess().WaitForExit(); }
public override void run() { try { Account p = _client._player; if (p == null) { return; } Room r = p._room; if (r != null && r._state == RoomState.Battle) { SLOT slot = r.getSlot(p._slotId); if (slot != null && slot.state == SLOT_STATE.BATTLE) { if (slot._deathState.HasFlag(DeadEnum.isDead) || slot._deathState.HasFlag(DeadEnum.useChat)) { slot._deathState = DeadEnum.isAlive; } PlayerManager.CheckEquipedItems(equip,p._inventory._items,true); string sala = r.name.ToLower(); if ((sala.Contains("@camp") || sala.Contains("@cnpb") || sala.Contains("@79") || sala.Contains("@lan")) && ConfigGS.EnableClassicRules) { ClassicModeCheck(sala,equip,p); } slot._equip = equip; if ((WeaponsFlag & 8) > 0) { insertItem(equip._primary,slot); } if ((WeaponsFlag & 4) > 0) { insertItem(equip._secondary,slot); } if ((WeaponsFlag & 2) > 0) { insertItem(equip._melee,slot); } if ((WeaponsFlag & 1) > 0) { insertItem(equip._grenade,slot); } insertItem(equip._special,slot); if (slot._team == 0) { insertItem(equip._red,slot); } else { insertItem(equip._blue,slot); } insertItem(equip._helmet,slot); insertItem(equip._beret,slot); insertItem(equip._dino,slot); using (BATTLE_RESPAWN_PAK packet = new BATTLE_RESPAWN_PAK(r,slot)) r.SendPacketToPlayers(packet,SLOT_STATE.BATTLE,0); if (slot.firstRespawn) { slot.firstRespawn = false; Game_SyncNet.SendUDPPlayerSync(r,slot,p.effects,0); } else { Game_SyncNet.SendUDPPlayerSync(r,slot,p.effects,2); } if (r.weaponsFlag != WeaponsFlag) { SaveLog.warning("Room: " + r.weaponsFlag + "; Player: " + WeaponsFlag); } } } } catch (Exception ex) { SaveLog.fatal(ex.ToString()); Printf.b_danger("[BATTLE_RESPAWN_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._state != RoomState.Battle) { return; } SLOT slot = room.getSlot(player._slotId); if (slot == null || slot.state != SLOT_STATE.BATTLE) { return; } if (slot._deathState.HasFlag((Enum)DeadEnum.isDead) || slot._deathState.HasFlag((Enum)DeadEnum.useChat)) { slot._deathState = DeadEnum.isAlive; } PlayerManager.CheckEquipedItems(this.equip,player._inventory._items,true); this.TorunamentRulesCheck(room,this.equip); slot._equip = this.equip; if ((this.WeaponsFlag & 8) > 0) { this.insertItem(this.equip._primary,slot); } if ((this.WeaponsFlag & 4) > 0) { this.insertItem(this.equip._secondary,slot); } if ((this.WeaponsFlag & 2) > 0) { this.insertItem(this.equip._melee,slot); } if ((this.WeaponsFlag & 1) > 0) { this.insertItem(this.equip._grenade,slot); } this.insertItem(this.equip._special,slot); if (slot._team == 0) { this.insertItem(this.equip._red,slot); } else { this.insertItem(this.equip._blue,slot); } this.insertItem(this.equip._helmet,slot); this.insertItem(this.equip._beret,slot); this.insertItem(this.equip._dino,slot); using (BATTLE_RESPAWN_PAK battleRespawnPak = new BATTLE_RESPAWN_PAK(room,slot)) room.SendPacketToPlayers((SendPacket)battleRespawnPak,SLOT_STATE.BATTLE,0); if (slot.firstRespawn) { slot.firstRespawn = false; Game_SyncNet.SendUDPPlayerSync(room,slot,player.effects,0); } else { Game_SyncNet.SendUDPPlayerSync(room,slot,player.effects,2); } if ((int)room.weaponsFlag == this.WeaponsFlag) { return; } Logger.warning("Room: " + (object)room.weaponsFlag + "; Player: " + (object)this.WeaponsFlag); } catch (Exception ex) { Logger.warning("[BATTLE_RESPAWN_REC] " + ex.ToString()); } }
public static void Main(string[] args) { Printf.blue("[Licença de uso]", false); Printf.blue("[+] Esta é uma versão compilada para Project Bloodi!!!", false); Printf.blue("[+] https://github.com/luisfeliperm", false); Printf.info("\n\n\n Iniciando servidor...", false); Thread.Sleep(5000); Console.Clear(); TimeStarted = DateTime.Now; SaveLog.aplication = "game"; Console.Title = "PointBlank - Game"; header(true); // Validações System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); FileVersionInfo fileVersion = FileVersionInfo.GetVersionInfo(assembly.Location); if (!Compatible.Check(fileVersion.FileVersion, "game") || !ServerLicense.check() || !ServerPasswd.Compare(args)) { Console.ReadKey(); return; } SaveLog.checkDirectorys(); ConfigGS.Load(); WelcomeXML.Load(); BasicInventoryXML.Load(); ServerConfig.Load(); ServersXML.Load(); ChannelsXML.Load(ConfigGS.serverId); EventLoader.LoadAll(); RankUp.load(); TitlesXML.Load(); TitleAwardsXML.Load(); ClanManager.Load(); NickFilter.Load(); MissionCardXML.LoadBasicCards(1); BattleServerJSON.Load(); RankXML.Load(); RankXML.LoadAwards(); ClanRankXML.Load(); MissionAwards.Load(); MissionsXML.Load(); Translation.Load(); ShopManager.Load(1); ClassicModeManager.LoadList(); RandomBoxXML.LoadBoxes(); CupomEffectManager.LoadCupomFlags(); Game_SyncNet.Start(); bool started = GameManager.Start(); if (started) { cpuMonitor.updateRAM(); } header(false); while (true) { Console.ForegroundColor = ConsoleColor.Red; Console.Write("[SHELL]# "); Console.ForegroundColor = ConsoleColor.White; String input = Console.ReadLine(); if (string.IsNullOrEmpty(input)) { continue; } Comandos.checkCmd(input); } //Process.GetCurrentProcess().WaitForExit(); }
public static void Load(ReceiveGPacket p) { int id1 = (int)p.readH(); int id2 = (int)p.readH(); byte num1 = p.readC(); byte num2 = p.readC(); int num3 = p.readD(); float num4 = p.readT(); float num5 = p.readT(); float num6 = p.readT(); byte num7 = p.readC(); int num8 = (int)num7 * 15; if (p.getBuffer().Length > 25 + num8) { Logger.warning("[Invalid DEATH: " + BitConverter.ToString(p.getBuffer()) + "]"); } Channel channel = ChannelsXML.getChannel(id2); if (channel == null) { return; } Room room = channel.getRoom(id1); if (room == null || room.round.Timer != null || room._state != RoomState.Battle) { return; } SLOT slot1 = room.getSlot((int)num1); if (slot1 == null || slot1.state != SLOT_STATE.BATTLE) { return; } FragInfos kills = new FragInfos() { killerIdx = num1, killingType = CharaKillType.DEFAULT, weapon = num3, x = num4, y = num5, z = num6, flag = num2 }; bool isSuicide = false; for (int index = 0; index < (int)num7; ++index) { byte num9 = p.readC(); byte hitspotInfo = p.readC(); float num10 = p.readT(); float num11 = p.readT(); float num12 = p.readT(); int num13 = (int)p.readC(); int slotIdx = (int)hitspotInfo & 15; SLOT slot2 = room.getSlot(slotIdx); if (slot2 != null && slot2.state == SLOT_STATE.BATTLE) { Frag frag = new Frag(hitspotInfo) { flag = (byte)num13, victimWeaponClass = num9, x = num10, y = num11, z = num12 }; if ((int)kills.killerIdx == slotIdx) { isSuicide = true; } kills.frags.Add(frag); } } kills.killsCount = (byte)kills.frags.Count; Game_SyncNet.genDeath(room,slot1,kills,isSuicide); }
public static void Load(ReceiveGPacket p) { int roomId = p.readH(); int channelId = p.readH(); byte killerId = p.readC(); byte dieObjectId = p.readC(); int weaponId = p.readD(); float killerX = p.readT(); float killerY = p.readT(); float killerZ = p.readT(); byte killsCount = p.readC(); int estimado = (killsCount * 15); if (p.getBuffer().Length > (25 + estimado)) { SaveLog.warning("[Invalid DEATH] Lenght > " + (25 + estimado) + " KillerId " + killerId + " Packet:" + BitConverter.ToString(p.getBuffer()) + "]"); Printf.warning("Invalid death Killer Id " + killerId); } Channel ch = ChannelsXML.getChannel(channelId); if (ch == null) { return; } Room room = ch.getRoom(roomId); if (room != null && room.round.Timer == null && room._state == RoomState.Battle) { SLOT killer = room.getSlot(killerId); if (killer != null && killer.state == SLOT_STATE.BATTLE) { FragInfos info = new FragInfos { killerIdx = killerId, killingType = 0, //1 - piercing | 2 - mass weapon = weaponId, x = killerX, y = killerY, z = killerZ, flag = dieObjectId }; bool isSuicide = false; for (int i = 0; i < killsCount; i++) { byte weaponClass = p.readC(); byte deathInfo = p.readC(); float vicX = p.readT(); float vicY = p.readT(); float vicZ = p.readT(); int vicFlag = p.readC(); int victimId = deathInfo & 15; SLOT victim = room.getSlot(victimId); if (victim != null && victim.state == SLOT_STATE.BATTLE) { Frag frag = new Frag(deathInfo) { flag = (byte)vicFlag,victimWeaponClass = weaponClass,x = vicX,y = vicY,z = vicZ }; if (info.killerIdx == victimId) { isSuicide = true; } info.frags.Add(frag); } } info.killsCount = (byte)info.frags.Count; Game_SyncNet.genDeath(room,killer,info,isSuicide); } } }