public override void Handle(virtualUser User) { try { int Type = Convert.ToInt32(getNextBlock()); virtualRoom currentRoom = User.Room; if (currentRoom.getSide(User) == 1 && User.Weapon == 118) // NIU { if (currentRoom.bombPlanted == false) { User.disconnect(); } currentRoom.bombPlanted = false; currentRoom.bombDefused = true; currentRoom.prepareRound(1); currentRoom.cNIUExplosivePoints += 12; } else if (currentRoom.getSide(User) == 0 && User.Weapon == 91) // Derb { currentRoom.bombPlanted = true; currentRoom.cDerbExplosivePoints += 6; currentRoom.RoundTimeLeft = 44000; } currentRoom.send(new PACKET_BOMB(getAllBlocks())); } catch (Exception ex) { Log.AppendError("currentRoom Bomb error: " + ex.Message); } }
public PACKET_INIT_PLAYER(virtualUser User) { try { virtualRoom Room = User.Room; if (Room == null) { return; } this.newPacket(30017); this.addBlock(Room.Players.Count); foreach (virtualUser RoomUser in Room.Players) { this.addBlock(RoomUser.RoomSlot); this.addBlock(RoomUser.Health); this.addBlock(-1); this.addBlock(-1); this.addBlock(-1); } this.addBlock(Room.Vehicles.Count); foreach (Vehicle virtualVehicle in Room.Vehicles.Values) { this.addBlock(virtualVehicle.ID); this.addBlock(virtualVehicle.Health); this.addBlock(virtualVehicle.MaxHealth); this.addBlock("NULL"); } } catch (Exception ex) { Log.AppendError("Error at init player: " + ex.Message); } }
public PACKET_ZOMBIR_CHANGE_ENEMY(virtualRoom Room, int SlotID) { int A = 0; List <virtualZombie> list = Room.ZombieFollowers(SlotID); Room.ZombieFollowers(SlotID);//ci devo mettere roomslot di chi รจ morto Room.CheckAliveRoomSlot(); newPacket(13433); addBlock(Room.Players.Count); //conto dei player in room addBlock(list.Count); //zombi che seguivano il Roomslot uscito foreach (virtualZombie z in list) { addBlock(z.ID); if (Room.ListCheckAliveRoomSlot.Count > 1) { A++; } if (Room.ListCheckAliveRoomSlot.Count == A) { A = 0; } addBlock(Room.ListCheckAliveRoomSlot[A]); } }
public DenDribbelaerPathfinder(virtualRoom.squareState[,] squareStates, double[,] squareHeights, bool[,] squareUnitFlags) { this.squareStates = squareStates; this.squareHeights = squareHeights; this.squareUnitFlags = squareUnitFlags; this.maxX = squareUnitFlags.GetLength(1) - 1; this.maxY = squareUnitFlags.GetLength(0) - 1; }
public PACKET_SPAWN_ZOMBIE_GRINDER(virtualRoom Room, int Slot) { newPacket(13432); addBlock(Slot); addBlock(0); addBlock(2); addBlock(new System.Random().Next(1, 23)); addBlock(200); }
public PACKET_SPAWN_ZOMBIE_MANIAC(virtualRoom Room, int Slot) { newPacket(13432); addBlock(Slot); addBlock(0); addBlock(1); addBlock(new System.Random().Next(1, 23)); addBlock(150); }
//S=> 250078626 13432 4 0 15 6 300000 public PACKET_SPAWN_ZOMBIE_DEFENDER(virtualRoom Room, int Slot) { newPacket(13432); addBlock(Slot); addBlock(0); addBlock(15); addBlock(6); addBlock(300000); }
//S=> 215583432 13432 25 0 14 4 30000 public PACKET_SPAWN_ZOMBIE_BOMBER(virtualRoom Room, int Slot) { newPacket(13432); addBlock(Slot); addBlock(0); addBlock(14); addBlock(4); addBlock(30000); }
public PACKET_SPAWN_ZOMBIE_CHARIOT(virtualRoom Room, int Slot) { newPacket(13432); addBlock(Slot); addBlock(0); addBlock(8); addBlock(new System.Random().Next(1, 23)); addBlock(9000); }
//S=> 275918502 13432 4 0 16 0 350000 public PACKET_SPAWN_ZOMBIE_BREAKER(virtualRoom Room, int Slot) { newPacket(13432); addBlock(Slot); addBlock(0); addBlock(16); addBlock(0); addBlock(100000); //addBlock(350000); }
public static void refreshRoom(virtualRoom Room) { foreach (virtualUser virtualUser in UserManager.getUsersInChannel(Room.Channel, false)) { if ((Decimal)virtualUser.Page == Math.Floor(Convert.ToDecimal(Room.ID / 14))) { virtualUser.send((Packet) new PACKET_ROOMLIST_UPDATE(Room, 1)); } } }
public static virtualUser getUserByRoomSlot(virtualRoom Room, int Roomslot) { foreach (virtualUser virtualUser in Room.Players) { if (virtualUser.RoomSlot == Roomslot) { return(virtualUser); } } return((virtualUser)null); }
/// <summary> /// Threaded void. Ran on background thread at lowest priority, interval = 3500 ms. Updates console title and online users count, active rooms count, peak connections count and peak online users count in database. /// </summary> private static void monitorServer() { while (true) { try { if (Eucalypt._rebooting == true) { Eucalypt.Reboot(); } int onlineCount = userManager.userCount; int peakOnlineCount = userManager.peakUserCount; int roomCount = roomManager.roomCount; int peakRoomCount = roomManager.peakRoomCount; int acceptedConnections = gameSocketServer.acceptedConnections; DateTime Now = DateTime.Now; TimeSpan TimeUsed = Now - ServerStarted; Console.Title = buildRevision + " | Online Users: " + onlineCount + " | Rooms Loaded: " + roomCount + " | Uptime: " + TimeUsed.Days + " days, " + TimeUsed.Hours + " hours and " + TimeUsed.Minutes + " minutes"; using (DatabaseClient dbClient = dbManager.GetClient()) dbClient.runQuery("UPDATE system SET onlinecount = '" + onlineCount + "', onlinecount_peak = '" + peakOnlineCount + "', activerooms = '" + roomCount + "', activerooms_peak = '" + peakRoomCount + "', connections_accepted = '" + acceptedConnections + "'"); if (userManager.checkCorpOnline(6) == 0) { using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE furniture SET var = '1' WHERE tid = '342533'"); } try { virtualRoom Diner = roomManager.getRoom(11); foreach (floorItem Item in Diner.floorItemManager._Items.Values) { if (Item.Sprite == "food1") { Diner.sendData("AZ" + Item.ID + " " + ((Item.ID * 38) + 1), 1000); Item.Var = "1"; } } } catch { } } Thread.Sleep(60000); } catch (Exception e) { Logging.LogThreadException(e.ToString(), "Server monitor task."); } } }
/// <summary> /// Adds a virtualRoom class together with the roomID to the roomManager. /// </summary> /// <param name="roomID">The ID of the room to add..</param> /// <param name="Room">The virtualRoom class of this room.</param> public static void addRoom(int roomID, virtualRoom Room) { if (_Rooms.ContainsKey(roomID) == false) { _Rooms.Add(roomID, Room); Out.WriteLine("Room [" + roomID + ", publicroom: " + Room.isPublicroom.ToString().ToLower() + "] loaded.", Out.logFlags.StandardAction); if (_Rooms.Count > _peakRoomCount) { _peakRoomCount = _Rooms.Count; } } }
public PACKET_SUPPLY_EVENT(virtualUser Client, virtualRoom Room, string ItemCode) { // // 6 1 0 0 DF13 1 newPacket(30053); addBlock(6); // FreeWar : Questo Dovrebbe la identificazione dello Stage! addBlock(1); addBlock(0); addBlock(Client.SupplyTemp); addBlock(ItemCode); // code arma addBlock("3"); // tempo }
public override void Handle(Virtual_Objects.User.virtualUser User) { { virtualRoom Room = User.Room; if (Room != null) { if (Room.Players.Count > 1) { Room.send(new SP_Unknown(31490, getAllBlocks())); } } } }
public override void Handle(virtualUser User) { if (User.Rank > 2) { int EnterRoom = Convert.ToInt32(getNextBlock()); int roomID = Convert.ToInt32(getNextBlock()); if (EnterRoom == 1) // 1 == Join, 2 == Leave, 3 == UpdateGameData [30017] { virtualRoom Room = RoomManager.getRoom(User.Channel, roomID); if (Room != null) { if (User.isSpectating == true) { return; } if (Room.addSpectator(User)) { User.send(new PACKET_SPECTATE_ROOM(User, Room)); User.send(new PACKET_ROOM_UDP(User, Room.Players)); foreach (virtualUser RoomUser in Room.Players) { if (RoomUser.Equals(User) == false && RoomUser.isSpectating == false) { RoomUser.send(new PACKET_ROOM_UDP_SPECTATE(User)); } } } else { StringBuilder SpectatorList = new StringBuilder(); int Count = 0; foreach (virtualUser Spectator in Room.Spectators) { SpectatorList.Append(Spectator.Nickname); Count++; } SpectatorList.ToString().Remove(SpectatorList.ToString().Length - 1, 1); User.send(new PACKET_CHAT("SPECTATE", PACKET_CHAT.ChatType.Room_ToAll, "SPECTATE >> There is no slot empty for this room!", 999, User.Nickname)); } } } else { User.Room.removeSpectator(User); } } else { User.disconnect(); } }
/// <summary> /// Initializes a new virtualBot object, loading the walk squares, chat texts etc. /// </summary> /// <param name="botID">The database ID of the bot.</param> /// <param name="roomUID">The ID that identifies this bot in room.</param> /// <param name="Room">The virtualRoom object where the bot is in.</param> internal virtualBot(int botID, int roomUID, virtualRoom Room) { this.roomUID = roomUID; this.Room = Room; string[] botDetails = DB.runReadRow("SELECT name,mission,figure,x,y,z,freeroam,message_noshouting FROM roombots WHERE id = '" + botID + "'"); this.Name = botDetails[0]; this.Mission = botDetails[1]; this.Figure = botDetails[2]; this.X = int.Parse(botDetails[3]); this.Y = int.Parse(botDetails[4]); this.Z1 = byte.Parse(botDetails[5]); this.Z2 = Z1; this.goalX = -1; this.freeRoam = (botDetails[6] == "1"); this.noShoutingMessage = botDetails[7]; this.Sayings = DB.runReadColumn("SELECT text FROM roombots_texts WHERE id = '" + botID + "' AND type = 'say'", 0); this.Shouts = DB.runReadColumn("SELECT text FROM roombots_texts WHERE id = '" + botID + "' AND type = 'shout'", 0); string[] triggerWords = DB.runReadColumn("SELECT words FROM roombots_texts_triggers WHERE id = '" + botID + "' ORDER BY id ASC", 0); if (triggerWords.Length > 0) { string[] triggerReplies = DB.runReadColumn("SELECT replies FROM roombots_texts_triggers WHERE id = '" + botID + "' ORDER BY id ASC", 0); string[] triggerServeReplies = DB.runReadColumn("SELECT serve_replies FROM roombots_texts_triggers WHERE id = '" + botID + "' ORDER BY id ASC", 0); string[] triggerServeItems = DB.runReadColumn("SELECT serve_item FROM roombots_texts_triggers WHERE id = '" + botID + "' ORDER BY id ASC", 0); this.chatTriggers = new chatTrigger[triggerWords.Length]; for (int i = 0; i < triggerWords.Length; i++) { this.chatTriggers[i] = new chatTrigger(triggerWords[i].Split('}'), triggerReplies[i].Split('}'), triggerServeReplies[i].Split('}'), triggerServeItems[i]); } } int[] Xs = DB.runReadColumn("SELECT x FROM roombots_coords WHERE id = '" + botID + "' ORDER BY id ASC", 0, null); Coords = new Coord[Xs.Length + 1]; Coords[Xs.Length] = new Coord(this.X, this.Y); if (Xs.Length > 1) // More coords assigned than just the start square { int[] Ys = DB.runReadColumn("SELECT y FROM roombots_coords WHERE id = '" + botID + "' ORDER BY id ASC", 0, null); for (int i = 0; i < Xs.Length; i++) { Coords[i] = new Coord(Xs[i], Ys[i]); } } Statuses = new Hashtable(); aiHandler = new Thread(new ThreadStart(AI)); aiHandler.Priority = ThreadPriority.BelowNormal; aiHandler.Start(); }
/// <summary> /// Safely shuts this virtualBot down and tidies up all resources. /// </summary> internal void Kill() { try { aiHandler.Abort(); } catch { } aiHandler = null; Room = null; Statuses = null; Coords = null; Sayings = null; Shouts = null; chatTriggers = null; Customer = null; customerTrigger = null; }
/// <summary> /// Intializes the game lobby with a 'BattleBall'/'SnowStorm' mode. /// </summary> /// <param name="Room">The minimum amount of points that a virtual user requires to start/join a game here.</param> /// <param name="isBattleBall">Indicates if this gamelobby hosts 'BattleBall' games. If false, then 'SnowStorm' games are hosted.</param> /// <param name="rankTitle">The title of the rank for players that are playing in this lobby. The matching minimum and maximum amounts for game points are loaded.</param> internal gameLobby(virtualRoom Room, bool isBattleBall, string rankTitle) { this.Room = Room; this.Rank = rankManager.getGameRank(isBattleBall, rankTitle); this.isBattleBall = isBattleBall; if (isBattleBall) { string[] Powerups = DB.runReadUnsafe("SELECT bb_allowedpowerups FROM games_lobbies WHERE id = '" + Room.roomID + "'").Split(','); this.allowedPowerups = new int[Powerups.Length]; for (int i = 0; i < Powerups.Length; i++) { this.allowedPowerups[i] = int.Parse(Powerups[i]); } } }
public PACKET_END_GAME(virtualRoom Room) { newPacket(30048); addBlock(1); if (Room.Mode != 5) { addBlock((Room.Channel != 1 || Room.Mode != 0 ? Room.KillsDeberanLeft : Room.cDerbRounds)); addBlock((Room.Channel != 1 || Room.Mode != 0 ? Room.KillsNIULeft : Room.cNiuRounds)); } else { if (Room.MapID == 42) { addBlock(Room.Mission3 != null ? 1 : 0); addBlock(Room.Mission3 != null ? 0 : 1); } else if (Room.MapID == 56) { addBlock(Room.Mission2 != null ? 1 : 0); addBlock(Room.Mission2 != null ? 0 : 1); } else { Fill(0, 2); } } addBlock(Room.KillsDerb); addBlock(Room.DeathDerb); addBlock(Room.KillsNiu); addBlock(Room.DeathNiu); addBlock(0); addBlock(0); addBlock(Room.Players.Count); foreach (virtualUser virtualUser in Room.Players) { addBlock(virtualUser.RoomSlot); addBlock(virtualUser.rKills); addBlock(virtualUser.rDeaths); addBlock(virtualUser.rFlags); addBlock(virtualUser.rPoints); addBlock(virtualUser.DinarEarned); addBlock(virtualUser.ExpEarned); addBlock(virtualUser.Exp); addBlock(0); addBlock(0); } addBlock(Room.RoomMasterSlot); }
public override void Handle(virtualUser User) { virtualRoom Room = User.Room; if (User.Room != null) { if (User.Channel != 3) { User.send(new PACKET_SCORE_BOARD(User)); } else { User.send(new PACKET_SCORE_BOARD_AI(User)); } } }
internal virtualCrimeScene(int cID, virtualRoom Room) { this.ID = cID; this.Room = Room; DataRow dRow; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT * FROM room_crimescenes WHERE id = '" + cID + "'"); } //Bot details this.X = Convert.ToInt32(dRow["x"]); this.Y = Convert.ToInt32(dRow["y"]); this.itemID = 0; }
/// <summary> /// Intializes the game lobby with a 'BattleBall'/'SnowStorm' mode. /// </summary> /// <param name="Room">The minimum amount of points that a virtual user requires to start/join a game here.</param> /// <param name="isBattleBall">Indicates if this gamelobby hosts 'BattleBall' games. If false, then 'SnowStorm' games are hosted.</param> /// <param name="rankTitle">The title of the rank for players that are playing in this lobby. The matching minimum and maximum amounts for game points are loaded.</param> /// <param name="roomID">The ID of the room that the user is currently in.</param> internal gameLobby(virtualRoom Room, bool isBattleBall, string rankTitle) { this.Room = Room; this.Rank = rankManager.getGameRank(isBattleBall, rankTitle); this.isBattleBall = isBattleBall; if (isBattleBall) { string[] Powerups; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { Powerups = dbClient.getString("SELECT bb_allowedpowerups FROM games_lobbies WHERE id = '" + Room.roomID + "'").Split(','); } this.allowedPowerups = new int[Powerups.Length]; for (int i = 0; i < Powerups.Length; i++) this.allowedPowerups[i] = int.Parse(Powerups[i]); } }
public static bool addRoom(int Channel, int ID, virtualRoom Room) { try { if (RoomManager._Rooms[Channel].ContainsKey(ID)) { return(false); } Log.AppendText("Added Room [" + ID + ":" + Room.Name + "] to the Room List."); RoomManager._Rooms[Channel].Add(ID, Room); return(true); } catch (Exception ex) { Log.AppendText(ex.Message); return(false); } }
/// <summary> /// Intializes the game lobby with a 'BattleBall'/'SnowStorm' mode. /// </summary> /// <param name="Room">The minimum amount of points that a virtual user requires to start/join a game here.</param> /// <param name="isBattleBall">Indicates if this gamelobby hosts 'BattleBall' games. If false, then 'SnowStorm' games are hosted.</param> /// <param name="rankTitle">The title of the rank for players that are playing in this lobby. The matching minimum and maximum amounts for game points are loaded.</param> /// <param name="roomID">The ID of the room that the user is currently in.</param> internal gameLobby(virtualRoom Room, bool isBattleBall, string rankTitle) { this.Room = Room; this.Rank = rankManager.getGameRank(isBattleBall, rankTitle); this.isBattleBall = isBattleBall; if (isBattleBall) { string[] Powerups; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { Powerups = dbClient.getString("SELECT bb_allowedpowerups FROM games_lobbies WHERE id = '" + Room.roomID + "'").Split(','); } this.allowedPowerups = new int[Powerups.Length]; for (int i = 0; i < Powerups.Length; i++) { this.allowedPowerups[i] = int.Parse(Powerups[i]); } } }
public override void Handle(ReBornWarRock_PServer.GameServer.Virtual_Objects.User.virtualUser User) { virtualRoom currentRoom = User.Room; int num1 = Convert.ToInt32(getBlock(0)); int num2 = Convert.ToInt32(getBlock(1)); int num3 = Convert.ToInt32(getBlock(2)); int num4 = Convert.ToInt32(getBlock(3)); int num5 = Convert.ToInt32(getBlock(4)); int num6 = Convert.ToInt32(getBlock(5)); int ThisTimeStamp = 0; if (num2 == 1 && num3 == 6) { User.send(new PACKET_CHAT("SYSTEM", PACKET_CHAT.ChatType.Room_ToAll, "SYSTEM >> Vai CAzzo ;)!", 999, "NULL")); User.send(new PACKET_3(num4, currentRoom)); } if (num1 == 0 && num2 == 0 && num3 == 0 || num3 == 1 && num5 != 0) { ThisTimeStamp = Structure.timestamp; } { if (num5 == 0 && ThisTimeStamp >= Structure.timestamp) { currentRoom.InHacking = true; User.send(new PACKET_HACKING_ESCAPE(0, currentRoom.EscapeHack, 0)); currentRoom.EscapeHack += 10; ThisTimeStamp += 2; User.send(new PACKET_HACKING_ESCAPE(2, currentRoom.EscapeHack, 0)); } else if (num5 == currentRoom.EscapeHack) { if (currentRoom.HackingPause % 3 == 0) { currentRoom.EscapeHack += 10; } User.send(new PACKET_HACKING_ESCAPE(2, currentRoom.EscapeHack, 0)); } } }
public PACKET_SCORE_BOARD_AI(virtualUser User) { virtualRoom Room = User.Room; newPacket(30032); addBlock(1); addBlock(0); addBlock(0); addBlock(0); addBlock(0); addBlock(Room.PlayerCount); foreach (virtualUser Player in Room.Players) { addBlock(Player.RoomSlot); addBlock(Player.rKills); addBlock(Player.rDeaths); addBlock(0); addBlock(Player.rPoints); addBlock(0); addBlock(0); } }
/// <summary> /// Initializes a new virtualBot object, loading the walk squares, chat texts etc. /// </summary> /// <param name="botID">The database ID of the bot.</param> /// <param name="roomUID">The ID that identifies this bot in room.</param> /// <param name="Room">The virtualRoom object where the bot is in.</param> internal virtualBot(int botID, int roomUID, virtualRoom Room) { this.roomUID = roomUID; this.Room = Room; string[] botDetails = DB.runReadRow("SELECT name,mission,figure,x,y,z,freeroam,message_noshouting FROM roombots WHERE id = '" + botID + "'"); this.Name = botDetails[0]; this.Mission = botDetails[1]; this.Figure = botDetails[2]; this.X = int.Parse(botDetails[3]); this.Y = int.Parse(botDetails[4]); this.Z1 = byte.Parse(botDetails[5]); this.Z2 = Z1; this.goalX = -1; this.freeRoam = (botDetails[6] == "1"); this.noShoutingMessage = botDetails[7]; this.Sayings = DB.runReadColumn("SELECT text FROM roombots_texts WHERE id = '" + botID + "' AND type = 'say'", 0); this.Shouts = DB.runReadColumn("SELECT text FROM roombots_texts WHERE id = '" + botID + "' AND type = 'shout'", 0); string[] triggerWords = DB.runReadColumn("SELECT words FROM roombots_texts_triggers WHERE id = '" + botID + "' ORDER BY id ASC", 0); if (triggerWords.Length > 0) { string[] triggerReplies = DB.runReadColumn("SELECT replies FROM roombots_texts_triggers WHERE id = '" + botID + "' ORDER BY id ASC", 0); string[] triggerServeReplies = DB.runReadColumn("SELECT serve_replies FROM roombots_texts_triggers WHERE id = '" + botID + "' ORDER BY id ASC", 0); string[] triggerServeItems = DB.runReadColumn("SELECT serve_item FROM roombots_texts_triggers WHERE id = '" + botID + "' ORDER BY id ASC", 0); this.chatTriggers = new chatTrigger[triggerWords.Length]; for (int i = 0; i < triggerWords.Length; i++) this.chatTriggers[i] = new chatTrigger(triggerWords[i].Split('}'), triggerReplies[i].Split('}'), triggerServeReplies[i].Split('}'), triggerServeItems[i]); } int[] Xs = DB.runReadColumn("SELECT x FROM roombots_coords WHERE id = '" + botID + "' ORDER BY id ASC", 0, null); Coords = new Coord[Xs.Length + 1]; Coords[Xs.Length] = new Coord(this.X, this.Y); if (Xs.Length > 1) // More coords assigned than just the start square { int[] Ys = DB.runReadColumn("SELECT y FROM roombots_coords WHERE id = '" + botID + "' ORDER BY id ASC", 0, null); for (int i = 0; i < Xs.Length; i++) Coords[i] = new Coord(Xs[i], Ys[i]); } Statuses = new Hashtable(); aiHandler = new Thread(new ThreadStart(AI)); aiHandler.Priority = ThreadPriority.BelowNormal; aiHandler.Start(); }
public PACKET_MAP_DATA(virtualRoom Room, virtualUser User) { /*Escape packet * // Zombie --> 379669456 29968 1 6 0 1 -1 -1 -1 -1 659 2 0 -1 0 0 0 0 0 1000 -1 -1 0 12 -1 0 0 0 0 0 1000 -1 -1 0 0 * // Human --> 379970291 29968 1 6 0 1 -1 -1 -1 -1 615 2 0 -1 0 0 0 0 0 1000 -1 -1 0 13 -1 0 0 0 0 0 1000 -1 -1 0 0 */ try { newPacket(29968); addBlock(1); addBlock(Room.MapData.Flags); for (int i = 0; i < Room.MapData.Flags; i++) { addBlock(Room.Flags[i]); } addBlock(0); addBlock(Room.Players.Count); foreach (virtualUser Client in Room.Players) { /* addBlock(Client.RoomSlot); * addBlock(-1); * addBlock(Client.Room.getSide(Client)); * addBlock(0); * addBlock(Client.Class); * addBlock(Client.Weapon); * addBlock(Client.Health); * addBlock((Client.currentVehicle == null ? -1 : Client.currentVehicle.ID)); * addBlock((Client.currentSeat == null ? -1 : Client.currentSeat.ID)); * addBlock(0);*/ addBlock(Client.RoomSlot); // Slot addBlock(-1); addBlock(Client.rKills); addBlock(Client.rDeaths); addBlock(Client.Class); // Class addBlock(Client.Weapon); addBlock(Client.Health); // Health addBlock((Client.currentVehicle == null ? -1 : Client.currentVehicle.ID)); addBlock((Client.currentSeat == null ? -1 : Client.currentSeat.ID)); addBlock(0); } try { ArrayList arrayList = new ArrayList(); foreach (Vehicle virtualVehicle in Room.Vehicles.Values) { if (virtualVehicle.ChangedCode != string.Empty) { arrayList.Add(virtualVehicle); } } addBlock(arrayList.Count); if (arrayList.Count <= 0) { return; } addBlock(" "); foreach (Vehicle virtualVehicle in Room.Vehicles.Values) { addBlock(virtualVehicle.ID); addBlock(virtualVehicle.Health); addBlock(virtualVehicle.X); addBlock(virtualVehicle.Y); addBlock(virtualVehicle.Z); addBlock(virtualVehicle.PosX); addBlock(virtualVehicle.PosY); addBlock(virtualVehicle.PosZ); addBlock(virtualVehicle.PosZ); addBlock(virtualVehicle.ChangedCode); addBlock(0); addBlock(0); addBlock(-75); addBlock(0); addBlock(0); addBlock(0); addBlock(53); addBlock(0); } } catch { addBlock(0); } } catch (Exception) { } }
/// <summary> /// Initializes a new virtualBot object, loading the walk squares, chat texts etc. /// </summary> /// <param name="botID">The database ID of the bot.</param> /// <param name="roomUID">The ID that identifies this bot in room.</param> /// <param name="Room">The virtualRoom object where the bot is in.</param> internal virtualBot(int botID, int roomUID, virtualRoom Room) { this.roomUID = roomUID; this.Room = Room; DataRow dRow; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT name,mission,figure,x,y,z,freeroam,message_noshouting FROM roombots WHERE id = '" + botID + "'"); } this.Name = Convert.ToString(dRow[0]); this.Mission = Convert.ToString(dRow[1]); this.Figure = Convert.ToString(dRow[2]); this.X = Convert.ToInt32(dRow[3]); this.Y = Convert.ToInt32(dRow[4]); this.Z1 = Convert.ToByte(dRow[5]); this.Z2 = Z1; this.goalX = -1; this.freeRoam = (Convert.ToString(dRow[6]) == "1"); this.noShoutingMessage = Convert.ToString(dRow[7]); DataColumn dCol; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dCol = dbClient.getColumn("SELECT text FROM roombots_texts WHERE id = '" + botID + "' AND type = 'say'"); } this.Sayings = (string[])dataHandling.dColToArray(dCol); using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dCol = dbClient.getColumn("SELECT text FROM roombots_texts WHERE id = '" + botID + "' AND type = 'shout'"); } this.Shouts = (string[])dataHandling.dColToArray(dCol); DataTable dTable; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dTable = dbClient.getTable("SELECT words, replies, serve_replies, serve_item FROM roombots_texts_triggers WHERE id = '" + botID + "'"); } this.chatTriggers = new chatTrigger[dTable.Rows.Count]; int i = 0; foreach (DataRow dbRow in dTable.Rows) { this.chatTriggers[i] = new chatTrigger((Convert.ToString(dbRow["words"]).ToLower()).Split('}'), (Convert.ToString(dbRow["replies"])).Split('}'), (Convert.ToString(dbRow["serve_replies"])).Split('}'), Convert.ToString(dbRow["serve_item"])); i++; } using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dTable = dbClient.getTable("SELECT x,y FROM roombots_coords WHERE id = '" + botID + "'"); } Coords = new Coord[dTable.Rows.Count]; i = 0; foreach (DataRow dbRow in dTable.Rows) { Coords[i] = new Coord(Convert.ToInt32(dbRow["x"]), Convert.ToInt32(dbRow["y"])); i++; } Statuses = new Hashtable(); aiHandler = new Thread(new ThreadStart(AI)); aiHandler.Priority = ThreadPriority.BelowNormal; aiHandler.Start(); }
public override void Handle(ReBornWarRock_PServer.GameServer.Virtual_Objects.User.virtualUser User) { try { if (User.Room != null) { return; } int RoomID = Convert.ToInt32(getNextBlock()); string Password = getNextBlock(); int Side = Convert.ToInt32(getBlock(2));//FreeWar > 0 Derb/ 1 NIU/ 2 Random virtualRoom Room = RoomManager.getRoom(User.Channel, RoomID); if (Room != null) { bool LevelLimit = true; switch (Room.LevelLimit) { case 0: { LevelLimit = false; break; } case 1: { if (LevelCalculator.getLevelforExp(User.Exp) <= 4) { LevelLimit = false; } break; } case 2: { if (LevelCalculator.getLevelforExp(User.Exp) > 5) { LevelLimit = false; } break; } case 3: { if (LevelCalculator.getLevelforExp(User.Exp) > 13) { LevelLimit = false; } break; } case 4: { if (LevelCalculator.getLevelforExp(User.Exp) > 23) { LevelLimit = false; } break; } case 5: { if (LevelCalculator.getLevelforExp(User.Exp) > 33) { LevelLimit = false; } break; } } bool canJoinPing = false; switch (Room.Ping) { case 0: if (User.Ping < 150) { canJoinPing = true; } else { canJoinPing = false; } break; case 1: if (User.Ping < 250) { canJoinPing = true; } else { canJoinPing = false; } break; case 2: canJoinPing = true; break; } if ((Room.Players.Count >= Room.MaxPlayers || Room.RoomType == 1 && (User.ClanRank == -1 || User.ClanRank == 9) || (Room.RoomType == 1 && (Room.getSideCount(0) > 0 && Room.getSideCount(1) > 0 && Room.isMyClan(User) == false)) || Room.RoomType == 1 && User.ClanID == -1 || canJoinPing == false && User.Rank < 2 || Room.UserLimit || Room.isJoinAble() == false || User.pingOK == false) && User.Rank < 2) { User.send(new PACKET_JOIN_ROOM(PACKET_JOIN_ROOM.ErrorCodes.GenericError)); } else if (Password != "NULL" && (Password != Room.Password)) { User.send(new PACKET_JOIN_ROOM(PACKET_JOIN_ROOM.ErrorCodes.InvalidPassword)); } else if (LevelLimit == true) { User.send(new PACKET_JOIN_ROOM(PACKET_JOIN_ROOM.ErrorCodes.BadLevel)); } else if (User.Premium == 0 && Room.PremiumOnly == 1) { User.send(new PACKET_JOIN_ROOM(PACKET_JOIN_ROOM.ErrorCodes.OnlyPremium)); } else { if (User.Room != null) { return; } if (Room.joinUser(User, Side) == true) { ArrayList tempPlayers = new ArrayList(); User.isReady = false; User.isSpawned = false; User.BackedToRoom = false; User.Health = 0; foreach (virtualUser RoomUser in Room.Players) { if (RoomUser.Equals(User) == false) { tempPlayers.Add(RoomUser); } } User.send(new PACKET_ROOM_UDP(User, tempPlayers)); foreach (virtualUser tempSpectator in Room.Spectators) { User.send(new PACKET_ROOM_UDP_SPECTATE(tempSpectator)); } // User.send(new PACKET_JOIN_ROOM(User, Room)); tempPlayers.Clear(); tempPlayers.Add(User); foreach (virtualUser RoomUser in Room.Players) { RoomUser.send(new PACKET_ROOM_UDP(RoomUser, tempPlayers)); } foreach (virtualUser SpectatorUser in Room.Spectators) { SpectatorUser.send(new PACKET_ROOM_UDP(SpectatorUser, tempPlayers)); } /* Send out changed Room Data */ foreach (virtualUser _User in UserManager.getUsersInChannel(Room.Channel, false)) { if (_User.Page == Math.Floor(Convert.ToDecimal(Room.ID / 14))) { _User.send(new PACKET_ROOMLIST_UPDATE(Room)); } } } else { User.send(new PACKET_JOIN_ROOM(PACKET_JOIN_ROOM.ErrorCodes.GenericError)); } } } else { User.send(new PACKET_JOIN_ROOM(PACKET_JOIN_ROOM.ErrorCodes.GenericError)); } } catch { User.send(new PACKET_JOIN_ROOM(PACKET_JOIN_ROOM.ErrorCodes.GenericError)); } }
/// <summary> /// Clears the games from the game lobby and nulls the virtualRoom object. /// </summary> internal void Clear() { Games.Clear(); Games = null; Room = null; }
public PACKET_SCORE_BOARD_AI_TIMEATTACK(virtualRoom Room, virtualUser User, long Time) { newPacket(30053); addBlock(3); if (Room.Mode == 11) { addBlock(Time); switch (Room.Stage) { case 0: { var v = Room.UsersDic.Values.OrderByDescending(u => u.Kills).Take(2); if (v.Count() == 1) { addBlock(User.RoomSlot); addBlock(User.rKills > Room.TimeZombie ? Room.TimeZombie : User.rKills); addBlock(-1); addBlock(0); } else { foreach (virtualUser usr in v) { addBlock(usr.RoomSlot); addBlock((usr.rKills > Room.TimeZombie ? Room.TimeZombie : usr.rKills)); } } break; } case 1: { var v = Room.UsersDic.Values.OrderByDescending(u => u.Kills).Take(2); if (v.Count() == 1) { addBlock(User.RoomSlot); addBlock(User.hackPercentage); addBlock(-1); addBlock(0); } else { foreach (virtualUser usr in v) { addBlock(usr.RoomSlot); addBlock(usr.hackPercentage); } } break; } case 2: { var v = Room.UsersDic.Values.OrderByDescending(u => u.Kills).Take(2); if (v.Count() == 1) { addBlock(User.RoomSlot); addBlock(User.DoorDamageTime); addBlock(-1); addBlock(0); } else { foreach (virtualUser usr in v) { addBlock(usr.RoomSlot); addBlock(usr.DoorDamageTime); } } break; } case 3: { var v = Room.UsersDic.Values.OrderByDescending(u => u.BossDamage).Take(2); if (v.Count() == 1) { addBlock(User.RoomSlot); addBlock(User.BossDamage); addBlock(-1); addBlock(0); } else { foreach (virtualUser usr in v) { addBlock(usr.RoomSlot); addBlock(usr.BossDamage); } } break; } default: { addBlock(0); addBlock(0); addBlock(0); addBlock(0); break; } } } }
public virtual void Handle1(virtualUser User, virtualRoom Room) { /* Override */ }