Beispiel #1
0
 //可以同步玩家各种属性信息- 目前只拿来同步血量 信息
 public void ShareInfo(PlayerObject obj)
 {
     for (int i = 0; i < mlistMember.Count; i++)
     {
         PlayerObject play = mlistMember[i];
         if (play.GetBaseAttr().player_id == obj.GetBaseAttr().player_id)
         {
             continue;                                                                //不发给自己
         }
         NetMsg.MsgUserAttribute msg = new NetMsg.MsgUserAttribute();
         msg.Create(null, play.GetGamePackKeyEx());
         msg.role_id = play.GetTypeId();
         msg.AddAttribute(GameStruct.UserAttribute.LIFE, obj.GetBaseAttr().life);
         msg.AddAttribute(GameStruct.UserAttribute.LIFE_MAX, obj.GetBaseAttr().life_max);
         play.SendData(msg.GetBuffer());
     }
 }
Beispiel #2
0
        //添加状态
        //nStatus 状态id
        //nTime   持续时间- 秒 0为无限时间
        //bCover  是否覆盖该状态
        public void AddStatus(int nStatus, int nTime = 0, bool bCover = true)
        {
            if (this.QueryStatus(GameStruct.RoleStatus.STATUS_DIE) != null)
            {
                return;
            }
            bool bAdd       = false;
            bool bSendState = true;

            GameStruct.RoleStatus status = null;
            for (int i = 0; i < mListStatus.Count; i++)
            {
                status = mListStatus[i];
                if (status.nStatus == nStatus)
                {
                    if (bCover)
                    {
                        status.nTime     = nTime * 1000;
                        status.nLastTick = System.Environment.TickCount;
                    }
                    else
                    {
                        status.nTime += nTime * 1000;
                    }
                    bAdd = true;
                    break;
                }
            }
            if (!bAdd)
            {
                status         = new GameStruct.RoleStatus();
                status.nStatus = nStatus;
                status.nTime   = nTime * 1000;
                mListStatus.Add(status);
            }
            int nOldEff = GetEffect();

            switch (nStatus)
            {
            case GameStruct.RoleStatus.STATUS_XPFULL:     //XP爆气-- 下降
            {
                //mi64Effect  &= ~ Define.KEEPEFFECT_XPFULL;
                //play.ChangeAttribute(GameStruct.UserAttribute.STATUS1, 64,true);
                break;
            }

            case GameStruct.RoleStatus.STATUS_XPFULL_ATTACK:            //xp爆气- 技能被单击
            {
                this.DeleteStatus(GameStruct.RoleStatus.STATUS_XPFULL); //删除xp爆气buff
                mXpTime.SetInterval(Define.XP_MAX_FULL_SECS);
                mXpTime.Update();
                mi64Effect |= Define.KEEPEFFECT_XPFULL;

                break;
            }

            case GameStruct.RoleStatus.STATUS_MOLONGSHOUHU:     //魔龙守护
            {
                play.ChangeAttribute(GameStruct.UserAttribute.MOLONGSHOUHU_STATUS, 1, true);
                ushort nMagicLv = play.GetMagicSystem().GetMagicLevel(GameStruct.MagicTypeInfo.MOLONGSHOUHU);
                GameStruct.MagicTypeInfo magicInfo = ConfigManager.Instance().GetMagicTypeInfo(GameStruct.MagicTypeInfo.MOLONGSHOUHU, (byte)nMagicLv);
                if (magicInfo != null)
                {
                    //没有实际效果-- 待修正
                    //添加buff-
                    int    nDefense = (int)magicInfo.power;
                    byte[] data1    = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                    GameBase.Network.PacketOut outpack = new GameBase.Network.PacketOut(play.GetGamePackKeyEx());
                    outpack.WriteUInt16(48);
                    outpack.WriteUInt16(1127);
                    outpack.WriteUInt32(play.GetTypeId());
                    outpack.WriteInt32(nTime);
                    outpack.WriteInt32(nDefense);
                    outpack.WriteBuff(data1);
                    play.SendData(outpack.Flush());
                }
                break;
            }

            case GameStruct.RoleStatus.STATUS_STEALTH:     //潜行
            {
                mi64Effect |= Define.KEEPEFFECT_LURKER;
                break;
            }

            case GameStruct.RoleStatus.STATUS_CRIME:     //闪蓝
            {
                mi64Effect |= Define.KEEPEFFECT_CRIME;
                break;
            }

            case GameStruct.RoleStatus.STATUS_RED:     //红名
            {
                mi64Effect |= Define.KEEPEFFECT_RED;
                break;
            }

            case GameStruct.RoleStatus.STATUS_BLOCK:     //黑名
            {
                mi64Effect |= Define.KEEPEFFECT_DEEPRED;
                break;
            }

            case GameStruct.RoleStatus.STATUS_FLY:     //雷霆万钧单独处理.要把xp满的包发下去
            {
                mi64Effect |= Define.KEEPEFFECT_FLY;

                NetMsg.MsgUserAttribute msg = new NetMsg.MsgUserAttribute();
                msg.role_id = play.GetTypeId();
                msg.Create(null, null);
                msg.AddAttribute(GameStruct.UserAttribute.STATUS, (uint)GetEffect(false));
                msg.AddAttribute(GameStruct.UserAttribute.STATUS1, (uint)GetEffect());        //这是xp满的标识


                play.BroadcastBuffer(msg.GetBuffer(), true);
                bSendState = false;
                break;
            }

            case GameStruct.RoleStatus.STATUS_HIDDEN:
            {
                mi64Effect |= Define.KEEPEFFECT_HIDDEN;
                break;
            }

            case GameStruct.RoleStatus.STATUS_HEILONGWU:
            {
                mi64Effect |= Define.KEEPEFFECT_HEILONGWU;

                break;
            }

            case GameStruct.RoleStatus.STATUS_YUANSUZHANGKONG:
            {
                //修改元素掌控状态
                play.ChangeAttribute(GameStruct.UserAttribute.YUANSUZHANGKONG, 512, true);
                //添加buff
                byte[] data1 = { 48, 0, 103, 4 };
                byte[] data2 = { 128, 81, 1, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0 };
                GameBase.Network.PacketOut outpack = new GameBase.Network.PacketOut(play.GetGamePackKeyEx());
                outpack.WriteBuff(data1);
                outpack.WriteUInt32(play.GetTypeId());
                outpack.WriteBuff(data2);
                play.SendData(outpack.Flush());
                bSendState = false;
                break;
            }

            case GameStruct.RoleStatus.STATUS_JUYANSHENGDUN:        //法师 巨岩圣盾
            {
                byte[] data1 = { 48, 0, 103, 4 };
                byte[] data2 = { 132, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0 };
                GameBase.Network.PacketOut outpack = new GameBase.Network.PacketOut(play.GetGamePackKeyEx());
                outpack.WriteBuff(data1);
                outpack.WriteUInt32(play.GetTypeId());
                outpack.WriteBuff(data2);
                play.SendData(outpack.Flush());
                bSendState = false;
                break;
            }

            case GameStruct.RoleStatus.STATUS_ANSHAXIELONG:    //亡灵巫师- 暗杀邪龙
            {
                if (mObject_CALL != null)
                {
                    mObject_CALL.ClearThis();
                }
                GameStruct.MonsterInfo monster = ConfigManager.Instance().GetMonsterInfo(Define.ANSHAXIELONG_MONSTER_ID);
                if (monster == null)
                {
                    Log.Instance().WriteLog("创建暗沙邪龙失败!!,无此怪物id!");
                    break;
                }

                int nx = play.GetCurrentX() + GameStruct.DIR._DELTA_X[play.GetDir()];
                int ny = play.GetCurrentY() + GameStruct.DIR._DELTA_Y[play.GetDir()];
                mObject_CALL = new AnShaXieLongObject(play, (short)nx, (short)ny, play.GetDir(), monster.id, monster.ai);
                play.GetGameMap().AddObject(mObject_CALL, null);
                mObject_CALL.RefreshVisibleObject();
                mObject_CALL.Alive(false);

                break;
            }

            case GameStruct.RoleStatus.STATUS_MINGGUOSHENGNV:     //冥国圣女
            {
                if (mObject_CALL != null)
                {
                    mObject_CALL.ClearThis();
                }
                GameStruct.MonsterInfo monster = ConfigManager.Instance().GetMonsterInfo(Define.MINGGUOSHENGNV_MONSTER_ID);
                if (monster == null)
                {
                    Log.Instance().WriteLog("创建冥国圣女失败!!,无此怪物id!");
                    break;
                }

                int nx = play.GetCurrentX() + GameStruct.DIR._DELTA_X[play.GetDir()];
                int ny = play.GetCurrentY() + GameStruct.DIR._DELTA_Y[play.GetDir()];
                mObject_CALL = new MingGuoShengNv(play, (short)nx, (short)ny, play.GetDir(), monster.id, monster.ai);
                play.GetGameMap().AddObject(mObject_CALL, null);
                mObject_CALL.RefreshVisibleObject();
                mObject_CALL.Alive(false);
                break;
            }

            case GameStruct.RoleStatus.STATUS_WANGNIANWULING:     //亡念巫灵
            {
                if (mObject_CALL != null)
                {
                    mObject_CALL.ClearThis();
                }
                GameStruct.MonsterInfo monster = ConfigManager.Instance().GetMonsterInfo(Define.WANGNIANWULONG_MONSTER_ID);
                if (monster == null)
                {
                    Log.Instance().WriteLog("创建亡念巫灵失败!!,无此怪物id!");
                    break;
                }

                int nx = play.GetCurrentX() + GameStruct.DIR._DELTA_X[play.GetDir()];
                int ny = play.GetCurrentY() + GameStruct.DIR._DELTA_Y[play.GetDir()];
                mObject_CALL = new WangNianWuLing(play, (short)nx, (short)ny, play.GetDir(), monster.id, monster.ai);
                play.GetGameMap().AddObject(mObject_CALL, null);
                mObject_CALL.RefreshVisibleObject();
                mObject_CALL.Alive(false);
                break;
            }

            case GameStruct.RoleStatus.STATUS_HUASHENWANGLING:
            {
                mi64EffectEx |= Define.KEEPEFFECT_HUASHENWULING;
                break;
            }

            case GameStruct.RoleStatus.STATUS_HUASHENWUSHI:
            {
                DeleteStatus(GameStruct.RoleStatus.STATUS_HUASHENWANGLING);
                break;
            }

            case GameStruct.RoleStatus.STATUS_ZHAOHUANWUHUAN:
            {
                mi64Effect |= Define.KEEPEFFECT_ZHAOHUANWUHUAN;
                break;
            }

            case GameStruct.RoleStatus.STATUS_MIXINSHU:         //血族 迷心术
            {
                mi64EffectEx |= Define.KEEPEFFECT_MIXINSHU;

                GameBase.Network.PacketOut outpack = new GameBase.Network.PacketOut(play.GetGamePackKeyEx());
                //buff
                byte[] data = { 120, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                outpack.WriteUInt16(48);
                outpack.WriteUInt16(1127);
                outpack.WriteUInt32(play.GetTypeId());
                outpack.WriteBuff(data);
                play.SendData(outpack.Flush());
                break;
            }

            case GameStruct.RoleStatus.STATUS_XUEXI:     //血族 血袭
            {
                mi64EffectEx |= Define.KEEPEFFECT_XUEXI;
                GameBase.Network.PacketOut outpack = new GameBase.Network.PacketOut(play.GetGamePackKeyEx());
                byte[] data = { 60, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                outpack.WriteUInt16(48);
                outpack.WriteUInt16(1127);
                outpack.WriteUInt32(play.GetTypeId());
                outpack.WriteBuff(data);
                play.SendData(outpack.Flush());
                break;
            }

            case GameStruct.RoleStatus.STATUS_DIE:     //死亡状态
            {
                mi64Effect |= Define.KEEPEFFECT_DIE;
                break;
            }
            }
            if (bSendState)
            {
                this.SendState();
                //    play.ChangeAttribute(state, GetEffect(state == GameStruct.UserAttribute.STATUS1),true);
            }

            //if (GetEffect() != nOldEff)
            //{
            //    play.ChangeAttribute(state, GetEffect());
            //}
        }
Beispiel #3
0
        //添加状态
        //nStatus 状态id
        //nTime   持续时间- 秒 0为无限时间
        //bCover  是否覆盖该状态
        public void AddStatus(int nStatus, int nTime = 0, bool bCover = true)
        {
            if (this.QueryStatus(GameStruct.RoleStatus.STATUS_DIE) != null)
            {
                return;
            }
            bool bAdd = false;
            bool bSendState = true;
            GameStruct.RoleStatus status = null;
            for (int i = 0; i < mListStatus.Count; i++)
            {
                status = mListStatus[i];
                if (status.nStatus == nStatus)
                {
                    if (bCover)
                    {
                        status.nTime = nTime * 1000;
                        status.nLastTick = System.Environment.TickCount;
                    }
                    else { status.nTime += nTime * 1000; }
                    bAdd = true;
                    break;
                }
            }
            if (!bAdd)
            {
                status = new GameStruct.RoleStatus();
                status.nStatus = nStatus;
                status.nTime = nTime * 1000;
                mListStatus.Add(status);
            }
            int nOldEff = GetEffect();
            switch (nStatus)
            {
                case GameStruct.RoleStatus.STATUS_XPFULL: //XP爆气-- 下降
                    {
                        //mi64Effect  &= ~ Define.KEEPEFFECT_XPFULL;
                        //play.ChangeAttribute(GameStruct.UserAttribute.STATUS1, 64,true);
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_XPFULL_ATTACK: //xp爆气- 技能被单击
                    {
                        this.DeleteStatus(GameStruct.RoleStatus.STATUS_XPFULL); //删除xp爆气buff
                        mXpTime.SetInterval(Define.XP_MAX_FULL_SECS);
                        mXpTime.Update();
                        mi64Effect |= Define.KEEPEFFECT_XPFULL;

                        break;
                    }
                case GameStruct.RoleStatus.STATUS_MOLONGSHOUHU: //魔龙守护
                    {
                        play.ChangeAttribute(GameStruct.UserAttribute.MOLONGSHOUHU_STATUS, 1,true);
                        ushort nMagicLv = play.GetMagicSystem().GetMagicLevel(GameStruct.MagicTypeInfo.MOLONGSHOUHU);
                        GameStruct.MagicTypeInfo magicInfo = ConfigManager.Instance().GetMagicTypeInfo(GameStruct.MagicTypeInfo.MOLONGSHOUHU, (byte)nMagicLv);
                        if (magicInfo != null)
                        {
                            //没有实际效果-- 待修正
                            //添加buff-
                            int nDefense = (int)magicInfo.power;
                            byte[] data1 = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            GameBase.Network.PacketOut outpack = new GameBase.Network.PacketOut(play.GetGamePackKeyEx());
                            outpack.WriteUInt16(48);
                            outpack.WriteUInt16(1127);
                            outpack.WriteUInt32(play.GetTypeId());
                            outpack.WriteInt32(nTime);
                            outpack.WriteInt32(nDefense);
                            outpack.WriteBuff(data1);
                            play.SendData(outpack.Flush());
                        }
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_STEALTH: //潜行
                    {
                        mi64Effect |= Define.KEEPEFFECT_LURKER;
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_CRIME: //闪蓝
                    {
                        mi64Effect |= Define.KEEPEFFECT_CRIME;
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_RED: //红名
                    {
                        mi64Effect |= Define.KEEPEFFECT_RED;
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_BLOCK: //黑名
                    {
                        mi64Effect |= Define.KEEPEFFECT_DEEPRED;
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_FLY: //雷霆万钧单独处理.要把xp满的包发下去
                    {
                        mi64Effect |= Define.KEEPEFFECT_FLY;

                        NetMsg.MsgUserAttribute msg = new NetMsg.MsgUserAttribute();
                        msg.role_id = play.GetTypeId();
                        msg.Create(null, null);
                        msg.AddAttribute(GameStruct.UserAttribute.STATUS, (uint)GetEffect(false));
                        msg.AddAttribute(GameStruct.UserAttribute.STATUS1, (uint)GetEffect());//这是xp满的标识

                        play.BroadcastBuffer(msg.GetBuffer(), true);
                        bSendState = false;
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_HIDDEN:
                    {
                        mi64Effect |= Define.KEEPEFFECT_HIDDEN;
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_HEILONGWU:
                    {
                        mi64Effect |= Define.KEEPEFFECT_HEILONGWU;

                        break;
                    }
                case GameStruct.RoleStatus.STATUS_YUANSUZHANGKONG:
                    {
                        //修改元素掌控状态
                        play.ChangeAttribute(GameStruct.UserAttribute.YUANSUZHANGKONG,512,true);
                       //添加buff
                        byte[] data1 = { 48, 0, 103, 4 };
                        byte[] data2 = { 128, 81, 1, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0 };
                        GameBase.Network.PacketOut outpack = new GameBase.Network.PacketOut(play.GetGamePackKeyEx());
                        outpack.WriteBuff(data1);
                        outpack.WriteUInt32(play.GetTypeId());
                        outpack.WriteBuff(data2);
                        play.SendData(outpack.Flush());
                        bSendState = false;
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_JUYANSHENGDUN:    //法师 巨岩圣盾
                    {
                        byte[] data1 = { 48, 0, 103, 4 };
                        byte[] data2 = { 132, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0 };
                        GameBase.Network.PacketOut outpack = new GameBase.Network.PacketOut(play.GetGamePackKeyEx());
                        outpack.WriteBuff(data1);
                        outpack.WriteUInt32(play.GetTypeId());
                        outpack.WriteBuff(data2);
                        play.SendData(outpack.Flush());
                        bSendState = false;
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_ANSHAXIELONG://亡灵巫师- 暗杀邪龙
                    {
                        if (mObject_CALL != null)
                        {
                            mObject_CALL.ClearThis();
                        }
                        GameStruct.MonsterInfo monster = ConfigManager.Instance().GetMonsterInfo(Define.ANSHAXIELONG_MONSTER_ID);
                        if (monster == null)
                        {
                            Log.Instance().WriteLog("创建暗沙邪龙失败!!,无此怪物id!");
                            break;
                        }

                        int nx = play.GetCurrentX()+GameStruct.DIR._DELTA_X[play.GetDir()];
                        int ny = play.GetCurrentY() + GameStruct.DIR._DELTA_Y[play.GetDir()];
                        mObject_CALL = new AnShaXieLongObject(play, (short)nx, (short)ny, play.GetDir(), monster.id, monster.ai);
                        play.GetGameMap().AddObject(mObject_CALL, null);
                        mObject_CALL.RefreshVisibleObject();
                        mObject_CALL.Alive(false);

                        break;
                    }
                case GameStruct.RoleStatus.STATUS_MINGGUOSHENGNV: //冥国圣女
                    {
                        if (mObject_CALL != null)
                        {
                            mObject_CALL.ClearThis();
                        }
                        GameStruct.MonsterInfo monster = ConfigManager.Instance().GetMonsterInfo(Define.MINGGUOSHENGNV_MONSTER_ID);
                        if (monster == null)
                        {
                            Log.Instance().WriteLog("创建冥国圣女失败!!,无此怪物id!");
                            break;
                        }

                        int nx = play.GetCurrentX() + GameStruct.DIR._DELTA_X[play.GetDir()];
                        int ny = play.GetCurrentY() + GameStruct.DIR._DELTA_Y[play.GetDir()];
                        mObject_CALL = new MingGuoShengNv(play, (short)nx, (short)ny, play.GetDir(), monster.id, monster.ai);
                        play.GetGameMap().AddObject(mObject_CALL, null);
                        mObject_CALL.RefreshVisibleObject();
                        mObject_CALL.Alive(false);
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_WANGNIANWULING: //亡念巫灵
                    {
                        if (mObject_CALL != null)
                        {
                            mObject_CALL.ClearThis();
                        }
                        GameStruct.MonsterInfo monster = ConfigManager.Instance().GetMonsterInfo(Define.WANGNIANWULONG_MONSTER_ID);
                        if (monster == null)
                        {
                            Log.Instance().WriteLog("创建亡念巫灵失败!!,无此怪物id!");
                            break;
                        }

                        int nx = play.GetCurrentX() + GameStruct.DIR._DELTA_X[play.GetDir()];
                        int ny = play.GetCurrentY() + GameStruct.DIR._DELTA_Y[play.GetDir()];
                        mObject_CALL = new WangNianWuLing(play, (short)nx, (short)ny, play.GetDir(), monster.id, monster.ai);
                        play.GetGameMap().AddObject(mObject_CALL, null);
                        mObject_CALL.RefreshVisibleObject();
                        mObject_CALL.Alive(false);
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_HUASHENWANGLING:
                    {
                        mi64EffectEx |= Define.KEEPEFFECT_HUASHENWULING;
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_HUASHENWUSHI:
                    {
                        DeleteStatus(GameStruct.RoleStatus.STATUS_HUASHENWANGLING);
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_ZHAOHUANWUHUAN:
                    {
                        mi64Effect |= Define.KEEPEFFECT_ZHAOHUANWUHUAN;
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_MIXINSHU:     //血族 迷心术
                    {
                        mi64EffectEx |= Define.KEEPEFFECT_MIXINSHU;

                        GameBase.Network.PacketOut outpack = new GameBase.Network.PacketOut(play.GetGamePackKeyEx());
                        //buff
                        byte[] data = { 120, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                        outpack.WriteUInt16(48);
                        outpack.WriteUInt16(1127);
                        outpack.WriteUInt32(play.GetTypeId());
                        outpack.WriteBuff(data);
                        play.SendData(outpack.Flush());
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_XUEXI: //血族 血袭
                    {
                        mi64EffectEx |= Define.KEEPEFFECT_XUEXI;
                        GameBase.Network.PacketOut outpack = new GameBase.Network.PacketOut(play.GetGamePackKeyEx());
                        byte[] data = { 60, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                        outpack.WriteUInt16(48);
                        outpack.WriteUInt16(1127);
                        outpack.WriteUInt32(play.GetTypeId());
                        outpack.WriteBuff(data);
                        play.SendData(outpack.Flush());
                        break;
                    }
                case GameStruct.RoleStatus.STATUS_DIE: //死亡状态
                    {
                        mi64Effect |= Define.KEEPEFFECT_DIE;
                        break;
                    }

            }
            if (bSendState)
            {
                this.SendState();
               //    play.ChangeAttribute(state, GetEffect(state == GameStruct.UserAttribute.STATUS1),true);
            }

            //if (GetEffect() != nOldEff)
            //{
            //    play.ChangeAttribute(state, GetEffect());
            //}
        }
Beispiel #4
0
 //可以同步玩家各种属性信息- 目前只拿来同步血量 信息
 public void ShareInfo(PlayerObject obj)
 {
     for (int i = 0; i < mlistMember.Count; i++)
       {
           PlayerObject play = mlistMember[i];
           if (play.GetBaseAttr().player_id == obj.GetBaseAttr().player_id) continue; //不发给自己
           NetMsg.MsgUserAttribute msg = new NetMsg.MsgUserAttribute();
           msg.Create(null, play.GetGamePackKeyEx());
           msg.role_id = play.GetTypeId();
           msg.AddAttribute(GameStruct.UserAttribute.LIFE,obj.GetBaseAttr().life);
           msg.AddAttribute(GameStruct.UserAttribute.LIFE_MAX, obj.GetBaseAttr().life_max);
           play.SendData(msg.GetBuffer());
       }
 }
Beispiel #5
0
        private const String XPFULL = "xpfull"; //xp满 参数: xp值

        #endregion Fields

        #region Methods

        public static void ExecuteGMCommand(String str, PlayerObject play)
        {
            try
            {
                String[] option = str.Split(' ');
                String command = option[0];
                command = command.Substring(1);
                command = command.ToLower();
                switch (command)
                {
                    case AWARDITEM:
                        {
                            uint itemid;
                            byte postion = NetMsg.MsgItemInfo.ITEMPOSITION_BACKPACK; //默认背包
                            if (option.Length >= 2)
                            {
                                itemid = Convert.ToUInt32(option[1]);
                                if (option.Length > 2) postion = Convert.ToByte(option[2]);
                                play.GetItemSystem().AwardItem(itemid, postion);
                            }

                            break;
                        }
                    case ADDMAGIC:
                        {
                            uint magicid;
                            byte level = 0;
                            uint exp = 0;
                            if (option.Length >= 2)
                            {
                                magicid = Convert.ToUInt32(option[1]);
                                if (option.Length >= 3) level = Convert.ToByte(option[2]);
                                if (option.Length >= 4) exp = Convert.ToUInt32(option[3]);
                                play.GetMagicSystem().AddMagicInfo(magicid, level, exp);
                            }
                            break;
                        }
                    case XPFULL:
                        {
                            //byte[] data1 = { 20, 0, 249, 3, 84, 66, 15, 0, 1, 0, 0, 0, 28, 0, 0, 0, 30, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data1, data1.Length);
                            //play.SendData(data1);

                            int exp = 100;
                            if (option.Length >= 2)
                            {
                                exp = Convert.ToInt32(option[1]);
                            }
                            play.ChangeAttribute(GameStruct.UserAttribute.XP, exp);
                            //NetMsg.MsgUserAttribute attr = new NetMsg.MsgUserAttribute();
                            //attr.Create(null, play.GetGamePackKeyEx());
                            //attr.AddAttribute(GameStruct.UserAttribute.XP, (uint)exp);
                            //attr.role_id = play.GetTypeId();
                            //play.SendData(attr.GetBuffer());
                            break;
                        }
                    case MOB:
                        {
                            if (option.Length < 2) break;

                            uint monsterid = Convert.ToUInt32(option[1]);
                            GameStruct.MonsterInfo info = ConfigManager.Instance().GetMonsterInfo(monsterid);
                            if (info == null) break;
                            MapServer.MonsterObject obj = new MapServer.MonsterObject(monsterid, info.ai,play.GetCurrentX(),play.GetCurrentY());

                            play.GetGameMap().AddObject(obj);
                            obj.Walk(GameStruct.DIR.MAX_DIRSIZE);

                            //play.SendMonsterInfo(obj);
                            //GameStruct.Action action = new GameStruct.Action(GameStruct.Action.MOVE, null);
                            //play.PushAction(action);
                            break;
                        }
                    case ADDGOLD:
                        {
                            if (option.Length < 2) break;
                            byte btype = Convert.ToByte(option[1]);
                            int count = Convert.ToInt32(option[2]);
                            if (btype == 1)//金币
                            {
                                play.ChangeAttribute(GameStruct.UserAttribute.GOLD, count);
                            }
                            else if (btype == 2)
                            {
                                play.ChangeAttribute(GameStruct.UserAttribute.GAMEGOLD, count);
                            }
                            break;
                        }
                    case FOLLOW:
                        {
                            if (option.Length < 2) break;
                            String name = option[1];
                            PlayerObject target = UserEngine.Instance().FindPlayerObjectToName(name);
                            if (target != null)
                            {
                                //在同一张地图上
                                if (target.GetGameMap().GetID() == play.GetGameMap().GetID())
                                {
                                    play.ScroolRandom(target.GetCurrentX(), target.GetCurrentY());
                                }
                                else
                                {
                                    play.ChangeMap(target.GetGameMap().GetID(), target.GetCurrentX(), target.GetCurrentY());
                                }
                            }
                            else
                            {
                                play.LeftNotice("玩家不存在,无法传送到玩家点。");
                            }
                            break;
                        }
                    case LEVEL:
                        {
                            if (option.Length < 2) break;
                            int level = Convert.ToInt32(option[1]);
                            play.ChangeAttribute(GameStruct.UserAttribute.LEVEL, level);
                            break;
                        }
                    case RELOAD:
                        {
                            String sPath = option[1];
                            ScripteManager.Instance().LoadScripteFile(sPath, true);
                            break;
                        }
                    case RELOADALL:
                        {
                            ConfigManager.Instance().ReloadAllScripte();
                            play.ChatNotice("重加载脚本成功!");
                            break;
                        }
                    case CHANGEMAP:
                        {
                            uint mapid = Convert.ToUInt32(option[1]);
                            GameMap map = MapManager.Instance().GetGameMapToID(mapid);
                            if (map == null) break;
                            short x = (short)map.GetMapInfo().recallx;
                            short y = (short)map.GetMapInfo().recally;
                            if (option.Length >= 4)
                            {
                                x = Convert.ToInt16(option[2]);
                                y = Convert.ToInt16(option[3]);
                            }
                            play.ChangeMap(mapid, x, y);
                            break;

                        }
                    case ROBOTACTION:
                        {
                            uint action_id = Convert.ToUInt32(option[1]);
                            play.PlayRobotAction(action_id);
                            break;
                        }
                    case KILLPLAY:
                        {
                            String name = option[1];
                            PlayerObject obj_play = UserEngine.Instance().FindPlayerObjectToName(option[1]);
                            if (obj_play != null)
                            {
                                obj_play.ExitGame();
                                play.MsgBox("踢出成功!");
                            }
                            else play.MsgBox("踢出失败,未找到玩家对象!");
                            break;
                        }
                    case "test":
                        {
                            //测试更改幻兽信息
                            int type = Convert.ToInt32(option[1]);
                            int value = Convert.ToInt32(option[2]);
                            //PacketOut outpack = new PacketOut(play.GetGamePackKeyEx());
                            //byte[] buff = {24,0,245,7,1,0,0,0,208,175,166,119,1,0,0,0};
                            //outpack.WriteBuff(buff);
                            //outpack.WriteInt32(type);
                            //outpack.WriteInt32(value);
                            //play.SendData(outpack.Flush());
                            PacketOut outpack = new PacketOut(play.GetGamePackKeyEx());

                            outpack.WriteUInt16(176);
                            outpack.WriteUInt16(1102);
                            outpack.WriteInt32(2005);
                            outpack.WriteByte(0);
                            outpack.WriteByte(10);
                            outpack.WriteInt16(0);
                            outpack.WriteInt32(0);
                            outpack.WriteUInt32(play.GetTypeId());
                            outpack.WriteInt32((int)1);
                            outpack.WriteUInt32(656);

                            outpack.WriteUInt32(420171);
                            //当前耐久度
                            outpack.WriteUInt16(1000);
                            //最大耐久度
                            outpack.WriteUInt16(9000);

                            byte[] data = new byte[72];
                            data[type] = (byte)value;
                            outpack.WriteBuff(data);
                            GameStruct.ItemTypeInfo baseitem = MapServer.ConfigManager.Instance().GetItemTypeInfo(420170);

                            if (baseitem != null)
                            {
                                byte[] namebyte = Coding.GetDefauleCoding().GetBytes(baseitem.name);
                                outpack.WriteBuff(namebyte);
                                data = new byte[68 - namebyte.Length];
                                outpack.WriteBuff(data);
                            }
                            else
                            {
                                data = new byte[68];
                                outpack.WriteBuff(data);
                            }
                            play.SendData(outpack.Flush());

                            // Log.Instance().WriteLog(GamePacketKeyEx.byteToText(outpack.GetNormalBuff()));

                            break;
                        }
                    case TESTCOMBO:
                        {
                            Program._Head = Convert.ToByte(option[1]);
                            Program._Tail = Convert.ToByte(option[2]);
                            break;
                        }
                    case CHANGELOOKFACE:
                        {
                            int look = Convert.ToInt32(option[1]);
                            play.ChangeAttribute(GameStruct.UserAttribute.LOOKFACE, look);
                            break;
                        }
                    case OTHERROLE:
                        {

                            //军团职位

                            // 200 普通团员
                            // 1000 军团长
                            // 690 指挥官
                            //680 荣誉指挥官

                            //收到网络协议:长度:185协议号:1014

                            //{189,0,246,3,217,168,113,0,17,152,2,0,17,152,2,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,17,0,0,42,0,2,0,132,66,6,0,0,0,0,0,0,0,0,0,59,1,217,1,161,0,0,0,6,5,0,0,100,0,0,0,130,20,0,0,0,7,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,130,2,0,0,0,0,0,1,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,0,1,0,0,0,250,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,8,179,224,215,211,196,167,207,192,0,0,0}
                            short legion_pos = Convert.ToInt16(option[1]);
                            PacketOut outpack = new PacketOut(play.GetGamePackKeyEx());
                            byte[] data11 = { 185, 0, 246, 3, 200, 16, 24, 0, 209, 251, 1, 0, 209, 251, 1, 0, 0, 0, 0, 0,
                                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                              0, 0, 0, 117, 1, 0, 0, 64, 234, 2, 0, 244, 83, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                              214, 0, 138, 0, 119, 0, 0, 0, 3, 5, 0, 0, 100, 0, 0, 0, 125, 70, 0, 0, 0, 5, 0,
                                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1/*军团头衔*/, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};// /*军团职位*//*178, 2*/,0/* 1*/,
                            byte[] data2 = {          0, 0, 0, 0, 0, /*1, 16*/0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                              0, 0, 74, 0, 255, 8, 0, 0, 117, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                              0, 0, 0, 0, 0, 0, 1, 4, 210, 193, 183, 227, 0, 0, 0 };
                            outpack.WriteBuff(data11);
                            outpack.WriteInt16(legion_pos);
                            outpack.WriteBuff(data2);
                            play.SendData(outpack.Flush());

                            //byte[] data11 = { 185, 0, 246, 3, 200, 16, 24, 0, 209, 251, 1, 0, 209, 251, 1, 0, 0, 0, 0, 0,
                            //                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                            //                    0, 0, 0, 117, 1, 0, 0, 64, 234, 2, 0, 244, 83, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                            //                    214, 0, 138, 0, 119, 0, 0, 0, 3, 5, 0, 0, 100, 0, 0, 0, 125, 70, 0, 0, 0, 5, 0,
                            //                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1/*军团头衔*/, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,3 /*军团职位*//*178, 2*/,0/* 1*/,
                            //                    0, 0, 0, 0, 0, /*1, 16*/0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                            //                    0, 0, 74, 0, 255, 8, 0, 0, 117, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                            //                    0, 0, 0, 0, 0, 0, 1, 4, 210, 193, 183, 227, 0, 0, 0 };
                            // play.GetGamePackKeyEx().EncodePacket(ref data11, data11.Length);
                            // play.SendData(data11);
                            //收到网络协议:长度:28协议号:2036

                            //byte[] data1 = {28,0,244,7,109,0,5,0,84,66,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
                            //         play.GetGamePackKeyEx().EncodePacket(ref data1, data1.Length);
                            //          play.SendData(data1);
                            //收到网络协议:长度:16协议号:1012

                            //byte[] data12 = {16,0,244,3,212,21,24,0,0,0,0,0,0,0,0,0};
                            //         play.GetGamePackKeyEx().EncodePacket(ref data12, data12.Length);
                            //          play.SendData(data12);
                            //收到网络协议:长度:27协议号:1015

                            byte[] data13 = { 27, 0, 247, 3, 117, 1, 0, 0, 3, 0, 1, 14, 169, 89, 211, 200, 207, 170, 161, 239, 180, 180, 187, 212, 187, 205, 0 };
                            play.GetGamePackKeyEx().EncodePacket(ref data13, data13.Length);
                            play.SendData(data13);

                            //收到网络协议:长度:16协议号:2036

                            //                                        byte[] data14 = {16,0,244,7,199,0,2,0,84,66,15,0,40,0,0,0};
                            //                         play.GetGamePackKeyEx().EncodePacket(ref data14, data14.Length);
                            //                          play.SendData(data14);
                            ////收到网络协议:长度:16协议号:1034

                            //byte[] data15 = { 16, 0, 10, 4, 2, 0, 1, 0, 200, 16, 24, 0, 206, 0, 130, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data15, data15.Length);
                            //play.SendData(data15);

                            //收到网络协议:长度:16协议号:1034
                            ////
                            //                          byte[] data11 = { 16, 0, 10, 4, 2, 0, 1, 0, 200, 16, 24, 0, 224, 0, 135, 0 };
                            //                          play.GetGamePackKeyEx().EncodePacket(ref data11, data11.Length);
                            //                          play.SendData(data11);
                            //                          byte[] data1 = {187,0,246,3,58,255,230,0,17,152,2,0,17,152,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,2,0,0,18,0,2,0,247,65,6,0,0,0,0,0,0,0,0

                            //,0,243,0,249,0,101,0,0,0,4,5,0,0,100,0,0,0,112,20,0,0,0,5,0,5,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,200,0,3,0,0,0,0,0,1,21,0,0,0,0,0,0,0,0,0,0,0,0,0,

                            //0,0,0,0,0,0,0,0,0,91,0,127,4,0,0,243,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,97,118,49,51,49,52,0,0,0};
                            // byte pos = Convert.ToByte(option[1]);
                            // byte value = Convert.ToByte(option[2]);
                            // byte[] data2 = {187,0,246,3,58,255,230,0,17,152,2,0,17,152,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,243,2,0,0,18,0,2,0,247,65,6,0,0,0,0,0,0,0,0,0,243,0,249,0,101,0,0,0,4,5,0,0,100,0,0,0,112,20};
                            // byte[] data3 = new byte[90];
                            // data3[pos] = value;
                            // byte[] data4 = { 1, 6, 97, 118, 49, 51, 49, 52, 0, 0, 0 };
                            // PacketOut outpack = new PacketOut(play.GetGamePackKeyEx());
                            // outpack.WriteBuff(data2);
                            // outpack.WriteBuff(data3);
                            // outpack.WriteBuff(data4);
                            //// play.GetGamePackKeyEx().EncodePacket(ref data1, data1.Length);
                            // play.SendData(outpack.Flush());

                            //byte[] data2 = { 28, 0, 244, 7, 109, 0, 5, 0, 58, 255, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data2, data2.Length);
                            //play.SendData(data2);

                            //byte[] data3 = { 20, 0, 249, 3, 58, 255, 230, 0, 1, 0, 0, 0, 36, 0, 0, 0, 0, 4, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data3, data3.Length);
                            //play.SendData(data3);

                            ////军团信息
                            //byte[] data4 = { 20, 0, 247, 3, 243, 2, 0, 0, 3, 0, 1, 7, 65, 198, 172, 190, 252, 205, 197, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data4, data4.Length);
                            //play.SendData(data4);

                            //byte[] data5 = { 28, 0, 242, 3, 174, 95, 70, 0, 58, 255, 230, 0, 243, 0, 249, 0, 4, 0, 0, 0, 100, 0, 0, 0, 58, 37, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data5, data5.Length);
                            //play.SendData(data5);

                            break;
                        }

                    case "qicheng":
                        {
                            uint rid_id = Convert.ToUInt32(option[1]);
                            //byte[] data = { 36, 0, 244, 7, 209, 0, 7, 0 };
                            //byte[] data1 = { 226, 200, 184, 119, 45, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0 };
                            //PacketOut outpack = new PacketOut(play.GetGamePackKeyEx());
                            //outpack.WriteBuff(data);
                            //outpack.WriteUInt32(play.GetTypeId());
                            //outpack.WriteUInt32(rid_id);
                            //outpack.WriteBuff(data1);

                            //play.SendData(outpack.Flush());
                            play.TakeMount(0,rid_id);
                            break;
                        }
                    case "下马":
                        {
                            play.TakeOffMount(0);
                            break;
                        }
                    case CALLSCRIPT:
                        {
                            uint scripte_id = Convert.ToUInt32(option[1]);
                            ScripteManager.Instance().ExecuteAction(scripte_id, play);
                            break;
                        }
                    case "魔龙守护":
                        {

                            //收到网络协议:长度:40协议号:1022
                            //byte[] data2 = { 40, 0, 254, 3, 0, 0, 0, 0, 84, 66, 15, 0, 0, 0, 0, 0, 67, 2, 56, 1, 21, 0, 0, 0, 105, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data2, data2.Length);
                            //play.SendData(data2);
                            ////收到网络协议:长度:116协议号:1105
                            //byte[] data3 = { 116, 0, 81, 4, 84, 66, 15, 0, 67, 2, 56, 1, 105, 20, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 66, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 200, 184, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data3, data3.Length);
                            //play.SendData(data3);
                            ////收到网络协议:长度:20协议号:1017
                            byte[] data7 = { 20, 0, 249, 3, 84, 66, 15, 0, 1, 0, 0, 0, 99, 0, 0, 0, 1, 0, 0, 0 };

                            play.GetGamePackKeyEx().EncodePacket(ref data7, data7.Length);
                            play.SendData(data7);
                            ////收到网络协议:长度:48协议号:1127
                            //8, 7,0,0
                            byte[] data4 = { 48, 0, 103, 4, 84, 66, 15, 0, 8, 7, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            play.GetGamePackKeyEx().EncodePacket(ref data4, data4.Length);
                            play.SendData(data4);
                            ////收到网络协议:长度:48协议号:1127
                            //byte[] data5 = { 48, 0, 103, 4, 226, 200, 184, 119, 8, 7, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data5, data5.Length);
                            //play.SendData(data5);
                            ////收到网络协议:长度:16协议号:1104
                            //byte[] data6 = { 16, 0, 80, 4, 84, 66, 15, 0, 114, 0, 0, 0, 105, 20, 1, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data6, data6.Length);
                            //play.SendData(data6);

                            break;
                        }
                    case TESTDIE: //测试死亡
                        {

                            //血量清零
                            //byte[] data1 = { 20, 0, 249, 3, 84, 66, 15, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data1, data1.Length);
                            //play.SendData(data1);
                            ////收到网络协议:长度:40协议号:1022
                            //                        byte[] data2 = { 40, 0, 254, 3, 0, 0, 0, 0, 200, 105, 7, 0, 84, 66, 15, 0, 47, 3, 17, 4, 2, 0, 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            //                                play.GetGamePackKeyEx().EncodePacket(ref data2, data2.Length);
                            //                        play.SendData(data2);
                            ////收到网络协议:长度:40协议号:1022
                            //参数
                            //time  0, 0, 0, 0
                            //怪物id 200, 105, 7, 0
                            //角色id 84, 66, 15, 0
                            //x 50, 3
                            //y 17, 4
                            //标记 14
                            byte[] data3 = { 40, 0, 254, 3, 0, 0, 0, 0, 200, 105, 7, 0, 84, 66, 15, 0, 50, 3, 17, 4, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            play.GetGamePackKeyEx().EncodePacket(ref data3, data3.Length);
                            play.SendData(data3);
                            //收到网络协议:长度:20协议号:1017 --
                            //                        byte[] data4 = { 20, 0, 249, 3, 84, 66, 15, 0, 1, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0 };
                            //         play.GetGamePackKeyEx().EncodePacket(ref data4, data4.Length);
                            //                        play.SendData(data4);
                            ////收到网络协议:长度:20协议号:1017
                            //                        byte[] data5 = { 20, 0, 249, 3, 84, 66, 15, 0, 1, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data5, data5.Length);
                            //play.SendData(data5);
                            //收到网络协议:长度:32协议号:1101

                            //byte[] data6 = { 32, 0, 77, 4, 248, 149, 1, 0, 204, 165, 16, 0, 50, 3, 17, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data6, data6.Length);
                            //play.SendData(data6);
                            ////收到网络协议:长度:20协议号:1017
                            //byte[] data7 = { 20, 0, 249, 3, 84, 66, 15, 0, 1, 0, 0, 0, 4, 0, 0, 0, 137, 172, 15, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data7, data7.Length);
                            //play.SendData(data7);
                            ////收到网络协议:长度:67协议号:1004
                            //byte[] data8 = { 67, 0, 236, 3, 0, 0, 255, 0, 213, 7, 0, 0, 173, 8, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 4, 6, 83, 89, 83, 84, 69, 77, 8, 210, 176, 177, 200, 186, 243, 204, 236, 0, 21, 196, 227, 210, 197, 202, 167, 193, 203, 50, 50, 52, 50, 54, 195, 182, 189, 240, 177, 210, 161, 163, 0, 0, 0 };

                            //play.GetGamePackKeyEx().EncodePacket(ref data8, data8.Length);
                            //play.SendData(data8);
                            //                          //收到网络协议:长度:16协议号:1012
                            //byte[] data9 = { 16, 0, 244, 3, 84, 66, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data9, data9.Length);
                            //play.SendData(data9);

                            // byte[] data2 = {  20, 0, 249, 3, 84, 66, 15, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} ;
                            // play.GetGamePackKeyEx().EncodePacket(ref data2, data2.Length);
                            // play.SendData(data2);

                            // byte[] data1 = { 20, 0, 249, 3, 84, 66, 15, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            // play.GetGamePackKeyEx().EncodePacket(ref data1, data1.Length);
                            // play.SendData(data1);

                            // byte[] data3 = {40,0,254,3,0,0,0,0,24,87,7,0,76,152,15,0,228,3,214,1,2,0,0,0,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
                            // play.GetGamePackKeyEx().EncodePacket(ref data3, data3.Length);
                            // play.SendData(data3);

                            // byte[] data4 = {40,0,254,3,0,0,0,0,24,87,7,0,76,152,15,0,225,3,214,1,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
                            // play.GetGamePackKeyEx().EncodePacket(ref data4, data4.Length);
                            // play.SendData(data4);
                            // byte[] data5= {20,0,249,3, 66, 15, 0, 1,1,0,0,0,28,0,0,0,0,0,0,0};
                            // play.GetGamePackKeyEx().EncodePacket(ref data5, data5.Length);
                            // play.SendData(data5);
                            // byte[] data6 = { 20, 0, 249, 3, 66, 15, 0, 1, 1, 0, 0, 0, 26, 0, 0, 0, 2, 0, 0, 0 };
                            // play.GetGamePackKeyEx().EncodePacket(ref data6, data6.Length);
                            // play.SendData(data6);
                            // byte[] data7 = {32,0,77,4,48,101,1,0,204,165,16,0,225,3,214,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0};
                            // play.GetGamePackKeyEx().EncodePacket(ref data7, data7.Length);
                            // play.SendData(data7);
                            //byte[] data8 = {16,0,244,3, 66, 15, 0, 1,0,0,0,0,0,0,0,0};
                            //play.GetGamePackKeyEx().EncodePacket(ref data8, data8.Length);
                            //play.SendData(data8);
                            byte[] data = { 28, 0, 249, 3, 84, 66, 15, 0, 2, 0, 0, 0, 26, 0, 0, 0, 6, 0, 0, 0, 12, 0, 0, 0, 33, 92, 108, 58 };
                            play.GetGamePackKeyEx().EncodePacket(ref data, data.Length);
                            play.SendData(data);
                            break;
                        }
                    case "引诱":
                        {

                            NetMsg.MsgMonsterMagicInjuredInfo injuredInfo = new NetMsg.MsgMonsterMagicInjuredInfo();
                            injuredInfo.tag = 21;
                            //   public int time;                //时间
                            //public uint roleid;             //角色id
                            //public uint monsterid;          //怪物id
                            //public short role_x;           //角色x
                            //public short role_y;           //角色y
                            //public uint tag;                 //标记
                            //public ushort magicid;          //技能id
                            //public ushort magiclv;      //技能等级
                            //public uint injuredvalue;       //攻击伤害值
                            //public int[] param;           //未知参数
                            // 收到网络协议:长度:20协议号:1017
                            //{20,0,249,3,76,152,15,0,1,0,0,0,9,0,0,0,97,0,0,0}
                            //收到网络协议:长度:40协议号:1022
                            byte[] data1 = { 40, 0, 254, 3, 0, 0, 0, 0, 84, 66, 15, 0, 84, 66, 15, 0, 63, 3, 7, 4, 21, 0, 0, 0, 235, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            play.GetGamePackKeyEx().EncodePacket(ref data1, data1.Length);
                            play.SendData(data1);
                            //收到网络协议:长度:88协议号:1105
                            byte[] data2 = { 88, 0, 81, 4, 84, 66, 15, 0, 84, 66, 15, 0, 235, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 66, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            play.GetGamePackKeyEx().EncodePacket(ref data2, data2.Length);
                            play.SendData(data2);
                            //收到网络协议:长度:16协议号:1104
                            //                            byte[] data3 = { 16, 0, 80, 4, 84, 66, 15, 0, 83, 0, 0, 0, 235, 3, 1, 0 };
                            //                                           play.GetGamePackKeyEx().EncodePacket(ref data3, data3.Length);
                            //                            play.SendData(data3);
                            ////收到网络协议:长度:16协议号:1012
                            //                            byte[] data4 = { 16, 0, 244, 3, 84, 66, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            //                                                       play.GetGamePackKeyEx().EncodePacket(ref data4, data4.Length);
                            //                            play.SendData(data4);
                            //收到网络协议:长度:20协议号:1017

                            //byte[] data5 = { 20, 0, 249, 3, 76, 152, 15, 0, 1, 0, 0, 0, 28, 0, 0, 0, 30, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data5, data5.Length);
                            //play.SendData(data5);
                            break;
                        }
                    case "骑士团守护":
                        {
                            //收到网络协议:长度:40协议号:1022
                            byte[] data1 = { 40, 0, 254, 3, 0, 0, 0, 0, 84, 66, 15, 0, 0, 0, 0, 0, 63, 2, 56, 1, 21, 0, 0, 0, 91, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            play.GetGamePackKeyEx().EncodePacket(ref data1, data1.Length);
                            play.SendData(data1);
                            //收到网络协议:长度:172协议号:1105
                            byte[] data10 = { 172, 0, 81, 4, 84, 66, 15, 0, 63, 2, 56, 1, 91, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 180, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 180, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 180, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 180, 11, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            play.GetGamePackKeyEx().EncodePacket(ref data10, data10.Length);
                            play.SendData(data10);

                            //收到网络协议:长度:81协议号:2069
                            //byte[] data2 = { 81, 0, 21, 8, 90, 180, 11, 0, 84, 66, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 5, 0, 0, 63, 2, 63, 1, 0, 0, 125, 0, 43, 42, 0, 0, 80, 159, 4, 0, 80, 159, 4, 0, 1, 0, 100, 0, 1, 4, 210, 193, 183, 227, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data2, data2.Length);
                            //play.SendData(data2);
                            //收到网络协议:长度:28协议号:1010
                            //byte[] data3 = { 28, 0, 242, 3, 6, 140, 47, 86, 90, 180, 11, 0, 63, 2, 63, 1, 1, 0, 0, 0, 43, 42, 0, 0, 115, 37, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data3, data3.Length);
                            //play.SendData(data3);
                            //收到网络协议:长度:81协议号:2069
                            //byte[] data4 = { 81, 0, 21, 8, 91, 180, 11, 0, 84, 66, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 5, 0, 0, 55, 2, 51, 1, 0, 0, 125, 0, 43, 42, 0, 0, 80, 159, 4, 0, 80, 159, 4, 0, 2, 0, 100, 0, 1, 4, 210, 193, 183, 227, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data4, data4.Length);
                            //play.SendData(data4);
                            //收到网络协议:长度:28协议号:1010
                            //byte[] data5 = { 28, 0, 242, 3, 6, 140, 47, 86, 91, 180, 11, 0, 55, 2, 51, 1, 2, 0, 0, 0, 43, 42, 0, 0, 115, 37, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data5, data5.Length);
                            //play.SendData(data5);
                            //收到网络协议:长度:81协议号:2069
                            //byte[] data6 = { 81, 0, 21, 8, 92, 180, 11, 0, 84, 66, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 5, 0, 0, 67, 2, 51, 1, 0, 0, 125, 0, 43, 42, 0, 0, 80, 159, 4, 0, 80, 159, 4, 0, 5, 0, 100, 0, 1, 4, 210, 193, 183, 227, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data6, data6.Length);
                            //play.SendData(data6);
                            //收到网络协议:长度:28协议号:1010
                            //byte[] data7 = { 28, 0, 242, 3, 6, 140, 47, 86, 92, 180, 11, 0, 67, 2, 51, 1, 5, 0, 0, 0, 43, 42, 0, 0, 115, 37, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data7, data7.Length);
                            //play.SendData(data7);
                            //收到网络协议:长度:81协议号:2069
                            //byte[] data8 = { 81, 0, 21, 8, 93, 180, 11, 0, 84, 66, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 5, 0, 0, 71, 2, 59, 1, 0, 0, 125, 0, 43, 42, 0, 0, 80, 159, 4, 0, 80, 159, 4, 0, 6, 0, 100, 0, 1, 4, 210, 193, 183, 227, 0, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data8, data8.Length);
                            //play.SendData(data8);
                            //收到网络协议:长度:28协议号:1010
                            //byte[] data9 = { 28, 0, 242, 3, 6, 140, 47, 86, 93, 180, 11, 0, 71, 2, 59, 1, 6, 0, 0, 0, 43, 42, 0, 0, 115, 37, 0, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data9, data9.Length);
                            //play.SendData(data9);

                            //收到网络协议:长度:32协议号:1101 //地面持续特效
                            //176, 9, 13, 0 时间戳
                            // 176, 23, 0, 0 特效id
                            //63, 2 x坐标
                            //55,1 y坐标

                            byte[] data11 = { 32, 0, 77, 4, 176, 9, 13, 0, 176, 23, 0, 0, 63, 2, 55, 1, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0 };
                            play.GetGamePackKeyEx().EncodePacket(ref data11, data11.Length);
                            play.SendData(data11);
                            ////收到网络协议:长度:16协议号:1104
                            //byte[] data12 = { 16, 0, 80, 4, 84, 66, 15, 0, 89, 0, 0, 0, 91, 20, 1, 0 };
                            //play.GetGamePackKeyEx().EncodePacket(ref data12, data12.Length);
                            //play.SendData(data12);
                            break;
                        }
                    case "清除特效":
                        {
                            byte[] data11 = { 32, 0, 77, 4, 176, 9, 13, 0, 176, 23, 0, 0, 63, 2, 55, 1, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0 };
                            play.GetGamePackKeyEx().EncodePacket(ref data11, data11.Length);
                            play.SendData(data11);
                            break;
                        }
                    case "下雪":
                        {

                           // 收到网络协议:长度:28协议号:1010
            //        byte[] data1 = {28,0,242,3,232,3,0,0,76,152,15,0,75,1,155,1,0,0,0,0,232,3,0,0,63,37,0,0};
            //                                     play.GetGamePackKeyEx().EncodePacket(ref data1, data1.Length);
            //                            play.SendData(data1);
            ////收到网络协议:长度:28协议号:1010
            //                            byte[] data2 = { 28, 0, 242, 3, 52, 159, 49, 86, 76, 152, 15, 0, 75, 1, 155, 1, 0, 0, 0, 0, 255, 255, 255, 255, 95, 37, 0, 0 };
            //                            play.GetGamePackKeyEx().EncodePacket(ref data2, data2.Length);
            //                            play.SendData(data2);
            //收到网络协议:长度:20协议号:1110
                            //地图id
                            //地图id
                            //类型

                        byte[] data3={20,0,86,4,232,3,0,0,232,3,0,0,0,0,32,0,128,0,18,0};
                              play.GetGamePackKeyEx().EncodePacket(ref data3, data3.Length);
                            play.SendData(data3);
                            break;
                        }
                    case "元素掌控":
                        {
                     //       收到网络协议:长度:40协议号:1022
                            byte[] data1 = { 40, 0, 254, 3, 186, 192, 18, 1, 84, 66, 15, 0, 0, 0, 0, 0, 93, 1, 179, 1, 21, 0, 0, 0, 180, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                               play.GetGamePackKeyEx().EncodePacket(ref data1, data1.Length);
                            play.SendData(data1);
            //收到网络协议:长度:20协议号:1017
                            byte[] data2 = { 20, 0, 249, 3, 84, 66, 15, 0, 1, 0, 0, 0, 101, 0, 0, 0, 0, 2, 0, 0 };
                            play.GetGamePackKeyEx().EncodePacket(ref data2, data2.Length);
                            play.SendData(data2);
            //收到网络协议:长度:48协议号:1127
                            byte[] data3 = { 48, 0, 103, 4, 84, 66, 15, 0, 128, 81, 1, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0 };
                            play.GetGamePackKeyEx().EncodePacket(ref data3, data3.Length);
                            play.SendData(data3);
                            //收到网络协议:长度:88协议号:1105
                            byte[] data4 = { 88, 0, 81, 4, 84, 66, 15, 0, 0, 0, 0, 0, 180, 20, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
            play.GetGamePackKeyEx().EncodePacket(ref data4, data4.Length);
            play.SendData(data4);

            byte[] data5 = { 20, 0, 249, 3, 84, 66, 15, 0, 1, 0, 0, 0, 107, 0, 0, 0, 3, 0, 0, 0 };
            play.GetGamePackKeyEx().EncodePacket(ref data5, data5.Length);
            play.SendData(data5);
                            break;
                        }
                    case WUDI:
                        {
                            if (play.GetTimerSystem().QueryStatus(GameStruct.RoleStatus.STATUS_WUDI) != null)
                            {
                                play.GetTimerSystem().DeleteStatus(GameStruct.RoleStatus.STATUS_WUDI);
                                play.LeftNotice("角色已取消无敌!!!");
                            }
                            else {
                                play.GetTimerSystem().AddStatus(GameStruct.RoleStatus.STATUS_WUDI);
                                play.LeftNotice("角色已无敌!!!");
                            }
                            break;
                        }
                    case "幻兽死亡":
                        {
                            EudemonObject obj = play.GetEudemonSystem().GetBattleEudemonSystem(0);
                            if (obj == null) break;
                            GameStruct.Action action = new GameStruct.Action(GameStruct.Action.DIE);
                            obj.PushAction(action);
                            break;
                        }
                    case "幻兽技能":
                        {
                            EudemonObject obj = play.GetEudemonSystem().GetBattleEudemonSystem(0);
                            if (obj == null) break;
                            ushort magicid = Convert.ToUInt16(option[1]);
                            obj.AddMagicInfo(magicid);
                            break;
                        }
                    case "幻兽等级":
                        {
                            EudemonObject obj = play.GetEudemonSystem().GetBattleEudemonSystem(0);
                            if (obj == null) break;
                            obj.GetEudemonInfo().level = 100;
                            play.GetEudemonSystem().SendEudemonInfo(obj.GetEudemonInfo());
                            break;
                        }
                    case "怪物外观":
                        {
                            uint lookface = Convert.ToUInt32(option[1]);
                            NetMsg.MsgMonsterInfo info = new NetMsg.MsgMonsterInfo();
                            info.id = 500000;
                            info.typeid = 3020;
                            info.lookface = lookface;
                            info.x = play.GetCurrentX();
                            info.y = play.GetCurrentY();
                            info.level = 125;
                            info.maxhp =10000;
                            info.hp = 10000;
                            info.dir = 7;
                            play.SendData(info.GetBuffer(), true);
                            break;
                        }
                    case "怪物名字":
                        {
                            uint typeid = Convert.ToUInt32(option[1]);
                            NetMsg.MsgMonsterInfo info = new NetMsg.MsgMonsterInfo();
                            info.id = 500000;
                            info.typeid = typeid;
                            info.lookface = 1243;
                            info.x = play.GetCurrentX();
                            info.y = play.GetCurrentY();
                            info.level = 125;
                            info.maxhp = 10000;
                            info.hp = 10000;
                            info.dir = 7;
                            play.SendData(info.GetBuffer(), true);
                            break;
                        }
                    case "创建npc":
                        {
                            uint id = Convert.ToUInt32(option[1]);
                            NetMsg.MsgNpcInfo info = new NetMsg.MsgNpcInfo();

                            info.Init(id, play.GetCurrentX(), play.GetCurrentY(), play.GetDir());
                            play.SendData(info.GetBuffer(),true);
                            break;
                        }
                    case GETONLINECOUNT:
                        {
                            play.ChatNotice("当前在线人数:" + UserEngine.Instance().GetOnlineCount().ToString());
                            break;
                        }
                    case "名人堂":
                        {
                            //248,42,0,0  用做NPC索引ID
                            //241,73,2,0  lookface
                            //241,73,2,0  lookface
                            //0, 0, 0, 0 未知
                            //60, 156, 29, 0 动作
                            //1, 0      名人堂排名名次
                            //132,16,2,0  衣服
                            //193, 182, 6, 0 学徒杖 武器
                            //205, 10, 0, 0 战斗力
                            // 178, 2, 0, 0 未知
                            // 33, 0, 0, 0  未知
                            //101, 0        X坐标
                            // 185, 0      Y坐标
                            //132, 0, 0, 0  发型
                            byte[] data = { 195, 0, 246, 3, 248, 42, 0, 0, 241, 73, 2, 0, 241, 73, 2, 0, 0, 0, 0, 0, /*60, 156, 29, 0*/0,0,0,0, 1, 0, 205, 10, 0, 0, 0, 0, 0,
                                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 16, 2, 0, 193, 182, 6, 0,/* 178, 2, 0, 0, 33, 0, 0, 0*/0,0,0,0,0,0,0,0,
                                              101, 0, 185, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*33, 10,*/0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                              0, 0, 0, /*100*/0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                              0, 0, 0, 0, 0, 0, 0, 0, 0, 0/*5*/, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
                                              14, 185, 254, 176, 205, 185, 183, 176, 188, 161, 204, 205, 185, 194, 252, 0, 0, 0 };
                            play.SendData(data, true);
                            break;
                        }
                    case NOTICE:
                        {
                            String sMsg = option[1];
                            UserEngine.Instance().SceneNotice(sMsg);
                            break;
                        }
                    case "角色属性":
                        {
                            GameStruct.UserAttribute attr = (GameStruct.UserAttribute)Convert.ToInt32(option[1]);
                            int v = Convert.ToInt32(option[2]);
                            NetMsg.MsgUserAttribute msg = new NetMsg.MsgUserAttribute();
                            msg.role_id = play.GetTypeId();
                            msg.Create(null, null);

                            msg.AddAttribute(attr, (uint)v);
                            play.SendData(msg.GetBuffer(), true);
                            break;
                        }

                }
            }
            catch (System.Exception ex)
            {
                Log.Instance().WriteLog("----------------------------------------------------------------");
                Log.Instance().WriteLog("执行GM命令出错!!" + str);
                Log.Instance().WriteLog(ex.Message);
                Log.Instance().WriteLog(ex.StackTrace);
                Log.Instance().WriteLog("----------------------------------------------------------------");
            }
        }
Beispiel #6
0
        //更改角色基本属性
        public void ChangeAttribute(GameStruct.UserAttribute type, int value, bool isBrocat = true)
        {
            if (this.GetGameSession() == null) return;
            int v = value;
            switch (type)
            {
                case GameStruct.UserAttribute.GOLD:
                    {
                        if (this.GetBaseAttr().gold + value> GameBase.Config.Define.MAX_GOLD) //最高三十亿
                        {
                            this.MsgBox("少年,别再刷了,最高二十亿金币!");
                            this.GetBaseAttr().gold = GameBase.Config.Define.MAX_GOLD;
                        }else
                        {
                            this.GetBaseAttr().gold += value;
                        }

                        if (this.GetBaseAttr().gold < 0) { this.GetBaseAttr().gold = 0; }
                        v = (int)this.GetBaseAttr().gold;
                       // if (v > PlayerItem.MAX_GOLD) this.GetBaseAttr().gold = PlayerItem.MAX_GOLD;
                        break;
                    }
                case GameStruct.UserAttribute.GAMEGOLD:
                    {
                        if (this.GetBaseAttr().gold + value > GameBase.Config.Define.MAX_GAMEGOLD) //最高三十亿
                        {
                            this.GetBaseAttr().gamegold = GameBase.Config.Define.MAX_GAMEGOLD;
                            this.MsgBox("少年,别再刷了,最高二十亿魔石!");
                        }
                        else
                        {
                            this.GetBaseAttr().gamegold += value;
                        }

                        if (this.GetBaseAttr().gamegold < 0) { this.GetBaseAttr().gamegold = 0; }
                        v = this.GetBaseAttr().gamegold;
                        break;
                    }
                case GameStruct.UserAttribute.LEVEL:
                    {
                        this.GetBaseAttr().level += (byte)value;
                        v = GetBaseAttr().level;
                        //重新计算属性
                        this.CalcAttribute();
                        this.GetBaseAttr().life = this.GetBaseAttr().life_max;
                        this.GetBaseAttr().mana = this.GetBaseAttr().mana_max;
                        //升级特效
                        PacketOut outpack = new PacketOut();
                        outpack.WriteInt16(28);
                        outpack.WriteInt16(1010);
                        outpack.WriteInt32(System.Environment.TickCount);
                        outpack.WriteUInt32(this.GetTypeId());
                        outpack.WriteInt32(0);
                        outpack.WriteInt32(0);
                        outpack.WriteInt32(1);
                        outpack.WriteInt32(9550);
                        this.BroadcastBuffer(outpack.Flush(), true);
                        break;
                    }
                case GameStruct.UserAttribute.EXP:
                    {
                        this.GetBaseAttr().exp += value;
                        v = (int)this.GetBaseAttr().exp;
                        //发送公告
                        // this.LeftNotice(string.Format(StringDefine.KILLEXP,value.ToString()));

                        break;
                    }
                case GameStruct.UserAttribute.LIFE:
                    {
                        v = (int)GetBaseAttr().life + value;
                        if (v < 0) v = 0;
                        GetBaseAttr().life = (uint)v;
                        if (v > GetBaseAttr().life_max) GetBaseAttr().life = GetBaseAttr().life_max;
                        //无敌状态
                        if (this.GetTimerSystem().QueryStatus(GameStruct.RoleStatus.STATUS_WUDI) != null)
                        {
                            GetBaseAttr().life = GetBaseAttr().life_max;
                        }
                        break;
                    }
                case GameStruct.UserAttribute.LIFE_MAX:
                    {
                        GetBaseAttr().life_max = (uint)value;

                        break;
                    }
                case GameStruct.UserAttribute.MANA:
                    {
                        v = (int)GetBaseAttr().mana + value;
                        if (v < 0) v = 0;
                        GetBaseAttr().mana = (uint)v;
                        break;
                    }
                case GameStruct.UserAttribute.MANA_MAX:
                    {
                        GetBaseAttr().mana_max = (uint)value;

                        break;
                    }
                case GameStruct.UserAttribute.LOOKFACE:
                    {
                        //	pPlayer->SetFace((m_pInfo->aUserAttrib[i].dwAttributeData/10000)%1000);
                        // pPlayer->SetSex((m_pInfo->aUserAttrib[i].dwAttributeData / 1000) % 10);
                        //pPlayer->Transform(m_pInfo->aUserAttrib[i].dwAttributeData / 10000000);
                        //如果是鬼魂状态不写到数据库
                        if (!IsGhost())
                        {
                            this.GetBaseAttr().lookface = (uint)value;
                        }

                        v = value;
                        break;
                    }
                case GameStruct.UserAttribute.HAIR:
                    {
                        this.GetBaseAttr().hair = (uint)value;
                        v = value;
                        break;
                    }
                case GameStruct.UserAttribute.STATUS:
                    {
                        v = value;
                        break;
                    }
                case GameStruct.UserAttribute.SP:
                    {
                        this.GetBaseAttr().sp += value;
                        v = this.GetBaseAttr().sp;
                        break;
                    }
                case GameStruct.UserAttribute.PK:
                    {
                        //防止溢出
                        if (this.GetBaseAttr().pk + value >= 30000)
                        {
                            this.GetBaseAttr().pk = 30000;
                        }
                        else
                        {
                            this.GetBaseAttr().pk += (short)value;
                        }

                        if (this.GetBaseAttr().pk < 0) this.GetBaseAttr().pk = 0;
                        this.GetPKSystem().ResetPKNameType();
                        break;
                    }
                case GameStruct.UserAttribute.MAXEUDEMON:
                    {
                        this.GetBaseAttr().maxeudemon += (byte)value;
                        v = this.GetBaseAttr().maxeudemon;
                        break;
                    }

            }
            NetMsg.MsgUserAttribute msg = new NetMsg.MsgUserAttribute();
            msg.role_id = this.GetTypeId();
            if (isBrocat) { msg.Create(null, null); }

            msg.AddAttribute(type, (uint)v);

            if (type == GameStruct.UserAttribute.LEVEL)
            {
                msg.AddAttribute(UserAttribute.LIFE_MAX, this.GetBaseAttr().life_max);
                msg.AddAttribute(UserAttribute.LIFE, this.GetBaseAttr().life);
                if (this.GetBaseAttr().mana_max > 0)
                {
                    msg.AddAttribute(UserAttribute.MANA_MAX, this.GetBaseAttr().mana_max);
                    msg.AddAttribute(UserAttribute.MANA, this.GetBaseAttr().mana);
                }

            }
            //是否广播
            if (isBrocat)
            {
                this.BroadcastBuffer(msg.GetBuffer(), true);
            }
            else
            {
                this.SendData(msg.GetBuffer(), true);
            }
        }