Beispiel #1
0
        public override void Process()
        {
            // 기본 영주 정보 얻어오기
            fmLord lord = null;

            m_session.TryGetLord(out lord);

            // 프로토콜 RQ
            using (var recvfmProtocol = new PT_CG_Item_Equip_RQ())
            {
                // 프로토콜 Read
                recvfmProtocol.Deserialize(m_recvPacket);

                // 프로토콜 RS
                using (var sendfmProtocol = new PT_CG_Item_Equip_RS())
                {
                    // check
                    if (null == lord)
                    {
                        sendfmProtocol.m_eErrorCode = eErrorCode.Auth_PleaseLogin;
                        m_session.SendPacket(sendfmProtocol);
                        return;
                    }
                    // check state
                    if (lord.State != eLordState.Normal)
                    {
                        sendfmProtocol.m_eErrorCode = eErrorCode.Auth_PleaseLogin;
                        m_session.SendPacket(sendfmProtocol);
                        return;
                    }

                    // 아이템 장착
                    lord.TryEquip(recvfmProtocol, sendfmProtocol);

                    // 프로토콜 send
                    m_session.SendPacket(sendfmProtocol);

                    if (sendfmProtocol.m_eErrorCode == eErrorCode.Success)
                    {
                        // 로그 남기기
                        ArchiveExecuter.Instance.Push(new Msg_Log_Act(m_server.dbLog(),
                                                                      new fmLogAct
                        {
                            Time  = fmServerTime.Now,
                            PType = sendfmProtocol.GeteProtocolType(),
                            AccId = lord.AccId,
                            Lv    = lord.GetLv(),
                            Gold  = lord.GetGold(),
                            C1    = lord.GetRuby(),
                            C2    = lord.GetStone(),
                        }
                                                                      ));
                    }
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// 아이템 장착
        /// </summary>
        /// <param name="recv"></param>
        /// <param name="send"></param>
        /// <returns></returns>
        public bool TryEquip(PT_CG_Item_Equip_RQ recv, PT_CG_Item_Equip_RS send)
        {
            send.m_eErrorCode = m_itemInven.Equip(recv.m_nSlot, GetLv());
            if (send.m_eErrorCode == eErrorCode.Success)
            {
                using (urq_EquipItem query = new urq_EquipItem(eRedis.Game))
                {
                    query.i_biAccID = AccId;
                    TryGetItems(out query.i_items);
                    send.m_eErrorCode = query.Execute();
                    //
                    // 성공 일때 클라인언트로 보내 줄거 파라미터 정하기
                }
            }

            return(true);
        }