Esempio n. 1
0
        public static TCPProcessCmdResults ProcessGetNewzoneActiveAward(DBManager dbMgr, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket)
        {
            tcpOutPacket = null;
            string cmdData = null;

            try
            {
                cmdData = new UTF8Encoding().GetString(data, 0, count);
            }
            catch (Exception)
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}", (TCPGameServerCmds)nID), null, true);
                tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767);
                return(TCPProcessCmdResults.RESULT_DATA);
            }
            TCPProcessCmdResults ret = TCPProcessCmdResults.RESULT_FAILED;

            try
            {
                string[] fields = cmdData.Split(new char[]
                {
                    ':'
                });
                if (fields.Length != 5)
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Recv={1}, CmdData={2}", (TCPGameServerCmds)nID, fields.Length, cmdData), null, true);
                    tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767);
                    return(TCPProcessCmdResults.RESULT_DATA);
                }
                int      roleID        = Convert.ToInt32(fields[0]);
                string   fromDate      = fields[1].Replace('$', ':');
                string   toDate        = fields[2].Replace('$', ':');
                int      activetype    = Global.SafeConvertToInt32(fields[4], 10);
                string[] minYuanBaoArr = fields[3].Split(new char[]
                {
                    '_'
                });
                List <int> minGateValueList = new List <int>();
                foreach (string item in minYuanBaoArr)
                {
                    minGateValueList.Add(Global.SafeConvertToInt32(item, 10));
                }
                switch (activetype)
                {
                case 34:
                    ret = NewZoneActiveMgr.GetRechargeKingAward(dbMgr, pool, nID, roleID, activetype, fromDate, toDate, minGateValueList, out tcpOutPacket);
                    break;

                case 35:
                    ret = NewZoneActiveMgr.GetConsumeKingAward(dbMgr, pool, nID, roleID, activetype, fromDate, toDate, minGateValueList, out tcpOutPacket);
                    break;

                case 36:
                    ret = NewZoneActiveMgr.GetBossKillAward(dbMgr, pool, nID, roleID, activetype, fromDate, toDate, minGateValueList, out tcpOutPacket);
                    break;

                case 37:
                    ret = NewZoneActiveMgr.GetNewFanliAward(dbMgr, pool, nID, roleID, activetype, fromDate, toDate, minGateValueList, out tcpOutPacket);
                    break;
                }
            }
            catch (Exception ex)
            {
            }
            return(ret);
        }
Esempio n. 2
0
        public MarryPartyResult MarryPartyCreate(GameClient client, int partyType, long startTime)
        {
            if (!MarryLogic.IsVersionSystemOpenOfMarriage())
            {
                return(MarryPartyResult.NotOpen);
            }

            MarryPartyConfigData configData = GetMarryPartyConfigData(partyType);

            if (null == configData)
            {
                return(MarryPartyResult.InvalidParam);
            }

            MarriageData marryData = client.ClientData.MyMarriageData;

            if (marryData.nSpouseID < 0 || marryData.byMarrytype < 0)
            {
                return(MarryPartyResult.NotMarry);
            }

            int    husbandRoleID = 0;
            int    wifeRoleID    = 0;
            string husbandName   = "";
            string wifeName      = "";

            if (1 == marryData.byMarrytype)
            {
                husbandRoleID = client.ClientData.RoleID;
                husbandName   = client.ClientData.RoleName;
                wifeRoleID    = marryData.nSpouseID;
                wifeName      = MarryLogic.GetRoleName(marryData.nSpouseID);
            }
            else
            {
                husbandRoleID = marryData.nSpouseID;
                husbandName   = MarryLogic.GetRoleName(marryData.nSpouseID);
                wifeRoleID    = client.ClientData.RoleID;
                wifeName      = client.ClientData.RoleName;
            }

            // 必须先添加,以防夫妻重复举行婚宴。。。想不通为什么找我
            MarryPartyData partyData = m_MarryPartyDataCache.AddParty(client.ClientData.RoleID, partyType, startTime, husbandRoleID, wifeRoleID, husbandName, wifeName);

            if (partyData == null)
            {
                return(MarryPartyResult.AlreadyRequest);
            }

            MarryPartyResult result = MarryPartyResult.Success;

            byte[] byteData = null;
            TCPProcessCmdResults dbResult =
                Global.RequestToDBServer3(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool,
                                          (int)TCPGameServerCmds.CMD_DB_MARRY_PARTY_ADD,
                                          string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", client.ClientData.RoleID, partyType, startTime, husbandRoleID, wifeRoleID, husbandName, wifeName),
                                          out byteData,
                                          client.ServerId
                                          );

            if (TCPProcessCmdResults.RESULT_FAILED == dbResult || null == byteData || byteData.Length <= 6)
            {
                result = MarryPartyResult.AlreadyRequest;
            }

            if (result == MarryPartyResult.Success)
            {
                // 检查举办所需金币是否足够
                if (configData.PartyCost > Global.GetTotalBindTongQianAndTongQianVal(client))
                {
                    result = MarryPartyResult.NotEnoughMoney;
                }
                if (configData.PartyCost > 0)
                {
                    // 扣除举办所需金币
                    if (Global.SubBindTongQianAndTongQian(client, configData.PartyCost, "举办婚宴") == false)
                    {
                        result = MarryPartyResult.NotEnoughMoney;
                    }
                }
            }

            if (result != MarryPartyResult.Success)
            {
                if (dbResult != TCPProcessCmdResults.RESULT_FAILED)
                {
                    try
                    {
                        Global.SendAndRecvData((int)TCPGameServerCmds.CMD_DB_MARRY_PARTY_REMOVE,
                                               string.Format("{0}", client.ClientData.RoleID),
                                               client.ServerId
                                               );
                    }
                    catch (Exception)
                    {
                    }
                }
                m_MarryPartyDataCache.RemoveParty(client.ClientData.RoleID);
                return(result);
            }

            Int32          length      = BitConverter.ToInt32(byteData, 0);
            MarryPartyData dbPartyData = DataHelper.BytesToObject <MarryPartyData>(byteData, 6, length - 2);

            m_MarryPartyDataCache.SetPartyTime(partyData, dbPartyData.StartTime);

            SendMarryPartyList(client, partyData);

            //lock (MarryPartyNPCShowMutex)
            //{
            //    if (MarryPartyNPCShow == false)
            //    {
            //        // TODO: add npc
            //        MarryPartyNPCShow = true;
            //    }
            //}

            return(result);
        }
Esempio n. 3
0
        public MarryPartyResult MarryPartyJoin(GameClient client, int roleID)
        {
            if (!MarryLogic.IsVersionSystemOpenOfMarriage())
            {
                return(MarryPartyResult.NotOpen);
            }

            MarryPartyData partyData = m_MarryPartyDataCache.GetParty(roleID);

            if (partyData == null)
            {
                return(MarryPartyResult.PartyNotFound);
            }

            if (partyData.StartTime > TimeUtil.NOW())
            {
                return(MarryPartyResult.NotStart);
            }

            MarryPartyConfigData configData = GetMarryPartyConfigData(partyData.PartyType);

            if (null == configData)
            {
                return(MarryPartyResult.PartyNotFound);
            }

            // 检查參予所需金币是否足够
            if (configData.JoinCost > Global.GetTotalBindTongQianAndTongQianVal(client))
            {
                return(MarryPartyResult.NotEnoughMoney);
            }

            // 检查參予次数
            Dictionary <int, int> joinList = client.ClientData.MyMarryPartyJoinList;
            int  targetPartyJoinCount      = 0;
            int  allPartyJoinCount         = 0;
            bool remove = false;

            lock (joinList)
            {
                joinList.TryGetValue(roleID, out targetPartyJoinCount);

                foreach (KeyValuePair <int, int> kv in client.ClientData.MyMarryPartyJoinList)
                {
                    allPartyJoinCount += kv.Value;
                }

                if (allPartyJoinCount >= MarryPartyPlayerMaxJoinCount)
                {
                    return(MarryPartyResult.ZeroPlayerJoinCount);
                }
                if (targetPartyJoinCount >= configData.PlayerMaxJoinCount)
                {
                    return(MarryPartyResult.ZeroPlayerJoinCount);
                }

                // 增加參予次数
                if (m_MarryPartyDataCache.IncPartyJoin(roleID, configData.PartyMaxJoinCount, out remove) == false)
                {
                    return(MarryPartyResult.ZeroPartyJoinCount);
                }

                ++targetPartyJoinCount;

                byte[] byteData = null;
                TCPProcessCmdResults dbResult =
                    Global.RequestToDBServer3(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool,
                                              (int)TCPGameServerCmds.CMD_DB_MARRY_PARTY_JOIN_INC,
                                              string.Format("{0}:{1}:{2}", roleID, client.ClientData.RoleID, targetPartyJoinCount),
                                              out byteData,
                                              client.ServerId
                                              );
                if (TCPProcessCmdResults.RESULT_FAILED == dbResult || null == byteData || byteData.Length <= 6)
                {
                    m_MarryPartyDataCache.IncPartyJoinCancel(roleID);
                    return(MarryPartyResult.ZeroPartyJoinCount);
                }

                joinList[roleID] = targetPartyJoinCount;
            }

            if (configData.JoinCost > 0)
            {
                // 扣除參予所需金币
                if (Global.SubBindTongQianAndTongQian(client, configData.JoinCost, "參予婚宴") == false)
                {
                    // TODO: 沒处理參予次数已更新数据库的问题
                    return(MarryPartyResult.NotEnoughMoney);
                }
            }

            if (configData.RewardExp > 0)
            {
                GameManager.ClientMgr.ProcessRoleExperience(client, configData.RewardExp, false);
            }

            if (configData.RewardShengWang > 0)
            {
                GameManager.ClientMgr.ModifyShengWangValue(client, configData.RewardShengWang, "婚宴奖励", false);
            }

            if (configData.RewardXingHun > 0)
            {
                GameManager.ClientMgr.ModifyStarSoulValue(client, configData.RewardXingHun, "婚宴奖励", false);
            }

            if (remove == true)
            {
                MarryPartyRemoveInternal(roleID, true, client);

                // 婚宴结算, 换成友善度物品, 个数双方平分
                GoodsData goodData = Global.GetNewGoodsData(configData.RewardItem.GoodsID, configData.RewardItem.Binding);
                goodData.GCount = configData.JoinCost * configData.PartyMaxJoinCount / configData.GoodWillRatio / 2;
                List <GoodsData> goodList = new List <GoodsData>();
                goodList.Add(goodData);

                string sMsg = Global.GetLang("恭喜您成功举办了一场盛大的婚宴,宾客们馈赠的礼物已随这封邮件发送到您手上,请查收附件。");
                Global.UseMailGivePlayerAward3(roleID, goodList, Global.GetLang("婚宴"), sMsg, 0);

                int spouseID = (roleID == partyData.HusbandRoleID)? partyData.WifeRoleID : partyData.HusbandRoleID;
                Global.UseMailGivePlayerAward3(spouseID, goodList, Global.GetLang("婚宴"), sMsg, 0);
            }

            SendMarryPartyJoinList(client);
            SendMarryPartyList(client, partyData);

            //if (m_MarryPartyDataCache.GetPartyCount() <= 0)
            //{
            //    lock (MarryPartyNPCShowMutex)
            //    {
            //        if (MarryPartyNPCShow == true)
            //        {
            //            // TODO: add npc
            //            MarryPartyNPCShow = false;
            //        }
            //    }
            //}

            return(MarryPartyResult.Success);
        }
Esempio n. 4
0
        /// <summary>
        /// 根据帮会id查找帮会副本信息
        /// </summary>
        public GuildCopyMapDB FindGuildCopyMapDB(int guildid)
        {
            GuildCopyMapDB data = null;

            lock (GuildCopyMapDBDict)
            {
                // 先在缓存里查找
                if (GuildCopyMapDBDict.ContainsKey(guildid))
                {
                    data = GuildCopyMapDBDict[guildid];
                }
                // 缓存里没有就去数据库申请
                else
                {
                    // 去db要数据
                    string[]             dbFields        = null;
                    string               strDbCmd        = string.Format("{0}", guildid);
                    TCPProcessCmdResults dbRequestResult = Global.RequestToDBServer(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool
                                                                                    , (int)TCPGameServerCmds.CMD_SPR_GETBANGHUIFUBEN, strDbCmd, out dbFields);
                    if (dbRequestResult == TCPProcessCmdResults.RESULT_FAILED)
                    {
                        LogManager.WriteLog(LogTypes.Error, string.Format("GuildCopyMapDBManager::FindGuildCopyMapDB dbRequestResult == TCPProcessCmdResults.RESULT_FAILED strDbCmd={0}", strDbCmd));
                        return(null);
                    }

                    if (dbFields.Length < 5 || Convert.ToInt32(dbFields[0]) <= 0)
                    {
                        LogManager.WriteLog(LogTypes.Error, string.Format("GuildCopyMapDBManager::FindGuildCopyMapDB 参数数量错误或失败 strDbCmd={0}, dbFields.Length={1}", strDbCmd, dbFields.Length));
                        return(null);
                    }

                    try
                    {
                        data = new GuildCopyMapDB()
                        {
                            GuildID = Convert.ToInt32(dbFields[0]),
                            FuBenID = Convert.ToInt32(dbFields[1]),
                            State   = Convert.ToInt32(dbFields[2]),
                            OpenDay = Convert.ToInt32(dbFields[3]),
                            Killers = dbFields[4],
                        };

                        // 加入缓存
                        AddGuildCopyMapDB(data);

                        if (guildid != Convert.ToInt32(dbFields[0]))
                        {
                            LogManager.WriteLog(LogTypes.Error, string.Format("GuildCopyMapDBManager::FindGuildCopyMapDB DB返回的id不符,guildid={0}, dbFields[0]={1}", guildid, Convert.ToInt32(dbFields[0])));
                            return(null);
                        }
                    }

                    catch (Exception)
                    {
                        LogManager.WriteLog(LogTypes.Error, string.Format("GuildCopyMapDBManager::FindGuildCopyMapDB参数解析失败?"));
                        return(null);
                    }
                }
            }

            return(data);
        }
Esempio n. 5
0
        private bool CreateOccupationSummoner(GameClient client, int nID, byte[] bytes, string[] cmdParams)
        {
            int PurchaseOccupationGoods = 0;

            lock (this.RuntimeData.Mutex)
            {
                PurchaseOccupationGoods = this.RuntimeData.PurchaseOccupationGoods;
            }
            bool result2;

            if (!SummonerData.CreateMapSet.Contains(client.CurrentMapCode))
            {
                string strcmd = string.Format("{0}:{1}", -21, string.Format("{0}${1}${2}${3}${4}${5}", new object[]
                {
                    "",
                    "",
                    "",
                    "",
                    "",
                    ""
                }));
                client.sendCmd(nID, strcmd, false);
                result2 = true;
            }
            else
            {
                int GoodsNum = Global.GetTotalGoodsCountByID(client, PurchaseOccupationGoods);
                if (GoodsNum <= 0)
                {
                    string strcmd = string.Format("{0}:{1}", -6, string.Format("{0}${1}${2}${3}${4}${5}", new object[]
                    {
                        "",
                        "",
                        "",
                        "",
                        "",
                        ""
                    }));
                    client.sendCmd(nID, strcmd, false);
                    result2 = true;
                }
                else
                {
                    TMSKSocket clientSocket = GameManager.OnlineUserSession.FindSocketByUserID(client.strUserID);
                    if (null == clientSocket)
                    {
                        result2 = true;
                    }
                    else
                    {
                        string   userID           = cmdParams[0];
                        string   userName         = cmdParams[1];
                        int      sex              = Convert.ToInt32(cmdParams[2]);
                        int      occup            = Convert.ToInt32(cmdParams[3]);
                        string[] nameAndPingTaiID = cmdParams[4].Split(new char[]
                        {
                            '$'
                        });
                        int    zoneID   = Convert.ToInt32(cmdParams[5]);
                        string deviceID = clientSocket.deviceID;
                        if (sex != 1 || occup != 5 || !GameManager.SummonerMgr.IsVersionSystemOpenOfSummoner())
                        {
                            string strcmd = string.Format("{0}:{1}", -12, string.Format("{0}${1}${2}${3}${4}${5}", new object[]
                            {
                                "",
                                "",
                                "",
                                "",
                                "",
                                ""
                            }));
                            client.sendCmd(nID, strcmd, false);
                            result2 = true;
                        }
                        else
                        {
                            string name = nameAndPingTaiID[0];
                            int    ret  = NameServerNamager.CheckInvalidCharacters(name, false);
                            if (ret <= 0)
                            {
                                string strcmd = string.Format("{0}:{1}", ret, string.Format("{0}${1}${2}${3}${4}${5}", new object[]
                                {
                                    "",
                                    "",
                                    "",
                                    "",
                                    "",
                                    ""
                                }));
                                client.sendCmd(nID, strcmd, false);
                                result2 = true;
                            }
                            else if (!SingletonTemplate <NameManager> .Instance().IsNameLengthOK(name))
                            {
                                string strcmd = string.Format("{0}:{1}", -2, string.Format("{0}${1}${2}${3}${4}${5}", new object[]
                                {
                                    "",
                                    "",
                                    "",
                                    "",
                                    "",
                                    ""
                                }));
                                client.sendCmd(nID, strcmd, false);
                                result2 = true;
                            }
                            else
                            {
                                ret = NameServerNamager.RegisterNameToNameServer(zoneID, userID, nameAndPingTaiID, 0, 0);
                                if (ret <= 0)
                                {
                                    string strcmd = string.Format("{0}:{1}", ret, string.Format("{0}${1}${2}${3}${4}${5}", new object[]
                                    {
                                        "",
                                        "",
                                        "",
                                        "",
                                        "",
                                        ""
                                    }));
                                    client.sendCmd(nID, strcmd, false);
                                    result2 = true;
                                }
                                else
                                {
                                    int NotifyLeftTime = 0;
                                    if (!SingletonTemplate <CreateRoleLimitManager> .Instance().IfCanCreateRole(userID, userName, deviceID, ((IPEndPoint)clientSocket.RemoteEndPoint).Address.ToString(), out NotifyLeftTime))
                                    {
                                        string strcmd = string.Format("{0}:{1}", -7, NotifyLeftTime);
                                        client.sendCmd(nID, strcmd, false);
                                        result2 = true;
                                    }
                                    else
                                    {
                                        string               cmddata      = string.Format("{0}:{1}", new UTF8Encoding().GetString(bytes, 0, bytes.Length), 1);
                                        byte[]               bytesCmd     = new UTF8Encoding().GetBytes(cmddata);
                                        TCPOutPacket         tcpOutPacket = null;
                                        TCPProcessCmdResults result       = Global.TransferRequestToDBServer(TCPManager.getInstance(), clientSocket, Global._TCPManager.tcpClientPool, TCPManager.getInstance().tcpRandKey, Global._TCPManager.TcpOutPacketPool, 102, bytesCmd, bytesCmd.Length, out tcpOutPacket, clientSocket.ServerId);
                                        if (null == tcpOutPacket)
                                        {
                                            result2 = true;
                                        }
                                        else
                                        {
                                            tcpOutPacket.PacketCmdID = (ushort)nID;
                                            string strCmdResult = null;
                                            tcpOutPacket.GetPacketCmdData(out strCmdResult);
                                            client.sendCmd(tcpOutPacket, true);
                                            if (null != strCmdResult)
                                            {
                                                string[] ResultField = strCmdResult.Split(new char[]
                                                {
                                                    ':'
                                                });
                                                if (ResultField.Length == 2 && Global.SafeConvertToInt32(ResultField[0]) == 1)
                                                {
                                                    bool usedBinding     = false;
                                                    bool usedTimeLimited = false;
                                                    GameManager.ClientMgr.NotifyUseGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, PurchaseOccupationGoods, 1, false, out usedBinding, out usedTimeLimited, false);
                                                    SingletonTemplate <CreateRoleLimitManager> .Instance().ModifyCreateRoleNum(userID, userName, deviceID, ((IPEndPoint)clientSocket.RemoteEndPoint).Address.ToString());

                                                    string[] fields = ResultField[1].Split(new char[]
                                                    {
                                                        '$'
                                                    });
                                                    int newRoleID = Global.SafeConvertToInt32(fields[0]);
                                                    client.sendCmd <int>(13999, newRoleID, false);
                                                }
                                            }
                                            result2 = true;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(result2);
        }
Esempio n. 6
0
        /// <summary>
        /// 重置世界等级
        /// </summary>
        public void ResetWorldLevel()
        {
            int dayID = DateTime.Now.DayOfYear;

            if (m_nResetWorldLevelDayID == dayID)
            {
                return;
            }

            TCPOutPacket         tcpOutPacket    = null;
            string               strcmd          = string.Format("{0}:{1}", 0, (int)PaiHangTypes.RoleLevel);
            TCPProcessCmdResults dbRequestResult = Global.RequestToDBServer2(Global._TCPManager.tcpClientPool, TCPOutPacketPool.getInstance(), (int)TCPGameServerCmds.CMD_SPR_GETPAIHANGLIST, strcmd, out tcpOutPacket);

            if (dbRequestResult == TCPProcessCmdResults.RESULT_FAILED)
            {
                LogManager.WriteLog(LogTypes.Error, "世界等级装入异常");
                return;
            }

            int nBakResetWorldLevelDayID = m_nResetWorldLevelDayID;

            m_nResetWorldLevelDayID = dayID;

            // 处理本地精简的好友列表数据
            PaiHangData paiHangData = DataHelper.BytesToObject <PaiHangData>(tcpOutPacket.GetPacketBytes(), 6, tcpOutPacket.PacketDataSize - 6);

            if (null != paiHangData)
            {
                int nLevelCount = 0;
                if (null != paiHangData.PaiHangList)
                {
                    for (int i = 0; i < 10 && i < paiHangData.PaiHangList.Count; i++)
                    {
                        nLevelCount += paiHangData.PaiHangList[i].Val2 * 100 + paiHangData.PaiHangList[i].Val1;
                    }
                }
                m_nWorldLevel = nLevelCount / 10;
            }
            else
            {
                LogManager.WriteLog(LogTypes.Error, "世界等级装入时,获取等级排行榜失败");
                return;
            }


            if (0 != nBakResetWorldLevelDayID)
            {
                List <GameClient> allClient = GameManager.ClientMgr.GetAllClients();

                if (null != allClient)
                {
                    for (int i = 0; i < allClient.Count(); i++)
                    {
                        if (null != allClient[i])
                        {
                            UpddateWorldLevelBuff(allClient[i]);
                        }
                    }
                }
            }
        }
Esempio n. 7
0
 public void AutoGiveMagicSwordGoods(GameClient client)
 {
     if (null == client)
     {
         LogManager.WriteLog(LogTypes.Error, string.Format("client不存在,服务器无法给与魔剑士新手装备", new object[0]), null, true);
     }
     else if (this.IsMagicSword(client))
     {
         int nRoleID = client.ClientData.RoleID;
         try
         {
             List <List <int> > giveEquip;
             if (EMagicSwordTowardType.EMST_Strength == this.GetMagicSwordTowardType(client))
             {
                 giveEquip = ConfigParser.ParserIntArrayList(GameManager.systemParamsList.GetParamValueByName("LiMJSZhuangBei"), true, '|', ',');
                 if (null == giveEquip)
                 {
                     LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士初始化装备默认数据报错.RoleID{0}", nRoleID), null, true);
                     return;
                 }
                 if (giveEquip.Count <= 0)
                 {
                     LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士初始化装备数量为空.RoleID{0}", nRoleID), null, true);
                     return;
                 }
             }
             else
             {
                 giveEquip = ConfigParser.ParserIntArrayList(GameManager.systemParamsList.GetParamValueByName("ZhiMJSZhuangBei"), true, '|', ',');
                 if (null == giveEquip)
                 {
                     LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士初始化装备默认数据报错.RoleID{0}", nRoleID), null, true);
                     return;
                 }
                 if (giveEquip.Count <= 0)
                 {
                     LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士初始化装备数量为空.RoleID{0}", nRoleID), null, true);
                     return;
                 }
             }
             bool bRingFalg = false;
             for (int i = 0; i < giveEquip.Count; i++)
             {
                 int           nGoodID        = giveEquip[i][0];
                 int           nNum           = giveEquip[i][1];
                 int           nBind          = giveEquip[i][2];
                 int           nIntensify     = giveEquip[i][3];
                 int           nAppendPropLev = giveEquip[i][4];
                 int           nLuck          = giveEquip[i][5];
                 int           nExcellence    = giveEquip[i][6];
                 SystemXmlItem sytemGoodsItem = null;
                 if (!GameManager.SystemGoods.SystemXmlItemDict.TryGetValue(nGoodID, out sytemGoodsItem))
                 {
                     LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士初始化装备数量ID不存在:RoleID{0},GoodsID={1}", nRoleID, nGoodID), null, true);
                 }
                 else if (!Global.IsRoleOccupationMatchGoods(client, nGoodID))
                 {
                     LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士初始化装备与职业不符RoleID{0}, 物品id{1}.", nRoleID, nGoodID), null, true);
                 }
                 else if (1 != nNum)
                 {
                     LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士初始化装备数量必须为1件RoleID{0}, 数量{1}.", nRoleID, nNum), null, true);
                 }
                 else
                 {
                     int nSeriralID = Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, nGoodID, nNum, 0, "", nIntensify, nBind, 0, "", false, 1, "自动给于魔剑士装备", "1900-01-01 12:00:00", 0, 0, nLuck, 0, nExcellence, nAppendPropLev, 0, null, null, 0, true);
                     if (nSeriralID <= 0)
                     {
                         LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士初始化装备数量[AddGoodsDBCommand]失败.RoleID{0}", nRoleID), null, true);
                     }
                     else
                     {
                         GoodsData newEquip = Global.GetGoodsByDbID(client, nSeriralID);
                         if (null == newEquip)
                         {
                             LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士初始化装备数量[GetGoodsByID]失败.RoleID{0}", nRoleID), null, true);
                         }
                         else
                         {
                             int nBagIndex  = 0;
                             int nCatetoriy = Global.GetGoodsCatetoriy(newEquip.GoodsID);
                             if (nCatetoriy == 6 && bRingFalg)
                             {
                                 nBagIndex++;
                             }
                             string cmdData = string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}", new object[]
                             {
                                 client.ClientData.RoleID,
                                 1,
                                 newEquip.Id,
                                 newEquip.GoodsID,
                                 1,
                                 newEquip.Site,
                                 newEquip.GCount,
                                 nBagIndex,
                                 ""
                             });
                             TCPProcessCmdResults eErrorCode = Global.ModifyGoodsByCmdParams(client, cmdData, "客户端修改", null);
                             if (TCPProcessCmdResults.RESULT_FAILED == eErrorCode)
                             {
                                 LogManager.WriteLog(LogTypes.Error, string.Format("魔剑士初始化装备数量[ModifyGoodsByCmdParams]失败.RoleID{0}", nRoleID), null, true);
                             }
                             else
                             {
                                 Global.RefreshEquipProp(client, newEquip);
                                 if (nCatetoriy == 6)
                                 {
                                     bRingFalg = true;
                                 }
                             }
                         }
                     }
                 }
             }
         }
         catch (Exception ex)
         {
             DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false);
         }
     }
 }
Esempio n. 8
0
        public MarryPartyResult MarryPartyJoin(GameClient client, int roleID)
        {
            MarryPartyResult result;

            if (!MarryLogic.IsVersionSystemOpenOfMarriage())
            {
                result = MarryPartyResult.NotOpen;
            }
            else
            {
                MarryPartyData partyData = this.m_MarryPartyDataCache.GetParty(roleID);
                if (partyData == null)
                {
                    result = MarryPartyResult.PartyNotFound;
                }
                else if (partyData.StartTime > TimeUtil.NOW())
                {
                    result = MarryPartyResult.NotStart;
                }
                else
                {
                    MarryPartyConfigData configData = this.GetMarryPartyConfigData(partyData.PartyType);
                    if (null == configData)
                    {
                        result = MarryPartyResult.PartyNotFound;
                    }
                    else if (configData.JoinCost > Global.GetTotalBindTongQianAndTongQianVal(client))
                    {
                        result = MarryPartyResult.NotEnoughMoney;
                    }
                    else
                    {
                        Dictionary <int, int> joinList = client.ClientData.MyMarryPartyJoinList;
                        int  targetPartyJoinCount      = 0;
                        int  allPartyJoinCount         = 0;
                        bool remove = false;
                        lock (joinList)
                        {
                            joinList.TryGetValue(roleID, out targetPartyJoinCount);
                            foreach (KeyValuePair <int, int> kv in client.ClientData.MyMarryPartyJoinList)
                            {
                                allPartyJoinCount += kv.Value;
                            }
                            if (allPartyJoinCount >= this.MarryPartyPlayerMaxJoinCount)
                            {
                                return(MarryPartyResult.ZeroPlayerJoinCount);
                            }
                            if (targetPartyJoinCount >= configData.PlayerMaxJoinCount)
                            {
                                return(MarryPartyResult.ZeroPlayerJoinCount);
                            }
                            if (!this.m_MarryPartyDataCache.IncPartyJoin(roleID, configData.PartyMaxJoinCount, out remove))
                            {
                                return(MarryPartyResult.ZeroPartyJoinCount);
                            }
                            targetPartyJoinCount++;
                            byte[] byteData = null;
                            TCPProcessCmdResults dbResult = Global.RequestToDBServer3(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, 10190, string.Format("{0}:{1}:{2}", roleID, client.ClientData.RoleID, targetPartyJoinCount), out byteData, client.ServerId);
                            if (TCPProcessCmdResults.RESULT_FAILED == dbResult || byteData == null || byteData.Length <= 6)
                            {
                                this.m_MarryPartyDataCache.IncPartyJoinCancel(roleID);
                                return(MarryPartyResult.ZeroPartyJoinCount);
                            }
                            joinList[roleID] = targetPartyJoinCount;
                        }
                        if (configData.JoinCost > 0)
                        {
                            if (!Global.SubBindTongQianAndTongQian(client, configData.JoinCost, "參予婚宴"))
                            {
                                return(MarryPartyResult.NotEnoughMoney);
                            }
                        }
                        if (configData.RewardExp > 0)
                        {
                            GameManager.ClientMgr.ProcessRoleExperience(client, (long)configData.RewardExp, false, true, false, "none");
                        }
                        if (configData.RewardShengWang > 0)
                        {
                            GameManager.ClientMgr.ModifyShengWangValue(client, configData.RewardShengWang, "婚宴奖励", false, true);
                        }
                        if (configData.RewardXingHun > 0)
                        {
                            GameManager.ClientMgr.ModifyStarSoulValue(client, configData.RewardXingHun, "婚宴奖励", false, true);
                        }
                        if (remove)
                        {
                            this.MarryPartyRemoveInternal(roleID, true, client, null);
                            GoodsData goodData = Global.GetNewGoodsData(configData.RewardItem.GoodsID, configData.RewardItem.Binding);
                            goodData.GCount = configData.JoinCost * configData.PartyMaxJoinCount / configData.GoodWillRatio / 2;
                            List <GoodsData> goodList = new List <GoodsData>();
                            goodList.Add(goodData);
                            string sMsg = GLang.GetLang(493, new object[0]);
                            Global.UseMailGivePlayerAward3(roleID, goodList, GLang.GetLang(494, new object[0]), sMsg, 0, 0, 0);
                            int spouseID = (roleID == partyData.HusbandRoleID) ? partyData.WifeRoleID : partyData.HusbandRoleID;
                            Global.UseMailGivePlayerAward3(spouseID, goodList, GLang.GetLang(494, new object[0]), sMsg, 0, 0, 0);
                        }
                        this.SendMarryPartyJoinList(client);
                        this.SendMarryPartyList(client, partyData, -1);
                        result = MarryPartyResult.Success;
                    }
                }
            }
            return(result);
        }
Esempio n. 9
0
        public MarryPartyResult MarryPartyCreate(GameClient client, int partyType, long startTime)
        {
            MarryPartyResult result2;

            if (!MarryLogic.IsVersionSystemOpenOfMarriage())
            {
                result2 = MarryPartyResult.NotOpen;
            }
            else
            {
                MarryPartyConfigData configData = this.GetMarryPartyConfigData(partyType);
                if (null == configData)
                {
                    result2 = MarryPartyResult.InvalidParam;
                }
                else
                {
                    MarriageData marryData = client.ClientData.MyMarriageData;
                    if (marryData.nSpouseID < 0 || marryData.byMarrytype < 0)
                    {
                        result2 = MarryPartyResult.NotMarry;
                    }
                    else
                    {
                        int    husbandRoleID;
                        string husbandName;
                        int    wifeRoleID;
                        string wifeName;
                        if (1 == marryData.byMarrytype)
                        {
                            husbandRoleID = client.ClientData.RoleID;
                            husbandName   = client.ClientData.RoleName;
                            wifeRoleID    = marryData.nSpouseID;
                            wifeName      = MarryLogic.GetRoleName(marryData.nSpouseID);
                        }
                        else
                        {
                            husbandRoleID = marryData.nSpouseID;
                            husbandName   = MarryLogic.GetRoleName(marryData.nSpouseID);
                            wifeRoleID    = client.ClientData.RoleID;
                            wifeName      = client.ClientData.RoleName;
                        }
                        MarryPartyData partyData = this.m_MarryPartyDataCache.AddParty(client.ClientData.RoleID, partyType, startTime, husbandRoleID, wifeRoleID, husbandName, wifeName);
                        if (partyData == null)
                        {
                            result2 = MarryPartyResult.AlreadyRequest;
                        }
                        else
                        {
                            MarryPartyResult     result   = MarryPartyResult.Success;
                            byte[]               byteData = null;
                            TCPProcessCmdResults dbResult = Global.RequestToDBServer3(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, 10188, string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", new object[]
                            {
                                client.ClientData.RoleID,
                                partyType,
                                startTime,
                                husbandRoleID,
                                wifeRoleID,
                                husbandName,
                                wifeName
                            }), out byteData, client.ServerId);
                            if (TCPProcessCmdResults.RESULT_FAILED == dbResult || byteData == null || byteData.Length <= 6)
                            {
                                result = MarryPartyResult.AlreadyRequest;
                            }
                            if (result == MarryPartyResult.Success)
                            {
                                if (configData.PartyCost > Global.GetTotalBindTongQianAndTongQianVal(client))
                                {
                                    result = MarryPartyResult.NotEnoughMoney;
                                }
                                if (configData.PartyCost > 0)
                                {
                                    if (!Global.SubBindTongQianAndTongQian(client, configData.PartyCost, "举办婚宴"))
                                    {
                                        result = MarryPartyResult.NotEnoughMoney;
                                    }
                                }
                            }
                            if (result != MarryPartyResult.Success)
                            {
                                if (dbResult != TCPProcessCmdResults.RESULT_FAILED)
                                {
                                    try
                                    {
                                        Global.SendAndRecvData <string>(10189, string.Format("{0}", client.ClientData.RoleID), client.ServerId, 0);
                                    }
                                    catch (Exception)
                                    {
                                    }
                                }
                                this.m_MarryPartyDataCache.RemoveParty(client.ClientData.RoleID);
                                result2 = result;
                            }
                            else
                            {
                                int            length      = BitConverter.ToInt32(byteData, 0);
                                MarryPartyData dbPartyData = DataHelper.BytesToObject <MarryPartyData>(byteData, 6, length - 2);
                                this.m_MarryPartyDataCache.SetPartyTime(partyData, dbPartyData.StartTime);
                                this.SendMarryPartyList(client, partyData, -1);
                                result2 = result;
                            }
                        }
                    }
                }
            }
            return(result2);
        }
Esempio n. 10
0
        public static TCPProcessCmdResults UpgradeDamonProcess(TCPOutPacketPool pool, GameClient client, GoodsData goodsData, out TCPOutPacket tcpOutPacket, int nID, TCPClientPool tcpClientPool, TCPManager tcpMgr)
        {
            tcpOutPacket = null;
            SystemXmlItem        xmlItem = null;
            TCPProcessCmdResults result;

            if (!GameManager.SystemGoods.SystemXmlItemDict.TryGetValue(goodsData.GoodsID, out xmlItem) || null == xmlItem)
            {
                string strcmd = string.Format("{0}:{1}:{2}:{3}:{4}", new object[]
                {
                    -13,
                    client.ClientData.RoleID,
                    goodsData.Id,
                    0,
                    0
                });
                tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID);
                result       = TCPProcessCmdResults.RESULT_DATA;
            }
            else
            {
                int MaxUpgradeLevel = xmlItem.GetIntValue("SuitID", -1) * 10 + 9;
                if (goodsData.Forge_level >= MaxUpgradeLevel)
                {
                    string strcmd = string.Format("{0}:{1}:{2}:{3}:{4}", new object[]
                    {
                        -4,
                        client.ClientData.RoleID,
                        goodsData.Id,
                        goodsData.Forge_level,
                        goodsData.Binding
                    });
                    tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID);
                    result       = TCPProcessCmdResults.RESULT_DATA;
                }
                else if (goodsData.Site != 5000)
                {
                    string strcmd = string.Format("{0}:{1}:{2}:{3}:{4}", new object[]
                    {
                        -9,
                        client.ClientData.RoleID,
                        goodsData.Id,
                        goodsData.Forge_level,
                        goodsData.Binding
                    });
                    tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID);
                    result       = TCPProcessCmdResults.RESULT_DATA;
                }
                else
                {
                    SystemXmlItem xmlItems = null;
                    GameManager.SystemDamonUpgrade.SystemXmlItemDict.TryGetValue(goodsData.Forge_level + 2, out xmlItems);
                    if (null == xmlItems)
                    {
                        string strcmd = string.Format("{0}:{1}:{2}:{3}:{4}", new object[]
                        {
                            -6,
                            client.ClientData.RoleID,
                            goodsData.Id,
                            0,
                            0
                        });
                        tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID);
                        result       = TCPProcessCmdResults.RESULT_DATA;
                    }
                    else
                    {
                        int  nReqMoHe  = xmlItems.GetIntValue("NeedEXP", -1);
                        long lHaveMoHe = (long)GameManager.ClientMgr.GetMUMoHeValue(client);
                        if (lHaveMoHe < (long)nReqMoHe)
                        {
                            string strcmd = string.Format("{0}:{1}:{2}:{3}:{4}", new object[]
                            {
                                -11,
                                client.ClientData.RoleID,
                                goodsData.Id,
                                goodsData.Forge_level,
                                goodsData.Binding
                            });
                            tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID);
                            result       = TCPProcessCmdResults.RESULT_DATA;
                        }
                        else
                        {
                            GameManager.ClientMgr.ModifyMUMoHeValue(client, -nReqMoHe, "精灵升级", true, true, false);
                            int      nBingProp = 1;
                            string[] dbFields  = null;
                            string   strDbCmd  = Global.FormatUpdateDBGoodsStr(new object[]
                            {
                                client.ClientData.RoleID,
                                goodsData.Id,
                                "*",
                                goodsData.Forge_level + 1,
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                nBingProp,
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*",
                                "*"
                            });
                            TCPProcessCmdResults dbRequestResult = Global.RequestToDBServer(tcpClientPool, pool, 10006, strDbCmd, out dbFields, client.ServerId);
                            if (dbRequestResult == TCPProcessCmdResults.RESULT_FAILED)
                            {
                                string strcmd = string.Format("{0}:{1}:{2}:{3}:{4}", new object[]
                                {
                                    -10,
                                    client.ClientData.RoleID,
                                    goodsData.Id,
                                    0,
                                    0
                                });
                                tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID);
                                result       = TCPProcessCmdResults.RESULT_DATA;
                            }
                            else if (dbFields.Length <= 0 || Convert.ToInt32(dbFields[1]) < 0)
                            {
                                string strcmd = string.Format("{0}:{1}:{2}:{3}:{4}", new object[]
                                {
                                    -10,
                                    client.ClientData.RoleID,
                                    goodsData.Id,
                                    0,
                                    0
                                });
                                tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID);
                                result       = TCPProcessCmdResults.RESULT_DATA;
                            }
                            else
                            {
                                int oldUsing = goodsData.Using;
                                if (goodsData.Using > 0)
                                {
                                    goodsData.Using = 0;
                                    Global.RefreshEquipProp(client, goodsData);
                                }
                                goodsData.Forge_level++;
                                goodsData.Binding = nBingProp;
                                JingLingQiYuanManager.getInstance().RefreshProps(client, true);
                                if (oldUsing != goodsData.Using)
                                {
                                    goodsData.Using = oldUsing;
                                    if (Global.RefreshEquipProp(client, goodsData))
                                    {
                                        GameManager.ClientMgr.NotifyUpdateEquipProps(tcpMgr.MySocketListener, pool, client);
                                        GameManager.ClientMgr.NotifyOthersLifeChanged(tcpMgr.MySocketListener, pool, client, true, false, 7);
                                    }
                                }
                                Global.ModRoleGoodsEvent(client, goodsData, 0, "强化", false);
                                EventLogManager.AddGoodsEvent(client, OpTypes.Forge, OpTags.None, goodsData.GoodsID, (long)goodsData.Id, 0, goodsData.GCount, "强化");
                                string strcmd = string.Format("{0}:{1}:{2}:{3}:{4}", new object[]
                                {
                                    1,
                                    client.ClientData.RoleID,
                                    goodsData.Id,
                                    goodsData.Forge_level,
                                    nBingProp
                                });
                                tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID);
                                result       = TCPProcessCmdResults.RESULT_DATA;
                            }
                        }
                    }
                }
            }
            return(result);
        }
        /// <summary>
        /// 激活星座信息
        /// </summary>
        public int ActivationStarConstellation(GameClient client, int nStarSiteID)
        {
            if (nStarSiteID < 1 || nStarSiteID > m_MaxStarSiteID)
            {
                return(-1);
            }

            if (client.ClientData.RoleStarConstellationInfo == null)
            {
                client.ClientData.RoleStarConstellationInfo = new Dictionary <int, int>();
            }

            int nStarSlot = 0;

            client.ClientData.RoleStarConstellationInfo.TryGetValue(nStarSiteID, out nStarSlot);

            if (nStarSlot >= m_MaxStarSlotID)
            {
                return(-1);
            }

            ++nStarSlot;

            int nOccupation = client.ClientData.Occupation;

            Dictionary <int, Dictionary <int, StarConstellationDetailInfo> > dicTmp = null;

            if (!m_StarConstellationDetailInfo.TryGetValue(nOccupation, out dicTmp) || dicTmp == null)
            {
                return(-2);
            }

            Dictionary <int, StarConstellationDetailInfo> dicTmpInfo = null;

            if (!dicTmp.TryGetValue(nStarSiteID, out dicTmpInfo) || dicTmpInfo == null)
            {
                return(-2);
            }

            StarConstellationDetailInfo tmpInfo = null;

            if (!dicTmpInfo.TryGetValue(nStarSlot, out tmpInfo) || tmpInfo == null)
            {
                return(-2);
            }

            int nNeeChangeLife = 0;

            nNeeChangeLife = tmpInfo.ChangeLifeLimit;
            int nNeedLev       = tmpInfo.LevelLimit;
            int nReqUnionLevel = Global.GetUnionLevel(nNeeChangeLife, nNeedLev);

            if (Global.GetUnionLevel(client.ClientData.ChangeLifeCount, client.ClientData.Level) < nReqUnionLevel)
            {
                return(-3);
            }

            int nGoods = tmpInfo.NeedGoodsID;
            int nNum   = tmpInfo.NeedGoodsNum;

            if (nGoods > 0 && nNum > 0)
            {
                GoodsData goods = null;
                goods = Global.GetGoodsByID(client, nGoods);

                if (goods == null || goods.GCount < nNum)
                {
                    GameManager.ClientMgr.NotifyImportantMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client,
                                                             StringUtil.substitute(Global.GetLang("所需物品不足")), GameInfoTypeIndexes.Hot, ShowGameInfoTypes.ErrAndBox);

                    return(-5);
                }
            }

            int nNeedStarSoul = tmpInfo.NeedStarSoul;

            if (nNeedStarSoul > 0)
            {
                if (nNeedStarSoul > client.ClientData.StarSoul)
                {
                    GameManager.ClientMgr.NotifyImportantMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client,
                                                             StringUtil.substitute(Global.GetLang("星魂不足")), GameInfoTypeIndexes.Hot, ShowGameInfoTypes.ErrAndBox);
                    return(-9);
                }
            }

            int nNeedMoney = tmpInfo.NeedJinBi;

            if (nNeedMoney > 0)
            {
                if (!Global.SubBindTongQianAndTongQian(client, nNeedMoney, "激活星座"))
                {
                    GameManager.ClientMgr.NotifyImportantMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client,
                                                             StringUtil.substitute(Global.GetLang("金币不足")), GameInfoTypeIndexes.Hot, ShowGameInfoTypes.ErrAndBox);

                    return(-10);
                }
            }


            if (nGoods > 0 && nNum > 0)
            {
                bool usedBinding     = false;
                bool usedTimeLimited = false;

                if (!GameManager.ClientMgr.NotifyUseGoods(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool,
                                                          Global._TCPManager.TcpOutPacketPool, client, nGoods, nNum, false, out usedBinding, out usedTimeLimited))
                {
                    return(-6);
                }
            }

            if (nNeedStarSoul > 0)
            {
                GameManager.ClientMgr.ModifyStarSoulValue(client, -nNeedStarSoul, "激活星座", true, true);
                //client.ClientData.StarSoul -= nNeedStarSoul;

                //if (client.ClientData.StarSoul < 0)
                //    client.ClientData.StarSoul = 0;

                //Global.SaveRoleParamsInt32ValueToDB(client, RoleParamName.StarSoul, client.ClientData.StarSoul, true);

                //GameManager.ClientMgr.NotifySelfParamsValueChange(client, RoleCommonUseIntParamsIndexs.StarSoulValue, client.ClientData.StarSoul);
            }

            // 概率
            int nRate = 0;

            nRate = Global.GetRandomNumber(1, 10001);

            if (nRate > tmpInfo.SuccessRate)
            {
                GameManager.ClientMgr.NotifyImportantMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client,
                                                         StringUtil.substitute(Global.GetLang("激活星位失败")), GameInfoTypeIndexes.Hot, ShowGameInfoTypes.ErrAndBox);
                return(-100);
            }

            // 通知DB
            TCPOutPacket tcpOutPacket = null;
            string       strDbCmd     = string.Format("{0}:{1}:{2}", client.ClientData.RoleID, nStarSiteID, nStarSlot);

            TCPProcessCmdResults dbRequestResult = Global.RequestToDBServer2(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool,
                                                                             (int)TCPGameServerCmds.CMD_DB_UPDATESTARCONSTELLATION, strDbCmd, out tcpOutPacket);

            if (TCPProcessCmdResults.RESULT_FAILED == dbRequestResult)
            {
                return(-7);
            }
            Global.PushBackTcpOutPacket(tcpOutPacket);
            PropertyInfo tmpProp = null;

            tmpProp = tmpInfo.Propertyinfo;

            if (tmpProp == null)
            {
                return(-8);
            }

            client.ClientData.RoleStarConstellationInfo[nStarSiteID] = nStarSlot;

            ActivationStarConstellationProp(client, tmpProp);

            /*int nCount = 0;
             *
             * if (!client.ClientData.StarConstellationCount.TryGetValue(nStarSiteID, out nCount))
             * {
             ++nCount;
             *  client.ClientData.StarConstellationCount.Add(nStarSiteID, nCount);
             * }
             * else
             * {
             ++client.ClientData.StarConstellationCount[nStarSiteID];
             * }*/

            if (0 == nStarSlot % 12)
            {
                ActivationStarConstellationExtendProp(client, nStarSiteID);

                // 星座属性 [8/4/2014 LiaoWei]
                GameManager.StarConstellationMgr.InitPlayerStarConstellationPorperty(client);
            }

            GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client);
            client.ClientData.LifeV  = (int)RoleAlgorithm.GetMaxLifeV(client);
            client.ClientData.MagicV = (int)RoleAlgorithm.GetMaxLifeV(client);
            GameManager.ClientMgr.NotifySelfLifeChanged(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client);

            return(1);
        }
Esempio n. 12
0
        /// <summary>
        /// 新区获得奖励
        /// </summary>
        /// <param name="dbMgr"></param>
        /// <param name="pool"></param>
        /// <param name="nID"></param>
        /// <param name="data"></param>
        /// <param name="count"></param>
        /// <param name="tcpOutPacket"></param>
        /// <returns></returns>
        public static TCPProcessCmdResults ProcessGetNewzoneActiveAward(DBManager dbMgr, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket)
        {
            tcpOutPacket = null;
            string cmdData = null;

            try
            {
                cmdData = new UTF8Encoding().GetString(data, 0, count);
            }
            catch (Exception) //解析错误
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}", (TCPGameServerCmds)nID));

                tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", (int)TCPGameServerCmds.CMD_DB_ERR_RETURN);
                return(TCPProcessCmdResults.RESULT_DATA);
            }
            TCPProcessCmdResults ret = TCPProcessCmdResults.RESULT_FAILED;

            try
            {
                string[] fields = cmdData.Split(':');
                if (fields.Length != 5)
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Recv={1}, CmdData={2}",
                                                                      (TCPGameServerCmds)nID, fields.Length, cmdData));

                    tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", (int)TCPGameServerCmds.CMD_DB_ERR_RETURN);
                    return(TCPProcessCmdResults.RESULT_DATA);
                }

                int    roleID     = Convert.ToInt32(fields[0]);
                string fromDate   = fields[1].Replace('$', ':');
                string toDate     = fields[2].Replace('$', ':');
                int    activetype = Global.SafeConvertToInt32(fields[4]);
                //排名最低元宝要求列表,依次为第一名的最小元宝,第二名的最小元宝......
                string[] minYuanBaoArr = fields[3].Split('_');

                List <int> minGateValueList = new List <int>();
                foreach (var item in minYuanBaoArr)
                {
                    minGateValueList.Add(Global.SafeConvertToInt32(item));
                }


                switch (activetype)
                {
                case (int)ActivityTypes.NewZoneBosskillKing:
                {
                    ret = GetBossKillAward(dbMgr, pool, nID, roleID, activetype, fromDate, toDate, minGateValueList, out tcpOutPacket);
                    break;
                }

                case (int)ActivityTypes.NewZoneConsumeKing:
                {
                    ret = GetConsumeKingAward(dbMgr, pool, nID, roleID, activetype, fromDate, toDate, minGateValueList, out tcpOutPacket);
                    break;
                }

                case (int)ActivityTypes.NewZoneFanli:
                {
                    ret = GetNewFanliAward(dbMgr, pool, nID, roleID, activetype, fromDate, toDate, minGateValueList, out tcpOutPacket);
                    break;
                }

                case (int)ActivityTypes.NewZoneRechargeKing:
                {
                    ret = GetRechargeKingAward(dbMgr, pool, nID, roleID, activetype, fromDate, toDate, minGateValueList, out tcpOutPacket);
                    break;
                }

                case (int)ActivityTypes.NewZoneUpLevelMadman:
                {
                    break;
                }
                    // tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", (int)ret);
                }
            }catch (Exception ex)
            {
            }
            return(ret);
        }