public static void GetKeyScopesMap(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> Result = new List <Blaze.Tdf>(); List <string> l1 = new List <string>() { "ldgy" }; List <Blaze.TdfStruct> l2 = new List <Blaze.TdfStruct>(); List <Blaze.Tdf> l3 = new List <Blaze.Tdf>(); l3.Add(Blaze.TdfInteger.Create("AGKY", 0)); l3.Add(Blaze.TdfInteger.Create("ENAG", 0)); l3.Add(Blaze.TdfDoubleList.Create("KSVL", 0, 0, new List <long>() { 0 }, new List <long>() { 15 }, 1)); l2.Add(Blaze.TdfStruct.Create("0", l3)); Result.Add(Blaze.TdfDoubleList.Create("KSIT", 1, 3, l1, l2, 1)); byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, Result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void GetStatsByGroupAsync(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, new List <Blaze.Tdf>()); ns.Write(buff, 0, buff.Length); ns.Flush(); GetStatsAsyncNotification(p, pi, ns); }
public static void LoginPersona(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { uint t = Blaze.GetUnixTimeStamp(); List <Blaze.Tdf> SESS = new List <Blaze.Tdf>(); SESS.Add(Blaze.TdfInteger.Create("BUID", pi.userId)); SESS.Add(Blaze.TdfInteger.Create("FRST", 0)); SESS.Add(Blaze.TdfString.Create("KEY\0", "some_client_key")); SESS.Add(Blaze.TdfInteger.Create("LLOG", t)); SESS.Add(Blaze.TdfString.Create("MAIL", "")); List <Blaze.Tdf> PDTL = new List <Blaze.Tdf>(); PDTL.Add(Blaze.TdfString.Create("DSNM", pi.profile.name)); PDTL.Add(Blaze.TdfInteger.Create("LAST", t)); PDTL.Add(Blaze.TdfInteger.Create("PID\0", pi.userId)); PDTL.Add(Blaze.TdfInteger.Create("STAS", 0)); PDTL.Add(Blaze.TdfInteger.Create("XREF", 0)); PDTL.Add(Blaze.TdfInteger.Create("XTYP", 0)); SESS.Add(Blaze.TdfStruct.Create("PDTL", PDTL)); SESS.Add(Blaze.TdfInteger.Create("UID\0", pi.userId)); byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, SESS); ns.Write(buff, 0, buff.Length); ns.Flush(); AsyncUserSessions.NotifyUserAdded(pi, p, pi, ns); AsyncUserSessions.NotifyUserStatus(pi, p, pi, ns); }
public static void LookupUserInformation(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> Result = new List <Blaze.Tdf>(); List <Blaze.Tdf> ADDR = new List <Blaze.Tdf>(); List <Blaze.Tdf> EXIP = new List <Blaze.Tdf>(); EXIP.Add(Blaze.TdfInteger.Create("IP", 0x7F000001)); EXIP.Add(Blaze.TdfInteger.Create("PORT", pi.inPort)); ADDR.Add(Blaze.TdfStruct.Create("EXIP", EXIP)); List <Blaze.Tdf> INIP = new List <Blaze.Tdf>(); INIP.Add(Blaze.TdfInteger.Create("IP", pi.inIp)); INIP.Add(Blaze.TdfInteger.Create("PORT", pi.inPort)); ADDR.Add(Blaze.TdfStruct.Create("INIP", INIP)); Result.Add(Blaze.TdfStruct.Create("ADDR", ADDR, true)); List <Blaze.Tdf> NQOS = new List <Blaze.Tdf>(); NQOS.Add(Blaze.TdfInteger.Create("DBPS", 0)); NQOS.Add(Blaze.TdfInteger.Create("NATT", 4)); NQOS.Add(Blaze.TdfInteger.Create("UBPS", 0)); Result.Add(Blaze.TdfStruct.Create("NQOS", NQOS)); byte[] buff = Blaze.CreatePacket(p.Component, 1, 0, 0x2000, 0, Result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void Login(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { uint t = Blaze.GetUnixTimeStamp(); List <Blaze.Tdf> Result = new List <Blaze.Tdf>(); Result.Add(Blaze.TdfString.Create("LDHT", "")); Result.Add(Blaze.TdfInteger.Create("NTOS", 0)); Result.Add(Blaze.TdfString.Create("PCTK", "")); List <Blaze.TdfStruct> playerentries = new List <Blaze.TdfStruct>(); List <Blaze.Tdf> PlayerEntry = new List <Blaze.Tdf>(); PlayerEntry.Add(Blaze.TdfString.Create("DSNM", pi.name)); PlayerEntry.Add(Blaze.TdfInteger.Create("LAST", t)); PlayerEntry.Add(Blaze.TdfInteger.Create("PID\0", pi.id)); PlayerEntry.Add(Blaze.TdfInteger.Create("STAS", 2)); PlayerEntry.Add(Blaze.TdfInteger.Create("XREF", 0)); PlayerEntry.Add(Blaze.TdfInteger.Create("XTYP", 0)); playerentries.Add(Blaze.TdfStruct.Create("0", PlayerEntry)); Result.Add(Blaze.TdfList.Create("PLST", 3, 1, playerentries)); Result.Add(Blaze.TdfString.Create("PRIV", "")); Result.Add(Blaze.TdfString.Create("SKEY", "some_client_key")); Result.Add(Blaze.TdfInteger.Create("SPAM", 1)); Result.Add(Blaze.TdfString.Create("THST", "")); Result.Add(Blaze.TdfString.Create("TSUI", "")); Result.Add(Blaze.TdfString.Create("TURI", "")); Result.Add(Blaze.TdfInteger.Create("UID\0", pi.userId)); byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, Result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void NotifyPlayerJoining(PlayerInfo src, Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { uint t = Blaze.GetUnixTimeStamp(); List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(Blaze.TdfInteger.Create("GID\0", pi.game.id)); List <Blaze.Tdf> PDAT = new List <Blaze.Tdf>(); PDAT.Add(Blaze.TdfInteger.Create("EXID", pi.userId)); PDAT.Add(Blaze.TdfInteger.Create("GID\0", pi.game.id)); PDAT.Add(Blaze.TdfInteger.Create("LOC\0", pi.loc)); PDAT.Add(Blaze.TdfString.Create("NAME", pi.profile.name)); PDAT.Add(Blaze.TdfInteger.Create("PID\0", pi.userId)); PDAT.Add(BlazeHelper.CreateNETFieldUnion(pi, "PNET")); PDAT.Add(Blaze.TdfInteger.Create("SID\0", pi.slot)); PDAT.Add(Blaze.TdfInteger.Create("STAT", pi.stat)); PDAT.Add(Blaze.TdfInteger.Create("TIDX", 0xFFFF)); PDAT.Add(Blaze.TdfInteger.Create("TIME", t)); PDAT.Add(Blaze.TdfInteger.Create("UID\0", pi.userId)); result.Add(Blaze.TdfStruct.Create("PDAT", PDAT)); byte[] buff = Blaze.CreatePacket(0x4, 0x15, 0, 0x2000, 0, result); ns.Write(buff, 0, buff.Length); ns.Flush(); BlazeServer.Log("[CLNT] #" + src.userId + " [0004:0015] NotifyPlayerJoining", System.Drawing.Color.Black); }
public static void HandlePacket(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { switch (p.Command) { case 2: Ping(p, pi, ns); break; case 7: PreAuth(p, pi, ns); break; case 8: PostAuth(p, pi, ns); break; case 0x16: SetClientMetrics(p, pi, ns); break; case 0xC: UserSettingsLoadAll(p, pi, ns); break; } }
public static void SetGameAttributes(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> input = Blaze.ReadPacketContent(p); pi.game.ATTR = (Blaze.TdfDoubleList)input[0]; List <Blaze.Tdf> result = new List <Blaze.Tdf>(); byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, result); ns.Write(buff, 0, buff.Length); ns.Flush(); foreach (PlayerInfo peer in pi.game.players) { if (peer != null) { try { AsyncGameManager.NotifyGameSettingsChange(peer, p, pi, peer.ns); } catch { pi.game.removePlayer((int)peer.userId); Logger.Error("[CLNT] #" + pi.userId + " : 'SetGameAttributes' peer crashed!"); } } } }
public static void RemovePlayer(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> input = Blaze.ReadPacketContent(p); Blaze.TdfInteger CNTX = (Blaze.TdfInteger)input[1]; Blaze.TdfInteger PID = (Blaze.TdfInteger)input[3]; Blaze.TdfInteger REAS = (Blaze.TdfInteger)input[4]; pi.game.removePlayer((int)PID.Value); GC.Collect(); byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, new List <Blaze.Tdf>()); ns.Write(buff, 0, buff.Length); ns.Flush(); foreach (PlayerInfo player in BlazeServer.allClients) { if (player != null && player.userId == PID.Value) { player.cntx = CNTX.Value; } } foreach (PlayerInfo player in pi.game.players) { if (player != null && player.userId != PID.Value) { try { AsyncGameManager.NotifyPlayerRemoved(player, p, player, player.ns, PID.Value, CNTX.Value, REAS.Value); } catch { Logger.Error("[CLNT] #" + pi.userId + " : 'RemovePlayer' peer crashed!"); } } } }
private static void Ping(Blaze.Packet p, NetworkStream ns) { List <Blaze.Tdf> Result = new List <Blaze.Tdf>(); Result.Add(Blaze.TdfInteger.Create("STIM", Blaze.GetUnixTimeStamp())); byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, Result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void HandlePacket(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { switch (p.Command) { case 0x14: UpdateNetworkInfo(p, pi, ns); break; } }
public static void DestroyGame(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(Blaze.ReadPacketContent(p)[0]); byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void NotifyGameStateChange(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(Blaze.TdfInteger.Create("GID\0", pi.game.id)); result.Add(Blaze.TdfInteger.Create("GSTA", pi.game.GSTA)); byte[] buff = Blaze.CreatePacket(4, 0x64, 0, 0x2000, 0, result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void NotifyUserAdded(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(BlazeHelper.CreateUserDataStruct(pi)); result.Add(BlazeHelper.CreateUserStruct(pi)); byte[] buff = Blaze.CreatePacket(0x7802, 0x2, 0, 0x2000, 0, result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void PlayerJoinCompletedNotification(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(Blaze.TdfInteger.Create("GID\0", pi.game.id)); result.Add(Blaze.TdfInteger.Create("PID\0", pi.userId)); byte[] buff = Blaze.CreatePacket(0x4, 0x1E, 0, 0x2000, 0, result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void NotifyGameSettingsChange(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(Blaze.TdfInteger.Create("ATTR", pi.game.GSET)); result.Add(Blaze.TdfInteger.Create("GID", pi.game.id)); byte[] buff = Blaze.CreatePacket(p.Component, 0x6E, 0, 0x2000, 0, result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void NotifyUserStatus(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(Blaze.TdfInteger.Create("FLGS", 3)); result.Add(Blaze.TdfInteger.Create("ID\0\0", pi.userId)); byte[] buff = Blaze.CreatePacket(0x7802, 0x5, 0, 0x2000, 0, result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void NotifyUserRemoved(PlayerInfo src, Blaze.Packet p, long pid, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(Blaze.TdfInteger.Create("BUID", pid)); byte[] buff = Blaze.CreatePacket(0x7802, 0x3, 0, 0x2000, 0, result); ns.Write(buff, 0, buff.Length); ns.Flush(); BlazeServer.Log("[CLNT] #" + src.userId + " [7802:0001] NotifyUserRemoved"); }
public static void UserSessionExtendedDataUpdateNotification(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> Result = new List <Blaze.Tdf>(); Result.Add(BlazeHelper.CreateUserDataStruct(pi)); Result.Add(Blaze.TdfInteger.Create("USID", pi.userId)); byte[] buff = Blaze.CreatePacket(0x7802, 1, 0, 0x2000, 0, Result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void NotifyUserStatus(PlayerInfo src, Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(Blaze.TdfInteger.Create("FLGS", 3)); result.Add(Blaze.TdfInteger.Create("ID\0\0", pi.userId)); byte[] buff = Blaze.CreatePacket(0x7802, 0x5, 0, 0x2000, 0, result); ns.Write(buff, 0, buff.Length); ns.Flush(); BlazeServer.Log("[CLNT] #" + src.userId + " [7802:0001] NotifyUserStatus", System.Drawing.Color.Black); }
public static void NotifyUserAdded(PlayerInfo src, Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(BlazeHelper.CreateUserDataStruct(pi)); result.Add(BlazeHelper.CreateUserStruct(pi)); byte[] buff = Blaze.CreatePacket(0x7802, 0x2, 0, 0x2000, 0, result); ns.Write(buff, 0, buff.Length); ns.Flush(); BlazeServer.Log("[CLNT] #" + src.userId + " [7802:0001] NotifyUserAdded"); }
public static void AdvanceGameState(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> input = Blaze.ReadPacketContent(p); pi.game.GSTA = (uint)((Blaze.TdfInteger)input[1]).Value; byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, new List <Blaze.Tdf>()); ns.Write(buff, 0, buff.Length); ns.Flush(); AsyncGameManager.NotifyGameStateChange(p, pi, ns); }
public static void UserSessionExtendedDataUpdateNotification(PlayerInfo src, Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> Result = new List <Blaze.Tdf>(); Result.Add(BlazeHelper.CreateUserDataStruct(pi)); Result.Add(Blaze.TdfInteger.Create("USID", pi.userId)); byte[] buff = Blaze.CreatePacket(0x7802, 1, 0, 0x2000, 0, Result); ns.Write(buff, 0, buff.Length); ns.Flush(); BlazeServer.Log("[CLNT] #" + src.userId + " [7802:0001] UserSessionExtendedDataUpdateNotification", System.Drawing.Color.Black); }
public static void NotifyGamePlayerStateChange(Blaze.Packet p, PlayerInfo pi, NetworkStream ns, long stat) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(Blaze.TdfInteger.Create("GID\0", pi.game.id)); result.Add(Blaze.TdfInteger.Create("PID\0", pi.userId)); result.Add(Blaze.TdfInteger.Create("STAT", stat)); byte[] buff = Blaze.CreatePacket(0x4, 0x74, 0, 0x2000, 0, result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void NotifyPlatformHostInitialized(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(Blaze.TdfInteger.Create("GID\0", pi.game.id)); result.Add(Blaze.TdfInteger.Create("PHID", pi.userId)); result.Add(Blaze.TdfInteger.Create("PHST", 0)); byte[] buff = Blaze.CreatePacket(4, 0x47, 0, 0x2000, 0, result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void LookUpUser(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(BlazeHelper.CreateUserDataStruct(pi, "EDAT")); result.Add(Blaze.TdfInteger.Create("FLGS", 3)); result.Add(BlazeHelper.CreateUserStruct(pi)); byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
private static void PreAuth(Blaze.Packet p, NetworkStream ns) { List <Blaze.Tdf> Result = new List <Blaze.Tdf>(); Result.Add(Blaze.TdfInteger.Create("ANON", 0)); Result.Add(Blaze.TdfString.Create("ASRC", "300294")); List <string> t = Helper.ConvertStringList("{1} {25} {4} {27} {28} {6} {7} {9} {10} {11} {30720} {30721} {30722} {30723} {20} {30725} {30726} {2000}"); List <long> t2 = new List <long>(); foreach (string v in t) { t2.Add(Convert.ToInt64(v)); } Result.Add(Blaze.TdfList.Create("CIDS", 0, t2.Count, t2)); t = new List <string>(); List <string> t3 = new List <string>(); Helper.ConvertDoubleStringList("{connIdleTimeout ; 90s} {defaultRequestTimeout ; 60s} {pingPeriod ; 20s} {voipHeadsetUpdateRate ; 1000} {xlspConnectionIdleTimeout ; 300}", out t, out t3); Blaze.TdfDoubleList conf2 = Blaze.TdfDoubleList.Create("CONF", 1, 1, t, t3, t.Count); List <Blaze.Tdf> t4 = new List <Blaze.Tdf>(); t4.Add(conf2); Result.Add(Blaze.TdfStruct.Create("CONF", t4)); Result.Add(Blaze.TdfString.Create("INST", "battlefield-assault-pc")); Result.Add(Blaze.TdfInteger.Create("MINR", 0)); Result.Add(Blaze.TdfString.Create("NASP", "cem_ea_id")); Result.Add(Blaze.TdfString.Create("PILD", "")); Result.Add(Blaze.TdfString.Create("PLAT", "pc")); List <Blaze.Tdf> QOSS = new List <Blaze.Tdf>(); List <Blaze.Tdf> BWPS = new List <Blaze.Tdf>(); BWPS.Add(Blaze.TdfString.Create("PSA\0", "127.0.0.1")); BWPS.Add(Blaze.TdfInteger.Create("PSP\0", 80)); BWPS.Add(Blaze.TdfString.Create("SNA\0", "wv")); QOSS.Add(Blaze.TdfStruct.Create("BWPS", BWPS)); QOSS.Add(Blaze.TdfInteger.Create("LNP\0", 0xA)); List <Blaze.Tdf> LTPS1 = new List <Blaze.Tdf>(); LTPS1.Add(Blaze.TdfString.Create("PSA\0", "127.0.0.1")); LTPS1.Add(Blaze.TdfInteger.Create("PSP\0", 80)); LTPS1.Add(Blaze.TdfString.Create("SNA\0", "wv")); List <Blaze.TdfStruct> LTPS = new List <Blaze.TdfStruct>(); LTPS.Add(Blaze.CreateStructStub(LTPS1)); t = Helper.ConvertStringList("{ams}"); QOSS.Add(Blaze.TdfDoubleList.Create("LTPS", 1, 3, t, LTPS, 1)); QOSS.Add(Blaze.TdfInteger.Create("SVID", 0x45410805)); Result.Add(Blaze.TdfStruct.Create("QOSS", QOSS)); Result.Add(Blaze.TdfString.Create("RSRC", "300294")); Result.Add(Blaze.TdfString.Create("SVER", "Monolith")); byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, Result); ns.Write(buff, 0, buff.Length); ns.Flush(); }
public static void NotifyPlayerJoinCompleted(PlayerInfo src, Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(Blaze.TdfInteger.Create("GID\0", pi.game.id)); result.Add(Blaze.TdfInteger.Create("PID\0", pi.userId)); byte[] buff = Blaze.CreatePacket(0x4, 0x1E, 0, 0x2000, 0, result); ns.Write(buff, 0, buff.Length); ns.Flush(); BlazeServer.Log("[CLNT] #" + src.userId + " [0004:001E] NotifyPlayerJoinCompleted", System.Drawing.Color.Black); }
public static void NotifyGameStateChange(PlayerInfo src, Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); result.Add(Blaze.TdfInteger.Create("GID\0", pi.game.id)); result.Add(Blaze.TdfInteger.Create("GSTA", pi.game.GSTA)); byte[] buff = Blaze.CreatePacket(4, 0x64, 0, 0x2000, 0, result); ns.Write(buff, 0, buff.Length); ns.Flush(); BlazeServer.Log("[CLNT] #" + src.userId + " [0004:0064] NotifyGameStateChange", System.Drawing.Color.Black); }
public static void LogoutPersona(Blaze.Packet p, PlayerInfo pi, NetworkStream ns) { List <Blaze.Tdf> result = new List <Blaze.Tdf>(); byte[] buff = Blaze.CreatePacket(p.Component, p.Command, 0, 0x1000, p.ID, result); ns.Write(buff, 0, buff.Length); ns.Flush(); AsyncUserSessions.NotifyUserRemoved(pi, p, pi.userId, ns); AsyncUserSessions.NotifyUserStatus(pi, p, pi, ns); }