コード例 #1
0
        public static void SendMsgToClientForExperienceCopyMapAward(GameClient client)
        {
            CopyMap tmpCopyMap = ExperienceCopySceneManager.m_ExperienceListCopyMaps[client.ClientData.FuBenSeqID];

            if (tmpCopyMap != null)
            {
                int fuBenSeqID = FuBenManager.FindFuBenSeqIDByRoleID(client.ClientData.RoleID);
                FuBenTongGuanData fubenTongGuanData = null;
                if (fuBenSeqID > 0)
                {
                    FuBenInfoItem fuBenInfoItem = FuBenManager.FindFuBenInfoBySeqID(fuBenSeqID);
                    if (null != fuBenInfoItem)
                    {
                        fuBenInfoItem.EndTicks = TimeUtil.NOW();
                        int addFuBenNum = 1;
                        if (fuBenInfoItem.nDayOfYear != TimeUtil.NowDateTime().DayOfYear)
                        {
                            addFuBenNum = 0;
                        }
                        int fuBenID = FuBenManager.FindFuBenIDByMapCode(client.ClientData.MapCode);
                        if (fuBenID > 0)
                        {
                            int usedSecs = (int)((fuBenInfoItem.EndTicks - fuBenInfoItem.StartTicks) / 1000L);
                            Global.UpdateFuBenDataForQuickPassTimer(client, fuBenID, usedSecs, addFuBenNum);
                            FuBenMapItem fuBenMapItem = FuBenManager.FindMapCodeByFuBenID(fuBenID, client.ClientData.MapCode);
                            if (fuBenMapItem.Experience > 0 && fuBenMapItem.Money1 > 0)
                            {
                                int  nMaxTime     = fuBenMapItem.MaxTime * 60;
                                long startTicks   = fuBenInfoItem.StartTicks;
                                long endTicks     = fuBenInfoItem.EndTicks;
                                int  nFinishTimer = (int)(endTicks - startTicks) / 1000;
                                int  killedNum    = 0;
                                int  nDieCount    = fuBenInfoItem.nDieCount;
                                fubenTongGuanData = Global.GiveCopyMapGiftForScore(client, fuBenID, client.ClientData.MapCode, nMaxTime, nFinishTimer, killedNum, nDieCount, (int)((double)fuBenMapItem.Experience * fuBenInfoItem.AwardRate), (int)((double)fuBenMapItem.Money1 * fuBenInfoItem.AwardRate), fuBenMapItem, null);
                            }
                            GameManager.DBCmdMgr.AddDBCmd(10053, string.Format("{0}:{1}:{2}:{3}", new object[]
                            {
                                client.ClientData.RoleID,
                                Global.FormatRoleName(client, client.ClientData.RoleName),
                                fuBenID,
                                usedSecs
                            }), null, client.ServerId);
                            int           nLev            = -1;
                            SystemXmlItem systemFuBenItem = null;
                            if (!GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(fuBenID, out systemFuBenItem))
                            {
                                nLev = systemFuBenItem.GetIntValue("FuBenLevel", -1);
                            }
                            GameManager.ClientMgr.UpdateRoleDailyData_FuBenNum(client, 1, nLev, false);
                        }
                    }
                }
                if (fubenTongGuanData != null)
                {
                    TCPOutPacket tcpOutPacket = DataHelper.ObjectToTCPOutPacket <FuBenTongGuanData>(fubenTongGuanData, Global._TCPManager.TcpOutPacketPool, 521);
                    if (!Global._TCPManager.MySocketListener.SendData(client.ClientSocket, tcpOutPacket, true))
                    {
                    }
                }
            }
        }
コード例 #2
0
        /// <summary>
        // 经验副本奖励
        /// </summary>
        public static void SendMsgToClientForExperienceCopyMapAward(GameClient client)
        {
            CopyMap tmpCopyMap = null;

            tmpCopyMap = m_ExperienceListCopyMaps[client.ClientData.FuBenSeqID];

            if (tmpCopyMap == null)
            {
                return;
            }

            int fuBenSeqID = FuBenManager.FindFuBenSeqIDByRoleID(client.ClientData.RoleID);

            FuBenTongGuanData fubenTongGuanData = null;

            if (fuBenSeqID > 0) //如果副本不存在
            {
                FuBenInfoItem fuBenInfoItem = FuBenManager.FindFuBenInfoBySeqID(fuBenSeqID);
                if (null != fuBenInfoItem)
                {
                    fuBenInfoItem.EndTicks = DateTime.Now.Ticks / 10000;
                    int addFuBenNum = 1;
                    if (fuBenInfoItem.nDayOfYear != TimeUtil.NowDateTime().DayOfYear)
                    {
                        addFuBenNum = 0;
                    }

                    int fuBenID = FuBenManager.FindFuBenIDByMapCode(client.ClientData.MapCode);
                    if (fuBenID > 0)
                    {
                        int usedSecs = (int)((fuBenInfoItem.EndTicks - fuBenInfoItem.StartTicks) / 1000);

                        // 更新玩家通关时间信息
                        Global.UpdateFuBenDataForQuickPassTimer(client, fuBenID, usedSecs, addFuBenNum);

                        // 给玩家物品
                        FuBenMapItem fuBenMapItem = FuBenManager.FindMapCodeByFuBenID(fuBenID, client.ClientData.MapCode);

                        if (fuBenMapItem.Experience > 0 && fuBenMapItem.Money1 > 0)
                        {
                            int  nMaxTime     = fuBenMapItem.MaxTime * 60; //分->秒
                            long startTicks   = fuBenInfoItem.StartTicks;
                            long endTicks     = fuBenInfoItem.EndTicks;
                            int  nFinishTimer = (int)(endTicks - startTicks) / 1000; //毫秒->秒
                            int  killedNum    = 0;                                   // tmpCopyMap.KilledNormalNum + tmpCopyMap.KilledBossNum;
                            int  nDieCount    = fuBenInfoItem.nDieCount;

                            //向客户的发放通关奖励
                            fubenTongGuanData = Global.GiveCopyMapGiftForScore(client, fuBenID, nMaxTime, nFinishTimer, killedNum, nDieCount, fuBenMapItem.Experience, fuBenMapItem.Money1, fuBenMapItem);
                        }

                        GameManager.DBCmdMgr.AddDBCmd((int)TCPGameServerCmds.CMD_DB_ADDFUBENHISTDATA, string.Format("{0}:{1}:{2}:{3}", client.ClientData.RoleID,
                                                                                                                    Global.FormatRoleName(client, client.ClientData.RoleName), fuBenID, usedSecs), null);

                        int           nLev            = -1;
                        SystemXmlItem systemFuBenItem = null;
                        if (!GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(fuBenID, out systemFuBenItem))
                        {
                            nLev = systemFuBenItem.GetIntValue("FuBenLevel");
                        }

                        //更新每日的通关副本的数量
                        GameManager.ClientMgr.UpdateRoleDailyData_FuBenNum(client, 1, nLev, false);

                        //副本通关
                        //Global.BroadcastFuBenOk(client, usedSecs, fuBenID);
                    }
                }
            }

            if (fubenTongGuanData != null)
            {
                //发送奖励到客户端
                TCPOutPacket tcpOutPacket = DataHelper.ObjectToTCPOutPacket <FuBenTongGuanData>(fubenTongGuanData, Global._TCPManager.TcpOutPacketPool, (int)TCPGameServerCmds.CMD_SPR_FUBENPASSNOTIFY);

                if (!Global._TCPManager.MySocketListener.SendData(client.ClientSocket, tcpOutPacket))
                {
                    ;
                }
            }
        }