/// <summary> /// Sends a Message in game /// </summary> /// <param name="szSource">Receiver</param> /// <param name="szMsg">Message</param> /// <param name="nType">Message Type (whisper, global, advertisment, [...]</param> /// <returns></returns> public void CreateMessagePacket(string szSource, string szMsg, int nType) { PacketOut o = new PacketOut(20); o.FillString(szSource, 21); o.WriteByte(0); o.WriteByte((byte)szMsg.Length); o.WriteByte((byte)nType); o.WriteString(szMsg, szMsg.Length); o.FinalizeLengthAndChecksum(); m_cGameConnection.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); }
/// <summary> /// Not sure about the content - but it actually sends your GPU with its driver version. /// </summary> /// <returns></returns> private PacketOut CreateReportPacket() { PacketOut o = new PacketOut(8000); o.WriteShort(8704); o.WriteShort(18197); o.WriteByte(81); o.WriteByte(251); o.WriteString("Windows (6.2.9200)|ATI Radeon HD 3600 SeriesDrv Version : 8.17.10.1129", 71); // Only for testing. And yes, my GPU sucks. Problem? o.FinalizeLengthAndChecksum(); return(o); }
static public void CL_CHECK(BaseClient client, PacketIn packet) { Client cclient = client as Client; uint Version = packet.GetUint32(); Log.Debug("CL_CHECK", "Launcher Version : " + Version); PacketOut Out = new PacketOut((byte)Opcodes.LCR_CHECK); if (Version != Program.Version) { Out.WriteByte((byte)CheckResult.LAUNCHER_VERSION); // Version incorrect + message Out.WriteString(Program.Message); client.SendPacket(Out); cclient.Disconnect(); return; } byte File = packet.GetUint8(); UInt64 Len = 0; if (File >= 1) { Len = packet.GetUint64(); } if ((long)Len != Program.Info.Length) { Out.WriteByte((byte)CheckResult.LAUNCHER_FILE); Out.WriteString(Program.StrInfo); } else { Out.WriteByte((byte)CheckResult.LAUNCHER_OK); } cclient.SendPacket(Out); }
public void OnSetPatchNotes(string notes) { if (!VerifyGMLevel(EGmLevel.AllStaff)) { return; } Program.Config.PatchNotes = notes; ConfigMgr.SaveConfig(Program.Config); PacketOut Out = new PacketOut((byte)Opcodes.LCR_PATCH_NOTES); Out.WriteString(notes); ((TCPServer)Server).DispatchPatcket(Out); }
public static void CL_START(BaseClient client, PacketIn packet) { Client cclient = (Client)client; string username = packet.GetString(); string password = packet.GetString(); LoginResult result = LoginResult.LOGIN_BANNED; PacketOut Out = new PacketOut((byte)Opcodes.LCR_START); string ip = client.GetIp().Split(':')[0]; // Check Ip Ban if (Program.AcctMgr.CheckIp(ip)) { result = Program.AcctMgr.CheckAccount(username, password, ip); Log.Debug("CL_START", "Authentication Request : " + username + " " + result); Out.WriteByte((byte)result); if (result == LoginResult.LOGIN_SUCCESS) { var token = Program.AcctMgr.GenerateToken(username); Log.Debug("CL_START", "Sending token to client : " + username + " token : " + token); Out.WriteString(token); } } else { Out.WriteByte((byte)result); // Banned } cclient.SendPacketNoBlock(Out); #if !DEBUG if (result == LoginResult.LOGIN_SUCCESS && Program.Config.SeverOnConnect) { cclient.Disconnect("Transaction complete"); } #endif }
static public void CL_INFO(BaseClient client, PacketIn packet) { Client cclient = client as Client; if (cclient.LastInfoRequest == 0 || cclient.LastInfoRequest <= TCPServer.GetTimeStampMS() + 10000) { cclient.LastInfoRequest = TCPServer.GetTimeStampMS(); List <Realm> Rms = Program.AcctMgr.GetRealms(); PacketOut Out = new PacketOut((byte)Opcodes.LCR_INFO); Out.WriteByte((byte)Rms.Count); foreach (Realm Rm in Rms) { Out.WriteByte(Convert.ToByte(Rm.Info != null)); Out.WriteString(Rm.Name); Out.WriteUInt32(Rm.OnlinePlayers); Out.WriteUInt32(Rm.OrderCount); Out.WriteUInt32(Rm.DestructionCount); } cclient.SendPacket(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.WriteUInt32(id); outpack.WriteString(name); outpack.WriteULong(guanjue); 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 byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteBuff(InternalPacket.HEAD); outpack.WriteUInt16(mParam); outpack.WriteUInt32(gameid); outpack.WriteString(name); outpack.WriteBuff(InternalPacket.TAIL); return outpack.GetBuffer(); }
public byte[] GetBuff() { PacketOut outpack = new PacketOut(); outpack.WriteBuff(InternalPacket.HEAD); outpack.WriteUInt16(mParam); outpack.WriteByte(mType); outpack.WriteString(text); outpack.WriteBuff(InternalPacket.TAIL); return outpack.GetBuffer(); }
public byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteBuff(InternalPacket.HEAD); outpack.WriteUInt16(mparam); outpack.WriteString(account); outpack.WriteBuff(InternalPacket.TAIL); return outpack.GetBuffer(); }
public byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteInt32(id); outpack.WriteByte(friendtype); outpack.WriteUInt32(friendid); outpack.WriteString(friendname); return outpack.GetBuffer(); }
public byte[] BuildRealms(uint sequence) { try { PacketOut Out = new PacketOut((byte)0); Out.Position = 0; Out.WriteUInt32(sequence); Out.WriteUInt16(0); lock (_Realms) { Log.Info("BuildRealm", "Envoi de " + _Realms.Count + " royaumes"); Out.WriteUInt32((uint)_Realms.Count); foreach (Realm Rm in _Realms.Values) { Out.WriteByte(Rm.RealmId); Out.WriteByte((byte)(Rm.RpcId != 0 ? 1 : 0)); Out.WriteUInt32(1); Out.WriteByte(Rm.RealmId); Out.WriteByte(Rm.RealmId); Out.WriteString("[" + Rm.Language + "] " + Rm.Name); Out.WriteUInt32(19); Out.WriteString("setting.allow_trials"); Out.WriteString(Rm.AllowTrials); Out.WriteString("setting.charxferavailable"); Out.WriteString(Rm.CharfxerAvailable); Out.WriteString("setting.language"); Out.WriteString(Rm.Language); Out.WriteString("setting.legacy"); Out.WriteString(Rm.Legacy); Out.WriteString("setting.manualbonus.realm.destruction"); Out.WriteString(Rm.BonusDestruction); Out.WriteString("setting.manualbonus.realm.order"); Out.WriteString(Rm.BonusOrder); Out.WriteString("setting.name"); Out.WriteString(Rm.Name); Out.WriteString("setting.net.address"); Out.WriteString(Rm.Adresse); Out.WriteString("setting.net.port"); Out.WriteString(Rm.Port.ToString()); Out.WriteString("setting.redirect"); Out.WriteString(Rm.Redirect); Out.WriteString("setting.region"); Out.WriteString(Rm.Region); Out.WriteString("setting.retired"); Out.WriteString(Rm.Retired); Out.WriteString("status.queue.Destruction.waiting"); Out.WriteString(Rm.WaitingDestruction); Out.WriteString("status.queue.Order.waiting"); Out.WriteString(Rm.WaitingOrder); Out.WriteString("status.realm.destruction.density"); Out.WriteString(Rm.DensityDestruction); Out.WriteString("status.realm.order.density"); Out.WriteString(Rm.DensityOrder); Out.WriteString("status.servertype.openrvr"); Out.WriteString(Rm.OpenRvr); Out.WriteString("status.servertype.rp"); Out.WriteString(Rm.Rp); Out.WriteString("status.status"); Out.WriteString(Rm.Status); } } Out.WriteUInt32(0); return(Out.ToArray()); } catch (Exception e) { return(new byte[0]); } }
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(); }
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.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 void Login(string username, byte[] hash, string installID) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < hash.Length; i++) { sb.Append(hash[i].ToString("x2")); } var password = sb.ToString(); string ip = GetIp().Split(':')[0]; LoginResult result = LoginResult.LOGIN_BANNED; PacketOut Out = new PacketOut((byte)Opcodes.LCR_LOGIN); if (Program.AcctMgr.CheckIp(ip)) { int accountId; result = Program.AcctMgr.CheckAccount(username, password, ip, out accountId); var account = Program.AcctMgr.GetAccount(accountId); if (account == null) { result = LoginResult.LOGIN_INVALID_USERNAME_PASSWORD; } else { if (account.CoreLevel == 0) { if (account.GmLevel == 0) { result = LoginResult.LOGIN_PATCHER_NOT_ALLOWED; } } } Out.WriteByte((byte)result); Out.WriteUInt32((uint)Program.Config.ServerState); if (result == LoginResult.LOGIN_SUCCESS) { string token = Program.AcctMgr.GenerateToken(username); Out.WriteString(token); OnLogin(account, token, installID); Out.WriteUInt32((uint)account.GmLevel); } else { Out.WriteString(""); Out.WriteUInt32((uint)0); } } else { Out.WriteByte((byte)result); // Banned Out.WriteString(""); Out.WriteUInt32((uint)0); Socket.Close(); } SendTCPRaw(Out); }
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[] BuildRealms(uint sequence) { try { PacketOut Out = new PacketOut((byte)0); Out.Position = 0; Out.WriteUInt32(sequence); Out.WriteUInt16(0); lock (_Realms) { Log.Info("BuildRealm", "Envoi de " + _Realms.Count + " royaumes"); Out.WriteUInt32((uint)_Realms.Count); foreach (Realm Rm in _Realms.Values) { Out.WriteByte(Rm.RealmId); Out.WriteByte((byte)(Rm.RpcId != 0 ? 1 : 0)); Out.WriteUInt32(1); Out.WriteByte(Rm.RealmId); Out.WriteByte(Rm.RealmId); Out.WriteString("[" + Rm.Language + "] " + Rm.Name); Out.WriteUInt32(19); Out.WriteString("setting.allow_trials"); Out.WriteString(Rm.AllowTrials); Out.WriteString("setting.charxferavailable"); Out.WriteString(Rm.CharfxerAvailable); Out.WriteString("setting.language"); Out.WriteString(Rm.Language); Out.WriteString("setting.legacy"); Out.WriteString(Rm.Legacy); Out.WriteString("setting.manualbonus.realm.destruction"); Out.WriteString(Rm.BonusDestruction); Out.WriteString("setting.manualbonus.realm.order"); Out.WriteString(Rm.BonusOrder); Out.WriteString("setting.name"); Out.WriteString(Rm.Name); Out.WriteString("setting.net.address"); Out.WriteString(Rm.Adresse); Out.WriteString("setting.net.port"); Out.WriteString(Rm.Port.ToString()); Out.WriteString("setting.redirect"); Out.WriteString(Rm.Redirect); Out.WriteString("setting.region"); Out.WriteString(Rm.Region); Out.WriteString("setting.retired"); Out.WriteString(Rm.Retired); Out.WriteString("status.queue.Destruction.waiting"); Out.WriteString(Rm.WaitingDestruction); Out.WriteString("status.queue.Order.waiting"); Out.WriteString(Rm.WaitingOrder); Out.WriteString("status.realm.destruction.density"); Out.WriteString(Rm.DensityDestruction); Out.WriteString("status.realm.order.density"); Out.WriteString(Rm.DensityOrder); Out.WriteString("status.servertype.openrvr"); Out.WriteString(Rm.OpenRvr); Out.WriteString("status.servertype.rp"); Out.WriteString(Rm.Rp); Out.WriteString("status.status"); Out.WriteString(Rm.Status); } } Out.WriteUInt32(0); return Out.ToArray(); } catch (Exception e) { return new byte[0]; } }
public byte[] GetBuffer() { PacketOut outpack = new PacketOut(); outpack.WriteString(members_name); outpack.WriteLong(money); outpack.WriteInt16(rank); outpack.WriteBool(boChange); return outpack.GetBuffer(); }