//发送幻兽信息到交易栏 public void SendLookTradEudemonInfo(PlayerObject _play, RoleData_Eudemon info) { NetMsg.MsgEudemonInfo msg = new NetMsg.MsgEudemonInfo(); msg.id = info.GetTypeID(); msg.tag = 4; msg.AddAttribute(GameStruct.EudemonAttribute.Atk_Max, info.atk_max); msg.AddAttribute(GameStruct.EudemonAttribute.Atk_Min, info.atk_min); msg.AddAttribute(GameStruct.EudemonAttribute.MagicAtk_Max, info.magicatk_max); msg.AddAttribute(GameStruct.EudemonAttribute.MagicAtk_Min, info.magicatk_min); msg.AddAttribute(GameStruct.EudemonAttribute.Defense, info.defense); msg.AddAttribute(GameStruct.EudemonAttribute.Magic_Defense, info.magicdef); msg.AddAttribute(GameStruct.EudemonAttribute.Life, info.life); msg.AddAttribute(GameStruct.EudemonAttribute.Life_Max, info.life_max); msg.AddAttribute(GameStruct.EudemonAttribute.Intimacy, info.intimacy); msg.AddAttribute(GameStruct.EudemonAttribute.Level, info.level); msg.AddAttribute(GameStruct.EudemonAttribute.WuXing, info.wuxing); msg.AddAttribute(GameStruct.EudemonAttribute.Luck, info.luck); msg.AddAttribute(GameStruct.EudemonAttribute.Recall_Count, info.recall_count); msg.AddAttribute(EudemonAttribute.Card, info.card); msg.AddAttribute(EudemonAttribute.Exp, info.exp); msg.AddAttribute(EudemonAttribute.Quality, info.quality); msg.AddAttribute(EudemonAttribute.Init_Atk, info.GetInitAtk()); msg.AddAttribute(EudemonAttribute.Init_Magic_Atk, info.GetInitMagicAtk()); msg.AddAttribute(EudemonAttribute.Init_Defense, info.GetInitDefense()); msg.AddAttribute(EudemonAttribute.Init_Life, info.init_life); msg.AddAttribute(EudemonAttribute.Life_Grow_Rate, ConvertGrowRate(info.life_grow_rate)); msg.AddAttribute(EudemonAttribute.Atk_Min_Grow_Rate, ConvertGrowRate(info.phyatk_grow_rate)); msg.AddAttribute(EudemonAttribute.Atk_Max_Grow_Rate, ConvertGrowRate(info.phyatk_grow_rate_max)); msg.AddAttribute(EudemonAttribute.MagicAtk_Min_Grow_Rate, ConvertGrowRate(info.magicatk_grow_rate)); msg.AddAttribute(EudemonAttribute.MagicAtk_Max_Grow_Rate, ConvertGrowRate(info.magicatk_grow_rate_max)); msg.AddAttribute(EudemonAttribute.Defense_Grow_Rate, ConvertGrowRate(info.defense_grow_rate)); msg.AddAttribute(EudemonAttribute.MagicDefense_Grow_Rate, ConvertGrowRate(info.magicdef_grow_rate)); GameStruct.MonsterInfo _info = EudemonObject.GetMonsterInfo(play, info.itemid); if (_info != null) { msg.AddAttribute(EudemonAttribute.Riding, _info.eudemon_type); } _play.SendData(msg.GetBuffer(), true); }
//复活幻兽 //target 死亡的怪物- 只有打怪才会加幻兽灵气 public void Eudemon_Alive(MonsterObject taget) { for (int i = 0; i < mBattleObj.Count; i++) { EudemonObject obj = mBattleObj[i]; if (obj.GetState() == EUDEMONSTATE.BATTLE && obj.GetAttr().bDie) { obj.GetAttr().life += (int)(obj.GetAttr().life_max * 0.1) ; //杀死一个怪物加5点 NetMsg.MsgEudemonInfo msg = new NetMsg.MsgEudemonInfo(); msg.id = obj.GetTypeId(); msg.AddAttribute(EudemonAttribute.Life, obj.GetAttr().life); PacketOut outpack = new PacketOut(); if (obj.GetAttr().life >= obj.GetAttr().life_max ) { // 收到网络协议:长度:24协议号:2037 //{24,0,245,7,1,0,0,0,252,159,138,131,1,0,0,0,6,0,0,0,65,0,0,0} obj.GetAttr().life = obj.GetAttr().life_max; outpack.WriteInt16(24); outpack.WriteInt16(2037); outpack.WriteInt32(1); outpack.WriteUInt32(obj.GetTypeId()); outpack.WriteInt32(1); outpack.WriteInt32(6); outpack.WriteInt32(obj.GetAttr().life); obj.BrocatBuffer(outpack.Flush()); //收到网络协议:长度:20协议号:1017 //{20,0,249,3,252,159,138,131,1,0,0,0,0,0,0,0,65,0,0,0} outpack = new PacketOut(); outpack.WriteInt16(20); outpack.WriteInt16(1017); outpack.WriteUInt32(obj.GetTypeId()); outpack.WriteInt32(1); outpack.WriteInt32(0); outpack.WriteInt32(obj.GetAttr().life); obj.BrocatBuffer(outpack.Flush()); //收到网络协议:长度:20协议号:1017 //{20,0,249,3,252,159,138,131,1,0,0,0,26,0,0,0,4,0,0,0} outpack = new PacketOut(); outpack.WriteInt16(20); outpack.WriteInt16(1017); outpack.WriteUInt32(obj.GetTypeId()); outpack.WriteInt32(1); outpack.WriteInt32(26); outpack.WriteInt32(4); obj.BrocatBuffer(outpack.Flush()); //收到网络协议:长度:20协议号:1017 //{20,0,249,3,252,159,138,131,1,0,0,0,26,0,0,0,0,0,0,0} outpack = new PacketOut(); outpack.WriteInt16(20); outpack.WriteInt16(1017); outpack.WriteUInt32(obj.GetTypeId()); outpack.WriteInt32(1); outpack.WriteInt32(26); outpack.WriteInt32(0); obj.BrocatBuffer(outpack.Flush()); obj.GetAttr().bDie = false; obj.SendEudemonInfo(); } else { // 收到网络协议:长度:40协议号:1022 outpack.WriteInt16(40); outpack.WriteInt16(1022); outpack.WriteInt32(System.Environment.TickCount); outpack.WriteUInt32(obj.GetTypeId()); outpack.WriteUInt32(taget.GetTypeId()); outpack.WriteInt16(obj.GetCurrentX()); outpack.WriteInt16(obj.GetCurrentY()); outpack.WriteInt32(32); outpack.WriteInt16(4); outpack.WriteInt32(obj.GetAttr().life); outpack.WriteInt32(0); outpack.WriteInt32(0); outpack.WriteInt16(0); obj.BrocatBuffer(outpack.Flush()); } break; } } }
//发送幻兽信息 //info 幻兽信息 //tag 是否发送休息标记 //brank 是否发送排行榜信息 public void SendEudemonInfo(RoleData_Eudemon info, bool tag = true,bool bRank = true) { if (tag) { //要设置一个标记才可以出征,,目前不知道这个消息是干什么用的为何 应该是状态之类的吧。。。(*^__^*) 嘻2015.9.28 NetMsg.MsgEudemonTag eudemontag = new NetMsg.MsgEudemonTag(); eudemontag.playerid = play.GetTypeId(); eudemontag.eudemonid = info.GetTypeID(); eudemontag.SetBreakTag(); play.SendData(eudemontag.GetBuffer(), true); } //所有幻兽都为至尊圣兽 if (bRank && info.quality > 0) { byte[] data1 = { 12, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 0 }; PacketOut outpack = new PacketOut(); outpack.WriteInt16(28); outpack.WriteInt16(1010); outpack.WriteUInt32(info.typeid); outpack.WriteUInt32(play.GetTypeId()); outpack.WriteBuff(data1); play.SendData(outpack.Flush(),true); } NetMsg.MsgEudemonInfo msg = new NetMsg.MsgEudemonInfo(); msg.id = info.GetTypeID(); msg.AddAttribute(GameStruct.EudemonAttribute.Atk_Max, info.atk_max); msg.AddAttribute(GameStruct.EudemonAttribute.Atk_Min, info.atk_min); msg.AddAttribute(GameStruct.EudemonAttribute.MagicAtk_Max, info.magicatk_max); msg.AddAttribute(GameStruct.EudemonAttribute.MagicAtk_Min, info.magicatk_min); msg.AddAttribute(GameStruct.EudemonAttribute.Defense, info.defense); msg.AddAttribute(GameStruct.EudemonAttribute.Magic_Defense, info.magicdef); msg.AddAttribute(GameStruct.EudemonAttribute.Life, info.life); msg.AddAttribute(GameStruct.EudemonAttribute.Life_Max, info.life_max); msg.AddAttribute(GameStruct.EudemonAttribute.Intimacy, info.intimacy); msg.AddAttribute(GameStruct.EudemonAttribute.Level, info.level); msg.AddAttribute(GameStruct.EudemonAttribute.WuXing, info.wuxing); msg.AddAttribute(GameStruct.EudemonAttribute.Luck, info.luck); msg.AddAttribute(GameStruct.EudemonAttribute.Recall_Count, info.recall_count); msg.AddAttribute(EudemonAttribute.Card, info.card); msg.AddAttribute(EudemonAttribute.Exp, info.exp); msg.AddAttribute(EudemonAttribute.Quality, info.quality); msg.AddAttribute(EudemonAttribute.Init_Atk, info.GetInitAtk()); msg.AddAttribute(EudemonAttribute.Init_Magic_Atk, info.GetInitMagicAtk()); msg.AddAttribute(EudemonAttribute.Init_Defense, info.GetInitDefense()); msg.AddAttribute(EudemonAttribute.Init_Life, info.init_life); msg.AddAttribute(EudemonAttribute.Life_Grow_Rate, ConvertGrowRate(info.life_grow_rate)); msg.AddAttribute(EudemonAttribute.Atk_Min_Grow_Rate, ConvertGrowRate(info.phyatk_grow_rate)); msg.AddAttribute(EudemonAttribute.Atk_Max_Grow_Rate, ConvertGrowRate(info.phyatk_grow_rate_max )); msg.AddAttribute(EudemonAttribute.MagicAtk_Min_Grow_Rate, ConvertGrowRate(info.magicatk_grow_rate)); msg.AddAttribute(EudemonAttribute.MagicAtk_Max_Grow_Rate, ConvertGrowRate(info.magicatk_grow_rate_max)); msg.AddAttribute(EudemonAttribute.Defense_Grow_Rate, ConvertGrowRate(info.defense_grow_rate )); msg.AddAttribute(EudemonAttribute.MagicDefense_Grow_Rate, ConvertGrowRate(info.magicdef_grow_rate)); GameStruct.MonsterInfo _info = EudemonObject.GetMonsterInfo(play, info.itemid); if (_info != null) { msg.AddAttribute(EudemonAttribute.Riding, _info.eudemon_type); } play.SendData(msg.GetBuffer(),true); }
//查看幻兽- 把自身装备信息发给对方 public void SendLookEudemonInfo(PlayerObject target) { uint play_id = play.GetTypeId(); PacketOut outpack = new PacketOut(); EudemonObject obj = null; for (int i = 0; i < mListObj.Count; i++) { obj = mListObj[i]; uint itemid = obj.GetEudemonInfo().itemid; RoleItemInfo item_info = play.GetItemSystem().FindItem(itemid); RoleData_Eudemon info = obj.GetEudemonInfo(); if (item_info == null) continue; //发送道具信息 outpack = new PacketOut(); int nLen = 84 + Coding.GetDefauleCoding().GetBytes(item_info.forgename).Length; outpack.WriteInt16((short)nLen); outpack.WriteInt16(1008); //道具信息 outpack.WriteUInt32(play_id); outpack.WriteUInt32(info.GetTypeID()); outpack.WriteUInt32(item_info.itemid); outpack.WriteInt32(0); outpack.WriteByte(NetMsg.MsgItemInfo.TAG_LOOKROLEEUDEMONINFO); //幻兽背包 outpack.WriteByte(0); outpack.WriteByte(NetMsg.MsgItemInfo.ITEMPOSITION_EUDEMON_PACK);//幻兽背包 byte[] _data = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 }; outpack.WriteBuff(_data); outpack.WriteString(item_info.forgename); outpack.WriteByte(0); outpack.WriteByte(0); outpack.WriteByte(0); target.SendData(outpack.Flush(), true); //target.GetItemSystem().SendItemInfo(item_info, NetMsg.MsgItemInfo.TAG_LOOKROLEEUDEMONINFO); //发送幻兽详细信息 NetMsg.MsgEudemonInfo msg = new NetMsg.MsgEudemonInfo(); msg.id = info.GetTypeID(); msg.tag = 2; msg.AddAttribute(GameStruct.EudemonAttribute.Atk_Max, info.atk_max); msg.AddAttribute(GameStruct.EudemonAttribute.Atk_Min, info.atk_min); msg.AddAttribute(GameStruct.EudemonAttribute.MagicAtk_Max, info.magicatk_max); msg.AddAttribute(GameStruct.EudemonAttribute.MagicAtk_Min, info.magicatk_min); msg.AddAttribute(GameStruct.EudemonAttribute.Defense, info.defense); msg.AddAttribute(GameStruct.EudemonAttribute.Magic_Defense, info.magicdef); msg.AddAttribute(GameStruct.EudemonAttribute.Life, info.life); msg.AddAttribute(GameStruct.EudemonAttribute.Life_Max, info.life_max); msg.AddAttribute(GameStruct.EudemonAttribute.Intimacy, info.intimacy); msg.AddAttribute(GameStruct.EudemonAttribute.Level, info.level); msg.AddAttribute(GameStruct.EudemonAttribute.WuXing, info.wuxing); msg.AddAttribute(GameStruct.EudemonAttribute.Luck, info.luck); msg.AddAttribute(GameStruct.EudemonAttribute.Recall_Count, info.recall_count); msg.AddAttribute(EudemonAttribute.Card, info.card); msg.AddAttribute(EudemonAttribute.Exp, info.exp); msg.AddAttribute(EudemonAttribute.Quality, info.quality); msg.AddAttribute(EudemonAttribute.Init_Atk, info.GetInitAtk()); msg.AddAttribute(EudemonAttribute.Init_Magic_Atk, info.GetInitMagicAtk()); msg.AddAttribute(EudemonAttribute.Init_Defense, info.GetInitDefense()); msg.AddAttribute(EudemonAttribute.Init_Life, info.init_life); msg.AddAttribute(EudemonAttribute.Life_Grow_Rate, ConvertGrowRate(info.life_grow_rate)); msg.AddAttribute(EudemonAttribute.Atk_Min_Grow_Rate, ConvertGrowRate(info.phyatk_grow_rate)); msg.AddAttribute(EudemonAttribute.Atk_Max_Grow_Rate, ConvertGrowRate(info.phyatk_grow_rate_max)); msg.AddAttribute(EudemonAttribute.MagicAtk_Min_Grow_Rate, ConvertGrowRate(info.magicatk_grow_rate)); msg.AddAttribute(EudemonAttribute.MagicAtk_Max_Grow_Rate, ConvertGrowRate(info.magicatk_grow_rate_max)); msg.AddAttribute(EudemonAttribute.Defense_Grow_Rate, ConvertGrowRate(info.defense_grow_rate)); msg.AddAttribute(EudemonAttribute.MagicDefense_Grow_Rate, ConvertGrowRate(info.magicdef_grow_rate)); GameStruct.MonsterInfo _info = EudemonObject.GetMonsterInfo(play, info.itemid); if (_info != null) { msg.AddAttribute(EudemonAttribute.Riding, _info.eudemon_type); } target.SendData(msg.GetBuffer(), true); } // 收到网络协议:长度:99协议号:1008 //byte[] data1 = {99,0,240,3,73,48,96,5,253,159,138,131,93,92,16,0,0,0,0,0,7,0,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,218,164,186,211,189,228,193,233,161,164,206,172,193,208,0,0,0}; // target.SendData(data1,true); // //收到网络协议:长度:143协议号:1116 //byte[] data2 = {143,0,92,4,253,159,138,131,183,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,0,0,0,0,0,0,0,0,0,0,73,48,96,5,220,3,0,0,220,3,0,0,199,1,52,2,6,0,3,0,0,0,0,0,29,26,1,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,93,92,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,14,218,164,186,211,189,228,193,233,161,164,206,172,193,208,0,0}; // target.SendData(data2,true); // //收到网络协议:长度:24协议号:2037 // byte[] data3 = { 24, 0, 245, 7, 2, 0, 0, 0, 253, 159, 138, 131, 1, 0, 0, 0, 24, 0, 0, 0, 7, 0, 0, 0 }; // target.SendData(data3, true); ////收到网络协议:长度:496协议号:2037 //byte[] data4 = {240,1,245,7,2,0,0,0,253,159,138,131,60,0,0,0,6,0,0,0,220,3,0,0,7,0,0,0,220,3,0,0,10,0,0,0,37,0,0,0,8,0,0,0,149,0,0,0,9,0,0,0,51,235,16,0,55,0,0,0,0,0,0,0,12,0,0,0,3,0,0,0,14,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,19,0,0,0,3,0,0,0,21,0,0,0,5,0,0,0,23,0,0,0,1,0,0,0,25,0,0,0,202,0,0,0,26,0,0,0,188,4,0,0,27,0,0,0,142,3,0,0,28,0,0,0,9,0,0,0,50,0,0,0,1,0,32,0,73,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,61,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,63,0,0,0,11,0,0,0,64,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,74,0,0,0,0,0,0,0,75,0,0,0,0,0,0,0,76,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,81,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,24,0,0,0,7,0,0,0,13,0,0,0,48,0,0,0,1,0,0,0,38,0,0,0,0,0,0,0,83,0,0,0,3,0,0,0,250,0,0,0,2,0,0,0,221,1,0,0,4,0,0,0,182,1,0,0,5,0,0,0,196,0,0,0,64,0,0,0,0,0,0,0,65,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,82,0,0,0,0,0,0,0,36,0,0,0,162,10,0,0,37,0,0,0,233,3,0,0,38,0,0,0,208,8,0,0,39,0,0,0,234,25,0,0,40,0,0,0,144,50,0,0,41,0,0,0,164,46,0,0,42,0,0,0,72,20,0,0,83,0,0,0,50,0,0,0}; //target.SendData(data4, true); //收到网络协议:长度:20协议号:1103 //{20,0,79,4,253,159,138,131,0,0,0,0,213,7,0,0,0,0,0,0} //收到网络协议:长度:20协议号:1103 //{20,0,79,4,253,159,138,131,0,0,0,0,233,3,0,0,0,0,0,0} //收到网络协议:长度:20协议号:1103 //{20,0,79,4,253,159,138,131,0,0,0,0,185,11,0,0,0,0,0,0} //收到网络协议:长度:20协议号:1103 //{20,0,79,4,253,159,138,131,0,0,0,0,230,7,0,0,0,0,0,0} //收到网络协议:长度:172协议号:1117 //byte[] data5 = { 172, 0, 93, 4 }; // byte[] data6 = {0,0,0,0,0,70,0,0,0,0,1,0,12,228,48,138,92,92,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,0,15,0,0,0,15,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,4,0,0,0,0,0,15,0,26,18,104,0,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,164,186,211,189,228,193,233,161,164,206,172,193,208,0,0,0,0,0,0,0,0,0,0,0,0}; // PacketOut outpack = new PacketOut(); // outpack.WriteBuff(data5); // outpack.WriteUInt32(play.GetTypeId()); // outpack.WriteBuff(data6); // target.SendData(outpack.Flush(), true); //for (int i = 0; i < mListObj.Count; i++); //{ // EudemonObject obj = mListObj[i]; // GameStruct.RoleItemInfo item = play.GetItemSystem().FindItem(obj.GetEudemonInfo().itemid); // if (item == null) continue; // target.GetItemSystem().SendItemInfo(item, NetMsg.MsgItemInfo.TAG_LOOKROLEEUDEMONINFO); // target.GetEudemonSystem().SendEudemonInfo(obj.GetEudemonInfo(),false,true); //} }
public void AddExp(int nExp) { this.GetAttr().exp += nExp; bool bChangeLv = false; while (true) { GameStruct.LevelExp exp = ConfigManager.Instance().GetLevelExp(GameStruct.LevelExp.LEVELEXP_EUDEMON, (byte)this.GetAttr().level); if (exp == null) break; if (this.GetAttr().exp >= (int)exp.exp) { this.GetAttr().exp -= (int)exp.exp; this.GetAttr().level++; bChangeLv = true; } else break; } if (bChangeLv) { //升级特效 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.BrocatBuffer(outpack.Flush()); } //下发经验数据 NetMsg.MsgEudemonInfo msg = new NetMsg.MsgEudemonInfo(); msg.id = this.GetTypeId(); msg.AddAttribute(EudemonAttribute.Exp, this.GetAttr().exp); if (bChangeLv) { msg.AddAttribute(EudemonAttribute.Level, this.GetAttr().level); this.CalcAttribute(); play.GetEudemonSystem().SendEudemonInfo(GetEudemonInfo()); } play.SendData(msg.GetBuffer(), true); }
public override void Injured(BaseObject obj, uint value, NetMsg.MsgAttackInfo info) { mbIsCombo = play.GetFightSystem().IsComboMagic(info.usType); this.GetAttr().life -= (int)value; if (this.GetAttr().life < 0) { this.GetAttr().life = 0; } if (!mbIsCombo && this.GetAttr().life <= 0) { GameStruct.Action action = new GameStruct.Action(GameStruct.Action.DIE, null); this.PushAction(action); } NetMsg.MsgEudemonInfo msg = new NetMsg.MsgEudemonInfo(); msg.id = this.GetTypeId(); msg.AddAttribute(EudemonAttribute.Life, this.GetAttr().life); this.BrocatBuffer(msg.GetBuffer()); }
//更改幻兽属性 //type 属性 //value 值 //isBrocat 是否广播 public void ChangeAttribute(GameStruct.EudemonAttribute type, int value, bool isBrocat = true) { RoleData_Eudemon eudemon_info = play.GetEudemonSystem().FindEudemon(this.GetTypeId()); if (eudemon_info == null) return; int v = value; switch (type) { case GameStruct.EudemonAttribute.Level: { eudemon_info.level += (short)value; this.SetEudemonInfo(eudemon_info); // this.GetAttr().level += (short)value; this.CalcAttribute(); //升级特效 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.BrocatBuffer(outpack.Flush()); v = this.GetAttr().level; break; } } NetMsg.MsgEudemonInfo msg = new NetMsg.MsgEudemonInfo(); msg.id = this.GetTypeId(); msg.AddAttribute(type, v); if (isBrocat) { this.BrocatBuffer(msg.GetBuffer()); } else { play.SendData(msg.GetBuffer(), true); } }
//死亡 protected override void ProcessAction_Die(GameStruct.Action act) { this.GetAttr().life = 0; mInfo.bDie = true; //if (this.GetState() == EUDEMONSTATE.BATTLE) { NetMsg.MsgEudemonInfo msg = new NetMsg.MsgEudemonInfo(); msg.id = this.GetTypeId(); msg.AddAttribute(EudemonAttribute.Life, 0); play.SendData(msg.GetBuffer(), true); // 收到网络协议:长度:24协议号:2037 // byte[] data = {24,0,245,7,1,0,0,0,252,159,138,131,1,0,0,0,83,0,0,0,45,0,0,0}; PacketOut outpack = new PacketOut(); outpack.WriteUInt16(24); outpack.WriteUInt16(2037); outpack.WriteUInt32(1); outpack.WriteUInt32(this.GetTypeId()); outpack.WriteInt32(1); outpack.WriteInt32(83); outpack.WriteInt32(45); play.SendData(outpack.Flush(), true); //收到网络协议:长度:20协议号:1017 //{20,0,249,3,252,159,138,131,1,0,0,0,35,0,0,0,45,0,0,0} outpack = new PacketOut(); outpack.WriteInt16(20); outpack.WriteInt16(1017); outpack.WriteUInt32(this.GetTypeId()); outpack.WriteInt32(1); outpack.WriteInt32(35); outpack.WriteInt32(45); play.SendData(outpack.Flush(), true); //收到网络协议:长度:24协议号:2037 //{24,0,245,7,1,0,0,0,252,159,138,131,1,0,0,0,8,0,0,0,149,0,0,0} outpack = new PacketOut(); outpack.WriteUInt16(24); outpack.WriteUInt16(2037); outpack.WriteUInt32(1); outpack.WriteUInt32(this.GetTypeId()); outpack.WriteInt32(1); outpack.WriteInt32(8); outpack.WriteInt32(149); play.SendData(outpack.Flush(), true); } //else if (this.GetState() == EUDEMONSTATE.FIT) { //解体 play.GetEudemonSystem().Eudemon_BreakUp(this.GetTypeId()); //再召回 play.GetEudemonSystem().Eudemon_Battle(this.GetTypeId()); } if (this.GetState() == EUDEMONSTATE.BATTLE) { //广播 this.SendEudemonInfo(); } }
//发送给玩家刷新信息 public void SendPlayRefreshInfo(PlayerObject play) { if (play.GetGameSession() == null) return; if (mMonsterInfo == null) return; //刷新幻兽数据 NetMsg.MsgEudemonBattleInfo battleinfo = new NetMsg.MsgEudemonBattleInfo(); battleinfo.Create(null, play.GetGamePackKeyEx()); battleinfo.id = mInfo.GetTypeID(); battleinfo.lookface = mMonsterInfo.lookface; battleinfo.name = mInfo.name; battleinfo.monsterid = mMonsterInfo.id; battleinfo.x = play.GetCurrentX(); battleinfo.y = play.GetCurrentY(); battleinfo.dir = play.GetDir(); play.SendData(battleinfo.GetBuffer()); //要有血量,不然就挂了 NetMsg.MsgEudemonInfo eudemoninfo = new NetMsg.MsgEudemonInfo(); eudemoninfo.Create(null, play.GetGamePackKeyEx()); eudemoninfo.id = mInfo.GetTypeID(); eudemoninfo.AddAttribute(GameStruct.EudemonAttribute.Life, mInfo.life); eudemoninfo.AddAttribute(GameStruct.EudemonAttribute.Life_Max, mInfo.life); play.SendData(eudemoninfo.GetBuffer()); }