//发送状态信息 public void SendState(PlayerObject _play = null) { NetMsg.MsgUserAttribute attr = new NetMsg.MsgUserAttribute(); attr.role_id = play.GetTypeId(); int hi = GetEffect(); int lo = GetEffect(false); // if (lo > 0) // { attr.AddAttribute(GameStruct.UserAttribute.STATUS, (uint)lo); // } // if (hi > 0) // { attr.AddAttribute(GameStruct.UserAttribute.STATUS1, (uint)hi); // } //新增扩展状态 hi = GetEffectEx(); lo = GetEffectEx(false); attr.AddAttribute(GameStruct.UserAttribute.STATUSEX, (uint)lo); if (_play != null) { _play.SendData(attr.GetBuffer(), true); } else { play.BroadcastBuffer(attr.GetBuffer(), true); } }
//可以同步玩家各种属性信息- 目前只拿来同步血量 信息 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()); } }
//添加状态 //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()); //} }
//添加状态 //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()); //} }
//发送状态信息 public void SendState(PlayerObject _play = null) { NetMsg.MsgUserAttribute attr = new NetMsg.MsgUserAttribute(); attr.role_id = play.GetTypeId(); int hi = GetEffect(); int lo = GetEffect(false); // if (lo > 0) // { attr.AddAttribute(GameStruct.UserAttribute.STATUS, (uint)lo); // } // if (hi > 0) // { attr.AddAttribute(GameStruct.UserAttribute.STATUS1, (uint)hi); // } //新增扩展状态 hi = GetEffectEx(); lo = GetEffectEx(false); attr.AddAttribute(GameStruct.UserAttribute.STATUSEX, (uint)lo); if (_play != null) { _play.SendData(attr.GetBuffer(),true); } else { play.BroadcastBuffer(attr.GetBuffer(), true); } }
//可以同步玩家各种属性信息- 目前只拿来同步血量 信息 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()); } }
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("----------------------------------------------------------------"); } }
//更改角色基本属性 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); } }