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(); } }
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); } }
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); }
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(); } } }
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); }