public static void HandleSynAdvertisingOpt(Character pUser, MsgSynRecruitAdvertisingOpt pMsg)
        {
            switch (pMsg.Action)
            {
            case 1:     // join syndicate
            {
                ServerKernel.SyndicateRecruitment.JoinSyndicate(pUser, pMsg.EntityIdentity);
                break;
            }

            case 2:     // start or edit recruiting
            {
                if (pUser.Syndicate == null)
                {
                    return;
                }

                if (ServerKernel.SyndicateRecruitment.IsAdvertising(pUser.SyndicateIdentity))
                {
                    ServerKernel.SyndicateRecruitment.SendEditScreen(pUser);
                    return;
                }
                MsgSynRecuitAdvertising pNewMsg = new MsgSynRecuitAdvertising();
                pUser.Send(pNewMsg);
                break;
            }

            default:
            {
                ServerKernel.Log.SaveLog("MsgSynRecruitAdvertisingOpt::" + pMsg.Action);
                break;
            }
            }
        }
        public void SendEditScreen(Character pSender)
        {
            if (pSender == null || pSender.Syndicate == null || pSender.SyndicateRank != SyndicateRank.GUILD_LEADER)
            {
                return;
            }

            DbSyndicateAdvertising dbSyn;

            if (!m_pSyndicateAdvertisings.TryGetValue(pSender.SyndicateIdentity, out dbSyn))
            {
                return;
            }
            MsgSynRecuitAdvertising pMsg = new MsgSynRecuitAdvertising
            {
                IsAutoRecruit     = dbSyn.AutoRecruit > 0,
                Amount            = dbSyn.Donation,
                Description       = dbSyn.Message,
                GenderForbid      = 0,
                Identity          = dbSyn.SyndicateIdentity,
                LevelRequirement  = (ushort)dbSyn.RequiredLevel,
                ProfessionForbid  = (ushort)dbSyn.RequiredProfession,
                RebornRequirement = (ushort)dbSyn.RequiredMetempsychosis
            };

            pSender.Send(pMsg);
        }
Esempio n. 3
0
 public static void HandleSynRecruitAdvertising(Character pUser, MsgSynRecuitAdvertising pMsg)
 {
     if (pUser.Syndicate == null || pUser.SyndicateRank != SyndicateRank.GUILD_LEADER)
     {
         return;
     }
     ServerKernel.SyndicateRecruitment.AddSyndicate(pUser, pMsg);
 }
        public void AddSyndicate(Character pSender, MsgSynRecuitAdvertising pMsg)
        {
            if (pSender == null || pSender.Syndicate == null)
            {
                return;
            }

            string szMessage = pMsg.Description;

            if (pSender.SyndicateRank != SyndicateRank.GUILD_LEADER)
            {
                return;
            }

            if (szMessage.Length > 255)
            {
                szMessage = szMessage.Substring(0, 255);
            }

            if (m_pSyndicateAdvertisings.Values.FirstOrDefault(x => x.SyndicateIdentity == pSender.SyndicateIdentity) != null)
            {
                EditSyndicate(pSender, pMsg);
                return;
            }

            if (pMsg.LevelRequirement <= 0)
            {
                pMsg.LevelRequirement = 1;
            }

            if (pSender.Syndicate.SilverDonation < pMsg.Amount)
            {
                pSender.Send(ServerString.STR_SYNRECRUIT_NOT_ENOUGH_MONEY);
                return;
            }

            if (pMsg.Amount < _MIN_MONEY_AMOUNT)
            {
                pSender.Send(ServerString.STR_SYNRECRUIT_NOT_ENOUGH_DONATION);
                return;
            }

            pSender.Syndicate.ChangeFunds((int)pMsg.Amount * -1);

            DbSyndicateAdvertising dbSyn = new DbSyndicateAdvertising
            {
                AutoRecruit            = (byte)(pMsg.IsAutoRecruit ? 1 : 0),
                Donation               = (uint)pMsg.Amount,
                Message                = szMessage,
                RequiredLevel          = pMsg.LevelRequirement,
                RequiredMetempsychosis = pMsg.RebornRequirement,
                RequiredProfession     = pMsg.ProfessionForbid,
                SyndicateIdentity      = pSender.SyndicateIdentity,
                SyndicateName          = pSender.SyndicateName,
                Timestamp              = (uint)UnixTimestamp.Timestamp()
            };

            if (m_pRepo.SaveOrUpdate(dbSyn))
            {
                m_pSyndicateAdvertisings.TryAdd(dbSyn.SyndicateIdentity, dbSyn);
            }
            else
            {
                pSender.Send("Oops! Something went wrong.");
            }
        }