Beispiel #1
0
        private void ExecuteTask(Data.User user, Item item, int quantity)
        {
            int qtyToGive = GetActualQuantity(user, item, quantity);

            if (qtyToGive == 0)
            {
                return;
            }

            Manager.Server.Whisper(user, string.Format("Giving you {0} {1}", qtyToGive, item.Name));

            int remainingQuantity = qtyToGive;

            while (remainingQuantity > 0)
            {
                int give = Math.Min(qtyToGive, MAX_GIVE_STEP);
                Manager.Server.Execute(string.Format("give {0} {1} {2}", user.Username, item.Block_Decimal_ID, give));
                remainingQuantity = remainingQuantity - give;
            }

            ItemHistory history = new ItemHistory();

            history.Item       = item;
            history.User       = user;
            history.Quantity   = qtyToGive;
            history.CreateDate = DateTime.Now;
            using (EMMDataContext db = Manager.GetContext)
            {
                db.ItemHistories.InsertOnSubmit(history);
                db.SubmitChanges();
            }
        }
Beispiel #2
0
        public User OnUserJoinedMessage(EMMServerMessage message)
        {
            // make sure user exists in database
            using (EMMDataContext db = Manager.GetContext)
            {
                User user = db.Users.SingleOrDefault(i => i.Username == message.Data["username"]);
                if (user == null)
                {
                    user = CreateDefaultUser(message.Data["username"]);
                }

                // parse their current location from the join message
                Coord position = new Coord(message);
                user.LocX     = position.X;
                user.LocY     = position.Y;
                user.LocZ     = position.Z;
                user.LastSeen = DateTime.Now;
                db.SubmitChanges();

                // save the current location to the tracking table
                TrackUserPosition(user);

                return(user);
            }
        }
Beispiel #3
0
 private Data.User CreateDefaultUser(string username)
 {
     Data.User user = new Data.User();
     user.Username = username;
     using (EMMDataContext db = Manager.GetContext)
     {
         user.Rank = db.Ranks.Single(rank => rank.Name == "Everyone");
         db.Users.InsertOnSubmit(user);
         db.SubmitChanges();
     }
     return(user);
 }
Beispiel #4
0
 private void TrackUserPosition(int user_id, int x, int y, int z, DateTime time)
 {
     using (EMMDataContext db = Manager.GetContext)
     {
         Data.Tracking lasttrack = db.Trackings.OrderByDescending(t => t.PointTime).FirstOrDefault(i => i.User_ID == user_id);
         if ((lasttrack == null) || ((lasttrack.LocX != x) || (lasttrack.LocY != y) || (lasttrack.LocZ != z)))
         {
             db.Trackings.InsertOnSubmit(new Data.Tracking()
             {
                 User_ID = user_id, LocX = x, LocY = y, LocZ = z, PointTime = time
             });
             db.SubmitChanges();
         }
     }
 }
Beispiel #5
0
        protected override void ExecuteTask(EMMServerMessage command)
        {
            string[] parameters = command.Data["command"].Split(' ');
            string   itemName   = "";
            int      quantity   = 0;

            if (parameters.Count() >= 2)
            {
                itemName = parameters[1];
            }
            if (parameters.Count() >= 3)
            {
                int.TryParse(parameters[2], out quantity);
            }

            int itemID = 0;

            int.TryParse(itemName, out itemID);
            Item item;

            using (EMMDataContext mDB = Manager.GetContext)
            {
                if (itemID != 0)
                {
                    item = mDB.Items.SingleOrDefault(i => i.Block_Decimal_ID == itemID);
                }
                else
                {
                    item = mDB.Items.SingleOrDefault(i => i.Code == itemName);
                }
            }

            if (item == null)
            {
                Manager.Server.Whisper(command.User, "I don't know what item that is");
                return;
            }

            if (item.Min_Level > command.User.Rank.Level)
            {
                Manager.Server.Whisper(command.User, "You are not allowed to summon that item");
                return;
            }

            ExecuteTask(command.User, item, quantity);
        }