public object SpellsTake(LookupKey lookupKey, [FromBody] SpellInfo spell) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } if (SpellBase.Get(spell.SpellId) == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, @"Invalid spell id.")); } var(client, player) = Player.Fetch(lookupKey); if (player == null) { return(Request.CreateErrorResponse( HttpStatusCode.NotFound, lookupKey.HasId ? $@"No player with id '{lookupKey.Id}'." : $@"No player with name '{lookupKey.Name}'." )); } if (player.TryForgetSpell(new Spell(spell.SpellId), true)) { return(spell); } return(Request.CreateErrorResponse( HttpStatusCode.InternalServerError, $@"Failed to remove player spell with id '{spell.SpellId}'." )); }
public object ItemsGive(LookupKey lookupKey, [FromBody] ItemInfo itemInfo) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } if (ItemBase.Get(itemInfo.ItemId) == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, @"Invalid item id.")); } if (itemInfo.Quantity < 1) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, "Cannot give 0, or a negative amount of an item." )); } var(client, player) = Player.Fetch(lookupKey); if (player == null) { return(Request.CreateErrorResponse( HttpStatusCode.NotFound, lookupKey.HasId ? $@"No player with id '{lookupKey.Id}'." : $@"No player with name '{lookupKey.Name}'." )); } if (!player.TryGiveItem(itemInfo.ItemId, itemInfo.Quantity, ItemHandling.Normal, itemInfo.BankOverflow, true)) { return(Request.CreateErrorResponse( HttpStatusCode.InternalServerError, $@"Failed to give player {itemInfo.Quantity} of '{itemInfo.ItemId}'." )); } using (var context = DbInterface.CreatePlayerContext(false)) { context.Update(player); context.SaveChanges(); } var quantityBank = player.CountItems(itemInfo.ItemId, false, true); var quantityInventory = player.CountItems(itemInfo.ItemId, true, false); return(new { id = itemInfo.ItemId, quantity = new { total = quantityBank + quantityInventory, bank = quantityBank, inventory = quantityInventory } }); }
public object DoAdminActionOnPlayerByName( LookupKey lookupKey, string act, [FromBody] AdminActionParameters actionParameters ) { if (!Enum.TryParse <AdminActions>(act, true, out var adminAction)) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, @"Invalid action.")); } if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } Tuple <Client, Player> fetchResult; fetchResult = Player.Fetch(lookupKey); return(DoAdminActionOnPlayer( () => fetchResult, () => Request.CreateErrorResponse( HttpStatusCode.NotFound, lookupKey.HasId ? $@"No player with id '{lookupKey.Id}'." : $@"No player with name '{lookupKey.Name}'." ), adminAction, actionParameters )); }
public object PlayerLevelSet(LookupKey lookupKey, [FromBody] LevelChange change) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } var(client, player) = Player.Fetch(lookupKey); if (player != null) { player.SetLevel(change.Level, true); if (player.Online) { PacketSender.SendEntityDataToProximity(player); } using (var context = DbInterface.CreatePlayerContext(false)) { context.Update(player); context.SaveChanges(); } return(player); } return(Request.CreateErrorResponse( HttpStatusCode.NotFound, lookupKey.HasId ? $@"No player with id '{lookupKey.Id}'." : $@"No player with name '{lookupKey.Name}'." )); }
public object SetRank(Guid guildId, LookupKey lookupKey, [FromBody] GuildRank guildRank) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } if (guildRank.Rank <= 0 || guildRank.Rank >= Options.Instance.Guild.Ranks.Length) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Invalid guild rank, should be > 0 and < {Options.Instance.Guild.Ranks.Length}." )); } var guild = Guild.LoadGuild(guildId); if (guild == null) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Guild does not exist." )); } var(client, player) = Player.Fetch(lookupKey); //Player not found if (player == null) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Player not found." )); } //Player is not a member of this guild if (!guild.IsMember(player.Id)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"{player.Name} is not a member of {guild.Name}." )); } //Cannot kick the owner! if (player.GuildRank == 0) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Cannot change rank of the guild owner, transfer ownership first!" )); } guild.SetPlayerRank(player, guildRank.Rank, null); return(player); }
public object PlayerVariableSet(LookupKey lookupKey, Guid variableId, [FromBody] VariableValue value) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } if (variableId == Guid.Empty || PlayerVariableBase.Get(variableId) == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $@"Invalid variable id ${variableId}.")); } var(client, player) = Player.Fetch(lookupKey); if (player == null) { return(Request.CreateErrorResponse( HttpStatusCode.NotFound, lookupKey.HasId ? $@"No player with id '{lookupKey.Id}'." : $@"No player with name '{lookupKey.Name}'." )); } var variable = player.GetVariable(variableId, true); if (variable?.Value != null) { variable.Value.Value = value.Value; } return(variable); }
public object ItemsList(LookupKey lookupKey) { return(new { inventory = ItemsListInventory(lookupKey), bank = ItemsListBank(lookupKey) }); }
public virtual string ToDisplayText() { var lookupKeyAsString = (LookupKey == null || LookupKey.ToString() == String.Empty) ? String.Empty : string.Format("{0} ", LookupKey); return(string.Format("{0}{1}", lookupKeyAsString, LookupName)); }
public object PlayerVariableSet(LookupKey lookupKey, Guid variableId, [FromBody] VariableValue value) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } if (variableId == Guid.Empty || PlayerVariableBase.Get(variableId) == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $@"Invalid variable id ${variableId}.")); } var(client, player) = Player.Fetch(lookupKey); if (player == null) { return(Request.CreateErrorResponse( HttpStatusCode.NotFound, lookupKey.HasId ? $@"No player with id '{lookupKey.Id}'." : $@"No player with name '{lookupKey.Name}'." )); } var variable = player.GetVariable(variableId, true); var changed = true; if (variable?.Value != null) { if (variable?.Value?.Value != value.Value) { changed = false; } variable.Value.Value = value.Value; } if (changed) { var plyr = Player.FindOnline(player.Id); if (plyr != null) { player.StartCommonEventsWithTrigger(CommonEventTrigger.PlayerVariableChange, "", variableId.ToString()); } } using (var context = DbInterface.CreatePlayerContext(false)) { context.Update(player); context.SaveChanges(); } return(variable); }
public static Tuple <Client, Player> Fetch(LookupKey lookupKey) { if (!lookupKey.HasName && !lookupKey.HasId) { return(new Tuple <Client, Player>(null, null)); } // HasName checks if null or empty // ReSharper disable once AssignNullToNotNullAttribute return(lookupKey.HasId ? Fetch(lookupKey.Id) : Fetch(lookupKey.Name)); }
internal IEnumerable <T> TryGetCachedModel <T>(ISPListItemAdapter source, string fieldName, params int[] lookupIds) { List <T> collection = new List <T>(); SPObjectCache cache = this.Manager.ObjectCache; SPFieldLookup lookupField = cache.GetField(source.WebId, source.ListId, fieldName) as SPFieldLookup; if (lookupField != null) { if (hashtable == null) { hashtable = new Hashtable(); } Guid listId = lookupField.LookupList == "Self" ? source.ListId : new Guid(lookupField.LookupList); List <int> lookupIdsToQuery = new List <int>(); foreach (int id in lookupIds) { LookupKey key = new LookupKey(listId, id); if (hashtable.ContainsKey(key)) { object cachedItem = hashtable[key]; if (cachedItem is T) { collection.Add((T)cachedItem); } } else { lookupIdsToQuery.Add(id); } } if (lookupIdsToQuery.Count > 0) { ISPModelManagerInternal manager = hashtable.EnsureKeyValue(typeof(T), () => (ISPModelManagerInternal)SPModel.GetDefaultManager(typeof(T), this.manager.Site.RootWeb, cache)); SPList list = cache.GetList(lookupField.LookupWebId, listId); SPQuery query = new SPQuery { Query = Caml.EqualsAny(SPBuiltInFieldName.ID, lookupIdsToQuery).ToString() }; foreach (SPListItem item in list.GetItems(query)) { object model = manager.TryCreateModel(new SPListItemAdapter(item, cache), false); hashtable[new LookupKey(listId, item.ID)] = model; if (model is T) { collection.Add((T)model); } cache.AddListItem(item); } } } return(collection); }
public object Kick(Guid guildId, LookupKey lookupKey) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } var guild = Guild.LoadGuild(guildId); if (guild == null) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Guild does not exist." )); } var(client, player) = Player.Fetch(lookupKey); //Player not found if (player == null) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Player not found." )); } //Player is not a member of this guild if (!guild.IsMember(player.Id)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"{player.Name} is not a member of {guild.Name}." )); } //Cannot kick the owner! if (player.GuildRank == 0) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Cannot kick a guild owner, transfer ownership first." )); } guild.RemoveMember(player, null, Database.Logging.Entities.GuildHistory.GuildActivityType.Kicked); return(player); }
public object Transfer(Guid guildId, LookupKey lookupKey) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } var guild = Guild.LoadGuild(guildId); if (guild == null) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Guild does not exist." )); } var(client, player) = Player.Fetch(lookupKey); //Player not found if (player == null) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Player not found." )); } //Player is not a member of this guild if (!guild.IsMember(player.Id)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"{player.Name} is not a member of {guild.Name}." )); } //Cannot kick the owner! if (player.GuildRank == 0) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Cannot transfer ownership of a guild to ones self." )); } guild.TransferOwnership(player); return(player); }
public object ChangeName(LookupKey lookupKey, [FromBody] NameChange change) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } if (!FieldChecking.IsValidUsername(change.Name, Strings.Regex.username)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Invalid name." )); } if (Player.PlayerExists(change.Name)) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Name already taken." )); } var(client, player) = Player.Fetch(lookupKey); if (player != null) { player.Name = change.Name; if (player.Online) { PacketSender.SendEntityDataToProximity(player); } using (var context = DbInterface.CreatePlayerContext(false)) { context.Update(player); context.SaveChanges(); } return(player); } return(Request.CreateErrorResponse( HttpStatusCode.NotFound, lookupKey.HasId ? $@"No player with id '{lookupKey.Id}'." : $@"No player with name '{lookupKey.Name}'." )); }
public Lookup() { _table = new TypologyTable(); _typology = new LookupKey(this, "Typology"); _n = new LookupValue("N", "Nitrogen", "kg/ha"); _p = new LookupValue("P", "Phosphorus", "kg/ha"); DataItems.Add(new DataItem(_table, "Table", typeof(TypologyTable), DataItemRole.Input, "TypologyTableTag")); DataItems.Add(new DataItem(_typology, "Typology", typeof(LookupKey), DataItemRole.Input, "TypologyTag")); DataItems.Add(new DataItem(_n, "N", typeof(LookupValue), DataItemRole.Output, "NTag")); DataItems.Add(new DataItem(_p, "P", typeof(LookupValue), DataItemRole.Output, "PTag")); }
public object ItemsTake(LookupKey lookupKey, [FromBody] ItemInfo itemInfo) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } if (itemInfo.Quantity < 1) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, "Cannot take 0, or a negative amount of an item." )); } var(client, player) = Player.Fetch(lookupKey); if (player == null) { return(Request.CreateErrorResponse( HttpStatusCode.NotFound, lookupKey.HasId ? $@"No player with id '{lookupKey.Id}'." : $@"No player with name '{lookupKey.Name}'." )); } if (player.TryTakeItem(itemInfo.ItemId, itemInfo.Quantity)) { using (var context = DbInterface.CreatePlayerContext(false)) { context.Update(player); context.SaveChanges(); } return(new { itemInfo.ItemId, itemInfo.Quantity }); } return(Request.CreateErrorResponse( HttpStatusCode.InternalServerError, $@"Failed to take {itemInfo.Quantity} of '{itemInfo.ItemId}' from player." )); }
public object LookupPlayer(LookupKey lookupKey) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } var(client, player) = Player.Fetch(lookupKey); if (player != null) { return(player); } return(Request.CreateErrorResponse( HttpStatusCode.NotFound, lookupKey.HasId ? $@"No player with id '{lookupKey.Id}'." : $@"No player with name '{lookupKey.Name}'." )); }
public object SpellsTeach(LookupKey lookupKey, [FromBody] SpellInfo spell) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } if (SpellBase.Get(spell.SpellId) == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, @"Invalid spell id.")); } var(client, player) = Player.Fetch(lookupKey); if (player == null) { return(Request.CreateErrorResponse( HttpStatusCode.NotFound, lookupKey.HasId ? $@"No player with id '{lookupKey.Id}'." : $@"No player with name '{lookupKey.Name}'." )); } if (player.TryTeachSpell(new Spell(spell.SpellId), true)) { using (var context = DbInterface.CreatePlayerContext(false)) { context.Update(player); context.SaveChanges(); } return(spell); } return(Request.CreateErrorResponse( HttpStatusCode.InternalServerError, $@"Failed to teach player spell with id '{spell.SpellId}'. They might already know it!" )); }
public object DeletePlayer(LookupKey lookupKey) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } var(client, player) = Player.Fetch(lookupKey); if (player != null) { if (Player.FindOnline(player.Id) != null) { return(Request.CreateErrorResponse( HttpStatusCode.InternalServerError, "Failed to delete player because they are online!" )); } var user = Database.PlayerData.User.Find(player.UserId); if (user == null) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, $@"Failed to load user for {player.Name}!" )); } user.DeleteCharacter(user.Players.FirstOrDefault(p => p.Id == player.Id)); return(player); } return(Request.CreateErrorResponse( HttpStatusCode.NotFound, lookupKey.HasId ? $@"No player with id '{lookupKey.Id}'." : $@"No player with name '{lookupKey.Name}'." )); }
public object SendDirect(LookupKey lookupKey, [FromBody] ChatMessage chatMessage) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } var client = Globals.Clients.Find( lookupClient => string.Equals( lookupKey.Name, lookupClient?.Entity?.Name, StringComparison.OrdinalIgnoreCase ) ); if (client == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, $@"No player found for '{lookupKey}'.")); } try { PacketSender.SendChatMsg( client.Entity, chatMessage.Message, Enums.ChatMessageType.PM, chatMessage.Color ?? CustomColors.Chat.PlayerMsg, chatMessage.Target ); return(new { success = true, lookupKey, chatMessage }); } catch (Exception exception) { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exception.Message)); } }
public object PlayerClassSet(LookupKey lookupKey, [FromBody] ClassChange change) { if (lookupKey.IsInvalid) { return(Request.CreateErrorResponse( HttpStatusCode.BadRequest, lookupKey.IsIdInvalid ? @"Invalid player id." : @"Invalid player name." )); } if (change.ClassId == Guid.Empty || ClassBase.Get(change.ClassId) == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $@"Invalid class id ${change.ClassId}.")); } var(client, player) = Player.Fetch(lookupKey); if (player != null) { player.ClassId = change.ClassId; player.RecalculateStatsAndPoints(); player.UnequipInvalidItems(); if (player.Online) { PacketSender.SendEntityDataToProximity(player); } using (var context = DbInterface.CreatePlayerContext(false)) { context.Update(player); context.SaveChanges(); } return(player); } return(Request.CreateErrorResponse( HttpStatusCode.NotFound, lookupKey.HasId ? $@"No player with id '{lookupKey.Id}'." : $@"No player with name '{lookupKey.Name}'." )); }