initial commit
|
|
@ -0,0 +1,55 @@
|
|||
; Script generated by the Inno Script Studio Wizard.
|
||||
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
|
||||
|
||||
#define MyAppName "Origins06"
|
||||
#define MyAppVersion "1.0.0.0"
|
||||
#define MyAppPublisher "Bitl"
|
||||
#define MyAppURL "http://or06.000webhostapp.com"
|
||||
#define MyAppExeName "Origins06_Installer.exe"
|
||||
|
||||
[Setup]
|
||||
; NOTE: The value of AppId uniquely identifies this application.
|
||||
; Do not use the same AppId value in installers for other applications.
|
||||
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
|
||||
AppId={{65E21311-941A-44E6-904F-168BE26A11DB}
|
||||
AppName={#MyAppName}
|
||||
AppVersion={#MyAppVersion}
|
||||
;AppVerName={#MyAppName} {#MyAppVersion}
|
||||
AppPublisher={#MyAppPublisher}
|
||||
AppPublisherURL={#MyAppURL}
|
||||
AppSupportURL={#MyAppURL}
|
||||
AppUpdatesURL={#MyAppURL}
|
||||
DefaultDirName=C:\{#MyAppName}
|
||||
DefaultGroupName={#MyAppName}
|
||||
AllowNoIcons=yes
|
||||
OutputDir=.
|
||||
OutputBaseFilename=Origins06_setup
|
||||
SetupIconFile=C:\newdesktop\modding\Origins06\Origins06_logo.ico
|
||||
Compression=lzma2/ultra64
|
||||
SolidCompression=yes
|
||||
|
||||
[Languages]
|
||||
Name: "english"; MessagesFile: "compiler:Default.isl"
|
||||
|
||||
[Files]
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\Origins06_Installer.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\AppSettings.xml"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\copyrights.txt"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\fmodex.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\Origins06_Client.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\Origins06_Launcher.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\Origins06_Server.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\ReflectionMetadata.xml"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\rgmain.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\rgpar.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\SciLexer.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\Microsoft.VC90.MFC\*"; DestDir: "{app}\Microsoft.VC90.MFC"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\Microsoft.VC90.CRT\*"; DestDir: "{app}\Microsoft.VC90.CRT"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "C:\newdesktop\modding\Origins06\Origins06\content\*"; DestDir: "{app}\content"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
||||
|
||||
[Icons]
|
||||
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
|
||||
|
||||
[Run]
|
||||
Filename: "{app}\{#MyAppExeName}"; Description: "Install URI (Required for Games)"; Flags: nowait postinstall skipifsilent
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
body
|
||||
{
|
||||
font: normal 8pt/normal 'Comic Sans MS' , Verdana, sans-serif;
|
||||
margin-top: 0;
|
||||
text-transform: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#Container
|
||||
{
|
||||
margin: 0 auto;
|
||||
width: 900px;
|
||||
}
|
||||
|
||||
#Header
|
||||
{
|
||||
margin: 0 auto;
|
||||
border-top: solid 1px #000;
|
||||
color: White;
|
||||
font: normal 12px/normal Verdana, sans-serif;
|
||||
font-weight: bold;
|
||||
width: 900px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#Header a, #Header a:visited, #Header a:active
|
||||
{
|
||||
color: White;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#Header a:hover
|
||||
{
|
||||
color: White;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#Banner
|
||||
{
|
||||
background-color: #6e99c9;
|
||||
border-bottom: solid 1px #000;
|
||||
border-left: solid 1px #000;
|
||||
border-right: solid 1px #000;
|
||||
height: 72px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#Banner #Logo
|
||||
{
|
||||
float: center;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
width: 293px;
|
||||
}
|
||||
|
||||
#Header .Navigation
|
||||
{
|
||||
clear: both;
|
||||
background-color: #6e99c9;
|
||||
border-bottom: solid 1px #000;
|
||||
border-left: solid 1px #000;
|
||||
border-right: solid 1px #000;
|
||||
color: #fff;
|
||||
font-family: 'Comic Sans MS' , Verdana, sans-serif;
|
||||
font-size: 12pt;
|
||||
font-weight: normal;
|
||||
line-height: 2em;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#Body
|
||||
{
|
||||
margin: 10px 0;
|
||||
width: 900px;
|
||||
}
|
||||
|
||||
#Footer
|
||||
{
|
||||
font: normal 12px/normal Verdana, sans-serif;
|
||||
margin-top: 10px;
|
||||
width: 900px;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
input[type="text"]
|
||||
{
|
||||
border: dashed 2px Gray;
|
||||
font-family: Verdana, Sans-Serif;
|
||||
font-size: 1.2em;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
input[type="submit"]
|
||||
{
|
||||
background-color: #F5CD2F;
|
||||
color: #000;
|
||||
height: 1.5em;
|
||||
font-family: Comic Sans MS;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#SplashContainer
|
||||
{
|
||||
}
|
||||
|
||||
#SplashContainer h2
|
||||
{
|
||||
font-size: x-large;
|
||||
margin: 0px 0 5px 0;
|
||||
}
|
||||
|
||||
#SplashContainer h3
|
||||
{
|
||||
letter-spacing: normal;
|
||||
margin: 0px 0 5px 0;
|
||||
}
|
||||
|
||||
#SplashContainer #MainPanel
|
||||
{
|
||||
background-color: #eee;
|
||||
border: solid 1px #000;
|
||||
float: right;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
width: 877px;
|
||||
}
|
||||
|
||||
#SplashContainer #ElementInsert
|
||||
{
|
||||
background-color: #ddd;
|
||||
border: solid 1px #000;
|
||||
float: right;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
width: 856px;
|
||||
}
|
||||
|
||||
#SplashContainer #genlink {
|
||||
color: red;
|
||||
}
|
||||
|
|
@ -0,0 +1,148 @@
|
|||
body
|
||||
{
|
||||
font: normal 8pt/normal 'Comic Sans MS' , Verdana, sans-serif;
|
||||
color: White;
|
||||
margin-top: 0;
|
||||
text-transform: none;
|
||||
text-decoration: none;
|
||||
background-color: #1a1a1a;
|
||||
}
|
||||
|
||||
#Container
|
||||
{
|
||||
margin: 0 auto;
|
||||
width: 900px;
|
||||
}
|
||||
|
||||
#Header
|
||||
{
|
||||
margin: 0 auto;
|
||||
border-top: solid 1px #000;
|
||||
color: White;
|
||||
font: normal 12px/normal Verdana, sans-serif;
|
||||
font-weight: bold;
|
||||
width: 900px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#Header a, #Header a:visited, #Header a:active
|
||||
{
|
||||
color: White;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#Header a:hover
|
||||
{
|
||||
color: White;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#Banner
|
||||
{
|
||||
background-color: #6e99c9;
|
||||
border-bottom: solid 1px #000;
|
||||
border-left: solid 1px #000;
|
||||
border-right: solid 1px #000;
|
||||
height: 72px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#Banner #Logo
|
||||
{
|
||||
float: center;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
width: 293px;
|
||||
}
|
||||
|
||||
#Header .Navigation
|
||||
{
|
||||
clear: both;
|
||||
background-color: #6e99c9;
|
||||
border-bottom: solid 1px #000;
|
||||
border-left: solid 1px #000;
|
||||
border-right: solid 1px #000;
|
||||
color: #fff;
|
||||
font-family: 'Comic Sans MS' , Verdana, sans-serif;
|
||||
font-size: 12pt;
|
||||
font-weight: normal;
|
||||
line-height: 2em;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#Body
|
||||
{
|
||||
margin: 10px 0;
|
||||
width: 900px;
|
||||
}
|
||||
|
||||
#Footer
|
||||
{
|
||||
font: normal 12px/normal Verdana, sans-serif;
|
||||
margin-top: 10px;
|
||||
width: 900px;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
input[type="text"]
|
||||
{
|
||||
border: dashed 2px #353535;
|
||||
font-family: Verdana, Sans-Serif;
|
||||
font-size: 1.2em;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
input[type="submit"]
|
||||
{
|
||||
background-color: #B3B2AF;
|
||||
color: #000;
|
||||
height: 1.5em;
|
||||
font-family: Comic Sans MS;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#SplashContainer
|
||||
{
|
||||
}
|
||||
|
||||
#SplashContainer h2
|
||||
{
|
||||
font-size: x-large;
|
||||
margin: 0px 0 5px 0;
|
||||
}
|
||||
|
||||
#SplashContainer h3
|
||||
{
|
||||
letter-spacing: normal;
|
||||
margin: 0px 0 5px 0;
|
||||
}
|
||||
|
||||
#SplashContainer #MainPanel
|
||||
{
|
||||
background-color: #989898;
|
||||
border: solid 1px #000;
|
||||
float: right;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
width: 877px;
|
||||
}
|
||||
|
||||
#SplashContainer #ElementInsert
|
||||
{
|
||||
background-color: #7D7D7D;
|
||||
border: solid 1px #000;
|
||||
float: right;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
width: 856px;
|
||||
}
|
||||
|
||||
#SplashContainer #genlink {
|
||||
color: red;
|
||||
}
|
||||
|
|
@ -0,0 +1,145 @@
|
|||
body
|
||||
{
|
||||
font: normal 8pt/normal Verdana, sans-serif;
|
||||
color: White;
|
||||
margin-top: 0;
|
||||
text-transform: none;
|
||||
text-decoration: none;
|
||||
background-color: #1a1a1a;
|
||||
}
|
||||
|
||||
#Container
|
||||
{
|
||||
margin: 0 auto;
|
||||
width: 900px;
|
||||
}
|
||||
|
||||
#Header
|
||||
{
|
||||
margin: 0 auto;
|
||||
color: White;
|
||||
font: normal 12px/normal Verdana, sans-serif;
|
||||
font-weight: bold;
|
||||
width: 900px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#Header a, #Header a:visited, #Header a:active
|
||||
{
|
||||
color: White;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#Header a:hover
|
||||
{
|
||||
color: White;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#Banner
|
||||
{
|
||||
background-color: #989898;
|
||||
border-left: solid 2px #B6B6B6;
|
||||
border-right: solid 2px #B6B6B6;
|
||||
border-top: solid 2px #B6B6B6;
|
||||
height: 72px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#Banner #Logo
|
||||
{
|
||||
float: center;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
width: 293px;
|
||||
}
|
||||
|
||||
#Header .Navigation
|
||||
{
|
||||
background-color: #989898;
|
||||
border-left: solid 2px #B6B6B6;
|
||||
border-right: solid 2px #B6B6B6;
|
||||
border-bottom: solid 2px #B6B6B6;
|
||||
font-family: Verdana, sans-serif;
|
||||
font-size: 12pt;
|
||||
font-weight: normal;
|
||||
line-height: 2em;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#Body
|
||||
{
|
||||
margin: 10px 0;
|
||||
width: 900px;
|
||||
}
|
||||
|
||||
#Footer
|
||||
{
|
||||
font: normal 12px/normal Verdana, sans-serif;
|
||||
margin-top: 10px;
|
||||
width: 900px;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
input[type="text"]
|
||||
{
|
||||
border: dashed 2px #353535;
|
||||
font-family: Verdana, Sans-Serif;
|
||||
font-size: 1.2em;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
input[type="submit"]
|
||||
{
|
||||
background-color: #B3B2AF;
|
||||
color: #000;
|
||||
height: 1.5em;
|
||||
font-family: Verdana;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#SplashContainer
|
||||
{
|
||||
}
|
||||
|
||||
#SplashContainer h2
|
||||
{
|
||||
font-size: x-large;
|
||||
margin: 0px 0 5px 0;
|
||||
}
|
||||
|
||||
#SplashContainer h3
|
||||
{
|
||||
letter-spacing: normal;
|
||||
margin: 0px 0 5px 0;
|
||||
}
|
||||
|
||||
#SplashContainer #MainPanel
|
||||
{
|
||||
background-color: #989898;
|
||||
border: solid 2px #B6B6B6;
|
||||
float: right;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
width: 877px;
|
||||
}
|
||||
|
||||
#SplashContainer #ElementInsert
|
||||
{
|
||||
background-color: #7D7D7D;
|
||||
border: solid 2px #868686;
|
||||
float: right;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
width: 856px;
|
||||
}
|
||||
|
||||
#SplashContainer #genlink {
|
||||
color: red;
|
||||
}
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
body
|
||||
{
|
||||
font: normal 8pt/normal Verdana, sans-serif;
|
||||
margin-top: 0;
|
||||
text-transform: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#Container
|
||||
{
|
||||
margin: 0 auto;
|
||||
width: 900px;
|
||||
}
|
||||
|
||||
#Header
|
||||
{
|
||||
margin: 0 auto;
|
||||
color: Black;
|
||||
font: normal 12px/normal Verdana, sans-serif;
|
||||
font-weight: bold;
|
||||
width: 900px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#Header a, #Header a:visited, #Header a:active
|
||||
{
|
||||
color: Black;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#Header a:hover
|
||||
{
|
||||
color: Black;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#Banner
|
||||
{
|
||||
background-color: #eee;
|
||||
border-left: solid 2px #d1d1d1;
|
||||
border-right: solid 2px #d1d1d1;
|
||||
border-top: solid 2px #d1d1d1;
|
||||
height: 72px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#Banner #Logo
|
||||
{
|
||||
float: center;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
width: 293px;
|
||||
}
|
||||
|
||||
#Header .Navigation
|
||||
{
|
||||
background-color: #eee;
|
||||
border-left: solid 2px #d1d1d1;
|
||||
border-right: solid 2px #d1d1d1;
|
||||
border-bottom: solid 2px #d1d1d1;
|
||||
font-family: Verdana, sans-serif;
|
||||
font-size: 12pt;
|
||||
font-weight: normal;
|
||||
line-height: 2em;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#Body
|
||||
{
|
||||
margin: 10px 0;
|
||||
width: 900px;
|
||||
}
|
||||
|
||||
#Footer
|
||||
{
|
||||
font: normal 12px/normal Verdana, sans-serif;
|
||||
margin-top: 10px;
|
||||
width: 900px;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
input[type="text"]
|
||||
{
|
||||
border: dashed 2px Gray;
|
||||
font-family: Verdana, Sans-Serif;
|
||||
font-size: 1.2em;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
input[type="submit"]
|
||||
{
|
||||
background-color: #e0dfdb;
|
||||
color: #000;
|
||||
height: 1.5em;
|
||||
font-family: Verdana;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#SplashContainer
|
||||
{
|
||||
}
|
||||
|
||||
#SplashContainer h2
|
||||
{
|
||||
font-size: x-large;
|
||||
margin: 0px 0 5px 0;
|
||||
}
|
||||
|
||||
#SplashContainer h3
|
||||
{
|
||||
letter-spacing: normal;
|
||||
margin: 0px 0 5px 0;
|
||||
}
|
||||
|
||||
#SplashContainer #MainPanel
|
||||
{
|
||||
background-color: #eee;
|
||||
border: solid 2px #d1d1d1;
|
||||
float: right;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
width: 877px;
|
||||
}
|
||||
|
||||
#SplashContainer #ElementInsert
|
||||
{
|
||||
background-color: #ddd;
|
||||
border: solid 2px #ccc;
|
||||
float: right;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
width: 856px;
|
||||
}
|
||||
|
||||
#SplashContainer #genlink {
|
||||
color: red;
|
||||
}
|
||||
|
|
@ -0,0 +1,294 @@
|
|||
settings().Rendering.frameRateManager = 2;
|
||||
settings().Rendering.graphicsMode = 2;
|
||||
settings().Network.MaxSendBuffer = 1000000;
|
||||
settings().Network.PhysicsReplicationUpdateRate = 1000000;
|
||||
settings().Network.SendRate = 1000000;
|
||||
rbxversion = version();
|
||||
print("Origins06 version '" .. rbxversion .. "' loaded.");
|
||||
--function made by rbxbanland
|
||||
function newWaitForChild(newParent,name)
|
||||
local returnable = nil
|
||||
if newParent:FindFirstChild(name) then
|
||||
returnable = newParent:FindFirstChild(name)
|
||||
else
|
||||
repeat wait() returnable = newParent:FindFirstChild(name) until returnable ~= nil
|
||||
end
|
||||
return returnable
|
||||
end
|
||||
|
||||
--we aren't doing anything with shirts or t-shirts or pants yet, we're only doing hats.
|
||||
function LoadCharacterNew(playerApp,newChar)
|
||||
local charparts = {[1] = newWaitForChild(newChar,"Head"),[2] = newWaitForChild(newChar,"Torso"),[3] = newWaitForChild(newChar,"Left Arm"),[4] = newWaitForChild(newChar,"Right Arm"),[5] = newWaitForChild(newChar,"Left Leg"),[6] = newWaitForChild(newChar,"Right Leg")}
|
||||
for _,newVal in pairs(playerApp:GetChildren()) do
|
||||
pcall(function()
|
||||
charparts[newVal.ColorIndex.Value].BrickColor = newVal.Value
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerColors(Player,SkinPattern,LegsPattern,TorsoPattern)
|
||||
HeadColor=BrickColor.DarkGray();
|
||||
TorsoColor=BrickColor.DarkGray();
|
||||
LArmColor=BrickColor.DarkGray();
|
||||
LLegColor=BrickColor.DarkGray();
|
||||
RArmColor=BrickColor.DarkGray();
|
||||
RLegColor=BrickColor.DarkGray();
|
||||
if (Player.Name == "Bitl" and Player.userId == 1915355) then
|
||||
HeadColor=BrickColor.Red();
|
||||
TorsoColor=BrickColor.Red();
|
||||
LArmColor=BrickColor.Red();
|
||||
LLegColor=BrickColor.Red();
|
||||
RArmColor=BrickColor.DarkGray();
|
||||
RLegColor=BrickColor.DarkGray();
|
||||
elseif (Player.Name == "P4ris" and Player.userId == 69) then
|
||||
HeadColor=BrickColor.DarkGray();
|
||||
TorsoColor=BrickColor.DarkGray();
|
||||
LArmColor=BrickColor.DarkGray();
|
||||
LLegColor=BrickColor.DarkGray();
|
||||
RArmColor=BrickColor.DarkGray();
|
||||
RLegColor=BrickColor.DarkGray();
|
||||
elseif (Player.Name == "The Living Bee" and Player.userId == 2) then
|
||||
HeadColor=BrickColor.new("Cool yellow");
|
||||
TorsoColor=BrickColor.White();
|
||||
LArmColor=BrickColor.new("Cool yellow");
|
||||
LLegColor=BrickColor.White();
|
||||
RArmColor=BrickColor.new("Cool yellow");
|
||||
RLegColor=BrickColor.White();
|
||||
else
|
||||
if (SkinPattern==1) then
|
||||
HeadColor=BrickColor.Yellow();
|
||||
LArmColor=BrickColor.Yellow();
|
||||
RArmColor=BrickColor.Yellow();
|
||||
elseif (SkinPattern==2) then
|
||||
HeadColor=BrickColor.new("Cool yellow");
|
||||
LArmColor=BrickColor.new("Cool yellow");
|
||||
RArmColor=BrickColor.new("Cool yellow");
|
||||
elseif (SkinPattern==3) then
|
||||
HeadColor=BrickColor.new("Medium red");
|
||||
LArmColor=BrickColor.new("Medium red");
|
||||
RArmColor=BrickColor.new("Medium red");
|
||||
elseif (SkinPattern==4) then
|
||||
HeadColor=BrickColor.new("Light reddish violet");
|
||||
LArmColor=BrickColor.new("Light reddish violet");
|
||||
RArmColor=BrickColor.new("Light reddish violet");
|
||||
elseif (SkinPattern==5) then
|
||||
HeadColor=BrickColor.new("Dark orange");
|
||||
LArmColor=BrickColor.new("Dark orange");
|
||||
RArmColor=BrickColor.new("Dark orange");
|
||||
elseif (SkinPattern==6) then
|
||||
HeadColor=BrickColor.new("Nougat");
|
||||
LArmColor=BrickColor.new("Nougat");
|
||||
RArmColor=BrickColor.new("Nougat");
|
||||
end
|
||||
if (LegsPattern==1) then
|
||||
RLegColor=BrickColor.new("Br. yellowish green");
|
||||
LLegColor=BrickColor.new("Br. yellowish green");
|
||||
elseif (LegsPattern==2) then
|
||||
LLegColor=BrickColor.new("Pastel Blue");
|
||||
RLegColor=BrickColor.new("Pastel Blue");
|
||||
elseif (LegsPattern==3) then
|
||||
LLegColor=BrickColor.Blue();
|
||||
RLegColor=BrickColor.Blue();
|
||||
elseif (LegsPattern==4) then
|
||||
LLegColor=BrickColor.White();
|
||||
RLegColor=BrickColor.White();
|
||||
elseif (LegsPattern==5) then
|
||||
LLegColor=BrickColor.new("Light blue");
|
||||
RLegColor=BrickColor.new("Light blue");
|
||||
end
|
||||
if (TorsoPattern==1) then
|
||||
TorsoColor=BrickColor.new("Medium stone grey");
|
||||
elseif (TorsoPattern==2) then
|
||||
TorsoColor=BrickColor.DarkGray();
|
||||
elseif (TorsoPattern==3) then
|
||||
TorsoColor=BrickColor.White();
|
||||
elseif (TorsoPattern==4) then
|
||||
TorsoColor=BrickColor.Red();
|
||||
elseif (TorsoPattern==5) then
|
||||
TorsoColor=BrickColor.Green();
|
||||
elseif (TorsoPattern==6) then
|
||||
TorsoColor=BrickColor.Blue();
|
||||
elseif (TorsoPattern==7) then
|
||||
TorsoColor=BrickColor.new("Light blue");
|
||||
elseif (TorsoPattern==8) then
|
||||
TorsoColor=BrickColor.new("Pastel Blue");
|
||||
end
|
||||
end
|
||||
InitalizeClientAppearance(Player,HeadColor,TorsoColor,LArmColor,RArmColor,LLegColor,RLegColor);
|
||||
end
|
||||
|
||||
function InitalizeClientAppearance(Player,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID)
|
||||
local newCharApp = Instance.new("IntValue",Player);
|
||||
newCharApp.Name = "Appearance";
|
||||
--BODY COLORS
|
||||
for i=1,6,1 do
|
||||
local BodyColor = Instance.new("BrickColorValue",newCharApp);
|
||||
if (i == 1) then
|
||||
if (HeadColorID ~= nil) then
|
||||
BodyColor.Value = HeadColorID;
|
||||
else
|
||||
BodyColor.Value = BrickColor.DarkGray();
|
||||
end
|
||||
BodyColor.Name = "HeadColor";
|
||||
elseif (i == 2) then
|
||||
if (TorsoColorID ~= nil) then
|
||||
BodyColor.Value = TorsoColorID;
|
||||
else
|
||||
BodyColor.Value = BrickColor.DarkGray();
|
||||
end
|
||||
BodyColor.Name = "TorsoColor";
|
||||
elseif (i == 3) then
|
||||
if (LeftArmColorID ~= nil) then
|
||||
BodyColor.Value = LeftArmColorID;
|
||||
else
|
||||
BodyColor.Value = BrickColor.DarkGray();
|
||||
end
|
||||
BodyColor.Name = "LeftArmColor";
|
||||
elseif (i == 4) then
|
||||
if (RightArmColorID ~= nil) then
|
||||
BodyColor.Value = RightArmColorID;
|
||||
else
|
||||
BodyColor.Value = BrickColor.DarkGray();
|
||||
end
|
||||
BodyColor.Name = "RightArmColor";
|
||||
elseif (i == 5) then
|
||||
if (LeftLegColorID ~= nil) then
|
||||
BodyColor.Value = LeftLegColorID;
|
||||
else
|
||||
BodyColor.Value = BrickColor.DarkGray();
|
||||
end
|
||||
BodyColor.Name = "LeftLegColor";
|
||||
elseif (i == 6) then
|
||||
if (RightLegColorID ~= nil) then
|
||||
BodyColor.Value = RightLegColorID;
|
||||
else
|
||||
BodyColor.Value = BrickColor.DarkGray();
|
||||
end
|
||||
BodyColor.Name = "RightLegColor";
|
||||
end
|
||||
local indexValue = Instance.new("NumberValue");
|
||||
indexValue.Name = "ColorIndex";
|
||||
indexValue.Parent = BodyColor;
|
||||
indexValue.Value = i;
|
||||
end
|
||||
end
|
||||
|
||||
function CSR06Server(Port,PlayerLimit)
|
||||
Server = game:GetService("NetworkServer")
|
||||
RunService = game:GetService("RunService")
|
||||
Server:start(Port, 20)
|
||||
RunService:run();
|
||||
game:GetService("Players").MaxPlayers = PlayerLimit;
|
||||
game:GetService("Players").PlayerAdded:connect(function(Player)
|
||||
if (game:GetService("Players").NumPlayers > game:GetService("Players").MaxPlayers) then
|
||||
local message = Instance.new("Message")
|
||||
message.Text = "You were kicked. Reason: Too many players on server."
|
||||
message.Parent = Player
|
||||
wait(2)
|
||||
Player:remove()
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' kicked. Reason: Too many players on server.");
|
||||
else
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' added");
|
||||
Player:LoadCharacter();
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character);
|
||||
end
|
||||
while true do
|
||||
wait(0.001)
|
||||
if (Player.Character ~= nil) then
|
||||
if (Player.Character.Humanoid.Health == 0) then
|
||||
wait(5)
|
||||
Player:LoadCharacter()
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character);
|
||||
elseif (Player.Character.Parent == nil) then
|
||||
wait(5)
|
||||
Player:LoadCharacter() -- to make sure nobody is deleted.
|
||||
LoadCharacterNew(newWaitForChild(Player,"Appearance"),Player.Character);
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
game:GetService("Players").PlayerRemoving:connect(function(Player)
|
||||
print("Player '" .. Player.Name .. "' with ID '" .. Player.userId .. "' leaving")
|
||||
end)
|
||||
game:GetService("RunService"):Run();
|
||||
pcall(function() game.Close:connect(function() Server:Stop(); end) end);
|
||||
Server.IncommingConnection:connect(IncommingConnection);
|
||||
end
|
||||
|
||||
function CSR06Connect(UserID,ServerIP,ServerPort,PlayerName,SkinPattern,LegsPattern,TorsoPattern)
|
||||
pcall(function() game:SetPlaceID(-1, false) end);
|
||||
local suc, err = pcall(function()
|
||||
client = game:GetService("NetworkClient")
|
||||
player = game:GetService("Players"):CreateLocalPlayer(UserID)
|
||||
player:SetSuperSafeChat(false);
|
||||
pcall(function() player:SetUnder13(false) end);
|
||||
pcall(function() player:SetAccountAge(365) end);
|
||||
player.CharacterAppearance=0;
|
||||
pcall(function() player.Name=PlayerName or ""; end);
|
||||
game:GetService("Visit");
|
||||
PlayerColors(player,SkinPattern,LegsPattern,TorsoPattern);
|
||||
end)
|
||||
|
||||
local function dieerror(errmsg)
|
||||
game:SetMessage(errmsg)
|
||||
wait(math.huge)
|
||||
end
|
||||
|
||||
if not suc then
|
||||
dieerror(err)
|
||||
end
|
||||
|
||||
local function disconnect(peer,lostconnection)
|
||||
game:SetMessage("You have lost connection to the game")
|
||||
end
|
||||
|
||||
local function connected(url, replicator)
|
||||
replicator.Disconnection:connect(disconnect)
|
||||
local marker = nil
|
||||
local suc, err = pcall(function()
|
||||
game:SetMessageBrickCount()
|
||||
marker = replicator:SendMarker()
|
||||
end)
|
||||
if not suc then
|
||||
dieerror(err)
|
||||
end
|
||||
marker.Received:connect(function()
|
||||
local suc, err = pcall(function()
|
||||
game:ClearMessage()
|
||||
end)
|
||||
if not suc then
|
||||
dieerror(err)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
local function rejected()
|
||||
dieerror("Failed to connect to the Game. (Connection rejected)")
|
||||
end
|
||||
|
||||
local function failed(peer, errcode, why)
|
||||
dieerror("Failed to connect to the Game. (ID="..errcode.." ["..why.."])")
|
||||
end
|
||||
|
||||
local suc, err = pcall(function()
|
||||
game:SetMessage("Connecting to server...");
|
||||
client.ConnectionAccepted:connect(connected)
|
||||
client.ConnectionRejected:connect(rejected)
|
||||
client.ConnectionFailed:connect(failed)
|
||||
client:Connect(ServerIP,ServerPort, 0, 20)
|
||||
game.GuiRoot.MainMenu["Toolbox"]:Remove()
|
||||
game.GuiRoot.MainMenu["Edit Mode"]:Remove()
|
||||
game.GuiRoot.RightPalette.ReportAbuse:Remove()
|
||||
game.GuiRoot.ChatMenuPanel:Remove()
|
||||
end)
|
||||
|
||||
if not suc then
|
||||
local x = Instance.new("Message")
|
||||
x.Text = err
|
||||
x.Parent = workspace
|
||||
wait(math.huge)
|
||||
end
|
||||
end
|
||||
|
||||
_G.CSR06Server=CSR06Server;
|
||||
_G.CSR06Connect=CSR06Connect;
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" id="pee">
|
||||
<head>
|
||||
<title>Origins06</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_normal.css" title="normal"/>
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_dark.css" title="dark">
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_classic.css" title="classic">
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_classicdark.css" title="classicdark">
|
||||
<link rel="Shortcut Icon" type="image/ico" href="images/icon.ico"/>
|
||||
<script type="text/javascript" src="js/js_funcs.js"></script>
|
||||
</head>
|
||||
<body onload="set_style_from_cookie()">
|
||||
<div id="Container">
|
||||
<div id="Header">
|
||||
<div id="Banner">
|
||||
<center><div id="Logo"><a id="logo" title="Origins06" href="index.php" style="display:inline-block;cursor:pointer;"><img src="images/Logo.png" border="0" id="img" alt="Origins06"/></a></div></center>
|
||||
</div>
|
||||
<div class="Navigation">
|
||||
<span><a id="Games" class="MenuItem" href="games.php">Games</a></span>
|
||||
<span class="Separator"> | </span>
|
||||
<span><a id="HostServer" class="MenuItem" href="hostserver.php">Host Server</a></span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="Body">
|
||||
<div id="SplashContainer">
|
||||
<div id="MainPanel">
|
||||
<center>
|
||||
<h2>Games</h2>
|
||||
<?php
|
||||
$con = new mysqli("localhost", "origins0_root", "", "origins0_games");
|
||||
|
||||
if (mysqli_connect_errno())
|
||||
{
|
||||
printf("Connect failed: %s\n", mysqli_connect_error());
|
||||
}
|
||||
|
||||
$sql="SELECT * FROM games";
|
||||
|
||||
$result=$con->query($sql);
|
||||
if (!$result)
|
||||
{
|
||||
printf("Error: %s\n", $con->error);
|
||||
}
|
||||
|
||||
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
|
||||
{
|
||||
echo "<div id='ElementInsert'>";
|
||||
echo "<center>";
|
||||
echo "<h3><b>".$row['name']."</b></h3>";
|
||||
echo "<h3><b>Map: ".$row['map']."</b></h3>";
|
||||
echo "<h3><b>Player Limit: ".$row['playerlimit']."</b></h3>";
|
||||
date_default_timezone_set('America/Phoenix');
|
||||
$date = date('m/d/Y h:i:s a', time());
|
||||
echo "<h3><b> Creation Time: ".$date."</b></h3>";
|
||||
$stringbuild = $row['ip']."|".$row['port'];
|
||||
$encryptstring = base64_encode($stringbuild);
|
||||
$url = "Origins06://".$encryptstring;
|
||||
echo "<form action='".$url."'>";
|
||||
echo "<div id='JoinButton'><input type='submit' value='Join'/></div>";
|
||||
echo "</form>";
|
||||
echo "</center>";
|
||||
echo "</div>";
|
||||
echo " ";
|
||||
}
|
||||
|
||||
$con->close();
|
||||
?>
|
||||
</center>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="Footer">
|
||||
Origins06 does not knowingly host copyrighted content. If you host a server, we store your IP address, but it is not publicly distributed to users on the site.
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" id="pee">
|
||||
<head>
|
||||
<title>Origins06</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_normal.css" title="normal"/>
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_dark.css" title="dark">
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_classic.css" title="classic">
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_classicdark.css" title="classicdark">
|
||||
<link rel="Shortcut Icon" type="image/ico" href="images/icon.ico"/>
|
||||
<script type="text/javascript" src="js/js_funcs.js"></script>
|
||||
</head>
|
||||
<body onload="set_style_from_cookie()">
|
||||
<?php
|
||||
$con = new mysqli("localhost", "origins0_root", "", "origins0_games");
|
||||
|
||||
if (mysqli_connect_errno())
|
||||
{
|
||||
printf("Connect failed: %s\n", mysqli_connect_error());
|
||||
}
|
||||
|
||||
$namefixed = mysqli_real_escape_string($con,$_POST['name']);
|
||||
$ipcrypt = base64_encode($_POST['ip']);
|
||||
|
||||
$sql="INSERT INTO games (name, map, ip, port, playerlimit)
|
||||
|
||||
VALUES
|
||||
|
||||
('$namefixed','$_POST[map]','$ipcrypt','$_POST[port]','$_POST[playerlimit]')";
|
||||
|
||||
if (!$con->query($sql))
|
||||
{
|
||||
printf("Error: %s\n", $con->error);
|
||||
}
|
||||
|
||||
$con->close();
|
||||
|
||||
$port=$_POST['port'];
|
||||
$playerlimit=$_POST['playerlimit'];
|
||||
?>
|
||||
<div id="Container">
|
||||
<div id="Header">
|
||||
<div id="Banner">
|
||||
<center><div id="Logo"><a id="logo" title="Origins06" href="index.php" style="display:inline-block;cursor:pointer;"><img src="images/Logo.png" border="0" id="img" alt="Origins06"/></a></div></center>
|
||||
</div>
|
||||
<div class="Navigation">
|
||||
<span><a id="Games" class="MenuItem" href="games.php">Games</a></span>
|
||||
<span class="Separator"> | </span>
|
||||
<span><a id="HostServer" class="MenuItem" href="hostserver.php">Host Server</a></span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="Body">
|
||||
|
||||
<div id="SplashContainer">
|
||||
<div id="MainPanel">
|
||||
<center>
|
||||
<h2>Host Server</h2>
|
||||
<div id="ElementInsert">
|
||||
<center>
|
||||
<h3>Put this URL into your command bar. If your server works, it'll show up in the Games page.</h3>
|
||||
<div id="genlink"><b>dofile('localhost/Origins06_site/functions.php'); _G.CSR06Server(<?php echo $port ?>,<?php echo $playerlimit ?>);</b></div>
|
||||
</center>
|
||||
</div>
|
||||
</center>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="Footer">
|
||||
Origins06 does not knowingly host copyrighted content. If you host a server, we store your IP address, but it is not publicly distributed to users on the site.
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" id="pee">
|
||||
<head>
|
||||
<title>Origins06</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_normal.css" title="normal"/>
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_dark.css" title="dark">
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_classic.css" title="classic">
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_classicdark.css" title="classicdark">
|
||||
<link rel="Shortcut Icon" type="image/ico" href="images/icon.ico"/>
|
||||
<script type="text/javascript" src="js/js_funcs.js"></script>
|
||||
</head>
|
||||
<body onload="set_style_from_cookie()">
|
||||
<div id="Container">
|
||||
<div id="Header">
|
||||
<div id="Banner">
|
||||
<center><div id="Logo"><a id="logo" title="Origins06" href="index.php" style="display:inline-block;cursor:pointer;"><img src="images/Logo.png" border="0" id="img" alt="Origins06"/></a></div></center>
|
||||
</div>
|
||||
<div class="Navigation">
|
||||
<span><a id="Games" class="MenuItem" href="games.php">Games</a></span>
|
||||
<span class="Separator"> | </span>
|
||||
<span><a id="HostServer" class="MenuItem" href="hostserver.php">Host Server</a></span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="Body">
|
||||
|
||||
<div id="SplashContainer">
|
||||
<div id="MainPanel">
|
||||
<center>
|
||||
<h2>Host Server</h2>
|
||||
<b>* = Required</b>
|
||||
<div id="ElementInsert">
|
||||
<form action="getservercode.php" method="post">
|
||||
<center>
|
||||
<h3>Server Name: *</h3>
|
||||
<input type="text" name="name" /><br><br>
|
||||
<h3>Map Name: *</h3>
|
||||
<input type="text" name="map" /><br><br>
|
||||
<h3>IP Address: *</h3>
|
||||
<input type="text" name="ip" value=<?php print $_SERVER['REMOTE_ADDR']; ?> /><br><br>
|
||||
<h3>Port: *</h3>
|
||||
<input type="text" name="port" value="53640"/><br><br>
|
||||
<h3>Player Limit: *</h3>
|
||||
<input type="text" name="playerlimit" value="12"/><br><br>
|
||||
<input type="submit" value="Get server code"/>
|
||||
</center>
|
||||
</form>
|
||||
</div>
|
||||
</center>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="Footer">
|
||||
Origins06 does not knowingly host copyrighted content. If you host a server, we store your IP address, but it is not publicly distributed to users on the site.
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 361 KiB |
|
|
@ -0,0 +1,46 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" id="pee">
|
||||
<head>
|
||||
<title>Origins06</title>
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_normal.css" title="normal"/>
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_dark.css" title="dark">
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_classic.css" title="classic">
|
||||
<link rel="stylesheet" type="text/css" href="css/Origins06_classicdark.css" title="classicdark">
|
||||
<link rel="Shortcut Icon" type="image/ico" href="images/icon.ico"/>
|
||||
<script type="text/javascript" src="js/js_funcs.js"></script>
|
||||
</head>
|
||||
<body onload="set_style_from_cookie()">
|
||||
<div id="Container">
|
||||
<div id="Header">
|
||||
<div id="Banner">
|
||||
<center><div id="Logo"><a id="logo" title="Origins06" href="index.php" style="display:inline-block;cursor:pointer;"><img src="images/Logo.png" border="0" id="img" alt="Origins06"/></a></div></center>
|
||||
</div>
|
||||
<div class="Navigation">
|
||||
<span><a id="Games" class="MenuItem" href="games.php">Games</a></span>
|
||||
<span class="Separator"> | </span>
|
||||
<span><a id="HostServer" class="MenuItem" href="hostserver.php">Host Server</a></span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="Body">
|
||||
|
||||
<div id="SplashContainer">
|
||||
<div id="MainPanel">
|
||||
<center>
|
||||
<h2>Welcome to Origins06!</h2>
|
||||
<form>
|
||||
<input type="submit" onclick="switch_style('normal'); return false;" name="theme" value="Light" id="normal">
|
||||
<input type="submit" onclick="switch_style('dark'); return false;" name="theme" value="Dark" id="dark">
|
||||
<input type="submit" onclick="switch_style('classic'); return false;" name="theme" value="Classic Light" id="classic">
|
||||
<input type="submit" onclick="switch_style('classicdark'); return false;" name="theme" value="Classic Dark" id="classicdark">
|
||||
</form>
|
||||
</center>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="Footer">
|
||||
Origins06 does not knowingly host copyrighted content. If you host a server, we store your IP address, but it is not publicly distributed to users on the site.
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
// *** TO BE CUSTOMISED ***
|
||||
|
||||
var style_cookie_name = "style" ;
|
||||
var style_cookie_duration = 30 ;
|
||||
var style_domain = "localhost" ;
|
||||
|
||||
// *** END OF CUSTOMISABLE SECTION ***
|
||||
// You do not need to customise anything below this line
|
||||
|
||||
function switch_style ( css_title )
|
||||
{
|
||||
// You may use this script on your site free of charge provided
|
||||
// you do not remove this notice or the URL below. Script from
|
||||
// https://www.thesitewizard.com/javascripts/change-style-sheets.shtml
|
||||
var i, link_tag ;
|
||||
for (i = 0, link_tag = document.getElementsByTagName("link") ;
|
||||
i < link_tag.length ; i++ ) {
|
||||
if ((link_tag[i].rel.indexOf( "stylesheet" ) != -1) &&
|
||||
link_tag[i].title) {
|
||||
link_tag[i].disabled = true ;
|
||||
if (link_tag[i].title == css_title) {
|
||||
link_tag[i].disabled = false ;
|
||||
}
|
||||
}
|
||||
set_cookie( style_cookie_name, css_title,
|
||||
style_cookie_duration, style_domain );
|
||||
}
|
||||
}
|
||||
function set_style_from_cookie()
|
||||
{
|
||||
var css_title = get_cookie( style_cookie_name );
|
||||
if (css_title.length) {
|
||||
switch_style( css_title );
|
||||
}
|
||||
}
|
||||
function set_cookie ( cookie_name, cookie_value,
|
||||
lifespan_in_days, valid_domain )
|
||||
{
|
||||
// https://www.thesitewizard.com/javascripts/cookies.shtml
|
||||
var domain_string = valid_domain ?
|
||||
("; domain=" + valid_domain) : '' ;
|
||||
document.cookie = cookie_name +
|
||||
"=" + encodeURIComponent( cookie_value ) +
|
||||
"; max-age=" + 60 * 60 *
|
||||
24 * lifespan_in_days +
|
||||
"; path=/" + domain_string ;
|
||||
}
|
||||
function get_cookie ( cookie_name )
|
||||
{
|
||||
// https://www.thesitewizard.com/javascripts/cookies.shtml
|
||||
var cookie_string = document.cookie ;
|
||||
if (cookie_string.length != 0) {
|
||||
var cookie_value = cookie_string.match (
|
||||
'(^|;)[\s]*' +
|
||||
cookie_name +
|
||||
'=([^;]*)' );
|
||||
return decodeURIComponent ( cookie_value[2] ) ;
|
||||
}
|
||||
return '' ;
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
-- phpMyAdmin SQL Dump
|
||||
-- version 4.6.4
|
||||
-- https://www.phpmyadmin.net/
|
||||
--
|
||||
-- Host: 127.0.0.1
|
||||
-- Generation Time: Jun 08, 2017 at 01:12 AM
|
||||
-- Server version: 5.7.14
|
||||
-- PHP Version: 5.6.25
|
||||
|
||||
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||
SET time_zone = "+00:00";
|
||||
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
|
||||
--
|
||||
-- Database: `origins06_games`
|
||||
--
|
||||
CREATE DATABASE IF NOT EXISTS `origins06_games` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
|
||||
USE `origins06_games`;
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
--
|
||||
-- Table structure for table `games`
|
||||
--
|
||||
|
||||
CREATE TABLE `games` (
|
||||
`id` int(11) NOT NULL,
|
||||
`name` text,
|
||||
`map` text,
|
||||
`ip` text,
|
||||
`port` int(11) NOT NULL DEFAULT '53640',
|
||||
`playerlimit` int(11) NOT NULL DEFAULT '12'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
--
|
||||
-- Indexes for dumped tables
|
||||
--
|
||||
|
||||
--
|
||||
-- Indexes for table `games`
|
||||
--
|
||||
ALTER TABLE `games`
|
||||
ADD PRIMARY KEY (`id`);
|
||||
|
||||
--
|
||||
-- AUTO_INCREMENT for dumped tables
|
||||
--
|
||||
|
||||
--
|
||||
-- AUTO_INCREMENT for table `games`
|
||||
--
|
||||
ALTER TABLE `games`
|
||||
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
# SharpDevelop 4.4
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Origins06_Launcher", "R06_Launcher\Origins06_Launcher.csproj", "{5B8B96E3-7332-4A5C-BEAE-4EAAE0216841}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Launcher|Any CPU = Launcher|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{5B8B96E3-7332-4A5C-BEAE-4EAAE0216841}.Launcher|Any CPU.Build.0 = Release|Any CPU
|
||||
{5B8B96E3-7332-4A5C-BEAE-4EAAE0216841}.Launcher|Any CPU.ActiveCfg = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
using System;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
///<summary>
|
||||
/// Represents a pseudo-random number generator, a device that produces random data.
|
||||
///</summary>
|
||||
class CryptoRandom : RandomNumberGenerator
|
||||
{
|
||||
private static RandomNumberGenerator r;
|
||||
|
||||
///<summary>
|
||||
/// Creates an instance of the default implementation of a cryptographic random number generator that can be used to generate random data.
|
||||
///</summary>
|
||||
public CryptoRandom()
|
||||
{
|
||||
r = RandomNumberGenerator.Create();
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// Fills the elements of a specified array of bytes with random numbers.
|
||||
///</summary>
|
||||
///<param name=”buffer”>An array of bytes to contain random numbers.</param>
|
||||
public override void GetBytes(byte[] buffer)
|
||||
{
|
||||
r.GetBytes(buffer);
|
||||
}
|
||||
|
||||
///
|
||||
/// Fills an array of bytes with a cryptographically strong random sequence of nonzero values.
|
||||
///
|
||||
/// The array to fill with cryptographically strong random nonzero bytes
|
||||
public override void GetNonZeroBytes(byte[] data)
|
||||
{
|
||||
r.GetNonZeroBytes(data);
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// Returns a random number between 0.0 and 1.0.
|
||||
///</summary>
|
||||
public double NextDouble()
|
||||
{
|
||||
byte[] b = new byte[4];
|
||||
r.GetBytes(b);
|
||||
return (double)BitConverter.ToUInt32(b, 0) / UInt32.MaxValue;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// Returns a random number within the specified range.
|
||||
///</summary>
|
||||
///<param name=”minValue”>The inclusive lower bound of the random number returned.</param>
|
||||
///<param name=”maxValue”>The exclusive upper bound of the random number returned. maxValue must be greater than or equal to minValue.</param>
|
||||
public int Next(int minValue, int maxValue)
|
||||
{
|
||||
return (int)Math.Round(NextDouble() * (maxValue - minValue - 1)) + minValue;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// Returns a nonnegative random number.
|
||||
///</summary>
|
||||
public int Next()
|
||||
{
|
||||
return Next(0, Int32.MaxValue);
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// Returns a nonnegative random number less than the specified maximum
|
||||
///</summary>
|
||||
///<param name=”maxValue”>The inclusive upper bound of the random number returned. maxValue must be greater than or equal 0</param>
|
||||
public int Next(int maxValue)
|
||||
{
|
||||
return Next(0, maxValue);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
|
||||
public static class GlobalVars
|
||||
{
|
||||
public static string SharedArgs;
|
||||
public static string Name = "Player";
|
||||
public static int UserID = 0;
|
||||
public static bool ReadyToLaunch = false;
|
||||
public static string JoinLink = "http://or06.000webhostapp.com/functions.php";
|
||||
public static string ClientMD5 = "BA8B6DEE0BFD27D2D716F4122F8D6C6E";
|
||||
}
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL
|
||||
* Date: 5/21/2017
|
||||
* Time: 4:36 PM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
namespace Origins06_Launcher
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Designer variable used to keep track of non-visual components.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Disposes resources used by the form.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing) {
|
||||
if (components != null) {
|
||||
components.Dispose();
|
||||
}
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method is required for Windows Forms designer support.
|
||||
/// Do not change the method contents inside the source code editor. The Forms designer might
|
||||
/// not be able to load this method if it was changed manually.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.progressBar1 = new System.Windows.Forms.ProgressBar();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
|
||||
this.pictureBox1.Location = new System.Drawing.Point(8, 27);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(260, 108);
|
||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox1.TabIndex = 0;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Font = new System.Drawing.Font("Arial Black", 11.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.label1.Location = new System.Drawing.Point(12, 150);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(256, 23);
|
||||
this.label1.TabIndex = 1;
|
||||
this.label1.Text = "Initializing....";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// progressBar1
|
||||
//
|
||||
this.progressBar1.Location = new System.Drawing.Point(12, 193);
|
||||
this.progressBar1.Name = "progressBar1";
|
||||
this.progressBar1.Size = new System.Drawing.Size(256, 23);
|
||||
this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
|
||||
this.progressBar1.TabIndex = 2;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Location = new System.Drawing.Point(12, 173);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(256, 17);
|
||||
this.label2.TabIndex = 3;
|
||||
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.ClientSize = new System.Drawing.Size(280, 234);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.progressBar1);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "MainForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.TopMost = true;
|
||||
this.Load += new System.EventHandler(this.MainFormLoad);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
}
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.ProgressBar progressBar1;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL
|
||||
* Date: 5/21/2017
|
||||
* Time: 4:36 PM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using Microsoft.Win32;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Reflection;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace Origins06_Launcher
|
||||
{
|
||||
/// <summary>
|
||||
/// Description of MainForm.
|
||||
/// </summary>
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
public MainForm()
|
||||
{
|
||||
//
|
||||
// The InitializeComponent() call is required for Windows Forms designer support.
|
||||
//
|
||||
InitializeComponent();
|
||||
|
||||
//
|
||||
// TODO: Add constructor code after the InitializeComponent() call.
|
||||
//
|
||||
}
|
||||
|
||||
void MainFormLoad(object sender, EventArgs e)
|
||||
{
|
||||
string EXEName = System.AppDomain.CurrentDomain.FriendlyName;
|
||||
if (EXEName.Equals("Origins06_Installer.exe"))
|
||||
{
|
||||
try
|
||||
{
|
||||
label1.Text = "Installing URI...";
|
||||
string loadstring = Environment.CurrentDirectory + Path.DirectorySeparatorChar + "Origins06_Launcher.exe";
|
||||
RegisterURLProtocol("Origins06", loadstring, "Origins06 Client");
|
||||
progressBar1.Style = ProgressBarStyle.Blocks;
|
||||
for (int i=0; i<100; i+=10)
|
||||
{
|
||||
progressBar1.Value += 10;
|
||||
}
|
||||
label1.Text = "Installation Complete!";
|
||||
label2.Text = "You can now play games. You may now close this window.";
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
label1.Text = "Installation Failed.";
|
||||
label2.Text = "Did you launch the launcher as administrator?";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!File.Exists(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\PlayerConfig.txt"))
|
||||
{
|
||||
NameForm name = new NameForm();
|
||||
name.ShowDialog();
|
||||
System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(CheckIfFinished), null, 1, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
SecurityFuncs.ReadConfigValues();
|
||||
GlobalVars.ReadyToLaunch = true;
|
||||
System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(CheckIfFinished), null, 1, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void StartGame()
|
||||
{
|
||||
//File.WriteAllText(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\arglog.txt", GlobalVars.SharedArgs);
|
||||
string ExtractedArg = GlobalVars.SharedArgs.Replace("origins06://", "").Replace("origins06", "").Replace("origins", "").Replace(":", "").Replace("/", "").Replace("?", "");
|
||||
//File.WriteAllText(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\arglog2.txt", ExtractedArg);
|
||||
string ConvertedArg = SecurityFuncs.Base64Decode(ExtractedArg);
|
||||
string[] SplitArg = ConvertedArg.Split('|');
|
||||
string ip = SecurityFuncs.Base64Decode(SplitArg[0]);
|
||||
bool IsValid = SecurityFuncs.checkClientMD5();
|
||||
if (IsValid == true)
|
||||
{
|
||||
//temp domain
|
||||
string luafile = GlobalVars.JoinLink;
|
||||
string exefile = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\Origins06_Client.exe";
|
||||
string quote = "\"";
|
||||
string args = "-script " + quote + "dofile('" + luafile + "'); _G.CSR06Connect(" + GlobalVars.UserID + ",'" + ip + "'," + SplitArg[1] + ",'" + GlobalVars.Name + "'," + SecurityFuncs.GeneratePlayerSkinColor() + "," + SecurityFuncs.GeneratePlayerLegColor() + "," + SecurityFuncs.GeneratePlayerTorsoColor() + ");" + quote;
|
||||
Process.Start(exefile, args);
|
||||
this.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
label1.Text = "Cannot launch client.";
|
||||
label2.Text = "The client has been detected as modified.";
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckIfFinished(object state)
|
||||
{
|
||||
if (GlobalVars.ReadyToLaunch == false)
|
||||
{
|
||||
System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(CheckIfFinished), null, 1, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
label1.Text = "Launching Game...";
|
||||
label2.Text = "Your game is now loading...";
|
||||
StartGame();
|
||||
}
|
||||
}
|
||||
|
||||
private static void RegisterURLProtocol(string protocolName, string applicationPath, string description)
|
||||
{
|
||||
RegistryKey subKey = Registry.ClassesRoot.CreateSubKey(protocolName);
|
||||
subKey.SetValue((string) null, (object) description);
|
||||
subKey.SetValue("URL Protocol", (object) string.Empty);
|
||||
Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell");
|
||||
Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell\\open");
|
||||
Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell\\open\\command").SetValue((string) null, (object) ("\"" + applicationPath + "\" \"%1\""));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL
|
||||
* Date: 6/4/2017
|
||||
* Time: 5:24 PM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
namespace Origins06_Launcher
|
||||
{
|
||||
partial class NameForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Designer variable used to keep track of non-visual components.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Disposes resources used by the form.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing) {
|
||||
if (components != null) {
|
||||
components.Dispose();
|
||||
}
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method is required for Windows Forms designer support.
|
||||
/// Do not change the method contents inside the source code editor. The Forms designer might
|
||||
/// not be able to load this method if it was changed manually.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NameForm));
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.Location = new System.Drawing.Point(12, 28);
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Size = new System.Drawing.Size(260, 20);
|
||||
this.textBox1.TabIndex = 0;
|
||||
this.textBox1.TextChanged += new System.EventHandler(this.TextBox1TextChanged);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Location = new System.Drawing.Point(124, 9);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(37, 16);
|
||||
this.label1.TabIndex = 1;
|
||||
this.label1.Text = "Name";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(106, 54);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||
this.button1.TabIndex = 2;
|
||||
this.button1.Text = "Launch!";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.Button1Click);
|
||||
//
|
||||
// NameForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.ClientSize = new System.Drawing.Size(284, 85);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "NameForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Load += new System.EventHandler(this.NameFormLoad);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
}
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL
|
||||
* Date: 6/4/2017
|
||||
* Time: 5:24 PM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Origins06_Launcher
|
||||
{
|
||||
/// <summary>
|
||||
/// Description of NameForm.
|
||||
/// </summary>
|
||||
public partial class NameForm : Form
|
||||
{
|
||||
public NameForm()
|
||||
{
|
||||
//
|
||||
// The InitializeComponent() call is required for Windows Forms designer support.
|
||||
//
|
||||
InitializeComponent();
|
||||
|
||||
//
|
||||
// TODO: Add constructor code after the InitializeComponent() call.
|
||||
//
|
||||
}
|
||||
|
||||
void TextBox1TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.Name = textBox1.Text;
|
||||
}
|
||||
|
||||
void NameFormLoad(object sender, EventArgs e)
|
||||
{
|
||||
if (!File.Exists(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\PlayerConfig.txt"))
|
||||
{
|
||||
SecurityFuncs.GeneratePlayerID();
|
||||
SecurityFuncs.WriteConfigValues();
|
||||
SecurityFuncs.ReadConfigValues();
|
||||
}
|
||||
else
|
||||
{
|
||||
SecurityFuncs.ReadConfigValues();
|
||||
}
|
||||
textBox1.Text = GlobalVars.Name;
|
||||
}
|
||||
|
||||
void Button1Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
protected override void OnFormClosing(FormClosingEventArgs e)
|
||||
{
|
||||
base.OnFormClosing(e);
|
||||
SecurityFuncs.WriteConfigValues();
|
||||
GlobalVars.ReadyToLaunch = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
<OpenCoverSettings />
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{5B8B96E3-7332-4A5C-BEAE-4EAAE0216841}</ProjectGuid>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>Origins06_Launcher</RootNamespace>
|
||||
<AssemblyName>Origins06_Launcher</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<ApplicationIcon>Resources\Origins06_logo.ico</ApplicationIcon>
|
||||
<NoWin32Manifest>False</NoWin32Manifest>
|
||||
<SignAssembly>False</SignAssembly>
|
||||
<DelaySign>False</DelaySign>
|
||||
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
|
||||
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
|
||||
<NoStdLib>False</NoStdLib>
|
||||
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
|
||||
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<RunCodeAnalysis>False</RunCodeAnalysis>
|
||||
<SourceAnalysisOverrideSettingsFile>C:\Users\BITL\AppData\Roaming\ICSharpCode/SharpDevelop4\Settings.SourceAnalysis</SourceAnalysisOverrideSettingsFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<BaseAddress>4194304</BaseAddress>
|
||||
<RegisterForComInterop>False</RegisterForComInterop>
|
||||
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DebugSymbols>True</DebugSymbols>
|
||||
<DebugType>Full</DebugType>
|
||||
<Optimize>False</Optimize>
|
||||
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DebugSymbols>False</DebugSymbols>
|
||||
<DebugType>None</DebugType>
|
||||
<Optimize>False</Optimize>
|
||||
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
|
||||
<StartAction>Project</StartAction>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CryptoRandom.cs" />
|
||||
<Compile Include="GlobalVars.cs" />
|
||||
<Compile Include="MainForm.cs" />
|
||||
<Compile Include="MainForm.Designer.cs">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="NameForm.cs" />
|
||||
<Compile Include="NameForm.Designer.cs">
|
||||
<DependentUpon>NameForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="SecurityFuncs.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="NameForm.resx">
|
||||
<DependentUpon>NameForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL
|
||||
* Date: 5/21/2017
|
||||
* Time: 4:36 PM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Origins06_Launcher
|
||||
{
|
||||
/// <summary>
|
||||
/// Class with program entry point.
|
||||
/// </summary>
|
||||
internal sealed class Program
|
||||
{
|
||||
static string ProcessInput(string s)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Program entry point.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
private static void Main(string[] args)
|
||||
{
|
||||
string EXEName = System.AppDomain.CurrentDomain.FriendlyName;
|
||||
if (EXEName.Equals("Origins06_Launcher.exe"))
|
||||
{
|
||||
foreach (string s in args)
|
||||
{
|
||||
GlobalVars.SharedArgs = ProcessInput(s);
|
||||
}
|
||||
}
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
#region Using directives
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
#endregion
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Origins06_Launcher")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("Origins06_Launcher")]
|
||||
[assembly: AssemblyCopyright("Copyright 2017")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// This sets the default COM visibility of types in the assembly to invisible.
|
||||
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The assembly version has following format :
|
||||
//
|
||||
// Major.Minor.Build.Revision
|
||||
//
|
||||
// You can specify all the values or you can use the default the Revision and
|
||||
// Build Numbers by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.0.*")]
|
||||
|
After Width: | Height: | Size: 361 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 361 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
|
@ -0,0 +1,153 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL
|
||||
* Date: 6/6/2017
|
||||
* Time: 11:12 AM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using System.Reflection;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace Origins06_Launcher
|
||||
{
|
||||
/// <summary>
|
||||
/// Description of SecurityFuncs.
|
||||
/// </summary>
|
||||
public class SecurityFuncs
|
||||
{
|
||||
public SecurityFuncs()
|
||||
{
|
||||
}
|
||||
|
||||
public static void WriteConfigValues()
|
||||
{
|
||||
string[] lines = {
|
||||
GlobalVars.Name.ToString(),
|
||||
GlobalVars.UserID.ToString()
|
||||
};
|
||||
File.WriteAllText(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\PlayerConfig.txt", Base64Encode(string.Join("|",lines)));
|
||||
}
|
||||
|
||||
public static void ReadConfigValues()
|
||||
{
|
||||
string line1;
|
||||
|
||||
using(StreamReader reader = new StreamReader(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\PlayerConfig.txt"))
|
||||
{
|
||||
line1 = reader.ReadLine();
|
||||
}
|
||||
|
||||
string ConvertedLine = Base64Decode(line1);
|
||||
string[] result = ConvertedLine.Split('|');
|
||||
|
||||
GlobalVars.Name = result[0];
|
||||
|
||||
GlobalVars.UserID = Convert.ToInt32(result[1]);
|
||||
|
||||
if (GlobalVars.UserID == 0)
|
||||
{
|
||||
GeneratePlayerID();
|
||||
}
|
||||
}
|
||||
|
||||
public static void GeneratePlayerID()
|
||||
{
|
||||
CryptoRandom random = new CryptoRandom();
|
||||
int randomID = 0;
|
||||
int randIDmode = random.Next(0,7);
|
||||
if (randIDmode == 0)
|
||||
{
|
||||
randomID = random.Next(0, 99);
|
||||
}
|
||||
else if (randIDmode == 1)
|
||||
{
|
||||
randomID = random.Next(0, 999);
|
||||
}
|
||||
else if (randIDmode == 2)
|
||||
{
|
||||
randomID = random.Next(0, 9999);
|
||||
}
|
||||
else if (randIDmode == 3)
|
||||
{
|
||||
randomID = random.Next(0, 99999);
|
||||
}
|
||||
else if (randIDmode == 4)
|
||||
{
|
||||
randomID = random.Next(0, 999999);
|
||||
}
|
||||
else if (randIDmode == 5)
|
||||
{
|
||||
randomID = random.Next(0, 9999999);
|
||||
}
|
||||
else if (randIDmode == 6)
|
||||
{
|
||||
randomID = random.Next(0, 99999999);
|
||||
}
|
||||
else if (randIDmode == 7)
|
||||
{
|
||||
randomID = random.Next();
|
||||
}
|
||||
//2147483647 is max id.
|
||||
GlobalVars.UserID = randomID;
|
||||
}
|
||||
|
||||
public static int GeneratePlayerSkinColor()
|
||||
{
|
||||
CryptoRandom random = new CryptoRandom();
|
||||
int randmode = random.Next(1,6);
|
||||
return randmode;
|
||||
}
|
||||
|
||||
public static int GeneratePlayerLegColor()
|
||||
{
|
||||
CryptoRandom random = new CryptoRandom();
|
||||
int randmode = random.Next(1,5);
|
||||
return randmode;
|
||||
}
|
||||
|
||||
public static int GeneratePlayerTorsoColor()
|
||||
{
|
||||
CryptoRandom random = new CryptoRandom();
|
||||
int randmode = random.Next(1,8);
|
||||
return randmode;
|
||||
}
|
||||
|
||||
public static string Base64Decode(string base64EncodedData)
|
||||
{
|
||||
var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
|
||||
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
|
||||
}
|
||||
|
||||
public static string Base64Encode(string plainText)
|
||||
{
|
||||
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
|
||||
return System.Convert.ToBase64String(plainTextBytes);
|
||||
}
|
||||
|
||||
public static bool checkClientMD5()
|
||||
{
|
||||
using (var md5 = MD5.Create())
|
||||
{
|
||||
using (var stream = File.OpenRead(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\Origins06_Client.exe"))
|
||||
{
|
||||
byte[] hash = md5.ComputeHash(stream);
|
||||
string clientMD5 = BitConverter.ToString(hash).Replace("-", "");
|
||||
if (clientMD5.Equals(GlobalVars.ClientMD5))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
C:\Users\BITL\Documents\SharpDevelop Projects\R06_Launcher\R06_Launcher\obj\Release\Origins06_Launcher.csprojResolveAssemblyReference.cache
|
||||
C:\Users\BITL\Documents\SharpDevelop Projects\R06_Launcher\R06_Launcher\obj\Release\Origins06_Launcher.MainForm.resources
|
||||
C:\Users\BITL\Documents\SharpDevelop Projects\R06_Launcher\R06_Launcher\obj\Release\Origins06_Launcher.NameForm.resources
|
||||
C:\Users\BITL\Documents\SharpDevelop Projects\R06_Launcher\R06_Launcher\obj\Release\Origins06_Launcher.csproj.GenerateResource.Cache
|
||||
C:\Users\BITL\Documents\SharpDevelop Projects\R06_Launcher\R06_Launcher\bin\Release\Origins06_Launcher.exe
|
||||
C:\Users\BITL\Documents\SharpDevelop Projects\R06_Launcher\R06_Launcher\obj\Release\Origins06_Launcher.exe
|
||||
|
|
@ -0,0 +1,688 @@
|
|||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Model" referent="RBX0">
|
||||
<Properties>
|
||||
<token name="Controller">7</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<CoordinateFrame name="ModelInPrimary">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
<R00>1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<string name="Name">erik.cassel</string>
|
||||
<Ref name="PrimaryPart">RBX1</Ref>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
<Item class="Part" referent="RBX1">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">24</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>0</X>
|
||||
<Y>4.5</Y>
|
||||
<Z>-0.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">true</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Head</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">0</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>2</X>
|
||||
<Y>1</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
<Item class="SpecialMesh" referent="RBX2">
|
||||
<Properties>
|
||||
<Content name="MeshId"><null></null></Content>
|
||||
<token name="MeshType">0</token>
|
||||
<string name="Name">Mesh</string>
|
||||
<Vector3 name="Scale">
|
||||
<X>1.25</X>
|
||||
<Y>1.25</Y>
|
||||
<Z>1.25</Z>
|
||||
</Vector3>
|
||||
<Content name="TextureId"><null></null></Content>
|
||||
<Vector3 name="VertexColor">
|
||||
<X>1</X>
|
||||
<Y>1</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Texture" referent="RBX3">
|
||||
<Properties>
|
||||
<token name="Face">5</token>
|
||||
<string name="Name">face</string>
|
||||
<float name="Shiny">20</float>
|
||||
<float name="Specular">0</float>
|
||||
<Content name="Texture"><url>rbxasset://textures\face.png</url></Content>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Weld" referent="RBX4">
|
||||
<Properties>
|
||||
<CoordinateFrame name="C0">
|
||||
<X>0</X>
|
||||
<Y>0.5</Y>
|
||||
<Z>0</Z>
|
||||
<R00>1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<CoordinateFrame name="C1">
|
||||
<X>0</X>
|
||||
<Y>-0.200000003</Y>
|
||||
<Z>0.150000006</Z>
|
||||
<R00>1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<string name="Name">HeadWeld</string>
|
||||
<Ref name="Part0">RBX1</Ref>
|
||||
<Ref name="Part1">null</Ref>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Weld" referent="RBX5">
|
||||
<Properties>
|
||||
<CoordinateFrame name="C0">
|
||||
<X>0</X>
|
||||
<Y>0.5</Y>
|
||||
<Z>0</Z>
|
||||
<R00>1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<CoordinateFrame name="C1">
|
||||
<X>0</X>
|
||||
<Y>-0.200000003</Y>
|
||||
<Z>0.150000006</Z>
|
||||
<R00>1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<string name="Name">HeadWeld</string>
|
||||
<Ref name="Part0">RBX1</Ref>
|
||||
<Ref name="Part1">null</Ref>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX6">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">23</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>0</X>
|
||||
<Y>3</Y>
|
||||
<Z>-0.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>-0</R02>
|
||||
<R10>-0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>-0</R12>
|
||||
<R20>-0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">true</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">0</float>
|
||||
<float name="LeftParamB">0</float>
|
||||
<token name="LeftSurface">2</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Torso</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">0</float>
|
||||
<float name="RightParamB">0</float>
|
||||
<token name="RightSurface">2</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>2</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
<Item class="Texture" referent="RBX7">
|
||||
<Properties>
|
||||
<token name="Face">5</token>
|
||||
<string name="Name">roblox</string>
|
||||
<float name="Shiny">20</float>
|
||||
<float name="Specular">0</float>
|
||||
<Content name="Texture"><url>rbxasset://textures\tshirt.png</url></Content>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX8">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">24</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>1.5</X>
|
||||
<Y>3</Y>
|
||||
<Z>-0.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">true</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Left Arm</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
<Item class="Script" referent="RBX9">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Script</string>
|
||||
<string name="Source">while true do--while its told its true it will happen
|
||||
script.Parent.CanCollide=true--script.Parent.(whatever) meens that its talking about the script effecting the
|
||||
--parent, which is the brick, changing whatever setting in the brick its told too change. and the true/false is
|
||||
--setting the setting to something else useing whatever unit it uses.
|
||||
wait(0)--this is how long it will wait until going to the next piece of the script below it or will restart it.
|
||||
script.Parent.CanCollide = false
|
||||
end</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX10">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">24</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>-1.5</X>
|
||||
<Y>3</Y>
|
||||
<Z>-0.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">true</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Right Arm</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
<Item class="Script" referent="RBX11">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Script</string>
|
||||
<string name="Source">while true do--while its told its true it will happen
|
||||
script.Parent.CanCollide=true--script.Parent.(whatever) meens that its talking about the script effecting the
|
||||
--parent, which is the brick, changing whatever setting in the brick its told too change. and the true/false is
|
||||
--setting the setting to something else useing whatever unit it uses.
|
||||
wait(0)--this is how long it will wait until going to the next piece of the script below it or will restart it.
|
||||
script.Parent.CanCollide = false
|
||||
end</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX12">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">0</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">119</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>0.5</X>
|
||||
<Y>1</Y>
|
||||
<Z>-0.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">false</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Left Leg</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
<Item class="Script" referent="RBX13">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Script</string>
|
||||
<string name="Source">while true do--while its told its true it will happen
|
||||
script.Parent.CanCollide=true--script.Parent.(whatever) meens that its talking about the script effecting the
|
||||
--parent, which is the brick, changing whatever setting in the brick its told too change. and the true/false is
|
||||
--setting the setting to something else useing whatever unit it uses .
|
||||
wait(0)--this is how long it will wait until going to the next piece of the script below it or will restart it.
|
||||
script.Parent.CanCollide=false--script.Parent.(whatever) meens that its talking about the script effecting the
|
||||
--parent, which is the brick, changing whatever setting in the brick its told too change. and the true/false is
|
||||
--setting the setting to something else useing whatever unit it uses.
|
||||
wait(0)--this is how long it will wait until going to the next piece of the script below it or will restart it.
|
||||
end
|
||||
while true do--while its told its true it will happen
|
||||
script.Parent.CanCollide=true--script.Parent.(whatever) meens that its talking about the script effecting the
|
||||
--parent, which is the brick, changing whatever setting in the brick its told too change. and the true/false is
|
||||
--setting the setting to something else useing whatever unit it uses .
|
||||
wait(0)--this is how long it will wait until going to the next piece of the script below it or will restart it.
|
||||
script.Parent.CanCollide=false--script.Parent.(whatever) meens that its talking about the script effecting the
|
||||
--parent, which is the brick, changing whatever setting in the brick its told too change. and the true/false is
|
||||
--setting the setting to something else useing whatever unit it uses.
|
||||
wait(0)--this is how long it will wait until going to the next piece of the script below it or will restart it.
|
||||
end
|
||||
|
||||
</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX14">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">0</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">119</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>-0.5</X>
|
||||
<Y>1</Y>
|
||||
<Z>-0.5</Z>
|
||||
<R00>-1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>-1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">false</bool>
|
||||
<token name="Controller">0</token>
|
||||
<bool name="ControllerFlagShown">true</bool>
|
||||
<bool name="DraggingV1">false</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<token name="FormFactor">0</token>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<string name="Name">Right Leg</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>2</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
<Item class="Script" referent="RBX15">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Script</string>
|
||||
<string name="Source">while true do--while its told its true it will happen
|
||||
script.Parent.CanCollide=true--script.Parent.(whatever) meens that its talking about the script effecting the
|
||||
--parent, which is the brick, changing whatever setting in the brick its told too change. and the true/false is
|
||||
--setting the setting to something else useing whatever unit it uses .
|
||||
wait(0)--this is how long it will wait until going to the next piece of the script below it or will restart it.
|
||||
script.Parent.CanCollide=false--script.Parent.(whatever) meens that its talking about the script effecting the
|
||||
--parent, which is the brick, changing whatever setting in the brick its told too change. and the true/false is
|
||||
--setting the setting to something else useing whatever unit it uses.
|
||||
wait(0)--this is how long it will wait until going to the next piece of the script below it or will restart it.
|
||||
end
|
||||
while true do--while its told its true it will happen
|
||||
script.Parent.CanCollide=true--script.Parent.(whatever) meens that its talking about the script effecting the
|
||||
--parent, which is the brick, changing whatever setting in the brick its told too change. and the true/false is
|
||||
--setting the setting to something else useing whatever unit it uses .
|
||||
wait(0)--this is how long it will wait until going to the next piece of the script below it or will restart it.
|
||||
script.Parent.CanCollide=false--script.Parent.(whatever) meens that its talking about the script effecting the
|
||||
--parent, which is the brick, changing whatever setting in the brick its told too change. and the true/false is
|
||||
--setting the setting to something else useing whatever unit it uses.
|
||||
wait(0)--this is how long it will wait until going to the next piece of the script below it or will restart it.
|
||||
end
|
||||
|
||||
</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="Humanoid" referent="RBX16">
|
||||
<Properties>
|
||||
<float name="Health">100</float>
|
||||
<bool name="Jump">false</bool>
|
||||
<float name="MaxHealth">100</float>
|
||||
<string name="Name">Humanoid</string>
|
||||
<bool name="Sit">false</bool>
|
||||
<bool name="Strafe">false</bool>
|
||||
<Vector3 name="TargetPoint">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<Vector3 name="WalkDirection">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="WalkRotationalVelocity">0</float>
|
||||
<Ref name="WalkToPart">null</Ref>
|
||||
<Vector3 name="WalkToPoint">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</roblox>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.roblox.com/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Script" referent="RBX0">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Animate</string>
|
||||
<string name="Source">-- Now with exciting TeamColors HACK!
|
||||
|
||||
|
||||
</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
# SharpDevelop 4.4
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RBX2008Launcher", "RBX2008Launcher\RBX2008Launcher.csproj", "{F92FFBED-2767-4676-9711-BB89CDA58A43}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{F92FFBED-2767-4676-9711-BB89CDA58A43}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F92FFBED-2767-4676-9711-BB89CDA58A43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F92FFBED-2767-4676-9711-BB89CDA58A43}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F92FFBED-2767-4676-9711-BB89CDA58A43}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
public static class GlobalVars
|
||||
{
|
||||
public static string ClientDir = "";
|
||||
public static string Map = "Baseplate.rbxl";
|
||||
public static string PlayerName = "Player";
|
||||
public static bool CloseOnLaunch = true;
|
||||
}
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL-Gaming
|
||||
* Date: 10/7/2016
|
||||
* Time: 3:01 PM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
namespace RBXLegacyLauncher
|
||||
{
|
||||
partial class MainForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Designer variable used to keep track of non-visual components.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Disposes resources used by the form.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing) {
|
||||
if (components != null) {
|
||||
components.Dispose();
|
||||
}
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method is required for Windows Forms designer support.
|
||||
/// Do not change the method contents inside the source code editor. The Forms designer might
|
||||
/// not be able to load this method if it was changed manually.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.listBox1 = new System.Windows.Forms.ListBox();
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.button3 = new System.Windows.Forms.Button();
|
||||
this.button5 = new System.Windows.Forms.Button();
|
||||
this.textBox2 = new System.Windows.Forms.TextBox();
|
||||
this.label15 = new System.Windows.Forms.Label();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Location = new System.Drawing.Point(100, 57);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(70, 18);
|
||||
this.label1.TabIndex = 1;
|
||||
this.label1.Text = "Map List";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// listBox1
|
||||
//
|
||||
this.listBox1.FormattingEnabled = true;
|
||||
this.listBox1.Location = new System.Drawing.Point(12, 73);
|
||||
this.listBox1.Name = "listBox1";
|
||||
this.listBox1.Size = new System.Drawing.Size(264, 134);
|
||||
this.listBox1.TabIndex = 0;
|
||||
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.ListBox1SelectedIndexChanged);
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
this.checkBox1.Checked = true;
|
||||
this.checkBox1.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.checkBox1.Location = new System.Drawing.Point(12, 35);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(158, 19);
|
||||
this.checkBox1.TabIndex = 5;
|
||||
this.checkBox1.Text = "Close Launcher on Launch";
|
||||
this.checkBox1.UseCompatibleTextRendering = true;
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
this.checkBox1.CheckedChanged += new System.EventHandler(this.CheckBox1CheckedChanged);
|
||||
//
|
||||
// button3
|
||||
//
|
||||
this.button3.Location = new System.Drawing.Point(12, 240);
|
||||
this.button3.Name = "button3";
|
||||
this.button3.Size = new System.Drawing.Size(264, 24);
|
||||
this.button3.TabIndex = 6;
|
||||
this.button3.Text = "Launch ROBLOX Studio";
|
||||
this.button3.UseVisualStyleBackColor = true;
|
||||
this.button3.Click += new System.EventHandler(this.Button3Click);
|
||||
//
|
||||
// button5
|
||||
//
|
||||
this.button5.Location = new System.Drawing.Point(192, 35);
|
||||
this.button5.Name = "button5";
|
||||
this.button5.Size = new System.Drawing.Size(84, 32);
|
||||
this.button5.TabIndex = 10;
|
||||
this.button5.Text = "Save Config";
|
||||
this.button5.UseVisualStyleBackColor = true;
|
||||
this.button5.Click += new System.EventHandler(this.Button5Click);
|
||||
//
|
||||
// textBox2
|
||||
//
|
||||
this.textBox2.Location = new System.Drawing.Point(96, 9);
|
||||
this.textBox2.Name = "textBox2";
|
||||
this.textBox2.Size = new System.Drawing.Size(180, 20);
|
||||
this.textBox2.TabIndex = 11;
|
||||
this.textBox2.Text = "Player";
|
||||
this.textBox2.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
this.textBox2.TextChanged += new System.EventHandler(this.TextBox2TextChanged);
|
||||
//
|
||||
// label15
|
||||
//
|
||||
this.label15.Location = new System.Drawing.Point(12, 12);
|
||||
this.label15.Name = "label15";
|
||||
this.label15.Size = new System.Drawing.Size(87, 15);
|
||||
this.label15.TabIndex = 12;
|
||||
this.label15.Text = "PLAYER NAME:";
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Location = new System.Drawing.Point(12, 210);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(264, 24);
|
||||
this.button2.TabIndex = 2;
|
||||
this.button2.Text = "LAUNCH GAME";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.Button2Click);
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
|
||||
this.ClientSize = new System.Drawing.Size(288, 275);
|
||||
this.Controls.Add(this.label15);
|
||||
this.Controls.Add(this.textBox2);
|
||||
this.Controls.Add(this.button5);
|
||||
this.Controls.Add(this.button3);
|
||||
this.Controls.Add(this.checkBox1);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.listBox1);
|
||||
this.Controls.Add(this.label1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "MainForm";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "RBX2008 Launcher";
|
||||
this.Load += new System.EventHandler(this.MainFormLoad);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
}
|
||||
private System.Windows.Forms.Label label15;
|
||||
private System.Windows.Forms.TextBox textBox2;
|
||||
private System.Windows.Forms.Button button5;
|
||||
private System.Windows.Forms.Button button3;
|
||||
private System.Windows.Forms.CheckBox checkBox1;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.ListBox listBox1;
|
||||
private System.Windows.Forms.Label label1;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL-Gaming
|
||||
* Date: 10/7/2016
|
||||
* Time: 3:01 PM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
|
||||
namespace RBXLegacyLauncher
|
||||
{
|
||||
/// <summary>
|
||||
/// Description of MainForm.
|
||||
/// </summary>
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
public MainForm()
|
||||
{
|
||||
//
|
||||
// The InitializeComponent() call is required for Windows Forms designer support.
|
||||
//
|
||||
InitializeComponent();
|
||||
|
||||
//
|
||||
// TODO: Add constructor code after the InitializeComponent() call.
|
||||
//
|
||||
}
|
||||
void Button2Click(object sender, EventArgs e)
|
||||
{
|
||||
string luafile = GlobalVars.ClientDir + @"\\game.lua";
|
||||
string rbxexe = GlobalVars.ClientDir + @"\\RobloxApp.exe";
|
||||
string mapfile = GlobalVars.ClientDir + @"\\maps\\" + GlobalVars.Map;
|
||||
string settingsluafile = GlobalVars.ClientDir + @"\\game.lua";
|
||||
string quote = "\"";
|
||||
string args = "";
|
||||
args = "-script " + quote + "dofile('" + settingsluafile + "'); game:Load('" + mapfile + "'); wait(0.001); dofile('" + luafile + "'); _G.Play('" + GlobalVars.PlayerName + "');" + quote;
|
||||
Process.Start(rbxexe, args);
|
||||
WriteConfigValues();
|
||||
if (GlobalVars.CloseOnLaunch == true)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
void MainFormLoad(object sender, EventArgs e)
|
||||
{
|
||||
if (!File.Exists("config.txt"))
|
||||
{
|
||||
WriteConfigValues();
|
||||
}
|
||||
GlobalVars.ClientDir = Path.Combine(Environment.CurrentDirectory, @"client");
|
||||
GlobalVars.ClientDir = GlobalVars.ClientDir.Replace(@"\",@"\\");
|
||||
GlobalVars.Map = "Baseplate.rbxl";
|
||||
string mapdir = GlobalVars.ClientDir + @"\\maps\\";
|
||||
DirectoryInfo dinfo = new DirectoryInfo(mapdir);
|
||||
FileInfo[] Files = dinfo.GetFiles("*.rbxl");
|
||||
foreach( FileInfo file in Files )
|
||||
{
|
||||
listBox1.Items.Add(file.Name);
|
||||
}
|
||||
listBox1.SelectedItem = GlobalVars.Map;
|
||||
ReadConfigValues();
|
||||
}
|
||||
|
||||
void ReadConfigValues()
|
||||
{
|
||||
string line1, line2;
|
||||
|
||||
using(StreamReader reader = new StreamReader("config.txt"))
|
||||
{
|
||||
line1 = reader.ReadLine();
|
||||
line2 = reader.ReadLine();
|
||||
}
|
||||
|
||||
bool bline1 = Convert.ToBoolean(line1);
|
||||
GlobalVars.CloseOnLaunch = bline1;
|
||||
|
||||
GlobalVars.PlayerName = line2;
|
||||
|
||||
if (GlobalVars.CloseOnLaunch == true)
|
||||
{
|
||||
checkBox1.Checked = true;
|
||||
}
|
||||
else if (GlobalVars.CloseOnLaunch == false)
|
||||
{
|
||||
checkBox1.Checked = false;
|
||||
}
|
||||
|
||||
textBox2.Text = GlobalVars.PlayerName;
|
||||
}
|
||||
|
||||
void WriteConfigValues()
|
||||
{
|
||||
string[] lines = { GlobalVars.CloseOnLaunch.ToString(), GlobalVars.PlayerName.ToString() };
|
||||
File.WriteAllLines("config.txt", lines);
|
||||
}
|
||||
|
||||
void ListBox1SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.Map = listBox1.SelectedItem.ToString();
|
||||
}
|
||||
|
||||
void CheckBox1CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (checkBox1.Checked == true)
|
||||
{
|
||||
GlobalVars.CloseOnLaunch = true;
|
||||
}
|
||||
else if (checkBox1.Checked == false)
|
||||
{
|
||||
GlobalVars.CloseOnLaunch = false;
|
||||
}
|
||||
}
|
||||
|
||||
void Button5Click(object sender, EventArgs e)
|
||||
{
|
||||
WriteConfigValues();
|
||||
}
|
||||
|
||||
void TextBox2TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.PlayerName = textBox2.Text;
|
||||
}
|
||||
|
||||
void Button3Click(object sender, EventArgs e)
|
||||
{
|
||||
string rbxexe = GlobalVars.ClientDir + @"\\RobloxApp.exe";
|
||||
Process.Start(rbxexe);
|
||||
WriteConfigValues();
|
||||
if (GlobalVars.CloseOnLaunch == true)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL-Gaming
|
||||
* Date: 10/7/2016
|
||||
* Time: 3:01 PM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace RBXLegacyLauncher
|
||||
{
|
||||
/// <summary>
|
||||
/// Class with program entry point.
|
||||
/// </summary>
|
||||
internal sealed class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// Program entry point.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
private static void Main(string[] args)
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
#region Using directives
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
#endregion
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("RBXLegacyLauncher")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("RBXLegacyLauncher")]
|
||||
[assembly: AssemblyCopyright("Copyright 2016")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// This sets the default COM visibility of types in the assembly to invisible.
|
||||
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The assembly version has following format :
|
||||
//
|
||||
// Major.Minor.Build.Revision
|
||||
//
|
||||
// You can specify all the values or you can use the default the Revision and
|
||||
// Build Numbers by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.0.*")]
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{F92FFBED-2767-4676-9711-BB89CDA58A43}</ProjectGuid>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>RBX2008Launcher</RootNamespace>
|
||||
<AssemblyName>RBX2008Launcher</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<ApplicationIcon>Resources\RBXLegacyIcon.ico</ApplicationIcon>
|
||||
<NoWin32Manifest>False</NoWin32Manifest>
|
||||
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
|
||||
<NoStdLib>False</NoStdLib>
|
||||
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
|
||||
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<BaseAddress>4194304</BaseAddress>
|
||||
<RegisterForComInterop>False</RegisterForComInterop>
|
||||
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DebugSymbols>True</DebugSymbols>
|
||||
<DebugType>Full</DebugType>
|
||||
<Optimize>False</Optimize>
|
||||
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DebugSymbols>False</DebugSymbols>
|
||||
<DebugType>None</DebugType>
|
||||
<Optimize>True</Optimize>
|
||||
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="GlobalVars.cs" />
|
||||
<Compile Include="MainForm.cs" />
|
||||
<Compile Include="MainForm.Designer.cs">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
|
After Width: | Height: | Size: 361 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
|
||||
</startup>
|
||||
</configuration>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
function Play(PlayerName)
|
||||
local plr = game.Players:CreateLocalPlayer(0);
|
||||
plr.Name = PlayerName;
|
||||
game:GetService("Visit");
|
||||
game:GetService("RunService"):run();
|
||||
plr:LoadCharacter();
|
||||
while true do wait(0.001)
|
||||
if plr.Character.Humanoid.Health == 0 then
|
||||
wait(5);
|
||||
plr:LoadCharacter();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
_G.Play=Play;
|
||||
|
|
@ -0,0 +1 @@
|
|||
settings().Rendering.frameRateManager = 2;
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
# SharpDevelop 4.4
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RBXPri2Launcher", "RBXPri2Launcher\RBXPri2Launcher.csproj", "{F92FFBED-2767-4676-9711-BB89CDA58A43}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{F92FFBED-2767-4676-9711-BB89CDA58A43}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F92FFBED-2767-4676-9711-BB89CDA58A43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F92FFBED-2767-4676-9711-BB89CDA58A43}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F92FFBED-2767-4676-9711-BB89CDA58A43}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
@ -0,0 +1,204 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL-Gaming
|
||||
* Date: 11/28/2016
|
||||
* Time: 7:55 AM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
namespace RBXPri2Launcher
|
||||
{
|
||||
partial class ClientinfoEditor
|
||||
{
|
||||
/// <summary>
|
||||
/// Designer variable used to keep track of non-visual components.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Disposes resources used by the form.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing) {
|
||||
if (components != null) {
|
||||
components.Dispose();
|
||||
}
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method is required for Windows Forms designer support.
|
||||
/// Do not change the method contents inside the source code editor. The Forms designer might
|
||||
/// not be able to load this method if it was changed manually.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ClientinfoEditor));
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox2 = new System.Windows.Forms.CheckBox();
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.checkBox5 = new System.Windows.Forms.CheckBox();
|
||||
this.button3 = new System.Windows.Forms.Button();
|
||||
this.checkBox3 = new System.Windows.Forms.CheckBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.textBox2 = new System.Windows.Forms.TextBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
this.checkBox1.Location = new System.Drawing.Point(9, 34);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(307, 24);
|
||||
this.checkBox1.TabIndex = 0;
|
||||
this.checkBox1.Text = "Allows players to set custom names";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
this.checkBox1.CheckedChanged += new System.EventHandler(this.CheckBox1CheckedChanged);
|
||||
//
|
||||
// checkBox2
|
||||
//
|
||||
this.checkBox2.Location = new System.Drawing.Point(9, 53);
|
||||
this.checkBox2.Name = "checkBox2";
|
||||
this.checkBox2.Size = new System.Drawing.Size(307, 20);
|
||||
this.checkBox2.TabIndex = 1;
|
||||
this.checkBox2.Text = "Allows the launcher to set custom IDs";
|
||||
this.checkBox2.UseVisualStyleBackColor = true;
|
||||
this.checkBox2.CheckedChanged += new System.EventHandler(this.CheckBox2CheckedChanged);
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.Location = new System.Drawing.Point(8, 176);
|
||||
this.textBox1.Multiline = true;
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.Size = new System.Drawing.Size(310, 155);
|
||||
this.textBox1.TabIndex = 4;
|
||||
this.textBox1.TextChanged += new System.EventHandler(this.TextBox1TextChanged);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Location = new System.Drawing.Point(8, 157);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(92, 16);
|
||||
this.label1.TabIndex = 5;
|
||||
this.label1.Text = "Client Description";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Location = new System.Drawing.Point(8, 9);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(307, 30);
|
||||
this.label2.TabIndex = 6;
|
||||
this.label2.Text = "Check the check boxes corresponding to what your client supports.";
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(166, 366);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(154, 30);
|
||||
this.button1.TabIndex = 7;
|
||||
this.button1.Text = "Save";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.Button1Click);
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Location = new System.Drawing.Point(8, 366);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(150, 30);
|
||||
this.button2.TabIndex = 10;
|
||||
this.button2.Text = "Load";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.Button2Click);
|
||||
//
|
||||
// checkBox5
|
||||
//
|
||||
this.checkBox5.Location = new System.Drawing.Point(9, 71);
|
||||
this.checkBox5.Name = "checkBox5";
|
||||
this.checkBox5.Size = new System.Drawing.Size(310, 20);
|
||||
this.checkBox5.TabIndex = 11;
|
||||
this.checkBox5.Text = "Loads assets from servers online";
|
||||
this.checkBox5.UseVisualStyleBackColor = true;
|
||||
this.checkBox5.CheckedChanged += new System.EventHandler(this.CheckBox5CheckedChanged);
|
||||
//
|
||||
// button3
|
||||
//
|
||||
this.button3.Location = new System.Drawing.Point(8, 337);
|
||||
this.button3.Name = "button3";
|
||||
this.button3.Size = new System.Drawing.Size(312, 23);
|
||||
this.button3.TabIndex = 12;
|
||||
this.button3.Text = "New clientinfo.txt";
|
||||
this.button3.UseVisualStyleBackColor = true;
|
||||
this.button3.Click += new System.EventHandler(this.Button3Click);
|
||||
//
|
||||
// checkBox3
|
||||
//
|
||||
this.checkBox3.Location = new System.Drawing.Point(9, 89);
|
||||
this.checkBox3.Name = "checkBox3";
|
||||
this.checkBox3.Size = new System.Drawing.Size(175, 20);
|
||||
this.checkBox3.TabIndex = 13;
|
||||
this.checkBox3.Text = "Client uses a single EXE to run";
|
||||
this.checkBox3.UseVisualStyleBackColor = true;
|
||||
this.checkBox3.CheckedChanged += new System.EventHandler(this.CheckBox3CheckedChanged);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.Location = new System.Drawing.Point(8, 112);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(65, 13);
|
||||
this.label3.TabIndex = 14;
|
||||
this.label3.Text = "Client MD5";
|
||||
//
|
||||
// textBox2
|
||||
//
|
||||
this.textBox2.Location = new System.Drawing.Point(9, 128);
|
||||
this.textBox2.Name = "textBox2";
|
||||
this.textBox2.Size = new System.Drawing.Size(311, 20);
|
||||
this.textBox2.TabIndex = 15;
|
||||
this.textBox2.TextChanged += new System.EventHandler(this.TextBox2TextChanged);
|
||||
//
|
||||
// ClientinfoEditor
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.ClientSize = new System.Drawing.Size(332, 403);
|
||||
this.Controls.Add(this.textBox2);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.checkBox3);
|
||||
this.Controls.Add(this.button3);
|
||||
this.Controls.Add(this.checkBox5);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.Controls.Add(this.checkBox2);
|
||||
this.Controls.Add(this.checkBox1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "ClientinfoEditor";
|
||||
this.Text = "Clientinfo Editor";
|
||||
this.Load += new System.EventHandler(this.ClientinfoCreatorLoad);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
}
|
||||
private System.Windows.Forms.TextBox textBox2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.CheckBox checkBox3;
|
||||
private System.Windows.Forms.Button button3;
|
||||
private System.Windows.Forms.CheckBox checkBox5;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
private System.Windows.Forms.CheckBox checkBox2;
|
||||
private System.Windows.Forms.CheckBox checkBox1;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,195 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL-Gaming
|
||||
* Date: 11/28/2016
|
||||
* Time: 7:55 AM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
|
||||
namespace RBXPri2Launcher
|
||||
{
|
||||
/// <summary>
|
||||
/// Description of ClientinfoCreator.
|
||||
/// </summary>
|
||||
public partial class ClientinfoEditor : Form
|
||||
{
|
||||
public ClientinfoEditor()
|
||||
{
|
||||
//
|
||||
// The InitializeComponent() call is required for Windows Forms designer support.
|
||||
//
|
||||
InitializeComponent();
|
||||
|
||||
//
|
||||
// TODO: Add constructor code after the InitializeComponent() call.
|
||||
//
|
||||
}
|
||||
|
||||
void CheckBox1CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (checkBox1.Checked == true)
|
||||
{
|
||||
GlobalVars.ClientCreator_UsesPlayerName = true;
|
||||
}
|
||||
else if (checkBox1.Checked == false)
|
||||
{
|
||||
GlobalVars.ClientCreator_UsesPlayerName = false;
|
||||
}
|
||||
}
|
||||
|
||||
void CheckBox2CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (checkBox2.Checked == true)
|
||||
{
|
||||
GlobalVars.ClientCreator_UsesID = true;
|
||||
}
|
||||
else if (checkBox2.Checked == false)
|
||||
{
|
||||
GlobalVars.ClientCreator_UsesID = false;
|
||||
}
|
||||
}
|
||||
|
||||
void TextBox1TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.ClientCreator_SelectedClientDesc = textBox1.Text;
|
||||
}
|
||||
|
||||
void Button2Click(object sender, EventArgs e)
|
||||
{
|
||||
using (var ofd = new OpenFileDialog())
|
||||
{
|
||||
ofd.Filter = "Text files (*.txt)|*.txt";
|
||||
ofd.FilterIndex = 2;
|
||||
ofd.FileName = "clientinfo.txt";
|
||||
ofd.Title = "Load clientinfo.txt";
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
string line1;
|
||||
string Decryptline1, Decryptline2, Decryptline3, Decryptline4, Decryptline5, Decryptline6;
|
||||
|
||||
using(StreamReader reader = new StreamReader(ofd.FileName))
|
||||
{
|
||||
line1 = reader.ReadLine();
|
||||
}
|
||||
|
||||
if (!SecurityFuncs.IsBase64String(line1))
|
||||
return;
|
||||
|
||||
string ConvertedLine = SecurityFuncs.Base64Decode(line1);
|
||||
string[] result = ConvertedLine.Split('|');
|
||||
Decryptline1 = SecurityFuncs.Base64Decode(result[0]);
|
||||
Decryptline2 = SecurityFuncs.Base64Decode(result[1]);
|
||||
Decryptline3 = SecurityFuncs.Base64Decode(result[2]);
|
||||
Decryptline4 = SecurityFuncs.Base64Decode(result[3]);
|
||||
Decryptline5 = SecurityFuncs.Base64Decode(result[4]);
|
||||
Decryptline6 = SecurityFuncs.Base64Decode(result[5]);
|
||||
|
||||
Boolean bline1 = Convert.ToBoolean(Decryptline1);
|
||||
GlobalVars.ClientCreator_UsesPlayerName = bline1;
|
||||
|
||||
Boolean bline2 = Convert.ToBoolean(Decryptline2);
|
||||
GlobalVars.ClientCreator_UsesID = bline2;
|
||||
|
||||
Boolean bline3 = Convert.ToBoolean(Decryptline3);
|
||||
GlobalVars.ClientCreator_LoadsAssetsOnline = bline3;
|
||||
|
||||
Boolean bline4 = Convert.ToBoolean(Decryptline4);
|
||||
GlobalVars.ClientCreator_LegacyMode = bline4;
|
||||
|
||||
GlobalVars.ClientCreator_SelectedClientMD5 = Decryptline5;
|
||||
|
||||
GlobalVars.ClientCreator_SelectedClientDesc = Decryptline6;
|
||||
|
||||
checkBox1.Checked = GlobalVars.ClientCreator_UsesPlayerName;
|
||||
checkBox2.Checked = GlobalVars.ClientCreator_UsesID;
|
||||
checkBox5.Checked = GlobalVars.ClientCreator_LoadsAssetsOnline;
|
||||
checkBox3.Checked = GlobalVars.ClientCreator_LegacyMode;
|
||||
textBox2.Text = GlobalVars.ClientCreator_SelectedClientMD5.ToUpper();
|
||||
textBox1.Text = GlobalVars.ClientCreator_SelectedClientDesc;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Button1Click(object sender, EventArgs e)
|
||||
{
|
||||
using (var sfd = new SaveFileDialog())
|
||||
{
|
||||
sfd.Filter = "Text files (*.txt)|*.txt";
|
||||
sfd.FilterIndex = 2;
|
||||
sfd.FileName = "clientinfo.txt";
|
||||
sfd.Title = "Save clientinfo.txt";
|
||||
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
string[] lines = {
|
||||
SecurityFuncs.Base64Encode(GlobalVars.ClientCreator_UsesPlayerName.ToString()),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.ClientCreator_UsesID.ToString()),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.ClientCreator_LoadsAssetsOnline.ToString()),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.ClientCreator_LegacyMode.ToString()),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.ClientCreator_SelectedClientMD5.ToString()),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.ClientCreator_SelectedClientDesc.ToString())
|
||||
};
|
||||
File.WriteAllText(sfd.FileName, SecurityFuncs.Base64Encode(string.Join("|",lines)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ClientinfoCreatorLoad(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CheckBox5CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (checkBox5.Checked == true)
|
||||
{
|
||||
GlobalVars.ClientCreator_LoadsAssetsOnline = true;
|
||||
}
|
||||
else if (checkBox5.Checked == false)
|
||||
{
|
||||
GlobalVars.ClientCreator_LoadsAssetsOnline = false;
|
||||
}
|
||||
}
|
||||
|
||||
void Button3Click(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.ClientCreator_UsesPlayerName = false;
|
||||
GlobalVars.ClientCreator_UsesID = false;
|
||||
GlobalVars.ClientCreator_LoadsAssetsOnline = false;
|
||||
GlobalVars.ClientCreator_LegacyMode = false;
|
||||
GlobalVars.ClientCreator_SelectedClientDesc = "";
|
||||
GlobalVars.ClientCreator_SelectedClientMD5 = "";
|
||||
checkBox1.Checked = GlobalVars.ClientCreator_UsesPlayerName;
|
||||
checkBox2.Checked = GlobalVars.ClientCreator_UsesID;
|
||||
checkBox5.Checked = GlobalVars.ClientCreator_LoadsAssetsOnline;
|
||||
checkBox3.Checked = GlobalVars.ClientCreator_LegacyMode;
|
||||
textBox2.Text = GlobalVars.ClientCreator_SelectedClientMD5.ToUpper();
|
||||
textBox1.Text = GlobalVars.ClientCreator_SelectedClientDesc;
|
||||
}
|
||||
|
||||
void CheckBox3CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (checkBox3.Checked == true)
|
||||
{
|
||||
GlobalVars.ClientCreator_LegacyMode = true;
|
||||
}
|
||||
else if (checkBox3.Checked == false)
|
||||
{
|
||||
GlobalVars.ClientCreator_LegacyMode = false;
|
||||
}
|
||||
}
|
||||
|
||||
void TextBox2TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
textBox2.Text = textBox2.Text.ToUpper();
|
||||
GlobalVars.ClientCreator_SelectedClientMD5 = textBox2.Text.ToUpper();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
using System;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
///<summary>
|
||||
/// Represents a pseudo-random number generator, a device that produces random data.
|
||||
///</summary>
|
||||
class CryptoRandom : RandomNumberGenerator
|
||||
{
|
||||
private static RandomNumberGenerator r;
|
||||
|
||||
///<summary>
|
||||
/// Creates an instance of the default implementation of a cryptographic random number generator that can be used to generate random data.
|
||||
///</summary>
|
||||
public CryptoRandom()
|
||||
{
|
||||
r = RandomNumberGenerator.Create();
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// Fills the elements of a specified array of bytes with random numbers.
|
||||
///</summary>
|
||||
///<param name=”buffer”>An array of bytes to contain random numbers.</param>
|
||||
public override void GetBytes(byte[] buffer)
|
||||
{
|
||||
r.GetBytes(buffer);
|
||||
}
|
||||
|
||||
///
|
||||
/// Fills an array of bytes with a cryptographically strong random sequence of nonzero values.
|
||||
///
|
||||
/// The array to fill with cryptographically strong random nonzero bytes
|
||||
public override void GetNonZeroBytes(byte[] data)
|
||||
{
|
||||
r.GetNonZeroBytes(data);
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// Returns a random number between 0.0 and 1.0.
|
||||
///</summary>
|
||||
public double NextDouble()
|
||||
{
|
||||
byte[] b = new byte[4];
|
||||
r.GetBytes(b);
|
||||
return (double)BitConverter.ToUInt32(b, 0) / UInt32.MaxValue;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// Returns a random number within the specified range.
|
||||
///</summary>
|
||||
///<param name=”minValue”>The inclusive lower bound of the random number returned.</param>
|
||||
///<param name=”maxValue”>The exclusive upper bound of the random number returned. maxValue must be greater than or equal to minValue.</param>
|
||||
public int Next(int minValue, int maxValue)
|
||||
{
|
||||
return (int)Math.Round(NextDouble() * (maxValue - minValue - 1)) + minValue;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// Returns a nonnegative random number.
|
||||
///</summary>
|
||||
public int Next()
|
||||
{
|
||||
return Next(0, Int32.MaxValue);
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// Returns a nonnegative random number less than the specified maximum
|
||||
///</summary>
|
||||
///<param name=”maxValue”>The inclusive upper bound of the random number returned. maxValue must be greater than or equal 0</param>
|
||||
public int Next(int maxValue)
|
||||
{
|
||||
return Next(0, maxValue);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
public static class GlobalVars
|
||||
{
|
||||
public static string ClientDir = "";
|
||||
public static string ScriptsDir = "";
|
||||
public static string MapsDir = "";
|
||||
public static string CustomPlayerDir = "";
|
||||
public static string IP = "localhost";
|
||||
public static string Version = "";
|
||||
public static string MD5 = "";
|
||||
//server settings.
|
||||
public static string Map = "Baseplate.rbxl";
|
||||
public static int MapID = 0;
|
||||
public static int RobloxPort = 53640;
|
||||
public static int DefaultRobloxPort = 53640;
|
||||
//player settings
|
||||
public static int UserID = 0;
|
||||
public static string PlayerName = "Player";
|
||||
//launcher settings.
|
||||
public static bool CloseOnLaunch = false;
|
||||
//client shit
|
||||
public static string SelectedClient = "";
|
||||
public static bool UsesPlayerName = false;
|
||||
public static bool UsesID = true;
|
||||
public static string SelectedClientDesc = "";
|
||||
public static bool LoadsAssetsOnline = false;
|
||||
public static bool LegacyMode = false;
|
||||
public static string SelectedClientMD5 = "";
|
||||
//clientinfocreator
|
||||
public static bool ClientCreator_UsesPlayerName = false;
|
||||
public static bool ClientCreator_UsesID = false;
|
||||
public static bool ClientCreator_LoadsAssetsOnline = false;
|
||||
public static string ClientCreator_SelectedClientDesc = "";
|
||||
public static bool ClientCreator_LegacyMode = false;
|
||||
public static string ClientCreator_SelectedClientMD5 = "";
|
||||
}
|
||||
|
|
@ -0,0 +1,187 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL
|
||||
* Date: 6/13/2017
|
||||
* Time: 10:24 AM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using System.Reflection;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace RBXPri2Launcher
|
||||
{
|
||||
/// <summary>
|
||||
/// Description of LauncherFuncs.
|
||||
/// </summary>
|
||||
public class LauncherFuncs
|
||||
{
|
||||
public LauncherFuncs()
|
||||
{
|
||||
}
|
||||
|
||||
public static void ReadConfigValues(string cfgpath)
|
||||
{
|
||||
string line1;
|
||||
string Decryptline1, Decryptline2, Decryptline3, Decryptline4, Decryptline5, Decryptline6;
|
||||
|
||||
using(StreamReader reader = new StreamReader(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\config.txt"))
|
||||
{
|
||||
line1 = reader.ReadLine();
|
||||
}
|
||||
|
||||
if (!SecurityFuncs.IsBase64String(line1))
|
||||
return;
|
||||
|
||||
string ConvertedLine = SecurityFuncs.Base64Decode(line1);
|
||||
string[] result = ConvertedLine.Split('|');
|
||||
Decryptline1 = SecurityFuncs.Base64Decode(result[0]);
|
||||
Decryptline2 = SecurityFuncs.Base64Decode(result[1]);
|
||||
Decryptline3 = SecurityFuncs.Base64Decode(result[2]);
|
||||
Decryptline4 = SecurityFuncs.Base64Decode(result[3]);
|
||||
Decryptline5 = SecurityFuncs.Base64Decode(result[4]);
|
||||
Decryptline6 = SecurityFuncs.Base64Decode(result[5]);
|
||||
|
||||
bool bline1 = Convert.ToBoolean(Decryptline1);
|
||||
GlobalVars.CloseOnLaunch = bline1;
|
||||
|
||||
int iline2 = Convert.ToInt32(Decryptline2);
|
||||
GlobalVars.UserID = iline2;
|
||||
|
||||
GlobalVars.PlayerName = Decryptline3;
|
||||
|
||||
GlobalVars.SelectedClient = Decryptline4;
|
||||
|
||||
GlobalVars.Map = Decryptline5;
|
||||
|
||||
int iline6 = Convert.ToInt32(Decryptline6);
|
||||
GlobalVars.RobloxPort = iline6;
|
||||
}
|
||||
|
||||
public static void WriteConfigValues(string cfgpath)
|
||||
{
|
||||
string[] lines = {
|
||||
SecurityFuncs.Base64Encode(GlobalVars.CloseOnLaunch.ToString()),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.UserID.ToString()),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.PlayerName.ToString()),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.SelectedClient.ToString()),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.Map.ToString()),
|
||||
SecurityFuncs.Base64Encode(GlobalVars.RobloxPort.ToString())
|
||||
};
|
||||
File.WriteAllText(cfgpath, SecurityFuncs.Base64Encode(string.Join("|",lines)));
|
||||
}
|
||||
|
||||
public static void ResetConfigValues()
|
||||
{
|
||||
GlobalVars.CloseOnLaunch = false;
|
||||
GlobalVars.UserID = 0;
|
||||
GlobalVars.PlayerName = "Player";
|
||||
GlobalVars.SelectedClient = "Mid-2008";
|
||||
GlobalVars.Map = "Baseplate.rbxl";
|
||||
GlobalVars.RobloxPort = 53640;
|
||||
}
|
||||
|
||||
public static void ReadClientValues(string clientpath)
|
||||
{
|
||||
string line1;
|
||||
string Decryptline1, Decryptline2, Decryptline3, Decryptline4, Decryptline5, Decryptline6;
|
||||
|
||||
using(StreamReader reader = new StreamReader(clientpath))
|
||||
{
|
||||
line1 = reader.ReadLine();
|
||||
}
|
||||
|
||||
if (!SecurityFuncs.IsBase64String(line1))
|
||||
return;
|
||||
|
||||
string ConvertedLine = SecurityFuncs.Base64Decode(line1);
|
||||
string[] result = ConvertedLine.Split('|');
|
||||
Decryptline1 = SecurityFuncs.Base64Decode(result[0]);
|
||||
Decryptline2 = SecurityFuncs.Base64Decode(result[1]);
|
||||
Decryptline3 = SecurityFuncs.Base64Decode(result[2]);
|
||||
Decryptline4 = SecurityFuncs.Base64Decode(result[3]);
|
||||
Decryptline5 = SecurityFuncs.Base64Decode(result[4]);
|
||||
Decryptline6 = SecurityFuncs.Base64Decode(result[5]);
|
||||
|
||||
bool bline1 = Convert.ToBoolean(Decryptline1);
|
||||
GlobalVars.UsesPlayerName = bline1;
|
||||
|
||||
bool bline2 = Convert.ToBoolean(Decryptline2);
|
||||
GlobalVars.UsesID = bline2;
|
||||
|
||||
bool bline3 = Convert.ToBoolean(Decryptline3);
|
||||
GlobalVars.LoadsAssetsOnline = bline3;
|
||||
|
||||
bool bline4 = Convert.ToBoolean(Decryptline4);
|
||||
GlobalVars.LegacyMode = bline4;
|
||||
|
||||
GlobalVars.SelectedClientMD5 = Decryptline5;
|
||||
|
||||
GlobalVars.SelectedClientDesc = Decryptline6;
|
||||
|
||||
GlobalVars.MD5 = GlobalVars.SelectedClientMD5;
|
||||
}
|
||||
|
||||
public static void GeneratePlayerID()
|
||||
{
|
||||
CryptoRandom random = new CryptoRandom();
|
||||
int randomID = 0;
|
||||
int randIDmode = random.Next(0,7);
|
||||
if (randIDmode == 0)
|
||||
{
|
||||
randomID = random.Next(0, 99);
|
||||
}
|
||||
else if (randIDmode == 1)
|
||||
{
|
||||
randomID = random.Next(0, 999);
|
||||
}
|
||||
else if (randIDmode == 2)
|
||||
{
|
||||
randomID = random.Next(0, 9999);
|
||||
}
|
||||
else if (randIDmode == 3)
|
||||
{
|
||||
randomID = random.Next(0, 99999);
|
||||
}
|
||||
else if (randIDmode == 4)
|
||||
{
|
||||
randomID = random.Next(0, 999999);
|
||||
}
|
||||
else if (randIDmode == 5)
|
||||
{
|
||||
randomID = random.Next(0, 9999999);
|
||||
}
|
||||
else if (randIDmode == 6)
|
||||
{
|
||||
randomID = random.Next(0, 99999999);
|
||||
}
|
||||
else if (randIDmode == 7)
|
||||
{
|
||||
randomID = random.Next();
|
||||
}
|
||||
//2147483647 is max id.
|
||||
GlobalVars.UserID = randomID;
|
||||
}
|
||||
|
||||
public static bool IsProcessOpen(string name)
|
||||
{
|
||||
foreach (Process clsProcess in Process.GetProcesses())
|
||||
{
|
||||
if (clsProcess.ProcessName.Contains(name))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,689 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL-Gaming
|
||||
* Date: 10/7/2016
|
||||
* Time: 3:01 PM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
|
||||
namespace RBXPri2Launcher
|
||||
{
|
||||
/// <summary>
|
||||
/// Description of MainForm.
|
||||
/// </summary>
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
public MainForm()
|
||||
{
|
||||
//
|
||||
// The InitializeComponent() call is required for Windows Forms designer support.
|
||||
//
|
||||
InitializeComponent();
|
||||
|
||||
//
|
||||
// TODO: Add constructor code after the InitializeComponent() call.
|
||||
//
|
||||
}
|
||||
void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage2"])//your specific tabname
|
||||
{
|
||||
string mapdir = GlobalVars.MapsDir;
|
||||
DirectoryInfo dinfo = new DirectoryInfo(mapdir);
|
||||
FileInfo[] Files = dinfo.GetFiles("*.rbxl");
|
||||
foreach( FileInfo file in Files )
|
||||
{
|
||||
listBox1.Items.Add(file.Name);
|
||||
}
|
||||
listBox1.SelectedItem = GlobalVars.Map;
|
||||
listBox2.Items.Clear();
|
||||
listBox3.Items.Clear();
|
||||
listBox4.Items.Clear();
|
||||
}
|
||||
else if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage3"])//your specific tabname
|
||||
{
|
||||
string clientdir = GlobalVars.ClientDir;
|
||||
DirectoryInfo dinfo = new DirectoryInfo(clientdir);
|
||||
DirectoryInfo[] Dirs = dinfo.GetDirectories();
|
||||
foreach( DirectoryInfo dir in Dirs )
|
||||
{
|
||||
listBox2.Items.Add(dir.Name);
|
||||
}
|
||||
listBox2.SelectedItem = GlobalVars.SelectedClient;
|
||||
listBox1.Items.Clear();
|
||||
listBox3.Items.Clear();
|
||||
listBox4.Items.Clear();
|
||||
}
|
||||
else if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage6"])//your specific tabname
|
||||
{
|
||||
string[] lines_server = File.ReadAllLines("servers.txt");
|
||||
string[] lines_ports = File.ReadAllLines("ports.txt");
|
||||
listBox3.Items.AddRange(lines_server);
|
||||
listBox4.Items.AddRange(lines_ports);
|
||||
listBox1.Items.Clear();
|
||||
listBox2.Items.Clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
listBox1.Items.Clear();
|
||||
listBox2.Items.Clear();
|
||||
listBox3.Items.Clear();
|
||||
listBox4.Items.Clear();
|
||||
}
|
||||
}
|
||||
void Button1Click(object sender, EventArgs e)
|
||||
{
|
||||
WriteConfigValues();
|
||||
Process.Start("sudppipe.exe", "-p " + GlobalVars.IP + " " + GlobalVars.RobloxPort + " " + GlobalVars.RobloxPort);
|
||||
StartClient();
|
||||
|
||||
if (GlobalVars.CloseOnLaunch == true)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
void Button2Click(object sender, EventArgs e)
|
||||
{
|
||||
WriteConfigValues();
|
||||
StartServer();
|
||||
|
||||
if (GlobalVars.CloseOnLaunch == true)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
void MainFormLoad(object sender, EventArgs e)
|
||||
{
|
||||
string[] lines = File.ReadAllLines("info.txt"); //File is in System.IO
|
||||
string version = lines[0];
|
||||
string[] defaultclient = File.ReadAllLines("info.txt");
|
||||
string defcl = defaultclient[1];
|
||||
GlobalVars.SelectedClient = defcl;
|
||||
ConsolePrint("RBXPri2 Launcher version " + version + " loaded. Initializing config.", 4);
|
||||
if (File.Exists("changelog.txt"))
|
||||
{
|
||||
richTextBox2.Text = File.ReadAllText("changelog.txt");
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsolePrint("ERROR 4 - changelog.txt not found.", 2);
|
||||
}
|
||||
if (!File.Exists("config.txt"))
|
||||
{
|
||||
ConsolePrint("WARNING 1 - config.txt not found. Creating one with default values.", 5);
|
||||
WriteConfigValues();
|
||||
}
|
||||
if (!File.Exists("servers.txt"))
|
||||
{
|
||||
ConsolePrint("WARNING 2 - servers.txt not found. Creating empty file.", 5);
|
||||
File.Create("servers.txt").Dispose();
|
||||
}
|
||||
if (!File.Exists("ports.txt"))
|
||||
{
|
||||
ConsolePrint("WARNING 3 - ports.txt not found. Creating empty file.", 5);
|
||||
File.Create("ports.txt").Dispose();
|
||||
}
|
||||
GlobalVars.ClientDir = Path.Combine(Environment.CurrentDirectory, @"clients");
|
||||
GlobalVars.ClientDir = GlobalVars.ClientDir.Replace(@"\",@"\\");
|
||||
GlobalVars.ScriptsDir = Path.Combine(Environment.CurrentDirectory, @"scripts");
|
||||
GlobalVars.ScriptsDir = GlobalVars.ScriptsDir.Replace(@"\",@"\\");
|
||||
GlobalVars.MapsDir = Path.Combine(Environment.CurrentDirectory, @"maps");
|
||||
GlobalVars.MapsDir = GlobalVars.MapsDir.Replace(@"\",@"\\");
|
||||
GlobalVars.CustomPlayerDir = Path.Combine(Environment.CurrentDirectory, @"charcustom");
|
||||
GlobalVars.CustomPlayerDir = GlobalVars.CustomPlayerDir.Replace(@"\",@"\\");
|
||||
label5.Text = Environment.CurrentDirectory;
|
||||
label8.Text = Application.ProductVersion;
|
||||
GlobalVars.IP = "localhost";
|
||||
GlobalVars.Map = "Baseplate.rbxl";
|
||||
label11.Text = version;
|
||||
GlobalVars.Version = version;
|
||||
ReadConfigValues();
|
||||
}
|
||||
|
||||
void ReadConfigValues()
|
||||
{
|
||||
LauncherFuncs.ReadConfigValues("config.txt");
|
||||
|
||||
if (GlobalVars.CloseOnLaunch == true)
|
||||
{
|
||||
checkBox1.Checked = true;
|
||||
}
|
||||
else if (GlobalVars.CloseOnLaunch == false)
|
||||
{
|
||||
checkBox1.Checked = false;
|
||||
}
|
||||
|
||||
if (GlobalVars.UserID == 0)
|
||||
{
|
||||
GeneratePlayerID();
|
||||
WriteConfigValues();
|
||||
}
|
||||
else
|
||||
{
|
||||
textBox5.Text = GlobalVars.UserID.ToString();
|
||||
}
|
||||
|
||||
textBox2.Text = GlobalVars.PlayerName;
|
||||
label26.Text = GlobalVars.SelectedClient;
|
||||
label28.Text = GlobalVars.Map;
|
||||
listBox1.SelectedItem = GlobalVars.Map;
|
||||
textBox4.Text = GlobalVars.RobloxPort.ToString();
|
||||
label37.Text = GlobalVars.IP;
|
||||
label38.Text = GlobalVars.RobloxPort.ToString();
|
||||
ConsolePrint("Config loaded.", 3);
|
||||
ReadClientValues(GlobalVars.SelectedClient);
|
||||
}
|
||||
|
||||
void WriteConfigValues()
|
||||
{
|
||||
LauncherFuncs.WriteConfigValues("config.txt");
|
||||
ConsolePrint("Config Saved.", 3);
|
||||
}
|
||||
|
||||
void ReadClientValues(string ClientName)
|
||||
{
|
||||
string clientpath = GlobalVars.ClientDir + @"\\" + ClientName + @"\\clientinfo.txt";
|
||||
|
||||
if (!File.Exists(clientpath))
|
||||
{
|
||||
ConsolePrint("ERROR 1 - No clientinfo.txt detected with the client you chose. The client either cannot be loaded, or it is not available.", 2);
|
||||
MessageBox.Show("No clientinfo.txt detected with the client you chose. The client either cannot be loaded, or it is not available.","RBXPri2 Launcher - Error while loading client", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
GlobalVars.SelectedClient = "2008";
|
||||
}
|
||||
|
||||
LauncherFuncs.ReadClientValues(clientpath);
|
||||
|
||||
if (GlobalVars.UsesPlayerName == true)
|
||||
{
|
||||
textBox2.Enabled = true;
|
||||
}
|
||||
else if (GlobalVars.UsesPlayerName == false)
|
||||
{
|
||||
textBox2.Enabled = false;
|
||||
}
|
||||
|
||||
if (GlobalVars.UsesID == true)
|
||||
{
|
||||
textBox5.Enabled = true;
|
||||
button4.Enabled = true;
|
||||
}
|
||||
else if (GlobalVars.UsesID == false)
|
||||
{
|
||||
textBox5.Enabled = false;
|
||||
button4.Enabled = false;
|
||||
}
|
||||
|
||||
if (GlobalVars.LoadsAssetsOnline == false)
|
||||
{
|
||||
label30.Visible = false;
|
||||
}
|
||||
else if (GlobalVars.LoadsAssetsOnline == true)
|
||||
{
|
||||
label30.Visible = true;
|
||||
}
|
||||
|
||||
textBox6.Text = GlobalVars.SelectedClientDesc;
|
||||
label26.Text = GlobalVars.SelectedClient;
|
||||
ConsolePrint("Client '" + GlobalVars.SelectedClient + "' successfully loaded.", 3);
|
||||
}
|
||||
|
||||
void GeneratePlayerID()
|
||||
{
|
||||
LauncherFuncs.GeneratePlayerID();
|
||||
textBox5.Text = Convert.ToString(GlobalVars.UserID);
|
||||
}
|
||||
|
||||
void TextBox1TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.IP = textBox1.Text;
|
||||
label37.Text = GlobalVars.IP;
|
||||
}
|
||||
|
||||
void ListBox1SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.Map = listBox1.SelectedItem.ToString();
|
||||
label28.Text = GlobalVars.Map;
|
||||
}
|
||||
|
||||
void CheckBox1CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (checkBox1.Checked == true)
|
||||
{
|
||||
GlobalVars.CloseOnLaunch = true;
|
||||
}
|
||||
else if (checkBox1.Checked == false)
|
||||
{
|
||||
GlobalVars.CloseOnLaunch = false;
|
||||
}
|
||||
}
|
||||
|
||||
void Button4Click(object sender, EventArgs e)
|
||||
{
|
||||
GeneratePlayerID();
|
||||
}
|
||||
|
||||
void Button5Click(object sender, EventArgs e)
|
||||
{
|
||||
WriteConfigValues();
|
||||
MessageBox.Show("Config Saved!");
|
||||
}
|
||||
|
||||
void TextBox2TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.PlayerName = textBox2.Text;
|
||||
}
|
||||
|
||||
void ListBox2SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.SelectedClient = listBox2.SelectedItem.ToString();
|
||||
ReadClientValues(GlobalVars.SelectedClient);
|
||||
}
|
||||
|
||||
void Button6Click(object sender, EventArgs e)
|
||||
{
|
||||
ClientinfoEditor cie = new ClientinfoEditor();
|
||||
cie.Show();
|
||||
}
|
||||
|
||||
void Button7Click(object sender, EventArgs e)
|
||||
{
|
||||
WriteConfigValues();
|
||||
MessageBox.Show("Config Saved!");
|
||||
}
|
||||
|
||||
void TextBox4TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
int parsedValue;
|
||||
if (int.TryParse(textBox4.Text, out parsedValue))
|
||||
{
|
||||
if (textBox4.Text.Equals(""))
|
||||
{
|
||||
//set it to the normal port, 53640. it wouldn't make any sense if we set it to 0.
|
||||
GlobalVars.RobloxPort = GlobalVars.DefaultRobloxPort;
|
||||
}
|
||||
else
|
||||
{
|
||||
GlobalVars.RobloxPort = Convert.ToInt32(textBox4.Text);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GlobalVars.RobloxPort = GlobalVars.DefaultRobloxPort;
|
||||
}
|
||||
label38.Text = GlobalVars.RobloxPort.ToString();
|
||||
}
|
||||
|
||||
void TextBox5TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
int parsedValue;
|
||||
if (int.TryParse(textBox5.Text, out parsedValue))
|
||||
{
|
||||
if (textBox5.Text.Equals(""))
|
||||
{
|
||||
GlobalVars.UserID = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
GlobalVars.UserID = Convert.ToInt32(textBox5.Text);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GlobalVars.UserID = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void Button9Click(object sender, EventArgs e)
|
||||
{
|
||||
ResetConfigValues();
|
||||
MessageBox.Show("Config Reset!");
|
||||
}
|
||||
|
||||
void ListBox3SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.IP = listBox3.SelectedItem.ToString();
|
||||
textBox1.Text = GlobalVars.IP;
|
||||
label37.Text = GlobalVars.IP;
|
||||
}
|
||||
|
||||
void ListBox4SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
GlobalVars.RobloxPort = Convert.ToInt32(listBox4.SelectedItem.ToString());
|
||||
textBox4.Text = GlobalVars.RobloxPort.ToString();
|
||||
label38.Text = GlobalVars.RobloxPort.ToString();
|
||||
}
|
||||
|
||||
void Button10Click(object sender, EventArgs e)
|
||||
{
|
||||
File.AppendAllText("servers.txt", GlobalVars.IP + Environment.NewLine);
|
||||
}
|
||||
|
||||
void Button11Click(object sender, EventArgs e)
|
||||
{
|
||||
File.AppendAllText("ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
|
||||
}
|
||||
|
||||
void Button12Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listBox3.SelectedIndex >= 0)
|
||||
{
|
||||
TextLineRemover.RemoveTextLines(new List<string> { listBox3.SelectedItem.ToString() }, "servers.txt", "servers.tmp");
|
||||
listBox3.Items.Clear();
|
||||
string[] lines_server = File.ReadAllLines("servers.txt");
|
||||
listBox3.Items.AddRange(lines_server);
|
||||
}
|
||||
}
|
||||
|
||||
void Button13Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listBox4.SelectedIndex >= 0)
|
||||
{
|
||||
TextLineRemover.RemoveTextLines(new List<string> { listBox4.SelectedItem.ToString() }, "ports.txt", "ports.tmp");
|
||||
listBox4.Items.Clear();
|
||||
string[] lines_ports = File.ReadAllLines("ports.txt");
|
||||
listBox4.Items.AddRange(lines_ports);
|
||||
}
|
||||
}
|
||||
|
||||
void Button14Click(object sender, EventArgs e)
|
||||
{
|
||||
File.Create("servers.txt").Dispose();
|
||||
listBox3.Items.Clear();
|
||||
string[] lines_server = File.ReadAllLines("servers.txt");
|
||||
listBox3.Items.AddRange(lines_server);
|
||||
}
|
||||
|
||||
void Button15Click(object sender, EventArgs e)
|
||||
{
|
||||
File.Create("ports.txt").Dispose();
|
||||
listBox4.Items.Clear();
|
||||
string[] lines_ports = File.ReadAllLines("ports.txt");
|
||||
listBox4.Items.AddRange(lines_ports);
|
||||
}
|
||||
|
||||
void Button16Click(object sender, EventArgs e)
|
||||
{
|
||||
File.AppendAllText("servers.txt", GlobalVars.IP + Environment.NewLine);
|
||||
listBox3.Items.Clear();
|
||||
string[] lines_server = File.ReadAllLines("servers.txt");
|
||||
listBox3.Items.AddRange(lines_server);
|
||||
}
|
||||
|
||||
void Button17Click(object sender, EventArgs e)
|
||||
{
|
||||
File.AppendAllText("ports.txt", GlobalVars.RobloxPort + Environment.NewLine);
|
||||
listBox4.Items.Clear();
|
||||
string[] lines_ports = File.ReadAllLines("ports.txt");
|
||||
listBox4.Items.AddRange(lines_ports);
|
||||
}
|
||||
|
||||
void Button20Click(object sender, EventArgs e)
|
||||
{
|
||||
ServerInfo infopanel = new ServerInfo();
|
||||
infopanel.Show();
|
||||
}
|
||||
|
||||
void richTextBox1_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
//Command proxy
|
||||
|
||||
int totalLines = richTextBox1.Lines.Length;
|
||||
if (totalLines > 0)
|
||||
{
|
||||
string lastLine = richTextBox1.Lines[totalLines - 1];
|
||||
|
||||
if (e.KeyCode == Keys.Enter)
|
||||
{
|
||||
richTextBox1.AppendText(Environment.NewLine);
|
||||
ConsoleProcessCommands(lastLine);
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ( e.Modifiers == Keys.Control )
|
||||
{
|
||||
switch(e.KeyCode)
|
||||
{
|
||||
case Keys.C:
|
||||
case Keys.X:
|
||||
case Keys.V:
|
||||
case Keys.Z:
|
||||
e.Handled = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ResetConfigValues()
|
||||
{
|
||||
LauncherFuncs.ResetConfigValues();
|
||||
WriteConfigValues();
|
||||
ReadConfigValues();
|
||||
}
|
||||
|
||||
void ConsolePrint(string text, int type)
|
||||
{
|
||||
richTextBox1.AppendText("[" + DateTime.Now.ToShortTimeString() + "]", Color.White);
|
||||
richTextBox1.AppendText(" - ", Color.White);
|
||||
if (type == 1)
|
||||
{
|
||||
richTextBox1.AppendText(text, Color.White);
|
||||
}
|
||||
else if (type == 2)
|
||||
{
|
||||
richTextBox1.AppendText(text, Color.Red);
|
||||
}
|
||||
else if (type == 3)
|
||||
{
|
||||
richTextBox1.AppendText(text, Color.Lime);
|
||||
}
|
||||
else if (type == 4)
|
||||
{
|
||||
richTextBox1.AppendText(text, Color.Aqua);
|
||||
}
|
||||
else if (type == 5)
|
||||
{
|
||||
richTextBox1.AppendText(text, Color.Yellow);
|
||||
}
|
||||
|
||||
richTextBox1.AppendText(Environment.NewLine);
|
||||
}
|
||||
|
||||
void StartClient()
|
||||
{
|
||||
string rbxexe = "";
|
||||
if (GlobalVars.LegacyMode == true)
|
||||
{
|
||||
rbxexe = GlobalVars.ClientDir + @"\\" + GlobalVars.SelectedClient + @"\\RobloxApp.exe";
|
||||
}
|
||||
else
|
||||
{
|
||||
rbxexe = GlobalVars.ClientDir + @"\\" + GlobalVars.SelectedClient + @"\\RobloxApp_client.exe";
|
||||
}
|
||||
string quote = "\"";
|
||||
string args = "";
|
||||
if (GlobalVars.UsesPlayerName == true && GlobalVars.UsesID == true)
|
||||
{
|
||||
args = "-script " + quote + "game:GetService('NetworkClient'):PlayerConnect(" + GlobalVars.UserID + ",'localhost'," + GlobalVars.RobloxPort + ") game.Players.LocalPlayer.Name = '" + GlobalVars.PlayerName + "' game.Players.LocalPlayer.CharacterAppearanceId = '" + GlobalVars.UserID + "'" + quote;
|
||||
}
|
||||
else if (GlobalVars.UsesPlayerName == false && GlobalVars.UsesID == true)
|
||||
{
|
||||
args = "-script " + quote + "game:GetService('NetworkClient'):PlayerConnect(" + GlobalVars.UserID + ",'localhost'," + GlobalVars.RobloxPort + ") game.Players.LocalPlayer.CharacterAppearanceId = '" + GlobalVars.UserID + "'" + quote;
|
||||
}
|
||||
else if (GlobalVars.UsesPlayerName == true && GlobalVars.UsesID == false)
|
||||
{
|
||||
args = "-script " + quote + "game:GetService('NetworkClient'):PlayerConnect(0,'localhost'," + GlobalVars.RobloxPort + ") game.Players.LocalPlayer.Name = '" + GlobalVars.PlayerName + "'" + quote;
|
||||
}
|
||||
else if (GlobalVars.UsesPlayerName == false && GlobalVars.UsesID == false)
|
||||
{
|
||||
args = "-script " + quote + "game:GetService('NetworkClient'):PlayerConnect(0,'localhost'," + GlobalVars.RobloxPort + ")" + quote;
|
||||
}
|
||||
try
|
||||
{
|
||||
ConsolePrint("Client Loaded.", 4);
|
||||
if (SecurityFuncs.checkClientMD5(GlobalVars.SelectedClient) == true)
|
||||
{
|
||||
Process.Start(rbxexe, args);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ConsolePrint("ERROR 2 - Failed to launch RBXPri2. (" + ex.Message + ")", 2);
|
||||
DialogResult result2 = MessageBox.Show("Failed to launch RBXPri2. (Error: " + ex.Message + ")","RBXPri2 Launcher - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
void StartServer()
|
||||
{
|
||||
string mapfile = GlobalVars.MapsDir + @"\\" + GlobalVars.Map;
|
||||
string rbxexe = GlobalVars.ClientDir + @"\\" + GlobalVars.SelectedClient + @"\\RobloxApp.exe";
|
||||
string quote = "\"";
|
||||
string args = "";
|
||||
if (GlobalVars.MapID > 0)
|
||||
{
|
||||
args = "-script " + quote + "game:LoadWorld(" + GlobalVars.MapID + ")" + quote;
|
||||
}
|
||||
else
|
||||
{
|
||||
args = quote + mapfile + quote;
|
||||
}
|
||||
try
|
||||
{
|
||||
ConsolePrint("Server Loaded.", 4);
|
||||
Process.Start(rbxexe, args);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ConsolePrint("ERROR 2 - Failed to launch RBXPri2. (" + ex.Message + ")", 2);
|
||||
DialogResult result2 = MessageBox.Show("Failed to launch RBXPri2. (Error: " + ex.Message + ")","RBXPri2 Launcher - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
void ConsoleProcessCommands(string command)
|
||||
{
|
||||
if (command.Equals("rbxpri2 server"))
|
||||
{
|
||||
StartServer();
|
||||
}
|
||||
else if (command.Equals("rbxpri2 client"))
|
||||
{
|
||||
Process.Start("sudppipe.exe", "-p " + GlobalVars.IP + " " + GlobalVars.RobloxPort + " " + GlobalVars.RobloxPort);
|
||||
StartClient();
|
||||
}
|
||||
else if (command.Equals("rbxpri2 config save"))
|
||||
{
|
||||
WriteConfigValues();
|
||||
}
|
||||
else if (command.Equals("rbxpri2 config load"))
|
||||
{
|
||||
ReadConfigValues();
|
||||
}
|
||||
else if (command.Equals("rbxpri2 config reset"))
|
||||
{
|
||||
ResetConfigValues();
|
||||
}
|
||||
else if (command.Equals("rbxpri2 help"))
|
||||
{
|
||||
ConsoleRBXPri2Help(0);
|
||||
}
|
||||
else if (command.Equals("rbxpri2"))
|
||||
{
|
||||
ConsoleRBXPri2Help(0);
|
||||
}
|
||||
else if (command.Equals("rbxpri2 config"))
|
||||
{
|
||||
ConsoleRBXPri2Help(1);
|
||||
}
|
||||
else if (command.Equals("config"))
|
||||
{
|
||||
ConsoleRBXPri2Help(1);
|
||||
}
|
||||
else if (command.Equals("help"))
|
||||
{
|
||||
ConsoleRBXPri2Help(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsolePrint("ERROR 3 - Command is either not registered or valid", 2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void ConsoleRBXPri2Help(int page)
|
||||
{
|
||||
if (page == 1)
|
||||
{
|
||||
ConsolePrint("rbxpri2 config", 2);
|
||||
ConsolePrint("-------------------------", 1);
|
||||
ConsolePrint("= save | Saves the config file", 3);
|
||||
ConsolePrint("= load | Reloads the config file", 3);
|
||||
ConsolePrint("= reset | Resets the config file", 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
ConsolePrint("rbxpri2", 2);
|
||||
ConsolePrint("---------", 1);
|
||||
ConsolePrint("= client | Loads client with launcher settings", 3);
|
||||
ConsolePrint("= server | Loads server with launcher settings", 3);
|
||||
ConsolePrint("= config", 3);
|
||||
ConsolePrint("-- save | Saves the config file", 4);
|
||||
ConsolePrint("-- load | Reloads the config file", 4);
|
||||
ConsolePrint("-- reset | Resets the config file", 4);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnFormClosing(FormClosingEventArgs e)
|
||||
{
|
||||
base.OnFormClosing(e);
|
||||
WriteConfigValues();
|
||||
}
|
||||
|
||||
void Button21Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string loadstring = Environment.CurrentDirectory + Path.DirectorySeparatorChar + System.AppDomain.CurrentDomain.FriendlyName;
|
||||
SecurityFuncs.RegisterURLProtocol("RBXPri2", loadstring, "RBXPri2 URI");
|
||||
ConsolePrint("URI Successfully Installed!", 3);
|
||||
DialogResult result1 = MessageBox.Show("URI Successfully Installed!","RBXPri2 Launcher - Install URI", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ConsolePrint("ERROR 5 - Failed to install URI. (" + ex.Message + ")", 2);
|
||||
DialogResult result2 = MessageBox.Show("Failed to install URI. (Error: " + ex.Message + ")","RBXPri2 Launcher - Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
void TextBox3TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
int parsedValue;
|
||||
if (int.TryParse(textBox3.Text, out parsedValue))
|
||||
{
|
||||
if (textBox3.Text.Equals(""))
|
||||
{
|
||||
GlobalVars.MapID = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
GlobalVars.MapID = Convert.ToInt32(textBox3.Text);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GlobalVars.MapID = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL-Gaming
|
||||
* Date: 10/7/2016
|
||||
* Time: 3:01 PM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace RBXPri2Launcher
|
||||
{
|
||||
/// <summary>
|
||||
/// Class with program entry point.
|
||||
/// </summary>
|
||||
internal sealed class Program
|
||||
{
|
||||
static string ProcessInput(string s)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Program entry point.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
private static void Main(string[] args)
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new MainForm());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
#region Using directives
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
#endregion
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("RBXLegacyLauncher")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("RBXLegacyLauncher")]
|
||||
[assembly: AssemblyCopyright("Copyright 2016")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// This sets the default COM visibility of types in the assembly to invisible.
|
||||
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The assembly version has following format :
|
||||
//
|
||||
// Major.Minor.Build.Revision
|
||||
//
|
||||
// You can specify all the values or you can use the default the Revision and
|
||||
// Build Numbers by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.0.*")]
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{F92FFBED-2767-4676-9711-BB89CDA58A43}</ProjectGuid>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>RBXPri2Launcher</RootNamespace>
|
||||
<AssemblyName>RBXPri2Launcher</AssemblyName>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<ApplicationIcon>Resources\RBXPri2.ico</ApplicationIcon>
|
||||
<NoWin32Manifest>False</NoWin32Manifest>
|
||||
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
|
||||
<NoStdLib>False</NoStdLib>
|
||||
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
|
||||
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<BaseAddress>4194304</BaseAddress>
|
||||
<RegisterForComInterop>False</RegisterForComInterop>
|
||||
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
|
||||
<FileAlignment>4096</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DebugSymbols>True</DebugSymbols>
|
||||
<DebugType>Full</DebugType>
|
||||
<Optimize>False</Optimize>
|
||||
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DebugSymbols>False</DebugSymbols>
|
||||
<DebugType>None</DebugType>
|
||||
<Optimize>True</Optimize>
|
||||
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ClientinfoCreator.cs" />
|
||||
<Compile Include="ClientinfoCreator.Designer.cs">
|
||||
<DependentUpon>ClientinfoCreator.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CryptoRandom.cs" />
|
||||
<Compile Include="LauncherFuncs.cs" />
|
||||
<Compile Include="RichTextBoxExtensions.cs" />
|
||||
<Compile Include="SecurityFuncs.cs" />
|
||||
<Compile Include="ServerInfo.cs" />
|
||||
<Compile Include="ServerInfo.Designer.cs">
|
||||
<DependentUpon>ServerInfo.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="TextLineRemover.cs" />
|
||||
<Compile Include="GlobalVars.cs" />
|
||||
<Compile Include="MainForm.cs" />
|
||||
<Compile Include="MainForm.Designer.cs">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="ClientinfoCreator.resx">
|
||||
<DependentUpon>ClientinfoCreator.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="MainForm.resx">
|
||||
<DependentUpon>MainForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ServerInfo.resx">
|
||||
<DependentUpon>ServerInfo.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
|
After Width: | Height: | Size: 361 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
|
@ -0,0 +1,25 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
// you need this once (only), and it must be in this namespace
|
||||
namespace System.Runtime.CompilerServices
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class
|
||||
| AttributeTargets.Method)]
|
||||
public sealed class ExtensionAttribute : Attribute {}
|
||||
}
|
||||
|
||||
public static class RichTextBoxExtensions
|
||||
{
|
||||
public static void AppendText(this RichTextBox box, string text, Color color)
|
||||
{
|
||||
box.SelectionStart = box.TextLength;
|
||||
box.SelectionLength = 0;
|
||||
|
||||
box.SelectionColor = color;
|
||||
box.AppendText(text);
|
||||
box.SelectionColor = box.ForeColor;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL
|
||||
* Date: 6/12/2017
|
||||
* Time: 5:10 PM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using System.Reflection;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using Microsoft.Win32;
|
||||
|
||||
namespace RBXPri2Launcher
|
||||
{
|
||||
/// <summary>
|
||||
/// Description of SecurityFuncs.
|
||||
/// </summary>
|
||||
public class SecurityFuncs
|
||||
{
|
||||
public SecurityFuncs()
|
||||
{
|
||||
}
|
||||
|
||||
public static string Base64Decode(string base64EncodedData)
|
||||
{
|
||||
var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
|
||||
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
|
||||
}
|
||||
|
||||
public static string Base64Encode(string plainText)
|
||||
{
|
||||
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
|
||||
return System.Convert.ToBase64String(plainTextBytes);
|
||||
}
|
||||
|
||||
public static bool IsBase64String(string s)
|
||||
{
|
||||
s = s.Trim();
|
||||
return (s.Length % 4 == 0) && Regex.IsMatch(s, @"^[a-zA-Z0-9\+/]*={0,3}$", RegexOptions.None);
|
||||
}
|
||||
|
||||
public static void RegisterURLProtocol(string protocolName, string applicationPath, string description)
|
||||
{
|
||||
RegistryKey subKey = Registry.ClassesRoot.CreateSubKey(protocolName);
|
||||
subKey.SetValue((string) null, (object) description);
|
||||
subKey.SetValue("URL Protocol", (object) string.Empty);
|
||||
Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell");
|
||||
Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell\\open");
|
||||
Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell\\open\\command").SetValue((string) null, (object) ("\"" + applicationPath + "\" \"%1\""));
|
||||
}
|
||||
|
||||
public static bool checkClientMD5(string client)
|
||||
{
|
||||
string rbxexe = "";
|
||||
if (GlobalVars.LegacyMode == true)
|
||||
{
|
||||
rbxexe = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\clients\\" + client + "\\RobloxApp.exe";
|
||||
}
|
||||
else
|
||||
{
|
||||
rbxexe = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\clients\\" + client + "\\RobloxApp_client.exe";
|
||||
}
|
||||
using (var md5 = MD5.Create())
|
||||
{
|
||||
using (var stream = File.OpenRead(rbxexe))
|
||||
{
|
||||
byte[] hash = md5.ComputeHash(stream);
|
||||
string clientMD5 = BitConverter.ToString(hash).Replace("-", "");
|
||||
if (clientMD5.Equals(GlobalVars.MD5))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL
|
||||
* Date: 5/14/2017
|
||||
* Time: 9:14 AM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
namespace RBXPri2Launcher
|
||||
{
|
||||
partial class ServerInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Designer variable used to keep track of non-visual components.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Disposes resources used by the form.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing) {
|
||||
if (components != null) {
|
||||
components.Dispose();
|
||||
}
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method is required for Windows Forms designer support.
|
||||
/// Do not change the method contents inside the source code editor. The Forms designer might
|
||||
/// not be able to load this method if it was changed manually.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerInfo));
|
||||
this.textBox1 = new System.Windows.Forms.TextBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// textBox1
|
||||
//
|
||||
this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.textBox1.BackColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.textBox1.Location = new System.Drawing.Point(2, 3);
|
||||
this.textBox1.Multiline = true;
|
||||
this.textBox1.Name = "textBox1";
|
||||
this.textBox1.ReadOnly = true;
|
||||
this.textBox1.Size = new System.Drawing.Size(501, 256);
|
||||
this.textBox1.TabIndex = 0;
|
||||
//
|
||||
// ServerInfo
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.AutoScroll = true;
|
||||
this.BackColor = System.Drawing.SystemColors.ControlLightLight;
|
||||
this.ClientSize = new System.Drawing.Size(504, 262);
|
||||
this.Controls.Add(this.textBox1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MinimumSize = new System.Drawing.Size(520, 300);
|
||||
this.Name = "ServerInfo";
|
||||
this.Text = "Server Info";
|
||||
this.Load += new System.EventHandler(this.ServerInfoLoad);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
}
|
||||
private System.Windows.Forms.TextBox textBox1;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
/*
|
||||
* Created by SharpDevelop.
|
||||
* User: BITL
|
||||
* Date: 5/14/2017
|
||||
* Time: 9:14 AM
|
||||
*
|
||||
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||
*/
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.Net;
|
||||
|
||||
namespace RBXPri2Launcher
|
||||
{
|
||||
/// <summary>
|
||||
/// Description of ServerInfo.
|
||||
/// </summary>
|
||||
public partial class ServerInfo : Form
|
||||
{
|
||||
public ServerInfo()
|
||||
{
|
||||
//
|
||||
// The InitializeComponent() call is required for Windows Forms designer support.
|
||||
//
|
||||
InitializeComponent();
|
||||
|
||||
//
|
||||
// TODO: Add constructor code after the InitializeComponent() call.
|
||||
//
|
||||
}
|
||||
|
||||
void ServerInfoLoad(object sender, EventArgs e)
|
||||
{
|
||||
textBox1.AppendText("Client: " + GlobalVars.SelectedClient);
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
textBox1.AppendText("IP: " + GetExternalIPAddress());
|
||||
textBox1.AppendText("Port: " + GlobalVars.RobloxPort.ToString());
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
textBox1.AppendText("Map: " + GlobalVars.Map);
|
||||
textBox1.AppendText(Environment.NewLine);
|
||||
textBox1.AppendText("Version: RBXPri2: " + GlobalVars.Version);
|
||||
}
|
||||
|
||||
string GetExternalIPAddress()
|
||||
{
|
||||
string ipAddress;
|
||||
using (WebClient wc = new WebClient())
|
||||
{
|
||||
try
|
||||
{
|
||||
ipAddress = wc.DownloadString("http://icanhazip.com/");
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
ipAddress = "localhost" + Environment.NewLine;
|
||||
}
|
||||
}
|
||||
|
||||
return ipAddress;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
|
||||
public static class TextLineRemover
|
||||
{
|
||||
public static void RemoveTextLines(IList<string> linesToRemove, string filename, string tempFilename)
|
||||
{
|
||||
// Initial values
|
||||
int lineNumber = 0;
|
||||
int linesRemoved = 0;
|
||||
DateTime startTime = DateTime.Now;
|
||||
|
||||
// Read file
|
||||
using (var sr = new StreamReader(filename))
|
||||
{
|
||||
// Write new file
|
||||
using (var sw = new StreamWriter(tempFilename))
|
||||
{
|
||||
// Read lines
|
||||
string line;
|
||||
while ((line = sr.ReadLine()) != null)
|
||||
{
|
||||
lineNumber++;
|
||||
// Look for text to remove
|
||||
if (!ContainsString(line, linesToRemove))
|
||||
{
|
||||
// Keep lines that does not match
|
||||
sw.WriteLine(line);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Ignore lines that DO match
|
||||
linesRemoved++;
|
||||
InvokeOnRemovedLine(new RemovedLineArgs { RemovedLine = line, RemovedLineNumber = lineNumber});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Delete original file
|
||||
File.Delete(filename);
|
||||
|
||||
// ... and put the temp file in its place.
|
||||
File.Move(tempFilename, filename);
|
||||
|
||||
// Final calculations
|
||||
DateTime endTime = DateTime.Now;
|
||||
InvokeOnFinished(new FinishedArgs {LinesRemoved = linesRemoved, TotalLines = lineNumber, TotalTime = endTime.Subtract(startTime)});
|
||||
}
|
||||
|
||||
private static bool ContainsString(string line, IEnumerable<string> linesToRemove)
|
||||
{
|
||||
foreach (var lineToRemove in linesToRemove)
|
||||
{
|
||||
if(line.Contains(lineToRemove))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static event RemovedLine OnRemovedLine;
|
||||
public static event Finished OnFinished;
|
||||
|
||||
public static void InvokeOnFinished(FinishedArgs args)
|
||||
{
|
||||
Finished handler = OnFinished;
|
||||
if (handler != null) handler(null, args);
|
||||
}
|
||||
|
||||
public static void InvokeOnRemovedLine(RemovedLineArgs args)
|
||||
{
|
||||
RemovedLine handler = OnRemovedLine;
|
||||
if (handler != null) handler(null, args);
|
||||
}
|
||||
}
|
||||
|
||||
public delegate void Finished(object sender, FinishedArgs args);
|
||||
|
||||
public class FinishedArgs
|
||||
{
|
||||
public int TotalLines { get; set; }
|
||||
public int LinesRemoved { get; set; }
|
||||
public TimeSpan TotalTime { get; set; }
|
||||
}
|
||||
|
||||
public delegate void RemovedLine(object sender, RemovedLineArgs args);
|
||||
|
||||
public class RemovedLineArgs
|
||||
{
|
||||
public string RemovedLine { get; set; }
|
||||
public int RemovedLineNumber { get; set; }
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v2.0.50727" />
|
||||
</startup>
|
||||
</configuration>
|
||||