//幻兽幻化- //_id 副幻兽id public void Eudemon_Soul(uint _id) { EudemonObject fu_eudemon = GetEudmeonObject(_id); EudemonObject zhu_eudemon = GetEudmeonObject(mCurEudemonSoulId); if (zhu_eudemon == null) { play.LeftNotice("幻化失败,未找到主幻兽!"); return; } if (fu_eudemon == null) { play.LeftNotice("幻化失败,未找到副幻兽!"); return; } if (zhu_eudemon.GetState() != EUDEMONSTATE.BATTLE) { play.LeftNotice("幻化失败,主幻兽必须出征!"); return; } if (fu_eudemon.GetState() != EUDEMONSTATE.BATTLE) { play.LeftNotice("幻化失败,副幻兽必须出征!"); return; } GameStruct.RoleItemInfo role_item = play.GetItemSystem().FindItem(zhu_eudemon.GetEudemonInfo().itemid); if (role_item == null) return; GameStruct.EudemonSoulInfo soulinfo = ConfigManager.Instance().GetEudemonSoulInfo((int)(zhu_eudemon.GetEudemonInfo().quality / 100)); if (soulinfo == null) { play.LeftNotice("幻化失败,错误!001"); return; } //等级需求 if (zhu_eudemon.GetEudemonInfo().level < soulinfo.level) { play.MsgBox("主幻兽等级需求:" + soulinfo.level.ToString() + "级"); return; } //副幻兽等级需求 if (fu_eudemon.GetEudemonInfo().level < soulinfo.level) { play.MsgBox("副幻兽等级需求:" + soulinfo.fu_level.ToString() + "级"); return; } //副幻兽星级需求 if (fu_eudemon.GetEudemonInfo().quality < soulinfo.fu_star) { play.MsgBox("副幻兽星级需求:极品" + soulinfo.fu_star.ToString()); return; } RoleData_Eudemon attr = play.GetEudemonSystem().FindEudemon(zhu_eudemon.GetEudemonInfo().GetTypeID()); if (attr == null) { play.MsgBox("幻化失败!aaa"); return; } //幻兽id更改 String sItemID = role_item.itemid.ToString(); sItemID = sItemID.Substring(0,sItemID.Length-1) + "0"; role_item.itemid = Convert.ToUInt32(sItemID); if (EudemonObject.GetMonsterInfo(play, role_item.id) == null) { play.MsgBox("幻化失败"); return; } //更新道具与幻兽信息 play.GetItemSystem().UpdateItemInfo(role_item.id); zhu_eudemon.SetMosterInfo(EudemonObject.GetMonsterInfo(play, role_item.id)); zhu_eudemon.SendEudemonInfo(); //---------------- this.Eudemon_ReCall(fu_eudemon.GetTypeId()); //召回副幻兽 play.GetItemSystem().DeleteItemByID(fu_eudemon.GetTypeId()); //删除副幻兽 attr.level = 1; //幻化变为1级 attr.recall_count++;//转世次数+1 //zhu_eudemon.GetEudemonInfo().level = 1; //zhu_eudemon.GetEudemonInfo().recall_count++; GameStruct.MonsterInfo monster_info = zhu_eudemon.GetMonsterInfo(); //幻兽品质 attr.quality += IRandom.Random(soulinfo.add_min, soulinfo.add_max); // zhu_eudemon.GetEudemonInfo().quality += IRandom.Random(soulinfo.add_min,soulinfo.add_max); //主属性-目前 战士幻兽加物攻 物防 法师幻兽加魔攻魔防 if (soulinfo.add_main > 0) { switch (monster_info.eudemon_type) { //战士 case GameBase.Config.Define.EUDEMON_TYPE_WARRIOR: case GameBase.Config.Define.EUDEMON_TYPE_WARRIOR_RIG: { attr.phyatk_grow_rate += soulinfo.add_main; attr.phyatk_grow_rate_max += soulinfo.add_main; attr.defense_grow_rate += soulinfo.add_main; //zhu_eudemon.GetEudemonInfo().phyatk_grow_rate += soulinfo.add_main; //zhu_eudemon.GetEudemonInfo().phyatk_grow_rate_max += soulinfo.add_main; //zhu_eudemon.GetEudemonInfo().defense_grow_rate += soulinfo.add_main; break; } //法师 case GameBase.Config.Define.EUDEMON_TYPE_MAGE: case GameBase.Config.Define.EUDEMON_TYPE_MAGE_RID: { attr.magicatk_grow_rate += soulinfo.add_main; attr.magicatk_grow_rate_max += soulinfo.add_main; attr.magicdef_grow_rate += soulinfo.add_main; //zhu_eudemon.GetEudemonInfo().magicatk_grow_rate += soulinfo.add_main; //zhu_eudemon.GetEudemonInfo().magicatk_grow_rate_max += soulinfo.add_main; //zhu_eudemon.GetEudemonInfo().magicdef_grow_rate += soulinfo.add_main; break; } } } //副属性- if (soulinfo.add_fu > 0) { switch (monster_info.eudemon_type) { //战士 case GameBase.Config.Define.EUDEMON_TYPE_WARRIOR: case GameBase.Config.Define.EUDEMON_TYPE_WARRIOR_RIG: { attr.magicatk_grow_rate += soulinfo.add_fu; attr.magicatk_grow_rate_max += soulinfo.add_fu; attr.magicdef_grow_rate += soulinfo.add_fu; //zhu_eudemon.GetEudemonInfo().magicatk_grow_rate += soulinfo.add_fu; //zhu_eudemon.GetEudemonInfo().magicatk_grow_rate_max += soulinfo.add_fu; //zhu_eudemon.GetEudemonInfo().magicdef_grow_rate += soulinfo.add_fu; break; } //法师 case GameBase.Config.Define.EUDEMON_TYPE_MAGE: case GameBase.Config.Define.EUDEMON_TYPE_MAGE_RID: { attr.phyatk_grow_rate += soulinfo.add_fu; attr.phyatk_grow_rate_max += soulinfo.add_fu; attr.defense_grow_rate += soulinfo.add_fu; attr.phyatk_grow_rate += soulinfo.add_fu; //zhu_eudemon.GetEudemonInfo().phyatk_grow_rate_max += soulinfo.add_fu; //zhu_eudemon.GetEudemonInfo().defense_grow_rate += soulinfo.add_fu; break; } } attr.life_grow_rate += soulinfo.add_fu; //生命成长 // zhu_eudemon.GetEudemonInfo().life_grow_rate += soulinfo.add_fu; } //初始属性 if (soulinfo.add_init > 0) { attr.init_life += soulinfo.add_init; attr.init_atk_min += soulinfo.add_init; attr.init_atk_max += soulinfo.add_init; attr.init_magicatk_min += soulinfo.add_init; attr.init_magicatk_max += soulinfo.add_init; attr.init_defense += soulinfo.add_init; attr.init_magicdef += soulinfo.add_init; //zhu_eudemon.GetEudemonInfo().init_life += soulinfo.add_init; //zhu_eudemon.GetEudemonInfo().init_atk_min += soulinfo.add_init; //zhu_eudemon.GetEudemonInfo().init_atk_max += soulinfo.add_init; //zhu_eudemon.GetEudemonInfo().init_magicatk_min += soulinfo.add_init; //zhu_eudemon.GetEudemonInfo().init_magicatk_max += soulinfo.add_init; //zhu_eudemon.GetEudemonInfo().init_defense += soulinfo.add_init; //zhu_eudemon.GetEudemonInfo().init_magicdef += soulinfo.add_init; } //zhu_eudemon.GetEudemonInfo().luck++; //zhu_eudemon.GetEudemonInfo().magicatk_grow_rate += 0.5f; //zhu_eudemon.GetEudemonInfo().magicatk_grow_rate_max += 1.5f; // zhu_eudemon.GetEudemonInfo().magicdef_grow_rate += 0.5f; // 收到网络协议:长度:28协议号:1010 zhu_eudemon.SetEudemonInfo(attr); NetMsg.MsgEudemonInfo msg = new NetMsg.MsgEudemonInfo(); PacketOut outpack = new PacketOut(); outpack.WriteInt16(28); outpack.WriteInt16(1010); outpack.WriteUInt32(zhu_eudemon.GetTypeId()); outpack.WriteUInt32(play.GetTypeId()); outpack.WriteInt16(21); outpack.WriteInt16(69); outpack.WriteInt32(0); outpack.WriteInt32(0); outpack.WriteInt32(9765); play.SendData(outpack.Flush(), true); //收到网络协议:长度:24协议号:2037 this.SendEudemonInfo(zhu_eudemon.GetEudemonInfo()); //弹出幻化成功对话框 // 收到网络协议:长度:28协议号:1010 outpack = new PacketOut(); outpack.WriteInt16(28); outpack.WriteInt16(1010); outpack.WriteInt32(System.Environment.TickCount); outpack.WriteUInt32(zhu_eudemon.GetTypeId()); outpack.WriteInt32(50); outpack.WriteInt32(0); outpack.WriteInt32(1); outpack.WriteInt32(9742); play.SendData(outpack.Flush(), true); }
//发送幻兽信息到交易栏 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()); }