92 Commits

Author SHA1 Message Date
recroom2016tutorial
a7ace2f895 Merge branch 'master' of https://github.com/recroom2016/OpenRec 2022-05-11 21:51:06 -04:00
recroom2016tutorial
a2775a6d95 openrec 0.6.9 2022-05-11 21:51:00 -04:00
Nexus
a5ef24a1e1 Create README.md 2022-05-08 23:18:23 +01:00
recroom2016
dbfb132d6c Create contextdrops.json 2022-05-07 21:54:42 -04:00
recroom2016
6fe87123b5 Update avatar.txt 2022-05-07 21:16:32 -04:00
recroom2016tutorial
9a86d1d88e Merge branch 'master' of https://github.com/recroom2016/OpenRec 2022-05-07 17:57:58 -04:00
recroom2016tutorial
f39c7cefa3 openrec 0.7.0 2022-05-07 17:57:37 -04:00
recroom2016
1f94738349 Update motd.txt 2022-05-02 21:07:23 -04:00
recroom2016
02e55a3428 Update builds.txt 2022-05-02 21:07:02 -04:00
recroom2016
0137b18e98 Update hotrooms.txt 2022-05-02 21:06:30 -04:00
recroom2016
2a6788cf9d Update builds.txt 2022-05-01 21:01:03 -04:00
recroom2016
d615e009dd Create builds.txt 2022-05-01 20:35:58 -04:00
recroom2016
33540f1a25 Update banned.txt 2022-04-30 17:26:59 -04:00
recroom2016
aae35a6c28 Update banned.txt 2022-04-18 23:16:47 -04:00
recroom2016
e08fb285f8 Update version.txt 2022-04-18 10:12:02 -04:00
recroom2016
1ae28dc203 Update version.txt 2022-04-17 23:05:22 -04:00
recroom2016
e00ac817a1 Update banned.txt 2022-04-10 10:43:38 -04:00
recroom2016
c68360e030 Update rcslideshow.txt 2022-04-06 21:26:35 -04:00
recroom2016
1cc3ad4a0b Rename rcslideshow to rcslideshow.txt 2022-04-05 18:18:15 -04:00
recroom2016
230058717c Create rcslideshow 2022-04-05 18:16:01 -04:00
recroom2016
15e21f6610 Update version.txt 2022-04-03 22:43:32 -04:00
recroom2016
d8a619efcd Update changelog.txt 2022-04-03 22:43:09 -04:00
recroom2016
cb7414eb8d Update avataritems2.txt 2022-04-03 22:34:33 -04:00
recroom2016tutorial
02dfb1e409 0.6.1 2022-04-03 22:28:45 -04:00
recroom2016
5aff58844a Create avataritems.txt 2022-04-02 23:32:04 -04:00
recroom2016
21553584c1 Rename avataritems.txt to avataritems2.txt 2022-04-02 23:31:46 -04:00
recroom2016
41c603233e Update avataritems.txt 2022-04-02 23:30:34 -04:00
recroom2016
7d4c449151 Update avataritems.txt 2022-04-02 23:18:51 -04:00
recroom2016
ebd28aef74 Create motd.txt 2022-04-02 22:10:46 -04:00
recroom2016
8057427772 Update version.txt 2022-03-29 22:51:44 -04:00
recroom2016
0e0da58f81 Update changelog.txt 2022-03-29 22:51:34 -04:00
recroom2016tutorial
001423935c 0.6.0 2022-03-29 22:34:41 -04:00
recroom2016tutorial
c000b151bf new build 2022-03-28 23:12:13 -04:00
recroom2016
467230ef1b Update dormslideshow.txt 2022-03-28 23:03:05 -04:00
recroom2016
907fd6c472 Update hotrooms.txt 2022-03-28 22:59:32 -04:00
recroom2016
dfb0bf7a66 Update hotrooms.txt 2022-03-28 22:43:25 -04:00
recroom2016tutorial
540f18f19b new openrec change dropped guys 2022-03-27 22:40:02 -04:00
recroom2016tutorial
30f6657c74 Merge branch 'master' of https://github.com/recroom2016/OpenRec 2022-03-27 22:12:20 -04:00
recroom2016tutorial
76c86ca4f6 new openrec change dropped guys 2022-03-27 22:12:15 -04:00
recroom2016
0297845357 Update hotrooms.txt 2022-03-27 02:40:55 -04:00
recroom2016
73202952da Update hotrooms.txt 2022-03-27 02:25:48 -04:00
recroom2016
8be5b35339 Create hotrooms.txt 2022-03-27 01:42:56 -04:00
recroom2016
8e6207c335 Update banned.txt 2022-03-26 22:15:15 -04:00
recroom2016tutorial
3fc8f954c1 Merge branch 'master' of https://github.com/recroom2016/OpenRec 2022-03-24 00:42:47 -04:00
recroom2016tutorial
2344b111d5 september 27th 2018 support 2022-03-24 00:42:44 -04:00
recroom2016
3d26270a55 Create baserooms.txt 2022-03-24 00:27:09 -04:00
recroom2016
9d5fb0432f Update banned.txt 2022-03-24 00:17:21 -04:00
recroom2016
81249c9efe Create banned.txt 2022-03-24 00:16:59 -04:00
recroom2016
e8ffebaf2f Create dormslideshow.txt 2022-03-24 00:16:20 -04:00
recroom2016
83ca99fbcb Rename storefront2 to storefront2.txt 2022-03-23 00:07:58 -04:00
recroom2016
38c33ff4a2 Create storefront2 2022-03-23 00:07:49 -04:00
recroom2016
7b7eb4326b Update banned.txt 2022-03-22 17:25:21 -04:00
recroom2016
10cfabf1d0 Update banned.txt 2022-03-22 13:18:43 -04:00
recroom2016
203a3e0002 Update gameconfigs.txt 2022-03-21 22:44:55 -04:00
recroom2016
a8f6aaf90d Update banned.txt 2022-03-19 18:04:55 -04:00
recroom2016
bc3701e9e4 Update banned.txt 2022-03-19 14:48:38 -04:00
recroom2016
c4f1e97a51 Update changelog.txt 2022-03-19 14:43:18 -04:00
recroom2016
07c12f2cb7 Update version.txt 2022-03-19 14:33:59 -04:00
recroom2016
cf81be7329 Update banned.txt 2022-03-17 21:35:35 -04:00
recroom2016tutorial
f702725b9b Merge branch 'master' of https://github.com/recroom2016/OpenRec 2022-03-17 00:30:00 -04:00
recroom2016tutorial
3bd0fa5ba3 bruh 2022-03-17 00:29:54 -04:00
recroom2016
59330ea345 Update banned.txt 2022-03-16 23:48:47 -04:00
recroom2016
57a2ff3462 Create banned.txt 2022-03-16 23:48:15 -04:00
recroom2016tutorial
aab1932199 test 2022-03-05 22:24:43 -05:00
recroom2016tutorial
857a1768ba openrec update omg!! 2022-03-02 23:28:21 -05:00
recroom2016tutorial
2d54a04613 Merge branch 'master' of https://github.com/recroom2016/OpenRec 2022-02-28 23:13:47 -05:00
recroom2016
3f81862763 Update version.txt 2022-02-27 03:18:48 -05:00
recroom2016
9c18f042b9 openrec patch v0.4.2 2022-02-27 02:53:43 -05:00
recroom2016
dc949325a1 Update changelog.txt 2022-02-27 02:45:34 -05:00
recroom2016
88b37a9bbc Update changelog.txt 2022-02-27 02:06:09 -05:00
recroom2016
3a8c07098d Update changelog.txt 2022-02-25 20:55:19 -05:00
recroom2016
ada0777275 patch v0.4.1 2022-02-25 20:54:56 -05:00
recroom2016
21706a82fb Update version.txt 2022-02-25 20:53:01 -05:00
recroom2016
8024724946 Update changelog.txt 2022-02-25 20:05:53 -05:00
recroom2016
009a5d48e2 Update version.txt 2022-02-25 20:05:27 -05:00
recroom2016
060e2f27ed Merge branch 'master' of https://github.com/recroom2016/OpenRec 2022-02-25 12:41:33 -05:00
recroom2016
8c61c52edf OpenRec 0.4.0 2022-02-25 12:41:25 -05:00
recroom2016
6c4cfefce9 Update consumables.txt 2022-02-25 12:25:37 -05:00
recroom2016
62e3fe47a6 Create facefeaturesadd.txt 2022-02-24 15:09:54 -05:00
recroom2016
488f68d075 Update avatar.txt 2022-02-24 01:34:32 -05:00
recroom2016
8511d22c75 Create gameconfigs.txt 2022-02-24 01:19:33 -05:00
recroom2016
a9394b6c46 among us 2022-02-23 15:38:50 -05:00
recroom2016
93e74b51b4 Merge branch 'master' of https://github.com/recroom2016/OpenRec 2022-02-22 23:39:29 -05:00
recroom2016
c42d15d3aa working on chat features 2022-02-22 23:39:22 -05:00
recroom2016
5926b6c753 Update avatar.txt 2022-02-22 15:20:09 -05:00
recroom2016
3f8ff4a98b Merge branch 'master' of https://github.com/recroom2016/OpenRec 2022-02-22 00:30:58 -05:00
recroom2016
033634f104 2017 support in the works 2022-02-22 00:30:48 -05:00
recroom2016
41c720c948 Update changelog.txt 2022-02-21 23:37:00 -05:00
recroom2016
b7df2186b2 Create changelog.txt 2022-02-21 23:36:40 -05:00
recroom2016
a8e081602a 0.3.5 2022-02-21 23:11:06 -05:00
recroom2016
b85ab57667 August 3rd 3018 Support 2022-02-20 22:48:36 -05:00
recroom2016
358b654064 Update version.txt 2022-02-20 02:56:38 -05:00
54 changed files with 6446 additions and 431 deletions

63
.gitattributes vendored
View File

@@ -1,63 +0,0 @@
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp
###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary
###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain

View File

@@ -5,19 +5,20 @@ using System.Text;
using System.Threading;
using api;
using api2018;
using api2017;
using Newtonsoft.Json;
using vaultgamesesh;
using System.Collections.Generic;
namespace server
{
internal class APIServer
{
public APIServer()
{
try
{
Console.WriteLine("APIServer.cs has started.");
Console.WriteLine("[APIServer.cs] has started.");
new Thread(new ThreadStart(this.StartListen)).Start();
}
catch (Exception ex)
@@ -29,18 +30,21 @@ namespace server
{
try
{
//2 different servers for 3 different stages of the game, the apis change so much idk anymore
this.listener.Prefixes.Add("http://localhost:" + start.Program.version + "/");
if (start.Program.version == "2016")
{
for (; ; )
{
this.listener.Start();
Console.WriteLine("APIServer.cs is listening.");
Console.WriteLine("[APIServer.cs] is listening.");
HttpListenerContext context = this.listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string rawUrl = request.RawUrl;
string Url = "";
bool image = false;
byte[] imagebyte = null;
if (rawUrl.StartsWith("/api/"))
{
Url = rawUrl.Remove(0, 5);
@@ -57,9 +61,12 @@ namespace server
}
else
{
Console.WriteLine("API Requested: " + rawUrl);
Console.WriteLine("API Requested (rawUrl): " + rawUrl);
}
if (!(Url == "images/v2/profile"))
{
Console.WriteLine("API Data: " + text);
}
if (Url.StartsWith("versioncheck"))
{
s = VersionCheckResponse;
@@ -68,152 +75,207 @@ namespace server
{
s = Config2.GetDebugConfig();
}
Console.WriteLine("API Response: " + s);
byte[] bytes = Encoding.UTF8.GetBytes(s);
response.ContentLength64 = (long)bytes.Length;
Stream outputStream = response.OutputStream;
outputStream.Write(bytes, 0, bytes.Length);
Thread.Sleep(400);
outputStream.Close();
this.listener.Stop();
if (Url == "notification/v2")
{
s = "[]";
}
if (Url == "PlayerReporting/v1/moderationBlockDetails")
{
s = ModerationBlockDetails;
if (start.Program.bannedflag == true)
{
s = Banned;
}
else if (start.Program.version == "2017")
{
for (; ; )
{
this.listener.Start();
Console.WriteLine("APIServer.cs is listening.");
HttpListenerContext context = this.listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string rawUrl = request.RawUrl;
string Url = "";
if (rawUrl.StartsWith("/api/"))
{
Url = rawUrl.Remove(0, 5);
}
string text;
string s = "";
using (StreamReader streamReader = new StreamReader(request.InputStream, request.ContentEncoding))
{
text = streamReader.ReadToEnd();
}
if (!(Url == ""))
{
Console.WriteLine("API Requested: " + Url);
}
else
{
Console.WriteLine("API Requested: " + rawUrl);
}
Console.WriteLine("API Data: " + text);
if (Url.StartsWith("versioncheck"))
{
s = VersionCheckResponse;
}
if (Url == ("config/v2"))
{
s = Config2.GetDebugConfig();
}
Console.WriteLine("API Response: " + s);
byte[] bytes = Encoding.UTF8.GetBytes(s);
response.ContentLength64 = (long)bytes.Length;
Stream outputStream = response.OutputStream;
outputStream.Write(bytes, 0, bytes.Length);
Thread.Sleep(400);
outputStream.Close();
this.listener.Stop();
}
}
else if (start.Program.version == "2018")
{
for (; ; )
{
this.listener.Start();
Console.WriteLine("APIServer.cs is listening.");
HttpListenerContext context = this.listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string rawUrl = request.RawUrl;
string Url = "";
if (rawUrl.StartsWith("/api/"))
{
Url = rawUrl.Remove(0, 5);
}
if (!(Url == ""))
{
Console.WriteLine("API Requested: " + Url);
}
else
{
Console.WriteLine("API Requested: " + rawUrl);
}
string text;
string s = "";
using (StreamReader streamReader = new StreamReader(request.InputStream, request.ContentEncoding))
{
text = streamReader.ReadToEnd();
}
Console.WriteLine("API Data: " + text);
if (Url.StartsWith("versioncheck"))
{
s = VersionCheckResponse;
}
if (Url == ("config/v2"))
{
s = Config2.GetDebugConfig();
}
if (Url == "platformlogin/v1/getcachedlogins")
{
s = getcachedlogins.GetDebugLogin(ulong.Parse(text.Remove(0, 32)), ulong.Parse(text.Remove(0, 22)));
CachedPlayerID = ulong.Parse(text.Remove(0, 32));
CachedPlatformID = ulong.Parse(text.Remove(0, 22));
}
if (Url == "platformlogin/v1/loginaccount")
{
s = logincached.loginCache(CachedPlayerID, CachedPlatformID);
}
if (Url == "platformlogin/v1/createaccount")
{
s = logincached.loginCache(CachedPlayerID, CachedPlatformID);
}
if (Url == "platformlogin/v1/logincached")
{
s = logincached.loginCache(CachedPlayerID, CachedPlatformID);
}
if (Url == "relationships/v1/bulkignoreplatformusers")
{
s = BlankResponse;
}
if (Url == "config/v1/amplitude")
{
s = Amplitude.amplitude();
}
if (Url == "images/v2/named")
if (Url == "players/v1/getorcreate")
{
s = ImagesV2Named;
s = getorcreate.GetOrCreate((ulong.Parse(text.Remove(0, 32).Remove(7, text.Length - 39))));
}
if (Url == "PlayerReporting/v1/moderationBlockDetails")
if (Url.StartsWith("images/v1/profile/"))
{
s = ModerationBlockDetails;
image = true;
imagebyte = File.ReadAllBytes("SaveData\\profileimage.png");
}
if (Url == "avatar/v2")
{
s = File.ReadAllText("SaveData\\avatar.txt");
}
if (Url == "avatar/v2/set")
{
//for later 2018 builds compatibility
if (!(text.Contains("FaceFeatures")))
{
string postdatacache = text;
text = postdatacache.Remove(postdatacache.Length - 1, 1) + File.ReadAllText("SaveData\\App\\facefeaturesadd.txt");
}
File.WriteAllText("SaveData\\avatar.txt", text);
}
if (Url == "messages/v2/get")
{
s = BracketResponse;
}
if (Url == "relationships/v2/get")
{
s = BracketResponse;
}
if (Url == "settings/v2/")
{
s = File.ReadAllText("SaveData\\settings.txt");
}
if (Url == "settings/v2/set")
{
Settings.SetPlayerSettings(text);
}
if (Url == "avatar/v3/items")
{
s = File.ReadAllText("SaveData\\avataritems.txt");
}
if (Url == "avatar/v2/gifts")
{
s = BracketResponse;
}
if (Url == "events/v3/list")
{
s = Events.list();
}
if (Url == "playerevents/v1/all")
{
s = PlayerEventsResponse;
}
if (Url == "activities/charades/v1/words")
{
s = Activities.Charades.words();
}
if (Url == "images/v2/profile/") //disabled with a / at the end
{
s = BracketResponse;
int NewLength = text.Length - 50;
File.WriteAllBytes("SaveData\\profileimage.png", Encoding.UTF8.GetBytes(text.Remove(0, 50).Remove(NewLength - 48, 48)));
}
Console.WriteLine("API Response: " + s);
byte[] bytes = null;
if (image == true)
{
bytes = imagebyte;
}
else
{
bytes = Encoding.UTF8.GetBytes(s);
}
response.ContentLength64 = (long)bytes.Length;
Stream outputStream = response.OutputStream;
outputStream.Write(bytes, 0, bytes.Length);
Thread.Sleep(20);
outputStream.Close();
this.listener.Stop();
}
}
if (start.Program.version == "2017")
{
for (; ; )
{
this.listener.Start();
Console.WriteLine("[APIServer.cs] is listening.");
HttpListenerContext context = this.listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string rawUrl = request.RawUrl;
string Url = "";
if (rawUrl.StartsWith("/api/"))
{
Url = rawUrl.Remove(0, 5);
}
string text;
string s = "";
using (StreamReader streamReader = new StreamReader(request.InputStream, request.ContentEncoding))
{
text = streamReader.ReadToEnd();
}
if (!(Url == ""))
{
Console.WriteLine("API Requested: " + Url);
}
else
{
Console.WriteLine("API Requested (rawUrl): " + rawUrl);
}
Console.WriteLine("API Data: " + text);
if (Url.StartsWith("versioncheck"))
{
s = VersionCheckResponse;
}
if (Url == ("config/v2"))
{
s = Config2.GetDebugConfig();
}
if (Url == "platformlogin/v1/profiles")
{
s = getorcreate.GetOrCreateArray((ulong.Parse(text.Remove(0, 32))));
CachedPlayerID = ulong.Parse(text.Remove(0, 32));
CachedPlatformID = ulong.Parse(text.Remove(0, 22));
File.WriteAllText("SaveData\\Profile\\userid.txt", Convert.ToString(CachedPlayerID));
if (new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/banned.txt").Contains(File.ReadAllText("SaveData\\Profile\\userid.txt")))
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("You are banned. Using this version of OpenRec will not work, please download OpenRec 0.4.2 or prior.");
Console.ForegroundColor = ConsoleColor.Green;
start.Program.bannedflag = true;
}
}
if (Url == "platformlogin/v6")
{
s = PlatformLogin.v4(CachedPlayerID);
}
if (Url == "PlayerReporting/v1/moderationBlockDetails")
{
s = ModerationBlockDetails;
if (start.Program.bannedflag == true)
{
s = Banned;
}
}
if (Url == "config/v1/amplitude")
{
s = Amplitude.amplitude();
}
if (Url.StartsWith("players/v1/"))
{
s = getorcreate.GetOrCreate(CachedPlayerID);
}
if (Url == "players/v1/list")
{
s = BracketResponse;
}
if (Url == "avatar/v2")
{
s = File.ReadAllText("SaveData\\avatar.txt");
}
if (Url == "avatar/v2/saved")
{
s = BracketResponse;
}
if (Url == "avatar/v2/set")
{
//for later 2018 builds compatibility
if (!(text.Contains("FaceFeatures")))
{
string postdatacache = text;
text = postdatacache.Remove(postdatacache.Length - 1, 1) + File.ReadAllText("SaveData\\App\\facefeaturesadd.txt");
}
File.WriteAllText("SaveData\\avatar.txt", text);
}
if (Url == "messages/v2/get")
{
s = BracketResponse;
}
if (Url == "relationships/v2/get")
{
s = BracketResponse;
}
if (Url == "settings/v2/")
{
s = File.ReadAllText("SaveData\\settings.txt");
@@ -230,25 +292,255 @@ namespace server
{
s = File.ReadAllText("SaveData\\equipment.txt");
}
if (Url == "avatar/v2/gifts")
{
s = BracketResponse;
}
if (Url == "events/v3/list")
{
s = Events.list();
}
if (Url == "playerevents/v1/all")
{
s = PlayerEventsResponse;
}
if (Url == "activities/charades/v1/words")
{
s = Activities.Charades.words();
}
if (Url == "gamesessions/v2/joinrandom")
{
s = gamesesh.GameSessions.JoinRandom(text);
}
if (Url == "gamesessions/v2/create")
{
s = gamesesh.GameSessions.Create(text);
}
if (rawUrl == "//api/sanitize/v1/isPure")
{
s = "{\"IsPure\":true}";
}
if (Url == "images/v3/profile")
{
s = BracketResponse;
int NewLength = text.Length - 50;
File.WriteAllBytes("SaveData\\profileimage.png", Encoding.UTF8.GetBytes(text.Remove(0, 50).Remove(NewLength - 48, 48)));
}
Console.WriteLine("API Response: " + s);
byte[] bytes = Encoding.UTF8.GetBytes(s);
response.ContentLength64 = (long)bytes.Length;
Stream outputStream = response.OutputStream;
outputStream.Write(bytes, 0, bytes.Length);
Thread.Sleep(20);
outputStream.Close();
this.listener.Stop();
}
}
else if (start.Program.version == "2018")
{
for (; ; )
{
this.listener.Start();
Console.WriteLine("[APIServer.cs] is listening.");
HttpListenerContext context = this.listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
List<byte> list = new List<byte>();
string rawUrl = request.RawUrl;
string Url = "";
byte[] bytes = null;
string signature = request.Headers.Get("X-RNSIG");
if (rawUrl.StartsWith("/api/"))
{
Url = rawUrl.Remove(0, 5);
}
if (!(Url == ""))
{
Console.WriteLine("API Requested: " + Url);
}
else
{
Console.WriteLine("API Requested (rawUrl): " + rawUrl);
}
string text;
string s = "";
using (StreamReader streamReader = new StreamReader(request.InputStream, request.ContentEncoding))
{
text = streamReader.ReadToEnd();
}
Console.WriteLine("API Data: " + text);
if (Url.StartsWith("versioncheck"))
{
if (Url.Contains("201809"))
{
CachedVersionMonth = 09;
}
else
{
CachedVersionMonth = 05;
}
s = VersionCheckResponse;
}
if (Url == ("config/v2"))
{
s = Config2.GetDebugConfig();
}
if (Url == "platformlogin/v1/getcachedlogins")
{
s = getcachedlogins.GetDebugLogin(ulong.Parse(text.Remove(0, 32)), ulong.Parse(text.Remove(0, 22)));
CachedPlayerID = ulong.Parse(text.Remove(0, 32));
CachedPlatformID = ulong.Parse(text.Remove(0, 22));
File.WriteAllText("SaveData\\Profile\\userid.txt", Convert.ToString(CachedPlayerID));
if (new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/banned.txt").Contains(File.ReadAllText("SaveData\\Profile\\userid.txt")))
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("You are banned. Using this version of OpenRec will not work, please download OpenRec 0.4.2 or prior.");
Console.ForegroundColor = ConsoleColor.Green;
start.Program.bannedflag = true;
}
}
if (Url == "platformlogin/v1/loginaccount")
{
s = logincached.loginCache(CachedPlayerID, CachedPlatformID);
}
if (Url == "platformlogin/v1/createaccount")
{
s = logincached.loginCache(CachedPlayerID, CachedPlatformID);
}
if (Url == "platformlogin/v1/logincached")
{
s = logincached.loginCache(CachedPlayerID, CachedPlatformID);
}
if (Url == "relationships/v1/bulkignoreplatformusers")
{
s = BlankResponse;
}
if (Url == "players/v1/list")
{
s = BracketResponse;
}
if (Url == "config/v1/amplitude")
{
s = Amplitude.amplitude();
}
if (Url == "images/v2/named")
{
s = ImagesV2Named;
}
if (Url == "PlayerReporting/v1/moderationBlockDetails")
{
s = ModerationBlockDetails;
if (start.Program.bannedflag == true)
{
s = Banned;
}
}
if (Url == "//api/chat/v2/myChats?mode=0&count=50")
{
s = BracketResponse;
}
if (Url == "messages/v2/get")
{
s = BracketResponse;
}
if (Url == "relationships/v2/get")
{
s = BracketResponse;
}
if (Url == "gameconfigs/v1/all")
{
s = File.ReadAllText("SaveData\\gameconfigs.txt");
}
if (Url.StartsWith("storefronts/v3/giftdropstore"))
{
if (CachedVersionMonth == 09)
{
s = BracketResponse;
}
else
{
s = BracketResponse;
}
}
if (Url.StartsWith("storefronts/v3/balance/"))
{
s = BracketResponse;
}
if (Url == "avatar/v2")
{
s = File.ReadAllText("SaveData\\avatar.txt");
}
if (Url == "avatar/v2/saved")
{
s = BracketResponse;
}
if (Url == "avatar/v2/set")
{
//for later 2018 builds compatibility
if (!(text.Contains("FaceFeatures")))
{
string postdatacache = text;
text = postdatacache.Remove(postdatacache.Length - 1, 1) + File.ReadAllText("SaveData\\App\\facefeaturesadd.txt");
}
File.WriteAllText("SaveData\\avatar.txt", text);
}
if (Url == "settings/v2/")
{
s = File.ReadAllText("SaveData\\settings.txt");
}
if (Url == "settings/v2/set")
{
Settings.SetPlayerSettings(text);
}
if (rawUrl == "//api/chat/v2/myChats?mode=0&count=50")
{
s = BracketResponse;
}
if (Url == "playersubscriptions/v1/my")
{
s = BracketResponse;
}
if (Url == "avatar/v3/items")
{
if (CachedVersionMonth == 09)
{
s = File.ReadAllText("SaveData\\avataritems2.txt");
}
else
{
s = File.ReadAllText("SaveData\\avataritems2.txt");
}
}
if (Url == "equipment/v1/getUnlocked")
{
s = File.ReadAllText("SaveData\\equipment.txt");
}
if (Url == "avatar/v1/saved")
{
s = BracketResponse;
}
if (Url == "consumables/v1/getUnlocked")
{
if (CachedVersionMonth == 09)
{
s = BracketResponse;
}
else
{
s = File.ReadAllText("SaveData\\consumables.txt");
}
}
if (Url == "avatar/v2/gifts")
{
s = BracketResponse;
}
if (Url == "storefronts/v2/2")
{
s = BlankResponse;
}
if (Url == "storefronts/v1/allGiftDrops/2")
{
s = BracketResponse;
}
if (Url == "storefronts/v2/2")
{
s = "";
}
if (Url == "objectives/v1/myprogress")
{
@@ -258,6 +550,14 @@ namespace server
{
s = File.ReadAllText("SaveData\\myrooms.txt");
}
if (Url == "rooms/v2/myrooms")
{
s = BracketResponse;
}
if (Url == "rooms/v2/baserooms")
{
s = File.ReadAllText("SaveData\\baserooms.txt");
}
if (Url == "rooms/v1/mybookmarkedrooms")
{
s = BracketResponse;
@@ -274,18 +574,117 @@ namespace server
{
s = PlayerEventsResponse;
}
if (Url == "activities/charades/v1/words")
{
s = Activities.Charades.words();
}
if (Url == "gamesessions/v2/joinrandom")
{
s = gamesessions2018.GameSessions.JoinRandom(text);
s = gamesesh.GameSessions.JoinRandom(text);
}
if (Url == "gamesessions/v2/create")
{
s = gamesesh.GameSessions.Create(text);
}
if (Url == "gamesessions/v3/joinroom")
{
s = JsonConvert.SerializeObject(c000041.m000030(text));
}
if (rawUrl == "//api/sanitize/v1/isPure")
{
s = "{\"IsPure\":true}";
}
if (Url == "avatar/v3/saved")
{
s = BracketResponse;
}
if (Url == "checklist/v1/current")
{
s = ChecklistV1Current;
}
if (Url == "presence/v1/setplayertype")
{
s = BracketResponse;
}
if (Url == "challenge/v1/getCurrent")
{
s = ChallengesV1GetCurrent;
}
if (Url == "rooms/v1/featuredRoomGroup")
{
s = BracketResponse;
}
if (Url == "rooms/v1/clone")
{
s = JsonConvert.SerializeObject(c000099.m00000a(text));
}
if (Url.StartsWith("rooms/v2/saveData"))
{
//string text26 = "5GDNL91ZY43PXN2YJENTBL";
//string path = c000004.m000007() + c000041.f000043.Room.Name;
//File.WriteAllBytes(string.Concat(new string[]
//{
//c000004.m000007(),
//c000041.f000043.Room.Name,
//"\\room\\",
//text26,
//".room"
//}), m00005d(list.ToArray(), "data.dat"));
//c000041.f000043.Scenes[0].DataBlobName = text26 + ".room";
//c000041.f000043.Scenes[0].DataModifiedAt = DateTime.Now;
//File.WriteAllText(c000004.m000007() + c000041.f000043.Room.Name + "\\RoomDetails.json", JsonConvert.SerializeObject(c000041.f000043));
//s = JsonConvert.SerializeObject(c00005d.m000035());
}
if (Url == "presence/v3/heartbeat")
{
if (new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/banned.txt").Contains(File.ReadAllText("SaveData\\Profile\\userid.txt")))
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("You are banned. Using this version of OpenRec will not work, please download OpenRec 0.4.2 or prior.");
Console.ForegroundColor = ConsoleColor.Green;
start.Program.bannedflag = true;
Late2018WebSock.instance.Broadcast(ws.Notification.Reponse.createBannedResponse());
}
s = JsonConvert.SerializeObject(Notification2018.Reponse.createResponse(4, c000020.m000027()));
}
if (Url == "rooms/v1/featuredRoomGroup")
{
s = new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/dormslideshow.txt");
}
if (Url.StartsWith("rooms/v1/hot"))
{
s = new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/hotrooms.txt");
}
if (Url.StartsWith("rooms/v2/instancedetails"))
{
s = BracketResponse;
}
if (Url.StartsWith("rooms/v2/search?value="))
{
CustomRooms.RoomGet(Url.Remove(0, 22));
}
if (Url == "rooms/v4/details/29")
{
s = File.ReadAllText("SaveData\\Rooms\\Downloaded\\RoomDetails.json");
Thread.Sleep(100);
}
else if (Url.StartsWith("rooms/v4/details"))
{
s = JsonConvert.SerializeObject(c00005d.m000023(Convert.ToInt32(Url.Remove(0, 17))));
}
if (Url == "images/v1/slideshow")
{
s = new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/rcslideshow.txt");
}
Console.WriteLine("API Response: " + s);
byte[] bytes = Encoding.UTF8.GetBytes(s);
bytes = Encoding.UTF8.GetBytes(s);
response.ContentLength64 = (long)bytes.Length;
Stream outputStream = response.OutputStream;
outputStream.Write(bytes, 0, bytes.Length);
Thread.Sleep(400);
Thread.Sleep(20);
outputStream.Close();
this.listener.Stop();
}
}
}
@@ -293,18 +692,26 @@ namespace server
{
Console.WriteLine(ex4);
File.WriteAllText("crashdump.txt", Convert.ToString(ex4));
this.listener.Close();
new APIServer();
}
}
public static ulong CachedPlayerID = 1;
public static ulong CachedPlayerID = ulong.Parse(File.ReadAllText("SaveData\\Profile\\userid.txt"));
public static ulong CachedPlatformID = 10000;
public static int CachedVersionMonth = 01;
public static string BlankResponse = "";
public static string BracketResponse = "[]";
public static string PlayerEventsResponse = "{\"Created\":[],\"Responses\":[]}";
public static string VersionCheckResponse2 = "{\"VersionStatus\":0}";
public static string VersionCheckResponse = "{\"ValidVersion\":true}";
public static string ModerationBlockDetails = "{\"ReportCategory\":0,\"Duration\":0,\"GameSessionId\":0,\"Message\":\"\"}";
public static string ImagesV2Named = "[{\"FriendlyImageName\":\"DormRoomBucket\",\"ImageName\":\"OpenRec\",\"StartTime\":\"2021-12-27T21:27:38.1880175-08:00\",\"EndTime\":\"2043-12-27T21:27:38.1880399-08:00\"}";
public static string ImagesV2Named = "[{\"FriendlyImageName\":\"DormRoomBucket\",\"ImageName\":\"DormRoomBucket\",\"StartTime\":\"2021-12-27T21:27:38.1880175-08:00\",\"EndTime\":\"2025-12-27T21:27:38.1880399-08:00\"}";
public static string ChallengesV1GetCurrent = "{\"Success\":true,\"Message\":\"OpenRec\"}";
public static string ChecklistV1Current = "[{\"Order\":0,\"Objective\":3000,\"Count\":3,\"CreditAmount\":100},{\"Order\":1,\"Objective\":3001,\"Count\":3,\"CreditAmount\":100},{\"Order\":2,\"Objective\":3002,\"Count\":3,\"CreditAmount\":100}]";
public static string Banned = "{\"ReportCategory\":1,\"Duration\":10000000000000000,\"GameSessionId\":100,\"Message\":\"You have been banned. You are probably a little kid and are now whining at your VR headset. If you aren't a little kid, DM me to appeal.\"}";
private HttpListener listener = new HttpListener();
}

197
Activities.cs Normal file
View File

@@ -0,0 +1,197 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace api
{
// Token: 0x02000021 RID: 33
internal class Activities
{
// Token: 0x02000069 RID: 105
public class Charades
{
// Token: 0x06000322 RID: 802 RVA: 0x0000C5F4 File Offset: 0x0000A7F4
public static string words()
{
List<Activities.Charades.word> value = new List<Activities.Charades.word>
{
new Activities.Charades.word
{
EN_US = "talking ben",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "lemon",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "grape",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "roblox",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "tree",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "cloud",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "iphone",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "your house",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "spaghetti",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "lean",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "bitcoin",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "nft",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "grass",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "recroom2016",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "joker",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "fortnite",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "woman",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "spiderman",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "vr",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "among us",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "coach",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "coach with a gun",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "funny fish",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "skinwalker",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "christmas tree",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "ur mom",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "stick of ram",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "big mac",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "ninetndo switch",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "crescendo",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "boxing",
Difficulty = 0
},
new Activities.Charades.word
{
EN_US = "angry birds",
Difficulty = 0
}
};
return JsonConvert.SerializeObject(value);
}
// Token: 0x02000073 RID: 115
public class word
{
// Token: 0x170001AA RID: 426
// (get) Token: 0x060003F3 RID: 1011 RVA: 0x0000D196 File Offset: 0x0000B396
// (set) Token: 0x060003F4 RID: 1012 RVA: 0x0000D19E File Offset: 0x0000B39E
public string EN_US { get; set; }
// Token: 0x170001AB RID: 427
// (get) Token: 0x060003F5 RID: 1013 RVA: 0x0000D1A7 File Offset: 0x0000B3A7
// (set) Token: 0x060003F6 RID: 1014 RVA: 0x0000D1AF File Offset: 0x0000B3AF
public int Difficulty { get; set; }
}
}
}
}

View File

@@ -11,7 +11,7 @@ namespace api
{
return JsonConvert.SerializeObject(new Amplitude
{
AmplitudeKey = "e1693a1003671058b6abc356c8ba8d59"
AmplitudeKey = "NoKeyProvided"
});
}

View File

@@ -27,7 +27,7 @@ namespace api
Console.WriteLine("Done!");
Console.Clear();
}
public static gamesessions2018.GameSessions.SessionInstance localGameSession;
public static gamesesh.GameSessions.SessionInstance localGameSession;
public static Objective[][] dailyObjectives = new Objective[][]
{
new Objective[]

View File

@@ -51,7 +51,7 @@ namespace api
return JsonConvert.SerializeObject(new Config2
{
MessageOfTheDay = "Default MOTD",
MessageOfTheDay = new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/motd.txt"),
CdnBaseUri = "http://localhost:20182/",
LevelProgressionMaps = new List<LevelProgressionEntry>
{

177
Consumable.cs Normal file
View File

@@ -0,0 +1,177 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace api
{
class Consumable
{
// Token: 0x040001E4 RID: 484
public static List<Consumable.c00009f> f000026;
// Token: 0x0200009F RID: 159
public class c00009f
{
// Token: 0x1700010B RID: 267
// (get) Token: 0x06000376 RID: 886
// (set) Token: 0x06000377 RID: 887
public long Id
{
get
{
return this.f00002c;
}
set
{
this.f00002c = value;
}
}
// Token: 0x1700010C RID: 268
// (get) Token: 0x06000378 RID: 888
// (set) Token: 0x06000379 RID: 889
public string ConsumableItemDesc
{
get
{
return this.f000002;
}
set
{
this.f000002 = value;
}
}
// Token: 0x1700010D RID: 269
// (get) Token: 0x0600037A RID: 890
// (set) Token: 0x0600037B RID: 891
public DateTime CreatedAt
{
get
{
return this.f00003a;
}
set
{
this.f00003a = value;
}
}
// Token: 0x1700010E RID: 270
// (get) Token: 0x0600037C RID: 892
// (set) Token: 0x0600037D RID: 893
public int Count
{
get
{
return this.f000004;
}
set
{
this.f000004 = value;
}
}
// Token: 0x1700010F RID: 271
// (get) Token: 0x0600037E RID: 894
// (set) Token: 0x0600037F RID: 895
public int InitialCount
{
get
{
return this.f000005;
}
set
{
this.f000005 = value;
}
}
// Token: 0x17000110 RID: 272
// (get) Token: 0x06000380 RID: 896
// (set) Token: 0x06000381 RID: 897
public int UnlockedLevel
{
get
{
return this.f000006;
}
set
{
this.f000006 = value;
}
}
// Token: 0x17000111 RID: 273
// (get) Token: 0x06000382 RID: 898
// (set) Token: 0x06000383 RID: 899
public bool IsActive
{
get
{
return this.f000016;
}
set
{
this.f000016 = value;
}
}
// Token: 0x17000112 RID: 274
// (get) Token: 0x06000384 RID: 900
// (set) Token: 0x06000385 RID: 901
public int? ActiveDurationMinutes
{
get
{
return this.f000081;
}
set
{
this.f000081 = value;
}
}
// Token: 0x040001E6 RID: 486
private long f00002c;
// Token: 0x040001E7 RID: 487
private string f000002;
// Token: 0x040001E8 RID: 488
private DateTime f00003a;
// Token: 0x040001E9 RID: 489
private int f000004;
// Token: 0x040001EA RID: 490
private int f000005;
// Token: 0x040001EB RID: 491
private int f000006;
// Token: 0x040001EC RID: 492
private bool f000016;
// Token: 0x040001ED RID: 493
private int? f000081;
}
}
}

229
CustomRooms.cs Normal file
View File

@@ -0,0 +1,229 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using Newtonsoft.Json;
using vaultgamesesh;
using System.IO;
using server;
using api;
namespace api
{
class CustomRooms
{
public static void RoomDecode(string text)
{
ModernRooms.Root root2 = JsonConvert.DeserializeObject<ModernRooms.Root>(text);
File.WriteAllText("SaveData\\Rooms\\Downloaded\\roomname.txt", root2.Name);
File.WriteAllText("SaveData\\Rooms\\Downloaded\\roomid.txt", Convert.ToString(root2.RoomId));
File.WriteAllText("SaveData\\Rooms\\Downloaded\\datablob.txt", root2.SubRooms[0].DataBlob);
File.WriteAllText("SaveData\\Rooms\\Downloaded\\roomsceneid.txt", root2.SubRooms[0].UnitySceneId);
File.WriteAllText("SaveData\\Rooms\\Downloaded\\imagename.txt", root2.ImageName);
File.WriteAllText("SaveData\\Rooms\\Downloaded\\cheercount.txt", Convert.ToString(root2.Stats.CheerCount));
File.WriteAllText("SaveData\\Rooms\\Downloaded\\favcount.txt", Convert.ToString(root2.Stats.FavoriteCount));
File.WriteAllText("SaveData\\Rooms\\Downloaded\\visitcount.txt", Convert.ToString(root2.Stats.VisitCount));
room = new Room
{
RoomId = 29,
Name = root2.Name,
Description = "OpenRec Downloaded Room",
ImageName = root2.ImageName,
CreatorPlayerId = Convert.ToUInt64(File.ReadAllText("SaveData\\Profile\\userid.txt")),
State = 0,
Accessibility = 1,
SupportsLevelVoting = false,
IsAGRoom = false,
CloningAllowed = false,
SupportsScreens = true,
SupportsWalkVR = true,
SupportsTeleportVR = true,
ReplicationId = null,
ReleaseStatus = 0
};
scene = new List<Scene>
{
new Scene()
{
RoomSceneId = 1,
RoomId = 29,
RoomSceneLocationId = root2.SubRooms[0].UnitySceneId,
Name = "Home",
IsSandbox = true,
DataBlobName = root2.SubRooms[0].DataBlob,
MaxPlayers = 20,
CanMatchmakeInto = true,
DataModifiedAt = root2.SubRooms[0].DataSavedAt,
ReplicationId = null,
UseLevelBasedMatchmaking = false,
UseAgeBasedMatchmaking = false,
UseRecRoyaleMatchmaking = false,
ReleaseStatus = 0,
SupportsJoinInProgress = true
}
};
root = new Root
{
Room = room,
Scenes = scene,
CoOwners = new List<ulong>(),
InvitedCoOwners = new List<ulong>(),
Hosts = new List<ulong>(),
InvitedHosts = new List<ulong>(),
CheerCount = root2.Stats.CheerCount,
FavoriteCount = root2.Stats.FavoriteCount,
VisitCount = root2.Stats.VisitCount,
Tags = new List<aTag>
{
new aTag()
{
Tag = "rro",
Type = 2
}
}
};
File.WriteAllText("SaveData\\Rooms\\Downloaded\\RoomDetails.json", JsonConvert.SerializeObject(root));
}
public static void RoomGet(string roomnames)
{
string webdata = new WebClient().DownloadString("https://rooms.rec.net/rooms?name=" + roomnames + "&include=297");
ModernRooms.Root root2 = JsonConvert.DeserializeObject<ModernRooms.Root>(webdata);
room = new Room
{
RoomId = 29,
Name = root2.Name,
Description = "OpenRec Downloaded Room",
ImageName = root2.ImageName,
CreatorPlayerId = Convert.ToUInt64(File.ReadAllText("SaveData\\Profile\\userid.txt")),
State = 0,
Accessibility = 1,
SupportsLevelVoting = false,
IsAGRoom = false,
CloningAllowed = false,
SupportsScreens = true,
SupportsWalkVR = true,
SupportsTeleportVR = true,
ReplicationId = null,
ReleaseStatus = 0
};
scene = new List<Scene>
{
new Scene()
{
RoomSceneId = 1,
RoomId = 29,
RoomSceneLocationId = root2.SubRooms[0].UnitySceneId,
Name = "Home",
IsSandbox = true,
DataBlobName = root2.SubRooms[0].DataBlob,
MaxPlayers = 20,
CanMatchmakeInto = true,
DataModifiedAt = root2.SubRooms[0].DataSavedAt,
ReplicationId = null,
UseLevelBasedMatchmaking = false,
UseAgeBasedMatchmaking = false,
UseRecRoyaleMatchmaking = false,
ReleaseStatus = 0,
SupportsJoinInProgress = true
}
};
root = new Root
{
Room = room,
Scenes = scene,
CoOwners = new List<ulong>(),
InvitedCoOwners = new List<ulong>(),
Hosts = new List<ulong>(),
InvitedHosts = new List<ulong>(),
CheerCount = root2.Stats.CheerCount,
FavoriteCount = root2.Stats.FavoriteCount,
VisitCount = root2.Stats.VisitCount,
Tags = new List<aTag>
{
new aTag()
{
Tag = "rro",
Type = 2
}
}
};
File.WriteAllText("SaveData\\Rooms\\Downloaded\\roomname.txt", root2.Name);
File.WriteAllText("SaveData\\Rooms\\Downloaded\\roomid.txt", Convert.ToString(root2.RoomId));
File.WriteAllText("SaveData\\Rooms\\Downloaded\\datablob.txt", root2.SubRooms[0].DataBlob);
File.WriteAllText("SaveData\\Rooms\\Downloaded\\roomsceneid.txt", root2.SubRooms[0].UnitySceneId);
File.WriteAllText("SaveData\\Rooms\\Downloaded\\imagename.txt", root2.ImageName);
File.WriteAllText("SaveData\\Rooms\\Downloaded\\cheercount.txt", Convert.ToString(root2.Stats.CheerCount));
File.WriteAllText("SaveData\\Rooms\\Downloaded\\favcount.txt", Convert.ToString(root2.Stats.FavoriteCount));
File.WriteAllText("SaveData\\Rooms\\Downloaded\\visitcount.txt", Convert.ToString(root2.Stats.VisitCount));
File.WriteAllText("SaveData\\Rooms\\Downloaded\\RoomDetails.json", JsonConvert.SerializeObject(root));
}
public static Room room { get; set; }
public static List<Scene> scene { get; set; }
public static Root root { get; set; }
//2018 rooms
public class Room
{
public ulong RoomId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public ulong CreatorPlayerId { get; set; }
public string ImageName { get; set; }
public int State { get; set; }
public int Accessibility { get; set; }
public bool SupportsLevelVoting { get; set; }
public bool IsAGRoom { get; set; }
public bool CloningAllowed { get; set; }
public bool SupportsScreens { get; set; }
public bool SupportsWalkVR { get; set; }
public bool SupportsTeleportVR { get; set; }
public object ReplicationId { get; set; }
public int ReleaseStatus { get; set; }
}
public class Scene
{
public int RoomSceneId { get; set; }
public ulong RoomId { get; set; }
public string RoomSceneLocationId { get; set; }
public string Name { get; set; }
public bool IsSandbox { get; set; }
public string DataBlobName { get; set; }
public int MaxPlayers { get; set; }
public bool CanMatchmakeInto { get; set; }
public DateTime DataModifiedAt { get; set; }
public object ReplicationId { get; set; }
public bool UseLevelBasedMatchmaking { get; set; }
public bool UseAgeBasedMatchmaking { get; set; }
public bool UseRecRoyaleMatchmaking { get; set; }
public int ReleaseStatus { get; set; }
public bool SupportsJoinInProgress { get; set; }
}
public class Root
{
public Room Room { get; set; }
public List<Scene> Scenes { get; set; }
public List<ulong> CoOwners { get; set; }
public List<ulong> InvitedCoOwners { get; set; }
public List<ulong> Hosts { get; set; }
public List<ulong> InvitedHosts { get; set; }
public int CheerCount { get; set; }
public int FavoriteCount { get; set; }
public int VisitCount { get; set; }
public List<aTag> Tags { get; set; }
}
public class aTag
{
public string Tag { get; set; }
public int Type { get; set; }
}
}
}

View File

@@ -1 +1 @@
{"OutfitSelections":"b33dbeee-5bdd-443d-aa6a-761248054e08,,,,1;6d48c545-22bb-46c1-a29d-0a38af387143,,,,2;6d48c545-22bb-46c1-a29d-0a38af387143,,,,3;ecc1dbe6-ca06-4564-b2a6-30956194d1e9,51ef8d39-2b94-4f9e-9620-07b6b0a913a5,0b2395e1-ebcc-47e9-aaf1-faf9e9cec4cd,,2;ecc1dbe6-ca06-4564-b2a6-30956194d1e9,51ef8d39-2b94-4f9e-9620-07b6b0a913a5,0b2395e1-ebcc-47e9-aaf1-faf9e9cec4cd,,3;0753d7a4-8247-4fca-a6fc-359c26086140,,,,0;14ef6b00-debf-4a85-9755-b4d37df496d3,724c79a3-822c-422f-9462-a5374ee0211c,,,0;11e508a7-fe7d-470e-b270-2dba33e2f7a1,,,,0;d0a9262f-5504-46a7-bb10-7507503db58e,fe304452-b57b-45bc-9c1c-b85b70bcec12,,6a007c73-d930-408a-93df-041a715e0dd4,1","HairColor":"5ee30295-b05f-4e96-819e-5ac865b2c63d","SkinColor":"85343b16-d58a-4091-96d8-083a81fb03ae","FaceFeatures":""}
{"OutfitSelections":"b33dbeee-5bdd-443d-aa6a-761248054e08,,,,1;6d48c545-22bb-46c1-a29d-0a38af387143,,,,2;6d48c545-22bb-46c1-a29d-0a38af387143,,,,3;102c625b-b988-4bf8-a2aa-a31ad7029cdc,bd4a84e2-b67a-4269-a26a-17fb23ddb09e,ccf1ccc1-e229-4157-bb74-f2cdef01e547,,0;d0a9262f-5504-46a7-bb10-7507503db58e,ba6b6e1a-a09a-4ba0-9523-552869f03336,,d461ca71-45c9-415e-8e09-ba93e8d73450,1;193a3bf9-abc0-4d78-8d63-92046908b1c5,,,,0;3a790be3-2937-44d4-be01-b5d65353bd3d,,,,2;3a790be3-2937-44d4-be01-b5d65353bd3d,,,,3;e15b13a7-9e9a-4b32-ba2c-0cb31ed55a8c,,,,1","FaceFeatures":"{\"ver\":3,\"eyeId\":\"AjGMoJhEcEehacRZjUMuDg\",\"eyePos\":{\"x\":0.0,\"y\":0.0},\"eyeScl\":0.0,\"mouthId\":\"FrZBRanXEEK29yKJ4jiMjg\",\"mouthPos\":{\"x\":0.0,\"y\":0.0},\"mouthScl\":0.0,\"beardColorId\":\"befcc00a-a2e6-48e4-864c-593d57bbbb5b\"}","SkinColor":"85343b16-d58a-4091-96d8-083a81fb03ae","HairColor":"befcc00a-a2e6-48e4-864c-593d57bbbb5b"}

File diff suppressed because one or more lines are too long

1
Download/banned.txt Normal file
View File

@@ -0,0 +1 @@
[487454, 4701796]

1
Download/baserooms.txt Normal file
View File

@@ -0,0 +1 @@
[{"RoomId":24,"Name":"MakerRoom","Description":"This room is a blank canvas. Make it into whatever you like!","CreatorPlayerId":1,"ImageName":"","State":0,"Accessibility":1,"SupportsLevelVoting":false,"IsAGRoom":true,"CloningAllowed":false,"SupportsScreens":true,"SupportsWalkVR":true,"SupportsTeleportVR":true},{"RoomId":25,"Name":"Park","Description":"A sprawling park with amphitheater, play fields, and a cave.","CreatorPlayerId":114785367,"ImageName":"","State":0,"Accessibility":1,"SupportsLevelVoting":false,"IsAGRoom":true,"CloningAllowed":false,"SupportsScreens":true,"SupportsWalkVR":true,"SupportsTeleportVR":true},{"RoomId":22,"Name":"Lounge","Description":"A low-key lounge to chill with your friends. Great for private parties!","CreatorPlayerId":114785367,"ImageName":"ActivityLounge.png","State":0,"Accessibility":1,"SupportsLevelVoting":false,"IsAGRoom":true,"CloningAllowed":false,"SupportsScreens":true,"SupportsWalkVR":true,"SupportsTeleportVR":true},{"RoomId":23,"Name":"PerformanceHall","Description":"A theater for plays, music, comedy and other performances.","CreatorPlayerId":1,"ImageName":"","State":0,"Accessibility":1,"SupportsLevelVoting":false,"IsAGRoom":true,"CloningAllowed":false,"SupportsScreens":true,"SupportsWalkVR":true,"SupportsTeleportVR":true},{"RoomId":18,"Name":"Hangar","Description":"Teams battle each other and waves of robots.","CreatorPlayerId":114785367,"ImageName":"ActivityLaserTag.png","State":0,"Accessibility":1,"SupportsLevelVoting":false,"IsAGRoom":true,"CloningAllowed":false,"SupportsScreens":true,"SupportsWalkVR":true,"SupportsTeleportVR":true}]

28
Download/changelog.txt Normal file
View File

@@ -0,0 +1,28 @@
Patch v0.6.1:
-Fixed 2016
-Fixed room issues in 2018
-Added Vault Clothing items to September 2018
-September 2018 slightly more stable
-Improved overall server speed
-Fixed the wrongful ban issue
Fifth public release of OpenRec, and the new biggest update to date.
Supports:
-December 25th 2016
-October 19th 2017
-May 30th 2018
-September 27th 2018
-Added 2016 Support
-Added September 27th Support
-Added Image Server (September 2018 only)
-Added Custom Room Downloader (September 2018 only)
-Slight UI Improvements
-Tons of new APIs added in
-Improved banning system
Credits:
@LucasOnDiscord#0210 - Adding potions
@GabeTheFirst#7335 - Tester when my game was broken
@andry6702#9812 - Discovered custom rooms for 2018

View File

@@ -1 +1 @@
[{"Id":1,"ConsumableItemDesc":"7OZ5AE3uuUyqa0P","CreatedAt":"2022-02-18T23:29:59.9035571-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":2,"ConsumableItemDesc":"_jnjYGBcyEWY5Ub4OezXcA","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":3,"ConsumableItemDesc":"5hIAZ9wg5EyG1cILf4FS2A","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":4,"ConsumableItemDesc":"wUCIKdJSvEmiQHYMyx4X4w","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":5,"ConsumableItemDesc":"JfnVXFmilU6ysv-VbTAe3A","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":6,"ConsumableItemDesc":"InQ25wQMGkG_bvuD5rf2Ag","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":7,"ConsumableItemDesc":"mMCGPgK3tki5S_15q2Z81A","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":8,"ConsumableItemDesc":"ZuvkidodzkuOfGLDnTOFyg","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false}]
[{"Id":1,"ConsumableItemDesc":"7OZ5AE3uuUyqa0P","CreatedAt":"2022-02-18T23:29:59.9035571-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":2,"ConsumableItemDesc":"_jnjYGBcyEWY5Ub4OezXcA","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":3,"ConsumableItemDesc":"5hIAZ9wg5EyG1cILf4FS2A","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":4,"ConsumableItemDesc":"wUCIKdJSvEmiQHYMyx4X4w","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":5,"ConsumableItemDesc":"JfnVXFmilU6ysv-VbTAe3A","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":6,"ConsumableItemDesc":"InQ25wQMGkG_bvuD5rf2Ag","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":7,"ConsumableItemDesc":"mMCGPgK3tki5S_15q2Z81A","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":8,"ConsumableItemDesc":"ZuvkidodzkuOfGLDnTOFyg","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":9,"ConsumableItemDesc":"VQSgL2pTLkWx4B3kwYG7UA","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":10,"ConsumableItemDesc":"Tpxqe_lycUelySRHM8B0Vw","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false},{"Id":11,"ConsumableItemDesc":"-hy0qD-iUk-v4NHxNzanmg","CreatedAt":"2022-02-18T23:29:59.909138-05:00","Count":99,"UnlockedLevel":1,"IsActive":false}]

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
,"FaceFeatures":""}

104
Download/gameconfigs.txt Normal file
View File

@@ -0,0 +1,104 @@
[
{
"Key": "Gift.MaxDaily",
"Value": "100",
"StartTime": null,
"EndTime": null
},
{
"Key": "Gift.Falloff",
"Value": "1",
"StartTime": null,
"EndTime": null
},
{
"Key": "Gift.DropChance",
"Value": "100",
"StartTime": null,
"EndTime": null
},
{
"Key": "UseHeartbeatWebSocket",
"Value": "0",
"StartTime": null,
"EndTime": null
},
{
"Key": "Screens.ForceVerification",
"Value": "1",
"StartTime": null,
"EndTime": null
},
{
"Key": "Screens.ForceVerification",
"Value": "1",
"StartTime": null,
"EndTime": null
},
{
"Key": "forceRegistration",
"Value": "0",
"StartTime": null,
"EndTime": null
},
{
"Key": "Door.Creative.Query",
"Value": "#puzzle",
"StartTime": null,
"EndTime": null
},
{
"Key": "Door.Creative.Title",
"Value": "PUZZLE",
"StartTime": null,
"EndTime": null
},
{
"Key": "Door.Featured.Query",
"Value": "#featured",
"StartTime": null,
"EndTime": null
},
{
"Key": "Door.Featured.Title",
"Value": "Featured",
"StartTime": null,
"EndTime": null
},
{
"Key": "Door.Quests.Query",
"Value": "#quest",
"StartTime": null,
"EndTime": null
},
{
"Key": "Door.Quests.Title",
"Value": "QUESTS",
"StartTime": null,
"EndTime": null
},
{
"Key": "Door.Shooters.Query",
"Value": "#pvp #rro",
"StartTime": null,
"EndTime": null
},
{
"Key": "Door.Shooters.Title",
"Value": "PVP",
"StartTime": null,
"EndTime": null
},
{
"Key": "Door.Sports.Query",
"Value": "#sport",
"StartTime": null,
"EndTime": null
},
{
"Key": "Door.Sports.Title",
"Value": "SPORTS & PVP",
"StartTime": null,
"EndTime": null
}
]

1
Download/storefront2.txt Normal file
View File

@@ -0,0 +1 @@
{"StorefrontType":2,"NextUpdate":"2024-02-16T11:04:54.4129449-07:00","StoreItems":[{"PurchasableItemId":0,"Type":0,"IsFeatured":false,"Prices":[{"CurrencyType":2,"Price":30000}],"GiftDrops":[{"GiftDropId":0,"FriendlyName":"HAHA I can communicate via raw data","Tooltip":"your balls are mine now, raw data geek","AvatarItemDesc":"274cb9b2-2f59-47ea-9a8d-a5b656d148c6,,,","ConsumableItemDesc":"","EquipmentPrefabName":"","EquipmentModificationGuid":"","Rarity":50,"IsQuery":false,"Unique":false,"Level":50,"Context":100010}]},{"PurchasableItemId":1,"Type":0,"IsFeatured":false,"Prices":[{"CurrencyType":2,"Price":35000}],"GiftDrops":[{"GiftDropId":1,"FriendlyName":"anal sex","Tooltip":"with the cum","AvatarItemDesc":"2c679f89-c76e-4cfb-94e9-448c8fd44d55,,,","ConsumableItemDesc":"","EquipmentPrefabName":"","EquipmentModificationGuid":"","Rarity":50,"IsQuery":false,"Unique":false,"Level":50,"Context":100010}]},{"PurchasableItemId":2,"Type":0,"IsFeatured":false,"Prices":[{"CurrencyType":2,"Price":10000}],"GiftDrops":[{"GiftDropId":2,"FriendlyName":"I'm laughing so hard, some may say","Tooltip":"Bawling (at Two FootWear Coridors, now in September 2018's Play Menu!)","AvatarItemDesc":"50c9c6f8-2963-4ef3-95d5-e999a898269f,,,","ConsumableItemDesc":"","EquipmentPrefabName":"","EquipmentModificationGuid":"","Rarity":50,"IsQuery":false,"Unique":false,"Level":50,"Context":100010}]},{"PurchasableItemId":0,"Type":0,"IsFeatured":false,"Prices":[{"CurrencyType":2,"Price":15000}],"GiftDrops":[{"GiftDropId":0,"FriendlyName":"Bishop Hair","Tooltip":"","AvatarItemDesc":"b861e5f3-fc6d-43b3-9861-c1b45cb493a8,,,","ConsumableItemDesc":"","EquipmentPrefabName":"","EquipmentModificationGuid":"","Rarity":50,"IsQuery":false,"Unique":false,"Level":50,"Context":100010}]},{"PurchasableItemId":4,"Type":0,"IsFeatured":false,"Prices":[{"CurrencyType":2,"Price":20000}],"GiftDrops":[{"GiftDropId":4,"FriendlyName":"Bishop Shirt","Tooltip":"","AvatarItemDesc":"6930ce13-4be4-4ab9-9817-667bd261ffc3,,,","ConsumableItemDesc":"","EquipmentPrefabName":"","EquipmentModificationGuid":"","Rarity":50,"IsQuery":false,"Unique":false,"Level":50,"Context":100010}]},{"PurchasableItemId":5,"Type":0,"IsFeatured":false,"Prices":[{"CurrencyType":2,"Price":20000}],"GiftDrops":[{"GiftDropId":5,"FriendlyName":"Bishop Gloves","Tooltip":"","AvatarItemDesc":"abc25091-ed5f-4c72-9364-fffeef1bc239,,,","ConsumableItemDesc":"","EquipmentPrefabName":"","EquipmentModificationGuid":"","Rarity":50,"IsQuery":false,"Unique":false,"Level":50,"Context":100010}]},{"PurchasableItemId":0,"Type":0,"IsFeatured":false,"Prices":[{"CurrencyType":2,"Price":30000}],"GiftDrops":[{"GiftDropId":0,"FriendlyName":"Saija Helmet","Tooltip":"","AvatarItemDesc":"274cb9b2-2f59-47ea-9a8d-a5b656d148c6,,,","ConsumableItemDesc":"","EquipmentPrefabName":"","EquipmentModificationGuid":"","Rarity":50,"IsQuery":false,"Unique":false,"Level":50,"Context":100010}]},{"PurchasableItemId":1,"Type":0,"IsFeatured":false,"Prices":[{"CurrencyType":2,"Price":35000}],"GiftDrops":[{"GiftDropId":1,"FriendlyName":"Saija Shirt","Tooltip":"","AvatarItemDesc":"2c679f89-c76e-4cfb-94e9-448c8fd44d55,,,","ConsumableItemDesc":"","EquipmentPrefabName":"","EquipmentModificationGuid":"","Rarity":50,"IsQuery":false,"Unique":false,"Level":50,"Context":100010}]},{"PurchasableItemId":2,"Type":0,"IsFeatured":false,"Prices":[{"CurrencyType":2,"Price":10000}],"GiftDrops":[{"GiftDropId":2,"FriendlyName":"Saija Gloves","Tooltip":"","AvatarItemDesc":"50c9c6f8-2963-4ef3-95d5-e999a898269f,,,","ConsumableItemDesc":"","EquipmentPrefabName":"","EquipmentModificationGuid":"","Rarity":50,"IsQuery":false,"Unique":false,"Level":50,"Context":100010}]},{"PurchasableItemId":0,"Type":0,"IsFeatured":false,"Prices":[{"CurrencyType":2,"Price":15000}],"GiftDrops":[{"GiftDropId":0,"FriendlyName":"Bishop Hair","Tooltip":"","AvatarItemDesc":"b861e5f3-fc6d-43b3-9861-c1b45cb493a8,,,","ConsumableItemDesc":"","EquipmentPrefabName":"","EquipmentModificationGuid":"","Rarity":50,"IsQuery":false,"Unique":false,"Level":50,"Context":100010}]},{"PurchasableItemId":4,"Type":0,"IsFeatured":false,"Prices":[{"CurrencyType":2,"Price":20000}],"GiftDrops":[{"GiftDropId":4,"FriendlyName":"Bishop Shirt","Tooltip":"","AvatarItemDesc":"6930ce13-4be4-4ab9-9817-667bd261ffc3,,,","ConsumableItemDesc":"","EquipmentPrefabName":"","EquipmentModificationGuid":"","Rarity":50,"IsQuery":false,"Unique":false,"Level":50,"Context":100010}]},{"PurchasableItemId":5,"Type":0,"IsFeatured":false,"Prices":[{"CurrencyType":2,"Price":20000}],"GiftDrops":[{"GiftDropId":5,"FriendlyName":"Bishop Gloves","Tooltip":"","AvatarItemDesc":"abc25091-ed5f-4c72-9364-fffeef1bc239,,,","ConsumableItemDesc":"","EquipmentPrefabName":"","EquipmentModificationGuid":"","Rarity":50,"IsQuery":false,"Unique":false,"Level":50,"Context":100010}]}]}

View File

@@ -1 +1 @@
0.2
0.6.1

View File

@@ -3,7 +3,8 @@ using Newtonsoft.Json;
using api;
using server;
using System.IO;
namespace gamesessions2018
namespace gamesesh
{
// Token: 0x02000020 RID: 32
public class GameSessions
@@ -11,33 +12,40 @@ namespace gamesessions2018
// Token: 0x060000BE RID: 190 RVA: 0x00004C08 File Offset: 0x00002E08
public static string JoinRandom(string jsonData)
{
bool sandboxmode = false;
long? creatorid = 1243409L;
long gamesessionid = long.Parse(start.Program.version + "1");
Console.WriteLine("OpenRec GameSession Room");
GameSessions.JoinRandomRequest joinRandomRequest = JsonConvert.DeserializeObject<GameSessions.JoinRandomRequest>(jsonData);
if (File.ReadAllText("SaveData\\App\\sandbox.txt") == "Enabled")
if (File.ReadAllText("SaveData\\App\\privaterooms.txt") == "Enabled")
{
sandboxmode = true;
gamesessionid = new Random().Next(0, 99);
}
if (start.Program.version == "2017")
{
creatorid = (long?)APIServer.CachedPlayerID;
}
if (start.Program.bannedflag == true)
{
gamesessionid = 100L;
}
Config.localGameSession = new GameSessions.SessionInstance
{
GameSessionId = 2018L,
GameSessionId = gamesessionid,
RegionId = "us",
RoomId = joinRandomRequest.ActivityLevelIds[0],
RecRoomId = null,
EventId = null,
CreatorPlayerId = (long?)APIServer.CachedPlayerID,
Name = "OpenRec",
CreatorPlayerId = creatorid,
Name = "OpenRec Room",
ActivityLevelId = joinRandomRequest.ActivityLevelIds[0],
Private = false,
Sandbox = sandboxmode,
Sandbox = false,
SupportsScreens = true,
SupportsVR = true,
GameInProgress = false,
MaxCapacity = 20,
IsFull = false
};
}
return JsonConvert.SerializeObject(new GameSessions.JoinResult
{
@@ -51,7 +59,7 @@ namespace gamesessions2018
{
return JsonConvert.SerializeObject(new GameSessions.PlayerStatus
{
PlayerId = APIServer.CachedPlayerID,
PlayerId = Convert.ToUInt64(File.ReadAllText("SaveData\\Profile\\userid.txt")),
IsOnline = true,
InScreenMode = false,
GameSession = Config.localGameSession
@@ -61,30 +69,35 @@ namespace gamesessions2018
// Token: 0x060000C0 RID: 192 RVA: 0x00004D24 File Offset: 0x00002F24
public static string Create(string jsonData)
{
Console.WriteLine("[API][GameSession] Creating Room...");
GameSessions.CreateRequest createRequest = JsonConvert.DeserializeObject<GameSessions.CreateRequest>(jsonData);
long gamesessionid = 20161L;
Console.WriteLine("OpenRec GameSession Custom Room");
if (File.ReadAllText("SaveData\\App\\privaterooms.txt") == "Enabled")
{
gamesessionid = new Random().Next(0, 99);
}
if (start.Program.bannedflag == true)
{
gamesessionid = 100L;
}
GameSessions.CreateRequest createRequest = JsonConvert.DeserializeObject<GameSessions.CreateRequest>(jsonData);
Config.localGameSession = new GameSessions.SessionInstance
{
GameSessionId = 2017L,
GameSessionId = gamesessionid,
RegionId = "us",
RoomId = createRequest.ActivityLevelIds,
RoomId = createRequest.ActivityLevelId,
RecRoomId = null,
EventId = null,
CreatorPlayerId = (long?)APIServer.CachedPlayerID,
Name = "Custom Room",
ActivityLevelId = createRequest.ActivityLevelIds,
Name = "OpenRec Custom Room",
ActivityLevelId = createRequest.ActivityLevelId,
Private = false,
Sandbox = createRequest.IsSandbox,
Sandbox = true,
SupportsScreens = true,
SupportsVR = true,
GameInProgress = false,
MaxCapacity = 20,
IsFull = false
};
}
return JsonConvert.SerializeObject(new GameSessions.JoinResult
{
Result = 0,
@@ -97,7 +110,7 @@ namespace gamesessions2018
{
return new GameSessions.PlayerStatus
{
PlayerId = APIServer.CachedPlayerID,
PlayerId = Convert.ToUInt64(File.ReadAllText("SaveData\\Profile\\userid.txt")),
IsOnline = true,
InScreenMode = false,
GameSession = Config.localGameSession
@@ -269,13 +282,52 @@ namespace gamesessions2018
public GameSessions.RegionPing[] RegionPings { get; set; }
}
public class JoinRoomRequest2
{
// Token: 0x17000022 RID: 34
// (get) Token: 0x06000060 RID: 96 RVA: 0x00002345 File Offset: 0x00000545
// (set) Token: 0x06000061 RID: 97 RVA: 0x0000234D File Offset: 0x0000054D
public ulong[] ExpectedPlayerIds { get; set; }
// Token: 0x17000023 RID: 35
// (get) Token: 0x06000062 RID: 98 RVA: 0x00002356 File Offset: 0x00000556
// (set) Token: 0x06000063 RID: 99 RVA: 0x0000235E File Offset: 0x0000055E
public GameSessions.RegionPing[] RegionPings { get; set; }
// Token: 0x17000024 RID: 36
// (get) Token: 0x06000064 RID: 100 RVA: 0x00002367 File Offset: 0x00000567
// (set) Token: 0x06000065 RID: 101 RVA: 0x0000236F File Offset: 0x0000056F
public string[] RoomTags { get; set; }
// Token: 0x17000025 RID: 37
// (get) Token: 0x06000066 RID: 102 RVA: 0x00002378 File Offset: 0x00000578
// (set) Token: 0x06000067 RID: 103 RVA: 0x00002380 File Offset: 0x00000580
public string RoomName { get; set; }
// Token: 0x17000026 RID: 38
// (get) Token: 0x06000068 RID: 104 RVA: 0x00002389 File Offset: 0x00000589
// (set) Token: 0x06000069 RID: 105 RVA: 0x00002391 File Offset: 0x00000591
public string SceneName { get; set; }
// Token: 0x17000027 RID: 39
// (get) Token: 0x0600006A RID: 106 RVA: 0x0000239A File Offset: 0x0000059A
// (set) Token: 0x0600006B RID: 107 RVA: 0x000023A2 File Offset: 0x000005A2
public int AdditionalPlayerJoinMode { get; set; }
// Token: 0x17000028 RID: 40
// (get) Token: 0x0600006C RID: 108 RVA: 0x000023AB File Offset: 0x000005AB
// (set) Token: 0x0600006D RID: 109 RVA: 0x000023B3 File Offset: 0x000005B3
public bool Private { get; set; }
}
// Token: 0x02000025 RID: 37
// Token: 0x02000025 RID: 37
public class CreateRequest
{
// Token: 0x17000055 RID: 85
// (get) Token: 0x060000F2 RID: 242 RVA: 0x0000271C File Offset: 0x0000091C
// (set) Token: 0x060000F3 RID: 243 RVA: 0x00002724 File Offset: 0x00000924
public string ActivityLevelIds { get; set; }
public string ActivityLevelId { get; set; }
// Token: 0x17000056 RID: 86
// (get) Token: 0x060000F4 RID: 244 RVA: 0x0000272D File Offset: 0x0000092D

63
GetOrCreates.cs Normal file
View File

@@ -0,0 +1,63 @@
using System;
using System.IO;
using Newtonsoft.Json;
namespace api2017
{
// Token: 0x0200003A RID: 58
internal class getorcreate
{
public static string GetOrCreate(ulong userid)
{
int level = int.Parse(File.ReadAllText("SaveData\\Profile\\level.txt"));
string name = File.ReadAllText("SaveData\\Profile\\username.txt");
return JsonConvert.SerializeObject(new Profiles
{
Id = userid,
Username = name,
DisplayName = name,
XP = 48,
Level = level,
Reputation = 0,
Verified = true,
Developer = true,
HasEmail = true,
CanReceiveInvites = false,
ProfileImageName = name,
HasBirthday = true
});
}
// Token: 0x06000197 RID: 407 RVA: 0x0000550C File Offset: 0x0000370C
public static string GetOrCreateArray(ulong userid)
{
int level = int.Parse(File.ReadAllText("SaveData\\Profile\\level.txt"));
string name = File.ReadAllText("SaveData\\Profile\\username.txt");
return JsonConvert.SerializeObject(new Profiles[]
{
new Profiles
{
Id = userid,
Username = name,
DisplayName = name,
XP = 48,
Level = level,
Reputation = 0,
Verified = true,
Developer = true,
HasEmail = true,
CanReceiveInvites = false,
ProfileImageName = name,
JuniorProfile = false,
ForceJuniorImages = false,
HasBirthday = true
}
});
}
// Token: 0x06000199 RID: 409 RVA: 0x00002BBE File Offset: 0x00000DBE
public static string playerName()
{
return File.ReadAllText("playerNameConfig.txt");
}
}
}

View File

@@ -15,7 +15,7 @@ namespace server
{
try
{
Console.WriteLine("ImageServer.cs has started.");
Console.WriteLine("[ImageServer.cs] has started.");
new Thread(new ThreadStart(this.StartListen)).Start();
}
catch (Exception ex)
@@ -30,18 +30,54 @@ namespace server
this.listener.Prefixes.Add("http://localhost:20182/");
for (; ; )
{
this.listener.Start();
Console.WriteLine("ImageServer.cs is listening.");
Console.WriteLine("{ImageServer.cs] is listening.");
HttpListenerContext context = this.listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string rawUrl = request.RawUrl;
string text;
byte[] i = File.ReadAllBytes("SaveData\\profileimage.png");
byte[] i = File.ReadAllBytes("SaveData\\profileimage.png"); //File.ReadAllBytes("SaveData\\profileimage.png");
using (StreamReader streamReader = new StreamReader(request.InputStream, request.ContentEncoding))
{
text = streamReader.ReadToEnd();
}
if (rawUrl.StartsWith("/alt/"))
{
i = File.ReadAllBytes("SaveData\\profileimage.png");
}
else if (rawUrl.StartsWith("/" + File.ReadAllText("SaveData\\Profile\\username.txt")))
{
i = File.ReadAllBytes("SaveData\\profileimage.png");
}
else if (rawUrl.StartsWith("//room/"))
{
i = new WebClient().DownloadData("https://cdn.rec.net" + rawUrl.Remove(0, 1));
}
else
{
try
{
i = new WebClient().DownloadData("https://img.rec.net" + rawUrl);
}
catch
{
Console.WriteLine("[ImageServer.cs] Image not found on img.rec.net.");
}
}
if (rawUrl.StartsWith("/CustomRoom.png"))
{
try
{
i = new WebClient().DownloadData("https://img.rec.net/" + File.ReadAllText("SaveData\\Rooms\\Downloaded\\imagename.txt"));
}
catch
{
Console.WriteLine("[ImageServer.cs] Image not found on img.rec.net.");
i = new WebClient().DownloadData("https://img.rec.net/DefaultRoomImage.jpg");
}
}
Console.WriteLine("Image Requested: " + rawUrl);
Console.WriteLine("Image Data: " + text);
Console.WriteLine("Image Response: ");
@@ -49,19 +85,14 @@ namespace server
response.ContentLength64 = (long)bytes.Length;
Stream outputStream = response.OutputStream;
outputStream.Write(bytes, 0, bytes.Length);
Thread.Sleep(400);
Thread.Sleep(1);
outputStream.Close();
this.listener.Stop();
}
}
public static string VersionCheckResponse = "{\"ValidVersion\":true}";
public static string BlankResponse = "";
// Token: 0x04000192 RID: 402
private HttpListener listener = new HttpListener();
}
}

12
ModerationBlockDetails.cs Normal file
View File

@@ -0,0 +1,12 @@
using System;
namespace api
{
public class ModerationBlockDetails
{
public int ReportCategory { get; set; }
public int Duration { get; set; }
public long GameSessionId { get; set; }
public string Message { get; set; }
}
}

71
ModernRooms.cs Normal file
View File

@@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace api
{
class ModernRooms
{
public class Stats
{
public int CheerCount { get; set; }
public int FavoriteCount { get; set; }
public int VisitorCount { get; set; }
public int VisitCount { get; set; }
}
public class SubRoom
{
public int SubRoomId { get; set; }
public ulong RoomId { get; set; }
public string UnitySceneId { get; set; }
public string Name { get; set; }
public string DataBlob { get; set; }
public DateTime DataSavedAt { get; set; }
public bool IsSandbox { get; set; }
public int MaxPlayers { get; set; }
public int Accessibility { get; set; }
}
public class Root
{
public ulong RoomId { get; set; }
public bool IsDorm { get; set; }
public int MaxPlayerCalculationMode { get; set; }
public int MaxPlayers { get; set; }
public bool CloningAllowed { get; set; }
public bool DisableMicAutoMute { get; set; }
public bool DisableRoomComments { get; set; }
public bool EncryptVoiceChat { get; set; }
public bool LoadScreenLocked { get; set; }
public int Version { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string ImageName { get; set; }
public int WarningMask { get; set; }
public object CustomWarning { get; set; }
public int CreatorAccountId { get; set; }
public int State { get; set; }
public int Accessibility { get; set; }
public bool SupportsLevelVoting { get; set; }
public bool IsRRO { get; set; }
public bool SupportsScreens { get; set; }
public bool SupportsWalkVR { get; set; }
public bool SupportsTeleportVR { get; set; }
public bool SupportsVRLow { get; set; }
public bool SupportsQuest2 { get; set; }
public bool SupportsMobile { get; set; }
public bool SupportsJuniors { get; set; }
public int MinLevel { get; set; }
public DateTime CreatedAt { get; set; }
public Stats Stats { get; set; }
public List<SubRoom> SubRooms { get; set; }
public List<object> Tags { get; set; }
public List<object> PromoImages { get; set; }
public List<object> PromoExternalContent { get; set; }
public List<object> LoadScreens { get; set; }
}
}
}

View File

@@ -3,18 +3,21 @@ using System.IO;
using System.Net;
using System.Text;
using System.Threading;
using Newtonsoft.Json;
using start;
namespace server
{
// Token: 0x02000050 RID: 80
internal class NameServer
{
// Token: 0x06000227 RID: 551 RVA: 0x00006D1C File Offset: 0x00004F1C
public NameServer()
{
try
{
Console.WriteLine("NameServer.cs has started.");
Console.WriteLine("[NameServer.cs] has started.");
new Thread(new ThreadStart(this.StartListen)).Start();
}
catch (Exception ex)
@@ -26,23 +29,43 @@ namespace server
// Token: 0x06000228 RID: 552 RVA: 0x00006D84 File Offset: 0x00004F84
private void StartListen()
{
//nameserver is ONLY for 2018
this.listener.Prefixes.Add("http://localhost:20181/");
for (; ; )
{
this.listener.Start();
Console.WriteLine("NameServer.cs is listening.");
Console.WriteLine("[NameServer.cs] is listening.");
HttpListenerContext context = this.listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
string rawUrl = request.RawUrl;
string s = "";
s = "{\"API\":\"http://localhost:2018\",\"Notifications\":\"http://localhost:20161\",\"Images\":\"http://localhost:20182\"}";
if (Program.version == "2019")
{
NSData2 data2 = new NSData2()
{
API = "http://localhost:2018",
Notifications = "http://localhost:20161",
Images = "http://localhost:20182"
};
s = JsonConvert.SerializeObject(data2);
}
else
{
NSData data = new NSData()
{
API = "http://localhost:2018",
Notifications = "http://localhost:20161",
Images = "http://localhost:20182"
};
s = JsonConvert.SerializeObject(data);
}
Console.WriteLine("API Response: " + s);
byte[] bytes = Encoding.UTF8.GetBytes(s);
response.ContentLength64 = (long)bytes.Length;
Stream outputStream = response.OutputStream;
outputStream.Write(bytes, 0, bytes.Length);
Thread.Sleep(400);
Thread.Sleep(1);
outputStream.Close();
this.listener.Stop();
}
@@ -52,7 +75,45 @@ namespace server
public static string BlankResponse = "";
public class NSData
{
public string API { get; set; }
public string Notifications { get; set; }
public string Images { get; set; }
}
public class NSData2
{
// Token: 0x17000013 RID: 19
// (get) Token: 0x06000040 RID: 64 RVA: 0x00002256 File Offset: 0x00000456
// (set) Token: 0x06000041 RID: 65 RVA: 0x0000225E File Offset: 0x0000045E
public string Auth { get; set; }
// Token: 0x17000014 RID: 20
// (get) Token: 0x06000042 RID: 66 RVA: 0x00002267 File Offset: 0x00000467
// (set) Token: 0x06000043 RID: 67 RVA: 0x0000226F File Offset: 0x0000046F
public string API { get; set; }
// Token: 0x17000015 RID: 21
// (get) Token: 0x06000044 RID: 68 RVA: 0x00002278 File Offset: 0x00000478
// (set) Token: 0x06000045 RID: 69 RVA: 0x00002280 File Offset: 0x00000480
public string WWW { get; set; }
// Token: 0x17000016 RID: 22
// (get) Token: 0x06000046 RID: 70 RVA: 0x00002289 File Offset: 0x00000489
// (set) Token: 0x06000047 RID: 71 RVA: 0x00002291 File Offset: 0x00000491
public string Notifications { get; set; }
// Token: 0x17000017 RID: 23
// (get) Token: 0x06000048 RID: 72 RVA: 0x0000229A File Offset: 0x0000049A
// (set) Token: 0x06000049 RID: 73 RVA: 0x000022A2 File Offset: 0x000004A2
public string Images { get; set; }
// Token: 0x17000018 RID: 24
// (get) Token: 0x0600004A RID: 74 RVA: 0x000022AB File Offset: 0x000004AB
// (set) Token: 0x0600004B RID: 75 RVA: 0x000022B3 File Offset: 0x000004B3
public string Commerce { get; set; }
}
// Token: 0x04000192 RID: 402
private HttpListener listener = new HttpListener();
}

View File

@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using gamesessions2018;
using gamesesh;
namespace ws
{
@@ -21,16 +21,16 @@ namespace ws
{
if (text2 == "playerSubscriptions/v1/update")
{
Console.WriteLine("WebSocket.cs game client sent presence update.");
Console.WriteLine("[WSS] Game client sent presence update.");
return JsonConvert.SerializeObject(Notification.Reponse.createResponse(12, GameSessions.StatusSessionInstance()));
}
if (text2 == "heartbeat2")
{
Console.WriteLine("WebSocket.cs heartbeat 2 sent by game client.");
Console.WriteLine("[WSS] Heartbeat 2 sent by game client.");
return JsonConvert.SerializeObject(Notification.Reponse.createResponse(4, GameSessions.StatusSessionInstance()));
}
}
Console.WriteLine("WebSocket.cs unknown API call: " + text);
Console.WriteLine("[WSS] Unknown API call: " + text);
result = "";
}
else
@@ -41,58 +41,43 @@ namespace ws
}
// Token: 0x0200002B RID: 43
public enum ResponseResult
public enum ResponseResults
{
// Token: 0x04000092 RID: 146
RelationshipChanged = 1,
// Token: 0x04000093 RID: 147
MessageReceived,
// Token: 0x04000094 RID: 148
MessageDeleted,
// Token: 0x04000095 RID: 149
PresenceHeartbeatResponse,
// Token: 0x04000096 RID: 150
SubscriptionListUpdated = 9,
// Token: 0x04000097 RID: 151
SubscriptionUpdateProfile = 11,
// Token: 0x04000098 RID: 152
SubscriptionUpdatePresence,
// Token: 0x04000099 RID: 153
SubscriptionUpdateGameSession,
// Token: 0x0400009A RID: 154
SubscriptionUpdateRoom,
// Token: 0x0400009B RID: 155
SubscriptionUpdateRoom = 15,
ModerationQuitGame = 20,
// Token: 0x0400009C RID: 156
ModerationUpdateRequired,
// Token: 0x0400009D RID: 157
ModerationKick,
// Token: 0x0400009E RID: 158
ModerationKickAttemptFailed,
// Token: 0x0400009F RID: 159
ServerMaintenance = 25,
GiftPackageReceived = 30,
// Token: 0x040000A0 RID: 160
ProfileJuniorStatusUpdate = 40,
// Token: 0x040000A1 RID: 161
RelationshipsInvalid = 50,
// Token: 0x040000A2 RID: 162
StorefrontBalanceAdd = 60
StorefrontBalanceAdd = 60,
ConsumableMappingAdded = 70,
ConsumableMappingRemoved,
PlayerEventCreated = 80,
PlayerEventUpdated,
PlayerEventDeleted,
PlayerEventResponseChanged,
PlayerEventResponseDeleted,
PlayerEventStateChanged,
ChatMessageReceived = 90
}
// Token: 0x0200002C RID: 44
public class Reponse
{
// Token: 0x1700005F RID: 95
// (get) Token: 0x0600010D RID: 269
// (set) Token: 0x0600010E RID: 270
public int Id { get; set; }
// Token: 0x17000060 RID: 96
// (get) Token: 0x0600010F RID: 271
// (set) Token: 0x06000110 RID: 272
public object Msg { get; set; }
// Token: 0x06000111 RID: 273
public static Notification.Reponse createResponse(int id, object msg)
{
return new Notification.Reponse
@@ -101,6 +86,21 @@ namespace ws
Msg = msg
};
}
public static Notification.Reponse createBannedResponse()
{
return new Notification.Reponse
{
Id = (int)ResponseResults.ModerationKick,
Msg = new api.ModerationBlockDetails()
{
ReportCategory = 1,
Duration = int.MaxValue,
GameSessionId = 100L,
Message = "You have been banned. You are probably a little kid and are now whining at your VR headset. If you aren't a little kid, DM me to appeal."
}
};
}
}
}
}

110
Notification2018.cs Normal file
View File

@@ -0,0 +1,110 @@
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using ws;
namespace vaultgamesesh
{
// Token: 0x02000005 RID: 5
public class Notification2018
{
// Token: 0x06000015 RID: 21 RVA: 0x00002A18 File Offset: 0x00000C18
public static string ProcessRequest(string jsonData)
{
Dictionary<string, object> dictionary = JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonData);
bool flag = dictionary.ContainsKey("api");
string result;
if (flag)
{
string text = (string)dictionary["api"];
string text2 = text;
bool flag2 = text2 != null;
if (flag2)
{
bool flag3 = text2 == "playerSubscriptions/v1/update";
if (flag3)
{
Console.WriteLine("[18CWS] Game client sent presence update.");
return JsonConvert.SerializeObject(Notification.Reponse.createResponse(12, c000020.m000027()));
}
bool flag4 = text2 == "heartbeat2";
if (flag4)
{
Console.WriteLine("[18CWS] Heartbeat 2 sent by game client.");
return JsonConvert.SerializeObject(Notification.Reponse.createResponse(4, c000020.m000027()));
}
}
Console.WriteLine("[18CWS] Unknown CWS call: " + text);
result = "";
}
else
{
result = jsonData;
}
return result;
}
// Token: 0x02000038 RID: 56
public enum ResponseResult
{
// Token: 0x040000A8 RID: 168
RelationshipChanged = 1,
// Token: 0x040000A9 RID: 169
MessageReceived,
// Token: 0x040000AA RID: 170
MessageDeleted,
// Token: 0x040000AB RID: 171
PresenceHeartbeatResponse,
// Token: 0x040000AC RID: 172
SubscriptionListUpdated = 9,
// Token: 0x040000AD RID: 173
SubscriptionUpdateProfile = 11,
// Token: 0x040000AE RID: 174
SubscriptionUpdatePresence,
// Token: 0x040000AF RID: 175
SubscriptionUpdateGameSession,
// Token: 0x040000B0 RID: 176
SubscriptionUpdateRoom,
// Token: 0x040000B1 RID: 177
ModerationQuitGame = 20,
// Token: 0x040000B2 RID: 178
ModerationUpdateRequired,
// Token: 0x040000B3 RID: 179
ModerationKick,
// Token: 0x040000B4 RID: 180
ModerationKickAttemptFailed,
// Token: 0x040000B5 RID: 181
GiftPackageReceived = 30,
// Token: 0x040000B6 RID: 182
ProfileJuniorStatusUpdate = 40,
// Token: 0x040000B7 RID: 183
RelationshipsInvalid = 50,
// Token: 0x040000B8 RID: 184
StorefrontBalanceAdd = 60
}
// Token: 0x02000039 RID: 57
public class Reponse
{
// Token: 0x1700007E RID: 126
// (get) Token: 0x06000167 RID: 359 RVA: 0x0000A5EB File Offset: 0x000087EB
// (set) Token: 0x06000168 RID: 360 RVA: 0x0000A5F3 File Offset: 0x000087F3
public int Id { get; set; }
// Token: 0x1700007F RID: 127
// (get) Token: 0x06000169 RID: 361 RVA: 0x0000A5FC File Offset: 0x000087FC
// (set) Token: 0x0600016A RID: 362 RVA: 0x0000A604 File Offset: 0x00008804
public object Msg { get; set; }
// Token: 0x0600016B RID: 363 RVA: 0x0000A610 File Offset: 0x00008810
public static Notification.Reponse createResponse(int id, object msg)
{
return new Notification.Reponse
{
Id = id,
Msg = msg
};
}
}
}
}

View File

@@ -3,8 +3,22 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<ApplicationIcon>icon2.ico</ApplicationIcon>
<AssemblyName>OpenRec</AssemblyName>
<RootNamespace>OpenRec</RootNamespace>
<Authors>recroom2016</Authors>
<PackageIcon>icon2.png</PackageIcon>
<PackageIconUrl />
<RepositoryUrl>https://github.com/recroom2016/OpenRec</RepositoryUrl>
<PackageProjectUrl>https://discord.gg/daC8QUhnFP</PackageProjectUrl>
<Company>OpenRec</Company>
<Version>0.4.0</Version>
</PropertyGroup>
<ItemGroup>
<None Remove="NewFile1.txt" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup>
@@ -15,4 +29,11 @@
</Reference>
</ItemGroup>
<ItemGroup>
<None Include="C:\Users\Tucker\Downloads\icon2.png">
<Pack>True</Pack>
<PackagePath></PackagePath>
</None>
</ItemGroup>
</Project>

View File

@@ -5,6 +5,8 @@ VisualStudioVersion = 16.0.31321.278
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenRec_", "OpenRec_.csproj", "{C3C433FC-52FB-4472-81F7-B271A2CDABFE}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{C754033C-FE82-4FF2-9189-A7EE0E2E5974}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU

36
PlatformLogin.cs Normal file
View File

@@ -0,0 +1,36 @@
using System;
using Newtonsoft.Json;
namespace api2017
{
// Token: 0x02000032 RID: 50
internal class PlatformLogin
{
// Token: 0x17000070 RID: 112
// (get) Token: 0x06000137 RID: 311 RVA: 0x00002905 File Offset: 0x00000B05
// (set) Token: 0x06000138 RID: 312 RVA: 0x0000290D File Offset: 0x00000B0D
public string Token { get; set; }
// Token: 0x17000071 RID: 113
// (get) Token: 0x06000139 RID: 313 RVA: 0x00002916 File Offset: 0x00000B16
// (set) Token: 0x0600013A RID: 314 RVA: 0x0000291E File Offset: 0x00000B1E
public ulong PlayerId { get; set; }
// Token: 0x17000072 RID: 114
// (get) Token: 0x0600013B RID: 315 RVA: 0x00002927 File Offset: 0x00000B27
// (set) Token: 0x0600013C RID: 316 RVA: 0x0000292F File Offset: 0x00000B2F
public string Error { get; set; }
// Token: 0x0600013D RID: 317 RVA: 0x00005114 File Offset: 0x00003314
public static string v4(ulong userid)
{
PlatformLogin value = new PlatformLogin
{
Token = "j3923mHJG032jew",
PlayerId = userid,
Error = ""
};
return JsonConvert.SerializeObject(value);
}
}
}

36
ProfieStealer.cs Normal file
View File

@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using Newtonsoft.Json;
using System.IO;
namespace api
{
class ProfieStealer
{
public static void ProfileSteal(string data)
{
List<Root> profile = JsonConvert.DeserializeObject<List<Root>>(data);
File.WriteAllText("SaveData\\Profile\\username.txt", profile[0].username);
byte[] profileimage = new WebClient().DownloadData("https://img.rec.net/" + profile[0].profileImage + "?cropSquare=true&width=192&height=192");
File.WriteAllBytes("SaveData\\profileimage.png", profileimage);
}
public class Root
{
public int accountId { get; set; }
public string username { get; set; }
public string displayName { get; set; }
public string profileImage { get; set; }
public bool isJunior { get; set; }
public int platforms { get; set; }
public int personalPronouns { get; set; }
public int identityFlags { get; set; }
public DateTime createdAt { get; set; }
public string bannerImage { get; set; }
}
}
}

View File

@@ -2,12 +2,10 @@
using System.Collections.Generic;
using System.Text;
namespace api2016
namespace api2017
{
class Profiles
{
public ulong Id { get; set; }
public string Username { get; set; }
public string DisplayName { get; set; }
@@ -15,27 +13,13 @@ namespace api2016
public int Level { get; set; }
public int Reputation { get; set; }
public bool Verified { get; set; }
public bool Developer { get; set; }
public bool HasEmail { get; set; }
public bool CanReceiveInvites { get; set; }
public string ProfileImageName { get; set; }
public bool JuniorProfile { get; set; }
public bool ForceJuniorImages { get; set; }
public bool PendingJunior { get; set; }
public bool HasBirthday { get; set; }
}
}

View File

@@ -5,62 +5,188 @@ using ws;
using api;
using System.Net;
using System.Diagnostics;
using vaultgamesesh;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace start
{
class Program
{
static void Main(string[] args)
static void Main()
{
//startup for openrec
Setup.setup();
goto Tutorial;
Tutorial:
if (Setup.firsttime == true)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.Title = "OpenRec Intro";
Console.WriteLine("Welcome to OpenRec " + appversion + "!");
Console.WriteLine("Is this your first time using OpenRec?");
Console.WriteLine("Yes or No (Y, N)");
string readline22 = Console.ReadLine();
if (readline22 == "y" || readline22 == "Y")
{
Console.Clear();
Console.Title = "OpenRec Tutorial";
Console.WriteLine("In that case, welcome to OpenRec!");
Console.WriteLine("OpenRec is server software that emulates the old servers of previous RecRoom versions.");
Console.WriteLine("To use OpenRec, you'll need to have builds aswell!");
Console.WriteLine("To download builds, either go to the builds channel or use the links below: (these links are also available from the #builds channel)" + Environment.NewLine);
Console.WriteLine(new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/builds.txt"));
Console.WriteLine("Download a build and press any key to continue:");
Console.ReadKey();
Console.Clear();
Console.WriteLine("Now that you have a build, what you're going to do is as follows:" + Environment.NewLine);
Console.WriteLine("1. Unzip the build");
Console.WriteLine("2. Start the server by pressing 5 on the main menu and selecting your version as follows");
Console.WriteLine("3. Run Recroom_Release.exe from the folder of the build you downloaded." + Environment.NewLine);
Console.WriteLine("And that's it! Press any key to go to the main menu, where you will be able to start the server:");
Console.ReadKey();
Console.Clear();
goto Start;
}
else
{
goto Start;
}
}
else
{
goto Start;
}
Start:
Console.WriteLine("OpenRec - Open source RecNet server software. (Version: " + version + ")");
Console.Title = "OpenRec Startup Menu";
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("OpenRec - Open source Old RecRoom server software. (Version: " + appversion + ")");
Console.WriteLine("Made and provided by RecRoom 2016.");
Console.WriteLine("Download source code here: https://github.com/recroom2016/OpenRec");
Console.WriteLine("Discord: https://discord.gg/daC8QUhnFP" + Environment.NewLine);
if (!(new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/version.txt").Contains(version)))
if (!(new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/version.txt").Contains(appversion)))
{
Console.WriteLine("This version of OpenRec is outdated. We recommend you install the latest version, OpenRec " + new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/version.txt") + Environment.NewLine);
Console.WriteLine("This version of OpenRec is outdated. We recommend you install the latest version, OpenRec " + new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/version.txt"));
}
Console.WriteLine("1) Change Settings" + Environment.NewLine + "2) Modify Profile" + Environment.NewLine + "3) Start Server");
if (File.Exists("SaveData\\Profile\\userid.txt"))
{
if (new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/banned.txt").Contains(File.ReadAllText("SaveData\\Profile\\userid.txt")))
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("You are banned. Using this version of OpenRec will not work, please download OpenRec 0.4.2 or prior.");
Console.ForegroundColor = ConsoleColor.Green;
bannedflag = true;
}
}
Console.WriteLine("//Custom Room Downloader has been moved to the settings tab!" + Environment.NewLine);
Console.WriteLine("(1) What's New" + Environment.NewLine +"(2) Change Settings" + Environment.NewLine + "(3) Modify Profile" + Environment.NewLine + "(4) Build Download Links" + Environment.NewLine + "(5) Start Server");
string readline = Console.ReadLine();
if (readline == "1")
{
Console.Title = "OpenRec Changelog";
Console.Clear();
Console.WriteLine(new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/changelog.txt"));
Console.WriteLine("Press any key to continue:");
Console.ReadKey();
Console.Clear();
goto Start;
}
if (readline == "2")
{
Console.Clear();
goto Settings;
Settings:
Console.WriteLine("1) Sandbox Mode: " + File.ReadAllText("SaveData\\App\\sandbox.txt") + Environment.NewLine + "2) Go Back");
Console.Title = "OpenRec Settings Menu";
Console.WriteLine("(1) Private Rooms: " + File.ReadAllText("SaveData\\App\\privaterooms.txt") + Environment.NewLine + "(2) Custom Room Downloader " + Environment.NewLine + "(3) Reset SaveData" + Environment.NewLine + "(4) Go Back");
string readline4 = Console.ReadLine();
if (readline4 == "1")
{
if (File.ReadAllText("SaveData\\App\\sandbox.txt") == "Disabled")
if (File.ReadAllText("SaveData\\App\\privaterooms.txt") == "Disabled")
{
File.WriteAllText("SaveData\\App\\sandbox.txt", "Enabled");
File.WriteAllText("SaveData\\App\\privaterooms.txt", "Enabled");
}
else
{
File.WriteAllText("SaveData\\App\\sandbox.txt", "Disabled");
File.WriteAllText("SaveData\\App\\privaterooms.txt", "Disabled");
}
Console.Clear();
Console.WriteLine("Success!");
goto Settings;
}
else if (readline4 == "2")
{
Console.Title = "OpenRec Custom Room Downloader";
Console.Clear();
Console.WriteLine("Custom Room Downloader: This tool takes the room data of any room you type in and imports it into ^CustomRoom in September 27th 2018.");
Console.WriteLine("Please type in the name of the room you would like to download: (Case sensitive)");
string roomname = Console.ReadLine();
string text = "";
try
{
text = new WebClient().DownloadString("https://rooms.rec.net/rooms?name=" + roomname + "&include=297");
}
catch
{
Console.Clear();
Console.WriteLine("Failed to download room...");
goto Settings;
}
CustomRooms.RoomDecode(text);
Console.Clear();
Console.WriteLine("Success!");
goto Settings;
}
else if (readline4 == "3")
{
File.Delete("SaveData\\avatar.txt");
File.Delete("SaveData\\avataritems.txt");
File.Delete("SaveData\\equipment.txt");
File.Delete("SaveData\\consumables.txt");
File.Delete("SaveData\\gameconfigs.txt");
File.Delete("SaveData\\storefronts2.txt");
File.Delete("SaveData\\Profile\\username.txt");
File.Delete("SaveData\\Profile\\level.txt");
File.Delete("SaveData\\Profile\\userid.txt");
File.Delete("SaveData\\myrooms.txt");
File.Delete("SaveData\\settings.txt");
File.Delete("SaveData\\App\\privaterooms.txt");
File.Delete("SaveData\\App\\facefeaturesadd.txt");
File.Delete("SaveData\\profileimage.png");
File.Delete("SaveData\\App\\firsttime.txt");
File.Delete("SaveData\\avataritems2.txt");
File.Delete("SaveData\\Rooms\\Downloaded\\roomname.txt");
File.Delete("SaveData\\Rooms\\Downloaded\\roomid.txt");
File.Delete("SaveData\\Rooms\\Downloaded\\datablob.txt");
File.Delete("SaveData\\Rooms\\Downloaded\\roomsceneid.txt");
File.Delete("SaveData\\Rooms\\Downloaded\\imagename.txt");
File.Delete("SaveData\\Rooms\\Downloaded\\cheercount.txt");
File.Delete("SaveData\\Rooms\\Downloaded\\favcount.txt");
File.Delete("SaveData\\Rooms\\Downloaded\\visitcount.txt");
Console.WriteLine("Success!");
Setup.setup();
goto Settings;
}
else if (readline4 == "4")
{
Console.Clear();
goto Start;
}
}
if (readline == "2")
if (readline == "3")
{
Console.Clear();
goto Profile;
Profile:
Console.WriteLine("1) Change Username" + Environment.NewLine+ "2) Change Profile Image" + Environment.NewLine + "3) Change Level" + Environment.NewLine + "4) Go Back");
Console.Title = "OpenRec Profile Menu";
Console.WriteLine("(1) Change Username" + Environment.NewLine + "(2) Change Profile Image" + Environment.NewLine + "(3) Change Level" + Environment.NewLine + "(4) Profile Downloader" + Environment.NewLine + "(5) Go Back");
string readline3 = Console.ReadLine();
if (readline3 == "1")
{
@@ -70,12 +196,12 @@ namespace start
File.WriteAllText("SaveData\\Profile\\username.txt", newusername);
Console.Clear();
Console.WriteLine("Success!");
goto Start;
goto Profile;
}
else if (readline3 == "2")
{
Console.Clear();
Console.WriteLine("1) Upload Media Link" + Environment.NewLine + "2) Drag Image onto this window" + Environment.NewLine + "3) Go Back");
Console.WriteLine("1) Upload Media Link" + Environment.NewLine + "2) Drag Image onto this window" + Environment.NewLine + "3) Download Rec.Net Profile Image" + Environment.NewLine + "4) Go Back");
string readline4 = Console.ReadLine();
if (readline4 == "1")
{
@@ -85,7 +211,7 @@ namespace start
{
File.WriteAllBytes("SaveData\\profileimage.png", new WebClient().DownloadData(medialink));
}
catch (Exception ex4)
catch
{
Console.Clear();
Console.WriteLine("Invalid Media Link");
@@ -93,7 +219,7 @@ namespace start
}
Console.Clear();
Console.WriteLine("Success!");
goto Start;
goto Profile;
}
else if (readline4 == "2")
{
@@ -104,6 +230,7 @@ namespace start
byte[] imagefile = File.ReadAllBytes(imagedir);
File.Replace(imagedir, "SaveData\\profileimage.png", "backupfilename.png");
File.WriteAllBytes(imagedir, imagefile);
File.Delete("backupfilename.png");
}
catch (Exception ex4)
{
@@ -113,9 +240,46 @@ namespace start
}
Console.Clear();
Console.WriteLine("Success!");
goto Start;
goto Profile;
}
else if (readline4 == "3")
{
Console.WriteLine("Type a RecRoom @ username and press enter: ");
string username = Console.ReadLine();
if (username.StartsWith("@"))
{
username = username.Remove(0, 1);
}
try
{
string data = "";
try
{
data = new WebClient().DownloadString("https://accounts.rec.net/account/search?name=" + username);
}
catch
{
Console.Clear();
Console.WriteLine("Failed to download profile...");
goto Start;
}
List<ProfieStealer.Root> profile = JsonConvert.DeserializeObject<List<ProfieStealer.Root>>(data);
byte[] profileimage = new WebClient().DownloadData("https://img.rec.net/" + profile[0].profileImage + "?cropSquare=true&width=192&height=192");
File.WriteAllBytes("SaveData\\profileimage.png", profileimage);
}
catch
{
Console.Clear();
Console.WriteLine("Unable to download image...");
goto Profile;
}
Console.Clear();
Console.WriteLine("Success!");
goto Profile;
}
else if (readline4 == "4")
{
Console.Clear();
goto Start;
@@ -129,39 +293,109 @@ namespace start
File.WriteAllText("SaveData\\Profile\\level.txt", newlevel);
Console.Clear();
Console.WriteLine("Success!");
goto Start;
goto Profile;
}
else if (readline3 == "4")
{
Console.Title = "OpenRec Profile Downloader";
Console.Clear();
Console.WriteLine("Profile Downloader: This tool takes the username and profile image of any username you type in and imports it to OpenRec.");
Console.WriteLine("Please type the @ username of the profile you would like:");
string readusername = Console.ReadLine();
if (readusername.StartsWith("@"))
{
readusername = readusername.Remove(0, 1);
}
string data2 = "";
try
{
data2 = new WebClient().DownloadString("https://accounts.rec.net/account/search?name=" + readusername);
}
catch
{
Console.Clear();
Console.WriteLine("Failed to download profile...");
goto Start;
}
ProfieStealer.ProfileSteal(data2);
Console.Clear();
Console.WriteLine("Success!");
goto Start;
}
else if (readline3 == "5")
{
Console.Clear();
goto Start;
}
}
if (readline == "3")
if (readline == "4")
{
Console.WriteLine("Please select the version of RecRoom the server should host: (2018)");
Console.Title = "OpenRec Build Downloads";
Console.Clear();
Console.WriteLine("To download builds, either go to the builds channel or use the links below: (these links are also available from the #builds channel)" + Environment.NewLine);
Console.WriteLine(new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/builds.txt"));
Console.WriteLine("Download a build and press any key to continue:");
Console.ReadKey();
Console.Clear();
goto Start;
}
if (readline == "5")
{
Console.Title = "OpenRec Version Select";
Console.WriteLine("Please select the version of RecRoom the server should host: (2016, 2017, 2018)");
string readline2 = Console.ReadLine();
if (readline2 == "2016")
{
Console.Title = "OpenRec December 25th, 2016";
version = "2016";
Console.Clear();
Console.WriteLine("Version Selected: " + start.Program.version);
Console.WriteLine("Version Selected: December 25th, 2016.");
new APIServer();
new WebSocket();
}
else if (readline2 == "2017")
{
Console.Title = "OpenRec October 19th 2017";
version = "2017";
Console.Clear();
Console.WriteLine("Version Selected: " + start.Program.version);
Console.WriteLine("Version Selected: October 19th, 2017.");
new APIServer();
new WebSocket();
}
else if (readline2 == "2018")
{
Console.WriteLine("May, July or September (Beta) 2018: (M, J, S)");
string readline3 = Console.ReadLine();
if ((readline3 == "M") || (readline3 == "m"))
{
Console.Title = "OpenRec May 30th 2018";
version = "2018";
Console.Clear();
Console.WriteLine("Version Selected: " + start.Program.version);
Console.WriteLine("Version Selected: May 30th, 2018.");
new NameServer();
new ImageServer();
new APIServer();
new WebSocket();
}
else if ((readline3 == "S") || (readline3 == "s"))
{
Console.Title = "OpenRec September 27th 2018";
version = "2018";
Console.Clear();
Console.WriteLine("Version Selected: September 27th, 2018.");
new NameServer();
new ImageServer();
new APIServer();
new Late2018WebSock();
}
else if ((readline3 == "J") || (readline3 == "j"))
{
Console.Title = "OpenRec July 20th 2018";
version = "2018";
Console.Clear();
Console.WriteLine("Version Selected: July 20th, 2018");
new NameServer();
new ImageServer();
new APIServer();
@@ -169,8 +403,10 @@ namespace start
}
}
}
public static string version = "0.3";
}
public static string version = "";
public static string appversion = "0.6.9";
public static bool bannedflag = false;
}
}

17
README.md Normal file
View File

@@ -0,0 +1,17 @@
# Welcome to OpenRec!
---
OpenRec is a RecRoom server software made by recroom2016!
### Branches
- Master / main
- Nightly
The master branch is the public branch where all the latest updates are published.
The nightly branch is where all the experimental updates that are needed to be tested before release are.
---
### Getting in contact with the community
If you are new to this we recommend you joining our Discord!
Link: https://discord.com/invite/daC8QUhnFP

23
Sanitize.cs Normal file
View File

@@ -0,0 +1,23 @@
using System;
using Newtonsoft.Json;
namespace api
{
// Token: 0x02000081 RID: 129
public class Sanitize
{
public static Sanitize.m001 GetSanitize()
{
return new m001
{
IsPure = true
};
}
public sealed class m001
{
public bool IsPure { get; set; }
}
}
}

View File

@@ -106,7 +106,7 @@ namespace api
new Setting
{
Key = "VoiceChat",
Value = 0f.ToString()
Value = 1f.ToString()
},
new Setting
{

View File

@@ -8,11 +8,22 @@ namespace start
{
class Setup
{
public static bool firsttime = false;
public static void setup()
{
Console.WriteLine("Setting up...");
//sets up all the important files so openrec doesnt crash like lame vaultserver xD
Console.WriteLine("Setting up... (May take a minute to download everything.)");
Directory.CreateDirectory("SaveData\\App\\");
Directory.CreateDirectory("SaveData\\Profile\\");
Directory.CreateDirectory("SaveData\\Images\\");
Directory.CreateDirectory("SaveData\\Rooms\\");
Directory.CreateDirectory("SaveData\\Images\\");
Directory.CreateDirectory("SaveData\\Rooms\\Downloaded\\");
if (!(File.Exists("SaveData\\App\\firsttime.txt")))
{
File.WriteAllText("SaveData\\App\\firsttime.txt", "this text file has no use other than to tell the program whether to bring up the intro or not, so i can just write random shit here. among us balls, you suck mad dick you big fat fa----");
firsttime = true;
}
if (!(File.Exists("SaveData\\avatar.txt")))
{
File.WriteAllText("SaveData\\avatar.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/avatar.txt"));
@@ -25,6 +36,10 @@ namespace start
{
File.WriteAllText("SaveData\\avataritems.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/avataritems.txt"));
}
if (!(File.Exists("SaveData\\avataritems2.txt")))
{
File.WriteAllText("SaveData\\avataritems2.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/avataritems2.txt"));
}
if (!(File.Exists("SaveData\\equipment.txt")))
{
File.WriteAllText("SaveData\\equipment.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/equipment.txt"));
@@ -33,14 +48,30 @@ namespace start
{
File.WriteAllText("SaveData\\consumables.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/consumables.txt"));
}
if (!(File.Exists("SaveData\\gameconfigs.txt")))
{
File.WriteAllText("SaveData\\gameconfigs.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/gameconfigs.txt"));
}
if (!(File.Exists("SaveData\\storefronts2.txt")))
{
File.WriteAllText("SaveData\\storefronts2.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/storefront2.txt"));
}
if (!(File.Exists("SaveData\\baserooms.txt")))
{
File.WriteAllText("SaveData\\baserooms.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/baserooms.txt"));
}
if (!(File.Exists("SaveData\\Profile\\username.txt")))
{
File.WriteAllText("SaveData\\Profile\\username.txt", "DefaultUsername");
File.WriteAllText("SaveData\\Profile\\username.txt", "OpenRec User#" + new Random().Next(0, 1000000));
}
if (!(File.Exists("SaveData\\Profile\\level.txt")))
{
File.WriteAllText("SaveData\\Profile\\level.txt", "10");
}
if (!(File.Exists("SaveData\\Profile\\userid.txt")))
{
File.WriteAllText("SaveData\\Profile\\userid.txt", "10000000");
}
if (!(File.Exists("SaveData\\myrooms.txt")))
{
File.WriteAllText("SaveData\\myrooms.txt", "[]");
@@ -49,14 +80,37 @@ namespace start
{
File.WriteAllText("SaveData\\settings.txt", Newtonsoft.Json.JsonConvert.SerializeObject(api.Settings.CreateDefaultSettings()));
}
if (!(File.Exists("SaveData\\App\\sandbox.txt")))
{
File.WriteAllText("SaveData\\App\\sandbox.txt", "Disabled");
}
if (!(File.Exists("SaveData\\profileimage.png")))
{
File.WriteAllBytes("SaveData\\profileimage.png", new WebClient().DownloadData("https://github.com/OpenRecRoom/OpenRec/raw/main/profileimage.png"));
}
if (!(File.Exists("SaveData\\App\\privaterooms.txt")))
{
File.WriteAllText("SaveData\\App\\privaterooms.txt", "Disabled");
}
if (!(File.Exists("SaveData\\App\\showopenrecinfo.txt")))
{
File.WriteAllText("SaveData\\App\\showopenrecinfo.txt", "Enabled");
}
if (!(File.Exists("SaveData\\App\\facefeaturesadd.txt")))
{
File.WriteAllText("SaveData\\App\\facefeaturesadd.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/facefeaturesadd.txt"));
}
goto tryagain;
tryagain:
if (!File.Exists("SaveData\\Rooms\\Downloaded\\roomname.txt"))
{
try
{
api.CustomRooms.RoomGet("gizmoface");
}
catch
{
goto tryagain;
}
}
Console.WriteLine("Done!");
Console.Clear();
}

1
Update/banned.txt Normal file
View File

@@ -0,0 +1 @@
[487454, 4701796, 1623123, 1423224]

11
Update/builds.txt Normal file
View File

@@ -0,0 +1,11 @@
September 27th 2018 (UNSTABLE, WILL ONLY WORK FOR SOME PEOPLE):
https://drive.google.com/file/d/13atQRl6Bh_JStPug7GcKLiLYqVaRgUsW/view?usp=sharing
May 30th 2018:
https://drive.google.com/file/d/1jZps2nesIcHsabZo3ueomivq98zfKZzj/view?usp=sharing
October 19th 2017:
https://drive.google.com/file/d/1Noljjg667NzUeOc1P7D7Fq9KmN_6AfeE/view?usp=sharing
December 23rd 2016:
https://drive.google.com/file/d/1mM3VKK7mFK8qMingVkEFQW-PwRe5Wh39/view?usp=sharing

1
Update/dormslideshow.txt Normal file
View File

@@ -0,0 +1 @@
{"Name":"Check Out All The Rooms Today!","FeaturedRooms":[{"RoomName":"Home","RoomId":1,"ImageName":"DefaultRoomImage.jpg"},{"RoomName":"RecCenter","RoomId":2,"ImageName":"22eefa3219f046fd9e2090814650ede3"},{"RoomName":"3DCharades","RoomId":3,"ImageName":"a446d5808ed14401a27f53e631c31b93.png"},{"RoomName":"DiscGolfLake","RoomId":4,"ImageName":"52cf6c3271894ecd95fb0c9b2d2209a7"},{"RoomName":"DiscGolfPropulsion","RoomId":5,"ImageName":"fc9a1acc47514b64a30d199d5ccdeca9"},{"RoomName":"Dodgeball","RoomId":6,"ImageName":"6d5c494668784816bbc41d9b870e5003"},{"RoomName":"Paddleball","RoomId":7,"ImageName":"ffdca6ed8bd94631ac15e3e894acb6c6"},{"RoomName":"Paintball","RoomId":8,"ImageName":"93a53ced93a04f658795a87f4a4aab85"},{"RoomName":"GoldenTrophy","RoomId":13,"ImageName":"38e9d0d4eff94556a0b106508249dcf9"},{"RoomName":"TheRiseofJumbotron","RoomId":14,"ImageName":"51296f28105b48178708e389b6daf057"},{"RoomName":"CrimsonCauldron","RoomId":15,"ImageName":"3ab82779dff94d11920ebf38df249395"},{"RoomName":"IsleOfLostSkulls","RoomId":16,"ImageName":"45ad53aa002646d0ab3eb509b9f260ef"},{"RoomName":"Soccer","RoomId":17,"ImageName":"51c6f5ac5e6f4777b573e7e43f8a85ea"},{"RoomName":"LaserTag","RoomId":18,"ImageName":"c5a72193d6904811b2d0195a6deb3125"},{"RoomName":"RecRoyaleSquads","RoomId":20,"ImageName":"69fc525056014e39a435c4d2fdf2b887"},{"RoomName":"RecRoyaleSolos","RoomId":21,"ImageName":"f9e112bb67fb430d979e5ad6c2c116d4"},{"RoomName":"Lounge","RoomId":22,"ImageName":"3e8c2458f1e542ab8aa275e4083ee47a"},{"RoomName":"Park","RoomId":25,"ImageName":"79ee7af2532247f397867e48daa9d264.png"},{"RoomName":"QuestForDracula","RoomId":27,"ImageName":"d0df003353914adfaecdd23f428208b6"}]}

302
Update/hotrooms.txt Normal file
View File

@@ -0,0 +1,302 @@
[
{
"RoomId": 29,
"Name": "Custom Room",
"Description": "Custom Room",
"CreatorPlayerId": 1,
"ImageName": "CustomRoom.png",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 3,
"Name": "3DCharades",
"Description": "Take turns drawing, acting, and guessing funny phrases with your friends!",
"CreatorPlayerId": 72963398,
"ImageName": "a446d5808ed14401a27f53e631c31b93.png",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 4,
"Name": "DiscGolfLake",
"Description": "Throw your disc into the goal. Sounds easy, right?",
"CreatorPlayerId": 72963398,
"ImageName": "52cf6c3271894ecd95fb0c9b2d2209a7",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 5,
"Name": "DiscGolfPropulsion",
"Description": "Throw your disc into the goal. Sounds easy, right?",
"CreatorPlayerId": 72963398,
"ImageName": "fc9a1acc47514b64a30d199d5ccdeca9",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 6,
"Name": "Dodgeball",
"Description": "Throw dodgeballs to knock out your friends in this gym classic!",
"CreatorPlayerId": 72963398,
"ImageName": "6d5c494668784816bbc41d9b870e5003",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 7,
"Name": "Paddleball",
"Description": "A simple rally game between two players in a plexiglass tube with a zero-g ball.",
"CreatorPlayerId": 72963398,
"ImageName": "ffdca6ed8bd94631ac15e3e894acb6c6",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 8,
"Name": "Paintball",
"Description": "Red and Blue teams splat each other in capture the flag and team battle.",
"CreatorPlayerId": 72963398,
"ImageName": "93a53ced93a04f658795a87f4a4aab85",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": true,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 13,
"Name": "GoldenTrophy",
"Description": "The goblin king stole Coach's Golden Trophy. Team up and embark on an epic quest to recover it!",
"CreatorPlayerId": 72963398,
"ImageName": "38e9d0d4eff94556a0b106508249dcf9",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 14,
"Name": "TheRiseofJumbotron",
"Description": "Robot invaders threaten the galaxy! Team up with your friends and bring the laser heat!",
"CreatorPlayerId": 72963398,
"ImageName": "51296f28105b48178708e389b6daf057",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 15,
"Name": "CrimsonCauldron",
"Description": "Can your band of adventurers brave the enchanted wilds, and lift the curse of the crimson cauldron?",
"CreatorPlayerId": 72963398,
"ImageName": "3ab82779dff94d11920ebf38df249395",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 16,
"Name": "IsleOfLostSkulls",
"Description": "Can your pirate crew get to the Isle, defeat its fearsome guardian, and escape with the gold?",
"CreatorPlayerId": 72963398,
"ImageName": "45ad53aa002646d0ab3eb509b9f260ef",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 17,
"Name": "Soccer",
"Description": "Teams of three run around slamming themselves into an over-sized soccer ball. Goal!",
"CreatorPlayerId": 72963398,
"ImageName": "51c6f5ac5e6f4777b573e7e43f8a85ea",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 18,
"Name": "LaserTag",
"Description": "Teams battle each other and waves of robots.",
"CreatorPlayerId": 72963398,
"ImageName": "c5a72193d6904811b2d0195a6deb3125",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 20,
"Name": "RecRoyaleSquads",
"Description": "Squads of three battle it out on Frontier Island. Last squad standing wins!",
"CreatorPlayerId": 72963398,
"ImageName": "69fc525056014e39a435c4d2fdf2b887",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 21,
"Name": "RecRoyaleSolos",
"Description": "Battle it out on Frontier Island. Last person standing wins!",
"CreatorPlayerId": 72963398,
"ImageName": "f9e112bb67fb430d979e5ad6c2c116d4",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 22,
"Name": "Lounge",
"Description": "A low-key lounge to chill with your friends. Great for private parties!",
"CreatorPlayerId": 72963398,
"ImageName": "3e8c2458f1e542ab8aa275e4083ee47a",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 25,
"Name": "Park",
"Description": "A sprawling park with amphitheater, play fields, and a cave.",
"CreatorPlayerId": 72963398,
"ImageName": "79ee7af2532247f397867e48daa9d264.png",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 27,
"Name": "QuestForDraucula",
"Description": "Gather your vampire hunting crew, conquer a legendary castle, and restore peace to Rec Room!",
"CreatorPlayerId": 72963398,
"ImageName": "d0df003353914adfaecdd23f428208b6",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 2,
"Name": "RecCenter",
"Description": "A social hub to meet and mingle with friends new and old.",
"CreatorPlayerId": 72963398,
"ImageName": "22eefa3219f046fd9e2090814650ede3",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
},
{
"RoomId": 28,
"Name": "Bowling",
"Description": "Hang out with friends, bowl a few games, eat snacks!",
"CreatorPlayerId": 72963398,
"ImageName": "4d143a3359e8483e8d48116ab6cacecb",
"State": 0,
"Accessibility": 1,
"SupportsLevelVoting": false,
"IsAGRoom": true,
"CloningAllowed": false,
"SupportsScreens": true,
"SupportsWalkVR": true,
"SupportsTeleportVR": true
}
]

4
Update/motd.txt Normal file
View File

@@ -0,0 +1,4 @@
Welcome to OpenRec!
BTW IF YOU SEE THIS, SHUT UP
THANK YOU

23
Update/rcslideshow.txt Normal file
View File

@@ -0,0 +1,23 @@
{
"Images": [
{
"SavedImageId": 1,
"ImageName": "1c603274267b4f45858f7506ab48b4fa",
"Username": "Origami",
"RoomName": "forsophie"
},
{
"SavedImageId": 2,
"ImageName": "dRoGHY4JvU-t1L51gbdhqQ",
"Username": "Sublime",
"RoomName": "TheOfficePvP"
},
{
"SavedImageId": 3,
"ImageName": "v9_qfp0bH0a3KL0xGz4Zsg",
"Username": "Jbluna",
"RoomName": "USSCoach"
}
],
"ValidTill": "2024-06-09T19:06:44.927Z"
}

298
Vault2018CustomRooms.cs Normal file
View File

@@ -0,0 +1,298 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.CompilerServices;
using Newtonsoft.Json;
using vaultgamesesh;
namespace vaultgamesesh
{
internal sealed class c000099
{
// Token: 0x06000358 RID: 856 RVA: 0x0000B134 File Offset: 0x00009334
public static c000099.c00009c m00002f()
{
List<c00005d.c000062> list = new List<c00005d.c000062>();
foreach (KeyValuePair<string, c00005d.c000060> keyValuePair in c00005d.f000050)
{
c00005d.c000062 item = new c00005d.c000062
{
RoomName = keyValuePair.Value.Room.Name,
RoomId = (long)((int)keyValuePair.Value.Room.RoomId),
ImageName = keyValuePair.Value.Room.ImageName
};
list.Add(item);
}
return new c000099.c00009c
{
Name = "Check Out All The Rooms Today!",
FeaturedRooms = list
};
}
// Token: 0x06000359 RID: 857 RVA: 0x0000B204 File Offset: 0x00009404
public static List<c00005d.c000061> m000009()
{
List<c00005d.c000061> list = new List<c00005d.c000061>();
foreach (KeyValuePair<string, c00005d.c000060> keyValuePair in c00005d.m00003b())
{
list.Add(keyValuePair.Value.Room);
}
return list;
}
// Token: 0x0600035A RID: 858 RVA: 0x0000B268 File Offset: 0x00009468
public static List<c00005d.c000061> m000035()
{
List<c00005d.c000061> list = new List<c00005d.c000061>();
foreach (KeyValuePair<string, c00005d.c000060> keyValuePair in c00005d.f000024)
{
list.Add(keyValuePair.Value.Room);
}
return list;
}
// Token: 0x0600035B RID: 859 RVA: 0x0000B2CC File Offset: 0x000094CC
public static List<c00005d.c000061> m000055()
{
List<c00005d.c000061> list = new List<c00005d.c000061>();
foreach (KeyValuePair<string, c00005d.c000060> keyValuePair in c00005d.m00003a())
{
list.Add(keyValuePair.Value.Room);
}
return list;
}
// Token: 0x0600035C RID: 860 RVA: 0x0000B330 File Offset: 0x00009530
public static List<c00005d.c000061> m000056(string p0)
{
string[] array = p0.Split(new char[]
{
' '
});
List<c00005d.c000061> list = new List<c00005d.c000061>();
foreach (KeyValuePair<string, c00005d.c000060> keyValuePair in c00005d.m00003b())
{
c00005d.c000060 value = keyValuePair.Value;
bool flag = true;
foreach (string text in array)
{
if (flag)
{
if (text.StartsWith("#"))
{
bool flag2 = false;
foreach (c00005d.c000063 c in value.Tags)
{
if ("#" + c.Tag.ToLower() == text.ToLower())
{
flag2 = true;
}
}
if (!flag2)
{
flag = false;
}
}
else if (!value.Room.Name.ToLower().Contains(text.ToLower()))
{
flag = false;
}
}
}
if (flag)
{
list.Add(value.Room);
}
}
return list;
}
// Token: 0x0600035D RID: 861 RVA: 0x0000B488 File Offset: 0x00009688
public static c00005d.c000060 m000057(ulong p0)
{
foreach (KeyValuePair<string, c00005d.c000060> keyValuePair in c00005d.f000024)
{
if (keyValuePair.Value.Room.RoomId == p0)
{
return keyValuePair.Value;
}
}
return null;
}
// Token: 0x0600035E RID: 862 RVA: 0x0000B4F8 File Offset: 0x000096F8
public static c000099.c00009b m00000a(string p0)
{
c000099.c00009b c00009b = new c000099.c00009b();
c000099.c00009a c00009a = JsonConvert.DeserializeObject<c000099.c00009a>(p0);
c00005d.c000060 c = c000099.m000057(c00009a.RoomId);
if (c == null)
{
c00009b.Result = (c000099.enum09d)2;
c00009b.RoomDetails = new c00005d.c000060();
}
else
{
c00009b.Result = (c000099.enum09d)0;
c00009b.RoomDetails = c;
c00009b.RoomDetails.Room.Name = c00009a.Name;
ulong roomId = (ulong)((long)new Random().Next(100, 9999999));
c00009b.RoomDetails.Room.RoomId = roomId;
c00009b.RoomDetails.Room.IsAGRoom = false;
c00009b.RoomDetails.Scenes[0].IsSandbox = true;
c00009b.RoomDetails.Scenes[0].RoomId = roomId;
c00009b.RoomDetails.Scenes[0].DataBlobName = string.Empty;
c00009b.RoomDetails.Scenes[0].DataModifiedAt = DateTime.Now;
c00009b.RoomDetails.Room.CreatorPlayerId = server.APIServer.CachedPlayerID;
}
c00005d.m00003a().Add(c00009a.Name, c);
string text = c000004.m000007() + c00009b.RoomDetails.Room.Name;
if (!Directory.Exists(text))
{
Directory.CreateDirectory(text);
}
File.WriteAllText(text + "\\RoomDetails.json", JsonConvert.SerializeObject(c00009b.RoomDetails));
return c00009b;
}
// Token: 0x0200009A RID: 154
public sealed class c00009a
{
// Token: 0x17000105 RID: 261
// (get) Token: 0x06000360 RID: 864 RVA: 0x0000373A File Offset: 0x0000193A
// (set) Token: 0x06000361 RID: 865 RVA: 0x00003742 File Offset: 0x00001942
public string Name
{
[CompilerGenerated]
get
{
return this.f00000a;
}
[CompilerGenerated]
set
{
this.f00000a = value;
}
}
// Token: 0x17000106 RID: 262
// (get) Token: 0x06000362 RID: 866 RVA: 0x0000374B File Offset: 0x0000194B
// (set) Token: 0x06000363 RID: 867 RVA: 0x00003753 File Offset: 0x00001953
public ulong RoomId
{
[CompilerGenerated]
get
{
return this.f000023;
}
[CompilerGenerated]
set
{
this.f000023 = value;
}
}
// Token: 0x040001DD RID: 477
private string f00000a;
// Token: 0x040001DE RID: 478
private ulong f000023;
}
// Token: 0x0200009B RID: 155
public sealed class c00009b
{
// Token: 0x17000107 RID: 263
// (get) Token: 0x06000365 RID: 869 RVA: 0x0000375C File Offset: 0x0000195C
// (set) Token: 0x06000366 RID: 870 RVA: 0x00003764 File Offset: 0x00001964
public c000099.enum09d Result
{
[CompilerGenerated]
get
{
return this.f000042;
}
[CompilerGenerated]
set
{
this.f000042 = value;
}
}
// Token: 0x17000108 RID: 264
// (get) Token: 0x06000367 RID: 871 RVA: 0x0000376D File Offset: 0x0000196D
// (set) Token: 0x06000368 RID: 872 RVA: 0x00003775 File Offset: 0x00001975
public c00005d.c000060 RoomDetails
{
[CompilerGenerated]
get
{
return this.f00004f;
}
[CompilerGenerated]
set
{
this.f00004f = value;
}
}
// Token: 0x040001DF RID: 479
private c000099.enum09d f000042;
// Token: 0x040001E0 RID: 480
private c00005d.c000060 f00004f;
}
// Token: 0x0200009C RID: 156
public sealed class c00009c
{
// Token: 0x17000109 RID: 265
// (get) Token: 0x0600036A RID: 874 RVA: 0x0000377E File Offset: 0x0000197E
// (set) Token: 0x0600036B RID: 875 RVA: 0x00003786 File Offset: 0x00001986
public string Name
{
[CompilerGenerated]
get
{
return this.f00000a;
}
[CompilerGenerated]
set
{
this.f00000a = value;
}
}
// Token: 0x1700010A RID: 266
// (get) Token: 0x0600036C RID: 876 RVA: 0x0000378F File Offset: 0x0000198F
// (set) Token: 0x0600036D RID: 877 RVA: 0x00003797 File Offset: 0x00001997
public List<c00005d.c000062> FeaturedRooms
{
[CompilerGenerated]
get
{
return this.f000031;
}
[CompilerGenerated]
set
{
this.f000031 = value;
}
}
// Token: 0x040001E1 RID: 481
private string f00000a;
// Token: 0x040001E2 RID: 482
private List<c00005d.c000062> f000031;
}
// Token: 0x0200009D RID: 157
public enum enum09d
{
}
}
}

460
Vault2018GameSessions.cs Normal file
View File

@@ -0,0 +1,460 @@
using System;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using Newtonsoft.Json;
using System.IO;
namespace vaultgamesesh
{
// Token: 0x02000005 RID: 5
internal sealed class c000041
{
// Token: 0x0600000E RID: 14 RVA: 0x000022C0 File Offset: 0x000004C0
public static c000041.c000044 m00002f()
{
return new c000041.c000044
{
GameSessionId = 20181L,
PhotonRegionId = "us",
PhotonRoomId = "1",
Name = "DormRoom",
RoomId = 1L,
RoomSceneId = 1L,
RoomSceneLocationId = "76d98498-60a1-430c-ab76-b54a29b7a163",
IsSandbox = false,
DataBlobName = string.Empty,
PlayerEventId = null,
Private = false,
GameInProgress = false,
MaxCapacity = 20,
IsFull = false
};
}
// Token: 0x0600000F RID: 15 RVA: 0x00002370 File Offset: 0x00000570
public static c000041.c000042 m000030(string p0)
{
c00006b.c00006c c00006c = JsonConvert.DeserializeObject<c00006b.c00006c>(p0);
Console.WriteLine("[BackEnd] Room Name: " + c00006c.RoomName);
Thread.Sleep(1);
Console.WriteLine("[BackEnd] Scene Name: " + c00006c.SceneName);
bool flag = c00005d.m00003b().ContainsKey(c00006c.RoomName);
if (flag)
{
c000041.f000043 = c00005d.m00003b()[c00006c.RoomName];
}
else
{
bool flag2 = c00005d.m00003a().ContainsKey(c00006c.RoomName);
if (flag2)
{
c000041.f000043 = c00005d.m00003a()[c00006c.RoomName];
}
else
{
c000041.f000043 = c00005d.f000050["DormRoom"];
}
}
int num = 0;
for (int i = 0; i < c000041.f000043.Scenes.Count<c00005d.c00005f>(); i++)
{
bool flag3 = c000041.f000043.Scenes[i].Name == c00006c.SceneName;
if (flag3)
{
num = i;
}
}
string text = string.Format("{0}", c000041.f000043.Scenes[num].RoomId);
bool flag4 = c000041.f000013 != null && text + c000004.f000003 == c000041.f000013.PhotonRoomId;
if (flag4)
{
text += "Instance2";
}
text += c000004.f000003;
bool @private = c00006c.Private;
if (@private)
{
text += string.Format("Pri{0}", server.APIServer.CachedPlayerID);
}
long gameseshid = 20181L;
if (start.Program.bannedflag == true)
{
gameseshid = 100L;
text += "BANNED";
}
c000041.f000013 = new c000041.c000044
{
GameSessionId = gameseshid,
PhotonRegionId = "us",
PhotonRoomId = text,
Name = c000041.f000043.Room.Name,
RoomId = (long)c000041.f000043.Room.RoomId,
RoomSceneId = (long)(num + 1),
RoomSceneLocationId = c000041.f000043.Scenes[num].RoomSceneLocationId,
IsSandbox = c000041.f000043.Scenes[num].IsSandbox,
DataBlobName = c000041.f000043.Scenes[num].DataBlobName,
PlayerEventId = null,
Private = c00006c.Private,
GameInProgress = false,
MaxCapacity = 20,
IsFull = false
};
c000041.c000042 c = new c000041.c000042();
c.Result = 0;
c.GameSession = c000041.f000013;
c.RoomDetails = c000041.f000043;
Console.WriteLine(JsonConvert.SerializeObject(c));
return c;
}
// Token: 0x0400000B RID: 11
public static c00005d.c000060 f000043;
// Token: 0x0400000C RID: 12
public static c000041.c000044 f000013;
// Token: 0x02000028 RID: 40
public sealed class c000042
{
// Token: 0x17000039 RID: 57
// (get) Token: 0x060000D7 RID: 215 RVA: 0x0000B290 File Offset: 0x00009490
// (set) Token: 0x060000D8 RID: 216 RVA: 0x0000B2A8 File Offset: 0x000094A8
public int Result
{
[CompilerGenerated]
get
{
return this.f00001f;
}
[CompilerGenerated]
set
{
this.f00001f = value;
}
}
// Token: 0x1700003A RID: 58
// (get) Token: 0x060000D9 RID: 217 RVA: 0x0000B2B4 File Offset: 0x000094B4
// (set) Token: 0x060000DA RID: 218 RVA: 0x0000B2CC File Offset: 0x000094CC
public c000041.c000044 GameSession
{
[CompilerGenerated]
get
{
return this.f000013;
}
[CompilerGenerated]
set
{
this.f000013 = value;
}
}
// Token: 0x1700003B RID: 59
// (get) Token: 0x060000DB RID: 219 RVA: 0x0000B2D8 File Offset: 0x000094D8
// (set) Token: 0x060000DC RID: 220 RVA: 0x0000B2F0 File Offset: 0x000094F0
public c00005d.c000060 RoomDetails
{
[CompilerGenerated]
get
{
return this.f000045;
}
[CompilerGenerated]
set
{
this.f000045 = value;
}
}
// Token: 0x04000075 RID: 117
private int f00001f;
// Token: 0x04000076 RID: 118
private c000041.c000044 f000013;
// Token: 0x04000077 RID: 119
private c00005d.c000060 f000045;
}
// Token: 0x02000029 RID: 41
public enum enum043
{
}
// Token: 0x0200002A RID: 42
public sealed class c000044
{
// Token: 0x1700003C RID: 60
// (get) Token: 0x060000DE RID: 222 RVA: 0x0000B304 File Offset: 0x00009504
// (set) Token: 0x060000DF RID: 223 RVA: 0x0000B31C File Offset: 0x0000951C
public long GameSessionId
{
get
{
return this.f00002c;
}
set
{
this.f00002c = value;
}
}
// Token: 0x1700003D RID: 61
// (get) Token: 0x060000E0 RID: 224 RVA: 0x0000B326 File Offset: 0x00009526
// (set) Token: 0x060000E1 RID: 225 RVA: 0x0000B32E File Offset: 0x0000952E
public string PhotonRegionId { get; set; }
// Token: 0x1700003E RID: 62
// (get) Token: 0x060000E2 RID: 226 RVA: 0x0000B338 File Offset: 0x00009538
// (set) Token: 0x060000E3 RID: 227 RVA: 0x0000B350 File Offset: 0x00009550
public string PhotonRoomId
{
get
{
return this.f000003;
}
set
{
this.f000003 = value;
}
}
// Token: 0x1700003F RID: 63
// (get) Token: 0x060000E4 RID: 228 RVA: 0x0000B35C File Offset: 0x0000955C
// (set) Token: 0x060000E5 RID: 229 RVA: 0x0000B374 File Offset: 0x00009574
public string Name
{
get
{
return this.f000035;
}
set
{
this.f000035 = value;
}
}
// Token: 0x17000040 RID: 64
// (get) Token: 0x060000E6 RID: 230 RVA: 0x0000B380 File Offset: 0x00009580
// (set) Token: 0x060000E7 RID: 231 RVA: 0x0000B398 File Offset: 0x00009598
public long RoomId
{
get
{
return this.f00000d;
}
set
{
this.f00000d = value;
}
}
// Token: 0x17000041 RID: 65
// (get) Token: 0x060000E8 RID: 232 RVA: 0x0000B3A4 File Offset: 0x000095A4
// (set) Token: 0x060000E9 RID: 233 RVA: 0x0000B3BC File Offset: 0x000095BC
public long RoomSceneId
{
get
{
return this.f000046;
}
set
{
this.f000046 = value;
}
}
// Token: 0x17000042 RID: 66
// (get) Token: 0x060000EA RID: 234 RVA: 0x0000B3C8 File Offset: 0x000095C8
// (set) Token: 0x060000EB RID: 235 RVA: 0x0000B3E0 File Offset: 0x000095E0
public string RoomSceneLocationId
{
get
{
return this.f00000f;
}
set
{
this.f00000f = value;
}
}
// Token: 0x17000043 RID: 67
// (get) Token: 0x060000EC RID: 236 RVA: 0x0000B3EC File Offset: 0x000095EC
// (set) Token: 0x060000ED RID: 237 RVA: 0x0000B404 File Offset: 0x00009604
public bool IsSandbox
{
get
{
return this.f000017;
}
set
{
this.f000017 = value;
}
}
// Token: 0x17000044 RID: 68
// (get) Token: 0x060000EE RID: 238 RVA: 0x0000B410 File Offset: 0x00009610
// (set) Token: 0x060000EF RID: 239 RVA: 0x0000B428 File Offset: 0x00009628
public string DataBlobName
{
get
{
return this.f000009;
}
set
{
this.f000009 = value;
}
}
// Token: 0x17000045 RID: 69
// (get) Token: 0x060000F0 RID: 240 RVA: 0x0000B434 File Offset: 0x00009634
// (set) Token: 0x060000F1 RID: 241 RVA: 0x0000B44C File Offset: 0x0000964C
public long? PlayerEventId
{
get
{
return this.f000047;
}
set
{
this.f000047 = value;
}
}
// Token: 0x17000046 RID: 70
// (get) Token: 0x060000F2 RID: 242 RVA: 0x0000B458 File Offset: 0x00009658
// (set) Token: 0x060000F3 RID: 243 RVA: 0x0000B470 File Offset: 0x00009670
public bool Private
{
get
{
return this.f000019;
}
set
{
this.f000019 = value;
}
}
// Token: 0x17000047 RID: 71
// (get) Token: 0x060000F4 RID: 244 RVA: 0x0000B47C File Offset: 0x0000967C
// (set) Token: 0x060000F5 RID: 245 RVA: 0x0000B494 File Offset: 0x00009694
public bool GameInProgress
{
get
{
return this.f00001a;
}
set
{
this.f00001a = value;
}
}
// Token: 0x17000048 RID: 72
// (get) Token: 0x060000F6 RID: 246 RVA: 0x0000B4A0 File Offset: 0x000096A0
// (set) Token: 0x060000F7 RID: 247 RVA: 0x0000B4B8 File Offset: 0x000096B8
public int MaxCapacity
{
get
{
return this.f000048;
}
set
{
this.f000048 = value;
}
}
// Token: 0x17000049 RID: 73
// (get) Token: 0x060000F8 RID: 248 RVA: 0x0000B4C4 File Offset: 0x000096C4
// (set) Token: 0x060000F9 RID: 249 RVA: 0x0000B4DC File Offset: 0x000096DC
public bool IsFull
{
get
{
return this.f00001c;
}
set
{
this.f00001c = value;
}
}
// Token: 0x0400007A RID: 122
private long f00002c;
// Token: 0x0400007B RID: 123
private string f000002;
// Token: 0x0400007C RID: 124
private string f000003;
// Token: 0x0400007D RID: 125
private string f000035;
// Token: 0x0400007E RID: 126
private long f00000d;
// Token: 0x0400007F RID: 127
private long f000046;
// Token: 0x04000080 RID: 128
private string f00000f;
// Token: 0x04000081 RID: 129
private bool f000017;
// Token: 0x04000082 RID: 130
private string f000009;
// Token: 0x04000083 RID: 131
private long? f000047;
// Token: 0x04000084 RID: 132
private bool f000019;
// Token: 0x04000085 RID: 133
private bool f00001a;
// Token: 0x04000086 RID: 134
private int f000048;
// Token: 0x04000087 RID: 135
private bool f00001c;
}
}
}

192
Vault2018Player.cs Normal file
View File

@@ -0,0 +1,192 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Runtime.CompilerServices;
using Newtonsoft.Json;
namespace vaultgamesesh
{
// Token: 0x02000008 RID: 8
public sealed class c000079
{
// Token: 0x06000017 RID: 23 RVA: 0x00004F14 File Offset: 0x00003114
public static List<c000079.c00007a> m000009()
{
return c000079.f000031;
}
// Token: 0x06000018 RID: 24 RVA: 0x00004F2B File Offset: 0x0000312B
public static void m000036(List<c000079.c00007a> p0)
{
c000079.f000031 = p0;
}
// Token: 0x04000010 RID: 16
private static List<c000079.c00007a> f000031;
// Token: 0x02000037 RID: 55
public sealed class c00007a
{
// Token: 0x17000080 RID: 128
// (get) Token: 0x0600016E RID: 366 RVA: 0x0000BC2C File Offset: 0x00009E2C
// (set) Token: 0x0600016F RID: 367 RVA: 0x0000BC44 File Offset: 0x00009E44
public ulong Id
{
[CompilerGenerated]
get
{
return this.f000001;
}
[CompilerGenerated]
set
{
this.f000001 = value;
}
}
// Token: 0x17000081 RID: 129
// (get) Token: 0x06000170 RID: 368 RVA: 0x0000BC50 File Offset: 0x00009E50
// (set) Token: 0x06000171 RID: 369 RVA: 0x0000BC68 File Offset: 0x00009E68
public string DisplayName
{
[CompilerGenerated]
get
{
return this.f000002;
}
[CompilerGenerated]
set
{
this.f000002 = value;
}
}
// Token: 0x17000082 RID: 130
// (get) Token: 0x06000172 RID: 370 RVA: 0x0000BC74 File Offset: 0x00009E74
// (set) Token: 0x06000173 RID: 371 RVA: 0x0000BC8C File Offset: 0x00009E8C
public string Username
{
[CompilerGenerated]
get
{
return this.f000003;
}
[CompilerGenerated]
set
{
this.f000003 = value;
}
}
// Token: 0x17000083 RID: 131
// (get) Token: 0x06000174 RID: 372 RVA: 0x0000BC98 File Offset: 0x00009E98
// (set) Token: 0x06000175 RID: 373 RVA: 0x0000BCB0 File Offset: 0x00009EB0
public int Level
{
[CompilerGenerated]
get
{
return this.f000004;
}
[CompilerGenerated]
set
{
this.f000004 = value;
}
}
// Token: 0x17000084 RID: 132
// (get) Token: 0x06000176 RID: 374 RVA: 0x0000BCBC File Offset: 0x00009EBC
// (set) Token: 0x06000177 RID: 375 RVA: 0x0000BCD4 File Offset: 0x00009ED4
public int XP
{
[CompilerGenerated]
get
{
return this.f000005;
}
[CompilerGenerated]
set
{
this.f000005 = value;
}
}
// Token: 0x17000085 RID: 133
// (get) Token: 0x06000178 RID: 376 RVA: 0x0000BCE0 File Offset: 0x00009EE0
// (set) Token: 0x06000179 RID: 377 RVA: 0x0000BCF8 File Offset: 0x00009EF8
public bool Developer
{
[CompilerGenerated]
get
{
return this.f000039;
}
[CompilerGenerated]
set
{
this.f000039 = value;
}
}
// Token: 0x17000086 RID: 134
// (get) Token: 0x0600017A RID: 378 RVA: 0x0000BD04 File Offset: 0x00009F04
// (set) Token: 0x0600017B RID: 379 RVA: 0x0000BD1C File Offset: 0x00009F1C
public bool IsBooster
{
[CompilerGenerated]
get
{
return this.f000016;
}
[CompilerGenerated]
set
{
this.f000016 = value;
}
}
// Token: 0x17000087 RID: 135
// (get) Token: 0x0600017C RID: 380 RVA: 0x0000BD28 File Offset: 0x00009F28
// (set) Token: 0x0600017D RID: 381 RVA: 0x0000BD40 File Offset: 0x00009F40
public int BootMultiplier
{
[CompilerGenerated]
get
{
return this.f000008;
}
[CompilerGenerated]
set
{
this.f000008 = value;
}
}
// Token: 0x040000C1 RID: 193
private ulong f000001;
// Token: 0x040000C2 RID: 194
private string f000002;
// Token: 0x040000C3 RID: 195
private string f000003;
// Token: 0x040000C4 RID: 196
private int f000004;
// Token: 0x040000C5 RID: 197
private int f000005;
// Token: 0x040000C6 RID: 198
private bool f000039;
// Token: 0x040000C7 RID: 199
private bool f000016;
// Token: 0x040000C8 RID: 200
private int f000008;
}
}
}

108
Vault2018WS.cs Normal file
View File

@@ -0,0 +1,108 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using Newtonsoft.Json;
using start;
using WebSocketSharp;
using WebSocketSharp.Server;
using ws;
namespace vaultgamesesh
{
public class Late2018WebSock
{
public Late2018WebSock()
{
Late2018WebSock.instance = this;
this.WebSock.AddWebSocketService<Late2018WebSock.NotificationWS>("/api/notification/v2");
this.WebSock.AddWebSocketService<Late2018WebSock.HubWS>("/hub/v1");
this.WebSock.Start();
Console.WriteLine("[LateWebSocket.cs] has started.");
Console.WriteLine("[LateWebSocket.cs] is listening.");
}
public void Broadcast(Notification.Reponse res)
{
Console.WriteLine(string.Concat(new string[]
{
"Broadcasting ",
JsonConvert.SerializeObject(res),
" to ",
this.WebSock.WebSocketServices["/api/notification/v2"].Sessions.Count.ToString(),
" clients."
}));
WebSock.WebSocketServices["/api/notification/v2"].Sessions.Broadcast(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(res)));
}
public static Late2018WebSock instance;
public WebSocketServer WebSock = new WebSocketServer("ws://localhost:20161/");
public class HubWS : WebSocketBehavior
{
protected override void OnMessage(MessageEventArgs e)
{
Console.WriteLine("LateWebSocket.cs Hub Requested.");
base.Send(JsonConvert.SerializeObject(new Late2018WebSock.Hub()));
}
public HubWS()
{
}
}
public class Hub : WebSocketBehavior
{
public Hub()
{
this.accessToken = "AccessDeezNuts";
this.SupportedTransports = new List<string>();
this.negotiateVersion = 0;
this.url = new Uri(string.Format("http://localhost:{0}/", "2018"));
}
public Uri url { get; set; }
public string accessToken { get; set; }
public List<string> SupportedTransports { get; set; }
public int negotiateVersion { get; set; }
}
public class NotificationWS : WebSocketBehavior
{
protected override void OnMessage(MessageEventArgs p0)
{
bool flag = new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/banned.txt").Contains(File.ReadAllText("SaveData\\Profile\\userid.txt"));
if (flag)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("You are banned. Using this version of OpenRec will not work, please download OpenRec 0.4.2 or prior.");
Console.ForegroundColor = ConsoleColor.Green;
Program.bannedflag = true;
Late2018WebSock.instance.Broadcast(Notification.Reponse.createBannedResponse());
}
Console.WriteLine("LateWebSocket.cs Notif Requested.");
bool flag2 = p0.Data == null;
bool flag3 = flag2;
bool flag4 = flag3;
if (flag4)
{
base.Send(string.Empty);
}
else
{
base.Send(Notification2018.ProcessRequest(p0.Data));
}
}
public NotificationWS()
{
}
}
}
}

30
VaultGameConfig.cs Normal file
View File

@@ -0,0 +1,30 @@
using System;
using System.IO;
namespace vaultgamesesh
{
// Token: 0x02000002 RID: 2
internal sealed class c000004
{
public static string m000007()
{
string text = "SaveData\\" + "Rooms\\";
bool flag = !Directory.Exists(text);
bool flag2 = flag;
if (flag2)
{
Directory.CreateDirectory(text);
}
return text;
}
// Token: 0x04000001 RID: 1
public static ulong f000001 = 0UL;
// Token: 0x04000002 RID: 2
public static string f000002 = "us";
// Token: 0x04000003 RID: 3
public static string f000003 = "OpenRec_v0.6.0";
}
}

197
VaultSceneInfo.cs Normal file
View File

@@ -0,0 +1,197 @@
using System;
using System.Runtime.CompilerServices;
namespace vaultgamesesh
{
// Token: 0x02000007 RID: 7
internal sealed class c00006b
{
// Token: 0x02000035 RID: 53
public sealed class c00006c
{
// Token: 0x17000077 RID: 119
// (get) Token: 0x0600015A RID: 346 RVA: 0x0000BAD8 File Offset: 0x00009CD8
// (set) Token: 0x0600015B RID: 347 RVA: 0x0000BAF0 File Offset: 0x00009CF0
public ulong[] ExpectedPlayerIds
{
[CompilerGenerated]
get
{
return this.f000001;
}
[CompilerGenerated]
set
{
this.f000001 = value;
}
}
// Token: 0x17000078 RID: 120
// (get) Token: 0x0600015C RID: 348 RVA: 0x0000BAFC File Offset: 0x00009CFC
// (set) Token: 0x0600015D RID: 349 RVA: 0x0000BB14 File Offset: 0x00009D14
public c00006b.c00006d[] RegionPings
{
[CompilerGenerated]
get
{
return this.f00004f;
}
[CompilerGenerated]
set
{
this.f00004f = value;
}
}
// Token: 0x17000079 RID: 121
// (get) Token: 0x0600015E RID: 350 RVA: 0x0000BB20 File Offset: 0x00009D20
// (set) Token: 0x0600015F RID: 351 RVA: 0x0000BB38 File Offset: 0x00009D38
public string[] RoomTags
{
[CompilerGenerated]
get
{
return this.f000003;
}
[CompilerGenerated]
set
{
this.f000003 = value;
}
}
// Token: 0x1700007A RID: 122
// (get) Token: 0x06000160 RID: 352 RVA: 0x0000BB44 File Offset: 0x00009D44
// (set) Token: 0x06000161 RID: 353 RVA: 0x0000BB5C File Offset: 0x00009D5C
public string RoomName
{
[CompilerGenerated]
get
{
return this.f000035;
}
[CompilerGenerated]
set
{
this.f000035 = value;
}
}
// Token: 0x1700007B RID: 123
// (get) Token: 0x06000162 RID: 354 RVA: 0x0000BB68 File Offset: 0x00009D68
// (set) Token: 0x06000163 RID: 355 RVA: 0x0000BB80 File Offset: 0x00009D80
public string SceneName
{
[CompilerGenerated]
get
{
return this.f000036;
}
[CompilerGenerated]
set
{
this.f000036 = value;
}
}
// Token: 0x1700007C RID: 124
// (get) Token: 0x06000164 RID: 356 RVA: 0x0000BB8C File Offset: 0x00009D8C
// (set) Token: 0x06000165 RID: 357 RVA: 0x0000BBA4 File Offset: 0x00009DA4
public int AdditionalPlayerJoinMode
{
[CompilerGenerated]
get
{
return this.f000006;
}
[CompilerGenerated]
set
{
this.f000006 = value;
}
}
// Token: 0x1700007D RID: 125
// (get) Token: 0x06000166 RID: 358 RVA: 0x0000BBB0 File Offset: 0x00009DB0
// (set) Token: 0x06000167 RID: 359 RVA: 0x0000BBC8 File Offset: 0x00009DC8
public bool Private
{
[CompilerGenerated]
get
{
return this.f000016;
}
[CompilerGenerated]
set
{
this.f000016 = value;
}
}
// Token: 0x040000B8 RID: 184
private ulong[] f000001;
// Token: 0x040000B9 RID: 185
private c00006b.c00006d[] f00004f;
// Token: 0x040000BA RID: 186
private string[] f000003;
// Token: 0x040000BB RID: 187
private string f000035;
// Token: 0x040000BC RID: 188
private string f000036;
// Token: 0x040000BD RID: 189
private int f000006;
// Token: 0x040000BE RID: 190
private bool f000016;
}
// Token: 0x02000036 RID: 54
public sealed class c00006d
{
// Token: 0x1700007E RID: 126
// (get) Token: 0x06000169 RID: 361 RVA: 0x0000BBDC File Offset: 0x00009DDC
// (set) Token: 0x0600016A RID: 362 RVA: 0x0000BBF4 File Offset: 0x00009DF4
public string Region
{
[CompilerGenerated]
get
{
return this.f00000a;
}
[CompilerGenerated]
set
{
this.f00000a = value;
}
}
// Token: 0x1700007F RID: 127
// (get) Token: 0x0600016B RID: 363 RVA: 0x0000BC00 File Offset: 0x00009E00
// (set) Token: 0x0600016C RID: 364 RVA: 0x0000BC18 File Offset: 0x00009E18
public int Ping
{
[CompilerGenerated]
get
{
return this.f00000b;
}
[CompilerGenerated]
set
{
this.f00000b = value;
}
}
// Token: 0x040000BF RID: 191
private string f00000a;
// Token: 0x040000C0 RID: 192
private int f00000b;
}
}
}

View File

@@ -1,31 +1,42 @@
using System;
using System.IO;
using System.Net;
using start;
using WebSocketSharp;
using WebSocketSharp.Server;
namespace ws
{
// Token: 0x02000008 RID: 8
// Token: 0x02000010 RID: 16
internal class WebSocket
{
// Token: 0x06000012 RID: 18 RVA: 0x0000418C File Offset: 0x0000238C
// Token: 0x06000031 RID: 49 RVA: 0x000066D4 File Offset: 0x000048D4
public WebSocket()
{
WebSocketServer webSocketServer = new WebSocketServer(string.Format("ws://localhost:20161"));
WebSocketServer webSocketServer = new WebSocketServer(string.Format("ws://localhost:20161", Array.Empty<object>()));
webSocketServer.AddWebSocketService<WebSocket.NotificationV2>("/api/notification/v2");
webSocketServer.AddWebSocketService<WebSocket.NotificationV2>("/hub/v1");
webSocketServer.Start();
Console.WriteLine("WebSocket.cs has started.");
Console.WriteLine("WebSocket.cs is listening.");
Console.WriteLine("[WebSocket.cs] has started.");
Console.WriteLine("[WebSocket.cs] is listening.");
}
// Token: 0x02000009 RID: 9
// Token: 0x02000058 RID: 88
public class NotificationV2 : WebSocketBehavior
{
// Token: 0x06000013 RID: 19 RVA: 0x0000209D File Offset: 0x0000029D
// Token: 0x0600023F RID: 575 RVA: 0x0000BDF8 File Offset: 0x00009FF8
protected override void OnMessage(MessageEventArgs e)
{
Console.WriteLine("WebSocket.cs called for.");
base.Send(Notification.ProcessRequest(e.Data));
bool flag = new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/banned.txt").Contains(File.ReadAllText("SaveData\\Profile\\userid.txt"));
if (flag)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("You are banned. Using this version of OpenRec will not work, please download OpenRec 0.4.2 or prior.");
Console.ForegroundColor = ConsoleColor.Green;
Program.bannedflag = true;
}
}
}
}

119
c000020.cs Normal file
View File

@@ -0,0 +1,119 @@
using System;
using System.IO;
using System.Runtime.CompilerServices;
namespace vaultgamesesh
{
// Token: 0x02000007 RID: 7
internal sealed class c000020
{
// Token: 0x0600001A RID: 26 RVA: 0x00002B20 File Offset: 0x00000D20
public static c000020.c000022 m000027()
{
bool flag = c000041.f000013 == null;
bool flag2 = flag;
bool flag3 = flag2;
c000041.c000044 gameSession;
if (flag3)
{
gameSession = c000041.m00002f();
}
else
{
gameSession = c000041.f000013;
}
return new c000020.c000022
{
PlayerId = Convert.ToUInt64(File.ReadAllText("SaveData\\Profile\\userid.txt")),
IsOnline = true,
PlayerType = 2,
GameSession = gameSession
};
}
// Token: 0x0200003C RID: 60
public sealed class c000022
{
// Token: 0x17000088 RID: 136
// (get) Token: 0x0600017E RID: 382 RVA: 0x0000A768 File Offset: 0x00008968
// (set) Token: 0x0600017F RID: 383 RVA: 0x0000A780 File Offset: 0x00008980
public ulong PlayerId
{
[CompilerGenerated]
get
{
return this.f000001;
}
[CompilerGenerated]
set
{
this.f000001 = value;
}
}
// Token: 0x17000089 RID: 137
// (get) Token: 0x06000180 RID: 384 RVA: 0x0000A78C File Offset: 0x0000898C
// (set) Token: 0x06000181 RID: 385 RVA: 0x0000A7A4 File Offset: 0x000089A4
public bool IsOnline
{
[CompilerGenerated]
get
{
return this.f000037;
}
[CompilerGenerated]
set
{
this.f000037 = value;
}
}
// Token: 0x1700008A RID: 138
// (get) Token: 0x06000182 RID: 386 RVA: 0x0000A7B0 File Offset: 0x000089B0
// (set) Token: 0x06000183 RID: 387 RVA: 0x0000A7C8 File Offset: 0x000089C8
public int PlayerType
{
[CompilerGenerated]
get
{
return this.f000020;
}
[CompilerGenerated]
set
{
this.f000020 = value;
}
}
// Token: 0x1700008B RID: 139
// (get) Token: 0x06000184 RID: 388 RVA: 0x0000A7D4 File Offset: 0x000089D4
// (set) Token: 0x06000185 RID: 389 RVA: 0x0000A7EC File Offset: 0x000089EC
public c000041.c000044 GameSession
{
[CompilerGenerated]
get
{
return this.f000038;
}
[CompilerGenerated]
set
{
this.f000038 = value;
}
}
// Token: 0x040000C4 RID: 196
private ulong f000001;
// Token: 0x040000C5 RID: 197
private bool f000037;
// Token: 0x040000C6 RID: 198
private int f000020;
// Token: 0x040000C7 RID: 199
private c000041.c000044 f000038;
}
}
}

2363
c00005d.cs Normal file

File diff suppressed because it is too large Load Diff

BIN
icon2.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
websocket-sharp.dll Normal file

Binary file not shown.