updated files
This commit is contained in:
parent
b3afe2a48e
commit
129db484ac
|
|
@ -9,6 +9,7 @@
|
||||||
<RootNamespace>Novetus.Bootstrapper</RootNamespace>
|
<RootNamespace>Novetus.Bootstrapper</RootNamespace>
|
||||||
<AssemblyName>NovetusBootstrapper</AssemblyName>
|
<AssemblyName>NovetusBootstrapper</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
|
||||||
|
<LangVersion>8.0</LangVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<Deterministic>false</Deterministic>
|
<Deterministic>false</Deterministic>
|
||||||
<TargetFrameworkProfile />
|
<TargetFrameworkProfile />
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,140 @@
|
||||||
|
using Microsoft.Win32;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
|
// Original code made by Matt, originally intended for Sodikm 1.2.
|
||||||
|
// Slight modifications and cleanup for Novetus by Bitl.
|
||||||
|
namespace Novetus.Core
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// VC++ redists to check
|
||||||
|
/// </summary>
|
||||||
|
public enum VCPPRedist
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Don't check redist
|
||||||
|
/// </summary>
|
||||||
|
None,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// VC++ 2005 redist
|
||||||
|
/// </summary>
|
||||||
|
[Description("Visual C++ 2005 SP1 Redistributables")]
|
||||||
|
VCPP2005,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// VC++ 2008 redist
|
||||||
|
/// </summary>
|
||||||
|
[Description("Visual C++ 2008 Redistributables")]
|
||||||
|
VCPP2008,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// VC++ 2012 redist
|
||||||
|
/// </summary>
|
||||||
|
[Description("Visual C++ 2012 Redistributables")]
|
||||||
|
VCPP2012
|
||||||
|
}
|
||||||
|
|
||||||
|
public class VCPPRedistInstallationDetector
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Which key in "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\"
|
||||||
|
/// </summary>
|
||||||
|
private enum RedistKeyLocation
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// VC++2010 and below
|
||||||
|
/// </summary>
|
||||||
|
Products,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// VC++2012 and above
|
||||||
|
/// </summary>
|
||||||
|
Dependencies
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Information about where the redist is
|
||||||
|
/// </summary>
|
||||||
|
private struct RedistInformation
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Key location
|
||||||
|
/// </summary>
|
||||||
|
public RedistKeyLocation Location { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Possible keys
|
||||||
|
/// </summary>
|
||||||
|
public string[] Keys { get; }
|
||||||
|
|
||||||
|
public RedistInformation(RedistKeyLocation location, string[] keys)
|
||||||
|
{
|
||||||
|
Location = location;
|
||||||
|
Keys = keys;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// VC++ redist enum to redist infos. <br/>
|
||||||
|
/// Value is a list because VC++2012 has possible two redist keys for some reason. <br/>
|
||||||
|
/// Installer keys for VC redists can be found at https://stackoverflow.com/a/34209692.
|
||||||
|
/// </summary>
|
||||||
|
private static Dictionary<VCPPRedist, RedistInformation> _VCRedistToRedistKeysMap = new Dictionary<VCPPRedist, RedistInformation>()
|
||||||
|
{
|
||||||
|
[VCPPRedist.VCPP2005] = new RedistInformation(RedistKeyLocation.Products, new[] { "c1c4f01781cc94c4c8fb1542c0981a2a" }),
|
||||||
|
[VCPPRedist.VCPP2008] = new RedistInformation(RedistKeyLocation.Products, new[] { "6E815EB96CCE9A53884E7857C57002F0" }),
|
||||||
|
[VCPPRedist.VCPP2012] = new RedistInformation(RedistKeyLocation.Dependencies, new[] { "{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f}", "{95716cce-fc71-413f-8ad5-56c2892d4b3a}" })
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Cached installation results.
|
||||||
|
/// </summary>
|
||||||
|
private static Dictionary<VCPPRedist, bool> _VCRedistResults = new Dictionary<VCPPRedist, bool>()
|
||||||
|
{
|
||||||
|
[VCPPRedist.None] = true
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks if redist exists.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="information">Redist information</param>
|
||||||
|
/// <returns>Exists</returns>
|
||||||
|
private static bool CheckIfInstallerKeyExists(RedistInformation information)
|
||||||
|
{
|
||||||
|
string path = information.Location.ToString();
|
||||||
|
|
||||||
|
foreach (string key in information.Keys)
|
||||||
|
{
|
||||||
|
using RegistryKey? redist = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Classes\Installer\" + path + @"\" + key);
|
||||||
|
|
||||||
|
if (redist != null)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Check if a VC++ redist is installed
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="redist">VC++ redist version</param>
|
||||||
|
/// <returns>Is installed</returns>
|
||||||
|
public static bool IsInstalled(VCPPRedist redist) => _VCRedistResults[redist];
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks for all keys
|
||||||
|
/// </summary>
|
||||||
|
static VCPPRedistInstallationDetector()
|
||||||
|
{
|
||||||
|
foreach (var kvPair in _VCRedistToRedistKeysMap)
|
||||||
|
{
|
||||||
|
VCPPRedist redist = kvPair.Key;
|
||||||
|
RedistInformation information = kvPair.Value;
|
||||||
|
|
||||||
|
bool installed = CheckIfInstallerKeyExists(information);
|
||||||
|
_VCRedistResults[redist] = installed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -50,7 +50,7 @@ namespace Novetus.Core
|
||||||
"NOTE: The Web proxy feature requires an Internet connection to function properly.\n\n" +
|
"NOTE: The Web proxy feature requires an Internet connection to function properly.\n\n" +
|
||||||
"This message will appear only once.\n";
|
"This message will appear only once.\n";
|
||||||
|
|
||||||
DialogResult result = MessageBox.Show(text, "Novetus - Web Proxy Opt-In", MessageBoxButtons.YesNo);
|
DialogResult result = MessageBox.Show(text, "Novetus - Web Proxy Opt-In", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
|
||||||
|
|
||||||
switch (result)
|
switch (result)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Classes\INIFile.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Classes\INIFile.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Classes\Script.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Classes\Script.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Classes\SemaphoreLocker.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Classes\SemaphoreLocker.cs" />
|
||||||
|
<Compile Include="$(MSBuildThisFileDirectory)Classes\VCPPRedistInstallationDetector.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Classes\WebProxy.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Classes\WebProxy.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)StorageAndFunctions\ClientManagement.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)StorageAndFunctions\ClientManagement.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Classes\Downloader.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Classes\Downloader.cs" />
|
||||||
|
|
|
||||||
|
|
@ -143,8 +143,8 @@ namespace Novetus.Core
|
||||||
|
|
||||||
public void SaveSetting(string section, string name, string value)
|
public void SaveSetting(string section, string name, string value)
|
||||||
{
|
{
|
||||||
INI.IniWriteValue(section, name, value);
|
|
||||||
SaveSettingEvent();
|
SaveSettingEvent();
|
||||||
|
INI.IniWriteValue(section, name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveSettingInt(string name, int value)
|
public void SaveSettingInt(string name, int value)
|
||||||
|
|
@ -195,6 +195,7 @@ namespace Novetus.Core
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveSetting(section, name, defaultval);
|
SaveSetting(section, name, defaultval);
|
||||||
|
ReadSettingEvent();
|
||||||
return INI.IniReadValue(section, name);
|
return INI.IniReadValue(section, name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -254,8 +255,8 @@ namespace Novetus.Core
|
||||||
public override void DefineDefaults()
|
public override void DefineDefaults()
|
||||||
{
|
{
|
||||||
ValueDefaults = new Dictionary<string, string>(){
|
ValueDefaults = new Dictionary<string, string>(){
|
||||||
{"SelectedClient", ""},
|
{"SelectedClient", GlobalVars.ProgramInformation.DefaultClient},
|
||||||
{"Map", ""},
|
{"Map", GlobalVars.ProgramInformation.DefaultMap},
|
||||||
{"CloseOnLaunch", Util.BoolValue(false)},
|
{"CloseOnLaunch", Util.BoolValue(false)},
|
||||||
{"UserID", Util.IntValue(NovetusFuncs.GeneratePlayerID())},
|
{"UserID", Util.IntValue(NovetusFuncs.GeneratePlayerID())},
|
||||||
{"PlayerName", "Player"},
|
{"PlayerName", "Player"},
|
||||||
|
|
@ -264,8 +265,8 @@ namespace Novetus.Core
|
||||||
{"UPnP", Util.BoolValue(false)},
|
{"UPnP", Util.BoolValue(false)},
|
||||||
{"DisabledAssetSDKHelp", Util.BoolValue(false)},
|
{"DisabledAssetSDKHelp", Util.BoolValue(false)},
|
||||||
{"DiscordRichPresence", Util.BoolValue(true)},
|
{"DiscordRichPresence", Util.BoolValue(true)},
|
||||||
{"MapPath", ""},
|
{"MapPath", GlobalPaths.MapsDir + @"\\" + GlobalVars.ProgramInformation.DefaultMap},
|
||||||
{"MapPathSnip", ""},
|
{"MapPathSnip", GlobalPaths.MapsDirBase + @"\\" + GlobalVars.ProgramInformation.DefaultMap},
|
||||||
{"GraphicsMode", Util.IntValue((int)Settings.Mode.Automatic)},
|
{"GraphicsMode", Util.IntValue((int)Settings.Mode.Automatic)},
|
||||||
{"QualityLevel", Util.IntValue((int)Settings.Level.Automatic)},
|
{"QualityLevel", Util.IntValue((int)Settings.Level.Automatic)},
|
||||||
{"LauncherStyle", (Util.IsWineRunning() ? Util.IntValue((int)Settings.Style.Stylish) : Util.IntValue((int)Settings.Style.Extended))},
|
{"LauncherStyle", (Util.IsWineRunning() ? Util.IntValue((int)Settings.Style.Stylish) : Util.IntValue((int)Settings.Style.Extended))},
|
||||||
|
|
@ -328,14 +329,15 @@ namespace Novetus.Core
|
||||||
#region Program Information
|
#region Program Information
|
||||||
public class ProgramInfo
|
public class ProgramInfo
|
||||||
{
|
{
|
||||||
|
// Defaults are hacky but fixes the errors on intital startup.
|
||||||
public ProgramInfo()
|
public ProgramInfo()
|
||||||
{
|
{
|
||||||
Version = "";
|
Version = "";
|
||||||
Branch = "";
|
Branch = "";
|
||||||
DefaultClient = "";
|
DefaultClient = "2009E";
|
||||||
RegisterClient1 = "";
|
RegisterClient1 = "";
|
||||||
RegisterClient2 = "";
|
RegisterClient2 = "";
|
||||||
DefaultMap = "";
|
DefaultMap = "Dev - Baseplate2048.rbxl.bz2";
|
||||||
VersionName = "";
|
VersionName = "";
|
||||||
//HACK
|
//HACK
|
||||||
NetVersion = ".NET Framework 4.5.1";
|
NetVersion = ".NET Framework 4.5.1";
|
||||||
|
|
@ -739,7 +741,7 @@ namespace Novetus.Core
|
||||||
{
|
{
|
||||||
string rev = revision.ToString();
|
string rev = revision.ToString();
|
||||||
|
|
||||||
if (rev.Length > 0 && rev.Length >= 4)
|
if (rev.Length > 0 && rev.Length >= 5)
|
||||||
{
|
{
|
||||||
string posString = rev.Substring(rev.Length - 4);
|
string posString = rev.Substring(rev.Length - 4);
|
||||||
|
|
||||||
|
|
@ -838,7 +840,6 @@ namespace Novetus.Core
|
||||||
GlobalVars.ProgramInformation.InitialBootup = Convert.ToBoolean(initialBootup);
|
GlobalVars.ProgramInformation.InitialBootup = Convert.ToBoolean(initialBootup);
|
||||||
GlobalVars.ProgramInformation.VersionName = verNumber;
|
GlobalVars.ProgramInformation.VersionName = verNumber;
|
||||||
GlobalVars.ProgramInformation.IsSnapshot = Convert.ToBoolean(isSnapshot);
|
GlobalVars.ProgramInformation.IsSnapshot = Convert.ToBoolean(isSnapshot);
|
||||||
RegisterDefaults();
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -847,14 +848,6 @@ namespace Novetus.Core
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RegisterDefaults()
|
|
||||||
{
|
|
||||||
GlobalVars.UserConfiguration.SaveSetting("SelectedClient", GlobalVars.ProgramInformation.DefaultClient);
|
|
||||||
GlobalVars.UserConfiguration.SaveSetting("Map", GlobalVars.ProgramInformation.DefaultMap);
|
|
||||||
GlobalVars.UserConfiguration.SaveSetting("MapPath", GlobalPaths.MapsDir + @"\\" + GlobalVars.ProgramInformation.DefaultMap);
|
|
||||||
GlobalVars.UserConfiguration.SaveSetting("MapPathSnip", GlobalPaths.MapsDirBase + @"\\" + GlobalVars.ProgramInformation.DefaultMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void TurnOffInitialSequence()
|
public static void TurnOffInitialSequence()
|
||||||
{
|
{
|
||||||
//READ
|
//READ
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,44 @@ namespace NovetusLauncher
|
||||||
LocalVars.launcherInitState = false;
|
LocalVars.launcherInitState = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// very hacky but hear me out
|
||||||
|
bool VC2005 = VCPPRedistInstallationDetector.IsInstalled(VCPPRedist.VCPP2005);
|
||||||
|
bool VC2008 = VCPPRedistInstallationDetector.IsInstalled(VCPPRedist.VCPP2008);
|
||||||
|
bool VC2012 = VCPPRedistInstallationDetector.IsInstalled(VCPPRedist.VCPP2012);
|
||||||
|
bool isAnyInstalled = VC2005 && VC2008 && VC2012;
|
||||||
|
string notInstalledText = "";
|
||||||
|
|
||||||
|
if (!isAnyInstalled)
|
||||||
|
{
|
||||||
|
if (!VC2005)
|
||||||
|
{
|
||||||
|
Util.ConsolePrint("WARNING - Visual C++ 2005 SP1 Redistributables have not been found. Some clients may not launch.", 5);
|
||||||
|
notInstalledText += "Visual C++ 2005 SP1 Redistributables\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!VC2008)
|
||||||
|
{
|
||||||
|
Util.ConsolePrint("WARNING - Visual C++ 2008 Redistributables have not been found. Some clients may not launch.", 5);
|
||||||
|
notInstalledText += "Visual C++ 2008 Redistributables\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!VC2012)
|
||||||
|
{
|
||||||
|
Util.ConsolePrint("WARNING - Visual C++ 2012 Redistributables have not been found. Some clients may not launch.", 5);
|
||||||
|
notInstalledText += "Visual C++ 2012 Redistributables\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
string text = "Novetus has detected that the following dependencies are not installed:\n\n"
|
||||||
|
+ notInstalledText
|
||||||
|
+ "\n\nIt is recomended to download these dependencies from the Microsoft website. Installing these will prevent errors upon starting up a client, like 'side-by-side configuration' errors.";
|
||||||
|
|
||||||
|
MessageBox.Show(text, "Novetus - Dependency Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Util.ConsolePrint("All client dependencies are installed.", 4);
|
||||||
|
}
|
||||||
|
|
||||||
GlobalVars.Proxy.DoSetup();
|
GlobalVars.Proxy.DoSetup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ namespace NovetusLauncher
|
||||||
bool helpMode = false;
|
bool helpMode = false;
|
||||||
bool disableCommands = false;
|
bool disableCommands = false;
|
||||||
string[] argList;
|
string[] argList;
|
||||||
FileFormat.Config cmdConfig;
|
|
||||||
|
|
||||||
public NovetusConsole()
|
public NovetusConsole()
|
||||||
{
|
{
|
||||||
|
|
@ -85,8 +84,6 @@ namespace NovetusLauncher
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdConfig = GlobalVars.UserConfiguration;
|
|
||||||
|
|
||||||
//disableCommands = true;
|
//disableCommands = true;
|
||||||
bool no3d = false;
|
bool no3d = false;
|
||||||
bool nomap = false;
|
bool nomap = false;
|
||||||
|
|
@ -123,7 +120,7 @@ namespace NovetusLauncher
|
||||||
|
|
||||||
if (ConsoleArgs["client"] != null)
|
if (ConsoleArgs["client"] != null)
|
||||||
{
|
{
|
||||||
cmdConfig.SaveSetting("SelectedClient", ConsoleArgs["client"]);
|
GlobalVars.UserConfiguration.SaveSetting("SelectedClient", ConsoleArgs["client"]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -153,14 +150,14 @@ namespace NovetusLauncher
|
||||||
|
|
||||||
if (ConsoleArgs["hostport"] != null)
|
if (ConsoleArgs["hostport"] != null)
|
||||||
{
|
{
|
||||||
cmdConfig.SaveSettingInt("RobloxPort", Convert.ToInt32(ConsoleArgs["hostport"]));
|
GlobalVars.UserConfiguration.SaveSettingInt("RobloxPort", Convert.ToInt32(ConsoleArgs["hostport"]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ConsoleArgs["upnp"] != null)
|
if (ConsoleArgs["upnp"] != null)
|
||||||
{
|
{
|
||||||
cmdConfig.SaveSettingBool("UPnP", Convert.ToBoolean(ConsoleArgs["upnp"]));
|
GlobalVars.UserConfiguration.SaveSettingBool("UPnP", Convert.ToBoolean(ConsoleArgs["upnp"]));
|
||||||
|
|
||||||
if (cmdConfig.ReadSettingBool("UPnP"))
|
if (GlobalVars.UserConfiguration.ReadSettingBool("UPnP"))
|
||||||
{
|
{
|
||||||
Util.ConsolePrint("Novetus will now use UPnP for port forwarding.", 4);
|
Util.ConsolePrint("Novetus will now use UPnP for port forwarding.", 4);
|
||||||
}
|
}
|
||||||
|
|
@ -172,9 +169,9 @@ namespace NovetusLauncher
|
||||||
|
|
||||||
if (ConsoleArgs["notifications"] != null)
|
if (ConsoleArgs["notifications"] != null)
|
||||||
{
|
{
|
||||||
cmdConfig.SaveSettingBool("ShowServerNotifications", Convert.ToBoolean(ConsoleArgs["notifications"]));
|
GlobalVars.UserConfiguration.SaveSettingBool("ShowServerNotifications", Convert.ToBoolean(ConsoleArgs["notifications"]));
|
||||||
|
|
||||||
if (cmdConfig.ReadSettingBool("ShowServerNotifications"))
|
if (GlobalVars.UserConfiguration.ReadSettingBool("ShowServerNotifications"))
|
||||||
{
|
{
|
||||||
Util.ConsolePrint("Novetus will show notifications on player join/leave.", 4);
|
Util.ConsolePrint("Novetus will show notifications on player join/leave.", 4);
|
||||||
}
|
}
|
||||||
|
|
@ -186,17 +183,17 @@ namespace NovetusLauncher
|
||||||
|
|
||||||
if (ConsoleArgs["maxplayers"] != null)
|
if (ConsoleArgs["maxplayers"] != null)
|
||||||
{
|
{
|
||||||
cmdConfig.SaveSettingInt("PlayerLimit", Convert.ToInt32(ConsoleArgs["maxplayers"]));
|
GlobalVars.UserConfiguration.SaveSettingInt("PlayerLimit", Convert.ToInt32(ConsoleArgs["maxplayers"]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ConsoleArgs["serverbrowsername"] != null)
|
if (ConsoleArgs["serverbrowsername"] != null)
|
||||||
{
|
{
|
||||||
cmdConfig.SaveSetting("ServerBrowserServerName", ConsoleArgs["serverbrowsername"]);
|
GlobalVars.UserConfiguration.SaveSetting("ServerBrowserServerName", ConsoleArgs["serverbrowsername"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ConsoleArgs["serverbrowseraddress"] != null)
|
if (ConsoleArgs["serverbrowseraddress"] != null)
|
||||||
{
|
{
|
||||||
cmdConfig.SaveSetting("ServerBrowserServerAddress", ConsoleArgs["serverbrowseraddress"]);
|
GlobalVars.UserConfiguration.SaveSetting("ServerBrowserServerAddress", ConsoleArgs["serverbrowseraddress"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
MapArg(ConsoleArgs);
|
MapArg(ConsoleArgs);
|
||||||
|
|
@ -228,19 +225,15 @@ namespace NovetusLauncher
|
||||||
|
|
||||||
ConsoleForm.StartGame(loadMode, no3d, nomap, true);
|
ConsoleForm.StartGame(loadMode, no3d, nomap, true);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
cmdConfig = new FileFormat.Config("cmdconfig.ini");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MapArg (CommandLineArguments.Arguments ConsoleArgs)
|
public void MapArg (CommandLineArguments.Arguments ConsoleArgs)
|
||||||
{
|
{
|
||||||
if (ConsoleArgs["map"] != null)
|
if (ConsoleArgs["map"] != null)
|
||||||
{
|
{
|
||||||
cmdConfig.SaveSetting("Map", ConsoleArgs["map"]);
|
GlobalVars.UserConfiguration.SaveSetting("Map", ConsoleArgs["map"]);
|
||||||
cmdConfig.SaveSetting("MapPath", ConsoleArgs["map"]);
|
GlobalVars.UserConfiguration.SaveSetting("MapPath", ConsoleArgs["map"]);
|
||||||
Util.ConsolePrint("Novetus will now launch the client with the map " + cmdConfig.ReadSetting("MapPath"), 4);
|
Util.ConsolePrint("Novetus will now launch the client with the map " + GlobalVars.UserConfiguration.ReadSetting("MapPath"), 4);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -361,13 +354,13 @@ namespace NovetusLauncher
|
||||||
|
|
||||||
if (vals[1].Equals("none", StringComparison.InvariantCultureIgnoreCase))
|
if (vals[1].Equals("none", StringComparison.InvariantCultureIgnoreCase))
|
||||||
{
|
{
|
||||||
cmdConfig.SaveSetting("AlternateServerIP");
|
GlobalVars.UserConfiguration.SaveSetting("AlternateServerIP");
|
||||||
Util.ConsolePrint("Alternate Server IP removed.", 4);
|
Util.ConsolePrint("Alternate Server IP removed.", 4);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cmdConfig.SaveSetting("AlternateServerIP", vals[1]);
|
GlobalVars.UserConfiguration.SaveSetting("AlternateServerIP", vals[1]);
|
||||||
Util.ConsolePrint("Alternate Server IP set to " + cmdConfig.ReadSetting("AlternateServerIP"), 4);
|
Util.ConsolePrint("Alternate Server IP set to " + GlobalVars.UserConfiguration.ReadSetting("AlternateServerIP"), 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
|
|
@ -398,7 +391,7 @@ namespace NovetusLauncher
|
||||||
|
|
||||||
if (vals[1].Equals("on", StringComparison.InvariantCultureIgnoreCase))
|
if (vals[1].Equals("on", StringComparison.InvariantCultureIgnoreCase))
|
||||||
{
|
{
|
||||||
if (cmdConfig.ReadSettingBool("WebProxyInitialSetupRequired"))
|
if (GlobalVars.UserConfiguration.ReadSettingBool("WebProxyInitialSetupRequired"))
|
||||||
{
|
{
|
||||||
// this is wierd and really dumb if we are just using console mode.....
|
// this is wierd and really dumb if we are just using console mode.....
|
||||||
GlobalVars.Proxy.DoSetup();
|
GlobalVars.Proxy.DoSetup();
|
||||||
|
|
@ -406,9 +399,9 @@ namespace NovetusLauncher
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// fast start it.
|
// fast start it.
|
||||||
if (!cmdConfig.ReadSettingBool("WebProxyEnabled"))
|
if (!GlobalVars.UserConfiguration.ReadSettingBool("WebProxyEnabled"))
|
||||||
{
|
{
|
||||||
cmdConfig.SaveSettingBool("WebProxyEnabled", true);
|
GlobalVars.UserConfiguration.SaveSettingBool("WebProxyEnabled", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalVars.Proxy.Start();
|
GlobalVars.Proxy.Start();
|
||||||
|
|
@ -416,7 +409,7 @@ namespace NovetusLauncher
|
||||||
}
|
}
|
||||||
else if (vals[1].Equals("off", StringComparison.InvariantCultureIgnoreCase))
|
else if (vals[1].Equals("off", StringComparison.InvariantCultureIgnoreCase))
|
||||||
{
|
{
|
||||||
if (!GlobalVars.Proxy.Started && !cmdConfig.ReadSettingBool("WebProxyEnabled"))
|
if (!GlobalVars.Proxy.Started && !GlobalVars.UserConfiguration.ReadSettingBool("WebProxyEnabled"))
|
||||||
{
|
{
|
||||||
Util.ConsolePrint("The web proxy is disabled. Please turn it on in order to use this command.", 2);
|
Util.ConsolePrint("The web proxy is disabled. Please turn it on in order to use this command.", 2);
|
||||||
return;
|
return;
|
||||||
|
|
@ -426,15 +419,15 @@ namespace NovetusLauncher
|
||||||
}
|
}
|
||||||
else if (vals[1].Equals("disable", StringComparison.InvariantCultureIgnoreCase))
|
else if (vals[1].Equals("disable", StringComparison.InvariantCultureIgnoreCase))
|
||||||
{
|
{
|
||||||
if (!GlobalVars.Proxy.Started && !cmdConfig.ReadSettingBool("WebProxyEnabled"))
|
if (!GlobalVars.Proxy.Started && !GlobalVars.UserConfiguration.ReadSettingBool("WebProxyEnabled"))
|
||||||
{
|
{
|
||||||
Util.ConsolePrint("The web proxy is already disabled.", 2);
|
Util.ConsolePrint("The web proxy is already disabled.", 2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmdConfig.ReadSettingBool("WebProxyEnabled"))
|
if (GlobalVars.UserConfiguration.ReadSettingBool("WebProxyEnabled"))
|
||||||
{
|
{
|
||||||
cmdConfig.SaveSettingBool("WebProxyEnabled", false);
|
GlobalVars.UserConfiguration.SaveSettingBool("WebProxyEnabled", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalVars.Proxy.Stop();
|
GlobalVars.Proxy.Stop();
|
||||||
|
|
@ -443,7 +436,7 @@ namespace NovetusLauncher
|
||||||
}
|
}
|
||||||
else if (vals[1].Equals("extensions", StringComparison.InvariantCultureIgnoreCase))
|
else if (vals[1].Equals("extensions", StringComparison.InvariantCultureIgnoreCase))
|
||||||
{
|
{
|
||||||
if (!GlobalVars.Proxy.Started && !cmdConfig.ReadSettingBool("WebProxyEnabled"))
|
if (!GlobalVars.Proxy.Started && !GlobalVars.UserConfiguration.ReadSettingBool("WebProxyEnabled"))
|
||||||
{
|
{
|
||||||
Util.ConsolePrint("The web proxy is disabled. Please turn it on in order to use this command.", 2);
|
Util.ConsolePrint("The web proxy is disabled. Please turn it on in order to use this command.", 2);
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
<RootNamespace>NovetusLauncher</RootNamespace>
|
<RootNamespace>NovetusLauncher</RootNamespace>
|
||||||
<AssemblyName>Novetus</AssemblyName>
|
<AssemblyName>Novetus</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
|
||||||
|
<LangVersion>8.0</LangVersion>
|
||||||
<TargetFrameworkProfile>
|
<TargetFrameworkProfile>
|
||||||
</TargetFrameworkProfile>
|
</TargetFrameworkProfile>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ namespace NovetusLauncher
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool formsOpen = false;
|
static bool formsOpen = false;
|
||||||
static LauncherFormShared entryPointForm;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Program entry point.
|
/// Program entry point.
|
||||||
|
|
@ -35,7 +34,6 @@ namespace NovetusLauncher
|
||||||
{
|
{
|
||||||
System.Windows.Forms.Application.EnableVisualStyles();
|
System.Windows.Forms.Application.EnableVisualStyles();
|
||||||
System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
|
System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
|
||||||
entryPointForm = new LauncherFormShared();
|
|
||||||
|
|
||||||
if (!Directory.Exists(GlobalPaths.LogDir))
|
if (!Directory.Exists(GlobalPaths.LogDir))
|
||||||
{
|
{
|
||||||
|
|
@ -49,6 +47,7 @@ namespace NovetusLauncher
|
||||||
|
|
||||||
FileManagement.ReadInfoFile(GlobalPaths.ConfigDir + "\\" + GlobalPaths.InfoName,
|
FileManagement.ReadInfoFile(GlobalPaths.ConfigDir + "\\" + GlobalPaths.InfoName,
|
||||||
GlobalPaths.ConfigDir + "\\" + GlobalPaths.TermListFileName);
|
GlobalPaths.ConfigDir + "\\" + GlobalPaths.TermListFileName);
|
||||||
|
|
||||||
GlobalVars.ColorsLoaded = FileManagement.InitColors();
|
GlobalVars.ColorsLoaded = FileManagement.InitColors();
|
||||||
|
|
||||||
bool isSDK = false;
|
bool isSDK = false;
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
<RootNamespace>NovetusURI</RootNamespace>
|
<RootNamespace>NovetusURI</RootNamespace>
|
||||||
<AssemblyName>NovetusURI</AssemblyName>
|
<AssemblyName>NovetusURI</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
|
||||||
|
<LangVersion>8.0</LangVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<TargetFrameworkProfile />
|
<TargetFrameworkProfile />
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,16 @@
|
||||||
|
EDGE Snapshot v23.8728.22429.2
|
||||||
|
Fixes:
|
||||||
|
- Fixed missing clientinfo error on intital launch.
|
||||||
|
----------------------------------------------------------------------------
|
||||||
|
EDGE Snapshot v23.8724.27074.1
|
||||||
Enhancements:
|
Enhancements:
|
||||||
- Added proper metatable protection on all affected clients. (2006S-2010L)
|
- Added proper metatable protection on all affected clients. (2006S-2010L)
|
||||||
|
- Downgraded Novetus to .NET Framework 4.5.1 for better WINE/Proton compatibility.
|
||||||
|
- Added the ability for Novetus to detect if Visual C++ dependencies are installed.
|
||||||
|
- Credit to Matt from Sodikm for the code for this feature. :D
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
- Fixed issues with the new config system.
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
EDGE Snapshot v23.8700.30967.1
|
EDGE Snapshot v23.8700.30967.1
|
||||||
Notes:
|
Notes:
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ if not exist "%gamescriptdir%/2009E" mkdir "%gamescriptdir%/2009E"
|
||||||
if not exist "%gamescriptdir%/2009E-HD" mkdir "%gamescriptdir%/2009E-HD"
|
if not exist "%gamescriptdir%/2009E-HD" mkdir "%gamescriptdir%/2009E-HD"
|
||||||
if not exist "%gamescriptdir%/2009L" mkdir "%gamescriptdir%/2009L"
|
if not exist "%gamescriptdir%/2009L" mkdir "%gamescriptdir%/2009L"
|
||||||
if not exist "%gamescriptdir%/2010L" mkdir "%gamescriptdir%/2010L"
|
if not exist "%gamescriptdir%/2010L" mkdir "%gamescriptdir%/2010L"
|
||||||
if not exist "%gamescriptdir%/2011E" mkdir "%gamescriptdir%/2011E"
|
|
||||||
if not exist "%gamescriptdir%/2011M" mkdir "%gamescriptdir%/2011M"
|
if not exist "%gamescriptdir%/2011M" mkdir "%gamescriptdir%/2011M"
|
||||||
if not exist "%gamescriptdir%/2012M" mkdir "%gamescriptdir%/2012M"
|
if not exist "%gamescriptdir%/2012M" mkdir "%gamescriptdir%/2012M"
|
||||||
|
|
||||||
|
|
@ -32,18 +31,9 @@ XCOPY "%cd%\Novetus\clients\2009E\content\scripts\CSMPFunctions.lua" "%gamescrip
|
||||||
XCOPY "%cd%\Novetus\clients\2009E-HD\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2009E-HD" /y
|
XCOPY "%cd%\Novetus\clients\2009E-HD\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2009E-HD" /y
|
||||||
XCOPY "%cd%\Novetus\clients\2009L\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2009L" /y
|
XCOPY "%cd%\Novetus\clients\2009L\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2009L" /y
|
||||||
XCOPY "%cd%\Novetus\clients\2010L\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2010L" /y
|
XCOPY "%cd%\Novetus\clients\2010L\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2010L" /y
|
||||||
XCOPY "%cd%\Novetus\clients\2011E\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2011E" /y
|
|
||||||
XCOPY "%cd%\Novetus\clients\2011M\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2011M" /y
|
XCOPY "%cd%\Novetus\clients\2011M\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2011M" /y
|
||||||
XCOPY "%cd%\Novetus\clients\2012M\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2012M" /y
|
XCOPY "%cd%\Novetus\clients\2012M\content\scripts\CSMPFunctions.lua" "%gamescriptdir%/2012M" /y
|
||||||
|
|
||||||
echo.
|
|
||||||
echo Copying client corescripts...
|
|
||||||
echo.
|
|
||||||
echo 2011E
|
|
||||||
SET ecores=%gamescriptdir%\2011E\cores
|
|
||||||
if not exist "%ecores%" mkdir "%ecores%"
|
|
||||||
XCOPY "%cd%\Novetus\clients\2011E\content\scripts\cores\*.lua" "%ecores%" /sy
|
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo 2011M
|
echo 2011M
|
||||||
SET mcores=%gamescriptdir%\2011M\cores
|
SET mcores=%gamescriptdir%\2011M\cores
|
||||||
|
|
@ -69,7 +59,6 @@ XCOPY "%cd%\Novetus\clients\2009E\content\fonts\libraries.rbxm" "%gamescriptdir%
|
||||||
XCOPY "%cd%\Novetus\clients\2009E-HD\content\fonts\libraries.rbxm" "%gamescriptdir%/2009E-HD" /y
|
XCOPY "%cd%\Novetus\clients\2009E-HD\content\fonts\libraries.rbxm" "%gamescriptdir%/2009E-HD" /y
|
||||||
XCOPY "%cd%\Novetus\clients\2009L\content\fonts\libraries.rbxm" "%gamescriptdir%/2009L" /y
|
XCOPY "%cd%\Novetus\clients\2009L\content\fonts\libraries.rbxm" "%gamescriptdir%/2009L" /y
|
||||||
XCOPY "%cd%\Novetus\clients\2010L\content\fonts\libraries.rbxm" "%gamescriptdir%/2010L" /y
|
XCOPY "%cd%\Novetus\clients\2010L\content\fonts\libraries.rbxm" "%gamescriptdir%/2010L" /y
|
||||||
XCOPY "%cd%\Novetus\clients\2011E\content\fonts\libraries.rbxm" "%gamescriptdir%/2011E" /y
|
|
||||||
XCOPY "%cd%\Novetus\clients\2011M\content\fonts\libraries.rbxm" "%gamescriptdir%/2011M" /y
|
XCOPY "%cd%\Novetus\clients\2011M\content\fonts\libraries.rbxm" "%gamescriptdir%/2011M" /y
|
||||||
XCOPY "%cd%\Novetus\clients\2012M\content\fonts\libraries.rbxm" "%gamescriptdir%/2012M" /y
|
XCOPY "%cd%\Novetus\clients\2012M\content\fonts\libraries.rbxm" "%gamescriptdir%/2012M" /y
|
||||||
|
|
||||||
|
|
@ -84,7 +73,6 @@ del /s /q "%tempdir%\GlobalSettings_4_2009E.xml"
|
||||||
del /s /q "%tempdir%\GlobalSettings_4_2009E-HD.xml"
|
del /s /q "%tempdir%\GlobalSettings_4_2009E-HD.xml"
|
||||||
del /s /q "%tempdir%\GlobalSettings_4_2009L.xml"
|
del /s /q "%tempdir%\GlobalSettings_4_2009L.xml"
|
||||||
del /s /q "%tempdir%\GlobalSettings_4_2010L.xml"
|
del /s /q "%tempdir%\GlobalSettings_4_2010L.xml"
|
||||||
del /s /q "%tempdir%\GlobalSettings_4_2011E.xml"
|
|
||||||
del /s /q "%tempdir%\GlobalSettings_4_2011M.xml"
|
del /s /q "%tempdir%\GlobalSettings_4_2011M.xml"
|
||||||
del /s /q "%tempdir%\GlobalSettings4_2006S.xml"
|
del /s /q "%tempdir%\GlobalSettings4_2006S.xml"
|
||||||
del /s /q "%tempdir%\GlobalSettings4_2006S-Shaders.xml"
|
del /s /q "%tempdir%\GlobalSettings4_2006S-Shaders.xml"
|
||||||
|
|
@ -99,7 +87,6 @@ XCOPY "%tempdir%\GlobalSettings_4_2009E_default.xml" "%gamescriptdir%/2009E" /y
|
||||||
XCOPY "%tempdir%\GlobalSettings_4_2009E-HD_default.xml" "%gamescriptdir%/2009E-HD" /y
|
XCOPY "%tempdir%\GlobalSettings_4_2009E-HD_default.xml" "%gamescriptdir%/2009E-HD" /y
|
||||||
XCOPY "%tempdir%\GlobalSettings_4_2009L_default.xml" "%gamescriptdir%/2009L" /y
|
XCOPY "%tempdir%\GlobalSettings_4_2009L_default.xml" "%gamescriptdir%/2009L" /y
|
||||||
XCOPY "%tempdir%\GlobalSettings_4_2010L_default.xml" "%gamescriptdir%/2010L" /y
|
XCOPY "%tempdir%\GlobalSettings_4_2010L_default.xml" "%gamescriptdir%/2010L" /y
|
||||||
XCOPY "%tempdir%\GlobalSettings_4_2011E_default.xml" "%gamescriptdir%/2011E" /y
|
|
||||||
XCOPY "%tempdir%\GlobalSettings_4_2011M_default.xml" "%gamescriptdir%/2011M" /y
|
XCOPY "%tempdir%\GlobalSettings_4_2011M_default.xml" "%gamescriptdir%/2011M" /y
|
||||||
XCOPY "%tempdir%\GlobalSettings4_2006S_default.xml" "%gamescriptdir%/2006S" /y
|
XCOPY "%tempdir%\GlobalSettings4_2006S_default.xml" "%gamescriptdir%/2006S" /y
|
||||||
XCOPY "%tempdir%\GlobalSettings4_2006S-Shaders_default.xml" "%gamescriptdir%/2006S-Shaders" /y
|
XCOPY "%tempdir%\GlobalSettings4_2006S-Shaders_default.xml" "%gamescriptdir%/2006S-Shaders" /y
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@ end
|
||||||
|
|
||||||
function LoadCharacterNew(playerApp,newChar)
|
function LoadCharacterNew(playerApp,newChar)
|
||||||
local path = "rbxasset://../../../shareddata/charcustom/"
|
local path = "rbxasset://../../../shareddata/charcustom/"
|
||||||
|
|
||||||
|
wait(0.65)
|
||||||
|
|
||||||
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")}
|
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
|
for _,newVal in pairs(playerApp:GetChildren()) do
|
||||||
|
|
@ -441,7 +443,7 @@ function CS3DView(UserID,PlayerName,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorI
|
||||||
end
|
end
|
||||||
plr.CharacterAppearance=0
|
plr.CharacterAppearance=0
|
||||||
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID,IconType)
|
InitalizeClientAppearance(plr,Hat1ID,Hat2ID,Hat3ID,HeadColorID,TorsoColorID,LeftArmColorID,RightArmColorID,LeftLegColorID,RightLegColorID,TShirtID,ShirtID,PantsID,FaceID,HeadID,ItemID,IconType)
|
||||||
wait(0.7)
|
wait(0.79)
|
||||||
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
|
LoadCharacterNew(newWaitForChild(plr,"Appearance"),plr.Character,false)
|
||||||
|
|
||||||
local target = game.Workspace.Base.SpawnLocation
|
local target = game.Workspace.Base.SpawnLocation
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,6 @@ ExtendedVersionNumber=True
|
||||||
//ExtendedVersionTemplate=%version% vX.23.%extended-revision% (%version-name%)
|
//ExtendedVersionTemplate=%version% vX.23.%extended-revision% (%version-name%)
|
||||||
//ExtendedVersionTemplate=%version% Snapshot v23.%build%.%revision%.%extended-revision%
|
//ExtendedVersionTemplate=%version% Snapshot v23.%build%.%revision%.%extended-revision%
|
||||||
ExtendedVersionTemplate=EDGE Snapshot v23.%build%.%revision%.%extended-revision%
|
ExtendedVersionTemplate=EDGE Snapshot v23.%build%.%revision%.%extended-revision%
|
||||||
ExtendedVersionRevision=1
|
ExtendedVersionRevision=2
|
||||||
InitialBootup=False
|
InitialBootup=False
|
||||||
IsLite=False
|
IsLite=False
|
||||||
|
|
|
||||||
|
|
@ -96,4 +96,13 @@ Taco
|
||||||
Villager
|
Villager
|
||||||
Dinosaur
|
Dinosaur
|
||||||
Code
|
Code
|
||||||
United
|
United
|
||||||
|
Astro
|
||||||
|
Heart
|
||||||
|
Techno
|
||||||
|
Flutter
|
||||||
|
Hamster
|
||||||
|
Solder
|
||||||
|
Ripcord
|
||||||
|
Combine
|
||||||
|
Soldier
|
||||||
Loading…
Reference in New Issue