Example #1
0
 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);
     }
 }
Example #2
0
 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);
     }
 }
Example #3
0
        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]);
            }
        }
Example #4
0
 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;
 }
Example #5
0
 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);
 }
Example #6
0
 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);
 }
Example #7
0
 //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);
 }
Example #8
0
 //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);
 }
Example #9
0
 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);
 }
Example #10
0
 //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);
 }
Example #11
0
 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));
         }
     }
 }
Example #12
0
 public static virtualUser getUserByRoomSlot(virtualRoom Room, int Roomslot)
 {
     foreach (virtualUser virtualUser in Room.Players)
     {
         if (virtualUser.RoomSlot == Roomslot)
         {
             return(virtualUser);
         }
     }
     return((virtualUser)null);
 }
Example #13
0
        /// <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.");
                }
            }
        }
Example #14
0
 /// <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;
         }
     }
 }
Example #15
0
 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
 }
Example #16
0
 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()));
             }
         }
     }
 }
Example #17
0
 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();
     }
 }
Example #18
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();
        }
Example #19
0
        /// <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;
        }
Example #20
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>
 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]);
         }
     }
 }
Example #21
0
 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);
 }
Example #22
0
        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));
                }
            }
        }
Example #23
0
        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;
        }
Example #24
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]);
     }
 }
Example #25
0
 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);
     }
 }
Example #26
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]);
         }
     }
 }
Example #27
0
        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));
                }
            }
        }
Example #28
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();
        }
Example #30
0
        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)
            {
            }
        }
Example #31
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;

            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();
        }
        /// <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;
        }
Example #33
0
        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)); }
        }
Example #34
0
 /// <summary>
 /// Clears the games from the game lobby and nulls the virtualRoom object.
 /// </summary>
 internal void Clear()
 {
     Games.Clear();
     Games = null;
     Room = null;
 }
Example #35
0
        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;
                }
                }
            }
        }
Example #36
0
 public virtual void Handle1(virtualUser User, virtualRoom Room)
 {
     /* Override */
 }