├── .gitignore ├── APIServer.cs ├── Activities.cs ├── Amplitude.cs ├── Avatar.cs ├── Config.cs ├── Config2.cs ├── ConfigTableEntry.cs ├── Consumable.cs ├── CustomRooms.cs ├── Download ├── avatar.txt ├── avataritems.txt ├── avataritems2.txt ├── banned.txt ├── baserooms.txt ├── changelog.txt ├── configv2.txt ├── consumables.txt ├── contextdrops.json ├── equipment.txt ├── facefeaturesadd.txt ├── gameconfigs.txt ├── profileimage.png ├── storefront2.txt └── version.txt ├── Events.cs ├── GameSessions.cs ├── GetCachedLogin.cs ├── GetOrCreates.cs ├── ImageServer.cs ├── Launcher ├── ProfileComputer_Background01.png ├── Untitled.png ├── changelog.txt └── download.txt ├── LevelProgressionEntry.cs ├── LoginCached.cs ├── MatchmakingConfigParams.cs ├── ModerationBlockDetails.cs ├── ModernRooms.cs ├── NameServer.cs ├── Notification.cs ├── Notification2018.cs ├── Objective.cs ├── Objective2018.cs ├── Objective2018Entry.cs ├── Objective2018Group.cs ├── OpenRec_.csproj ├── OpenRec_.sln ├── PlatformID.cs ├── PlatformLogin.cs ├── PlayerReputation.cs ├── ProfieStealer.cs ├── Profiles.cs ├── Program.cs ├── README.md ├── Sanitize.cs ├── Setting.cs ├── Settings.cs ├── Setup.cs ├── Storefront.cs ├── Update ├── banned.txt ├── builds.txt ├── dormslideshow.txt ├── hotrooms.txt ├── motd.txt └── rcslideshow.txt ├── Vault2018CustomRooms.cs ├── Vault2018GameSessions.cs ├── Vault2018Player.cs ├── Vault2018WS.cs ├── VaultGameConfig.cs ├── VaultSceneInfo.cs ├── WebSocket.cs ├── c000020.cs ├── c00005d.cs ├── icon2.ico ├── photonConfig.cs └── websocket-sharp.dll /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Ww][Ii][Nn]32/ 27 | [Aa][Rr][Mm]/ 28 | [Aa][Rr][Mm]64/ 29 | bld/ 30 | [Bb]in/ 31 | [Oo]bj/ 32 | [Oo]ut/ 33 | [Ll]og/ 34 | [Ll]ogs/ 35 | 36 | # Visual Studio 2015/2017 cache/options directory 37 | .vs/ 38 | # Uncomment if you have tasks that create the project's static files in wwwroot 39 | #wwwroot/ 40 | 41 | # Visual Studio 2017 auto generated files 42 | Generated\ Files/ 43 | 44 | # MSTest test Results 45 | [Tt]est[Rr]esult*/ 46 | [Bb]uild[Ll]og.* 47 | 48 | # NUnit 49 | *.VisualState.xml 50 | TestResult.xml 51 | nunit-*.xml 52 | 53 | # Build Results of an ATL Project 54 | [Dd]ebugPS/ 55 | [Rr]eleasePS/ 56 | dlldata.c 57 | 58 | # Benchmark Results 59 | BenchmarkDotNet.Artifacts/ 60 | 61 | # .NET Core 62 | project.lock.json 63 | project.fragment.lock.json 64 | artifacts/ 65 | 66 | # ASP.NET Scaffolding 67 | ScaffoldingReadMe.txt 68 | 69 | # StyleCop 70 | StyleCopReport.xml 71 | 72 | # Files built by Visual Studio 73 | *_i.c 74 | *_p.c 75 | *_h.h 76 | *.ilk 77 | *.meta 78 | *.obj 79 | *.iobj 80 | *.pch 81 | *.pdb 82 | *.ipdb 83 | *.pgc 84 | *.pgd 85 | *.rsp 86 | *.sbr 87 | *.tlb 88 | *.tli 89 | *.tlh 90 | *.tmp 91 | *.tmp_proj 92 | *_wpftmp.csproj 93 | *.log 94 | *.vspscc 95 | *.vssscc 96 | .builds 97 | *.pidb 98 | *.svclog 99 | *.scc 100 | 101 | # Chutzpah Test files 102 | _Chutzpah* 103 | 104 | # Visual C++ cache files 105 | ipch/ 106 | *.aps 107 | *.ncb 108 | *.opendb 109 | *.opensdf 110 | *.sdf 111 | *.cachefile 112 | *.VC.db 113 | *.VC.VC.opendb 114 | 115 | # Visual Studio profiler 116 | *.psess 117 | *.vsp 118 | *.vspx 119 | *.sap 120 | 121 | # Visual Studio Trace Files 122 | *.e2e 123 | 124 | # TFS 2012 Local Workspace 125 | $tf/ 126 | 127 | # Guidance Automation Toolkit 128 | *.gpState 129 | 130 | # ReSharper is a .NET coding add-in 131 | _ReSharper*/ 132 | *.[Rr]e[Ss]harper 133 | *.DotSettings.user 134 | 135 | # TeamCity is a build add-in 136 | _TeamCity* 137 | 138 | # DotCover is a Code Coverage Tool 139 | *.dotCover 140 | 141 | # AxoCover is a Code Coverage Tool 142 | .axoCover/* 143 | !.axoCover/settings.json 144 | 145 | # Coverlet is a free, cross platform Code Coverage Tool 146 | coverage*.json 147 | coverage*.xml 148 | coverage*.info 149 | 150 | # Visual Studio code coverage results 151 | *.coverage 152 | *.coveragexml 153 | 154 | # NCrunch 155 | _NCrunch_* 156 | .*crunch*.local.xml 157 | nCrunchTemp_* 158 | 159 | # MightyMoose 160 | *.mm.* 161 | AutoTest.Net/ 162 | 163 | # Web workbench (sass) 164 | .sass-cache/ 165 | 166 | # Installshield output folder 167 | [Ee]xpress/ 168 | 169 | # DocProject is a documentation generator add-in 170 | DocProject/buildhelp/ 171 | DocProject/Help/*.HxT 172 | DocProject/Help/*.HxC 173 | DocProject/Help/*.hhc 174 | DocProject/Help/*.hhk 175 | DocProject/Help/*.hhp 176 | DocProject/Help/Html2 177 | DocProject/Help/html 178 | 179 | # Click-Once directory 180 | publish/ 181 | 182 | # Publish Web Output 183 | *.[Pp]ublish.xml 184 | *.azurePubxml 185 | # Note: Comment the next line if you want to checkin your web deploy settings, 186 | # but database connection strings (with potential passwords) will be unencrypted 187 | *.pubxml 188 | *.publishproj 189 | 190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 191 | # checkin your Azure Web App publish settings, but sensitive information contained 192 | # in these scripts will be unencrypted 193 | PublishScripts/ 194 | 195 | # NuGet Packages 196 | *.nupkg 197 | # NuGet Symbol Packages 198 | *.snupkg 199 | # The packages folder can be ignored because of Package Restore 200 | **/[Pp]ackages/* 201 | # except build/, which is used as an MSBuild target. 202 | !**/[Pp]ackages/build/ 203 | # Uncomment if necessary however generally it will be regenerated when needed 204 | #!**/[Pp]ackages/repositories.config 205 | # NuGet v3's project.json files produces more ignorable files 206 | *.nuget.props 207 | *.nuget.targets 208 | 209 | # Microsoft Azure Build Output 210 | csx/ 211 | *.build.csdef 212 | 213 | # Microsoft Azure Emulator 214 | ecf/ 215 | rcf/ 216 | 217 | # Windows Store app package directories and files 218 | AppPackages/ 219 | BundleArtifacts/ 220 | Package.StoreAssociation.xml 221 | _pkginfo.txt 222 | *.appx 223 | *.appxbundle 224 | *.appxupload 225 | 226 | # Visual Studio cache files 227 | # files ending in .cache can be ignored 228 | *.[Cc]ache 229 | # but keep track of directories ending in .cache 230 | !?*.[Cc]ache/ 231 | 232 | # Others 233 | ClientBin/ 234 | ~$* 235 | *~ 236 | *.dbmdl 237 | *.dbproj.schemaview 238 | *.jfm 239 | *.pfx 240 | *.publishsettings 241 | orleans.codegen.cs 242 | 243 | # Including strong name files can present a security risk 244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 245 | #*.snk 246 | 247 | # Since there are multiple workflows, uncomment next line to ignore bower_components 248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 249 | #bower_components/ 250 | 251 | # RIA/Silverlight projects 252 | Generated_Code/ 253 | 254 | # Backup & report files from converting an old project file 255 | # to a newer Visual Studio version. Backup files are not needed, 256 | # because we have git ;-) 257 | _UpgradeReport_Files/ 258 | Backup*/ 259 | UpgradeLog*.XML 260 | UpgradeLog*.htm 261 | ServiceFabricBackup/ 262 | *.rptproj.bak 263 | 264 | # SQL Server files 265 | *.mdf 266 | *.ldf 267 | *.ndf 268 | 269 | # Business Intelligence projects 270 | *.rdl.data 271 | *.bim.layout 272 | *.bim_*.settings 273 | *.rptproj.rsuser 274 | *- [Bb]ackup.rdl 275 | *- [Bb]ackup ([0-9]).rdl 276 | *- [Bb]ackup ([0-9][0-9]).rdl 277 | 278 | # Microsoft Fakes 279 | FakesAssemblies/ 280 | 281 | # GhostDoc plugin setting file 282 | *.GhostDoc.xml 283 | 284 | # Node.js Tools for Visual Studio 285 | .ntvs_analysis.dat 286 | node_modules/ 287 | 288 | # Visual Studio 6 build log 289 | *.plg 290 | 291 | # Visual Studio 6 workspace options file 292 | *.opt 293 | 294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 295 | *.vbw 296 | 297 | # Visual Studio LightSwitch build output 298 | **/*.HTMLClient/GeneratedArtifacts 299 | **/*.DesktopClient/GeneratedArtifacts 300 | **/*.DesktopClient/ModelManifest.xml 301 | **/*.Server/GeneratedArtifacts 302 | **/*.Server/ModelManifest.xml 303 | _Pvt_Extensions 304 | 305 | # Paket dependency manager 306 | .paket/paket.exe 307 | paket-files/ 308 | 309 | # FAKE - F# Make 310 | .fake/ 311 | 312 | # CodeRush personal settings 313 | .cr/personal 314 | 315 | # Python Tools for Visual Studio (PTVS) 316 | __pycache__/ 317 | *.pyc 318 | 319 | # Cake - Uncomment if you are using it 320 | # tools/** 321 | # !tools/packages.config 322 | 323 | # Tabs Studio 324 | *.tss 325 | 326 | # Telerik's JustMock configuration file 327 | *.jmconfig 328 | 329 | # BizTalk build output 330 | *.btp.cs 331 | *.btm.cs 332 | *.odx.cs 333 | *.xsd.cs 334 | 335 | # OpenCover UI analysis results 336 | OpenCover/ 337 | 338 | # Azure Stream Analytics local run output 339 | ASALocalRun/ 340 | 341 | # MSBuild Binary and Structured Log 342 | *.binlog 343 | 344 | # NVidia Nsight GPU debugger configuration file 345 | *.nvuser 346 | 347 | # MFractors (Xamarin productivity tool) working folder 348 | .mfractor/ 349 | 350 | # Local History for Visual Studio 351 | .localhistory/ 352 | 353 | # BeatPulse healthcheck temp database 354 | healthchecksdb 355 | 356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 357 | MigrationBackup/ 358 | 359 | # Ionide (cross platform F# VS Code tools) working folder 360 | .ionide/ 361 | 362 | # Fody - auto-generated XML schema 363 | FodyWeavers.xsd -------------------------------------------------------------------------------- /Activities.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Newtonsoft.Json; 4 | 5 | namespace api 6 | { 7 | // Token: 0x02000021 RID: 33 8 | internal class Activities 9 | { 10 | // Token: 0x02000069 RID: 105 11 | public class Charades 12 | { 13 | // Token: 0x06000322 RID: 802 RVA: 0x0000C5F4 File Offset: 0x0000A7F4 14 | public static string words() 15 | { 16 | List value = new List 17 | { 18 | new Activities.Charades.word 19 | { 20 | EN_US = "talking ben", 21 | Difficulty = 0 22 | }, 23 | new Activities.Charades.word 24 | { 25 | EN_US = "lemon", 26 | Difficulty = 0 27 | }, 28 | new Activities.Charades.word 29 | { 30 | EN_US = "grape", 31 | Difficulty = 0 32 | }, 33 | new Activities.Charades.word 34 | { 35 | EN_US = "roblox", 36 | Difficulty = 0 37 | }, 38 | new Activities.Charades.word 39 | { 40 | EN_US = "tree", 41 | Difficulty = 0 42 | }, 43 | new Activities.Charades.word 44 | { 45 | EN_US = "cloud", 46 | Difficulty = 0 47 | }, 48 | new Activities.Charades.word 49 | { 50 | EN_US = "iphone", 51 | Difficulty = 0 52 | }, 53 | new Activities.Charades.word 54 | { 55 | EN_US = "your house", 56 | Difficulty = 0 57 | }, 58 | new Activities.Charades.word 59 | { 60 | EN_US = "spaghetti", 61 | Difficulty = 0 62 | }, 63 | new Activities.Charades.word 64 | { 65 | EN_US = "lean", 66 | Difficulty = 0 67 | }, 68 | new Activities.Charades.word 69 | { 70 | EN_US = "bitcoin", 71 | Difficulty = 0 72 | }, 73 | new Activities.Charades.word 74 | { 75 | EN_US = "nft", 76 | Difficulty = 0 77 | }, 78 | new Activities.Charades.word 79 | { 80 | EN_US = "grass", 81 | Difficulty = 0 82 | }, 83 | new Activities.Charades.word 84 | { 85 | EN_US = "recroom2016", 86 | Difficulty = 0 87 | }, 88 | new Activities.Charades.word 89 | { 90 | EN_US = "joker", 91 | Difficulty = 0 92 | }, 93 | new Activities.Charades.word 94 | { 95 | EN_US = "fortnite", 96 | Difficulty = 0 97 | }, 98 | new Activities.Charades.word 99 | { 100 | EN_US = "woman", 101 | Difficulty = 0 102 | }, 103 | new Activities.Charades.word 104 | { 105 | EN_US = "spiderman", 106 | Difficulty = 0 107 | }, 108 | new Activities.Charades.word 109 | { 110 | EN_US = "vr", 111 | Difficulty = 0 112 | }, 113 | new Activities.Charades.word 114 | { 115 | EN_US = "among us", 116 | Difficulty = 0 117 | }, 118 | new Activities.Charades.word 119 | { 120 | EN_US = "coach", 121 | Difficulty = 0 122 | }, 123 | new Activities.Charades.word 124 | { 125 | EN_US = "coach with a gun", 126 | Difficulty = 0 127 | }, 128 | new Activities.Charades.word 129 | { 130 | EN_US = "funny fish", 131 | Difficulty = 0 132 | }, 133 | new Activities.Charades.word 134 | { 135 | EN_US = "skinwalker", 136 | Difficulty = 0 137 | }, 138 | new Activities.Charades.word 139 | { 140 | EN_US = "christmas tree", 141 | Difficulty = 0 142 | }, 143 | new Activities.Charades.word 144 | { 145 | EN_US = "ur mom", 146 | Difficulty = 0 147 | }, 148 | new Activities.Charades.word 149 | { 150 | EN_US = "stick of ram", 151 | Difficulty = 0 152 | }, 153 | new Activities.Charades.word 154 | { 155 | EN_US = "big mac", 156 | Difficulty = 0 157 | }, 158 | new Activities.Charades.word 159 | { 160 | EN_US = "ninetndo switch", 161 | Difficulty = 0 162 | }, 163 | new Activities.Charades.word 164 | { 165 | EN_US = "crescendo", 166 | Difficulty = 0 167 | }, 168 | new Activities.Charades.word 169 | { 170 | EN_US = "boxing", 171 | Difficulty = 0 172 | }, 173 | new Activities.Charades.word 174 | { 175 | EN_US = "angry birds", 176 | Difficulty = 0 177 | } 178 | }; 179 | return JsonConvert.SerializeObject(value); 180 | } 181 | 182 | // Token: 0x02000073 RID: 115 183 | public class word 184 | { 185 | // Token: 0x170001AA RID: 426 186 | // (get) Token: 0x060003F3 RID: 1011 RVA: 0x0000D196 File Offset: 0x0000B396 187 | // (set) Token: 0x060003F4 RID: 1012 RVA: 0x0000D19E File Offset: 0x0000B39E 188 | public string EN_US { get; set; } 189 | 190 | // Token: 0x170001AB RID: 427 191 | // (get) Token: 0x060003F5 RID: 1013 RVA: 0x0000D1A7 File Offset: 0x0000B3A7 192 | // (set) Token: 0x060003F6 RID: 1014 RVA: 0x0000D1AF File Offset: 0x0000B3AF 193 | public int Difficulty { get; set; } 194 | } 195 | } 196 | } 197 | } 198 | -------------------------------------------------------------------------------- /Amplitude.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Newtonsoft.Json; 3 | 4 | namespace api 5 | { 6 | // Token: 0x0200005A RID: 90 7 | internal class Amplitude 8 | { 9 | // Token: 0x0600029D RID: 669 RVA: 0x0000342D File Offset: 0x0000162D 10 | public static string amplitude() 11 | { 12 | return JsonConvert.SerializeObject(new Amplitude 13 | { 14 | AmplitudeKey = "NoKeyProvided" 15 | }); 16 | } 17 | 18 | // Token: 0x170000FF RID: 255 19 | // (get) Token: 0x0600029F RID: 671 RVA: 0x00003444 File Offset: 0x00001644 20 | // (set) Token: 0x060002A0 RID: 672 RVA: 0x0000344C File Offset: 0x0000164C 21 | public string AmplitudeKey { get; set; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Avatar.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace api 6 | { 7 | class Avatar 8 | { 9 | public string OutfitSelections { get; set; } 10 | public string HairColor { get; set; } 11 | public string SkinColor { get; set; } 12 | public string FaceFeatures { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Config.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.IO; 5 | using System.Net; 6 | 7 | namespace api 8 | { 9 | class Config 10 | { 11 | public static void setup() 12 | { 13 | Console.WriteLine("Setting up..."); 14 | Directory.CreateDirectory("SaveData\\Profile\\"); 15 | if (!(File.Exists("SaveData\\avatar.txt"))) 16 | { 17 | File.Create("SaveData\\avatar.txt"); 18 | } 19 | if (!(File.Exists("SaveData\\Profile\\username.txt"))) 20 | { 21 | File.WriteAllText("SaveData\\Profile\\username.txt", "DefaultUsername"); 22 | } 23 | if (!(File.Exists("SaveData\\profileimage.png"))) 24 | { 25 | File.WriteAllBytes("SaveData\\profileimage.png", new WebClient().DownloadData("https://github.com/OpenRecRoom/OpenRec/raw/main/profileimage.png")); 26 | } 27 | Console.WriteLine("Done!"); 28 | Console.Clear(); 29 | } 30 | public static gamesesh.GameSessions.SessionInstance localGameSession; 31 | public static Objective[][] dailyObjectives = new Objective[][] 32 | { 33 | new Objective[] 34 | { 35 | new Objective 36 | { 37 | type = 20, 38 | score = 1 39 | }, 40 | new Objective 41 | { 42 | type = 21, 43 | score = 1 44 | }, 45 | new Objective 46 | { 47 | type = 22, 48 | score = 1 49 | } 50 | }, 51 | new Objective[] 52 | { 53 | new Objective 54 | { 55 | type = 20, 56 | score = 1 57 | }, 58 | new Objective 59 | { 60 | type = 21, 61 | score = 1 62 | }, 63 | new Objective 64 | { 65 | type = 22, 66 | score = 1 67 | } 68 | }, 69 | new Objective[] 70 | { 71 | new Objective 72 | { 73 | type = 20, 74 | score = 1 75 | }, 76 | new Objective 77 | { 78 | type = 21, 79 | score = 1 80 | }, 81 | new Objective 82 | { 83 | type = 22, 84 | score = 1 85 | } 86 | }, 87 | new Objective[] 88 | { 89 | new Objective 90 | { 91 | type = 20, 92 | score = 1 93 | }, 94 | new Objective 95 | { 96 | type = 21, 97 | score = 1 98 | }, 99 | new Objective 100 | { 101 | type = 22, 102 | score = 1 103 | } 104 | }, 105 | new Objective[] 106 | { 107 | new Objective 108 | { 109 | type = 20, 110 | score = 1 111 | }, 112 | new Objective 113 | { 114 | type = 21, 115 | score = 1 116 | }, 117 | new Objective 118 | { 119 | type = 22, 120 | score = 1 121 | } 122 | }, 123 | new Objective[] 124 | { 125 | new Objective 126 | { 127 | type = 20, 128 | score = 1 129 | }, 130 | new Objective 131 | { 132 | type = 21, 133 | score = 1 134 | }, 135 | new Objective 136 | { 137 | type = 22, 138 | score = 1 139 | } 140 | }, 141 | new Objective[] 142 | { 143 | new Objective 144 | { 145 | type = 20, 146 | score = 1 147 | }, 148 | new Objective 149 | { 150 | type = 21, 151 | score = 1 152 | }, 153 | new Objective 154 | { 155 | type = 22, 156 | score = 1 157 | } 158 | } 159 | }; 160 | 161 | } 162 | } 163 | -------------------------------------------------------------------------------- /Config2.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Net; 5 | using Newtonsoft.Json; 6 | using api; 7 | 8 | namespace api 9 | { 10 | // Token: 0x02000013 RID: 19 11 | internal class Config2 12 | { 13 | // Token: 0x17000011 RID: 17 14 | // (get) Token: 0x06000050 RID: 80 RVA: 0x00002215 File Offset: 0x00000415 15 | // (set) Token: 0x06000051 RID: 81 RVA: 0x0000221D File Offset: 0x0000041D 16 | public string MessageOfTheDay { get; set; } 17 | 18 | // Token: 0x17000012 RID: 18 19 | // (get) Token: 0x06000052 RID: 82 RVA: 0x00002226 File Offset: 0x00000426 20 | // (set) Token: 0x06000053 RID: 83 RVA: 0x0000222E File Offset: 0x0000042E 21 | public string CdnBaseUri { get; set; } 22 | 23 | // Token: 0x17000013 RID: 19 24 | // (get) Token: 0x06000054 RID: 84 RVA: 0x00002237 File Offset: 0x00000437 25 | // (set) Token: 0x06000055 RID: 85 RVA: 0x0000223F File Offset: 0x0000043F 26 | public List LevelProgressionMaps { get; set; } 27 | 28 | // Token: 0x17000014 RID: 20 29 | // (get) Token: 0x06000056 RID: 86 RVA: 0x00002248 File Offset: 0x00000448 30 | // (set) Token: 0x06000057 RID: 87 RVA: 0x00002250 File Offset: 0x00000450 31 | public MatchmakingConfigParams MatchmakingParams { get; set; } 32 | 33 | // Token: 0x17000015 RID: 21 34 | // (get) Token: 0x06000058 RID: 88 RVA: 0x00002259 File Offset: 0x00000459 35 | // (set) Token: 0x06000059 RID: 89 RVA: 0x00002261 File Offset: 0x00000461 36 | public Objective[][] DailyObjectives { get; set; } 37 | 38 | // Token: 0x17000016 RID: 22 39 | // (get) Token: 0x0600005A RID: 90 RVA: 0x0000226A File Offset: 0x0000046A 40 | // (set) Token: 0x0600005B RID: 91 RVA: 0x00002272 File Offset: 0x00000472 41 | public List ConfigTable { get; set; } 42 | 43 | // Token: 0x17000017 RID: 23 44 | // (get) Token: 0x0600005C RID: 92 RVA: 0x0000227B File Offset: 0x0000047B 45 | // (set) Token: 0x0600005D RID: 93 RVA: 0x00002283 File Offset: 0x00000483 46 | public photonConfig PhotonConfig { get; set; } 47 | 48 | // Token: 0x0600005E RID: 94 RVA: 0x00005450 File Offset: 0x00003650 49 | public static string GetDebugConfig() 50 | { 51 | 52 | return JsonConvert.SerializeObject(new Config2 53 | { 54 | MessageOfTheDay = new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/motd.txt"), 55 | CdnBaseUri = "http://localhost:20182/", 56 | LevelProgressionMaps = new List 57 | { 58 | new LevelProgressionEntry 59 | { 60 | Level = 0, 61 | RequiredXp = 1 62 | }, 63 | new LevelProgressionEntry 64 | { 65 | Level = 1, 66 | RequiredXp = 2 67 | }, 68 | new LevelProgressionEntry 69 | { 70 | Level = 2, 71 | RequiredXp = 3 72 | }, 73 | new LevelProgressionEntry 74 | { 75 | Level = 3, 76 | RequiredXp = 4 77 | }, 78 | new LevelProgressionEntry 79 | { 80 | Level = 4, 81 | RequiredXp = 5 82 | }, 83 | new LevelProgressionEntry 84 | { 85 | Level = 5, 86 | RequiredXp = 6 87 | }, 88 | new LevelProgressionEntry 89 | { 90 | Level = 6, 91 | RequiredXp = 7 92 | }, 93 | new LevelProgressionEntry 94 | { 95 | Level = 7, 96 | RequiredXp = 8 97 | }, 98 | new LevelProgressionEntry 99 | { 100 | Level = 8, 101 | RequiredXp = 9 102 | }, 103 | new LevelProgressionEntry 104 | { 105 | Level = 9, 106 | RequiredXp = 10 107 | }, 108 | new LevelProgressionEntry 109 | { 110 | Level = 10, 111 | RequiredXp = 11 112 | }, 113 | new LevelProgressionEntry 114 | { 115 | Level = 11, 116 | RequiredXp = 12 117 | }, 118 | new LevelProgressionEntry 119 | { 120 | Level = 12, 121 | RequiredXp = 13 122 | }, 123 | new LevelProgressionEntry 124 | { 125 | Level = 13, 126 | RequiredXp = 14 127 | }, 128 | new LevelProgressionEntry 129 | { 130 | Level = 14, 131 | RequiredXp = 15 132 | }, 133 | new LevelProgressionEntry 134 | { 135 | Level = 15, 136 | RequiredXp = 16 137 | }, 138 | new LevelProgressionEntry 139 | { 140 | Level = 16, 141 | RequiredXp = 17 142 | }, 143 | new LevelProgressionEntry 144 | { 145 | Level = 17, 146 | RequiredXp = 18 147 | }, 148 | new LevelProgressionEntry 149 | { 150 | Level = 18, 151 | RequiredXp = 19 152 | }, 153 | new LevelProgressionEntry 154 | { 155 | Level = 19, 156 | RequiredXp = 20 157 | }, 158 | new LevelProgressionEntry 159 | { 160 | Level = 20, 161 | RequiredXp = 21 162 | } 163 | }, 164 | MatchmakingParams = new MatchmakingConfigParams 165 | { 166 | PreferEmptyRoomsFrequency = 0f, 167 | PreferFullRoomsFrequency = 1f 168 | }, 169 | DailyObjectives = Config.dailyObjectives, 170 | ConfigTable = new List 171 | { 172 | new ConfigTableEntry 173 | { 174 | Key = "Gift.DropChance", 175 | Value = 0.5f.ToString() 176 | }, 177 | new ConfigTableEntry 178 | { 179 | Key = "Gift.XP", 180 | Value = 0.5f.ToString() 181 | } 182 | }, 183 | PhotonConfig = new photonConfig 184 | { 185 | CloudRegion = "us", 186 | CrcCheckEnabled = false, 187 | EnableServerTracingAfterDisconnect = false 188 | } 189 | }); 190 | } 191 | } 192 | } 193 | -------------------------------------------------------------------------------- /ConfigTableEntry.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace api 4 | { 5 | // Token: 0x02000019 RID: 25 6 | internal class ConfigTableEntry 7 | { 8 | // Token: 0x17000022 RID: 34 9 | // (get) Token: 0x0600007A RID: 122 RVA: 0x00002336 File Offset: 0x00000536 10 | // (set) Token: 0x0600007B RID: 123 RVA: 0x0000233E File Offset: 0x0000053E 11 | public string Key { get; set; } 12 | 13 | // Token: 0x17000023 RID: 35 14 | // (get) Token: 0x0600007C RID: 124 RVA: 0x00002347 File Offset: 0x00000547 15 | // (set) Token: 0x0600007D RID: 125 RVA: 0x0000234F File Offset: 0x0000054F 16 | public string Value { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /Consumable.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace api 6 | { 7 | class Consumable 8 | { 9 | 10 | // Token: 0x040001E4 RID: 484 11 | public static List f000026; 12 | 13 | // Token: 0x0200009F RID: 159 14 | public class c00009f 15 | { 16 | // Token: 0x1700010B RID: 267 17 | // (get) Token: 0x06000376 RID: 886 18 | // (set) Token: 0x06000377 RID: 887 19 | public long Id 20 | { 21 | 22 | get 23 | { 24 | return this.f00002c; 25 | } 26 | 27 | set 28 | { 29 | this.f00002c = value; 30 | } 31 | } 32 | 33 | // Token: 0x1700010C RID: 268 34 | // (get) Token: 0x06000378 RID: 888 35 | // (set) Token: 0x06000379 RID: 889 36 | public string ConsumableItemDesc 37 | { 38 | 39 | get 40 | { 41 | return this.f000002; 42 | } 43 | 44 | set 45 | { 46 | this.f000002 = value; 47 | } 48 | } 49 | 50 | // Token: 0x1700010D RID: 269 51 | // (get) Token: 0x0600037A RID: 890 52 | // (set) Token: 0x0600037B RID: 891 53 | public DateTime CreatedAt 54 | { 55 | 56 | get 57 | { 58 | return this.f00003a; 59 | } 60 | 61 | set 62 | { 63 | this.f00003a = value; 64 | } 65 | } 66 | 67 | // Token: 0x1700010E RID: 270 68 | // (get) Token: 0x0600037C RID: 892 69 | // (set) Token: 0x0600037D RID: 893 70 | public int Count 71 | { 72 | 73 | get 74 | { 75 | return this.f000004; 76 | } 77 | 78 | set 79 | { 80 | this.f000004 = value; 81 | } 82 | } 83 | 84 | // Token: 0x1700010F RID: 271 85 | // (get) Token: 0x0600037E RID: 894 86 | // (set) Token: 0x0600037F RID: 895 87 | public int InitialCount 88 | { 89 | 90 | get 91 | { 92 | return this.f000005; 93 | } 94 | 95 | set 96 | { 97 | this.f000005 = value; 98 | } 99 | } 100 | 101 | // Token: 0x17000110 RID: 272 102 | // (get) Token: 0x06000380 RID: 896 103 | // (set) Token: 0x06000381 RID: 897 104 | public int UnlockedLevel 105 | { 106 | 107 | get 108 | { 109 | return this.f000006; 110 | } 111 | 112 | set 113 | { 114 | this.f000006 = value; 115 | } 116 | } 117 | 118 | // Token: 0x17000111 RID: 273 119 | // (get) Token: 0x06000382 RID: 898 120 | // (set) Token: 0x06000383 RID: 899 121 | public bool IsActive 122 | { 123 | 124 | get 125 | { 126 | return this.f000016; 127 | } 128 | 129 | set 130 | { 131 | this.f000016 = value; 132 | } 133 | } 134 | 135 | // Token: 0x17000112 RID: 274 136 | // (get) Token: 0x06000384 RID: 900 137 | // (set) Token: 0x06000385 RID: 901 138 | public int? ActiveDurationMinutes 139 | { 140 | 141 | get 142 | { 143 | return this.f000081; 144 | } 145 | 146 | set 147 | { 148 | this.f000081 = value; 149 | } 150 | } 151 | 152 | // Token: 0x040001E6 RID: 486 153 | private long f00002c; 154 | 155 | // Token: 0x040001E7 RID: 487 156 | private string f000002; 157 | 158 | // Token: 0x040001E8 RID: 488 159 | private DateTime f00003a; 160 | 161 | // Token: 0x040001E9 RID: 489 162 | private int f000004; 163 | 164 | // Token: 0x040001EA RID: 490 165 | private int f000005; 166 | 167 | // Token: 0x040001EB RID: 491 168 | private int f000006; 169 | 170 | // Token: 0x040001EC RID: 492 171 | private bool f000016; 172 | 173 | // Token: 0x040001ED RID: 493 174 | private int? f000081; 175 | } 176 | } 177 | } 178 | -------------------------------------------------------------------------------- /CustomRooms.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Net; 5 | using Newtonsoft.Json; 6 | using vaultgamesesh; 7 | using System.IO; 8 | using server; 9 | using api; 10 | 11 | namespace api 12 | { 13 | class CustomRooms 14 | { 15 | public static void RoomDecode(string text) 16 | { 17 | ModernRooms.Root root2 = JsonConvert.DeserializeObject(text); 18 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\roomname.txt", root2.Name); 19 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\roomid.txt", Convert.ToString(root2.RoomId)); 20 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\datablob.txt", root2.SubRooms[0].DataBlob); 21 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\roomsceneid.txt", root2.SubRooms[0].UnitySceneId); 22 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\imagename.txt", root2.ImageName); 23 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\cheercount.txt", Convert.ToString(root2.Stats.CheerCount)); 24 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\favcount.txt", Convert.ToString(root2.Stats.FavoriteCount)); 25 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\visitcount.txt", Convert.ToString(root2.Stats.VisitCount)); 26 | room = new Room 27 | { 28 | RoomId = 29, 29 | Name = root2.Name, 30 | Description = "OpenRec Downloaded Room", 31 | ImageName = root2.ImageName, 32 | CreatorPlayerId = Convert.ToUInt64(File.ReadAllText("SaveData\\Profile\\userid.txt")), 33 | State = 0, 34 | Accessibility = 1, 35 | SupportsLevelVoting = false, 36 | IsAGRoom = false, 37 | CloningAllowed = false, 38 | SupportsScreens = true, 39 | SupportsWalkVR = true, 40 | SupportsTeleportVR = true, 41 | ReplicationId = null, 42 | ReleaseStatus = 0 43 | 44 | }; 45 | scene = new List 46 | { 47 | new Scene() 48 | { 49 | RoomSceneId = 1, 50 | RoomId = 29, 51 | RoomSceneLocationId = root2.SubRooms[0].UnitySceneId, 52 | Name = "Home", 53 | IsSandbox = true, 54 | DataBlobName = root2.SubRooms[0].DataBlob, 55 | MaxPlayers = 20, 56 | CanMatchmakeInto = true, 57 | DataModifiedAt = root2.SubRooms[0].DataSavedAt, 58 | ReplicationId = null, 59 | UseLevelBasedMatchmaking = false, 60 | UseAgeBasedMatchmaking = false, 61 | UseRecRoyaleMatchmaking = false, 62 | ReleaseStatus = 0, 63 | SupportsJoinInProgress = true 64 | } 65 | }; 66 | root = new Root 67 | { 68 | Room = room, 69 | Scenes = scene, 70 | CoOwners = new List(), 71 | InvitedCoOwners = new List(), 72 | Hosts = new List(), 73 | InvitedHosts = new List(), 74 | CheerCount = root2.Stats.CheerCount, 75 | FavoriteCount = root2.Stats.FavoriteCount, 76 | VisitCount = root2.Stats.VisitCount, 77 | Tags = new List 78 | { 79 | new aTag() 80 | { 81 | Tag = "rro", 82 | Type = 2 83 | } 84 | } 85 | 86 | }; 87 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\RoomDetails.json", JsonConvert.SerializeObject(root)); 88 | } 89 | 90 | public static void RoomGet(string roomnames) 91 | { 92 | string webdata = new WebClient().DownloadString("https://rooms.rec.net/rooms?name=" + roomnames + "&include=297"); 93 | ModernRooms.Root root2 = JsonConvert.DeserializeObject(webdata); 94 | room = new Room 95 | { 96 | RoomId = 29, 97 | Name = root2.Name, 98 | Description = "OpenRec Downloaded Room", 99 | ImageName = root2.ImageName, 100 | CreatorPlayerId = Convert.ToUInt64(File.ReadAllText("SaveData\\Profile\\userid.txt")), 101 | State = 0, 102 | Accessibility = 1, 103 | SupportsLevelVoting = false, 104 | IsAGRoom = false, 105 | CloningAllowed = false, 106 | SupportsScreens = true, 107 | SupportsWalkVR = true, 108 | SupportsTeleportVR = true, 109 | ReplicationId = null, 110 | ReleaseStatus = 0 111 | 112 | }; 113 | scene = new List 114 | { 115 | new Scene() 116 | { 117 | RoomSceneId = 1, 118 | RoomId = 29, 119 | RoomSceneLocationId = root2.SubRooms[0].UnitySceneId, 120 | Name = "Home", 121 | IsSandbox = true, 122 | DataBlobName = root2.SubRooms[0].DataBlob, 123 | MaxPlayers = 20, 124 | CanMatchmakeInto = true, 125 | DataModifiedAt = root2.SubRooms[0].DataSavedAt, 126 | ReplicationId = null, 127 | UseLevelBasedMatchmaking = false, 128 | UseAgeBasedMatchmaking = false, 129 | UseRecRoyaleMatchmaking = false, 130 | ReleaseStatus = 0, 131 | SupportsJoinInProgress = true 132 | } 133 | }; 134 | root = new Root 135 | { 136 | Room = room, 137 | Scenes = scene, 138 | CoOwners = new List(), 139 | InvitedCoOwners = new List(), 140 | Hosts = new List(), 141 | InvitedHosts = new List(), 142 | CheerCount = root2.Stats.CheerCount, 143 | FavoriteCount = root2.Stats.FavoriteCount, 144 | VisitCount = root2.Stats.VisitCount, 145 | Tags = new List 146 | { 147 | new aTag() 148 | { 149 | Tag = "rro", 150 | Type = 2 151 | } 152 | } 153 | 154 | }; 155 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\roomname.txt", root2.Name); 156 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\roomid.txt", Convert.ToString(root2.RoomId)); 157 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\datablob.txt", root2.SubRooms[0].DataBlob); 158 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\roomsceneid.txt", root2.SubRooms[0].UnitySceneId); 159 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\imagename.txt", root2.ImageName); 160 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\cheercount.txt", Convert.ToString(root2.Stats.CheerCount)); 161 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\favcount.txt", Convert.ToString(root2.Stats.FavoriteCount)); 162 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\visitcount.txt", Convert.ToString(root2.Stats.VisitCount)); 163 | File.WriteAllText("SaveData\\Rooms\\Downloaded\\RoomDetails.json", JsonConvert.SerializeObject(root)); 164 | } 165 | 166 | 167 | 168 | public static Room room { get; set; } 169 | public static List scene { get; set; } 170 | public static Root root { get; set; } 171 | //2018 rooms 172 | public class Room 173 | { 174 | public ulong RoomId { get; set; } 175 | public string Name { get; set; } 176 | public string Description { get; set; } 177 | public ulong CreatorPlayerId { get; set; } 178 | public string ImageName { get; set; } 179 | public int State { get; set; } 180 | public int Accessibility { get; set; } 181 | public bool SupportsLevelVoting { get; set; } 182 | public bool IsAGRoom { get; set; } 183 | public bool CloningAllowed { get; set; } 184 | public bool SupportsScreens { get; set; } 185 | public bool SupportsWalkVR { get; set; } 186 | public bool SupportsTeleportVR { get; set; } 187 | public object ReplicationId { get; set; } 188 | public int ReleaseStatus { get; set; } 189 | } 190 | 191 | public class Scene 192 | { 193 | public int RoomSceneId { get; set; } 194 | public ulong RoomId { get; set; } 195 | public string RoomSceneLocationId { get; set; } 196 | public string Name { get; set; } 197 | public bool IsSandbox { get; set; } 198 | public string DataBlobName { get; set; } 199 | public int MaxPlayers { get; set; } 200 | public bool CanMatchmakeInto { get; set; } 201 | public DateTime DataModifiedAt { get; set; } 202 | public object ReplicationId { get; set; } 203 | public bool UseLevelBasedMatchmaking { get; set; } 204 | public bool UseAgeBasedMatchmaking { get; set; } 205 | public bool UseRecRoyaleMatchmaking { get; set; } 206 | public int ReleaseStatus { get; set; } 207 | public bool SupportsJoinInProgress { get; set; } 208 | } 209 | 210 | public class Root 211 | { 212 | public Room Room { get; set; } 213 | public List Scenes { get; set; } 214 | public List CoOwners { get; set; } 215 | public List InvitedCoOwners { get; set; } 216 | public List Hosts { get; set; } 217 | public List InvitedHosts { get; set; } 218 | public int CheerCount { get; set; } 219 | public int FavoriteCount { get; set; } 220 | public int VisitCount { get; set; } 221 | public List Tags { get; set; } 222 | } 223 | public class aTag 224 | { 225 | public string Tag { get; set; } 226 | public int Type { get; set; } 227 | } 228 | } 229 | } 230 | -------------------------------------------------------------------------------- /Download/avatar.txt: -------------------------------------------------------------------------------- 1 | {"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"} 2 | -------------------------------------------------------------------------------- /Download/banned.txt: -------------------------------------------------------------------------------- 1 | [487454,4701796] 2 | -------------------------------------------------------------------------------- /Download/baserooms.txt: -------------------------------------------------------------------------------- 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}] 2 | -------------------------------------------------------------------------------- /Download/changelog.txt: -------------------------------------------------------------------------------- 1 | Feature Patch v0.6.9: sex build 2 | -Added tutorial and info hints 3 | -Added custom rooms back into 2018 (no saving yet) 4 | -Added Profile Downloader 5 | -Added build links tab 6 | -Improved profile image changing 7 | -Updated the UI more 8 | 9 | Note: This release DOES NOT feature friending yet! This is just a feature patch before that is released in version 0.7.0. 10 | 11 | Credits: 12 | @Nexus0821 - Programmed and helped add in a lot of new features 13 | 14 | @LucasOnDiscord#0210 - Adding potions 15 | @GabeTheFirst#7335 - Tester when my game was broken 16 | @andry6702#9812 - Discovered custom room downloading for 2018 17 | -------------------------------------------------------------------------------- /Download/configv2.txt: -------------------------------------------------------------------------------- 1 | {"MessageOfTheDay":"Welcome to OpenRec!\n\nBTW IF YOU SEE THIS, SHUT UP\nTHANK YOU\n","CdnBaseUri":"http://localhost:20182/","LevelProgressionMaps":[{"Level":0,"RequiredXp":1},{"Level":1,"RequiredXp":2},{"Level":2,"RequiredXp":3},{"Level":3,"RequiredXp":4},{"Level":4,"RequiredXp":5},{"Level":5,"RequiredXp":6},{"Level":6,"RequiredXp":7},{"Level":7,"RequiredXp":8},{"Level":8,"RequiredXp":9},{"Level":9,"RequiredXp":10},{"Level":10,"RequiredXp":11},{"Level":11,"RequiredXp":12},{"Level":12,"RequiredXp":13},{"Level":13,"RequiredXp":14},{"Level":14,"RequiredXp":15},{"Level":15,"RequiredXp":16},{"Level":16,"RequiredXp":17},{"Level":17,"RequiredXp":18},{"Level":18,"RequiredXp":19},{"Level":19,"RequiredXp":20},{"Level":20,"RequiredXp":21}],"MatchmakingParams":{"PreferFullRoomsFrequency":1.0,"PreferEmptyRoomsFrequency":0.0},"DailyObjectives":[[{"type":20,"score":1},{"type":21,"score":1},{"type":22,"score":1}],[{"type":20,"score":1},{"type":21,"score":1},{"type":22,"score":1}],[{"type":20,"score":1},{"type":21,"score":1},{"type":22,"score":1}],[{"type":20,"score":1},{"type":21,"score":1},{"type":22,"score":1}],[{"type":20,"score":1},{"type":21,"score":1},{"type":22,"score":1}],[{"type":20,"score":1},{"type":21,"score":1},{"type":22,"score":1}],[{"type":20,"score":1},{"type":21,"score":1},{"type":22,"score":1}]],"ConfigTable":[{"Key":"Gift.DropChance","Value":"0.5"},{"Key":"Gift.XP","Value":"0.5"}],"PhotonConfig":{"CloudRegion":"us","CrcCheckEnabled":false,"EnableServerTracingAfterDisconnect":false}} 2 | -------------------------------------------------------------------------------- /Download/consumables.txt: -------------------------------------------------------------------------------- 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":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}] 2 | -------------------------------------------------------------------------------- /Download/equipment.txt: -------------------------------------------------------------------------------- 1 | [{"PrefabName":"[PaintballAssaultRifle]","ModificationGuid":"357fe573-fee7-467f-93a7-5e61afb024b8","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballAssaultRifle]","ModificationGuid":"49d88b73-3c8a-4f4d-8a69-128fa5474e82","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballAssaultRifle]","ModificationGuid":"3aaef60d-142f-4a0a-bea3-f5d99ab62dd5","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballAssaultRifle]","ModificationGuid":"996662ad-631d-4a81-8a8b-74ace4833279","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballAssaultRifle]","ModificationGuid":"c458a6ae-a1ea-468a-89b8-4c9a85cd3cde","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[ShareCamera]","ModificationGuid":"e2844f84-ab44-4141-9a0a-bd5da7caa4f6","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[SoccerShield]","ModificationGuid":"fae1abe3-6bfd-4407-b34e-e2c1b3b03032","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[DodgeballBall]","ModificationGuid":"f55dda45-c17e-4237-a638-9f326d306e7d","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[DodgeballBall]","ModificationGuid":"6ff63f8f-4bcc-4b69-8d89-8b886d19e239","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[DodgeballBall]","ModificationGuid":"6261a846-e4f8-4e6e-8aa0-68f38cd788d4","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballGrenadeLauncher]","ModificationGuid":"f34e6270-bcfa-42f2-80d5-69c1bbd34983","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballGrenadeLauncher]","ModificationGuid":"502f40c3-1c00-4c3f-bfc7-c897df8af37e","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Grenade]","ModificationGuid":"993f8b81-cb2e-44e4-88a1-b841af1f0e69","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[QuestSword]","ModificationGuid":"eecdf81c-7ba2-40ba-9d6c-f461708cce16","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[QuestSword]","ModificationGuid":"3e46fb2d-bb3f-42ed-83ef-f5716860725c","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[QuestSword]","ModificationGuid":"f03dee6a-79b8-4906-9abb-a821748d97a9","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[QuestSword]","ModificationGuid":"431567d2-4df2-43eb-b632-3d79aa7c013c","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[QuestSword]","ModificationGuid":"0ee04d78-5a17-4a38-ae67-b576a41fc200","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Crossbow_Hunter]","ModificationGuid":"d217ee4c-22f3-4f33-bf7c-9d4ee9c30e29","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintBallRifleScoped]","ModificationGuid":"d906709c-e08e-4273-8ba1-e072e0d25957","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballRifleScoped]","ModificationGuid":"6a6b0ecf-286d-4361-92ff-7027c440dc3c","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[MakerPen]","ModificationGuid":"204f84a2-6ee2-45e1-9168-87f43e893e32","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[MakerPen]","ModificationGuid":"79090a4b-e191-4788-9210-88a7bdf6d828","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Longbow]","ModificationGuid":"e738d936-0f75-423b-88bb-f626ffba573a","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Longbow]","ModificationGuid":"52c6a138-10c5-4aab-9c3b-04b50c9a2dc5","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Longbow]","ModificationGuid":"f5901f11-b315-4261-9474-2da207e4a229","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Crossbow]","ModificationGuid":"1d09c8e4-78c2-49f9-acb7-8f0b3ff6a5ed","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Crossbow]","ModificationGuid":"6bba14be-f207-4933-b09f-f0fd3e28c10c","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Crossbow]","ModificationGuid":"c4d70545-cdf1-4fb1-924b-613de0327faf","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Quest_SciFi_RailGun]","ModificationGuid":"46977ca7-ee75-4e2a-b8aa-0763879f8a96","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Quest_SciFi_RailGun]","ModificationGuid":"63a867d7-ccea-4905-b6e0-e6dcfba06f9e","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Quest_SciFi_Shotgun]","ModificationGuid":"cd497ae2-6382-42f2-9f92-93d5141588c3","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Quest_SciFi_Shotgun]","ModificationGuid":"bb36b722-16dc-4172-b61f-237dc1240040","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Quest_SciFi_Shotgun]","ModificationGuid":"83d7cca0-2c5d-41b2-a5b2-f79fd89f3037","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Quest_SciFi_Shotgun]","ModificationGuid":"55a9c1e8-07e2-4457-86f2-75fd5e67b1f3","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Quest_SciFi_AutomaticGun]","ModificationGuid":"bafacc36-02c6-408c-a3f5-8c2aa07a68db","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Quest_SciFi_AutomaticGun]","ModificationGuid":"546b3a57-13d4-4c35-ab3a-bbb7d466f0b8","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Quest_SciFi_Pistol]","ModificationGuid":"8a2a3219-fed0-4403-9061-451d162307c2","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Quest_SciFi_Pistol]","ModificationGuid":"89b1fbbc-e7be-440b-8b22-8fd379c1a568","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Quest_SciFi_Pistol]","ModificationGuid":"db91b61b-ab32-4895-8f5a-0212c1283cbb","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Quest_SciFi_Pistol]","ModificationGuid":"33a7a3dc-5266-4075-b56f-5eaa2c400e9f","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[QuestShield]","ModificationGuid":"439be0eb-4d1e-4c80-97f8-b4636d0ce94b","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[QuestShield]","ModificationGuid":"eb90210a-6d2d-4429-b1e0-3285333685fc","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[QuestShield]","ModificationGuid":"a363ba1b-2f70-4c5f-943a-f45cfa59122b","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[QuestShield]","ModificationGuid":"affbab2d-3200-4512-a140-685fdc5570c6","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[QuestShield]","ModificationGuid":"735b06c6-1b78-4f60-9291-a414a96cd228","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[QuestShield]","ModificationGuid":"93f5418e-a03d-4074-804c-daa0e374dd9f","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[QuestShield]","ModificationGuid":"2389fce4-3ab2-4e05-918c-845eb8538bed","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[QuestShield]","ModificationGuid":"a9a3292c-8ccf-4564-aeb1-124c52057ef2","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballShield]","ModificationGuid":"a6c869d9-8f30-4ce6-a7ea-cb7ea9f9d492","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballShield]","ModificationGuid":"fd367329-b8b2-4d44-825a-da16092751e3","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballShield]","ModificationGuid":"174adb53-bc6e-4fcf-b03d-a00fc3deeb49","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Basketball]","ModificationGuid":"56c9a6db-0f54-482c-aba9-e265f899771d","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Basketball]","ModificationGuid":"56582acf-c7a0-4aff-b3aa-2fdea4d254a3","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Basketball]","ModificationGuid":"d6d22997-fe39-4ffa-b1b3-4955368c829a","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Basketball]","ModificationGuid":"e6899422-ab2f-4bd9-8e98-aef950ec27b6","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[Basketball]","ModificationGuid":"5dcf8a2e-6fa6-4007-ac1e-73dd53c4c247","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballShotgun]","ModificationGuid":"053c24a0-82a2-43f5-b0e7-e56db05a10ba","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballShotgun]","ModificationGuid":"f27af5d7-c741-4457-8c98-8e8791f1a41c","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballShotgun]","ModificationGuid":"61e49c13-b414-425f-8e8b-bdcf3d12a5bf","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballGun]","ModificationGuid":"b8d5612b-2c6f-46d6-9412-decddac7d4c1","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballGun]","ModificationGuid":"ec5ef0f3-c072-45ec-bb8f-3781fb16e067","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballGun]","ModificationGuid":"36751c4a-86a9-40e1-bef2-84f962ab678d","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballGun]","ModificationGuid":"4aff20ee-0b20-434b-a030-d3e1764fe4e7","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballGun]","ModificationGuid":"7ef5d1d9-24db-428c-85e0-107c1bfcc026","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballGun]","ModificationGuid":"33c84c50-7c2e-4a80-ad06-79c4f20f829e","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[PaintballGun]","ModificationGuid":"bc4254be-60e0-4cc5-a233-6a0bd4137118","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[DiscGolfDisc]","ModificationGuid":"5d3c3b16-713e-43d8-88e0-7633063091da","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[DiscGolfDisc]","ModificationGuid":"bd3f6aa5-c6e0-4e06-901d-1176accf1003","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[DiscGolfDisc]","ModificationGuid":"7877964e-3a2b-4818-8513-0e26a707bd7c","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[DiscGolfDisc]","ModificationGuid":"9d2a3618-12b3-4ca0-be59-ed15d7926d77","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[DiscGolfDisc]","ModificationGuid":"2b70a76e-6f48-402e-90ff-40b06aa23eb8","UnlockedLevel":1,"Favorited":false},{"PrefabName":"[DiscGolfDisc]","ModificationGuid":"19ef59c7-f74b-4c63-935a-1d4b1abd8518","UnlockedLevel":1,"Favorited":false}] 2 | -------------------------------------------------------------------------------- /Download/facefeaturesadd.txt: -------------------------------------------------------------------------------- 1 | ,"FaceFeatures":""} 2 | -------------------------------------------------------------------------------- /Download/gameconfigs.txt: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "Key": "Gift.MaxDaily", 4 | "Value": "100", 5 | "StartTime": null, 6 | "EndTime": null 7 | }, 8 | { 9 | "Key": "Gift.Falloff", 10 | "Value": "1", 11 | "StartTime": null, 12 | "EndTime": null 13 | }, 14 | { 15 | "Key": "Gift.DropChance", 16 | "Value": "100", 17 | "StartTime": null, 18 | "EndTime": null 19 | }, 20 | { 21 | "Key": "UseHeartbeatWebSocket", 22 | "Value": "0", 23 | "StartTime": null, 24 | "EndTime": null 25 | }, 26 | { 27 | "Key": "Screens.ForceVerification", 28 | "Value": "1", 29 | "StartTime": null, 30 | "EndTime": null 31 | }, 32 | { 33 | "Key": "Screens.ForceVerification", 34 | "Value": "1", 35 | "StartTime": null, 36 | "EndTime": null 37 | }, 38 | { 39 | "Key": "forceRegistration", 40 | "Value": "0", 41 | "StartTime": null, 42 | "EndTime": null 43 | }, 44 | { 45 | "Key": "Door.Creative.Query", 46 | "Value": "#puzzle", 47 | "StartTime": null, 48 | "EndTime": null 49 | }, 50 | { 51 | "Key": "Door.Creative.Title", 52 | "Value": "PUZZLE", 53 | "StartTime": null, 54 | "EndTime": null 55 | }, 56 | { 57 | "Key": "Door.Featured.Query", 58 | "Value": "#featured", 59 | "StartTime": null, 60 | "EndTime": null 61 | }, 62 | { 63 | "Key": "Door.Featured.Title", 64 | "Value": "Featured", 65 | "StartTime": null, 66 | "EndTime": null 67 | }, 68 | { 69 | "Key": "Door.Quests.Query", 70 | "Value": "#quest", 71 | "StartTime": null, 72 | "EndTime": null 73 | }, 74 | { 75 | "Key": "Door.Quests.Title", 76 | "Value": "QUESTS", 77 | "StartTime": null, 78 | "EndTime": null 79 | }, 80 | { 81 | "Key": "Door.Shooters.Query", 82 | "Value": "#pvp #rro", 83 | "StartTime": null, 84 | "EndTime": null 85 | }, 86 | { 87 | "Key": "Door.Shooters.Title", 88 | "Value": "PVP", 89 | "StartTime": null, 90 | "EndTime": null 91 | }, 92 | { 93 | "Key": "Door.Sports.Query", 94 | "Value": "#sport", 95 | "StartTime": null, 96 | "EndTime": null 97 | }, 98 | { 99 | "Key": "Door.Sports.Title", 100 | "Value": "SPORTS & PVP", 101 | "StartTime": null, 102 | "EndTime": null 103 | } 104 | ] 105 | -------------------------------------------------------------------------------- /Download/profileimage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/recroom2016/OpenRec/5b97080e3a5395ae594021aae998095515c1874e/Download/profileimage.png -------------------------------------------------------------------------------- /Download/storefront2.txt: -------------------------------------------------------------------------------- 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}]}]} 2 | -------------------------------------------------------------------------------- /Download/version.txt: -------------------------------------------------------------------------------- 1 | 0.6.95 2 | -------------------------------------------------------------------------------- /Events.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Newtonsoft.Json; 4 | 5 | namespace api2018 6 | { 7 | // Token: 0x0200001F RID: 31 8 | internal class Events 9 | { 10 | // Token: 0x17000038 RID: 56 11 | // (get) Token: 0x060000AE RID: 174 RVA: 0x000024D4 File Offset: 0x000006D4 12 | // (set) Token: 0x060000AF RID: 175 RVA: 0x000024DC File Offset: 0x000006DC 13 | public long EventId { get; set; } 14 | 15 | // Token: 0x17000039 RID: 57 16 | // (get) Token: 0x060000B0 RID: 176 RVA: 0x000024E5 File Offset: 0x000006E5 17 | // (set) Token: 0x060000B1 RID: 177 RVA: 0x000024ED File Offset: 0x000006ED 18 | public string Name { get; set; } 19 | 20 | // Token: 0x1700003A RID: 58 21 | // (get) Token: 0x060000B2 RID: 178 RVA: 0x000024F6 File Offset: 0x000006F6 22 | // (set) Token: 0x060000B3 RID: 179 RVA: 0x000024FE File Offset: 0x000006FE 23 | public string Description { get; set; } 24 | 25 | // Token: 0x1700003B RID: 59 26 | // (get) Token: 0x060000B4 RID: 180 RVA: 0x00002507 File Offset: 0x00000707 27 | // (set) Token: 0x060000B5 RID: 181 RVA: 0x0000250F File Offset: 0x0000070F 28 | public DateTime StartTime { get; set; } 29 | 30 | // Token: 0x1700003C RID: 60 31 | // (get) Token: 0x060000B6 RID: 182 RVA: 0x00002518 File Offset: 0x00000718 32 | // (set) Token: 0x060000B7 RID: 183 RVA: 0x00002520 File Offset: 0x00000720 33 | public DateTime EndTime { get; set; } 34 | 35 | // Token: 0x1700003D RID: 61 36 | // (get) Token: 0x060000B8 RID: 184 RVA: 0x00002529 File Offset: 0x00000729 37 | // (set) Token: 0x060000B9 RID: 185 RVA: 0x00002531 File Offset: 0x00000731 38 | public string PosterImageName { get; set; } 39 | 40 | // Token: 0x1700003E RID: 62 41 | // (get) Token: 0x060000BA RID: 186 RVA: 0x0000253A File Offset: 0x0000073A 42 | // (set) Token: 0x060000BB RID: 187 RVA: 0x00002542 File Offset: 0x00000742 43 | public long CreatorPlayerId { get; set; } 44 | 45 | // Token: 0x060000BC RID: 188 RVA: 0x00004BE8 File Offset: 0x00002DE8 46 | public static string list() 47 | { 48 | List value = new List(); 49 | return JsonConvert.SerializeObject(value); 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /GameSessions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Newtonsoft.Json; 3 | using api; 4 | using server; 5 | using System.IO; 6 | namespace gamesesh 7 | 8 | { 9 | // Token: 0x02000020 RID: 32 10 | public class GameSessions 11 | { 12 | // Token: 0x060000BE RID: 190 RVA: 0x00004C08 File Offset: 0x00002E08 13 | public static string JoinRandom(string jsonData) 14 | { 15 | long? creatorid = 1243409L; 16 | long gamesessionid = long.Parse(start.Program.version + "1"); 17 | Console.WriteLine("OpenRec GameSession Room"); 18 | GameSessions.JoinRandomRequest joinRandomRequest = JsonConvert.DeserializeObject(jsonData); 19 | if (File.ReadAllText("SaveData\\App\\privaterooms.txt") == "Enabled") 20 | { 21 | gamesessionid = new Random().Next(0, 99); 22 | } 23 | if (start.Program.version == "2017") 24 | { 25 | creatorid = (long?)APIServer.CachedPlayerID; 26 | } 27 | if (start.Program.bannedflag == true) 28 | { 29 | gamesessionid = 100L; 30 | } 31 | Config.localGameSession = new GameSessions.SessionInstance 32 | { 33 | GameSessionId = gamesessionid, 34 | RegionId = "us", 35 | RoomId = joinRandomRequest.ActivityLevelIds[0], 36 | RecRoomId = null, 37 | EventId = null, 38 | CreatorPlayerId = creatorid, 39 | Name = "OpenRec Room", 40 | ActivityLevelId = joinRandomRequest.ActivityLevelIds[0], 41 | Private = false, 42 | Sandbox = false, 43 | SupportsScreens = true, 44 | SupportsVR = true, 45 | GameInProgress = false, 46 | MaxCapacity = 20, 47 | IsFull = false 48 | }; 49 | 50 | return JsonConvert.SerializeObject(new GameSessions.JoinResult 51 | { 52 | Result = 0, 53 | GameSession = Config.localGameSession 54 | }); 55 | } 56 | 57 | // Token: 0x060000BF RID: 191 RVA: 0x0000254B File Offset: 0x0000074B 58 | public static string StatusSession() 59 | { 60 | return JsonConvert.SerializeObject(new GameSessions.PlayerStatus 61 | { 62 | PlayerId = Convert.ToUInt64(File.ReadAllText("SaveData\\Profile\\userid.txt")), 63 | IsOnline = true, 64 | InScreenMode = false, 65 | GameSession = Config.localGameSession 66 | }); 67 | } 68 | 69 | // Token: 0x060000C0 RID: 192 RVA: 0x00004D24 File Offset: 0x00002F24 70 | public static string Create(string jsonData) 71 | { 72 | long gamesessionid = 20161L; 73 | Console.WriteLine("OpenRec GameSession Custom Room"); 74 | if (File.ReadAllText("SaveData\\App\\privaterooms.txt") == "Enabled") 75 | { 76 | gamesessionid = new Random().Next(0, 99); 77 | } 78 | if (start.Program.bannedflag == true) 79 | { 80 | gamesessionid = 100L; 81 | } 82 | GameSessions.CreateRequest createRequest = JsonConvert.DeserializeObject(jsonData); 83 | Config.localGameSession = new GameSessions.SessionInstance 84 | { 85 | GameSessionId = gamesessionid, 86 | RegionId = "us", 87 | RoomId = createRequest.ActivityLevelId, 88 | RecRoomId = null, 89 | EventId = null, 90 | CreatorPlayerId = (long?)APIServer.CachedPlayerID, 91 | Name = "OpenRec Custom Room", 92 | ActivityLevelId = createRequest.ActivityLevelId, 93 | Private = false, 94 | Sandbox = true, 95 | SupportsScreens = true, 96 | SupportsVR = true, 97 | GameInProgress = false, 98 | MaxCapacity = 20, 99 | IsFull = false 100 | }; 101 | return JsonConvert.SerializeObject(new GameSessions.JoinResult 102 | { 103 | Result = 0, 104 | GameSession = Config.localGameSession 105 | }); 106 | } 107 | 108 | // Token: 0x060000C1 RID: 193 RVA: 0x0000257B File Offset: 0x0000077B 109 | public static GameSessions.PlayerStatus StatusSessionInstance() 110 | { 111 | return new GameSessions.PlayerStatus 112 | { 113 | PlayerId = Convert.ToUInt64(File.ReadAllText("SaveData\\Profile\\userid.txt")), 114 | IsOnline = true, 115 | InScreenMode = false, 116 | GameSession = Config.localGameSession 117 | }; 118 | } 119 | 120 | // Token: 0x02000021 RID: 33 121 | public enum JoinResultIDs 122 | { 123 | // Token: 0x0400005E RID: 94 124 | Success, 125 | // Token: 0x0400005F RID: 95 126 | NoSuchGame, 127 | // Token: 0x04000060 RID: 96 128 | PlayerNotOnline, 129 | // Token: 0x04000061 RID: 97 130 | InsufficientSpace, 131 | // Token: 0x04000062 RID: 98 132 | EventNotStarted, 133 | // Token: 0x04000063 RID: 99 134 | EventAlreadyFinished, 135 | // Token: 0x04000064 RID: 100 136 | EventCreatorNotReady, 137 | // Token: 0x04000065 RID: 101 138 | BlockedFromRoom, 139 | // Token: 0x04000066 RID: 102 140 | ProfileLocked, 141 | // Token: 0x04000067 RID: 103 142 | NoBirthday, 143 | // Token: 0x04000068 RID: 104 144 | MarkedForDelete, 145 | // Token: 0x04000069 RID: 105 146 | JuniorNotAllowed, 147 | // Token: 0x0400006A RID: 106 148 | Banned, 149 | // Token: 0x0400006B RID: 107 150 | NoSuchRoom = 20, 151 | // Token: 0x0400006C RID: 108 152 | RoomCreatorNotReady, 153 | // Token: 0x0400006D RID: 109 154 | RoomIsNotActive, 155 | // Token: 0x0400006E RID: 110 156 | RoomBlockedByCreator, 157 | // Token: 0x0400006F RID: 111 158 | RoomBlockingCreator, 159 | // Token: 0x04000070 RID: 112 160 | RoomIsPrivate 161 | } 162 | 163 | // Token: 0x02000022 RID: 34 164 | public class PlayerStatus 165 | { 166 | // Token: 0x1700003F RID: 63 167 | // (get) Token: 0x060000C3 RID: 195 RVA: 0x000025A6 File Offset: 0x000007A6 168 | // (set) Token: 0x060000C4 RID: 196 RVA: 0x000025AE File Offset: 0x000007AE 169 | public ulong PlayerId { get; set; } 170 | 171 | // Token: 0x17000040 RID: 64 172 | // (get) Token: 0x060000C5 RID: 197 RVA: 0x000025B7 File Offset: 0x000007B7 173 | // (set) Token: 0x060000C6 RID: 198 RVA: 0x000025BF File Offset: 0x000007BF 174 | public bool IsOnline { get; set; } 175 | 176 | // Token: 0x17000041 RID: 65 177 | // (get) Token: 0x060000C7 RID: 199 RVA: 0x000025C8 File Offset: 0x000007C8 178 | // (set) Token: 0x060000C8 RID: 200 RVA: 0x000025D0 File Offset: 0x000007D0 179 | public bool InScreenMode { get; set; } 180 | 181 | // Token: 0x17000042 RID: 66 182 | // (get) Token: 0x060000C9 RID: 201 RVA: 0x000025D9 File Offset: 0x000007D9 183 | // (set) Token: 0x060000CA RID: 202 RVA: 0x000025E1 File Offset: 0x000007E1 184 | public GameSessions.SessionInstance GameSession { get; set; } 185 | } 186 | 187 | // Token: 0x02000023 RID: 35 188 | public class SessionInstance 189 | { 190 | // Token: 0x17000043 RID: 67 191 | // (get) Token: 0x060000CC RID: 204 RVA: 0x000025EA File Offset: 0x000007EA 192 | // (set) Token: 0x060000CD RID: 205 RVA: 0x000025F2 File Offset: 0x000007F2 193 | public long GameSessionId { get; set; } 194 | 195 | // Token: 0x17000044 RID: 68 196 | // (get) Token: 0x060000CE RID: 206 RVA: 0x000025FB File Offset: 0x000007FB 197 | // (set) Token: 0x060000CF RID: 207 RVA: 0x00002603 File Offset: 0x00000803 198 | public string RegionId { get; set; } 199 | 200 | // Token: 0x17000045 RID: 69 201 | // (get) Token: 0x060000D0 RID: 208 RVA: 0x0000260C File Offset: 0x0000080C 202 | // (set) Token: 0x060000D1 RID: 209 RVA: 0x00002614 File Offset: 0x00000814 203 | public string RoomId { get; set; } 204 | 205 | // Token: 0x17000046 RID: 70 206 | // (get) Token: 0x060000D2 RID: 210 RVA: 0x0000261D File Offset: 0x0000081D 207 | // (set) Token: 0x060000D3 RID: 211 RVA: 0x00002625 File Offset: 0x00000825 208 | public long? EventId { get; set; } 209 | 210 | // Token: 0x17000047 RID: 71 211 | // (get) Token: 0x060000D4 RID: 212 RVA: 0x0000262E File Offset: 0x0000082E 212 | // (set) Token: 0x060000D5 RID: 213 RVA: 0x00002636 File Offset: 0x00000836 213 | public long? RecRoomId { get; set; } 214 | 215 | // Token: 0x17000048 RID: 72 216 | // (get) Token: 0x060000D6 RID: 214 RVA: 0x0000263F File Offset: 0x0000083F 217 | // (set) Token: 0x060000D7 RID: 215 RVA: 0x00002647 File Offset: 0x00000847 218 | public long? CreatorPlayerId { get; set; } 219 | 220 | // Token: 0x17000049 RID: 73 221 | // (get) Token: 0x060000D8 RID: 216 RVA: 0x00002650 File Offset: 0x00000850 222 | // (set) Token: 0x060000D9 RID: 217 RVA: 0x00002658 File Offset: 0x00000858 223 | public string Name { get; set; } 224 | 225 | // Token: 0x1700004A RID: 74 226 | // (get) Token: 0x060000DA RID: 218 RVA: 0x00002661 File Offset: 0x00000861 227 | // (set) Token: 0x060000DB RID: 219 RVA: 0x00002669 File Offset: 0x00000869 228 | public string ActivityLevelId { get; set; } 229 | 230 | // Token: 0x1700004B RID: 75 231 | // (get) Token: 0x060000DC RID: 220 RVA: 0x00002672 File Offset: 0x00000872 232 | // (set) Token: 0x060000DD RID: 221 RVA: 0x0000267A File Offset: 0x0000087A 233 | public bool Private { get; set; } 234 | 235 | // Token: 0x1700004C RID: 76 236 | // (get) Token: 0x060000DE RID: 222 RVA: 0x00002683 File Offset: 0x00000883 237 | // (set) Token: 0x060000DF RID: 223 RVA: 0x0000268B File Offset: 0x0000088B 238 | public bool Sandbox { get; set; } 239 | 240 | // Token: 0x1700004D RID: 77 241 | // (get) Token: 0x060000E0 RID: 224 RVA: 0x00002694 File Offset: 0x00000894 242 | // (set) Token: 0x060000E1 RID: 225 RVA: 0x0000269C File Offset: 0x0000089C 243 | public bool SupportsVR { get; set; } 244 | 245 | // Token: 0x1700004E RID: 78 246 | // (get) Token: 0x060000E2 RID: 226 RVA: 0x000026A5 File Offset: 0x000008A5 247 | // (set) Token: 0x060000E3 RID: 227 RVA: 0x000026AD File Offset: 0x000008AD 248 | public bool SupportsScreens { get; set; } 249 | 250 | // Token: 0x1700004F RID: 79 251 | // (get) Token: 0x060000E4 RID: 228 RVA: 0x000026B6 File Offset: 0x000008B6 252 | // (set) Token: 0x060000E5 RID: 229 RVA: 0x000026BE File Offset: 0x000008BE 253 | public bool GameInProgress { get; set; } 254 | 255 | // Token: 0x17000050 RID: 80 256 | // (get) Token: 0x060000E6 RID: 230 RVA: 0x000026C7 File Offset: 0x000008C7 257 | // (set) Token: 0x060000E7 RID: 231 RVA: 0x000026CF File Offset: 0x000008CF 258 | public int MaxCapacity { get; set; } 259 | 260 | // Token: 0x17000051 RID: 81 261 | // (get) Token: 0x060000E8 RID: 232 RVA: 0x000026D8 File Offset: 0x000008D8 262 | // (set) Token: 0x060000E9 RID: 233 RVA: 0x000026E0 File Offset: 0x000008E0 263 | public bool IsFull { get; set; } 264 | } 265 | 266 | // Token: 0x02000024 RID: 36 267 | public class JoinRandomRequest 268 | { 269 | // Token: 0x17000052 RID: 82 270 | // (get) Token: 0x060000EB RID: 235 RVA: 0x000026E9 File Offset: 0x000008E9 271 | // (set) Token: 0x060000EC RID: 236 RVA: 0x000026F1 File Offset: 0x000008F1 272 | public string[] ActivityLevelIds { get; set; } 273 | 274 | // Token: 0x17000053 RID: 83 275 | // (get) Token: 0x060000ED RID: 237 RVA: 0x000026FA File Offset: 0x000008FA 276 | // (set) Token: 0x060000EE RID: 238 RVA: 0x00002702 File Offset: 0x00000902 277 | public ulong[] ExpectedPlayerIds { get; set; } 278 | 279 | // Token: 0x17000054 RID: 84 280 | // (get) Token: 0x060000EF RID: 239 RVA: 0x0000270B File Offset: 0x0000090B 281 | // (set) Token: 0x060000F0 RID: 240 RVA: 0x00002713 File Offset: 0x00000913 282 | public GameSessions.RegionPing[] RegionPings { get; set; } 283 | } 284 | 285 | public class JoinRoomRequest2 286 | { 287 | // Token: 0x17000022 RID: 34 288 | // (get) Token: 0x06000060 RID: 96 RVA: 0x00002345 File Offset: 0x00000545 289 | // (set) Token: 0x06000061 RID: 97 RVA: 0x0000234D File Offset: 0x0000054D 290 | public ulong[] ExpectedPlayerIds { get; set; } 291 | 292 | // Token: 0x17000023 RID: 35 293 | // (get) Token: 0x06000062 RID: 98 RVA: 0x00002356 File Offset: 0x00000556 294 | // (set) Token: 0x06000063 RID: 99 RVA: 0x0000235E File Offset: 0x0000055E 295 | public GameSessions.RegionPing[] RegionPings { get; set; } 296 | 297 | // Token: 0x17000024 RID: 36 298 | // (get) Token: 0x06000064 RID: 100 RVA: 0x00002367 File Offset: 0x00000567 299 | // (set) Token: 0x06000065 RID: 101 RVA: 0x0000236F File Offset: 0x0000056F 300 | public string[] RoomTags { get; set; } 301 | 302 | // Token: 0x17000025 RID: 37 303 | // (get) Token: 0x06000066 RID: 102 RVA: 0x00002378 File Offset: 0x00000578 304 | // (set) Token: 0x06000067 RID: 103 RVA: 0x00002380 File Offset: 0x00000580 305 | public string RoomName { get; set; } 306 | 307 | // Token: 0x17000026 RID: 38 308 | // (get) Token: 0x06000068 RID: 104 RVA: 0x00002389 File Offset: 0x00000589 309 | // (set) Token: 0x06000069 RID: 105 RVA: 0x00002391 File Offset: 0x00000591 310 | public string SceneName { get; set; } 311 | 312 | // Token: 0x17000027 RID: 39 313 | // (get) Token: 0x0600006A RID: 106 RVA: 0x0000239A File Offset: 0x0000059A 314 | // (set) Token: 0x0600006B RID: 107 RVA: 0x000023A2 File Offset: 0x000005A2 315 | public int AdditionalPlayerJoinMode { get; set; } 316 | 317 | // Token: 0x17000028 RID: 40 318 | // (get) Token: 0x0600006C RID: 108 RVA: 0x000023AB File Offset: 0x000005AB 319 | // (set) Token: 0x0600006D RID: 109 RVA: 0x000023B3 File Offset: 0x000005B3 320 | public bool Private { get; set; } 321 | } 322 | // Token: 0x02000025 RID: 37 323 | 324 | // Token: 0x02000025 RID: 37 325 | public class CreateRequest 326 | { 327 | // Token: 0x17000055 RID: 85 328 | // (get) Token: 0x060000F2 RID: 242 RVA: 0x0000271C File Offset: 0x0000091C 329 | // (set) Token: 0x060000F3 RID: 243 RVA: 0x00002724 File Offset: 0x00000924 330 | public string ActivityLevelId { get; set; } 331 | 332 | // Token: 0x17000056 RID: 86 333 | // (get) Token: 0x060000F4 RID: 244 RVA: 0x0000272D File Offset: 0x0000092D 334 | // (set) Token: 0x060000F5 RID: 245 RVA: 0x00002735 File Offset: 0x00000935 335 | public ulong[] ExpectedPlayerIds { get; set; } 336 | 337 | // Token: 0x17000057 RID: 87 338 | // (get) Token: 0x060000F6 RID: 246 RVA: 0x0000273E File Offset: 0x0000093E 339 | // (set) Token: 0x060000F7 RID: 247 RVA: 0x00002746 File Offset: 0x00000946 340 | public GameSessions.RegionPing[] RegionPings { get; set; } 341 | 342 | // Token: 0x17000058 RID: 88 343 | // (get) Token: 0x060000F8 RID: 248 RVA: 0x0000274F File Offset: 0x0000094F 344 | // (set) Token: 0x060000F9 RID: 249 RVA: 0x00002757 File Offset: 0x00000957 345 | public bool IsSandbox { get; set; } 346 | } 347 | 348 | // Token: 0x02000026 RID: 38 349 | public class RegionPing 350 | { 351 | // Token: 0x17000059 RID: 89 352 | // (get) Token: 0x060000FB RID: 251 RVA: 0x00002760 File Offset: 0x00000960 353 | // (set) Token: 0x060000FC RID: 252 RVA: 0x00002768 File Offset: 0x00000968 354 | public string Region { get; set; } 355 | 356 | // Token: 0x1700005A RID: 90 357 | // (get) Token: 0x060000FD RID: 253 RVA: 0x00002771 File Offset: 0x00000971 358 | // (set) Token: 0x060000FE RID: 254 RVA: 0x00002779 File Offset: 0x00000979 359 | public int Ping { get; set; } 360 | } 361 | 362 | // Token: 0x02000027 RID: 39 363 | private class JoinResult 364 | { 365 | // Token: 0x1700005B RID: 91 366 | // (get) Token: 0x06000100 RID: 256 RVA: 0x00002782 File Offset: 0x00000982 367 | // (set) Token: 0x06000101 RID: 257 RVA: 0x0000278A File Offset: 0x0000098A 368 | public int Result { get; set; } 369 | 370 | // Token: 0x1700005C RID: 92 371 | // (get) Token: 0x06000102 RID: 258 RVA: 0x00002793 File Offset: 0x00000993 372 | // (set) Token: 0x06000103 RID: 259 RVA: 0x0000279B File Offset: 0x0000099B 373 | public GameSessions.SessionInstance GameSession { get; set; } 374 | } 375 | } 376 | } 377 | -------------------------------------------------------------------------------- /GetCachedLogin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Newtonsoft.Json; 4 | using api2018; 5 | using System.IO; 6 | 7 | namespace api2018 8 | { 9 | // Token: 0x02000076 RID: 118 10 | public class getcachedlogins 11 | { 12 | // Token: 0x0600033C RID: 828 RVA: 0x00008F30 File Offset: 0x00007130 13 | public static string GetDebugLogin(ulong userid, ulong platformid) 14 | { 15 | int level = int.Parse(File.ReadAllText("SaveData\\Profile\\level.txt")); 16 | string name = File.ReadAllText("SaveData\\Profile\\username.txt"); 17 | return JsonConvert.SerializeObject(new List 18 | { 19 | new getcachedlogins 20 | { 21 | Id = userid, 22 | Username = name, 23 | DisplayName = name, 24 | XP = 9999, 25 | Level = level, 26 | RegistrationStatus = 2, 27 | Developer = true, 28 | CanReceiveInvites = false, 29 | ProfileImageName = name, 30 | JuniorProfile = false, 31 | ForceJuniorImages = false, 32 | PendingJunior = false, 33 | HasBirthday = true, 34 | AvoidJuniors = true, 35 | PlayerReputation = new mPlayerReputation 36 | { 37 | Noteriety = 0, 38 | CheerCredit = 20, 39 | CheerGeneral = 10, 40 | CheerHelpful = 10, 41 | CheerGreatHost = 10, 42 | CheerSportsman = 10, 43 | CheerCreative = 10, 44 | SubscriberCount = 0, 45 | SubscribedCount = 0, 46 | SelectedCheer = 0 47 | }, 48 | PlatformIds = new List 49 | { 50 | new mPlatformID 51 | { 52 | Platform = 0, 53 | PlatformId = platformid 54 | } 55 | } 56 | } 57 | 58 | }); 59 | } 60 | 61 | // Token: 0x17000135 RID: 309 62 | // (get) Token: 0x0600033D RID: 829 RVA: 0x0000395C File Offset: 0x00001B5C 63 | // (set) Token: 0x0600033E RID: 830 RVA: 0x00003964 File Offset: 0x00001B64 64 | public ulong Id { get; set; } 65 | 66 | // Token: 0x17000136 RID: 310 67 | // (get) Token: 0x0600033F RID: 831 RVA: 0x0000396D File Offset: 0x00001B6D 68 | // (set) Token: 0x06000340 RID: 832 RVA: 0x00003975 File Offset: 0x00001B75 69 | public string Username { get; set; } 70 | 71 | // Token: 0x17000137 RID: 311 72 | // (get) Token: 0x06000341 RID: 833 RVA: 0x0000397E File Offset: 0x00001B7E 73 | // (set) Token: 0x06000342 RID: 834 RVA: 0x00003986 File Offset: 0x00001B86 74 | public string DisplayName { get; set; } 75 | 76 | // Token: 0x17000138 RID: 312 77 | // (get) Token: 0x06000343 RID: 835 RVA: 0x0000398F File Offset: 0x00001B8F 78 | // (set) Token: 0x06000344 RID: 836 RVA: 0x00003997 File Offset: 0x00001B97 79 | public int XP { get; set; } 80 | 81 | // Token: 0x17000139 RID: 313 82 | // (get) Token: 0x06000345 RID: 837 RVA: 0x000039A0 File Offset: 0x00001BA0 83 | // (set) Token: 0x06000346 RID: 838 RVA: 0x000039A8 File Offset: 0x00001BA8 84 | public int Level { get; set; } 85 | 86 | // Token: 0x1700013A RID: 314 87 | // (get) Token: 0x06000347 RID: 839 RVA: 0x000039B1 File Offset: 0x00001BB1 88 | // (set) Token: 0x06000348 RID: 840 RVA: 0x000039B9 File Offset: 0x00001BB9 89 | public int RegistrationStatus { get; set; } 90 | 91 | // Token: 0x1700013B RID: 315 92 | // (get) Token: 0x06000349 RID: 841 RVA: 0x000039C2 File Offset: 0x00001BC2 93 | // (set) Token: 0x0600034A RID: 842 RVA: 0x000039CA File Offset: 0x00001BCA 94 | public bool Developer { get; set; } 95 | 96 | // Token: 0x1700013C RID: 316 97 | // (get) Token: 0x0600034B RID: 843 RVA: 0x000039D3 File Offset: 0x00001BD3 98 | // (set) Token: 0x0600034C RID: 844 RVA: 0x000039DB File Offset: 0x00001BDB 99 | public bool CanReceiveInvites { get; set; } 100 | 101 | // Token: 0x1700013D RID: 317 102 | // (get) Token: 0x0600034D RID: 845 RVA: 0x000039E4 File Offset: 0x00001BE4 103 | // (set) Token: 0x0600034E RID: 846 RVA: 0x000039EC File Offset: 0x00001BEC 104 | public string ProfileImageName { get; set; } 105 | 106 | // Token: 0x1700013E RID: 318 107 | // (get) Token: 0x0600034F RID: 847 RVA: 0x000039F5 File Offset: 0x00001BF5 108 | // (set) Token: 0x06000350 RID: 848 RVA: 0x000039FD File Offset: 0x00001BFD 109 | public bool JuniorProfile { get; set; } 110 | 111 | // Token: 0x1700013F RID: 319 112 | // (get) Token: 0x06000351 RID: 849 RVA: 0x00003A06 File Offset: 0x00001C06 113 | // (set) Token: 0x06000352 RID: 850 RVA: 0x00003A0E File Offset: 0x00001C0E 114 | public bool ForceJuniorImages { get; set; } 115 | 116 | // Token: 0x17000140 RID: 320 117 | // (get) Token: 0x06000353 RID: 851 RVA: 0x00003A17 File Offset: 0x00001C17 118 | // (set) Token: 0x06000354 RID: 852 RVA: 0x00003A1F File Offset: 0x00001C1F 119 | public bool PendingJunior { get; set; } 120 | 121 | // Token: 0x17000141 RID: 321 122 | // (get) Token: 0x06000355 RID: 853 RVA: 0x00003A28 File Offset: 0x00001C28 123 | // (set) Token: 0x06000356 RID: 854 RVA: 0x00003A30 File Offset: 0x00001C30 124 | public bool HasBirthday { get; set; } 125 | 126 | // Token: 0x17000142 RID: 322 127 | // (get) Token: 0x06000357 RID: 855 RVA: 0x00003A39 File Offset: 0x00001C39 128 | // (set) Token: 0x06000358 RID: 856 RVA: 0x00003A41 File Offset: 0x00001C41 129 | public bool AvoidJuniors { get; set; } 130 | 131 | // Token: 0x17000143 RID: 323 132 | // (get) Token: 0x06000359 RID: 857 RVA: 0x00003A4A File Offset: 0x00001C4A 133 | // (set) Token: 0x0600035A RID: 858 RVA: 0x00003A52 File Offset: 0x00001C52 134 | public mPlayerReputation PlayerReputation { get; set; } 135 | 136 | // Token: 0x17000144 RID: 324 137 | // (get) Token: 0x0600035B RID: 859 RVA: 0x00003A5B File Offset: 0x00001C5B 138 | // (set) Token: 0x0600035C RID: 860 RVA: 0x00003A63 File Offset: 0x00001C63 139 | public List PlatformIds { get; set; } 140 | } 141 | } 142 | -------------------------------------------------------------------------------- /GetOrCreates.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using Newtonsoft.Json; 4 | 5 | namespace api2017 6 | { 7 | // Token: 0x0200003A RID: 58 8 | internal class getorcreate 9 | { 10 | public static string GetOrCreate(ulong userid) 11 | { 12 | int level = int.Parse(File.ReadAllText("SaveData\\Profile\\level.txt")); 13 | string name = File.ReadAllText("SaveData\\Profile\\username.txt"); 14 | return JsonConvert.SerializeObject(new Profiles 15 | { 16 | Id = userid, 17 | Username = name, 18 | DisplayName = name, 19 | XP = 48, 20 | Level = level, 21 | Reputation = 0, 22 | Verified = true, 23 | Developer = true, 24 | HasEmail = true, 25 | CanReceiveInvites = false, 26 | ProfileImageName = name, 27 | HasBirthday = true 28 | }); 29 | } 30 | // Token: 0x06000197 RID: 407 RVA: 0x0000550C File Offset: 0x0000370C 31 | public static string GetOrCreateArray(ulong userid) 32 | { 33 | int level = int.Parse(File.ReadAllText("SaveData\\Profile\\level.txt")); 34 | string name = File.ReadAllText("SaveData\\Profile\\username.txt"); 35 | return JsonConvert.SerializeObject(new Profiles[] 36 | { 37 | new Profiles 38 | { 39 | Id = userid, 40 | Username = name, 41 | DisplayName = name, 42 | XP = 48, 43 | Level = level, 44 | Reputation = 0, 45 | Verified = true, 46 | Developer = true, 47 | HasEmail = true, 48 | CanReceiveInvites = false, 49 | ProfileImageName = name, 50 | JuniorProfile = false, 51 | ForceJuniorImages = false, 52 | HasBirthday = true 53 | } 54 | 55 | }); 56 | } 57 | 58 | // Token: 0x06000199 RID: 409 RVA: 0x00002BBE File Offset: 0x00000DBE 59 | 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /ImageServer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Net; 4 | using System.Text; 5 | using System.Threading; 6 | using api; 7 | 8 | namespace server 9 | { 10 | // Token: 0x02000050 RID: 80 11 | internal class ImageServer 12 | { 13 | // Token: 0x06000227 RID: 551 RVA: 0x00006D1C File Offset: 0x00004F1C 14 | public ImageServer() 15 | { 16 | try 17 | { 18 | Console.WriteLine("[ImageServer.cs] has started."); 19 | new Thread(new ThreadStart(this.StartListen)).Start(); 20 | } 21 | catch (Exception ex) 22 | { 23 | Console.WriteLine("An Exception Occurred while Listening :" + ex.ToString()); 24 | } 25 | } 26 | 27 | // Token: 0x06000228 RID: 552 RVA: 0x00006D84 File Offset: 0x00004F84 28 | private void StartListen() 29 | { 30 | this.listener.Prefixes.Add("http://localhost:20182/"); 31 | for (; ; ) 32 | { 33 | 34 | this.listener.Start(); 35 | Console.WriteLine("{ImageServer.cs] is listening."); 36 | HttpListenerContext context = this.listener.GetContext(); 37 | HttpListenerRequest request = context.Request; 38 | HttpListenerResponse response = context.Response; 39 | string rawUrl = request.RawUrl; 40 | string text; 41 | byte[] i = File.ReadAllBytes("SaveData\\profileimage.png"); //File.ReadAllBytes("SaveData\\profileimage.png"); 42 | using (StreamReader streamReader = new StreamReader(request.InputStream, request.ContentEncoding)) 43 | { 44 | text = streamReader.ReadToEnd(); 45 | } 46 | if (rawUrl.StartsWith("/alt/")) 47 | { 48 | i = File.ReadAllBytes("SaveData\\profileimage.png"); 49 | } 50 | else if (rawUrl.StartsWith("/" + File.ReadAllText("SaveData\\Profile\\username.txt"))) 51 | { 52 | i = File.ReadAllBytes("SaveData\\profileimage.png"); 53 | } 54 | else if (rawUrl.StartsWith("//room/")) 55 | { 56 | i = new WebClient().DownloadData("https://cdn.rec.net" + rawUrl.Remove(0, 1)); 57 | } 58 | else if (rawUrl.StartsWith("//data/")) 59 | { 60 | i = new WebClient().DownloadData("https://cdn.rec.net" + rawUrl.Remove(0, 1)); 61 | } 62 | else 63 | { 64 | try 65 | { 66 | i = new WebClient().DownloadData("https://img.rec.net" + rawUrl); 67 | } 68 | catch 69 | { 70 | Console.WriteLine("[ImageServer.cs] Image not found on img.rec.net."); 71 | } 72 | } 73 | if (rawUrl.StartsWith("/CustomRoom.png")) 74 | { 75 | try 76 | { 77 | i = new WebClient().DownloadData("https://img.rec.net/" + File.ReadAllText("SaveData\\Rooms\\Downloaded\\imagename.txt")); 78 | } 79 | catch 80 | { 81 | Console.WriteLine("[ImageServer.cs] Image not found on img.rec.net."); 82 | i = new WebClient().DownloadData("https://img.rec.net/DefaultRoomImage.jpg"); 83 | } 84 | } 85 | Console.WriteLine("Image Requested: " + rawUrl); 86 | Console.WriteLine("Image Data: " + text); 87 | Console.WriteLine("Image Response: "); 88 | byte[] bytes = i; 89 | response.ContentLength64 = (long)bytes.Length; 90 | Stream outputStream = response.OutputStream; 91 | outputStream.Write(bytes, 0, bytes.Length); 92 | Thread.Sleep(1); 93 | outputStream.Close(); 94 | this.listener.Stop(); 95 | } 96 | } 97 | public static string VersionCheckResponse = "{\"ValidVersion\":true}"; 98 | public static string BlankResponse = ""; 99 | 100 | private HttpListener listener = new HttpListener(); 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /Launcher/ProfileComputer_Background01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/recroom2016/OpenRec/5b97080e3a5395ae594021aae998095515c1874e/Launcher/ProfileComputer_Background01.png -------------------------------------------------------------------------------- /Launcher/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/recroom2016/OpenRec/5b97080e3a5395ae594021aae998095515c1874e/Launcher/Untitled.png -------------------------------------------------------------------------------- /Launcher/changelog.txt: -------------------------------------------------------------------------------- 1 | hello beta testers! 2 | please press start openrec at the bottom 3 | 4 | and just see if it works with 2016 pls 5 | 6 | thanks@!! 7 | -recroom2016 8 | -------------------------------------------------------------------------------- /Launcher/download.txt: -------------------------------------------------------------------------------- 1 | https://cdn.discordapp.com/attachments/982455350819188816/982460494759751680/OpenRec.exe 2 | -------------------------------------------------------------------------------- /LevelProgressionEntry.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace api 4 | { 5 | // Token: 0x02000017 RID: 23 6 | public class LevelProgressionEntry 7 | { 8 | // Token: 0x1700001E RID: 30 9 | // (get) Token: 0x06000070 RID: 112 RVA: 0x000022F2 File Offset: 0x000004F2 10 | // (set) Token: 0x06000071 RID: 113 RVA: 0x000022FA File Offset: 0x000004FA 11 | public int Level { get; set; } 12 | 13 | // Token: 0x1700001F RID: 31 14 | // (get) Token: 0x06000072 RID: 114 RVA: 0x00002303 File Offset: 0x00000503 15 | // (set) Token: 0x06000073 RID: 115 RVA: 0x0000230B File Offset: 0x0000050B 16 | public int RequiredXp { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /LoginCached.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Newtonsoft.Json; 4 | using System.IO; 5 | 6 | namespace api2018 7 | { 8 | // Token: 0x02000078 RID: 120 9 | public class logincached 10 | { 11 | // Token: 0x17000145 RID: 325 12 | // (get) Token: 0x0600035E RID: 862 RVA: 0x00003A6C File Offset: 0x00001C6C 13 | // (set) Token: 0x0600035F RID: 863 RVA: 0x00003A74 File Offset: 0x00001C74 14 | public string Error { get; set; } 15 | 16 | // Token: 0x17000146 RID: 326 17 | // (get) Token: 0x06000360 RID: 864 RVA: 0x00003A7D File Offset: 0x00001C7D 18 | // (set) Token: 0x06000361 RID: 865 RVA: 0x00003A85 File Offset: 0x00001C85 19 | public getcachedlogins Player { get; set; } 20 | 21 | // Token: 0x17000147 RID: 327 22 | // (get) Token: 0x06000362 RID: 866 RVA: 0x00003A8E File Offset: 0x00001C8E 23 | // (set) Token: 0x06000363 RID: 867 RVA: 0x00003A96 File Offset: 0x00001C96 24 | public string Token { get; set; } 25 | 26 | // Token: 0x17000148 RID: 328 27 | // (get) Token: 0x06000364 RID: 868 RVA: 0x00003A9F File Offset: 0x00001C9F 28 | // (set) Token: 0x06000365 RID: 869 RVA: 0x00003AA7 File Offset: 0x00001CA7 29 | public bool FirstLoginOfTheDay { get; set; } 30 | 31 | // Token: 0x17000149 RID: 329 32 | // (get) Token: 0x06000366 RID: 870 RVA: 0x00003AB0 File Offset: 0x00001CB0 33 | // (set) Token: 0x06000367 RID: 871 RVA: 0x00003AB8 File Offset: 0x00001CB8 34 | public ulong AnalyticsSessionId { get; set; } 35 | 36 | // Token: 0x1700014A RID: 330 37 | // (get) Token: 0x06000368 RID: 872 RVA: 0x00003AC1 File Offset: 0x00001CC1 38 | // (set) Token: 0x06000369 RID: 873 RVA: 0x00003AC9 File Offset: 0x00001CC9 39 | public bool CanUseScreenMode { get; set; } 40 | 41 | // Token: 0x0600036A RID: 874 RVA: 0x00009044 File Offset: 0x00007244 42 | public static string loginCache(ulong userid, ulong platformid) 43 | { 44 | int level = int.Parse(File.ReadAllText("SaveData\\Profile\\level.txt")); 45 | string name = File.ReadAllText("SaveData\\Profile\\username.txt"); 46 | return JsonConvert.SerializeObject(new logincached 47 | { 48 | Error = "", 49 | Player = new getcachedlogins 50 | { 51 | Id = userid, 52 | Username = name, 53 | DisplayName = name, 54 | XP = 9999, 55 | Level = level, 56 | RegistrationStatus = 2, 57 | Developer = true, 58 | CanReceiveInvites = false, 59 | ProfileImageName = name, 60 | JuniorProfile = false, 61 | ForceJuniorImages = false, 62 | PendingJunior = false, 63 | HasBirthday = true, 64 | AvoidJuniors = true, 65 | PlayerReputation = new mPlayerReputation 66 | { 67 | Noteriety = 0, 68 | CheerCredit = 20, 69 | CheerGeneral = 10, 70 | CheerHelpful = 10, 71 | CheerGreatHost = 10, 72 | CheerSportsman = 10, 73 | CheerCreative = 10, 74 | SubscriberCount = 0, 75 | SubscribedCount = 0, 76 | SelectedCheer = 0 77 | }, 78 | PlatformIds = new List 79 | { 80 | new mPlatformID 81 | { 82 | Platform = 0, 83 | PlatformId = platformid 84 | } 85 | } 86 | }, 87 | Token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImV4cCI6MTYxOTI4NzQ2MSwidmVycyI6IjIwMTcxMTE3X0VBIn0.-GqtcqPwAzr9ZJioTiz5v0Kl4HMMjH8hFMtVzQtRN5c", 88 | FirstLoginOfTheDay = true, 89 | AnalyticsSessionId = 392394UL, 90 | CanUseScreenMode = true 91 | }); 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /MatchmakingConfigParams.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace api 4 | { 5 | // Token: 0x02000015 RID: 21 6 | internal class MatchmakingConfigParams 7 | { 8 | // Token: 0x17000019 RID: 25 9 | // (get) Token: 0x06000064 RID: 100 RVA: 0x0000229D File Offset: 0x0000049D 10 | // (set) Token: 0x06000065 RID: 101 RVA: 0x000022A5 File Offset: 0x000004A5 11 | public float PreferFullRoomsFrequency { get; set; } 12 | 13 | // Token: 0x1700001A RID: 26 14 | // (get) Token: 0x06000066 RID: 102 RVA: 0x000022AE File Offset: 0x000004AE 15 | // (set) Token: 0x06000067 RID: 103 RVA: 0x000022B6 File Offset: 0x000004B6 16 | public float PreferEmptyRoomsFrequency { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ModerationBlockDetails.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace api 4 | { 5 | public class ModerationBlockDetails 6 | { 7 | public int ReportCategory { get; set; } 8 | public int Duration { get; set; } 9 | public long GameSessionId { get; set; } 10 | public string Message { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /ModernRooms.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace api 6 | { 7 | class ModernRooms 8 | { 9 | public class Stats 10 | { 11 | public int CheerCount { get; set; } 12 | public int FavoriteCount { get; set; } 13 | public int VisitorCount { get; set; } 14 | public int VisitCount { get; set; } 15 | } 16 | 17 | public class SubRoom 18 | { 19 | public int SubRoomId { get; set; } 20 | public ulong RoomId { get; set; } 21 | public string UnitySceneId { get; set; } 22 | public string Name { get; set; } 23 | public string DataBlob { get; set; } 24 | public DateTime DataSavedAt { get; set; } 25 | public bool IsSandbox { get; set; } 26 | public int MaxPlayers { get; set; } 27 | public int Accessibility { get; set; } 28 | } 29 | 30 | public class Root 31 | { 32 | public ulong RoomId { get; set; } 33 | public bool IsDorm { get; set; } 34 | public int MaxPlayerCalculationMode { get; set; } 35 | public int MaxPlayers { get; set; } 36 | public bool CloningAllowed { get; set; } 37 | public bool DisableMicAutoMute { get; set; } 38 | public bool DisableRoomComments { get; set; } 39 | public bool EncryptVoiceChat { get; set; } 40 | public bool LoadScreenLocked { get; set; } 41 | public int Version { get; set; } 42 | public string Name { get; set; } 43 | public string Description { get; set; } 44 | public string ImageName { get; set; } 45 | public int WarningMask { get; set; } 46 | public object CustomWarning { get; set; } 47 | public int CreatorAccountId { get; set; } 48 | public int State { get; set; } 49 | public int Accessibility { get; set; } 50 | public bool SupportsLevelVoting { get; set; } 51 | public bool IsRRO { get; set; } 52 | public bool SupportsScreens { get; set; } 53 | public bool SupportsWalkVR { get; set; } 54 | public bool SupportsTeleportVR { get; set; } 55 | public bool SupportsVRLow { get; set; } 56 | public bool SupportsQuest2 { get; set; } 57 | public bool SupportsMobile { get; set; } 58 | public bool SupportsJuniors { get; set; } 59 | public int MinLevel { get; set; } 60 | public DateTime CreatedAt { get; set; } 61 | public Stats Stats { get; set; } 62 | public List SubRooms { get; set; } 63 | public List Tags { get; set; } 64 | public List PromoImages { get; set; } 65 | public List PromoExternalContent { get; set; } 66 | public List LoadScreens { get; set; } 67 | } 68 | 69 | 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /NameServer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Net; 4 | using System.Text; 5 | using System.Threading; 6 | using Newtonsoft.Json; 7 | using start; 8 | 9 | namespace server 10 | { 11 | // Token: 0x02000050 RID: 80 12 | internal class NameServer 13 | { 14 | 15 | // Token: 0x06000227 RID: 551 RVA: 0x00006D1C File Offset: 0x00004F1C 16 | public NameServer() 17 | { 18 | try 19 | { 20 | Console.WriteLine("[NameServer.cs] has started."); 21 | new Thread(new ThreadStart(this.StartListen)).Start(); 22 | new Thread(new ThreadStart(this.StartListen2)).Start(); 23 | } 24 | catch (Exception ex) 25 | { 26 | Console.WriteLine("An Exception Occurred while Listening :" + ex.ToString()); 27 | } 28 | } 29 | 30 | // Token: 0x06000228 RID: 552 RVA: 0x00006D84 File Offset: 0x00004F84 31 | private void StartListen() 32 | { 33 | //nameserver is ONLY for 2018 34 | this.listener.Prefixes.Add("http://localhost:20181/"); 35 | for (; ; ) 36 | { 37 | this.listener.Start(); 38 | Console.WriteLine("[NameServer.cs] is listening."); 39 | HttpListenerContext context = this.listener.GetContext(); 40 | HttpListenerRequest request = context.Request; 41 | HttpListenerResponse response = context.Response; 42 | string rawUrl = request.RawUrl; 43 | string s = ""; 44 | NSData data = new NSData() 45 | { 46 | API = "http://localhost:2018", 47 | Notifications = "http://localhost:20161", 48 | Images = "http://localhost:20182" 49 | }; 50 | s = JsonConvert.SerializeObject(data); 51 | Console.WriteLine("API Response: " + s); 52 | byte[] bytes = Encoding.UTF8.GetBytes(s); 53 | response.ContentLength64 = (long)bytes.Length; 54 | Stream outputStream = response.OutputStream; 55 | outputStream.Write(bytes, 0, bytes.Length); 56 | Thread.Sleep(400); 57 | outputStream.Close(); 58 | this.listener.Stop(); 59 | } 60 | } 61 | 62 | private void StartListen2() 63 | { 64 | //nameserver is ONLY for 2018 65 | this.listener2.Prefixes.Add("http://localhost:56/"); 66 | for (; ; ) 67 | { 68 | this.listener2.Start(); 69 | Console.WriteLine("[NameServer2.cs] is listening."); 70 | HttpListenerContext context = this.listener2.GetContext(); 71 | HttpListenerRequest request = context.Request; 72 | HttpListenerResponse response = context.Response; 73 | string rawUrl = request.RawUrl; 74 | string s = ""; 75 | NSData data = new NSData() 76 | { 77 | API = "http://localhost:2018", 78 | Notifications = "http://localhost:20161", 79 | Images = "http://localhost:20182" 80 | }; 81 | s = JsonConvert.SerializeObject(data); 82 | Console.WriteLine("API Response: " + s); 83 | byte[] bytes = Encoding.UTF8.GetBytes(s); 84 | response.ContentLength64 = (long)bytes.Length; 85 | Stream outputStream = response.OutputStream; 86 | outputStream.Write(bytes, 0, bytes.Length); 87 | Thread.Sleep(500); 88 | outputStream.Close(); 89 | this.listener2.Stop(); 90 | } 91 | } 92 | public static string VersionCheckResponse = "{\"ValidVersion\":true}"; 93 | public static string BlankResponse = ""; 94 | public class NSData 95 | { 96 | public string API { get; set; } 97 | public string Notifications { get; set; } 98 | public string Images { get; set; } 99 | } 100 | 101 | 102 | // Token: 0x04000192 RID: 402 103 | private HttpListener listener = new HttpListener(); 104 | 105 | private HttpListener listener2 = new HttpListener(); 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /Notification.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Newtonsoft.Json; 4 | using gamesesh; 5 | 6 | namespace ws 7 | { 8 | // Token: 0x0200002A RID: 42 9 | public class Notification 10 | { 11 | // Token: 0x0600010B RID: 267 12 | public static string ProcessRequest(string jsonData) 13 | { 14 | Dictionary dictionary = JsonConvert.DeserializeObject>(jsonData); 15 | string result; 16 | if (dictionary.ContainsKey("api")) 17 | { 18 | string text = (string)dictionary["api"]; 19 | string text2 = text; 20 | if (text2 != null) 21 | { 22 | if (text2 == "playerSubscriptions/v1/update") 23 | { 24 | Console.WriteLine("[WSS] Game client sent presence update."); 25 | return JsonConvert.SerializeObject(Notification.Reponse.createResponse(12, GameSessions.StatusSessionInstance())); 26 | } 27 | if (text2 == "heartbeat2") 28 | { 29 | Console.WriteLine("[WSS] Heartbeat 2 sent by game client."); 30 | return JsonConvert.SerializeObject(Notification.Reponse.createResponse(4, GameSessions.StatusSessionInstance())); 31 | } 32 | } 33 | Console.WriteLine("[WSS] Unknown API call: " + text); 34 | result = ""; 35 | } 36 | else 37 | { 38 | result = jsonData; 39 | } 40 | return result; 41 | } 42 | 43 | // Token: 0x0200002B RID: 43 44 | public enum ResponseResults 45 | { 46 | RelationshipChanged = 1, 47 | MessageReceived, 48 | MessageDeleted, 49 | PresenceHeartbeatResponse, 50 | SubscriptionListUpdated = 9, 51 | SubscriptionUpdateProfile = 11, 52 | SubscriptionUpdatePresence, 53 | SubscriptionUpdateGameSession, 54 | SubscriptionUpdateRoom = 15, 55 | ModerationQuitGame = 20, 56 | ModerationUpdateRequired, 57 | ModerationKick, 58 | ModerationKickAttemptFailed, 59 | ServerMaintenance = 25, 60 | GiftPackageReceived = 30, 61 | ProfileJuniorStatusUpdate = 40, 62 | RelationshipsInvalid = 50, 63 | StorefrontBalanceAdd = 60, 64 | ConsumableMappingAdded = 70, 65 | ConsumableMappingRemoved, 66 | PlayerEventCreated = 80, 67 | PlayerEventUpdated, 68 | PlayerEventDeleted, 69 | PlayerEventResponseChanged, 70 | PlayerEventResponseDeleted, 71 | PlayerEventStateChanged, 72 | ChatMessageReceived = 90 73 | } 74 | 75 | public class Reponse 76 | { 77 | public int Id { get; set; } 78 | 79 | public object Msg { get; set; } 80 | 81 | public static Notification.Reponse createResponse(int id, object msg) 82 | { 83 | return new Notification.Reponse 84 | { 85 | Id = id, 86 | Msg = msg 87 | }; 88 | } 89 | 90 | public static Notification.Reponse createBannedResponse() 91 | { 92 | return new Notification.Reponse 93 | { 94 | Id = (int)ResponseResults.ModerationKick, 95 | Msg = new api.ModerationBlockDetails() 96 | { 97 | ReportCategory = 1, 98 | Duration = int.MaxValue, 99 | GameSessionId = 100L, 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." 101 | } 102 | }; 103 | } 104 | } 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /Notification2018.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Newtonsoft.Json; 4 | using ws; 5 | 6 | namespace vaultgamesesh 7 | { 8 | // Token: 0x02000005 RID: 5 9 | public class Notification2018 10 | { 11 | // Token: 0x06000015 RID: 21 RVA: 0x00002A18 File Offset: 0x00000C18 12 | public static string ProcessRequest(string jsonData) 13 | { 14 | Dictionary dictionary = JsonConvert.DeserializeObject>(jsonData); 15 | bool flag = dictionary.ContainsKey("api"); 16 | string result; 17 | if (flag) 18 | { 19 | string text = (string)dictionary["api"]; 20 | string text2 = text; 21 | bool flag2 = text2 != null; 22 | if (flag2) 23 | { 24 | bool flag3 = text2 == "playerSubscriptions/v1/update"; 25 | if (flag3) 26 | { 27 | Console.WriteLine("[18CWS] Game client sent presence update."); 28 | return JsonConvert.SerializeObject(Notification.Reponse.createResponse(12, c000020.m000027())); 29 | } 30 | bool flag4 = text2 == "heartbeat2"; 31 | if (flag4) 32 | { 33 | Console.WriteLine("[18CWS] Heartbeat 2 sent by game client."); 34 | return JsonConvert.SerializeObject(Notification.Reponse.createResponse(4, c000020.m000027())); 35 | } 36 | } 37 | Console.WriteLine("[18CWS] Unknown CWS call: " + text); 38 | result = ""; 39 | } 40 | else 41 | { 42 | result = jsonData; 43 | } 44 | return result; 45 | } 46 | 47 | // Token: 0x02000038 RID: 56 48 | public enum ResponseResult 49 | { 50 | // Token: 0x040000A8 RID: 168 51 | RelationshipChanged = 1, 52 | // Token: 0x040000A9 RID: 169 53 | MessageReceived, 54 | // Token: 0x040000AA RID: 170 55 | MessageDeleted, 56 | // Token: 0x040000AB RID: 171 57 | PresenceHeartbeatResponse, 58 | // Token: 0x040000AC RID: 172 59 | SubscriptionListUpdated = 9, 60 | // Token: 0x040000AD RID: 173 61 | SubscriptionUpdateProfile = 11, 62 | // Token: 0x040000AE RID: 174 63 | SubscriptionUpdatePresence, 64 | // Token: 0x040000AF RID: 175 65 | SubscriptionUpdateGameSession, 66 | // Token: 0x040000B0 RID: 176 67 | SubscriptionUpdateRoom, 68 | // Token: 0x040000B1 RID: 177 69 | ModerationQuitGame = 20, 70 | // Token: 0x040000B2 RID: 178 71 | ModerationUpdateRequired, 72 | // Token: 0x040000B3 RID: 179 73 | ModerationKick, 74 | // Token: 0x040000B4 RID: 180 75 | ModerationKickAttemptFailed, 76 | // Token: 0x040000B5 RID: 181 77 | GiftPackageReceived = 30, 78 | // Token: 0x040000B6 RID: 182 79 | ProfileJuniorStatusUpdate = 40, 80 | // Token: 0x040000B7 RID: 183 81 | RelationshipsInvalid = 50, 82 | // Token: 0x040000B8 RID: 184 83 | StorefrontBalanceAdd = 60 84 | } 85 | 86 | // Token: 0x02000039 RID: 57 87 | public class Reponse 88 | { 89 | // Token: 0x1700007E RID: 126 90 | // (get) Token: 0x06000167 RID: 359 RVA: 0x0000A5EB File Offset: 0x000087EB 91 | // (set) Token: 0x06000168 RID: 360 RVA: 0x0000A5F3 File Offset: 0x000087F3 92 | public int Id { get; set; } 93 | 94 | // Token: 0x1700007F RID: 127 95 | // (get) Token: 0x06000169 RID: 361 RVA: 0x0000A5FC File Offset: 0x000087FC 96 | // (set) Token: 0x0600016A RID: 362 RVA: 0x0000A604 File Offset: 0x00008804 97 | public object Msg { get; set; } 98 | 99 | // Token: 0x0600016B RID: 363 RVA: 0x0000A610 File Offset: 0x00008810 100 | public static Notification.Reponse createResponse(int id, object msg) 101 | { 102 | return new Notification.Reponse 103 | { 104 | Id = id, 105 | Msg = msg 106 | }; 107 | } 108 | } 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /Objective.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace api 4 | 5 | { 6 | // Token: 0x02000018 RID: 24 7 | public class Objective 8 | { 9 | // Token: 0x17000020 RID: 32 10 | // (get) Token: 0x06000075 RID: 117 RVA: 0x00002314 File Offset: 0x00000514 11 | // (set) Token: 0x06000076 RID: 118 RVA: 0x0000231C File Offset: 0x0000051C 12 | public int type { get; set; } 13 | 14 | // Token: 0x17000021 RID: 33 15 | // (get) Token: 0x06000077 RID: 119 RVA: 0x00002325 File Offset: 0x00000525 16 | // (set) Token: 0x06000078 RID: 120 RVA: 0x0000232D File Offset: 0x0000052D 17 | public int score { get; set; } 18 | } 19 | } -------------------------------------------------------------------------------- /Objective2018.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace api2018 5 | { 6 | // Token: 0x0200002F RID: 47 7 | public class Objective2018 8 | { 9 | // Token: 0x17000065 RID: 101 10 | // (get) Token: 0x0600011E RID: 286 RVA: 0x0000284A File Offset: 0x00000A4A 11 | // (set) Token: 0x0600011F RID: 287 RVA: 0x00002852 File Offset: 0x00000A52 12 | public List Objectives { get; set; } 13 | 14 | // Token: 0x17000066 RID: 102 15 | // (get) Token: 0x06000120 RID: 288 RVA: 0x0000285B File Offset: 0x00000A5B 16 | // (set) Token: 0x06000121 RID: 289 RVA: 0x00002863 File Offset: 0x00000A63 17 | public List ObjectiveGroups { get; set; } 18 | 19 | // Token: 0x06000122 RID: 290 RVA: 0x00004FF0 File Offset: 0x000031F0 20 | public Objective2018() 21 | { 22 | this.Objectives = new List 23 | { 24 | new Objective2018Entry 25 | { 26 | Index = 2, 27 | Group = 0, 28 | Progress = 0f, 29 | VisualProgress = 0f, 30 | IsCompleted = false, 31 | IsRewarded = false 32 | }, 33 | new Objective2018Entry 34 | { 35 | Index = 1, 36 | Group = 0, 37 | Progress = 0f, 38 | VisualProgress = 0f, 39 | IsCompleted = false, 40 | IsRewarded = false 41 | }, 42 | new Objective2018Entry 43 | { 44 | Index = 0, 45 | Group = 0, 46 | Progress = 0f, 47 | VisualProgress = 0f, 48 | IsCompleted = false, 49 | IsRewarded = false 50 | } 51 | }; 52 | this.ObjectiveGroups = new List 53 | { 54 | new Objective2018Group 55 | { 56 | Group = 0, 57 | IsCompleted = false, 58 | ClearedAt = "2021-04-18T01:59:14.8642558Z" 59 | } 60 | }; 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Objective2018Entry.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace api2018 4 | { 5 | // Token: 0x02000030 RID: 48 6 | public class Objective2018Entry 7 | { 8 | // Token: 0x17000067 RID: 103 9 | // (get) Token: 0x06000123 RID: 291 RVA: 0x0000286C File Offset: 0x00000A6C 10 | // (set) Token: 0x06000124 RID: 292 RVA: 0x00002874 File Offset: 0x00000A74 11 | public int Index { get; set; } 12 | 13 | // Token: 0x17000068 RID: 104 14 | // (get) Token: 0x06000125 RID: 293 RVA: 0x0000287D File Offset: 0x00000A7D 15 | // (set) Token: 0x06000126 RID: 294 RVA: 0x00002885 File Offset: 0x00000A85 16 | public int Group { get; set; } 17 | 18 | // Token: 0x17000069 RID: 105 19 | // (get) Token: 0x06000127 RID: 295 RVA: 0x0000288E File Offset: 0x00000A8E 20 | // (set) Token: 0x06000128 RID: 296 RVA: 0x00002896 File Offset: 0x00000A96 21 | public float Progress { get; set; } 22 | 23 | // Token: 0x1700006A RID: 106 24 | // (get) Token: 0x06000129 RID: 297 RVA: 0x0000289F File Offset: 0x00000A9F 25 | // (set) Token: 0x0600012A RID: 298 RVA: 0x000028A7 File Offset: 0x00000AA7 26 | public float VisualProgress { get; set; } 27 | 28 | // Token: 0x1700006B RID: 107 29 | // (get) Token: 0x0600012B RID: 299 RVA: 0x000028B0 File Offset: 0x00000AB0 30 | // (set) Token: 0x0600012C RID: 300 RVA: 0x000028B8 File Offset: 0x00000AB8 31 | public bool IsCompleted { get; set; } 32 | 33 | // Token: 0x1700006C RID: 108 34 | // (get) Token: 0x0600012D RID: 301 RVA: 0x000028C1 File Offset: 0x00000AC1 35 | // (set) Token: 0x0600012E RID: 302 RVA: 0x000028C9 File Offset: 0x00000AC9 36 | public bool IsRewarded { get; set; } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Objective2018Group.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace api2018 4 | 5 | { 6 | // Token: 0x02000031 RID: 49 7 | public class Objective2018Group 8 | { 9 | // Token: 0x1700006D RID: 109 10 | // (get) Token: 0x06000130 RID: 304 RVA: 0x000028D2 File Offset: 0x00000AD2 11 | // (set) Token: 0x06000131 RID: 305 RVA: 0x000028DA File Offset: 0x00000ADA 12 | public int Group { get; set; } 13 | 14 | // Token: 0x1700006E RID: 110 15 | // (get) Token: 0x06000132 RID: 306 RVA: 0x000028E3 File Offset: 0x00000AE3 16 | // (set) Token: 0x06000133 RID: 307 RVA: 0x000028EB File Offset: 0x00000AEB 17 | public bool IsCompleted { get; set; } 18 | 19 | // Token: 0x1700006F RID: 111 20 | // (get) Token: 0x06000134 RID: 308 RVA: 0x000028F4 File Offset: 0x00000AF4 21 | // (set) Token: 0x06000135 RID: 309 RVA: 0x000028FC File Offset: 0x00000AFC 22 | public string ClearedAt { get; set; } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /OpenRec_.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Exe 5 | net6.0 6 | icon2.ico 7 | OpenRec 8 | OpenRec 9 | recroom2016 10 | icon2.png 11 | 12 | https://github.com/recroom2016/OpenRec 13 | https://discord.gg/daC8QUhnFP 14 | OpenRec 15 | 0.4.0 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | ..\..\..\r16server\making new server\websocket-sharp.dll 29 | 30 | 31 | 32 | 33 | 34 | True 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /OpenRec_.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31321.278 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenRec_", "OpenRec_.csproj", "{C3C433FC-52FB-4472-81F7-B271A2CDABFE}" 7 | EndProject 8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{C754033C-FE82-4FF2-9189-A7EE0E2E5974}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {C3C433FC-52FB-4472-81F7-B271A2CDABFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {C3C433FC-52FB-4472-81F7-B271A2CDABFE}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {C3C433FC-52FB-4472-81F7-B271A2CDABFE}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {C3C433FC-52FB-4472-81F7-B271A2CDABFE}.Release|Any CPU.Build.0 = Release|Any CPU 20 | EndGlobalSection 21 | GlobalSection(SolutionProperties) = preSolution 22 | HideSolutionNode = FALSE 23 | EndGlobalSection 24 | GlobalSection(ExtensibilityGlobals) = postSolution 25 | SolutionGuid = {3C2E49E2-E5D3-47A6-8F3A-5A1DF6A19A06} 26 | EndGlobalSection 27 | EndGlobal 28 | -------------------------------------------------------------------------------- /PlatformID.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace api2018 4 | { 5 | // Token: 0x02000037 RID: 55 6 | public class mPlatformID 7 | { 8 | // Token: 0x17000097 RID: 151 9 | // (get) Token: 0x0600018E RID: 398 RVA: 0x00002B9F File Offset: 0x00000D9F 10 | // (set) Token: 0x0600018F RID: 399 RVA: 0x00002BA7 File Offset: 0x00000DA7 11 | public int Platform { get; set; } 12 | 13 | // Token: 0x17000098 RID: 152 14 | // (get) Token: 0x06000190 RID: 400 RVA: 0x00002BB0 File Offset: 0x00000DB0 15 | // (set) Token: 0x06000191 RID: 401 RVA: 0x00002BB8 File Offset: 0x00000DB8 16 | public ulong PlatformId { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /PlatformLogin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Newtonsoft.Json; 3 | 4 | namespace api2017 5 | { 6 | // Token: 0x02000032 RID: 50 7 | internal class PlatformLogin 8 | { 9 | // Token: 0x17000070 RID: 112 10 | // (get) Token: 0x06000137 RID: 311 RVA: 0x00002905 File Offset: 0x00000B05 11 | // (set) Token: 0x06000138 RID: 312 RVA: 0x0000290D File Offset: 0x00000B0D 12 | public string Token { get; set; } 13 | 14 | // Token: 0x17000071 RID: 113 15 | // (get) Token: 0x06000139 RID: 313 RVA: 0x00002916 File Offset: 0x00000B16 16 | // (set) Token: 0x0600013A RID: 314 RVA: 0x0000291E File Offset: 0x00000B1E 17 | public ulong PlayerId { get; set; } 18 | 19 | // Token: 0x17000072 RID: 114 20 | // (get) Token: 0x0600013B RID: 315 RVA: 0x00002927 File Offset: 0x00000B27 21 | // (set) Token: 0x0600013C RID: 316 RVA: 0x0000292F File Offset: 0x00000B2F 22 | public string Error { get; set; } 23 | 24 | // Token: 0x0600013D RID: 317 RVA: 0x00005114 File Offset: 0x00003314 25 | public static string v4(ulong userid) 26 | { 27 | PlatformLogin value = new PlatformLogin 28 | { 29 | Token = "j3923mHJG032jew", 30 | PlayerId = userid, 31 | Error = "" 32 | }; 33 | return JsonConvert.SerializeObject(value); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /PlayerReputation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace api2018 4 | { 5 | // Token: 0x02000036 RID: 54 6 | public class mPlayerReputation 7 | { 8 | // Token: 0x1700008D RID: 141 9 | // (get) Token: 0x06000179 RID: 377 RVA: 0x00002AF5 File Offset: 0x00000CF5 10 | // (set) Token: 0x0600017A RID: 378 RVA: 0x00002AFD File Offset: 0x00000CFD 11 | public int Noteriety { get; set; } 12 | 13 | // Token: 0x1700008E RID: 142 14 | // (get) Token: 0x0600017B RID: 379 RVA: 0x00002B06 File Offset: 0x00000D06 15 | // (set) Token: 0x0600017C RID: 380 RVA: 0x00002B0E File Offset: 0x00000D0E 16 | public int CheerGeneral { get; set; } 17 | 18 | // Token: 0x1700008F RID: 143 19 | // (get) Token: 0x0600017D RID: 381 RVA: 0x00002B17 File Offset: 0x00000D17 20 | // (set) Token: 0x0600017E RID: 382 RVA: 0x00002B1F File Offset: 0x00000D1F 21 | public int CheerHelpful { get; set; } 22 | 23 | // Token: 0x17000090 RID: 144 24 | // (get) Token: 0x0600017F RID: 383 RVA: 0x00002B28 File Offset: 0x00000D28 25 | // (set) Token: 0x06000180 RID: 384 RVA: 0x00002B30 File Offset: 0x00000D30 26 | public int CheerGreatHost { get; set; } 27 | 28 | // Token: 0x17000091 RID: 145 29 | // (get) Token: 0x06000181 RID: 385 RVA: 0x00002B39 File Offset: 0x00000D39 30 | // (set) Token: 0x06000182 RID: 386 RVA: 0x00002B41 File Offset: 0x00000D41 31 | public int CheerSportsman { get; set; } 32 | 33 | // Token: 0x17000092 RID: 146 34 | // (get) Token: 0x06000183 RID: 387 RVA: 0x00002B4A File Offset: 0x00000D4A 35 | // (set) Token: 0x06000184 RID: 388 RVA: 0x00002B52 File Offset: 0x00000D52 36 | public int CheerCreative { get; set; } 37 | 38 | // Token: 0x17000093 RID: 147 39 | // (get) Token: 0x06000185 RID: 389 RVA: 0x00002B5B File Offset: 0x00000D5B 40 | // (set) Token: 0x06000186 RID: 390 RVA: 0x00002B63 File Offset: 0x00000D63 41 | public int CheerCredit { get; set; } 42 | 43 | // Token: 0x17000094 RID: 148 44 | // (get) Token: 0x06000187 RID: 391 RVA: 0x00002B6C File Offset: 0x00000D6C 45 | // (set) Token: 0x06000188 RID: 392 RVA: 0x00002B74 File Offset: 0x00000D74 46 | public int SubscriberCount { get; set; } 47 | 48 | // Token: 0x17000095 RID: 149 49 | // (get) Token: 0x06000189 RID: 393 RVA: 0x00002B7D File Offset: 0x00000D7D 50 | // (set) Token: 0x0600018A RID: 394 RVA: 0x00002B85 File Offset: 0x00000D85 51 | public int SubscribedCount { get; set; } 52 | 53 | // Token: 0x17000096 RID: 150 54 | // (get) Token: 0x0600018B RID: 395 RVA: 0x00002B8E File Offset: 0x00000D8E 55 | // (set) Token: 0x0600018C RID: 396 RVA: 0x00002B96 File Offset: 0x00000D96 56 | public int SelectedCheer { get; set; } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /ProfieStealer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Net; 5 | using Newtonsoft.Json; 6 | using System.IO; 7 | 8 | namespace api 9 | { 10 | class ProfieStealer 11 | { 12 | public static void ProfileSteal(string data) 13 | { 14 | List profile = JsonConvert.DeserializeObject>(data); 15 | File.WriteAllText("SaveData\\Profile\\username.txt", profile[0].username); 16 | byte[] profileimage = new WebClient().DownloadData("https://img.rec.net/" + profile[0].profileImage + "?cropSquare=true&width=192&height=192"); 17 | File.WriteAllBytes("SaveData\\profileimage.png", profileimage); 18 | 19 | 20 | } 21 | 22 | public class Root 23 | { 24 | public int accountId { get; set; } 25 | public string username { get; set; } 26 | public string displayName { get; set; } 27 | public string profileImage { get; set; } 28 | public bool isJunior { get; set; } 29 | public int platforms { get; set; } 30 | public int personalPronouns { get; set; } 31 | public int identityFlags { get; set; } 32 | public DateTime createdAt { get; set; } 33 | public string bannerImage { get; set; } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Profiles.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace api2017 6 | { 7 | class Profiles 8 | { 9 | public ulong Id { get; set; } 10 | public string Username { get; set; } 11 | public string DisplayName { get; set; } 12 | public int XP { get; set; } 13 | public int Level { get; set; } 14 | public int Reputation { get; set; } 15 | public bool Verified { get; set; } 16 | public bool Developer { get; set; } 17 | public bool HasEmail { get; set; } 18 | public bool CanReceiveInvites { get; set; } 19 | public string ProfileImageName { get; set; } 20 | public bool JuniorProfile { get; set; } 21 | public bool ForceJuniorImages { get; set; } 22 | public bool PendingJunior { get; set; } 23 | public bool HasBirthday { get; set; } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using server; 3 | using System.IO; 4 | using ws; 5 | using api; 6 | using System.Net; 7 | using System.Diagnostics; 8 | using vaultgamesesh; 9 | using System.Collections.Generic; 10 | using Newtonsoft.Json; 11 | 12 | namespace start 13 | { 14 | class Program 15 | { 16 | static void Main() 17 | { 18 | //startup for openrec 19 | 20 | Setup.setup(); 21 | goto Tutorial; 22 | 23 | Tutorial: 24 | if (Setup.firsttime == true) 25 | { 26 | Console.ForegroundColor = ConsoleColor.Green; 27 | Console.Title = "OpenRec Intro"; 28 | Console.WriteLine("Welcome to OpenRec " + appversion + "!"); 29 | Console.WriteLine("Is this your first time using OpenRec?"); 30 | Console.WriteLine("Yes or No (Y, N)"); 31 | string readline22 = Console.ReadLine(); 32 | if (readline22 == "y" || readline22 == "Y") 33 | { 34 | Console.Clear(); 35 | Console.Title = "OpenRec Tutorial"; 36 | Console.WriteLine("In that case, welcome to OpenRec!"); 37 | Console.WriteLine("OpenRec is server software that emulates the old servers of previous RecRoom versions."); 38 | Console.WriteLine("To use OpenRec, you'll need to have builds aswell!"); 39 | 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); 40 | Console.WriteLine(new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/builds.txt")); 41 | Console.WriteLine("Download a build and press any key to continue:"); 42 | Console.ReadKey(); 43 | Console.Clear(); 44 | Console.WriteLine("Now that you have a build, what you're going to do is as follows:" + Environment.NewLine); 45 | Console.WriteLine("1. Unzip the build"); 46 | Console.WriteLine("2. Start the server by pressing 5 on the main menu and selecting your version as follows"); 47 | Console.WriteLine("3. Run Recroom_Release.exe from the folder of the build you downloaded." + Environment.NewLine); 48 | Console.WriteLine("And that's it! Press any key to go to the main menu, where you will be able to start the server:"); 49 | Console.ReadKey(); 50 | Console.Clear(); 51 | goto Start; 52 | } 53 | 54 | else 55 | { 56 | Console.Clear(); 57 | goto Start; 58 | } 59 | } 60 | else 61 | { 62 | goto Start; 63 | } 64 | 65 | Start: 66 | Console.Title = "OpenRec Startup Menu"; 67 | Console.ForegroundColor = ConsoleColor.Green; 68 | Console.WriteLine("OpenRec - Open source Old RecRoom server software. (Version: " + appversion + ")"); 69 | Console.WriteLine("Made and provided by RecRoom 2016."); 70 | Console.WriteLine("Download source code here: https://github.com/recroom2016/OpenRec"); 71 | Console.WriteLine("Discord: https://discord.gg/daC8QUhnFP" + Environment.NewLine); 72 | if (!(new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/version.txt").Contains(appversion))) 73 | { 74 | 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")); 75 | } 76 | 77 | Console.WriteLine("//Custom Room Downloader has been moved to the settings tab!" + Environment.NewLine); 78 | 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"); 79 | string readline = Console.ReadLine(); 80 | if (readline == "1") 81 | { 82 | Console.Title = "OpenRec Changelog"; 83 | Console.Clear(); 84 | Console.WriteLine(new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/changelog.txt")); 85 | Console.WriteLine("Press any key to continue:"); 86 | Console.ReadKey(); 87 | Console.Clear(); 88 | goto Start; 89 | } 90 | if (readline == "2") 91 | { 92 | Console.Clear(); 93 | goto Settings; 94 | 95 | Settings: 96 | Console.Title = "OpenRec Settings Menu"; 97 | 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"); 98 | string readline4 = Console.ReadLine(); 99 | if (readline4 == "1") 100 | { 101 | if (File.ReadAllText("SaveData\\App\\privaterooms.txt") == "Disabled") 102 | { 103 | File.WriteAllText("SaveData\\App\\privaterooms.txt", "Enabled"); 104 | } 105 | else 106 | { 107 | File.WriteAllText("SaveData\\App\\privaterooms.txt", "Disabled"); 108 | } 109 | Console.Clear(); 110 | Console.WriteLine("Success!"); 111 | goto Settings; 112 | } 113 | else if (readline4 == "2") 114 | { 115 | Console.Title = "OpenRec Custom Room Downloader"; 116 | Console.Clear(); 117 | 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."); 118 | Console.WriteLine("Please type in the name of the room you would like to download: (Case sensitive)"); 119 | string roomname = Console.ReadLine(); 120 | string text = ""; 121 | try 122 | { 123 | text = new WebClient().DownloadString("https://rooms.rec.net/rooms?name=" + roomname + "&include=297"); 124 | } 125 | catch 126 | { 127 | Console.Clear(); 128 | Console.WriteLine("Failed to download room..."); 129 | goto Settings; 130 | } 131 | CustomRooms.RoomDecode(text); 132 | Console.Clear(); 133 | Console.WriteLine("Success!"); 134 | goto Settings; 135 | } 136 | else if (readline4 == "3") 137 | { 138 | File.Delete("SaveData\\avatar.txt"); 139 | File.Delete("SaveData\\avataritems.txt"); 140 | File.Delete("SaveData\\equipment.txt"); 141 | File.Delete("SaveData\\consumables.txt"); 142 | File.Delete("SaveData\\gameconfigs.txt"); 143 | File.Delete("SaveData\\storefronts2.txt"); 144 | File.Delete("SaveData\\Profile\\username.txt"); 145 | File.Delete("SaveData\\Profile\\level.txt"); 146 | File.Delete("SaveData\\Profile\\userid.txt"); 147 | File.Delete("SaveData\\myrooms.txt"); 148 | File.Delete("SaveData\\settings.txt"); 149 | File.Delete("SaveData\\App\\privaterooms.txt"); 150 | File.Delete("SaveData\\App\\facefeaturesadd.txt"); 151 | File.Delete("SaveData\\profileimage.png"); 152 | File.Delete("SaveData\\App\\firsttime.txt"); 153 | 154 | File.Delete("SaveData\\avataritems2.txt"); 155 | 156 | File.Delete("SaveData\\Rooms\\Downloaded\\roomname.txt"); 157 | File.Delete("SaveData\\Rooms\\Downloaded\\roomid.txt"); 158 | File.Delete("SaveData\\Rooms\\Downloaded\\datablob.txt"); 159 | File.Delete("SaveData\\Rooms\\Downloaded\\roomsceneid.txt"); 160 | File.Delete("SaveData\\Rooms\\Downloaded\\imagename.txt"); 161 | File.Delete("SaveData\\Rooms\\Downloaded\\cheercount.txt"); 162 | File.Delete("SaveData\\Rooms\\Downloaded\\favcount.txt"); 163 | File.Delete("SaveData\\Rooms\\Downloaded\\visitcount.txt"); 164 | Console.WriteLine("Success!"); 165 | Setup.setup(); 166 | goto Settings; 167 | } 168 | else if (readline4 == "4") 169 | { 170 | Console.Clear(); 171 | goto Start; 172 | } 173 | } 174 | if (readline == "3") 175 | { 176 | Console.Clear(); 177 | goto Profile; 178 | 179 | Profile: 180 | Console.Title = "OpenRec Profile Menu"; 181 | 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"); 182 | string readline3 = Console.ReadLine(); 183 | if (readline3 == "1") 184 | { 185 | Console.WriteLine("Current Username: " + File.ReadAllText("SaveData\\Profile\\username.txt")); 186 | Console.WriteLine("New Username: "); 187 | string newusername = Console.ReadLine(); 188 | File.WriteAllText("SaveData\\Profile\\username.txt", newusername); 189 | Console.Clear(); 190 | Console.WriteLine("Success!"); 191 | goto Profile; 192 | } 193 | else if (readline3 == "2") 194 | { 195 | Console.Clear(); 196 | 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"); 197 | string readline4 = Console.ReadLine(); 198 | if (readline4 == "1") 199 | { 200 | Console.WriteLine("Paste Media Link: "); 201 | string medialink = Console.ReadLine(); 202 | try 203 | { 204 | File.WriteAllBytes("SaveData\\profileimage.png", new WebClient().DownloadData(medialink)); 205 | } 206 | catch 207 | { 208 | Console.Clear(); 209 | Console.WriteLine("Invalid Media Link"); 210 | goto Profile; 211 | } 212 | Console.Clear(); 213 | Console.WriteLine("Success!"); 214 | goto Profile; 215 | } 216 | else if (readline4 == "2") 217 | { 218 | Console.WriteLine("Drag any image onto this window and press enter: "); 219 | string imagedir = Console.ReadLine(); 220 | try 221 | { 222 | byte[] imagefile = File.ReadAllBytes(imagedir); 223 | File.Replace(imagedir, "SaveData\\profileimage.png", "backupfilename.png"); 224 | File.WriteAllBytes(imagedir, imagefile); 225 | File.Delete("backupfilename.png"); 226 | } 227 | catch (Exception ex4) 228 | { 229 | Console.Clear(); 230 | Console.WriteLine("Invalid Image (Make sure its on the same drive as OpenRec)"); 231 | goto Profile; 232 | } 233 | Console.Clear(); 234 | Console.WriteLine("Success!"); 235 | goto Profile; 236 | } 237 | else if (readline4 == "3") 238 | { 239 | Console.WriteLine("Type a RecRoom @ username and press enter: "); 240 | string username = Console.ReadLine(); 241 | if (username.StartsWith("@")) 242 | { 243 | username = username.Remove(0, 1); 244 | } 245 | try 246 | { 247 | string data = ""; 248 | try 249 | { 250 | data = new WebClient().DownloadString("https://accounts.rec.net/account/search?name=" + username); 251 | } 252 | catch 253 | { 254 | Console.Clear(); 255 | Console.WriteLine("Failed to download profile..."); 256 | goto Start; 257 | } 258 | 259 | List profile = JsonConvert.DeserializeObject>(data); 260 | byte[] profileimage = new WebClient().DownloadData("https://img.rec.net/" + profile[0].profileImage + "?cropSquare=true&width=192&height=192"); 261 | File.WriteAllBytes("SaveData\\profileimage.png", profileimage); 262 | 263 | } 264 | catch 265 | { 266 | Console.Clear(); 267 | Console.WriteLine("Unable to download image..."); 268 | goto Profile; 269 | } 270 | Console.Clear(); 271 | Console.WriteLine("Success!"); 272 | goto Profile; 273 | } 274 | else if (readline4 == "4") 275 | { 276 | Console.Clear(); 277 | goto Start; 278 | } 279 | } 280 | else if (readline3 == "3") 281 | { 282 | Console.WriteLine("Current Level: " + File.ReadAllText("SaveData\\Profile\\level.txt")); 283 | Console.WriteLine("New Level: "); 284 | string newlevel = Console.ReadLine(); 285 | File.WriteAllText("SaveData\\Profile\\level.txt", newlevel); 286 | Console.Clear(); 287 | Console.WriteLine("Success!"); 288 | goto Profile; 289 | } 290 | else if (readline3 == "4") 291 | { 292 | Console.Title = "OpenRec Profile Downloader"; 293 | Console.Clear(); 294 | Console.WriteLine("Profile Downloader: This tool takes the username and profile image of any username you type in and imports it to OpenRec."); 295 | Console.WriteLine("Please type the @ username of the profile you would like:"); 296 | string readusername = Console.ReadLine(); 297 | if (readusername.StartsWith("@")) 298 | { 299 | readusername = readusername.Remove(0, 1); 300 | } 301 | string data2 = ""; 302 | try 303 | { 304 | data2 = new WebClient().DownloadString("https://accounts.rec.net/account/search?name=" + readusername); 305 | } 306 | catch 307 | { 308 | Console.Clear(); 309 | Console.WriteLine("Failed to download profile..."); 310 | goto Start; 311 | } 312 | 313 | ProfieStealer.ProfileSteal(data2); 314 | 315 | Console.Clear(); 316 | Console.WriteLine("Success!"); 317 | goto Start; 318 | } 319 | else if (readline3 == "5") 320 | { 321 | Console.Clear(); 322 | goto Start; 323 | } 324 | } 325 | if (readline == "4") 326 | { 327 | Console.Title = "OpenRec Build Downloads"; 328 | Console.Clear(); 329 | 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); 330 | Console.WriteLine(new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/builds.txt")); 331 | Console.WriteLine("Download a build and press any key to continue:"); 332 | Console.ReadKey(); 333 | Console.Clear(); 334 | goto Start; 335 | } 336 | if (readline == "5") 337 | { 338 | Console.Title = "OpenRec Version Select"; 339 | Console.WriteLine("Please select the version of RecRoom the server should host: (2016, 2017, 2018)"); 340 | string readline2 = Console.ReadLine(); 341 | if (readline2 == "2016") 342 | { 343 | Console.Title = "OpenRec December 25th, 2016"; 344 | version = "2016"; 345 | Console.Clear(); 346 | Console.WriteLine("Version Selected: December 25th, 2016."); 347 | new APIServer(); 348 | new WebSocket(); 349 | } 350 | else if (readline2 == "2017") 351 | { 352 | Console.Title = "OpenRec October 19th 2017"; 353 | version = "2017"; 354 | Console.Clear(); 355 | Console.WriteLine("Version Selected: October 19th, 2017."); 356 | new APIServer(); 357 | new WebSocket(); 358 | } 359 | else if (readline2 == "2018") 360 | { 361 | Console.WriteLine("May, July or September (SEPTEMBER MIGHT NOT WORK) 2018: (M, J, S)"); 362 | string readline3 = Console.ReadLine(); 363 | if ((readline3 == "M") || (readline3 == "m")) 364 | { 365 | Console.Title = "OpenRec May 30th 2018"; 366 | version = "2018"; 367 | Console.Clear(); 368 | Console.WriteLine("Version Selected: May 30th, 2018."); 369 | new NameServer(); 370 | new ImageServer(); 371 | new APIServer(); 372 | new WebSocket(); 373 | } 374 | else if ((readline3 == "S") || (readline3 == "s")) 375 | { 376 | Console.Title = "OpenRec September 27th 2018"; 377 | version = "2018"; 378 | Console.Clear(); 379 | Console.WriteLine("Version Selected: September 27th, 2018."); 380 | new NameServer(); 381 | new ImageServer(); 382 | new APIServer(); 383 | new Late2018WebSock(); 384 | } 385 | else if ((readline3 == "J") || (readline3 == "j")) 386 | { 387 | Console.Title = "OpenRec July 20th 2018"; 388 | version = "2018"; 389 | Console.Clear(); 390 | Console.WriteLine("Version Selected: July 20th, 2018"); 391 | new NameServer(); 392 | new ImageServer(); 393 | new APIServer(); 394 | new WebSocket(); 395 | } 396 | 397 | } 398 | Console.WriteLine(msg); 399 | } 400 | } 401 | public static string msg = "//This is the server sending and recieving data from recroom." + Environment.NewLine + "//Ignore this if you don't know what this means." + Environment.NewLine + "//Please start up the build now."; 402 | public static string version = ""; 403 | public static string appversion = "0.6.9"; 404 | public static bool bannedflag = false; 405 | } 406 | 407 | } 408 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Welcome to OpenRec! 2 | --- 3 | OpenRec is a RecRoom server software made by recroom2016! 4 | 5 | ### Branches 6 | - Master / main 7 | - Nightly 8 | 9 | The master branch is the public branch where all the latest updates are published. 10 | The nightly branch is where all the experimental updates that are needed to be tested before release are. 11 | 12 | --- 13 | 14 | ### Getting in contact with the community 15 | 16 | If you are new to this we recommend you joining our Discord! 17 | Link: https://discord.com/invite/daC8QUhnFP 18 | -------------------------------------------------------------------------------- /Sanitize.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Newtonsoft.Json; 3 | 4 | namespace api 5 | { 6 | // Token: 0x02000081 RID: 129 7 | public class Sanitize 8 | { 9 | public static Sanitize.m001 GetSanitize() 10 | { 11 | return new m001 12 | { 13 | IsPure = true 14 | }; 15 | } 16 | 17 | public sealed class m001 18 | { 19 | public bool IsPure { get; set; } 20 | } 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Setting.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace api 4 | { 5 | // Token: 0x0200003D RID: 61 6 | internal class Setting 7 | { 8 | // Token: 0x170000AC RID: 172 9 | // (get) Token: 0x060001C8 RID: 456 RVA: 0x00002D5B File Offset: 0x00000F5B 10 | // (set) Token: 0x060001C9 RID: 457 RVA: 0x00002D63 File Offset: 0x00000F63 11 | public string Key { get; set; } 12 | 13 | // Token: 0x170000AD RID: 173 14 | // (get) Token: 0x060001CA RID: 458 RVA: 0x00002D6C File Offset: 0x00000F6C 15 | // (set) Token: 0x060001CB RID: 459 RVA: 0x00002D74 File Offset: 0x00000F74 16 | public string Value { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /Settings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using Newtonsoft.Json; 5 | 6 | namespace api 7 | { 8 | internal class Settings 9 | { 10 | public static void SetPlayerSettings(string jsonData) 11 | { 12 | if (jsonData == "") 13 | { 14 | return; 15 | } 16 | Setting setting = JsonConvert.DeserializeObject(jsonData); 17 | Settings.playerSettings = Settings.LoadSettings(); 18 | foreach (Setting setting2 in Settings.playerSettings) 19 | { 20 | if (setting2.Key == setting.Key) 21 | { 22 | setting2.Value = setting.Value; 23 | Settings.SaveSettings(Settings.playerSettings); 24 | } 25 | } 26 | Settings.playerSettings.Add(new Setting 27 | { 28 | Key = setting.Key, 29 | Value = setting.Value 30 | }); 31 | Settings.SaveSettings(Settings.playerSettings); 32 | } 33 | public static List LoadSettings() 34 | { 35 | return JsonConvert.DeserializeObject>(File.ReadAllText(Environment.CurrentDirectory + Settings.SettingsPath)); 36 | } 37 | public static void SaveSettings(List settings) 38 | { 39 | File.WriteAllText(Environment.CurrentDirectory + Settings.SettingsPath, JsonConvert.SerializeObject(settings)); 40 | } 41 | 42 | public static List CreateDefaultSettings() 43 | { 44 | return new List 45 | { 46 | new Setting 47 | { 48 | Key = "MOD_BLOCKED_TIME", 49 | Value = 0f.ToString() 50 | }, 51 | new Setting 52 | { 53 | Key = "MOD_BLOCKED_DURATION", 54 | Value = 0f.ToString() 55 | }, 56 | new Setting 57 | { 58 | Key = "PlayerSessionCount", 59 | Value = 0f.ToString() 60 | }, 61 | new Setting 62 | { 63 | Key = "ShowRoomCenter", 64 | Value = 1f.ToString() 65 | }, 66 | new Setting 67 | { 68 | Key = "QualitySettings", 69 | Value = 3.ToString() 70 | }, 71 | new Setting 72 | { 73 | Key = "Recroom.OOBE", 74 | Value = 100.ToString() 75 | }, 76 | new Setting 77 | { 78 | Key = "VoiceFilter", 79 | Value = 0f.ToString() 80 | }, 81 | new Setting 82 | { 83 | Key = "VIGNETTED_TELEPORT_ENABLED", 84 | Value = 0f.ToString() 85 | }, 86 | new Setting 87 | { 88 | Key = "CONTINUOUS_ROTATION_MODE", 89 | Value = 0f.ToString() 90 | }, 91 | new Setting 92 | { 93 | Key = "ROTATION_INCREMENT", 94 | Value = 0f.ToString() 95 | }, 96 | new Setting 97 | { 98 | Key = "ROTATE_IN_PLACE_ENABLED", 99 | Value = 0f.ToString() 100 | }, 101 | new Setting 102 | { 103 | Key = "TeleportBuffer", 104 | Value = 0f.ToString() 105 | }, 106 | new Setting 107 | { 108 | Key = "VoiceChat", 109 | Value = 1f.ToString() 110 | }, 111 | new Setting 112 | { 113 | Key = "PersonalBubble", 114 | Value = 0f.ToString() 115 | }, 116 | new Setting 117 | { 118 | Key = "ShowNames", 119 | Value = 1f.ToString() 120 | }, 121 | new Setting 122 | { 123 | Key = "H.264 plugin", 124 | Value = 1f.ToString() 125 | } 126 | }; 127 | } 128 | 129 | private static List playerSettings; 130 | 131 | 132 | public static string SettingsPath = "\\SaveData\\settings.txt"; 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /Setup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.IO; 5 | using System.Net; 6 | 7 | namespace start 8 | { 9 | class Setup 10 | { 11 | public static bool firsttime = false; 12 | public static void setup() 13 | { 14 | //sets up all the important files so openrec doesnt crash like lame vaultserver xD 15 | Console.WriteLine("Setting up... (May take a minute to download everything.)"); 16 | Directory.CreateDirectory("SaveData\\App\\"); 17 | Directory.CreateDirectory("SaveData\\Profile\\"); 18 | Directory.CreateDirectory("SaveData\\Images\\"); 19 | Directory.CreateDirectory("SaveData\\Rooms\\"); 20 | Directory.CreateDirectory("SaveData\\Images\\"); 21 | Directory.CreateDirectory("SaveData\\Rooms\\Downloaded\\"); 22 | if (!(File.Exists("SaveData\\App\\firsttime.txt"))) 23 | { 24 | 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----"); 25 | firsttime = true; 26 | } 27 | if (!(File.Exists("SaveData\\avatar.txt"))) 28 | { 29 | File.WriteAllText("SaveData\\avatar.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/avatar.txt")); 30 | } 31 | else if (File.ReadAllText("SaveData\\avatar.txt") == "") 32 | { 33 | File.WriteAllText("SaveData\\avatar.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/avatar.txt")); 34 | } 35 | if (!(File.Exists("SaveData\\avataritems.txt"))) 36 | { 37 | File.WriteAllText("SaveData\\avataritems.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/avataritems.txt")); 38 | } 39 | if (!(File.Exists("SaveData\\avataritems2.txt"))) 40 | { 41 | File.WriteAllText("SaveData\\avataritems2.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/avataritems2.txt")); 42 | } 43 | if (!(File.Exists("SaveData\\equipment.txt"))) 44 | { 45 | File.WriteAllText("SaveData\\equipment.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/equipment.txt")); 46 | } 47 | if (!(File.Exists("SaveData\\consumables.txt"))) 48 | { 49 | File.WriteAllText("SaveData\\consumables.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/consumables.txt")); 50 | } 51 | if (!(File.Exists("SaveData\\gameconfigs.txt"))) 52 | { 53 | File.WriteAllText("SaveData\\gameconfigs.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/gameconfigs.txt")); 54 | } 55 | if (!(File.Exists("SaveData\\storefronts2.txt"))) 56 | { 57 | File.WriteAllText("SaveData\\storefronts2.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/storefront2.txt")); 58 | } 59 | if (!(File.Exists("SaveData\\baserooms.txt"))) 60 | { 61 | File.WriteAllText("SaveData\\baserooms.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/baserooms.txt")); 62 | } 63 | if (!(File.Exists("SaveData\\Profile\\username.txt"))) 64 | { 65 | File.WriteAllText("SaveData\\Profile\\username.txt", "OpenRec User#" + new Random().Next(0, 1000000)); 66 | } 67 | if (!(File.Exists("SaveData\\Profile\\level.txt"))) 68 | { 69 | File.WriteAllText("SaveData\\Profile\\level.txt", "10"); 70 | } 71 | if (!(File.Exists("SaveData\\Profile\\userid.txt"))) 72 | { 73 | File.WriteAllText("SaveData\\Profile\\userid.txt", "10000000"); 74 | } 75 | if (!(File.Exists("SaveData\\myrooms.txt"))) 76 | { 77 | File.WriteAllText("SaveData\\myrooms.txt", "[]"); 78 | } 79 | if (!(File.Exists("SaveData\\settings.txt"))) 80 | { 81 | File.WriteAllText("SaveData\\settings.txt", Newtonsoft.Json.JsonConvert.SerializeObject(api.Settings.CreateDefaultSettings())); 82 | } 83 | if (!(File.Exists("SaveData\\profileimage.png"))) 84 | { 85 | File.WriteAllBytes("SaveData\\profileimage.png", new WebClient().DownloadData("https://github.com/OpenRecRoom/OpenRec/raw/main/profileimage.png")); 86 | } 87 | if (!(File.Exists("SaveData\\App\\privaterooms.txt"))) 88 | { 89 | File.WriteAllText("SaveData\\App\\privaterooms.txt", "Disabled"); 90 | } 91 | if (!(File.Exists("SaveData\\App\\showopenrecinfo.txt"))) 92 | { 93 | File.WriteAllText("SaveData\\App\\showopenrecinfo.txt", "Enabled"); 94 | } 95 | if (!(File.Exists("SaveData\\App\\facefeaturesadd.txt"))) 96 | { 97 | File.WriteAllText("SaveData\\App\\facefeaturesadd.txt", new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Download/facefeaturesadd.txt")); 98 | } 99 | goto tryagain; 100 | 101 | tryagain: 102 | if (!File.Exists("SaveData\\Rooms\\Downloaded\\roomname.txt")) 103 | { 104 | try 105 | { 106 | api.CustomRooms.RoomGet("gogo9"); 107 | } 108 | catch 109 | { 110 | goto tryagain; 111 | } 112 | 113 | } 114 | Console.WriteLine("Done!"); 115 | Console.Clear(); 116 | } 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /Update/banned.txt: -------------------------------------------------------------------------------- 1 | [{"UserId":487454,"Reason":"Banned."}, {"UserId":4701796,"Reason":"Banned."}, {"UserId":1623123,"Reason":"Banned."}, {"UserId":1423224,"Reason":"Banned."}] 2 | -------------------------------------------------------------------------------- /Update/builds.txt: -------------------------------------------------------------------------------- 1 | September 27th 2018 (UNSTABLE, WILL ONLY WORK FOR SOME PEOPLE): 2 | https://drive.google.com/file/d/13atQRl6Bh_JStPug7GcKLiLYqVaRgUsW/view?usp=sharing 3 | 4 | May 30th 2018: 5 | https://drive.google.com/file/d/1jZps2nesIcHsabZo3ueomivq98zfKZzj/view?usp=sharing 6 | 7 | October 19th 2017: 8 | https://drive.google.com/file/d/1Noljjg667NzUeOc1P7D7Fq9KmN_6AfeE/view?usp=sharing 9 | 10 | December 23rd 2016: 11 | https://drive.google.com/file/d/1mM3VKK7mFK8qMingVkEFQW-PwRe5Wh39/view?usp=sharing 12 | -------------------------------------------------------------------------------- /Update/dormslideshow.txt: -------------------------------------------------------------------------------- 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"}]} 2 | -------------------------------------------------------------------------------- /Update/hotrooms.txt: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "RoomId": 29, 4 | "Name": "Custom Room", 5 | "Description": "Custom Room", 6 | "CreatorPlayerId": 1, 7 | "ImageName": "CustomRoom.png", 8 | "State": 0, 9 | "Accessibility": 1, 10 | "SupportsLevelVoting": false, 11 | "IsAGRoom": true, 12 | "CloningAllowed": false, 13 | "SupportsScreens": true, 14 | "SupportsWalkVR": true, 15 | "SupportsTeleportVR": true 16 | }, 17 | { 18 | "RoomId": 3, 19 | "Name": "3DCharades", 20 | "Description": "Take turns drawing, acting, and guessing funny phrases with your friends!", 21 | "CreatorPlayerId": 72963398, 22 | "ImageName": "a446d5808ed14401a27f53e631c31b93.png", 23 | "State": 0, 24 | "Accessibility": 1, 25 | "SupportsLevelVoting": false, 26 | "IsAGRoom": true, 27 | "CloningAllowed": false, 28 | "SupportsScreens": true, 29 | "SupportsWalkVR": true, 30 | "SupportsTeleportVR": true 31 | }, 32 | { 33 | "RoomId": 4, 34 | "Name": "DiscGolfLake", 35 | "Description": "Throw your disc into the goal. Sounds easy, right?", 36 | "CreatorPlayerId": 72963398, 37 | "ImageName": "52cf6c3271894ecd95fb0c9b2d2209a7", 38 | "State": 0, 39 | "Accessibility": 1, 40 | "SupportsLevelVoting": false, 41 | "IsAGRoom": true, 42 | "CloningAllowed": false, 43 | "SupportsScreens": true, 44 | "SupportsWalkVR": true, 45 | "SupportsTeleportVR": true 46 | }, 47 | { 48 | "RoomId": 5, 49 | "Name": "DiscGolfPropulsion", 50 | "Description": "Throw your disc into the goal. Sounds easy, right?", 51 | "CreatorPlayerId": 72963398, 52 | "ImageName": "fc9a1acc47514b64a30d199d5ccdeca9", 53 | "State": 0, 54 | "Accessibility": 1, 55 | "SupportsLevelVoting": false, 56 | "IsAGRoom": true, 57 | "CloningAllowed": false, 58 | "SupportsScreens": true, 59 | "SupportsWalkVR": true, 60 | "SupportsTeleportVR": true 61 | }, 62 | { 63 | "RoomId": 6, 64 | "Name": "Dodgeball", 65 | "Description": "Throw dodgeballs to knock out your friends in this gym classic!", 66 | "CreatorPlayerId": 72963398, 67 | "ImageName": "6d5c494668784816bbc41d9b870e5003", 68 | "State": 0, 69 | "Accessibility": 1, 70 | "SupportsLevelVoting": false, 71 | "IsAGRoom": true, 72 | "CloningAllowed": false, 73 | "SupportsScreens": true, 74 | "SupportsWalkVR": true, 75 | "SupportsTeleportVR": true 76 | }, 77 | { 78 | "RoomId": 7, 79 | "Name": "Paddleball", 80 | "Description": "A simple rally game between two players in a plexiglass tube with a zero-g ball.", 81 | "CreatorPlayerId": 72963398, 82 | "ImageName": "ffdca6ed8bd94631ac15e3e894acb6c6", 83 | "State": 0, 84 | "Accessibility": 1, 85 | "SupportsLevelVoting": false, 86 | "IsAGRoom": true, 87 | "CloningAllowed": false, 88 | "SupportsScreens": true, 89 | "SupportsWalkVR": true, 90 | "SupportsTeleportVR": true 91 | }, 92 | { 93 | "RoomId": 8, 94 | "Name": "Paintball", 95 | "Description": "Red and Blue teams splat each other in capture the flag and team battle.", 96 | "CreatorPlayerId": 72963398, 97 | "ImageName": "93a53ced93a04f658795a87f4a4aab85", 98 | "State": 0, 99 | "Accessibility": 1, 100 | "SupportsLevelVoting": true, 101 | "IsAGRoom": true, 102 | "CloningAllowed": false, 103 | "SupportsScreens": true, 104 | "SupportsWalkVR": true, 105 | "SupportsTeleportVR": true 106 | }, 107 | { 108 | "RoomId": 13, 109 | "Name": "GoldenTrophy", 110 | "Description": "The goblin king stole Coach's Golden Trophy. Team up and embark on an epic quest to recover it!", 111 | "CreatorPlayerId": 72963398, 112 | "ImageName": "38e9d0d4eff94556a0b106508249dcf9", 113 | "State": 0, 114 | "Accessibility": 1, 115 | "SupportsLevelVoting": false, 116 | "IsAGRoom": true, 117 | "CloningAllowed": false, 118 | "SupportsScreens": true, 119 | "SupportsWalkVR": true, 120 | "SupportsTeleportVR": true 121 | }, 122 | { 123 | "RoomId": 14, 124 | "Name": "TheRiseofJumbotron", 125 | "Description": "Robot invaders threaten the galaxy! Team up with your friends and bring the laser heat!", 126 | "CreatorPlayerId": 72963398, 127 | "ImageName": "51296f28105b48178708e389b6daf057", 128 | "State": 0, 129 | "Accessibility": 1, 130 | "SupportsLevelVoting": false, 131 | "IsAGRoom": true, 132 | "CloningAllowed": false, 133 | "SupportsScreens": true, 134 | "SupportsWalkVR": true, 135 | "SupportsTeleportVR": true 136 | }, 137 | { 138 | "RoomId": 15, 139 | "Name": "CrimsonCauldron", 140 | "Description": "Can your band of adventurers brave the enchanted wilds, and lift the curse of the crimson cauldron?", 141 | "CreatorPlayerId": 72963398, 142 | "ImageName": "3ab82779dff94d11920ebf38df249395", 143 | "State": 0, 144 | "Accessibility": 1, 145 | "SupportsLevelVoting": false, 146 | "IsAGRoom": true, 147 | "CloningAllowed": false, 148 | "SupportsScreens": true, 149 | "SupportsWalkVR": true, 150 | "SupportsTeleportVR": true 151 | }, 152 | { 153 | "RoomId": 16, 154 | "Name": "IsleOfLostSkulls", 155 | "Description": "Can your pirate crew get to the Isle, defeat its fearsome guardian, and escape with the gold?", 156 | "CreatorPlayerId": 72963398, 157 | "ImageName": "45ad53aa002646d0ab3eb509b9f260ef", 158 | "State": 0, 159 | "Accessibility": 1, 160 | "SupportsLevelVoting": false, 161 | "IsAGRoom": true, 162 | "CloningAllowed": false, 163 | "SupportsScreens": true, 164 | "SupportsWalkVR": true, 165 | "SupportsTeleportVR": true 166 | }, 167 | { 168 | "RoomId": 17, 169 | "Name": "Soccer", 170 | "Description": "Teams of three run around slamming themselves into an over-sized soccer ball. Goal!", 171 | "CreatorPlayerId": 72963398, 172 | "ImageName": "51c6f5ac5e6f4777b573e7e43f8a85ea", 173 | "State": 0, 174 | "Accessibility": 1, 175 | "SupportsLevelVoting": false, 176 | "IsAGRoom": true, 177 | "CloningAllowed": false, 178 | "SupportsScreens": true, 179 | "SupportsWalkVR": true, 180 | "SupportsTeleportVR": true 181 | }, 182 | { 183 | "RoomId": 18, 184 | "Name": "LaserTag", 185 | "Description": "Teams battle each other and waves of robots.", 186 | "CreatorPlayerId": 72963398, 187 | "ImageName": "c5a72193d6904811b2d0195a6deb3125", 188 | "State": 0, 189 | "Accessibility": 1, 190 | "SupportsLevelVoting": false, 191 | "IsAGRoom": true, 192 | "CloningAllowed": false, 193 | "SupportsScreens": true, 194 | "SupportsWalkVR": true, 195 | "SupportsTeleportVR": true 196 | }, 197 | { 198 | "RoomId": 20, 199 | "Name": "RecRoyaleSquads", 200 | "Description": "Squads of three battle it out on Frontier Island. Last squad standing wins!", 201 | "CreatorPlayerId": 72963398, 202 | "ImageName": "69fc525056014e39a435c4d2fdf2b887", 203 | "State": 0, 204 | "Accessibility": 1, 205 | "SupportsLevelVoting": false, 206 | "IsAGRoom": true, 207 | "CloningAllowed": false, 208 | "SupportsScreens": true, 209 | "SupportsWalkVR": true, 210 | "SupportsTeleportVR": true 211 | }, 212 | { 213 | "RoomId": 21, 214 | "Name": "RecRoyaleSolos", 215 | "Description": "Battle it out on Frontier Island. Last person standing wins!", 216 | "CreatorPlayerId": 72963398, 217 | "ImageName": "f9e112bb67fb430d979e5ad6c2c116d4", 218 | "State": 0, 219 | "Accessibility": 1, 220 | "SupportsLevelVoting": false, 221 | "IsAGRoom": true, 222 | "CloningAllowed": false, 223 | "SupportsScreens": true, 224 | "SupportsWalkVR": true, 225 | "SupportsTeleportVR": true 226 | }, 227 | { 228 | "RoomId": 22, 229 | "Name": "Lounge", 230 | "Description": "A low-key lounge to chill with your friends. Great for private parties!", 231 | "CreatorPlayerId": 72963398, 232 | "ImageName": "3e8c2458f1e542ab8aa275e4083ee47a", 233 | "State": 0, 234 | "Accessibility": 1, 235 | "SupportsLevelVoting": false, 236 | "IsAGRoom": true, 237 | "CloningAllowed": false, 238 | "SupportsScreens": true, 239 | "SupportsWalkVR": true, 240 | "SupportsTeleportVR": true 241 | }, 242 | { 243 | "RoomId": 25, 244 | "Name": "Park", 245 | "Description": "A sprawling park with amphitheater, play fields, and a cave.", 246 | "CreatorPlayerId": 72963398, 247 | "ImageName": "79ee7af2532247f397867e48daa9d264.png", 248 | "State": 0, 249 | "Accessibility": 1, 250 | "SupportsLevelVoting": false, 251 | "IsAGRoom": true, 252 | "CloningAllowed": false, 253 | "SupportsScreens": true, 254 | "SupportsWalkVR": true, 255 | "SupportsTeleportVR": true 256 | }, 257 | { 258 | "RoomId": 27, 259 | "Name": "QuestForDraucula", 260 | "Description": "Gather your vampire hunting crew, conquer a legendary castle, and restore peace to Rec Room!", 261 | "CreatorPlayerId": 72963398, 262 | "ImageName": "d0df003353914adfaecdd23f428208b6", 263 | "State": 0, 264 | "Accessibility": 1, 265 | "SupportsLevelVoting": false, 266 | "IsAGRoom": true, 267 | "CloningAllowed": false, 268 | "SupportsScreens": true, 269 | "SupportsWalkVR": true, 270 | "SupportsTeleportVR": true 271 | }, 272 | { 273 | "RoomId": 2, 274 | "Name": "RecCenter", 275 | "Description": "A social hub to meet and mingle with friends new and old.", 276 | "CreatorPlayerId": 72963398, 277 | "ImageName": "22eefa3219f046fd9e2090814650ede3", 278 | "State": 0, 279 | "Accessibility": 1, 280 | "SupportsLevelVoting": false, 281 | "IsAGRoom": true, 282 | "CloningAllowed": false, 283 | "SupportsScreens": true, 284 | "SupportsWalkVR": true, 285 | "SupportsTeleportVR": true 286 | }, 287 | { 288 | "RoomId": 28, 289 | "Name": "Bowling", 290 | "Description": "Hang out with friends, bowl a few games, eat snacks!", 291 | "CreatorPlayerId": 72963398, 292 | "ImageName": "4d143a3359e8483e8d48116ab6cacecb", 293 | "State": 0, 294 | "Accessibility": 1, 295 | "SupportsLevelVoting": false, 296 | "IsAGRoom": true, 297 | "CloningAllowed": false, 298 | "SupportsScreens": true, 299 | "SupportsWalkVR": true, 300 | "SupportsTeleportVR": true 301 | } 302 | ] 303 | -------------------------------------------------------------------------------- /Update/motd.txt: -------------------------------------------------------------------------------- 1 | Welcome to OpenRec! 2 | 3 | BTW IF YOU SEE THIS, SHUT UP 4 | THANK YOU 5 | -------------------------------------------------------------------------------- /Update/rcslideshow.txt: -------------------------------------------------------------------------------- 1 | { 2 | "Images": [ 3 | { 4 | "SavedImageId": 1, 5 | "ImageName": "1c603274267b4f45858f7506ab48b4fa", 6 | "Username": "Origami", 7 | "RoomName": "forsophie" 8 | }, 9 | { 10 | "SavedImageId": 2, 11 | "ImageName": "dRoGHY4JvU-t1L51gbdhqQ", 12 | "Username": "Sublime", 13 | "RoomName": "TheOfficePvP" 14 | }, 15 | { 16 | "SavedImageId": 3, 17 | "ImageName": "v9_qfp0bH0a3KL0xGz4Zsg", 18 | "Username": "Jbluna", 19 | "RoomName": "USSCoach" 20 | } 21 | ], 22 | "ValidTill": "2024-06-09T19:06:44.927Z" 23 | } 24 | -------------------------------------------------------------------------------- /Vault2018CustomRooms.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Runtime.CompilerServices; 5 | using Newtonsoft.Json; 6 | using vaultgamesesh; 7 | 8 | namespace vaultgamesesh 9 | { 10 | 11 | internal sealed class c000099 12 | { 13 | // Token: 0x06000358 RID: 856 RVA: 0x0000B134 File Offset: 0x00009334 14 | public static c000099.c00009c m00002f() 15 | { 16 | List list = new List(); 17 | foreach (KeyValuePair keyValuePair in c00005d.f000050) 18 | { 19 | c00005d.c000062 item = new c00005d.c000062 20 | { 21 | RoomName = keyValuePair.Value.Room.Name, 22 | RoomId = (long)((int)keyValuePair.Value.Room.RoomId), 23 | ImageName = keyValuePair.Value.Room.ImageName 24 | }; 25 | list.Add(item); 26 | } 27 | return new c000099.c00009c 28 | { 29 | Name = "Check Out All The Rooms Today!", 30 | FeaturedRooms = list 31 | }; 32 | } 33 | 34 | // Token: 0x06000359 RID: 857 RVA: 0x0000B204 File Offset: 0x00009404 35 | public static List m000009() 36 | { 37 | List list = new List(); 38 | foreach (KeyValuePair keyValuePair in c00005d.m00003b()) 39 | { 40 | list.Add(keyValuePair.Value.Room); 41 | } 42 | return list; 43 | } 44 | 45 | // Token: 0x0600035A RID: 858 RVA: 0x0000B268 File Offset: 0x00009468 46 | public static List m000035() 47 | { 48 | List list = new List(); 49 | foreach (KeyValuePair keyValuePair in c00005d.f000024) 50 | { 51 | list.Add(keyValuePair.Value.Room); 52 | } 53 | return list; 54 | } 55 | 56 | // Token: 0x0600035B RID: 859 RVA: 0x0000B2CC File Offset: 0x000094CC 57 | public static List m000055() 58 | { 59 | List list = new List(); 60 | foreach (KeyValuePair keyValuePair in c00005d.m00003a()) 61 | { 62 | list.Add(keyValuePair.Value.Room); 63 | } 64 | return list; 65 | } 66 | 67 | // Token: 0x0600035C RID: 860 RVA: 0x0000B330 File Offset: 0x00009530 68 | public static List m000056(string p0) 69 | { 70 | string[] array = p0.Split(new char[] 71 | { 72 | ' ' 73 | }); 74 | List list = new List(); 75 | foreach (KeyValuePair keyValuePair in c00005d.m00003b()) 76 | { 77 | c00005d.c000060 value = keyValuePair.Value; 78 | bool flag = true; 79 | foreach (string text in array) 80 | { 81 | if (flag) 82 | { 83 | if (text.StartsWith("#")) 84 | { 85 | bool flag2 = false; 86 | foreach (c00005d.c000063 c in value.Tags) 87 | { 88 | if ("#" + c.Tag.ToLower() == text.ToLower()) 89 | { 90 | flag2 = true; 91 | } 92 | } 93 | if (!flag2) 94 | { 95 | flag = false; 96 | } 97 | } 98 | else if (!value.Room.Name.ToLower().Contains(text.ToLower())) 99 | { 100 | flag = false; 101 | } 102 | } 103 | } 104 | if (flag) 105 | { 106 | list.Add(value.Room); 107 | } 108 | } 109 | return list; 110 | } 111 | 112 | // Token: 0x0600035D RID: 861 RVA: 0x0000B488 File Offset: 0x00009688 113 | public static c00005d.c000060 m000057(ulong p0) 114 | { 115 | foreach (KeyValuePair keyValuePair in c00005d.f000024) 116 | { 117 | if (keyValuePair.Value.Room.RoomId == p0) 118 | { 119 | return keyValuePair.Value; 120 | } 121 | } 122 | return null; 123 | } 124 | 125 | // Token: 0x0600035E RID: 862 RVA: 0x0000B4F8 File Offset: 0x000096F8 126 | public static c000099.c00009b m00000a(string p0) 127 | { 128 | c000099.c00009b c00009b = new c000099.c00009b(); 129 | c000099.c00009a c00009a = JsonConvert.DeserializeObject(p0); 130 | c00005d.c000060 c = c000099.m000057(c00009a.RoomId); 131 | if (c == null) 132 | { 133 | c00009b.Result = (c000099.enum09d)2; 134 | c00009b.RoomDetails = new c00005d.c000060(); 135 | } 136 | else 137 | { 138 | c00009b.Result = (c000099.enum09d)0; 139 | c00009b.RoomDetails = c; 140 | c00009b.RoomDetails.Room.Name = c00009a.Name; 141 | ulong roomId = (ulong)((long)new Random().Next(100, 9999999)); 142 | c00009b.RoomDetails.Room.RoomId = roomId; 143 | c00009b.RoomDetails.Room.IsAGRoom = false; 144 | c00009b.RoomDetails.Scenes[0].IsSandbox = true; 145 | c00009b.RoomDetails.Scenes[0].RoomId = roomId; 146 | c00009b.RoomDetails.Scenes[0].DataBlobName = string.Empty; 147 | c00009b.RoomDetails.Scenes[0].DataModifiedAt = DateTime.Now; 148 | c00009b.RoomDetails.Room.CreatorPlayerId = server.APIServer.CachedPlayerID; 149 | } 150 | c00005d.m00003a().Add(c00009a.Name, c); 151 | string text = c000004.m000007() + c00009b.RoomDetails.Room.Name; 152 | if (!Directory.Exists(text)) 153 | { 154 | Directory.CreateDirectory(text); 155 | } 156 | File.WriteAllText(text + "\\RoomDetails.json", JsonConvert.SerializeObject(c00009b.RoomDetails)); 157 | return c00009b; 158 | } 159 | 160 | // Token: 0x0200009A RID: 154 161 | public sealed class c00009a 162 | { 163 | // Token: 0x17000105 RID: 261 164 | // (get) Token: 0x06000360 RID: 864 RVA: 0x0000373A File Offset: 0x0000193A 165 | // (set) Token: 0x06000361 RID: 865 RVA: 0x00003742 File Offset: 0x00001942 166 | public string Name 167 | { 168 | [CompilerGenerated] 169 | get 170 | { 171 | return this.f00000a; 172 | } 173 | [CompilerGenerated] 174 | set 175 | { 176 | this.f00000a = value; 177 | } 178 | } 179 | 180 | // Token: 0x17000106 RID: 262 181 | // (get) Token: 0x06000362 RID: 866 RVA: 0x0000374B File Offset: 0x0000194B 182 | // (set) Token: 0x06000363 RID: 867 RVA: 0x00003753 File Offset: 0x00001953 183 | public ulong RoomId 184 | { 185 | [CompilerGenerated] 186 | get 187 | { 188 | return this.f000023; 189 | } 190 | [CompilerGenerated] 191 | set 192 | { 193 | this.f000023 = value; 194 | } 195 | } 196 | 197 | // Token: 0x040001DD RID: 477 198 | private string f00000a; 199 | 200 | // Token: 0x040001DE RID: 478 201 | private ulong f000023; 202 | } 203 | 204 | // Token: 0x0200009B RID: 155 205 | public sealed class c00009b 206 | { 207 | // Token: 0x17000107 RID: 263 208 | // (get) Token: 0x06000365 RID: 869 RVA: 0x0000375C File Offset: 0x0000195C 209 | // (set) Token: 0x06000366 RID: 870 RVA: 0x00003764 File Offset: 0x00001964 210 | public c000099.enum09d Result 211 | { 212 | [CompilerGenerated] 213 | get 214 | { 215 | return this.f000042; 216 | } 217 | [CompilerGenerated] 218 | set 219 | { 220 | this.f000042 = value; 221 | } 222 | } 223 | 224 | // Token: 0x17000108 RID: 264 225 | // (get) Token: 0x06000367 RID: 871 RVA: 0x0000376D File Offset: 0x0000196D 226 | // (set) Token: 0x06000368 RID: 872 RVA: 0x00003775 File Offset: 0x00001975 227 | public c00005d.c000060 RoomDetails 228 | { 229 | [CompilerGenerated] 230 | get 231 | { 232 | return this.f00004f; 233 | } 234 | [CompilerGenerated] 235 | set 236 | { 237 | this.f00004f = value; 238 | } 239 | } 240 | 241 | // Token: 0x040001DF RID: 479 242 | private c000099.enum09d f000042; 243 | 244 | // Token: 0x040001E0 RID: 480 245 | private c00005d.c000060 f00004f; 246 | } 247 | 248 | // Token: 0x0200009C RID: 156 249 | public sealed class c00009c 250 | { 251 | // Token: 0x17000109 RID: 265 252 | // (get) Token: 0x0600036A RID: 874 RVA: 0x0000377E File Offset: 0x0000197E 253 | // (set) Token: 0x0600036B RID: 875 RVA: 0x00003786 File Offset: 0x00001986 254 | public string Name 255 | { 256 | [CompilerGenerated] 257 | get 258 | { 259 | return this.f00000a; 260 | } 261 | [CompilerGenerated] 262 | set 263 | { 264 | this.f00000a = value; 265 | } 266 | } 267 | 268 | // Token: 0x1700010A RID: 266 269 | // (get) Token: 0x0600036C RID: 876 RVA: 0x0000378F File Offset: 0x0000198F 270 | // (set) Token: 0x0600036D RID: 877 RVA: 0x00003797 File Offset: 0x00001997 271 | public List FeaturedRooms 272 | { 273 | [CompilerGenerated] 274 | get 275 | { 276 | return this.f000031; 277 | } 278 | [CompilerGenerated] 279 | set 280 | { 281 | this.f000031 = value; 282 | } 283 | } 284 | 285 | // Token: 0x040001E1 RID: 481 286 | private string f00000a; 287 | 288 | // Token: 0x040001E2 RID: 482 289 | private List f000031; 290 | } 291 | 292 | // Token: 0x0200009D RID: 157 293 | public enum enum09d 294 | { 295 | 296 | } 297 | } 298 | } -------------------------------------------------------------------------------- /Vault2018GameSessions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Runtime.CompilerServices; 4 | using System.Threading; 5 | using Newtonsoft.Json; 6 | using System.IO; 7 | 8 | namespace vaultgamesesh 9 | { 10 | // Token: 0x02000005 RID: 5 11 | internal sealed class c000041 12 | { 13 | // Token: 0x0600000E RID: 14 RVA: 0x000022C0 File Offset: 0x000004C0 14 | public static c000041.c000044 m00002f() 15 | { 16 | return new c000041.c000044 17 | { 18 | GameSessionId = 20181L, 19 | PhotonRegionId = "us", 20 | PhotonRoomId = "1", 21 | Name = "DormRoom", 22 | RoomId = 1L, 23 | RoomSceneId = 1L, 24 | RoomSceneLocationId = "76d98498-60a1-430c-ab76-b54a29b7a163", 25 | IsSandbox = false, 26 | DataBlobName = string.Empty, 27 | PlayerEventId = null, 28 | Private = false, 29 | GameInProgress = false, 30 | MaxCapacity = 20, 31 | IsFull = false 32 | }; 33 | } 34 | 35 | // Token: 0x0600000F RID: 15 RVA: 0x00002370 File Offset: 0x00000570 36 | public static c000041.c000042 m000030(string p0) 37 | { 38 | c00006b.c00006c c00006c = JsonConvert.DeserializeObject(p0); 39 | Console.WriteLine("[BackEnd] Room Name: " + c00006c.RoomName); 40 | Thread.Sleep(1); 41 | Console.WriteLine("[BackEnd] Scene Name: " + c00006c.SceneName); 42 | bool flag = c00005d.m00003b().ContainsKey(c00006c.RoomName); 43 | if (flag) 44 | { 45 | c000041.f000043 = c00005d.m00003b()[c00006c.RoomName]; 46 | } 47 | else 48 | { 49 | bool flag2 = c00005d.m00003a().ContainsKey(c00006c.RoomName); 50 | if (flag2) 51 | { 52 | c000041.f000043 = c00005d.m00003a()[c00006c.RoomName]; 53 | } 54 | else 55 | { 56 | c000041.f000043 = c00005d.f000050["DormRoom"]; 57 | } 58 | } 59 | int num = 0; 60 | for (int i = 0; i < c000041.f000043.Scenes.Count(); i++) 61 | { 62 | bool flag3 = c000041.f000043.Scenes[i].Name == c00006c.SceneName; 63 | if (flag3) 64 | { 65 | num = i; 66 | } 67 | } 68 | string text = string.Format("{0}", c000041.f000043.Scenes[num].RoomId); 69 | bool flag4 = c000041.f000013 != null && text + c000004.f000003 == c000041.f000013.PhotonRoomId; 70 | if (flag4) 71 | { 72 | text += "Instance2"; 73 | } 74 | text += c000004.f000003; 75 | bool @private = c00006c.Private; 76 | if (@private) 77 | { 78 | text += string.Format("Pri{0}", server.APIServer.CachedPlayerID); 79 | } 80 | long gameseshid = 20181L; 81 | if (start.Program.bannedflag == true) 82 | { 83 | gameseshid = 100L; 84 | text += "BANNED"; 85 | } 86 | 87 | c000041.f000013 = new c000041.c000044 88 | { 89 | GameSessionId = gameseshid, 90 | PhotonRegionId = "us", 91 | PhotonRoomId = text, 92 | Name = c000041.f000043.Room.Name, 93 | RoomId = (long)c000041.f000043.Room.RoomId, 94 | RoomSceneId = (long)(num + 1), 95 | RoomSceneLocationId = c000041.f000043.Scenes[num].RoomSceneLocationId, 96 | IsSandbox = c000041.f000043.Scenes[num].IsSandbox, 97 | DataBlobName = c000041.f000043.Scenes[num].DataBlobName, 98 | PlayerEventId = null, 99 | Private = c00006c.Private, 100 | GameInProgress = false, 101 | MaxCapacity = 20, 102 | IsFull = false 103 | }; 104 | c000041.c000042 c = new c000041.c000042(); 105 | c.Result = 0; 106 | c.GameSession = c000041.f000013; 107 | c.RoomDetails = c000041.f000043; 108 | Console.WriteLine(JsonConvert.SerializeObject(c)); 109 | return c; 110 | } 111 | 112 | // Token: 0x0400000B RID: 11 113 | public static c00005d.c000060 f000043; 114 | 115 | // Token: 0x0400000C RID: 12 116 | public static c000041.c000044 f000013; 117 | 118 | // Token: 0x02000028 RID: 40 119 | public sealed class c000042 120 | { 121 | // Token: 0x17000039 RID: 57 122 | // (get) Token: 0x060000D7 RID: 215 RVA: 0x0000B290 File Offset: 0x00009490 123 | // (set) Token: 0x060000D8 RID: 216 RVA: 0x0000B2A8 File Offset: 0x000094A8 124 | public int Result 125 | { 126 | [CompilerGenerated] 127 | get 128 | { 129 | return this.f00001f; 130 | } 131 | [CompilerGenerated] 132 | set 133 | { 134 | this.f00001f = value; 135 | } 136 | } 137 | 138 | // Token: 0x1700003A RID: 58 139 | // (get) Token: 0x060000D9 RID: 217 RVA: 0x0000B2B4 File Offset: 0x000094B4 140 | // (set) Token: 0x060000DA RID: 218 RVA: 0x0000B2CC File Offset: 0x000094CC 141 | public c000041.c000044 GameSession 142 | { 143 | [CompilerGenerated] 144 | get 145 | { 146 | return this.f000013; 147 | } 148 | [CompilerGenerated] 149 | set 150 | { 151 | this.f000013 = value; 152 | } 153 | } 154 | 155 | // Token: 0x1700003B RID: 59 156 | // (get) Token: 0x060000DB RID: 219 RVA: 0x0000B2D8 File Offset: 0x000094D8 157 | // (set) Token: 0x060000DC RID: 220 RVA: 0x0000B2F0 File Offset: 0x000094F0 158 | public c00005d.c000060 RoomDetails 159 | { 160 | [CompilerGenerated] 161 | get 162 | { 163 | return this.f000045; 164 | } 165 | [CompilerGenerated] 166 | set 167 | { 168 | this.f000045 = value; 169 | } 170 | } 171 | 172 | // Token: 0x04000075 RID: 117 173 | private int f00001f; 174 | 175 | // Token: 0x04000076 RID: 118 176 | private c000041.c000044 f000013; 177 | 178 | // Token: 0x04000077 RID: 119 179 | private c00005d.c000060 f000045; 180 | } 181 | 182 | // Token: 0x02000029 RID: 41 183 | public enum enum043 184 | { 185 | 186 | } 187 | 188 | // Token: 0x0200002A RID: 42 189 | public sealed class c000044 190 | { 191 | // Token: 0x1700003C RID: 60 192 | // (get) Token: 0x060000DE RID: 222 RVA: 0x0000B304 File Offset: 0x00009504 193 | // (set) Token: 0x060000DF RID: 223 RVA: 0x0000B31C File Offset: 0x0000951C 194 | public long GameSessionId 195 | { 196 | 197 | get 198 | { 199 | return this.f00002c; 200 | } 201 | 202 | set 203 | { 204 | this.f00002c = value; 205 | } 206 | } 207 | 208 | // Token: 0x1700003D RID: 61 209 | // (get) Token: 0x060000E0 RID: 224 RVA: 0x0000B326 File Offset: 0x00009526 210 | // (set) Token: 0x060000E1 RID: 225 RVA: 0x0000B32E File Offset: 0x0000952E 211 | public string PhotonRegionId { get; set; } 212 | 213 | // Token: 0x1700003E RID: 62 214 | // (get) Token: 0x060000E2 RID: 226 RVA: 0x0000B338 File Offset: 0x00009538 215 | // (set) Token: 0x060000E3 RID: 227 RVA: 0x0000B350 File Offset: 0x00009550 216 | public string PhotonRoomId 217 | { 218 | 219 | get 220 | { 221 | return this.f000003; 222 | } 223 | 224 | set 225 | { 226 | this.f000003 = value; 227 | } 228 | } 229 | 230 | // Token: 0x1700003F RID: 63 231 | // (get) Token: 0x060000E4 RID: 228 RVA: 0x0000B35C File Offset: 0x0000955C 232 | // (set) Token: 0x060000E5 RID: 229 RVA: 0x0000B374 File Offset: 0x00009574 233 | public string Name 234 | { 235 | 236 | get 237 | { 238 | return this.f000035; 239 | } 240 | 241 | set 242 | { 243 | this.f000035 = value; 244 | } 245 | } 246 | 247 | // Token: 0x17000040 RID: 64 248 | // (get) Token: 0x060000E6 RID: 230 RVA: 0x0000B380 File Offset: 0x00009580 249 | // (set) Token: 0x060000E7 RID: 231 RVA: 0x0000B398 File Offset: 0x00009598 250 | public long RoomId 251 | { 252 | 253 | get 254 | { 255 | return this.f00000d; 256 | } 257 | 258 | set 259 | { 260 | this.f00000d = value; 261 | } 262 | } 263 | 264 | // Token: 0x17000041 RID: 65 265 | // (get) Token: 0x060000E8 RID: 232 RVA: 0x0000B3A4 File Offset: 0x000095A4 266 | // (set) Token: 0x060000E9 RID: 233 RVA: 0x0000B3BC File Offset: 0x000095BC 267 | public long RoomSceneId 268 | { 269 | 270 | get 271 | { 272 | return this.f000046; 273 | } 274 | 275 | set 276 | { 277 | this.f000046 = value; 278 | } 279 | } 280 | 281 | // Token: 0x17000042 RID: 66 282 | // (get) Token: 0x060000EA RID: 234 RVA: 0x0000B3C8 File Offset: 0x000095C8 283 | // (set) Token: 0x060000EB RID: 235 RVA: 0x0000B3E0 File Offset: 0x000095E0 284 | public string RoomSceneLocationId 285 | { 286 | 287 | get 288 | { 289 | return this.f00000f; 290 | } 291 | 292 | set 293 | { 294 | this.f00000f = value; 295 | } 296 | } 297 | 298 | // Token: 0x17000043 RID: 67 299 | // (get) Token: 0x060000EC RID: 236 RVA: 0x0000B3EC File Offset: 0x000095EC 300 | // (set) Token: 0x060000ED RID: 237 RVA: 0x0000B404 File Offset: 0x00009604 301 | public bool IsSandbox 302 | { 303 | 304 | get 305 | { 306 | return this.f000017; 307 | } 308 | 309 | set 310 | { 311 | this.f000017 = value; 312 | } 313 | } 314 | 315 | // Token: 0x17000044 RID: 68 316 | // (get) Token: 0x060000EE RID: 238 RVA: 0x0000B410 File Offset: 0x00009610 317 | // (set) Token: 0x060000EF RID: 239 RVA: 0x0000B428 File Offset: 0x00009628 318 | public string DataBlobName 319 | { 320 | 321 | get 322 | { 323 | return this.f000009; 324 | } 325 | 326 | set 327 | { 328 | this.f000009 = value; 329 | } 330 | } 331 | 332 | // Token: 0x17000045 RID: 69 333 | // (get) Token: 0x060000F0 RID: 240 RVA: 0x0000B434 File Offset: 0x00009634 334 | // (set) Token: 0x060000F1 RID: 241 RVA: 0x0000B44C File Offset: 0x0000964C 335 | public long? PlayerEventId 336 | { 337 | 338 | get 339 | { 340 | return this.f000047; 341 | } 342 | 343 | set 344 | { 345 | this.f000047 = value; 346 | } 347 | } 348 | 349 | // Token: 0x17000046 RID: 70 350 | // (get) Token: 0x060000F2 RID: 242 RVA: 0x0000B458 File Offset: 0x00009658 351 | // (set) Token: 0x060000F3 RID: 243 RVA: 0x0000B470 File Offset: 0x00009670 352 | public bool Private 353 | { 354 | 355 | get 356 | { 357 | return this.f000019; 358 | } 359 | 360 | set 361 | { 362 | this.f000019 = value; 363 | } 364 | } 365 | 366 | // Token: 0x17000047 RID: 71 367 | // (get) Token: 0x060000F4 RID: 244 RVA: 0x0000B47C File Offset: 0x0000967C 368 | // (set) Token: 0x060000F5 RID: 245 RVA: 0x0000B494 File Offset: 0x00009694 369 | public bool GameInProgress 370 | { 371 | 372 | get 373 | { 374 | return this.f00001a; 375 | } 376 | 377 | set 378 | { 379 | this.f00001a = value; 380 | } 381 | } 382 | 383 | // Token: 0x17000048 RID: 72 384 | // (get) Token: 0x060000F6 RID: 246 RVA: 0x0000B4A0 File Offset: 0x000096A0 385 | // (set) Token: 0x060000F7 RID: 247 RVA: 0x0000B4B8 File Offset: 0x000096B8 386 | public int MaxCapacity 387 | { 388 | 389 | get 390 | { 391 | return this.f000048; 392 | } 393 | 394 | set 395 | { 396 | this.f000048 = value; 397 | } 398 | } 399 | 400 | // Token: 0x17000049 RID: 73 401 | // (get) Token: 0x060000F8 RID: 248 RVA: 0x0000B4C4 File Offset: 0x000096C4 402 | // (set) Token: 0x060000F9 RID: 249 RVA: 0x0000B4DC File Offset: 0x000096DC 403 | public bool IsFull 404 | { 405 | 406 | get 407 | { 408 | return this.f00001c; 409 | } 410 | 411 | set 412 | { 413 | this.f00001c = value; 414 | } 415 | } 416 | 417 | // Token: 0x0400007A RID: 122 418 | private long f00002c; 419 | 420 | // Token: 0x0400007B RID: 123 421 | private string f000002; 422 | 423 | // Token: 0x0400007C RID: 124 424 | private string f000003; 425 | 426 | // Token: 0x0400007D RID: 125 427 | private string f000035; 428 | 429 | // Token: 0x0400007E RID: 126 430 | private long f00000d; 431 | 432 | // Token: 0x0400007F RID: 127 433 | private long f000046; 434 | 435 | // Token: 0x04000080 RID: 128 436 | private string f00000f; 437 | 438 | // Token: 0x04000081 RID: 129 439 | private bool f000017; 440 | 441 | // Token: 0x04000082 RID: 130 442 | private string f000009; 443 | 444 | // Token: 0x04000083 RID: 131 445 | private long? f000047; 446 | 447 | // Token: 0x04000084 RID: 132 448 | private bool f000019; 449 | 450 | // Token: 0x04000085 RID: 133 451 | private bool f00001a; 452 | 453 | // Token: 0x04000086 RID: 134 454 | private int f000048; 455 | 456 | // Token: 0x04000087 RID: 135 457 | private bool f00001c; 458 | } 459 | } 460 | } 461 | -------------------------------------------------------------------------------- /Vault2018Player.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Net; 5 | using System.Runtime.CompilerServices; 6 | using Newtonsoft.Json; 7 | 8 | namespace vaultgamesesh 9 | { 10 | // Token: 0x02000008 RID: 8 11 | public sealed class c000079 12 | { 13 | // Token: 0x06000017 RID: 23 RVA: 0x00004F14 File Offset: 0x00003114 14 | public static List m000009() 15 | { 16 | return c000079.f000031; 17 | } 18 | 19 | // Token: 0x06000018 RID: 24 RVA: 0x00004F2B File Offset: 0x0000312B 20 | public static void m000036(List p0) 21 | { 22 | c000079.f000031 = p0; 23 | } 24 | 25 | // Token: 0x04000010 RID: 16 26 | private static List f000031; 27 | 28 | // Token: 0x02000037 RID: 55 29 | public sealed class c00007a 30 | { 31 | // Token: 0x17000080 RID: 128 32 | // (get) Token: 0x0600016E RID: 366 RVA: 0x0000BC2C File Offset: 0x00009E2C 33 | // (set) Token: 0x0600016F RID: 367 RVA: 0x0000BC44 File Offset: 0x00009E44 34 | public ulong Id 35 | { 36 | [CompilerGenerated] 37 | get 38 | { 39 | return this.f000001; 40 | } 41 | [CompilerGenerated] 42 | set 43 | { 44 | this.f000001 = value; 45 | } 46 | } 47 | 48 | // Token: 0x17000081 RID: 129 49 | // (get) Token: 0x06000170 RID: 368 RVA: 0x0000BC50 File Offset: 0x00009E50 50 | // (set) Token: 0x06000171 RID: 369 RVA: 0x0000BC68 File Offset: 0x00009E68 51 | public string DisplayName 52 | { 53 | [CompilerGenerated] 54 | get 55 | { 56 | return this.f000002; 57 | } 58 | [CompilerGenerated] 59 | set 60 | { 61 | this.f000002 = value; 62 | } 63 | } 64 | 65 | // Token: 0x17000082 RID: 130 66 | // (get) Token: 0x06000172 RID: 370 RVA: 0x0000BC74 File Offset: 0x00009E74 67 | // (set) Token: 0x06000173 RID: 371 RVA: 0x0000BC8C File Offset: 0x00009E8C 68 | public string Username 69 | { 70 | [CompilerGenerated] 71 | get 72 | { 73 | return this.f000003; 74 | } 75 | [CompilerGenerated] 76 | set 77 | { 78 | this.f000003 = value; 79 | } 80 | } 81 | 82 | // Token: 0x17000083 RID: 131 83 | // (get) Token: 0x06000174 RID: 372 RVA: 0x0000BC98 File Offset: 0x00009E98 84 | // (set) Token: 0x06000175 RID: 373 RVA: 0x0000BCB0 File Offset: 0x00009EB0 85 | public int Level 86 | { 87 | [CompilerGenerated] 88 | get 89 | { 90 | return this.f000004; 91 | } 92 | [CompilerGenerated] 93 | set 94 | { 95 | this.f000004 = value; 96 | } 97 | } 98 | 99 | // Token: 0x17000084 RID: 132 100 | // (get) Token: 0x06000176 RID: 374 RVA: 0x0000BCBC File Offset: 0x00009EBC 101 | // (set) Token: 0x06000177 RID: 375 RVA: 0x0000BCD4 File Offset: 0x00009ED4 102 | public int XP 103 | { 104 | [CompilerGenerated] 105 | get 106 | { 107 | return this.f000005; 108 | } 109 | [CompilerGenerated] 110 | set 111 | { 112 | this.f000005 = value; 113 | } 114 | } 115 | 116 | // Token: 0x17000085 RID: 133 117 | // (get) Token: 0x06000178 RID: 376 RVA: 0x0000BCE0 File Offset: 0x00009EE0 118 | // (set) Token: 0x06000179 RID: 377 RVA: 0x0000BCF8 File Offset: 0x00009EF8 119 | public bool Developer 120 | { 121 | [CompilerGenerated] 122 | get 123 | { 124 | return this.f000039; 125 | } 126 | [CompilerGenerated] 127 | set 128 | { 129 | this.f000039 = value; 130 | } 131 | } 132 | 133 | // Token: 0x17000086 RID: 134 134 | // (get) Token: 0x0600017A RID: 378 RVA: 0x0000BD04 File Offset: 0x00009F04 135 | // (set) Token: 0x0600017B RID: 379 RVA: 0x0000BD1C File Offset: 0x00009F1C 136 | public bool IsBooster 137 | { 138 | [CompilerGenerated] 139 | get 140 | { 141 | return this.f000016; 142 | } 143 | [CompilerGenerated] 144 | set 145 | { 146 | this.f000016 = value; 147 | } 148 | } 149 | 150 | // Token: 0x17000087 RID: 135 151 | // (get) Token: 0x0600017C RID: 380 RVA: 0x0000BD28 File Offset: 0x00009F28 152 | // (set) Token: 0x0600017D RID: 381 RVA: 0x0000BD40 File Offset: 0x00009F40 153 | public int BootMultiplier 154 | { 155 | [CompilerGenerated] 156 | get 157 | { 158 | return this.f000008; 159 | } 160 | [CompilerGenerated] 161 | set 162 | { 163 | this.f000008 = value; 164 | } 165 | } 166 | 167 | // Token: 0x040000C1 RID: 193 168 | private ulong f000001; 169 | 170 | // Token: 0x040000C2 RID: 194 171 | private string f000002; 172 | 173 | // Token: 0x040000C3 RID: 195 174 | private string f000003; 175 | 176 | // Token: 0x040000C4 RID: 196 177 | private int f000004; 178 | 179 | // Token: 0x040000C5 RID: 197 180 | private int f000005; 181 | 182 | // Token: 0x040000C6 RID: 198 183 | private bool f000039; 184 | 185 | // Token: 0x040000C7 RID: 199 186 | private bool f000016; 187 | 188 | // Token: 0x040000C8 RID: 200 189 | private int f000008; 190 | } 191 | } 192 | } -------------------------------------------------------------------------------- /Vault2018WS.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Net; 5 | using System.Text; 6 | using Newtonsoft.Json; 7 | using start; 8 | using WebSocketSharp; 9 | using WebSocketSharp.Server; 10 | using ws; 11 | 12 | namespace vaultgamesesh 13 | { 14 | public class Late2018WebSock 15 | { 16 | public Late2018WebSock() 17 | { 18 | Late2018WebSock.instance = this; 19 | this.WebSock.AddWebSocketService("/api/notification/v2"); 20 | this.WebSock.AddWebSocketService("/hub/v1"); 21 | this.WebSock.Start(); 22 | Console.WriteLine("[LateWebSocket.cs] has started."); 23 | Console.WriteLine("[LateWebSocket.cs] is listening."); 24 | } 25 | 26 | public void Broadcast(Notification.Reponse res) 27 | { 28 | Console.WriteLine(string.Concat(new string[] 29 | { 30 | "Broadcasting ", 31 | JsonConvert.SerializeObject(res), 32 | " to ", 33 | this.WebSock.WebSocketServices["/api/notification/v2"].Sessions.Count.ToString(), 34 | " clients." 35 | })); 36 | 37 | WebSock.WebSocketServices["/api/notification/v2"].Sessions.Broadcast(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(res))); 38 | } 39 | 40 | public static Late2018WebSock instance; 41 | 42 | public WebSocketServer WebSock = new WebSocketServer("ws://localhost:20161/"); 43 | 44 | public class HubWS : WebSocketBehavior 45 | { 46 | protected override void OnMessage(MessageEventArgs e) 47 | { 48 | Console.WriteLine("LateWebSocket.cs Hub Requested."); 49 | base.Send(JsonConvert.SerializeObject(new Late2018WebSock.Hub())); 50 | } 51 | 52 | public HubWS() 53 | { 54 | } 55 | } 56 | 57 | public class Hub : WebSocketBehavior 58 | { 59 | public Hub() 60 | { 61 | this.accessToken = "AccessDeezNuts"; 62 | this.SupportedTransports = new List(); 63 | this.negotiateVersion = 0; 64 | this.url = new Uri(string.Format("http://localhost:{0}/", "2018")); 65 | } 66 | 67 | public Uri url { get; set; } 68 | 69 | public string accessToken { get; set; } 70 | 71 | public List SupportedTransports { get; set; } 72 | 73 | public int negotiateVersion { get; set; } 74 | } 75 | 76 | public class NotificationWS : WebSocketBehavior 77 | { 78 | protected override void OnMessage(MessageEventArgs p0) 79 | { 80 | bool flag = new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/banned.txt").Contains(File.ReadAllText("SaveData\\Profile\\userid.txt")); 81 | if (flag) 82 | { 83 | Console.ForegroundColor = ConsoleColor.Red; 84 | Console.WriteLine("You are banned. Using this version of OpenRec will not work, please download OpenRec 0.4.2 or prior."); 85 | Console.ForegroundColor = ConsoleColor.Green; 86 | Program.bannedflag = true; 87 | Late2018WebSock.instance.Broadcast(Notification.Reponse.createBannedResponse()); 88 | } 89 | Console.WriteLine("LateWebSocket.cs Notif Requested."); 90 | bool flag2 = p0.Data == null; 91 | bool flag3 = flag2; 92 | bool flag4 = flag3; 93 | if (flag4) 94 | { 95 | base.Send(string.Empty); 96 | } 97 | else 98 | { 99 | base.Send(Notification2018.ProcessRequest(p0.Data)); 100 | } 101 | } 102 | 103 | public NotificationWS() 104 | { 105 | } 106 | } 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /VaultGameConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | 4 | namespace vaultgamesesh 5 | { 6 | // Token: 0x02000002 RID: 2 7 | internal sealed class c000004 8 | { 9 | public static string m000007() 10 | { 11 | string text = "SaveData\\" + "Rooms\\"; 12 | bool flag = !Directory.Exists(text); 13 | bool flag2 = flag; 14 | if (flag2) 15 | { 16 | Directory.CreateDirectory(text); 17 | } 18 | return text; 19 | } 20 | // Token: 0x04000001 RID: 1 21 | public static ulong f000001 = 0UL; 22 | 23 | // Token: 0x04000002 RID: 2 24 | public static string f000002 = "us"; 25 | 26 | // Token: 0x04000003 RID: 3 27 | public static string f000003 = "OpenRec_v0.6.0"; 28 | 29 | } 30 | } -------------------------------------------------------------------------------- /VaultSceneInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.CompilerServices; 3 | 4 | namespace vaultgamesesh 5 | { 6 | // Token: 0x02000007 RID: 7 7 | internal sealed class c00006b 8 | { 9 | // Token: 0x02000035 RID: 53 10 | public sealed class c00006c 11 | { 12 | // Token: 0x17000077 RID: 119 13 | // (get) Token: 0x0600015A RID: 346 RVA: 0x0000BAD8 File Offset: 0x00009CD8 14 | // (set) Token: 0x0600015B RID: 347 RVA: 0x0000BAF0 File Offset: 0x00009CF0 15 | public ulong[] ExpectedPlayerIds 16 | { 17 | [CompilerGenerated] 18 | get 19 | { 20 | return this.f000001; 21 | } 22 | [CompilerGenerated] 23 | set 24 | { 25 | this.f000001 = value; 26 | } 27 | } 28 | 29 | // Token: 0x17000078 RID: 120 30 | // (get) Token: 0x0600015C RID: 348 RVA: 0x0000BAFC File Offset: 0x00009CFC 31 | // (set) Token: 0x0600015D RID: 349 RVA: 0x0000BB14 File Offset: 0x00009D14 32 | public c00006b.c00006d[] RegionPings 33 | { 34 | [CompilerGenerated] 35 | get 36 | { 37 | return this.f00004f; 38 | } 39 | [CompilerGenerated] 40 | set 41 | { 42 | this.f00004f = value; 43 | } 44 | } 45 | 46 | // Token: 0x17000079 RID: 121 47 | // (get) Token: 0x0600015E RID: 350 RVA: 0x0000BB20 File Offset: 0x00009D20 48 | // (set) Token: 0x0600015F RID: 351 RVA: 0x0000BB38 File Offset: 0x00009D38 49 | public string[] RoomTags 50 | { 51 | [CompilerGenerated] 52 | get 53 | { 54 | return this.f000003; 55 | } 56 | [CompilerGenerated] 57 | set 58 | { 59 | this.f000003 = value; 60 | } 61 | } 62 | 63 | // Token: 0x1700007A RID: 122 64 | // (get) Token: 0x06000160 RID: 352 RVA: 0x0000BB44 File Offset: 0x00009D44 65 | // (set) Token: 0x06000161 RID: 353 RVA: 0x0000BB5C File Offset: 0x00009D5C 66 | public string RoomName 67 | { 68 | [CompilerGenerated] 69 | get 70 | { 71 | return this.f000035; 72 | } 73 | [CompilerGenerated] 74 | set 75 | { 76 | this.f000035 = value; 77 | } 78 | } 79 | 80 | // Token: 0x1700007B RID: 123 81 | // (get) Token: 0x06000162 RID: 354 RVA: 0x0000BB68 File Offset: 0x00009D68 82 | // (set) Token: 0x06000163 RID: 355 RVA: 0x0000BB80 File Offset: 0x00009D80 83 | public string SceneName 84 | { 85 | [CompilerGenerated] 86 | get 87 | { 88 | return this.f000036; 89 | } 90 | [CompilerGenerated] 91 | set 92 | { 93 | this.f000036 = value; 94 | } 95 | } 96 | 97 | // Token: 0x1700007C RID: 124 98 | // (get) Token: 0x06000164 RID: 356 RVA: 0x0000BB8C File Offset: 0x00009D8C 99 | // (set) Token: 0x06000165 RID: 357 RVA: 0x0000BBA4 File Offset: 0x00009DA4 100 | public int AdditionalPlayerJoinMode 101 | { 102 | [CompilerGenerated] 103 | get 104 | { 105 | return this.f000006; 106 | } 107 | [CompilerGenerated] 108 | set 109 | { 110 | this.f000006 = value; 111 | } 112 | } 113 | 114 | // Token: 0x1700007D RID: 125 115 | // (get) Token: 0x06000166 RID: 358 RVA: 0x0000BBB0 File Offset: 0x00009DB0 116 | // (set) Token: 0x06000167 RID: 359 RVA: 0x0000BBC8 File Offset: 0x00009DC8 117 | public bool Private 118 | { 119 | [CompilerGenerated] 120 | get 121 | { 122 | return this.f000016; 123 | } 124 | [CompilerGenerated] 125 | set 126 | { 127 | this.f000016 = value; 128 | } 129 | } 130 | 131 | // Token: 0x040000B8 RID: 184 132 | private ulong[] f000001; 133 | 134 | // Token: 0x040000B9 RID: 185 135 | private c00006b.c00006d[] f00004f; 136 | 137 | // Token: 0x040000BA RID: 186 138 | private string[] f000003; 139 | 140 | // Token: 0x040000BB RID: 187 141 | private string f000035; 142 | 143 | // Token: 0x040000BC RID: 188 144 | private string f000036; 145 | 146 | // Token: 0x040000BD RID: 189 147 | private int f000006; 148 | 149 | // Token: 0x040000BE RID: 190 150 | private bool f000016; 151 | } 152 | 153 | // Token: 0x02000036 RID: 54 154 | public sealed class c00006d 155 | { 156 | // Token: 0x1700007E RID: 126 157 | // (get) Token: 0x06000169 RID: 361 RVA: 0x0000BBDC File Offset: 0x00009DDC 158 | // (set) Token: 0x0600016A RID: 362 RVA: 0x0000BBF4 File Offset: 0x00009DF4 159 | public string Region 160 | { 161 | [CompilerGenerated] 162 | get 163 | { 164 | return this.f00000a; 165 | } 166 | [CompilerGenerated] 167 | set 168 | { 169 | this.f00000a = value; 170 | } 171 | } 172 | 173 | // Token: 0x1700007F RID: 127 174 | // (get) Token: 0x0600016B RID: 363 RVA: 0x0000BC00 File Offset: 0x00009E00 175 | // (set) Token: 0x0600016C RID: 364 RVA: 0x0000BC18 File Offset: 0x00009E18 176 | public int Ping 177 | { 178 | [CompilerGenerated] 179 | get 180 | { 181 | return this.f00000b; 182 | } 183 | [CompilerGenerated] 184 | set 185 | { 186 | this.f00000b = value; 187 | } 188 | } 189 | 190 | // Token: 0x040000BF RID: 191 191 | private string f00000a; 192 | 193 | // Token: 0x040000C0 RID: 192 194 | private int f00000b; 195 | } 196 | } 197 | } 198 | -------------------------------------------------------------------------------- /WebSocket.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Net; 4 | using start; 5 | using WebSocketSharp; 6 | using WebSocketSharp.Server; 7 | 8 | namespace ws 9 | { 10 | // Token: 0x02000010 RID: 16 11 | internal class WebSocket 12 | { 13 | // Token: 0x06000031 RID: 49 RVA: 0x000066D4 File Offset: 0x000048D4 14 | public WebSocket() 15 | { 16 | WebSocketServer webSocketServer = new WebSocketServer(string.Format("ws://localhost:20161", Array.Empty())); 17 | webSocketServer.AddWebSocketService("/api/notification/v2"); 18 | webSocketServer.AddWebSocketService("/hub/v1"); 19 | webSocketServer.Start(); 20 | Console.WriteLine("[WebSocket.cs] has started."); 21 | Console.WriteLine("[WebSocket.cs] is listening."); 22 | } 23 | 24 | // Token: 0x02000058 RID: 88 25 | public class NotificationV2 : WebSocketBehavior 26 | { 27 | // Token: 0x0600023F RID: 575 RVA: 0x0000BDF8 File Offset: 0x00009FF8 28 | protected override void OnMessage(MessageEventArgs e) 29 | { 30 | Console.WriteLine("WebSocket.cs called for."); 31 | base.Send(Notification.ProcessRequest(e.Data)); 32 | bool flag = new WebClient().DownloadString("https://raw.githubusercontent.com/recroom2016/OpenRec/master/Update/banned.txt").Contains(File.ReadAllText("SaveData\\Profile\\userid.txt")); 33 | if (flag) 34 | { 35 | Console.ForegroundColor = ConsoleColor.Red; 36 | Console.WriteLine("You are banned. Using this version of OpenRec will not work, please download OpenRec 0.4.2 or prior."); 37 | Console.ForegroundColor = ConsoleColor.Green; 38 | Program.bannedflag = true; 39 | } 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /c000020.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Runtime.CompilerServices; 4 | 5 | namespace vaultgamesesh 6 | { 7 | // Token: 0x02000007 RID: 7 8 | internal sealed class c000020 9 | { 10 | // Token: 0x0600001A RID: 26 RVA: 0x00002B20 File Offset: 0x00000D20 11 | public static c000020.c000022 m000027() 12 | { 13 | bool flag = c000041.f000013 == null; 14 | bool flag2 = flag; 15 | bool flag3 = flag2; 16 | c000041.c000044 gameSession; 17 | if (flag3) 18 | { 19 | gameSession = c000041.m00002f(); 20 | } 21 | else 22 | { 23 | gameSession = c000041.f000013; 24 | } 25 | return new c000020.c000022 26 | { 27 | PlayerId = Convert.ToUInt64(File.ReadAllText("SaveData\\Profile\\userid.txt")), 28 | IsOnline = true, 29 | PlayerType = 2, 30 | GameSession = gameSession 31 | }; 32 | } 33 | 34 | 35 | // Token: 0x0200003C RID: 60 36 | public sealed class c000022 37 | { 38 | // Token: 0x17000088 RID: 136 39 | // (get) Token: 0x0600017E RID: 382 RVA: 0x0000A768 File Offset: 0x00008968 40 | // (set) Token: 0x0600017F RID: 383 RVA: 0x0000A780 File Offset: 0x00008980 41 | public ulong PlayerId 42 | { 43 | [CompilerGenerated] 44 | get 45 | { 46 | return this.f000001; 47 | } 48 | [CompilerGenerated] 49 | set 50 | { 51 | this.f000001 = value; 52 | } 53 | } 54 | 55 | // Token: 0x17000089 RID: 137 56 | // (get) Token: 0x06000180 RID: 384 RVA: 0x0000A78C File Offset: 0x0000898C 57 | // (set) Token: 0x06000181 RID: 385 RVA: 0x0000A7A4 File Offset: 0x000089A4 58 | public bool IsOnline 59 | { 60 | [CompilerGenerated] 61 | get 62 | { 63 | return this.f000037; 64 | } 65 | [CompilerGenerated] 66 | set 67 | { 68 | this.f000037 = value; 69 | } 70 | } 71 | 72 | // Token: 0x1700008A RID: 138 73 | // (get) Token: 0x06000182 RID: 386 RVA: 0x0000A7B0 File Offset: 0x000089B0 74 | // (set) Token: 0x06000183 RID: 387 RVA: 0x0000A7C8 File Offset: 0x000089C8 75 | public int PlayerType 76 | { 77 | [CompilerGenerated] 78 | get 79 | { 80 | return this.f000020; 81 | } 82 | [CompilerGenerated] 83 | set 84 | { 85 | this.f000020 = value; 86 | } 87 | } 88 | 89 | // Token: 0x1700008B RID: 139 90 | // (get) Token: 0x06000184 RID: 388 RVA: 0x0000A7D4 File Offset: 0x000089D4 91 | // (set) Token: 0x06000185 RID: 389 RVA: 0x0000A7EC File Offset: 0x000089EC 92 | public c000041.c000044 GameSession 93 | { 94 | [CompilerGenerated] 95 | get 96 | { 97 | return this.f000038; 98 | } 99 | [CompilerGenerated] 100 | set 101 | { 102 | this.f000038 = value; 103 | } 104 | } 105 | 106 | // Token: 0x040000C4 RID: 196 107 | private ulong f000001; 108 | 109 | // Token: 0x040000C5 RID: 197 110 | private bool f000037; 111 | 112 | // Token: 0x040000C6 RID: 198 113 | private int f000020; 114 | 115 | // Token: 0x040000C7 RID: 199 116 | private c000041.c000044 f000038; 117 | } 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /icon2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/recroom2016/OpenRec/5b97080e3a5395ae594021aae998095515c1874e/icon2.ico -------------------------------------------------------------------------------- /photonConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace api 4 | { 5 | // Token: 0x02000016 RID: 22 6 | public class photonConfig 7 | { 8 | // Token: 0x1700001B RID: 27 9 | // (get) Token: 0x06000069 RID: 105 RVA: 0x000022BF File Offset: 0x000004BF 10 | // (set) Token: 0x0600006A RID: 106 RVA: 0x000022C7 File Offset: 0x000004C7 11 | public string CloudRegion { get; set; } 12 | 13 | // Token: 0x1700001C RID: 28 14 | // (get) Token: 0x0600006B RID: 107 RVA: 0x000022D0 File Offset: 0x000004D0 15 | // (set) Token: 0x0600006C RID: 108 RVA: 0x000022D8 File Offset: 0x000004D8 16 | public bool CrcCheckEnabled { get; set; } 17 | 18 | // Token: 0x1700001D RID: 29 19 | // (get) Token: 0x0600006D RID: 109 RVA: 0x000022E1 File Offset: 0x000004E1 20 | // (set) Token: 0x0600006E RID: 110 RVA: 0x000022E9 File Offset: 0x000004E9 21 | public bool EnableServerTracingAfterDisconnect { get; set; } 22 | } 23 | } -------------------------------------------------------------------------------- /websocket-sharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/recroom2016/OpenRec/5b97080e3a5395ae594021aae998095515c1874e/websocket-sharp.dll --------------------------------------------------------------------------------