Exemple #1
0
        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);
        }
Exemple #2
0
        public void RemoveTaxCollectorSpawn(TaxCollectorNpc taxCollector)
        {
            WorldServer.Instance.IOTaskPool.AddMessage(() => Database.Delete(taxCollector.Record));

            taxCollector.Bag.DeleteBag();

            m_taxCollectorSpawns.Remove(taxCollector.GlobalId);
            m_activeTaxCollectors.Remove(taxCollector);

            m_lastRemovedTaxCollectors.Push(taxCollector.Record);
        }
Exemple #3
0
 public void RemoveTaxCollectorSpawn(TaxCollectorNpc taxCollector, bool lazySave = true)
 {
     if (lazySave)
     {
         ServerBase <WorldServer> .Instance.IOTaskPool.AddMessage(delegate
         {
             this.Database.Delete(taxCollector.Record);
         });
     }
     else
     {
         base.Database.Delete(taxCollector.Record);
     }
     taxCollector.Bag.DeleteBag(lazySave);
     this.m_taxCollectorSpawns.Remove(taxCollector.GlobalId);
     this.m_activeTaxCollectors.Remove(taxCollector);
 }
Exemple #4
0
        public bool TryAddTaxCollectorSpawn(Character character, bool lazySave = true)
        {
            bool result;

            if (!character.GuildMember.HasRight(GuildRightsBitEnum.GUILD_RIGHT_HIRE_TAX_COLLECTOR))
            {
                TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_NO_RIGHTS);
                result = false;
            }
            else
            {
                if (character.Guild.TaxCollectors.Count <TaxCollectorNpc>() >= character.Guild.MaxTaxCollectors)
                {
                    TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_MAX_REACHED);
                    result = false;
                }
                else
                {
                    if (character.Position.Map.TaxCollector != null)
                    {
                        TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_ALREADY_ONE);
                        result = false;
                    }
                    else
                    {
                        if (!character.Position.Map.AllowCollector)
                        {
                            TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_CANT_HIRE_HERE);
                            result = false;
                        }
                        else
                        {
                            if (character.IsInFight())
                            {
                                TaxCollectorHandler.SendTaxCollectorErrorMessage(character.Client, TaxCollectorErrorReasonEnum.TAX_COLLECTOR_ERROR_UNKNOWN);
                                result = false;
                            }
                            else
                            {
                                //var basePlayerItem = character.Inventory.TryGetItem(Singleton<ItemManager>.Instance.TryGetTemplate(AllianceManager.ALLIOGEMME_ID));
                                //character.Inventory.RemoveItem(basePlayerItem, 1, true);

                                ObjectPosition  objectPosition  = character.Position.Clone();
                                TaxCollectorNpc taxCollectorNpc = new TaxCollectorNpc(this.m_idProvider.Pop(), objectPosition.Map.GetNextContextualId(), objectPosition, character.Guild, character.Name);
                                if (lazySave)
                                {
                                    ServerBase <WorldServer> .Instance.IOTaskPool.AddMessage(delegate
                                    {
                                        this.Database.Insert(taxCollectorNpc.Record);
                                    });
                                }
                                else
                                {
                                    base.Database.Insert(taxCollectorNpc.Record);
                                }
                                this.m_taxCollectorSpawns.Add(taxCollectorNpc.GlobalId, taxCollectorNpc.Record);
                                this.m_activeTaxCollectors.Add(taxCollectorNpc);
                                taxCollectorNpc.Map.Enter(taxCollectorNpc);
                                character.Guild.AddTaxCollector(taxCollectorNpc);

                                result = true;
                            }
                        }
                    }
                }
            }
            return(result);
        }