void GenerateInteractivePlot() { foreach (var trigger in CellTriggerManager.Instance.GetCellTriggers()) { if (trigger.Type != "Teleport") { continue; } var interactive = m_interactivesSpawns.Values.FirstOrDefault(x => x.MapId == trigger.MapId && x.CellId == trigger.CellId && x.TemplateId == null && !x.CustomSkills.Any()); if (interactive == null) { continue; } var skillId = m_idProviderSkill.Pop(); var skill = new InteractiveCustomSkillRecord { Id = skillId, Type = "Teleport", CustomTemplateId = 339, Parameter0 = trigger.Parameter1, //MapId Parameter1 = trigger.Parameter0, //CellId Condition = trigger.Condition }; interactive.CustomSkills.Add(skill); } }
public Party CreateClassical() { var group = new Party(m_idProvider.Pop()); AddEntity(group.Id, group); return(group); }
public FightDuel CreateDuel(Map map) { var challengersTeam = new FightPlayerTeam(TeamEnum.TEAM_CHALLENGER, map.GetRedFightPlacement()); var defendersTeam = new FightPlayerTeam(TeamEnum.TEAM_DEFENDER, map.GetBlueFightPlacement()); var fight = new FightDuel(m_idProvider.Pop(), map, defendersTeam, challengersTeam); AddEntity(fight.Id, fight); return(fight); }
public Guild CreateGuild(string name) { lock (m_lock) { var id = m_idProvider.Pop(); var record = new GuildRecord { Id = id, Name = name, CreationDate = DateTime.Now, IsNew = true, Experience = 0, Boost = 0, Prospecting = 100, Wisdom = 0, Pods = 1000, MaxTaxCollectors = 1, EmblemBackgroundColor = Color.White.ToArgb(), EmblemBackgroundShape = 1, EmblemForegroundColor = Color.Black.ToArgb(), EmblemForegroundShape = 1, Spells = new int[0], }; var guild = new Guild(record, new GuildMember[0]); m_guilds.Add(guild.Id, guild); return(guild); } }
public void AddItem(ItemTemplate template, uint amount) { var item = Items.FirstOrDefault(x => x.Template == template); if (item != null) { item.Stack += amount; OnItemMoved(item, true, (int)amount); } else { item = new NpcTradeItem(m_idProvider.Pop(), template, amount); AddItem(item); OnItemMoved(item, false, (int)amount); } }
public bool AddTaxCollectorSpawn(Character character) { if (!character.GuildMember.HasRight(GuildRightsBitEnum.GUILD_RIGHT_HIRE_TAX_COLLECTOR)) { character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_NO_RIGHTS)); return(false); } if (character.Guild.TaxCollectors.Count >= character.Guild.MaxTaxCollectors) { character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_MAX_REACHED)); return(false); } if (character.Position.Map.TaxCollector != null) { character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_ALREADY_ONE)); return(false); } m_lastRemovedTaxCollectors.Clean(); if (m_lastRemovedTaxCollectors.FirstOrDefault(x => x.First.GuildId == character.Guild.Id && x.First.MapId == character.Map.Id) != null) { character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_CANT_HIRE_YET)); return(false); } if (!character.Position.Map.AllowCollector) { character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_CANT_HIRE_HERE)); return(false); } if (character.IsInFight()) { character.Client.Send(new TaxCollectorErrorMessage((sbyte)TaxCollectorErrorReasonEnum.TAX_COLLECTOR_ERROR_UNKNOWN)); return(false); } var position = character.Position.Clone(); var taxCollectorNpc = new TaxCollectorNpc(m_idProvider.Pop(), position.Map.GetNextContextualId(), position, character.Guild, character); WorldServer.Instance.IOTaskPool.AddMessage(() => Database.Insert(taxCollectorNpc.Record)); m_taxCollectorSpawns.Add(taxCollectorNpc.GlobalId, taxCollectorNpc.Record); m_activeTaxCollectors.Add(taxCollectorNpc); taxCollectorNpc.Map.Enter(taxCollectorNpc); character.Guild.AddTaxCollector(taxCollectorNpc); TaxCollectorHandler.SendTaxCollectorMovementMessage(taxCollectorNpc.Guild.Clients, TaxCollectorMovementTypeEnum.TAX_COLLECTOR_HIRED, taxCollectorNpc, character.Id, character.Name); return(true); }
public FakeClient AddAndConnectClient() { var client = new FakeClient(m_idProvider.Pop()); m_clients.Add(client); if (!m_fakeAccountsId.Contains(client.Id)) { var account = new AccountData() { Login = AccountName + client.Id, PasswordHash = AccountPassword.GetMD5(), Nickname = AccountName + client.Id, UserGroupId = FakeUserGroup, AvailableBreeds = BreedManager.AvailableBreeds, SecretQuestion = "fakeclient", SecretAnswer = "fakeclient", Lang = "fr", }; var msg = new CreateAccountMessage(); msg.Account = account; IPCAccessor.Instance.SendRequest(msg, x => { m_fakeAccountsId.Add(client.Id); client.Connect(IP, Port); client.Disconnected += OnClientDisconnected; }, x => { client.Disconnect(); m_clients.Remove(client); }); } else { client.Connect(IP, Port); client.Disconnected += OnClientDisconnected; } return(client); }
public override void Initialize() { m_idProvider = new UniqueIdProvider(1); m_bidHouseItems = new ConcurrentList <BidHouseItem>(Database.Query <BidHouseItemRecord>(BidHouseItemRelator.FetchQuery).Select(x => new BidHouseItem(x))); foreach (var item in m_bidHouseItems) { var category = GetBidHouseCategory(item); if (category == null) { category = new BidHouseCategory(m_idProvider.Pop(), item); m_bidHouseCategories.Add(category); } category.Items.Add(item); } World.Instance.RegisterSaveableInstance(this); }
public void AddBidHouseItem(BidHouseItem item) { m_bidHouseItems.Add(item); var category = GetBidHouseCategory(item); var newCategory = false; if (category == null) { category = new BidHouseCategory(m_idProvider.Pop(), item); m_bidHouseCategories.Add(category); newCategory = true; } category.Items.Add(item); var handler = ItemAdded; if (handler != null) { handler(item, category, newCategory); } }
public int PopSpawnId() { return(m_idProviderSpawn.Pop()); }
public int PopId() { return(m_idProvider.Pop()); }
public int PopNextDropItemId() { return(m_dropItemIdPopper.Pop()); }
public ClassicalParty CreateParty(Character leader) { return(new ClassicalParty(IdProvider.Pop(), leader)); }
public short PopNextMarkId() { return((short)m_markIdPopper.Pop()); }
public static uint PopUID() { lock (Locker) return((uint)UIDPoper.Pop()); }