Esempio n. 1
0
        //保存幻兽技能数据
        public static void SaveRoleData_Eudemon_MagicInfo(GameBase.Network.Internal.ROLEDATE_EUDEMON info)
        {
            MySqlCommand command;
            String       sql;

            for (int i = 0; i < info.list_item.Count; i++)
            {
                RoleData_Eudemon item = info.list_item[i];
                for (int j = 0; j < item.mListMagicInfo.Count; j++)
                {
                    GameBase.Network.Internal.MagicInfo itemex = item.mListMagicInfo[j];
                    if (itemex.id == 0)
                    {
                        sql = String.Format(MysqlString.ADD_EUDEMON_MAGIC, info.list_item[i].id, itemex.magicid, itemex.level, item.exp);
                    }
                    else if (itemex.id == -1)   //删除技能
                    {
                        sql = String.Format(MysqlString.DELETE_EUDEMON_MAGIC, itemex.magicid);
                    }
                    else
                    {
                        sql = String.Format(MysqlString.UPDATE_EUDEMON_MAGIC, itemex.magicid, itemex.level, itemex.exp, itemex.ownerid, itemex.id);
                    }
                    command = new MySqlCommand(sql, MysqlConn.GetConn());
                    MysqlConn.Conn_Open();
                    command.ExecuteNonQuery();

                    MysqlConn.Conn_Close();
                    command.Dispose();
                }
            }
        }
Esempio n. 2
0
        //载入幻兽技能数据
        public static void LoadRoleData_Eudemon_MagicInfo(GameBase.Network.Internal.ROLEDATE_EUDEMON info)
        {
            MySqlCommand command;

            for (int i = 0; i < info.list_item.Count; i++)
            {
                RoleData_Eudemon item = info.list_item[i];
                String           _key = String.Format(MysqlString.LOADROLEDATA_EUDEMON_MAGIC, item.id);
                command = new MySqlCommand(_key, MysqlConn.GetConn());
                MysqlConn.Conn_Open();
                MySqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    if (!reader.HasRows)
                    {
                        break;
                    }
                    GameBase.Network.Internal.MagicInfo itemex = new GameBase.Network.Internal.MagicInfo();
                    itemex.id      = reader.GetInt32("id");
                    itemex.ownerid = reader.GetInt32("ownerid");
                    itemex.magicid = reader.GetUInt32("magicid");
                    itemex.exp     = reader.GetUInt32("level");
                    item.mListMagicInfo.Add(itemex);
                }
                MysqlConn.Conn_Close();
                command.Dispose();
            }
        }
Esempio n. 3
0
        public static void LoadRoleData_Magic(GameBase.Network.Internal.RoleData_Magic info)
        {
            MySqlCommand command;
            String       _key = String.Format(MysqlString.LOADROLEDATA_MAGIC, info.ownerid);

            command = new MySqlCommand(_key, MysqlConn.GetConn());
            MysqlConn.Conn_Open();
            MySqlDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                if (!reader.HasRows)
                {
                    break;
                }
                GameBase.Network.Internal.MagicInfo item = new GameBase.Network.Internal.MagicInfo();
                item.id      = reader.GetInt32("id");
                item.magicid = reader.GetUInt32("magicid");
                item.level   = reader.GetByte("level");
                item.exp     = reader.GetUInt32("exp");
                info.mListMagic.Add(item);
            }
            MysqlConn.Conn_Close();
            command.Dispose();
        }
Esempio n. 4
0
        public static void SaveRoleData_Magic(GameBase.Network.Internal.RoleData_Magic info)
        {
            MySqlCommand command;
            String       sql;

            for (int i = 0; i < info.mListMagic.Count; i++)
            {
                GameBase.Network.Internal.MagicInfo item = info.mListMagic[i];
                if (item.id == 0)
                {
                    sql = String.Format(MysqlString.ADDMAGIC, info.ownerid, item.magicid, item.level, item.exp);
                }
                else
                {
                    sql = String.Format(MysqlString.UPDATEMAGIC, item.magicid, item.level, item.exp, info.ownerid, item.id);
                }
                command = new MySqlCommand(sql, MysqlConn.GetConn());
                MysqlConn.Conn_Open();
                command.ExecuteNonQuery();

                MysqlConn.Conn_Close();
                command.Dispose();
            }
        }
Esempio n. 5
0
        public void ProcessDBNetMsg()
        {
            if (!mbConnect && System.Environment.TickCount - mnReconnectTick > 5000)//五秒重连
            {
                mTcpDBClient.ReConnect();
                mnReconnectTick = System.Environment.TickCount;
            }
            byte[] buff = null;
            lock (_lock)
            {
                buff = mDBPacket.GetData();
            }

            if (buff == null)
            {
                return;
            }
            PackIn inpack = new PackIn(buff);
            ushort param  = inpack.ReadUInt16();

            switch (param)
            {
            case GameBase.Network.Internal.Define.ROLEINFO:
            {
                GameBase.Network.Internal.RoleInfo roleinfo = new GameBase.Network.Internal.RoleInfo(buff);
                //判断是否有缓存数据-
                PlayerObject cacheplay = UserEngine.Instance().GetCachePlay(roleinfo.sAccount);
                if (cacheplay != null)
                {
                    Log.Instance().WriteLog("检测到角色缓存数据,保存中!" + cacheplay.GetName());
                    UserEngine.Instance().RemoveCachePlay(cacheplay);
                    cacheplay.ExitGame();
                    return;
                }
                UserEngine.Instance().AddTempPlayObject(roleinfo);

                //回发给dbserver 表示收到了角色信息- 让他通知loginserver 发数据给玩家连接mapserver
                GameBase.Network.Internal.RoleInfo_Ret ret = new GameBase.Network.Internal.RoleInfo_Ret();
                ret.gameid    = roleinfo.gameid;
                ret.key       = roleinfo.mKey;
                ret.key2      = roleinfo.mKey1;
                ret.accountid = roleinfo.accountid;
                mTcpDBClient.SendData(ret.GetBuffer());
                Log.Instance().WriteLog("收到临时角色信息:" + roleinfo.sAccount + " id:" + roleinfo.accountid.ToString());
                break;
            }

            case GameBase.Network.Internal.Define.QUERYROLENAME_RET:
            {
                QueryRoleName_Ret ret = new QueryRoleName_Ret();
                ret.Create(buff);
                TempPlayObject temp = UserEngine.Instance().GetTempPlayObj(ret.gameid);
                if (temp == null)
                {
                    Log.Instance().WriteLog("找到玩家对象..在--ProcessDBNetMsg code:2");
                    break;
                }

                NetMsg.MsgNotice notice = new NetMsg.MsgNotice();
                notice.Create(null, temp.play.GetGamePackKeyEx());
                temp.play.SendData(notice.GetQueryNameBuff(!ret.tag));

                break;
            }

            case GameBase.Network.Internal.Define.CREATEROLE_RET:
            {
                CreateRole_Ret ret = new CreateRole_Ret();
                ret.Create(buff);
                TempPlayObject temp = UserEngine.Instance().GetTempPlayObj(ret.gameid);
                if (temp == null)
                {
                    Log.Instance().WriteLog("未找到玩家对象..在--ProcessDBNetMsg code:3");
                    break;
                }


                UserEngine.Instance().RemoveTempPlayObject(ret.gameid);         //从临时列表出移除--
                //进入游戏
                temp.play.GetBaseAttr().account_id = temp.accountid;
                temp.play.GetBaseAttr().player_id  = ret.playerid;
                temp.play.EnterGame(null, true);
                break;
            }

            case GameBase.Network.Internal.Define.ADDROLEDATA_ITEM_RET:
            {
                GameBase.Network.Internal.AddRoleData_Item_Ret ret = new GameBase.Network.Internal.AddRoleData_Item_Ret();
                ret.Create(buff);
                PlayerObject play = UserEngine.Instance().FindPlayerObjectToID(ret.gameid);
                if (play == null)
                {
                    Log.Instance().WriteLog("未找到玩家对象..在--ProcessDBNetMsg code:4");
                    break;
                }
                play.GetItemSystem().AwardItem_Ret(ret.sordid, ret.id);
                break;
            }

            case GameBase.Network.Internal.Define.LOADROLEDATA_ITEM:
            {
                GameBase.Network.Internal.ROLEDATA_ITEM item = new GameBase.Network.Internal.ROLEDATA_ITEM();
                item.Create(buff);
                TempPlayObject play = UserEngine.Instance().GetTempPlayObj(item.key, item.key2);
                if (play == null)
                {
                    Log.Instance().WriteLog("未找到玩家对象..在--ProcessDBNetMsg code:5");
                    break;
                }
                for (int i = 0; i < item.mListItem.Count; i++)
                {
                    play.play.GetItemSystem().AddItemInfo(item.mListItem[i]);
                }
                break;
            }

            case GameBase.Network.Internal.Define.LOADROLEDATA_MAGIC:
            {
                GameBase.Network.Internal.RoleData_Magic magic = new GameBase.Network.Internal.RoleData_Magic();
                magic.Create(buff);
                TempPlayObject play = UserEngine.Instance().GetTempPlayObj(magic.key, magic.key2);
                if (play == null)
                {
                    Log.Instance().WriteLog("未找到玩家对象..在--ProcessDBNetMsg code:6");
                    break;
                }
                for (int i = 0; i < magic.mListMagic.Count; i++)
                {
                    GameBase.Network.Internal.MagicInfo info = magic.mListMagic[i];
                    play.play.GetMagicSystem().AddMagicInfo(info);
                }

                break;
            }

            case GameBase.Network.Internal.Define.KICKGAMEPLAY:
            {
                GameBase.Network.Internal.KickGamePlay kickplay = new GameBase.Network.Internal.KickGamePlay();
                kickplay.Create(buff);
                PlayerObject play = UserEngine.Instance().FindPlayerObjectToAccountId(kickplay.accountid);
                if (play != null)
                {
                    SessionManager.Instance().RemoveSession(play.GetGameSession().m_Socket);
                    play.Kick();
                }
                break;
            }

            case GameBase.Network.Internal.Define.LOADROLEDATA_EUDEMON:
            {
                GameBase.Network.Internal.ROLEDATE_EUDEMON eudemon = new GameBase.Network.Internal.ROLEDATE_EUDEMON();
                eudemon.Create(buff);

                TempPlayObject play = UserEngine.Instance().GetTempPlayObj(eudemon.key, eudemon.key2);
                if (play == null)
                {
                    //只是为了下断点后延迟问题解决方案
                    PlayerObject _play = UserEngine.Instance().FindPlayerObjectToPlayerId(eudemon.playerid);
                    if (_play == null)
                    {
                        Log.Instance().WriteLog("未找到玩家对象..在--ProcessDBNetMsg code:6");
                    }
                    else
                    {
                        _play.GetEudemonSystem().DB_Load(eudemon);
                        _play.GetEudemonSystem().SendAllEudemonInfo();
                    }

                    break;
                }
                else
                {
                    play.play.GetEudemonSystem().DB_Load(eudemon);
                }


                break;
            }

            case GameBase.Network.Internal.Define.LOADROLEDATA_FRIEND:
            {
                GameBase.Network.Internal.ROLEDATA_FRIEND friend = new GameBase.Network.Internal.ROLEDATA_FRIEND();
                friend.Create(buff);
                TempPlayObject play = UserEngine.Instance().GetTempPlayObj(friend.key, friend.key2);
                if (play == null)
                {
                    //只是为了下断点后延迟问题解决方案
                    PlayerObject _play = UserEngine.Instance().FindPlayerObjectToPlayerId(friend.playerid);
                    if (_play == null)
                    {
                        Log.Instance().WriteLog("未找到玩家对象..在--ProcessDBNetMsg code:7");
                    }
                    else
                    {
                        _play.GetFriendSystem().DB_Load(friend);
                        _play.GetFriendSystem().SendAllFriendInfo();
                    }

                    break;
                }
                else
                {
                    play.play.GetFriendSystem().DB_Load(friend);
                }

                break;
            }

            case GameBase.Network.Internal.Define.GUANJUEDATA:     //爵位数据
            {
                GameBase.Network.Internal.GUANJUEINFO juewei = new GameBase.Network.Internal.GUANJUEINFO();
                juewei.Create(buff);
                GuanJueManager.Instance().DB_Load(juewei);
                break;
            }

            case GameBase.Network.Internal.Define.LOADLEGION:     //军团数据
            {
                GameBase.Network.Internal.LEGIONINFO info = new GameBase.Network.Internal.LEGIONINFO();
                info.Create(buff);
                LegionManager.Instance().DB_Load(info);
                break;
            }

            case GameBase.Network.Internal.Define.CREATELEGION_RET:    //创建军团返回数据
            {
                GameBase.Network.Internal.CreateLegion_Ret info = new GameBase.Network.Internal.CreateLegion_Ret();
                info.Create(buff);
                LegionManager.Instance().CreateLegion_Ret(info);
                break;
            }

            case GameBase.Network.Internal.Define.LOADPAYRECINFO:     //充值数据
            {
                GameBase.Network.Internal.PackPayRecInfo info = new GameBase.Network.Internal.PackPayRecInfo();
                info.Creaet(buff);
                PayManager.Instance().DB_Load(info);
                break;
            }
            }
        }
 public void Create(byte[] msg)
 {
     PackIn inpack = new PackIn(msg);
     inpack.ReadUInt16();
     ownerid = inpack.ReadInt32();
     key = inpack.ReadInt32();
     key2 = inpack.ReadInt32();
     int count = inpack.ReadInt32();
     for (int i = 0; i < count; i++)
     {
         MagicInfo item = new MagicInfo();
         item.id = inpack.ReadInt32();
         item.magicid = inpack.ReadUInt32();
         item.level = inpack.ReadByte();
         item.exp = inpack.ReadUInt32();
         mListMagic.Add(item);
     }
 }
Esempio n. 7
0
 public static void LoadRoleData_Magic(GameBase.Network.Internal.RoleData_Magic info)
 {
     MySqlCommand command;
     String _key = String.Format(MysqlString.LOADROLEDATA_MAGIC, info.ownerid);
     command = new MySqlCommand(_key, MysqlConn.GetConn());
     MysqlConn.Conn_Open();
     MySqlDataReader reader = command.ExecuteReader();
     while (reader.Read())
     {
         if (!reader.HasRows) break;
         GameBase.Network.Internal.MagicInfo item = new GameBase.Network.Internal.MagicInfo();
         item.id = reader.GetInt32("id");
         item.magicid = reader.GetUInt32("magicid");
         item.level = reader.GetByte("level");
         item.exp = reader.GetUInt32("exp");
         info.mListMagic.Add(item);
     }
     MysqlConn.Conn_Close();
     command.Dispose();
 }
Esempio n. 8
0
 //载入幻兽技能数据
 public static void LoadRoleData_Eudemon_MagicInfo(GameBase.Network.Internal.ROLEDATE_EUDEMON info)
 {
     MySqlCommand command;
     for (int i = 0; i < info.list_item.Count; i++)
     {
         RoleData_Eudemon item = info.list_item[i];
         String _key = String.Format(MysqlString.LOADROLEDATA_EUDEMON_MAGIC, item.id);
         command = new MySqlCommand(_key, MysqlConn.GetConn());
         MysqlConn.Conn_Open();
         MySqlDataReader reader = command.ExecuteReader();
         while (reader.Read())
         {
             if (!reader.HasRows) break;
             GameBase.Network.Internal.MagicInfo itemex = new GameBase.Network.Internal.MagicInfo();
             itemex.id = reader.GetInt32("id");
             itemex.ownerid = reader.GetInt32("ownerid");
             itemex.magicid = reader.GetUInt32("magicid");
             itemex.exp = reader.GetUInt32("level");
             item.mListMagicInfo.Add(itemex);
         }
         MysqlConn.Conn_Close();
         command.Dispose();
     }
 }
Esempio n. 9
0
 //添加幻兽技能
 //magicid 技能id
 //magiclv 技能等级
 //exp     技能经验
 //ret  成功返回true 失败返回false
 public bool AddMagicInfo(ushort magicid, byte magiclv = 0, uint exp = 0)
 {
     GameStruct.MagicTypeInfo base_info = ConfigManager.Instance().GetMagicTypeInfo(magicid, magiclv);
     if (base_info == null) return false;
     bool bFind = false;
     for (int i = 0; i < mInfo.mListMagicInfo.Count; i++)
     {
         if (mInfo.mListMagicInfo[i].magicid == magicid)
         {
             mInfo.mListMagicInfo[i].level = magiclv;
             mInfo.mListMagicInfo[i].exp = exp;
             bFind = true;
             break;
         }
     }
     if (!bFind)
     {
         GameBase.Network.Internal.MagicInfo info = new GameBase.Network.Internal.MagicInfo();
         info.id = 0;
         info.level = magiclv;
         info.magicid = magicid;
         info.exp = exp;
         info.ownerid =(int)mInfo.id;
         mInfo.mListMagicInfo.Add(info);
     }
     NetMsg.MsgMagicInfo net_info = new NetMsg.MsgMagicInfo();
     net_info.id = this.GetTypeId();
     net_info.magicid = magicid;
     net_info.level = magiclv;
     net_info.exp = exp;
     play.SendData(net_info.GetBuffer(), true);
     return true;
 }