public void ClearThis(PlayerObject play) { NetMsg.MsgClearObjectInfo info = new NetMsg.MsgClearObjectInfo(); info.Create(null, play.GetGamePackKeyEx()); info.id = GetTypeId(); play.SendData(info.GetBuffer()); }
//提升神佑 public void Equip_GodExp(PlayerObject play, uint srcid, uint destid) { RoleItemInfo srcinfo = play.GetItemSystem().FindItem(srcid); if (srcinfo == null) return; RoleItemInfo destinfo = play.GetItemSystem().FindItem(destid); if (destinfo == null) return; if (srcinfo.god_exp >= 90000) { play.MsgBox("已达到最高神佑等级"); return; } int godlv = srcinfo.god_exp / 10000; int addgodexp = 0; switch (godlv) { case 0: { addgodexp = 1000; break; } //提升1级神佑 case 1: { addgodexp = 500; break; } //二级 case 2: { addgodexp = 200; break; } //三级 case 3: { addgodexp = 125; break; }//四级 case 4: { addgodexp = 83; break; }//五级 case 5: { addgodexp = 55;break;} //六级 case 6: {addgodexp = 40;break;}//七级 case 7: { addgodexp = 28; break; }//八级 case 8: { addgodexp = 20; break; } //九级 default: { return; } } int rate = 1;//倍率 switch(destinfo.itemid) { case 1037210://神谕之石 { rate = 1; break; } case 1037260://5倍神谕之石 { if (godlv < 3) return; //最低使用等级是3级 rate = 5; break; } case 1037261: //10倍神谕之石 { if (godlv < 5) return; //最低使用等级是5级 rate = 10; break; } case 1037262: //25倍神谕之石 { if (godlv < 8) return; //最低使用等级8级 rate = 25; break; } } srcinfo.god_exp += addgodexp * rate; play.GetItemSystem().DeleteItemByID(destinfo.id); // play.MsgBox("增加神佑经验"+(addgodexp * rate).ToString()); play.GetItemSystem().SendItemInfo(srcinfo); NetMsg.MsgEquipOperationRet ret = new NetMsg.MsgEquipOperationRet(); ret.srcid = srcid; ret.destid = destid; byte[] index = { 7, 0, 3, 0 }; ret.type = BitConverter.ToUInt32(index, 0); ret.ret = 1; play.SendData(ret.GetBuffer(), true); }
//发送机器人的角色信息 //play 玩家对象 public void SendRobotInfo(PlayerObject play/*bool boRepeat = true*/) { uint legion_id = RobotLegionManager.GetInstance().GetLegionId(mInfo.legion_name); NetMsg.MsgRoleInfo role = new NetMsg.MsgRoleInfo(); role.Create(null, play.GetGamePackKeyEx()); role.role_id = this.GetTypeId(); role.x = mInfo.x; role.y = mInfo.y; role.armor_id = mInfo.armor_id; role.wepon_id = mInfo.wepon_id; role.face_sex = role.face_sex1 = mInfo.lookface; role.dir = mInfo.dir; role.guanjue = mInfo.guanjue; role.hair_id = mInfo.hair; role.rid_id = mInfo.rid_id; role.str.Add(mInfo.name); //军团 if (mInfo.legion_name.Length > 0) { role.legion_id = legion_id; role.legion_title = mInfo.legion_title; role.legion_place = mInfo.legion_place; role.legion_id1 = legion_id; } play.SendData(role.GetBuffer()); //军团名称- if (legion_id > 0) { NetMsg.MsgLegionName legion = new NetMsg.MsgLegionName(); legion.Create(null, play.GetGamePackKeyEx()); legion.legion_id = legion_id; legion.legion_name = mInfo.legion_name; play.SendData(legion.GetBuffer()); //if (boRepeat) //{ // mListPlay.Add(play.GetTypeId()); //} } //取该玩家对象- 如果是王、女王、公爵则行礼 //2015.11.21 遇到玩家就行礼 //GameStruct.GUANGJUELEVEL lv = play.GetGuanJue(); //if (lv == GameStruct.GUANGJUELEVEL.KING || // lv == GameStruct.GUANGJUELEVEL.QUEEN || // lv == GameStruct.GUANGJUELEVEL.DUKE // ) //{ // this.PlayFaceAcion(Define._ACTION_GENUFLECT, play); // } this.PlayFaceAcion(Define._ACTION_GENUFLECT, play); }
//角色摆摊 //nPtichId 摊位ID //play 摆摊对象 public bool AddPlayPtich(int nPtichId, PlayerObject play) { if (nPtichId < 0 || nPtichId >= GameBase.Config.Define.PTICH_MAX_COUNT) return false; if (PtichHasPlay(nPtichId)) return false; if (play.GetTimerSystem().QueryStatus(GameStruct.RoleStatus.STATUS_PTICH) != null) return false; //正在摆摊中 play.GetTimerSystem().AddStatus(GameStruct.RoleStatus.STATUS_PTICH); mListPtichInfo[nPtichId].play = play; //设置方向 play.SetDir(DIR.LEFT_DOWN); PacketOut outpack = new PacketOut(); //网络连接堵塞提示 //outpack.WriteInt16(16); //outpack.WriteInt16(1012); //outpack.WriteUInt32(play.GetTypeId()); //outpack.WriteInt32(0); //outpack.WriteInt32(0); //play.SendData(outpack.Flush(), true); //这个不知道是什么鬼 //outpack = new PacketOut(); //outpack.WriteInt16(20); //outpack.WriteInt16(1017); //outpack.WriteUInt32(play.GetTypeId()); //outpack.WriteInt32(1); //outpack.WriteInt32(4); //outpack.WriteInt32(60317); //157, 235, 0, 0 //play.SendData(outpack.Flush(),true); PtichObject obj = new PtichObject(play); obj.SetPoint((short)(play.GetCurrentX() + 1), (short)(play.GetCurrentY() + 1)); play.GetGameMap().AddObject(obj); obj.Refresh(); mListPtichInfo[nPtichId].PtichObj = obj; //收到网络协议:长度:28协议号:1010 outpack = new PacketOut(); outpack.WriteInt16(28); outpack.WriteInt16(1010); outpack.WriteInt32(101088); outpack.WriteUInt32(play.GetTypeId()); outpack.WriteInt16(obj.GetCurrentX()); outpack.WriteInt16(obj.GetCurrentY()); outpack.WriteInt32(0); outpack.WriteUInt32(obj.GetTypeId()); outpack.WriteInt32(9570); play.SendData(outpack.Flush(), true); //byte[] data4 = { 28, 0, 242, 3, 224, 138, 1, 0, 174, 66, 15, 0, 91, 1, 27, 2, 0, 0, 0, 0, 28, 162, 1, 0, 98, 37, 0, 0 }; //this.SendData(data4, true); return true; }
//摊位出售道具 public void SellItem(PlayerObject play, uint item_id, byte type, int price) { if (play.GetTimerSystem().QueryStatus(GameStruct.RoleStatus.STATUS_PTICH) == null) return; uint ptich_obj_id = GetPtichObjectTypeID(play.GetCurrentPtichID()); GameStruct.RoleItemInfo item = null; if (ptich_obj_id == 0) return; if (item_id >= IDManager.eudemon_start_id) { RoleData_Eudemon eudemon = play.GetEudemonSystem().FindEudemon(item_id); if (eudemon == null) return; item = play.GetItemSystem().FindItem(eudemon.itemid); if (item == null) return; } else { item = play.GetItemSystem().FindItem(item_id); if (item == null) return; } if (ptich_obj_id == 0) return; //判断是否已经在出售摊位列表中- 反作弊 int nPtichId = play.GetCurrentPtichID(); for (int i = 0; i < mListPtichInfo[nPtichId].mSellItemList.Count; i++) { if (mListPtichInfo[nPtichId].mSellItemList[i].item_id == item_id) { return; } } //摆摊出售道具已满 if (mListPtichInfo[nPtichId].mSellItemList.Count >= GameBase.Config.Define.PTICH_SELL_MAX_COUNT) { return; } PacketOut outpack = new PacketOut(); outpack.WriteInt16(28); outpack.WriteInt16(1009); outpack.WriteUInt32(item_id); outpack.WriteInt32(price); outpack.WriteInt32(type); outpack.WriteInt32(0); outpack.WriteInt32(0); outpack.WriteInt32(0); play.SendData(outpack.Flush(), true); //移到摊位状态 item.postion = NetMsg.MsgItemInfo.ITEMPOSTION_PTICH_PACK; PtichSellItemInfo info = new PtichSellItemInfo(); info.item_id = item_id; info.price = price; info.sell_type = type; mListPtichInfo[nPtichId].mSellItemList.Add(info); // {28,0,241,3,8,127,205,7,111,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} }
//获取远程摊位 //id 为从指定序号摊位 -1为自动顺序 public void GetRemotePtich(PlayerObject play,int id = -1) { int ptich_id = -1; if (id != -1 && id >= 0 && id < mListPtichInfo.Count) { if (mListPtichInfo[id].play == null) { play.MsgBox("该摊位未开放"); return; } ptich_id = id; }else { ptich_id = GetRemotePtichId(play.GetCurrentRemotePtichId()); } if (ptich_id == -1) return; //无摊位 返回 play.SetCurrentRemotePtichId(ptich_id); //远程摊位信息 String sName = mListPtichInfo[ptich_id].play.GetName(); int nLen = 13 + Coding.GetDefauleCoding().GetBytes(sName).Length; PacketOut outpack = new PacketOut(); outpack.WriteInt16((short)nLen); outpack.WriteInt16(1015); // {19,0,247,3,14,0,0,0,125,0,1,6,203,167,208,161,187,239,0} outpack.WriteInt32(ptich_id + 1); outpack.WriteInt16(125); outpack.WriteByte(1); outpack.WriteString(sName); outpack.WriteByte(0); play.SendData(outpack.Flush(), true); for (int i = 0; i < mListPtichInfo[ptich_id].mSellItemList.Count ; i++) { RoleItemInfo item_info = null; RoleData_Eudemon eudemon = null; if (mListPtichInfo[ptich_id].mSellItemList[i].item_id >= IDManager.eudemon_start_id) { eudemon = mListPtichInfo[ptich_id].play.GetEudemonSystem().FindEudemon( mListPtichInfo[ptich_id].mSellItemList[i].item_id); if (eudemon == null) continue; item_info = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem(eudemon.itemid); } else { item_info = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem( mListPtichInfo[ptich_id].mSellItemList[i].item_id); } if (item_info != null) { NetMsg.MsgPtichItemInfo msg = new NetMsg.MsgPtichItemInfo(item_info, (uint)(ptich_id + 1), mListPtichInfo[ptich_id].mSellItemList[i].price, mListPtichInfo[ptich_id].mSellItemList[i].sell_type,true); play.SendData(msg.GetBuffer(), true); //发送幻兽信息 if (item_info.typeid >= IDManager.eudemon_start_id) { mListPtichInfo[ptich_id].play.GetEudemonSystem().SendLookPtichEudemonInfo(play, eudemon); } } } }
public void BuyItem(PlayerObject play, uint ptich_obj_id, uint item_id) { if (play.GetTimerSystem().QueryStatus(GameStruct.RoleStatus.STATUS_PTICH) != null) { play.MsgBox("摆摊中不允许购买!"); return; } int ptich_id = -1; for (int i = 0; i < mListPtichInfo.Count; i++) { if (mListPtichInfo[i].PtichObj == null) continue; if (mListPtichInfo[i].PtichObj.GetTypeId() == ptich_obj_id) { ptich_id = i; break; } } if (ptich_id == -1) return; //检测是否有道具 int price = 0; byte sell_type = 0; RoleItemInfo item = null; RoleData_Eudemon eudemon = null; bool bFind = false; for (int i = 0; i < mListPtichInfo[ptich_id].mSellItemList.Count; i++) { if (mListPtichInfo[ptich_id].mSellItemList[i].item_id == item_id) { bFind = true; if (item_id >= IDManager.eudemon_start_id) { eudemon = mListPtichInfo[ptich_id].play.GetEudemonSystem().FindEudemon(item_id); if (eudemon == null) return; item = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem(eudemon.itemid); }else { item = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem(item_id); } if (item == null) { play.MsgBox("购买失败!"); return; } price = mListPtichInfo[ptich_id].mSellItemList[i].price; sell_type = mListPtichInfo[ptich_id].mSellItemList[i].sell_type; if (sell_type == NetMsg.MsgOperateItem.PTICH_SELL_ITEM_GAMEGOLD) { if (price > play.GetMoneyCount(MONEYTYPE.GOLD)) { play.MsgBox("购买失败,魔石不足!"); return; } play.ChangeMoney(MONEYTYPE.GAMEGOLD, -price); mListPtichInfo[ptich_id].play.ChangeMoney(MONEYTYPE.GAMEGOLD, price); } else if (sell_type == NetMsg.MsgOperateItem.PTICH_SELL_ITEM_GOLD) { if (price > play.GetMoneyCount(MONEYTYPE.GOLD)) { play.MsgBox("购买失败,金币不足!"); return; } play.ChangeMoney(MONEYTYPE.GOLD, -price); mListPtichInfo[ptich_id].play.ChangeMoney(MONEYTYPE.GOLD, price); } else return; mListPtichInfo[ptich_id].mSellItemList.RemoveAt(i); break; } } if (!bFind) { play.MsgBox("购买失败,该道具已下架!"); return; } if (item_id >= IDManager.eudemon_start_id) { item.postion = NetMsg.MsgItemInfo.ITEMPOSITION_EUDEMON_PACK; play.GetEudemonSystem().AddTempEudemon(eudemon);//加到临时表 } else { //添加道具 item.postion = NetMsg.MsgItemInfo.ITEMPOSITION_BACKPACK; } play.GetItemSystem().AwardItem(item); //删除卖方道具 //刷新摊位道具栏 卖方 GetBackItem(mListPtichInfo[ptich_id].play, item_id); mListPtichInfo[ptich_id].play.GetItemSystem().DeleteItemByID(item_id); //买方 //{28,0,241,3,140,87,212,7,70,160,1,0,23,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0} PacketOut outpack = new PacketOut(); outpack.WriteInt16(28); outpack.WriteInt16(1009); outpack.WriteUInt32(item_id); outpack.WriteUInt32(ptich_obj_id); outpack.WriteInt32(23); //购买完的标识 outpack.WriteInt16(0); outpack.WriteInt32(1); outpack.WriteInt32(0); outpack.WriteInt16(0); play.SendData(outpack.Flush(), true); // this.LookPtich(play, ptich_obj_id); // this.LookPtich(mListPtichInfo[ptich_id].play, ptich_obj_id); }
//发送幻兽信息到交易栏 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); }
private void Action_MenuLink(ActionInfo info, PlayerObject play) { NetMsg.MsgNpcReply msg = new NetMsg.MsgNpcReply(); msg.Create(null, play.GetGamePackKeyEx()); msg.interactType = 258; msg.param = 111; msg.param2 = 112; msg.param3[1] = 113; msg.param3[2] = 114; msg.param3[0] = 115; if (info.id_next == 0) msg.optionid = 255; else msg.optionid = mnSelectIndex;/**选项索引**/ String[] option = info.param.Split(' '); play.GetMenuLink()[mnSelectIndex] = Convert.ToUInt32(option[1]); msg.text = option[0]; play.SendData(msg.GetBuffer()); }
private void Action_MenuImage(ActionInfo info, PlayerObject play) { String[] option = info.param.Split(' '); NetMsg.MsgNpcReply msg = new NetMsg.MsgNpcReply(); msg.Create(null, play.GetGamePackKeyEx()); ushort id = Convert.ToUInt16(option[2]); play.SendData(msg.NpcImage(id)); }
private void Action_MenuEdit(ActionInfo info, PlayerObject play) { NetMsg.MsgNpcReply msg = new NetMsg.MsgNpcReply(); msg.Create(null, play.GetGamePackKeyEx()); msg.interactType = 259; String[] option = info.param.Split(' '); if (option.Length != 3) { Log.Instance().WriteLog("Action_MenuEdit参数数量不对." + info.param); } ushort nAcceptLen = Convert.ToUInt16(option[0]); uint idTask = Convert.ToUInt32(option[1]); play.SetTaskID(idTask); String sText = option[2]; msg.param2 = nAcceptLen; msg.text = sText; play.SendData(msg.GetBuffer()); //byte[] data1 = { 29, 0, 240, 7, 0, 0, 0, 0, 15, 0, 0, 3, 1, 12, 190, 252, 205, 197, 207, 235, 189, 208, 161, 173, 161, 173, 0, 0, 0 }; //play.GetGamePackKeyEx().EncodePacket(ref data1, data1.Length); //play.SendData(data1); }
public void ClearThis(PlayerObject play) { NetMsg.MsgClearObjectInfo info = new NetMsg.MsgClearObjectInfo(); info.Create(null, play.GetGamePackKeyEx()); info.id = this.GetTypeId(); play.SendData(info.GetBuffer()); this.GetVisibleList().Remove(play.GetGameID()); }
//法宝追加 public void Magic_Add_God(PlayerObject play, uint srcid, uint destid) { RoleItemInfo srcinfo = play.GetItemSystem().FindItem(srcid); if (srcinfo == null) return; RoleItemInfo destinfo = play.GetItemSystem().FindItem(destid); if (destinfo == null) return; if (srcinfo.stronglv >= 12) { play.MsgBox("已达到最高法宝等级"); return; } int godlv = srcinfo.god_exp / 10000; int addgodexp = 0; switch (destinfo.itemid) { case 1037231: //+1创世水晶 { addgodexp = 20; break; } case 1037232: //+2创世水晶 { addgodexp = 60; break; } case 1037233: //+3创世水晶 { addgodexp = 180; break; } } //这四行代码只是为了弥补之前的BUG if (srcinfo.itemid == GameBase.Config.Define.ITEM_DILONGZHILEI_ID && srcinfo.god_strong >= 22500) { srcinfo.god_strong = 0; srcinfo.stronglv++; } //--------------------------------------------------------- if (addgodexp == 0 && srcinfo.itemid != destinfo.itemid) return; if (addgodexp == 0) addgodexp = 20; //默认相同法宝+20经验 addgodexp = 1000; if (srcinfo.itemid == GameBase.Config.Define.ITEM_SHUGUANGZHANHUN_ID && srcinfo.god_strong >= 7500) { return ;} //已经到最高经验值 if (srcinfo.itemid == GameBase.Config.Define.ITEM_DILONGZHILEI_ID && srcinfo.god_strong >= 22500) { return; } if(srcinfo.itemid == GameBase.Config.Define.ITEM_SHENGYAOFUWEN_ID && srcinfo.god_strong >= 30000){return;} srcinfo.god_strong += addgodexp; if (srcinfo.itemid == GameBase.Config.Define.ITEM_SHUGUANGZHANHUN_ID && srcinfo.god_strong >= 7500) { srcinfo.god_strong = 0; srcinfo.stronglv++; } if (srcinfo.itemid == GameBase.Config.Define.ITEM_DILONGZHILEI_ID && srcinfo.god_strong >= 22500) { srcinfo.god_strong = 0; srcinfo.stronglv++; } if (srcinfo.itemid == GameBase.Config.Define.ITEM_SHENGYAOFUWEN_ID && srcinfo.god_strong >= 30000) { srcinfo.god_strong = 0; srcinfo.stronglv++; } play.GetItemSystem().DeleteItemByID(destinfo.id); play.GetItemSystem().SendItemInfo(srcinfo); NetMsg.MsgEquipOperationRet ret = new NetMsg.MsgEquipOperationRet(); ret.srcid = srcid; ret.destid = destid; byte[] ret_code = { 9, 0, 3, 0 }; ; ret.type = BitConverter.ToUInt32(ret_code, 0); ret.ret = 1; play.SendData(ret.GetBuffer(), true); }
//幻魔晶石 装备升级 public void EquipLevel(PlayerObject play,uint srcid,uint materialid) { const int HUANMOJINGSHI = 1037170; //幻魔晶石id const int HUANMOZHIXIN = 1037179; //幻魔之心 const int MAX_LEVEL_EQUIP1 = 9; //其他装备的提升等级 const int MAX_LEVEL_EQUIP2 = 25; //武器的提升等级 GameStruct.RoleItemInfo item = play.GetItemSystem().FindItem(srcid); GameStruct.RoleItemInfo materialitem = play.GetItemSystem().FindItem(materialid); if (item == null || materialitem == null) return; bool bUpdate = false; NetMsg.MsgEquipOperationRet ret = new NetMsg.MsgEquipOperationRet(); ret.Create(null, play.GetGamePackKeyEx()); ret.srcid = srcid; ret.destid = materialid; ret.type = 196612;//{4,0,3,0} int l = RateSuccForEquipLevel(item); if (item.IsShield() || item.IsArmor() || item.IsHelmet()) { if (item.GetLevel() > MAX_LEVEL_EQUIP1) return ; if (materialitem.itemid == HUANMOZHIXIN) { if (!play.GetItemSystem().DeleteItemByID(materialid)) return; item.UpLevel(); bUpdate = true; ret.ret = 1; } else if(materialitem.itemid == HUANMOJINGSHI) { if (!play.GetItemSystem().DeleteItemByID(materialid)) return; if (GameStruct.IRandom.Random(1, 100) < l) { item.UpLevel(); bUpdate = true; ret.ret = 1; } } } else { if (item.GetLevel() > MAX_LEVEL_EQUIP2) return ; if (materialitem.itemid == HUANMOZHIXIN) { if (!play.GetItemSystem().DeleteItemByID(materialid)) return; item.UpLevel(); ret.ret = 1; bUpdate = true; } else if(materialitem.itemid == HUANMOJINGSHI) { if (!play.GetItemSystem().DeleteItemByID(materialid)) return; if (GameStruct.IRandom.Random(1, 100) < l) { item.UpLevel(); ret.ret = 1; bUpdate = true; } } } if (bUpdate) { play.GetItemSystem().UpdateItemInfo(item.id); } play.SendData(ret.GetBuffer()); return ; }
//怪物是以typeid为主键 // public void AddObject(MonsterObject obj) // { // mDicObject[obj.GetTypeId()] = obj; // obj.mGameMap = this; //switch (obj.type) //{ // case OBJECTTYPE.MONSTER: // { // GameStruct.Action action = new GameStruct.Action(GameStruct.Action.MOVE, null); // obj.PushAction(action); // break; // } // } // } public void SendWeatherInfo(PlayerObject play) { //下雪天气- //if (obj.type == OBJECTTYPE.PLAYER) //{ //下雪天气 GameBase.Network.PacketOut outpack = new GameBase.Network.PacketOut(); outpack.WriteInt16(20); outpack.WriteInt16(1110); outpack.WriteUInt32(this.GetMapInfo().id); outpack.WriteUInt32(this.GetMapInfo().id); if (this.GetMapInfo().issnows) { byte[] data3 = { 0, 0, 32, 0, 128, 0, 18, 0 }; outpack.WriteBuff(data3); } else { outpack.WriteInt32(0); outpack.WriteInt32(0); } play.SendData(outpack.Flush(), true); //} }
private void Action_MenuText(ActionInfo info, PlayerObject play) { NetMsg.MsgNpcReply msg = new NetMsg.MsgNpcReply(); msg.Create(null, play.GetGamePackKeyEx()); msg.interactType = 257; msg.optionid = 255; msg.text = Sprintf_string(info.param, play); play.SendData(msg.GetBuffer()); }
//查看幻兽- 把自身装备信息发给对方 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); //} }
//执行脚本 //id 脚本id //play 玩家对象 public void ExecuteAction(uint id, PlayerObject play) { reset(); if (play != null) { play.ClearScriptMenuLink(); } uint nextid = id; while (true) { if (!mDicScripte.ContainsKey(nextid)) break; GameStruct.ActionInfo info = mDicScripte[nextid]; bool ret = false; //做一个异常处理,防止脚本写错服务端崩溃 try { ret = SWITCH(info, play); } catch (System.Exception ex) { Log.Instance().WriteLog(ex.Message); Log.Instance().WriteLog(ex.StackTrace); Log.Instance().WriteLog("执行脚本失败,脚本id:" + info.id.ToString() + "玩家昵称:" + play.GetName()); ret = false; } if (ret) nextid = info.id_next; else nextid = info.id_nextfail; //npc对话已经完成,发送结尾标记- if (info.id_next == 0 && mbEndTag && play != null) { NetMsg.MsgNpcReply reple = new NetMsg.MsgNpcReply(); reple.Create(null, play.GetGamePackKeyEx()); play.SendData(reple.Flush()); break; } //退出 if (nextid == 0) break; } }
//发送状态信息 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 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()); }
//摊位取回道具 public void GetBackItem(PlayerObject play, uint item_id) { if (play.GetTimerSystem().QueryStatus(GameStruct.RoleStatus.STATUS_PTICH) == null) return; uint ptich_obj_id = GetPtichObjectTypeID(play.GetCurrentPtichID()); GameStruct.RoleItemInfo item = null; if (ptich_obj_id == 0) return; if (item_id >= IDManager.eudemon_start_id) { RoleData_Eudemon eudemon = play.GetEudemonSystem().FindEudemon(item_id); if (eudemon == null) return; item = play.GetItemSystem().FindItem(eudemon.itemid); if (item == null) return; } else { item = play.GetItemSystem().FindItem(item_id); if (item == null) return; } int nPtichId = play.GetCurrentPtichID(); for (int i = 0; i < mListPtichInfo[nPtichId].mSellItemList.Count; i++) { if (mListPtichInfo[nPtichId].mSellItemList[i].item_id == item_id) { mListPtichInfo[nPtichId].mSellItemList.RemoveAt(i); break; } } //放回到包裹或幻兽背包 if (item_id >= IDManager.eudemon_start_id) { item.postion = NetMsg.MsgItemInfo.ITEMPOSITION_EUDEMON_PACK; } else { item.postion = NetMsg.MsgItemInfo.ITEMPOSITION_BACKPACK; } PacketOut outpack = new PacketOut(); outpack.WriteInt16(28); outpack.WriteInt16(1009); outpack.WriteUInt32(item_id); outpack.WriteUInt32(ptich_obj_id); outpack.WriteInt32((byte)NetMsg.MsgOperateItem.PTICH_GETBACK_SELLITEM); outpack.WriteInt32(0); outpack.WriteInt32(0); outpack.WriteInt32(0); play.SendData(outpack.Flush(), true); }
public void SendEudemonInfo(PlayerObject _play = null) { if (mMonsterInfo == null) return; //合体状态与休息状态下不发-- if (this.GetState() == EUDEMONSTATE.FIT || this.GetState() == EUDEMONSTATE.NROMAL) return; //刷新幻兽数据 NetMsg.MsgEudemonBattleInfo battleinfo = new NetMsg.MsgEudemonBattleInfo(); battleinfo.id = this.GetTypeId(); GameStruct.RoleItemInfo role_item = play.GetItemSystem().FindItem(this.GetEudemonInfo().itemid); if (role_item == null) return; battleinfo.lookface = mMonsterInfo.lookface;; battleinfo.name = role_item.forgename; battleinfo.monsterid = mMonsterInfo.id; battleinfo.play_id = play.GetTypeId(); battleinfo.life = mInfo.life; battleinfo.life_max = mInfo.life; battleinfo.x = this.GetCurrentX(); battleinfo.y = this.GetCurrentY(); battleinfo.dir = play.GetDir(); battleinfo.wuxing =(byte) mInfo.wuxing; battleinfo.wuxing =(byte) EudemonWuXing.LEI; if (mInfo.quality == 0) //没进化的,不显示至尊圣兽 { battleinfo.param4 = 0; } else { battleinfo.param4 = 69888;//0, 17, 1, 0 //至尊圣兽 } int nStar = (int)(mInfo.quality / 100); battleinfo.star = nStar; //111为幻兽星级 //186, 90, 16, 0 = 1071802 幻兽对应的物品id //54, 55, 191, 0 //前面四个字节貌似与幻兽神等级有关? //17 幻兽单项属性 //1 为排名 byte[] data = { 44, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 89, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; Buffer.BlockCopy(data, 0, battleinfo.param2, 0, data.Length); if (_play != null) { _play.SendData(battleinfo.GetBuffer(),true); } else { this.BrocatBuffer(battleinfo.GetBuffer()); } PacketOut outpack = null; if (this.GetAttr().bDie) { outpack = new PacketOut(); outpack.WriteInt16(20); outpack.WriteInt16(1017); outpack.WriteUInt32(this.GetTypeId()); outpack.WriteInt32(1); outpack.WriteInt32(26); outpack.WriteInt32(6); this.BrocatBuffer(outpack.Flush()); } // {28,0,241,3,39,31,97,5,2,32,201,122,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} byte[] data1 = { 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; outpack = new PacketOut(); outpack.WriteInt16(28); outpack.WriteInt16(1009); outpack.WriteUInt32(play.GetTypeId()); outpack.WriteUInt32(this.GetTypeId()); outpack.WriteBuff(data1); this.BrocatBuffer(outpack.Flush()); //要有血量,不然就挂了 //NetMsg.MsgEudemonInfo eudemoninfo = new NetMsg.MsgEudemonInfo(); //eudemoninfo.id = mInfo.GetTypeID(); //eudemoninfo.AddAttribute(GameStruct.EudemonAttribute.Life, mInfo.life); //eudemoninfo.AddAttribute(GameStruct.EudemonAttribute.Life_Max, mInfo.life); //this.BrocatBuffer(eudemoninfo.GetBuffer()); }
//查看摊位 //ptich_obj_id 摊位对象id //page 页码 public void LookPtich(PlayerObject play, uint ptich_obj_id) { int ptich_id = -1; for (int i = 0; i < mListPtichInfo.Count; i++) { if (mListPtichInfo[i].PtichObj == null) continue; if (mListPtichInfo[i].PtichObj.GetTypeId() == ptich_obj_id) { ptich_id = i; break; } } if (ptich_id == -1) return; // 摊位信息 byte[] senddata = { 42, 0, 105, 4, 244, 1, 0, 0, 64, 66, 15, 0, 36, 52, 156, 8, 3, 0, 0, 0, 30, 214, 44, 135, 2, 0, 0, 0, 164, 3, 178, 5, 1, 0 }; PacketOut outpack = new PacketOut(); outpack.WriteBuff(senddata); outpack.WriteInt16((short)(ptich_id + 1)); byte[] data2 = { 1, 4, 202, 165, 213, 189 }; outpack.WriteBuff(data2); play.SendData(outpack.Flush(), true); //出售的道具信息 for (int i = 0; i < mListPtichInfo[ptich_id].mSellItemList.Count; i++) { RoleItemInfo item_info = null; RoleData_Eudemon eudemon = null; if (mListPtichInfo[ptich_id].mSellItemList[i].item_id >= IDManager.eudemon_start_id) { eudemon = mListPtichInfo[ptich_id].play.GetEudemonSystem().FindEudemon( mListPtichInfo[ptich_id].mSellItemList[i].item_id); if (eudemon == null) continue; item_info = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem( eudemon.itemid); } else { item_info = mListPtichInfo[ptich_id].play.GetItemSystem().FindItem( mListPtichInfo[ptich_id].mSellItemList[i].item_id); } if (item_info != null) { NetMsg.MsgPtichItemInfo msg = new NetMsg.MsgPtichItemInfo(item_info, ptich_obj_id, mListPtichInfo[ptich_id].mSellItemList[i].price,mListPtichInfo[ptich_id].mSellItemList[i].sell_type); play.SendData(msg.GetBuffer(), true); //发送幻兽信息 if (item_info.typeid >= IDManager.eudemon_start_id) { mListPtichInfo[ptich_id].play.GetEudemonSystem().SendLookPtichEudemonInfo(play, eudemon); // play.GetEudemonSystem().SendEudemonInfo(eudemon, false, true); } } } //道具id //摊位对象id //魔石价格 //道具基础id //最大损耗 172, 38, //当前损耗 172, 38, //摊位栏 3 //是否鉴定 0.已鉴定 1.未鉴定 //未知 50 //第一个宝石 30 //第二个宝石 30 //未知 0,0 //强化等级 12 //32.未知 //33.未知 //34.未知 //35.未知 //36/37.38.39 未知 //40.41. 战魂等级 //42-51 未知 //52 地攻击 //53 水攻击 //54 火攻击 //55 风攻击 //56 特效 //64 第三个宝石 // byte[] data = { 101, 0, 84, 4, 13, 11, 150, 7, 67,162,1,0, 172, 13, 0, 0, 132, 70, 2, 0, 172, 38, 172, 38, 3, 0, 50, 30, 30, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 209, 215, 253, 136, 133, 101, 159, 111, 235, 112, 0, 0, 0, 0, 0 }; // play.SendData(GameServer.PtichData, true); //107075 // 收到网络协议:长度:98协议号:1108 //byte[] data1 = { 98, 0, 84, 4, 110, 134, 61, 138, 67, 162, 1, 0, 14, 0, 0, 0, 118, 91, 16, 0, 0, 0, 0, 0, 3, 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, 9, 198, 230, 210, 236, 202, 222, 79, 208, 205, 0, 0, 0 }; //play.SendData(data1,true); //收到网络协议:长度:24协议号:2037 //byte[] data3 = {24,0,245,7,3,0,0,0,110,134,61,138,1,0,0,0,24,0,0,0,138,2,0,0}; // play.SendData(data3,true); ////收到网络协议:长度:496协议号:2037 // byte[] data4 = { 240, 1, 245, 7, 3, 0, 0, 0, 110, 134, 61, 138, 60, 0, 0, 0, 6, 0, 0, 0, 159, 8, 0, 0, 7, 0, 0, 0, 159, 8, 0, 0, 10, 0, 0, 0, 81, 0, 0, 0, 8, 0, 0, 0, 150, 0, 0, 0, 9, 0, 0, 0, 83, 94, 121, 19, 55, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 2, 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, 2, 0, 0, 0, 21, 0, 0, 0, 5, 0, 0, 0, 23, 0, 0, 0, 1, 0, 0, 0, 25, 0, 0, 0, 244, 5, 0, 0, 26, 0, 0, 0, 33, 5, 0, 0, 27, 0, 0, 0, 165, 3, 0, 0, 28, 0, 0, 0, 19, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 24, 0, 0, 0, 138, 2, 0, 0, 13, 0, 0, 0, 50, 0, 0, 0, 1, 0, 0, 0, 13, 4, 0, 0, 0, 0, 0, 0, 204, 5, 0, 0, 3, 0, 0, 0, 231, 2, 0, 0, 2, 0, 0, 0, 11, 4, 0, 0, 4, 0, 0, 0, 47, 2, 0, 0, 5, 0, 0, 0, 190, 2, 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, 176, 10, 0, 0, 37, 0, 0, 0, 235, 49, 0, 0, 38, 0, 0, 0, 79, 71, 0, 0, 39, 0, 0, 0, 168, 35, 0, 0, 40, 0, 0, 0, 235, 49, 0, 0, 41, 0, 0, 0, 225, 26, 0, 0, 42, 0, 0, 0, 179, 32, 0, 0, 83, 0, 0, 0, 50, 0, 0, 0 }; // play.SendData(data4, true); }
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("----------------------------------------------------------------"); } }
//收摊 //bSendData 是否回发收摊数据- 玩家下线就不发 public void ShutPtich(PlayerObject play, bool bSendData = true) { if (play.GetTimerSystem().QueryStatus(GameStruct.RoleStatus.STATUS_PTICH) == null) return; uint ptich_obj_id = GetPtichObjectTypeID(play.GetCurrentPtichID()); if (ptich_obj_id == 0) return; for (int i = 0; i < mListPtichInfo[play.GetCurrentPtichID()].mSellItemList.Count; i++) { GameStruct.RoleItemInfo item = null; if (mListPtichInfo[play.GetCurrentPtichID()].mSellItemList[i].item_id >= IDManager.eudemon_start_id) { RoleData_Eudemon eudemon = play.GetEudemonSystem().FindEudemon( mListPtichInfo[play.GetCurrentPtichID()].mSellItemList[i].item_id); if (eudemon == null) continue; item = play.GetItemSystem().FindItem(eudemon.itemid); } else { item = play.GetItemSystem().FindItem( mListPtichInfo[play.GetCurrentPtichID()].mSellItemList[i].item_id); } if (item != null) { //放回到包裹 //放回到包裹或幻兽背包 if (item.typeid >= IDManager.eudemon_start_id) { item.postion = NetMsg.MsgItemInfo.ITEMPOSITION_EUDEMON_PACK; } else { item.postion = NetMsg.MsgItemInfo.ITEMPOSITION_BACKPACK; } if (bSendData) { PacketOut outpack = new PacketOut(); outpack.WriteInt16(28); outpack.WriteInt16(1009); outpack.WriteUInt32(item.id); outpack.WriteUInt32(ptich_obj_id); outpack.WriteInt32((byte)NetMsg.MsgOperateItem.PTICH_GETBACK_SELLITEM); outpack.WriteInt32(0); outpack.WriteInt32(0); outpack.WriteInt32(0); play.SendData(outpack.Flush(), true); } } } mListPtichInfo[play.GetCurrentPtichID()].play = null; //移除地图对象 play.GetGameMap().RemoveObj(mListPtichInfo[play.GetCurrentPtichID()].PtichObj); mListPtichInfo[play.GetCurrentPtichID()].PtichObj = null; mListPtichInfo[play.GetCurrentPtichID()].mSellItemList.Clear(); if (bSendData) { PacketOut outpack = new PacketOut(); outpack.WriteInt16(16); outpack.WriteInt16(2031); outpack.WriteUInt32(ptich_obj_id); outpack.WriteUInt32(play.GetTypeId()); outpack.WriteInt32(2); play.SendData(outpack.Flush(), true); } //移除摆摊状态 play.GetTimerSystem().DeleteStatus(GameStruct.RoleStatus.STATUS_PTICH); }
public void SendInfo(PlayerObject play) { byte[] data3 = { 41, 0, 238, 7, 28, 162, 1, 0, 91, 1, 27, 2, 144, 1, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 1, 8, 211, 249, 193, 250, 207, 201, 181, 192, 0, 0, 0 }; //play.SendData(data3, true); PacketOut outpack = new PacketOut(); String sName = mPlay.GetName(); int nLen = 33 + GameBase.Core.Coding.GetDefauleCoding().GetBytes(sName).Length; outpack.WriteInt16((short)nLen); outpack.WriteInt16(2030); outpack.WriteUInt32(this.GetTypeId()); outpack.WriteInt16(this.GetCurrentX()); outpack.WriteInt16(this.GetCurrentY()); outpack.WriteInt32(400);//144, 1, 0, 0 outpack.WriteInt32(34); outpack.WriteInt32(0); outpack.WriteInt32(76); outpack.WriteByte(1); outpack.WriteString(sName); outpack.WriteByte(0); outpack.WriteByte(0); outpack.WriteByte(0); // Log.Instance().WriteLog(GamePacketKeyEx.byteToText(outpack.GetNormalBuff())); play.SendData(outpack.Flush(), true); // byte[] data3 = { 41, 0, 238, 7, 28, 162, 1, 0, 91, 1, 27, 2, 144, 1, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 1, 8, 211, 249, 193, 250, 207, 201, 181, 192, 0, 0, 0 }; // this.SendData(data3, true); }
//发送对象信息 //play 要发送给对象的信息 //bClear 是否是清除信息 public void SendInfo(PlayerObject play = null, bool bClear = false) { GameBase.Network.PacketOut outpack = null; if (play != null) { outpack = new GameBase.Network.PacketOut(play.GetGamePackKeyEx()); } else outpack = new GameBase.Network.PacketOut(); outpack.WriteUInt16(32); outpack.WriteUInt16(1101); outpack.WriteUInt32(this.GetTypeId()); outpack.WriteInt32(mnEffID); outpack.WriteInt16(this.GetCurrentX()); outpack.WriteInt16(this.GetCurrentY()); outpack.WriteInt32(0); if (!bClear) { outpack.WriteInt32(mnParam); outpack.WriteInt32(0); outpack.WriteInt32(mnParam1); } else { outpack.WriteInt32(12); //清除特效标识 outpack.WriteInt32(0); outpack.WriteInt32(mnParam1); } if (play != null) { play.SendData(outpack.Flush()); } else { byte[] data = outpack.Flush(); this.BrocatBuffer(data); } }
public void SendInfo(PlayerObject play = null) { // byte[] data2 = { 100, 0, 1, 4, 210, 193, 183, 227, 0, 0, 0 }; GameStruct.MonsterInfo info = ConfigManager.Instance().GetMonsterInfo(id); if (info == null) { Log.Instance().WriteLog("获取守护骑士信息失败!!!" + id.ToString()); return; } GameBase.Network.PacketOut outpack = null; if (play == null) { outpack = new GameBase.Network.PacketOut(); }else { outpack = new GameBase.Network.PacketOut(play.GetGamePackKeyEx()); } outpack.WriteUInt16(81); outpack.WriteUInt16(2069); outpack.WriteUInt32(GetTypeId()); outpack.WriteUInt32(play.GetTypeId()); 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 }; outpack.WriteBuff(data); outpack.WriteUInt32(info.lookface); outpack.WriteInt16(GetCurrentX()); outpack.WriteInt16(GetCurrentY()); outpack.WriteInt16(0); //未知 outpack.WriteUInt16(info.level); outpack.WriteUInt32(info.id); outpack.WriteInt32(attr.life); outpack.WriteInt32(info.life); outpack.WriteInt16(GetDir()); byte[] data1 = { 100, 0, 1, 4, 210, 193, 183, 227, 0, 0, 0 }; outpack.WriteBuff(data1); if (play != null) { play.SendData(outpack.Flush()); } else { //广播 data = outpack.Flush(); this.BrocatBuffer(data); } }
//播放动作- //action_id :动作id //play : 参数如果不为空,则只对该角色播放动作,否则广播 public void PlayFaceAcion(uint action_id,PlayerObject play = null) { PacketOut outpack ; if(play == null) { outpack = new PacketOut(); }else { outpack = new PacketOut(play.GetGamePackKeyEx()); } outpack.WriteUInt16(28); outpack.WriteUInt16(1010); outpack.WriteUInt32(0); outpack.WriteUInt32(this.GetTypeId()); outpack.WriteUInt32(23855267); outpack.WriteUInt32(mInfo.dir); outpack.WriteUInt32(action_id); outpack.WriteUInt32(9530); byte[] data = outpack.Flush(); if(play != null) { play.SendData(data); return; } //this.RefreshVisibleObject(); foreach (RefreshObject o in mVisibleList.Values) { BaseObject obj = o.obj; if (obj.type == OBJECTTYPE.PLAYER) { PlayerObject _play = obj as PlayerObject; outpack = new PacketOut(_play.GetGamePackKeyEx()); outpack.WriteBuff(data); _play.SendData(outpack.Flush()); } } }
//装备提升魔魂等级参数:玩家对象 道具基本id 道具id 是否百分百成功 public void EquipStrong(PlayerObject play, uint srcid, uint materialid) { const int MOHUNJINGSHI = 1037150; //魔魂晶石id const int MOHUNZHIXIN = 1037159; //魔魂之心id GameStruct.RoleItemInfo item = play.GetItemSystem().FindItem(srcid); GameStruct.RoleItemInfo materialitem = play.GetItemSystem().FindItem(materialid); if (item == null || materialitem == null) return; if (item.GetStrongLevel() >= MAX_STRONGLEVEL) return; if (item.GetStrongLevel() >= mListStrong.Count) return; int rand = GameStruct.IRandom.Random(1, 100); bool bUpdate = false; NetMsg.MsgEquipOperationRet ret = new NetMsg.MsgEquipOperationRet(); ret.Create(null, play.GetGamePackKeyEx()); ret.srcid = srcid; ret.destid = materialid; ret.type = 196611;//{3,0,3,0} if (materialitem.itemid != MOHUNJINGSHI && item.GetStrongLevel() > 9) return; //大于9级后必须使用魔魂晶石提升等级 if (materialitem.itemid == MOHUNJINGSHI) { //检测是否有足够的魔魂晶石 if (!play.GetItemSystem().DeleteItemByID(materialid)) return; if (rand < mListStrong[item.GetStrongLevel()].chance) { item.UpStrongLevel(1); bUpdate = true; ret.ret = 1; } else { ret.ret = 0; //强化等级9以下不往下掉了 2016.1.24 if (item.GetStrongLevel() > 9 && item.DecStrongLevel()) bUpdate = true; } } else if(materialitem.itemid == MOHUNZHIXIN) //魔魂之心必成功 { if (!play.GetItemSystem().DeleteItemByID(materialid)) return; item.UpStrongLevel(1); bUpdate = true; ret.ret = 1; } if (bUpdate) { play.GetItemSystem().UpdateItemInfo(item.id); } play.SendData(ret.GetBuffer()); }