예제 #1
0
        public void OnUpdate()
        {
            lock (Players)
            {
                foreach (QPlayer player in Players)
                {
                    if (!player.IsLoggedIn && player.TSPlayer.IsLoggedIn)
                    {
                        player.MyDBPlayer = QTools.GetStoredPlayerByIdentification(player);

                        if (player.MyDBPlayer == null)
                        {
                            StoredQPlayer splayer = new StoredQPlayer(player.TSPlayer.UserAccountName,
                                                                      new List <QuestPlayerData>());
                            StoredPlayers.Add(splayer);
                            player.MyDBPlayer = splayer;
                            QTools.UpdateStoredPlayersInDB();
                        }

                        player.IsLoggedIn = true;
                    }

                    if (player.LastTilePos != new Vector2(player.TSPlayer.TileX, player.TSPlayer.TileY))
                    {
                        bool inhouse = false;
                        foreach (QuestRegion qr in QuestRegions)
                        {
                            if (qr.Area.Intersects(new Rectangle(player.TSPlayer.TileX, player.TSPlayer.TileY, 1, 1)))
                            {
                                if (player.CurQuestRegion != qr.Name)
                                {
                                    player.CurQuestRegion = qr.Name;
                                    player.InHouse        = true;

                                    if (qr.MessageOnEntry != "")
                                    {
                                        player.TSPlayer.SendMessage(qr.MessageOnEntry, Color.Magenta);
                                    }
                                }
                                inhouse = true;
                            }
                            if (!inhouse && player.InHouse)
                            {
                                if (qr.MessageOnExit != "")
                                {
                                    player.TSPlayer.SendMessage(qr.MessageOnExit, Color.Magenta);
                                }
                                player.CurQuestRegion = "";
                                player.InHouse        = false;
                            }

                            player.LastTilePos = new Vector2(player.TSPlayer.TileX, player.TSPlayer.TileY);
                        }
                    }
                }
            }
        }
예제 #2
0
        public void OnUpdate()
        {
            foreach (QPlayer player in Players)
            {
                if (!player.IsLoggedIn && player.TSPlayer.IsLoggedIn)
                {
                    player.MyDBPlayer = QTools.GetStoredPlayerByIdentification(player);

                    if (player.MyDBPlayer == null)
                    {
                        StoredQPlayer splayer = new StoredQPlayer(player.TSPlayer.UserAccountName, new List<QuestPlayerData>());
                        StoredPlayers.Add(splayer);
                        player.MyDBPlayer = splayer;
                        QTools.UpdateStoredPlayersInDB();
                    }

                    player.IsLoggedIn = true;
                }

                if (player.LastTilePos != new Vector2(player.TSPlayer.TileX, player.TSPlayer.TileY))
                {
                    bool inhouse = false;
                    foreach (QuestRegion qr in QuestRegions)
                    {
                        if (qr.Area.Intersects(new Rectangle(player.TSPlayer.TileX, player.TSPlayer.TileY, 1, 1)))
                        {
                            if (player.CurQuestRegion != qr.Name)
                            {
                                player.CurQuestRegion = qr.Name;
                                player.InHouse = true;

                                if (qr.MessageOnEntry != "")
                                    player.TSPlayer.SendMessage(qr.MessageOnEntry, Color.Magenta);
                            }
                            inhouse = true;
                        }
                        if (!inhouse && player.InHouse)
                        {
                            if (qr.MessageOnExit != "")
                                player.TSPlayer.SendMessage(qr.MessageOnExit, Color.Magenta);
                            player.CurQuestRegion = "";
                            player.InHouse = false;
                        }

                        player.LastTilePos = new Vector2(player.TSPlayer.TileX, player.TSPlayer.TileY);
                    }
                }
            }
        }
예제 #3
0
        public void OnUpdate()
        {
            lock (Players)
            {
                foreach (QPlayer player in Players)
                {
                    if (!player.IsLoggedIn && player.TSPlayer.IsLoggedIn)
                    {
                        player.MyDBPlayer = QTools.GetStoredPlayerByIdentification(player);

                        if (player.MyDBPlayer == null)
                        {
                            StoredQPlayer splayer = new StoredQPlayer(player.TSPlayer.UserAccountName, new List<QuestAttemptData>());
                            player.MyDBPlayer = splayer;
                            QTools.SavePlayers();
                        }
                        player.IsLoggedIn = true;
                    }
                    foreach (QuestRegion qr in QuestRegions)
                    {
                        if (qr.InArea(player.TSPlayer.TileX, player.TSPlayer.TileY))
                        {
                            if (player.CurQuestRegionName != qr.Name)
                            {
                                player.CurQuestRegionName = qr.Name;
                                player.CurQuestRegion = qr;
                                player.TSPlayer.SendMessage(qr.MessageOnEntry, Color.Magenta);
                            }
                        }
                        else if(player.CurQuestRegionName == qr.Name && !qr.InArea((int)player.LastTilePos.X, (int)player.LastTilePos.Y))
                        {
                            player.CurQuestRegion = null;
                            player.CurQuestRegionName = "";
                            player.TSPlayer.SendMessage(qr.MessageOnExit, Color.Magenta);
                        }
                    }
                    player.LastTilePos = new Vector2(player.TSPlayer.TileX, player.TSPlayer.TileY);
                }
            }
        }