//构造封包 public byte[] StructurePack(byte[] pDataBytes) { uint dataCK = m_Encrypt.GetCRC16(pDataBytes); //包头 PacketOut PackHead = new PacketOut(); PackHead.WriteUInt16((UInt16)GamePackEx.DEFAULT_TAG); PackHead.WriteUInt16((UInt16)pDataBytes.Length); PackHead.WriteUInt16((UInt16)dataCK); PackHead.WriteUInt16(this.HEADER_CHECK_KEY); this.HEADER_CHECK_KEY++; if (this.HEADER_CHECK_KEY > 0xFFFF) { this.HEADER_CHECK_KEY = 0; } PackHead.WriteInt32(0); PackHead.WriteInt32(0); //计算包头CRC byte[] HeaderBytes = PackHead.GetBuffer(); uint headerCRC = m_Encrypt.GetCRC16(HeaderBytes); byte[] crc_data = BitConverter.GetBytes(headerCRC); Buffer.BlockCopy(crc_data, 0, HeaderBytes, 6, sizeof(int)); m_Encrypt.Encode(HeaderBytes, 4, 4); PacketOut pack = new PacketOut(); pack.WriteBuff(HeaderBytes); pack.WriteBuff(pDataBytes); return(pack.GetBuffer()); }
public void SendUploadInfo(PatcherFile file) { _uploadFile = file; // Send out notification of file transfer PacketOut Out = new PacketOut((byte)Opcodes.LCR_DATA_START); Out.WriteUInt32((uint)_uploadFile.ArchiveID); Out.WriteUInt64(_uploadFile.FilenameHash); Out.WriteUInt32((uint)_uploadFile.FileHash); Out.WriteUInt64((ulong)_uploadFile.CompressedSize); Out.WriteUInt64((ulong)_uploadFile.FileSize); Out.WriteInt32((int)_uploadFile.Compress); Out.WriteInt32((int)_uploadFile.Type); Out.WriteInt32((int)_uploadFile.OldCrc); if (_uploadFile.Filename != null) { Out.WriteUInt16((ushort)_uploadFile.Filename.Length); Out.Write(System.Text.ASCIIEncoding.ASCII.GetBytes(_uploadFile.Filename)); } else { Out.WriteUInt16(0); } SendTCPRaw(Out); }
public static void SendConnectMapServer(GameSession session, int key, int key2) { byte[] defdata = { 232, 16, 67, 3 }; byte[] defdata2 = { 121, 39, 0, 0, 49, 50, 48, 46, 49, 51, 50, 46, 54, 57, 46, 49, 52, 55, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; byte[] ipdata = Coding.GetDefauleCoding().GetBytes(m_GameServerIP); PacketOut packout = new PacketOut(session.GetGamePackKeyEx()); packout.WriteUInt16(84); packout.WriteUInt16(PacketProtoco.S_GAMESERVERINFO); packout.WriteInt32(key); packout.WriteInt32(key2); packout.WriteInt32(m_GameServerPort); packout.WriteBuff(defdata); packout.WriteBuff(ipdata); for (int i = 0; i < 28 - ipdata.Length; i++) { packout.WriteByte(0); } packout.WriteBuff(defdata2); defdata = packout.Flush(); server.SendData(session.m_Socket, defdata); }
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); }
public void OnRequestManifestList() { if (!VerifyLoggedIn()) { return; } if (Program.Config.ServerState == ServerState.PATCH) { return; } var list = PatchMgr._Patch_Assets; var files = PatchMgr._Patch_Files.ToList(); PacketOut Out = new PacketOut((byte)Opcodes.LCR_REQUEST_MANIFEST_LIST); Out.WriteInt32(list.Count); foreach (var myp in list) { Patch_MYP pMYP = myp.Key; List <PatchAsset> pAssets = myp.Value; uint hashhash = 0; var hashes = pAssets.ToList(); foreach (var asset in hashes) { var newcrc = BitConverter.GetBytes(asset.CRC32); hashhash = Utils.Adler32(hashhash, newcrc, 4); //Console.WriteLine("CRC32: " + asset.CRC32 + " HH:" + hashhash); } Out.WriteByte((byte)pMYP.Id); Out.WriteUInt32(pMYP.AssetCount); Out.WriteUInt64(pMYP.ExtractedSize); Out.WriteUInt32(hashhash); } Out.WriteInt32(files.Count); foreach (var file in files) { Out.WriteString(file.Name); Out.WriteUInt32(file.CRC32); Out.WriteUInt64((ulong)file.Size); } SendTCPRaw(Out); }
public void SendError(LauncherErrorCode errorCode, string msg) { //send out notification of file transfer PacketOut Out = new PacketOut((byte)Opcodes.LCR_ERROR); Out.WriteInt32((int)errorCode); Out.WriteString(msg); SendTCPRaw(Out); }
private PacketOut CreateAESPacket() { PacketOut o = new PacketOut(71); m_cRSA = new OpenSSL.Crypto.RSA(); m_cRSA.GenerateKeys(1024, 65537, null, null); o.WriteInt32(m_cRSA.PublicKeyAsPEM.Length); o.FillString(m_cRSA.PublicKeyAsPEM, m_cRSA.PublicKeyAsPEM.Length); return(o); }
private void GenerateLoginPacket(byte[] key, TCPConnection con) { PacketOut o = new PacketOut(10010); var a = EncryptAES(key, m_szPassword); o.FillString(m_szName, 61); o.WriteInt32(a.Length); o.Write(a, 0, a.Length); o.Fill(0, 61 - a.Length); con.SendTCP(o); }
static public void Send(LobbyClient client) { PacketOut Out = new PacketOut((uint)Opcodes.ANS_LOGIN_SUCCESS); Out.WriteParsedString("Welcome to rebornAPB", 48); Out.WriteUInt32Reverse(1); Out.WriteInt64Reverse(TCPManager.GetTimeStamp()); Out.WriteUInt32Reverse(client.Account.IsAdmin); Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(0); Out.WriteInt32Reverse(0); Out.WriteString(""); Out.WriteInt32(0); Out.WriteInt32(0); Out.WriteInt32Reverse(0); Out.WriteString(""); Out.WriteInt32Reverse(0); client.Send(Out); }
public void OnFilePartRequest(long offset, int size, int sequence) { if (_uploadFile != null) { byte[] data = new byte[UPLOAD_SIZE]; long read_size = _uploadFile.Read(data, (long)offset, size); if (read_size > 0) { PacketOut Out = new PacketOut((byte)Opcodes.LCR_DATA_PART); Out.WriteInt64(offset); Out.WriteInt32((int)read_size); Out.WriteInt32((int)sequence); Out.Write(data, 0, data.Length); SendTCPRaw(Out); } if (offset + size >= (long)_uploadFile.CompressedSize) { _uploadFile.Close(); _uploadFile = null; _uploading = false; ProcessFileUploadQueue(); } } }
public void SetTradGameGold(int gamegold) { if (gamegold <= 0) { return; } PlayerObject obj = UserEngine.Instance().FindPlayerObjectToTypeID(GetTradTarget()); if (obj == null) { return; } mnGameGold = gamegold; //发给对方 PacketOut outpack = new PacketOut(obj.GetGamePackKeyEx()); outpack.WriteUInt16(16); outpack.WriteUInt16(1056); outpack.WriteInt32(mnGameGold); outpack.WriteInt32(12); outpack.WriteInt32(0); obj.SendData(outpack.Flush()); }
public static void OnConnect(Socket s) { GameSession session; lock (_lock_session) { session = new GameSession(s); m_DicSession[s] = session; } //发送key PacketOut packout = new PacketOut(session.GetGamePackKeyEx()); packout.WriteInt16(8); //长度 packout.WriteUInt16(PacketProtoco.S_KEY); packout.WriteInt32(m_Key); byte[] data = packout.Flush(); server.SendData(s, data); }
public static void Send(WorldClient cclient) { PacketOut Out = new PacketOut((uint)Opcodes.ANS_DISTRICT_ENTER); if (cclient.Reserved != null) { Out.WriteInt32((int)ResponseCodes.RC_SUCCESS); string[] result = cclient.Reserved.IP.Split('.'); foreach (string s in result) { Out.WriteByte(Convert.ToByte(s)); } Out.WriteUInt16Reverse(cclient.Reserved.Port); ulong timestamp = (ulong)TCPManager.GetTimeStamp(); Out.WriteUInt64Reverse(timestamp); var timestampBytes = BitConverter.GetBytes(timestamp); var sha1 = new Sha1Digest(); sha1.BlockUpdate(cclient.Crypto.Key, 0, cclient.Crypto.Key.Length); sha1.BlockUpdate(timestampBytes, 0, timestampBytes.Length); var handshakeHash = new byte[sha1.GetDigestSize()]; sha1.DoFinal(handshakeHash, 0); byte[] hash = new byte[handshakeHash.Length]; Buffer.BlockCopy(handshakeHash, 0, hash, 0, handshakeHash.Length); sha1 = new Sha1Digest(); sha1.BlockUpdate(cclient.Crypto.Key, 0, cclient.Crypto.Key.Length); sha1.BlockUpdate(handshakeHash, 0, handshakeHash.Length); var encryptionHash = new byte[sha1.GetDigestSize()]; sha1.DoFinal(encryptionHash, 0); var encryptionKey = new byte[16]; Buffer.BlockCopy(encryptionHash, 0, encryptionKey, 0, 16); cclient.Reserved.tcp.Client.Send(new byte[] { 0x31, Convert.ToByte(cclient.Account.Index) }); cclient.Reserved.tcp.Client.Send(encryptionKey); } else { Out.WriteUInt32Reverse((uint)ResponseCodes.RC_DISTRICT_RESERVE_DISTRICT_OFFLINE); } cclient.Send(Out); }
//获取远程摊位 //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 byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteInt32(id); outpack.WriteByte(friendtype); outpack.WriteUInt32(friendid); outpack.WriteString(friendname); return outpack.GetBuffer(); }
public byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteUInt32(id); outpack.WriteUInt32(itemid); outpack.WriteString(name); outpack.WriteFloat(phyatk_grow_rate); outpack.WriteFloat(phyatk_grow_rate_max); outpack.WriteFloat(magicatk_grow_rate); outpack.WriteFloat(magicatk_grow_rate_max); outpack.WriteFloat(life_grow_rate); outpack.WriteFloat(defense_grow_rate); outpack.WriteFloat(magicdef_grow_rate); outpack.WriteInt32(init_life); outpack.WriteInt32(init_atk_min); outpack.WriteInt32(init_atk_max); outpack.WriteInt32(init_magicatk_min); outpack.WriteInt32(init_magicatk_max); outpack.WriteInt32(init_defense); outpack.WriteInt32(init_magicdef); outpack.WriteInt32(luck); outpack.WriteInt32(intimacy); outpack.WriteInt16(level); outpack.WriteInt32(card); outpack.WriteInt32(exp); outpack.WriteInt32(quality); outpack.WriteInt32(recall_count); outpack.WriteInt32(wuxing); outpack.WriteInt32(mListMagicInfo.Count); for (int i = 0; i < mListMagicInfo.Count; i++) { outpack.WriteInt32(mListMagicInfo[i].id); //这里的owernid 宿主在上面一个包含类里面,所以不用写 outpack.WriteUInt32(mListMagicInfo[i].magicid); outpack.WriteUInt32(mListMagicInfo[i].exp); } return outpack.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 byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteBuff(InternalPacket.HEAD); outpack.WriteUInt16(mParam); outpack.WriteByte(ret); outpack.WriteInt32(play_id); outpack.WriteInt32(legion_id); outpack.WriteLong(money); outpack.WriteUInt32(boss_id); outpack.WriteBuff(InternalPacket.TAIL); return outpack.GetBuffer(); }
public byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteBuff(InternalPacket.HEAD); outpack.WriteUInt16(mParam); outpack.WriteInt32(player_id); outpack.WriteBuff(mInfo.GetBuffer()); outpack.WriteBuff(InternalPacket.TAIL); return outpack.GetBuffer(); }
//收摊 //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 byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteUInt32(id); outpack.WriteString(name); outpack.WriteByte(title); outpack.WriteInt32(leader_id); outpack.WriteString(leader_name); outpack.WriteLong(money); outpack.WriteString(notice); outpack.WriteInt32(list_member.Count); for (int i = 0; i < list_member.Count; i++) { outpack.WriteBuff(list_member[i].GetBuffer()); } return outpack.GetBuffer(); }
public byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteBuff(InternalPacket.HEAD); outpack.WriteUInt16(mParam); outpack.WriteInt32(list_item.Count); for (int i = 0; i < list_item.Count; i++) { outpack.WriteBuff(list_item[i].GetBuffer()); } outpack.WriteBuff(InternalPacket.TAIL); return outpack.GetBuffer(); }
//摊位出售道具 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} }
public byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteBuff(InternalPacket.HEAD); outpack.WriteUInt16(mParam); outpack.WriteInt32(accountid); outpack.WriteBool(IsExit); outpack.WriteString(name); outpack.WriteUInt32(lookface); outpack.WriteUInt32(hair); outpack.WriteByte(level); outpack.WriteInt32(exp); outpack.WriteUInt32(life); outpack.WriteUInt32(mana); outpack.WriteByte(profession); outpack.WriteInt16(pk); outpack.WriteLong(gold); outpack.WriteLong(gamegold); outpack.WriteLong(stronggold); outpack.WriteUInt32(mapid); outpack.WriteInt16(x); outpack.WriteInt16(y); outpack.WriteString(hotkey); outpack.WriteULong(guanjue); outpack.WriteByte(godlevel); outpack.WriteByte(maxeudemon); outpack.WriteBuff(InternalPacket.TAIL); return outpack.GetBuffer(); }
public byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteBuff(InternalPacket.HEAD); outpack.WriteUInt16(mParam); outpack.WriteInt32(ownerid); outpack.WriteInt32(key); outpack.WriteInt32(key2); outpack.WriteInt32(mListMagic.Count); for (int i = 0; i < mListMagic.Count; i++) { MagicInfo item = mListMagic[i]; outpack.WriteInt32(item.id); outpack.WriteUInt32(item.magicid); outpack.WriteByte(item.level); outpack.WriteUInt32(item.exp); } outpack.WriteBuff(InternalPacket.TAIL); return outpack.GetBuffer(); }
//角色摆摊 //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 byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteBuff(InternalPacket.HEAD); outpack.WriteUInt16(mparam); outpack.WriteInt32(id); outpack.WriteString(account); outpack.WriteString(order); outpack.WriteInt32(money); outpack.WriteBuff(InternalPacket.TAIL); return outpack.GetBuffer(); }
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 byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteBuff(InternalPacket.HEAD); outpack.WriteUInt16(mParam); outpack.WriteUInt32(gameid); outpack.WriteInt32(key); outpack.WriteInt32(key2); outpack.WriteBuff(account); outpack.WriteBuff(InternalPacket.TAIL); return outpack.GetBuffer(); }
public static byte[] BuildCharactersList(int AccountId) { Log.Debug("BuildCharactersList", "AcocuntId = " + AccountId); Character[] Chars = GetAccountChar(AccountId)._Chars; int count = 0; PacketOut Out = new PacketOut(0); Out.Position = 0; Character Char = null; for (int k = 0; k < MAX_SLOT; ++k) { Char = Chars[k]; if (Char != null) { List <Character_items> Items = CharMgr.GetItemChar(Char.CharacterId); /**** char slot start ****/ Out.FillString(Char.Name, 48); // name Out.WriteByte(Char.Value[0].Level); // Level Out.WriteByte(Char.Career); //career Out.WriteByte(Char.Realm); // realm Out.WriteByte(Char.Sex); // gender Out.WriteUInt16R(Char.ModelId); //model id Out.WriteUInt16R(Char.Value[0].ZoneId); // zone id Out.Fill(0, 12); // unk Character_items Item = null; for (UInt16 SlotId = 14; SlotId < 30; ++SlotId) { Item = Items.Find(item => item != null && item.SlotId == SlotId); if (Item == null) { Out.WriteInt32(0); Out.WriteInt32(0); } else { Out.WriteInt32((int)Item.ModelId); Out.WriteUInt16R(0); // primary dye Out.WriteUInt16R(0); // secondary dye } } Out.WriteUInt32(0x00); // 0x00000000 for (int i = 0; i < 4; i++) { Out.WriteUInt32(0xFF000000); Out.WriteUInt32(0x00); } Out.WriteUInt32(0xFF000000); //weapons for (UInt16 SlotId = 10; SlotId < 13; ++SlotId) { Item = Items.Find(item => item != null && item.SlotId == SlotId); if (Item == null) { Out.WriteUInt32(0); } else { Out.WriteUInt16R((ushort)Item.ModelId); Out.WriteUInt16(0); } } Out.Fill(0, 8); Out.WriteUInt16(0xFF00); Out.WriteByte(0); Out.WriteByte(Char.Race); // char slot position Out.WriteUInt16(0x00); //unk /* //Traits [8 bytes] * Out.WriteByte(1); //face * Out.WriteByte(4); //jewel * Out.WriteByte(4); //scar * Out.WriteByte(0); //hair * Out.WriteByte(3); //hair color * Out.WriteByte(2); //skin color * Out.WriteByte(0); //eye color * Out.WriteByte(5); //metal color */ Out.Write(Char.bTraits, 0, Char.bTraits.Length); Out.Fill(0, 14); //unk count++; } } for (int i = 0; i < (MAX_SLOT - count); ++i) { Out.Write(new byte[284], 0, 284); } return(Out.ToArray()); }
public byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteBuff(InternalPacket.HEAD); outpack.WriteUInt16(mParam); outpack.WriteInt32(playerid); outpack.WriteInt32(key); outpack.WriteInt32(key2); outpack.WriteInt32(mListItem.Count); for (int i = 0; i < mListItem.Count; i++) { RoleData_Item item = mListItem[i]; outpack.WriteBuff(item.GetBuffer()); //outpack.WriteUInt32(item.id); //outpack.WriteUInt32(item.itemid); //outpack.WriteUInt16(item.postion); //outpack.WriteByte(item.stronglv); //outpack.WriteByte(item.gemcount); //outpack.WriteUInt32(item.gem1); //outpack.WriteUInt32(item.gem2); //outpack.WriteString(item.forgename); //outpack.WriteUInt16(item.amount); //outpack.WriteInt32(item.war_ghost_exp); //outpack.WriteByte(item.di_attack); //outpack.WriteByte(item.shui_attack); //outpack.WriteByte(item.huo_attack); //outpack.WriteByte(item.feng_attack); //outpack.WriteInt32(item.property); //outpack.WriteByte(item.gem3); //outpack.WriteInt32(item.god_strong); //outpack.WriteInt32(item.god_exp); } outpack.WriteBuff(InternalPacket.TAIL); return outpack.GetBuffer(); }
public byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteBuff(InternalPacket.HEAD); outpack.WriteUInt16(mParam); outpack.WriteUInt32(gameid); outpack.WriteInt32(accountid); outpack.WriteString(name); outpack.WriteUInt32(lookface); outpack.WriteByte(profession); outpack.WriteBuff(InternalPacket.TAIL); return outpack.GetBuffer(); }
public byte[] GetBuffer() { PacketOut outpack = new PacketOut(); // outpack.WriteBuff(InternalPacket.HEAD); // outpack.WriteUInt16(mParam); outpack.WriteUInt32(id); outpack.WriteInt32(playerid); outpack.WriteUInt32(itemid); outpack.WriteUInt16(postion); outpack.WriteByte(stronglv); outpack.WriteUInt32(gem1); outpack.WriteUInt32(gem2); outpack.WriteString(forgename); outpack.WriteUInt16(amount); outpack.WriteInt32(war_ghost_exp); outpack.WriteByte(di_attack); outpack.WriteByte(shui_attack); outpack.WriteByte(huo_attack); outpack.WriteByte(feng_attack); outpack.WriteInt32(property); outpack.WriteUInt32(gem3); outpack.WriteInt32(god_strong); outpack.WriteInt32(god_exp); // outpack.WriteBuff(InternalPacket.TAIL); return outpack.GetBuffer(); }