nur 1 resourcestart event
This commit is contained in:
@@ -18,6 +18,8 @@ using ReallifeGamemode.Services;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using ReallifeGamemode.Server.newbie;
|
using ReallifeGamemode.Server.newbie;
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @overview Life of German Reallife - Main Class (Main.cs)
|
* @overview Life of German Reallife - Main Class (Main.cs)
|
||||||
@@ -34,144 +36,184 @@ namespace ReallifeGamemode.Server
|
|||||||
|
|
||||||
public static readonly CultureInfo SERVER_CULTURE = new CultureInfo("de-DE");
|
public static readonly CultureInfo SERVER_CULTURE = new CultureInfo("de-DE");
|
||||||
|
|
||||||
private EventHandler eventHandler;
|
private Core.Events.EventHandler eventHandler;
|
||||||
|
|
||||||
|
private readonly Mutex logMutex = new Mutex(false, "RAGE_MAIN_LOG_MUTEX");
|
||||||
|
|
||||||
|
public Main()
|
||||||
|
{
|
||||||
|
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
||||||
|
}
|
||||||
|
|
||||||
[ServerEvent(Event.ResourceStart)]
|
[ServerEvent(Event.ResourceStart)]
|
||||||
public void OnResourceStart()
|
public void OnResourceStart()
|
||||||
{
|
{
|
||||||
|
try
|
||||||
if (System.Environment.GetEnvironmentVariable("RAGEMP_UPDATE_DATABASE_ON_STARTUP", System.EnvironmentVariableTarget.User) == "true")
|
|
||||||
{
|
{
|
||||||
using var dbContext = new DatabaseContext(true);
|
if (System.Environment.GetEnvironmentVariable("RAGEMP_UPDATE_DATABASE_ON_STARTUP", System.EnvironmentVariableTarget.User) == "true")
|
||||||
|
|
||||||
var pendingMigrations = dbContext.Database.GetPendingMigrations();
|
|
||||||
|
|
||||||
if (!pendingMigrations.Any())
|
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("No migrations to apply");
|
using var dbContext = new DatabaseContext(true);
|
||||||
|
|
||||||
|
var pendingMigrations = dbContext.Database.GetPendingMigrations();
|
||||||
|
|
||||||
|
if (!pendingMigrations.Any())
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("No migrations to apply");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("Applying {0} migrations", pendingMigrations.Count());
|
||||||
|
foreach (var migration in pendingMigrations)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("\t{0}", migration);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
dbContext.Database.Migrate();
|
||||||
|
}
|
||||||
|
catch (System.Exception e)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine("Error while updating database: {0}", e.ToString());
|
||||||
|
System.Console.ReadLine();
|
||||||
|
System.Environment.Exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
System.Console.WriteLine("Migrations successfull");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
var methods = Assembly.GetExecutingAssembly()
|
||||||
|
.GetTypes()
|
||||||
|
.SelectMany(t => t.GetMethods())
|
||||||
|
.Where(m => m.GetCustomAttributes(typeof(CommandAttribute), false).Length > 0)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
var cmdAttributes = methods.Select(c => c.GetCustomAttribute<CommandAttribute>()).ToList();
|
||||||
|
|
||||||
|
var registeredCommands = cmdAttributes.Select(c => c.CommandString).ToList();
|
||||||
|
cmdAttributes.Where(c => c.Alias?.Any() ?? false).ToList().ForEach(a =>
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("Applying {0} migrations", pendingMigrations.Count());
|
registeredCommands.AddRange(a.Alias.Split(','));
|
||||||
foreach (var migration in pendingMigrations)
|
});
|
||||||
{
|
|
||||||
System.Console.WriteLine("\t{0}", migration);
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
IAPI apiInstance = new RageAPI();
|
||||||
{
|
eventHandler = new Core.Events.EventHandler(apiInstance);
|
||||||
dbContext.Database.Migrate();
|
|
||||||
}
|
|
||||||
catch (System.Exception e)
|
|
||||||
{
|
|
||||||
System.Console.WriteLine("Error while updating database: {0}", e.ToString());
|
|
||||||
System.Console.ReadLine();
|
|
||||||
System.Environment.Exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
System.Console.WriteLine("Migrations successfull");
|
new Core.Main(apiInstance, eventHandler, registeredCommands.ToArray());
|
||||||
}
|
|
||||||
|
NAPI.Server.SetGlobalServerChat(false);
|
||||||
|
|
||||||
|
NAPI.Server.SetCommandErrorMessage("");
|
||||||
|
NAPI.Server.SetDefaultSpawnLocation(DEFAULT_SPAWN_POSITION, DEFAULT_SPAWN_HEADING);
|
||||||
|
NAPI.Server.SetAutoSpawnOnConnect(false);
|
||||||
|
NAPI.Server.SetAutoRespawnAfterDeath(false);
|
||||||
|
NAPI.Data.SetWorldData("playerCreatorDimension", 0);
|
||||||
|
|
||||||
|
JsonConvert.DefaultSettings = () =>
|
||||||
|
{
|
||||||
|
return new JsonSerializerSettings()
|
||||||
|
{
|
||||||
|
NullValueHandling = NullValueHandling.Ignore
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
InventoryManager.LoadItems();
|
||||||
|
ShopManager.LoadClotheShops();
|
||||||
|
ShopManager.LoadItemShops();
|
||||||
|
ShopManager.LoadFriseur();
|
||||||
|
TuningManager.LoadTuningGarages();
|
||||||
|
|
||||||
|
TimeManager.StartTimeManager();
|
||||||
|
VehicleManager.CheckEnabledMods();
|
||||||
|
|
||||||
|
DatabaseHelper.InitDatabaseFirstTime();
|
||||||
|
|
||||||
|
FactionHelper.CheckFactionBankAccounts();
|
||||||
|
BusinessManager.LoadBusinesses();
|
||||||
|
//InteriorManager.LoadInteriors();
|
||||||
|
DoorManager.LoadDoors();
|
||||||
|
ATMManager.InitATMs();
|
||||||
|
CityHallManager.LoadCityHall();
|
||||||
|
JobManager.LoadJobs();
|
||||||
|
//TaxiDriverJob.StartTaxiTimer(); Obselete
|
||||||
|
//HouseManager.LoadHouses();
|
||||||
|
DrivingSchool.DrivingSchool.Setup();
|
||||||
|
PlaneSchool.Setup();
|
||||||
|
Gangwar.Gangwar.loadTurfs();
|
||||||
|
Bank.bank.Setup();
|
||||||
|
Introduction.Setup();
|
||||||
|
PositionManager.LoadPositionManager();
|
||||||
|
LoadManager.LoadLoadManager();
|
||||||
|
|
||||||
|
TempBlip tempBlip = new TempBlip()
|
||||||
|
{
|
||||||
|
Color = 1,
|
||||||
|
Name = "",
|
||||||
|
Transparency = 0,
|
||||||
|
ShortRange = true,
|
||||||
|
Sprite = 1,
|
||||||
|
Scale = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
NAPI.Data.SetWorldData("blipTemplate", tempBlip);
|
||||||
|
|
||||||
|
//WantedEscapeTimer.WantedTimer(); Obselete
|
||||||
|
//Jail.JailTimer(); Obselete
|
||||||
|
//Economy.PaydayTimer(); Obselete
|
||||||
|
// WeaponDealManager.WeaponDealTimer(); Obselete
|
||||||
|
|
||||||
|
ThreadTimers.StartAllTimers();
|
||||||
|
|
||||||
|
Managers.SVarManager.LoadSVars();
|
||||||
|
|
||||||
|
UserBankAccount.BalanceChanged += (account) =>
|
||||||
|
{
|
||||||
|
using (var dbContext = new DatabaseContext())
|
||||||
|
{
|
||||||
|
var user = dbContext.Users.Where(u => u.BankAccountId == account.Id).Select(u => u.Name).FirstOrDefault();
|
||||||
|
if (user == null) return;
|
||||||
|
PlayerService.GetPlayerByNameOrId(user).TriggerEvent("updateMoney", account.Balance);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
User.HandMoneyChanged += (user) =>
|
||||||
|
{
|
||||||
|
user.Player.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney);
|
||||||
|
};
|
||||||
|
|
||||||
|
//IPLS
|
||||||
|
NAPI.World.RequestIpl("vw_casino_garage");
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Log(e.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||||
|
{
|
||||||
|
Log(e.ExceptionObject.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Log(string message)
|
||||||
|
{
|
||||||
|
string basePath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
|
||||||
|
string log = Path.Combine(basePath, "log.txt");
|
||||||
|
|
||||||
|
logMutex.WaitOne();
|
||||||
|
|
||||||
|
if (!File.Exists(log))
|
||||||
|
{
|
||||||
|
File.Create(log);
|
||||||
}
|
}
|
||||||
|
|
||||||
var methods = Assembly.GetExecutingAssembly()
|
string msg = $"[{DateTime.Now:s}] - Error: {message}{Environment.NewLine}";
|
||||||
.GetTypes()
|
|
||||||
.SelectMany(t => t.GetMethods())
|
|
||||||
.Where(m => m.GetCustomAttributes(typeof(CommandAttribute), false).Length > 0)
|
|
||||||
.ToArray();
|
|
||||||
|
|
||||||
var cmdAttributes = methods.Select(c => c.GetCustomAttribute<CommandAttribute>()).ToList();
|
File.AppendAllText(log, msg);
|
||||||
|
|
||||||
var registeredCommands = cmdAttributes.Select(c => c.CommandString).ToList();
|
logMutex.ReleaseMutex();
|
||||||
cmdAttributes.Where(c => c.Alias?.Any() ?? false).ToList().ForEach(a =>
|
|
||||||
{
|
|
||||||
registeredCommands.AddRange(a.Alias.Split(','));
|
|
||||||
});
|
|
||||||
|
|
||||||
IAPI apiInstance = new RageAPI();
|
|
||||||
eventHandler = new EventHandler(apiInstance);
|
|
||||||
|
|
||||||
new Core.Main(apiInstance, eventHandler, registeredCommands.ToArray());
|
|
||||||
|
|
||||||
NAPI.Server.SetGlobalServerChat(false);
|
|
||||||
|
|
||||||
NAPI.Server.SetCommandErrorMessage("~r~[FEHLER]~s~ Dieser Command existiert nicht.");
|
|
||||||
NAPI.Server.SetDefaultSpawnLocation(DEFAULT_SPAWN_POSITION, DEFAULT_SPAWN_HEADING);
|
|
||||||
NAPI.Server.SetAutoSpawnOnConnect(false);
|
|
||||||
NAPI.Server.SetAutoRespawnAfterDeath(false);
|
|
||||||
NAPI.Data.SetWorldData("playerCreatorDimension", 0);
|
|
||||||
|
|
||||||
JsonConvert.DefaultSettings = () =>
|
|
||||||
{
|
|
||||||
return new JsonSerializerSettings()
|
|
||||||
{
|
|
||||||
NullValueHandling = NullValueHandling.Ignore
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
InventoryManager.LoadItems();
|
|
||||||
ShopManager.LoadClotheShops();
|
|
||||||
ShopManager.LoadItemShops();
|
|
||||||
ShopManager.LoadFriseur();
|
|
||||||
TuningManager.LoadTuningGarages();
|
|
||||||
|
|
||||||
TimeManager.StartTimeManager();
|
|
||||||
VehicleManager.CheckEnabledMods();
|
|
||||||
|
|
||||||
DatabaseHelper.InitDatabaseFirstTime();
|
|
||||||
|
|
||||||
FactionHelper.CheckFactionBankAccounts();
|
|
||||||
BusinessManager.LoadBusinesses();
|
|
||||||
//InteriorManager.LoadInteriors();
|
|
||||||
DoorManager.LoadDoors();
|
|
||||||
ATMManager.InitATMs();
|
|
||||||
CityHallManager.LoadCityHall();
|
|
||||||
JobManager.LoadJobs();
|
|
||||||
//TaxiDriverJob.StartTaxiTimer(); Obselete
|
|
||||||
//HouseManager.LoadHouses();
|
|
||||||
DrivingSchool.DrivingSchool.Setup();
|
|
||||||
PlaneSchool.Setup();
|
|
||||||
Gangwar.Gangwar.loadTurfs();
|
|
||||||
Bank.bank.Setup();
|
|
||||||
Introduction.Setup();
|
|
||||||
|
|
||||||
TempBlip tempBlip = new TempBlip()
|
|
||||||
{
|
|
||||||
Color = 1,
|
|
||||||
Name = "",
|
|
||||||
Transparency = 0,
|
|
||||||
ShortRange = true,
|
|
||||||
Sprite = 1,
|
|
||||||
Scale = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
NAPI.Data.SetWorldData("blipTemplate", tempBlip);
|
|
||||||
|
|
||||||
//WantedEscapeTimer.WantedTimer(); Obselete
|
|
||||||
//Jail.JailTimer(); Obselete
|
|
||||||
//Economy.PaydayTimer(); Obselete
|
|
||||||
// WeaponDealManager.WeaponDealTimer(); Obselete
|
|
||||||
|
|
||||||
ThreadTimers.StartAllTimers();
|
|
||||||
|
|
||||||
Managers.SVarManager.LoadSVars();
|
|
||||||
|
|
||||||
UserBankAccount.BalanceChanged += (account) =>
|
|
||||||
{
|
|
||||||
using (var dbContext = new DatabaseContext())
|
|
||||||
{
|
|
||||||
var user = dbContext.Users.Where(u => u.BankAccountId == account.Id).Select(u => u.Name).FirstOrDefault();
|
|
||||||
if (user == null) return;
|
|
||||||
PlayerService.GetPlayerByNameOrId(user).TriggerEvent("updateMoney", account.Balance);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
User.HandMoneyChanged += (user) =>
|
|
||||||
{
|
|
||||||
user.Player.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney);
|
|
||||||
};
|
|
||||||
|
|
||||||
//IPLS
|
|
||||||
NAPI.World.RequestIpl("vw_casino_garage");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("CLIENT:Event")]
|
[RemoteEvent("CLIENT:Event")]
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
public class LoadManager : Script
|
public class LoadManager : Script
|
||||||
{
|
{
|
||||||
[ServerEvent(Event.ResourceStart)]
|
public static void LoadLoadManager()
|
||||||
public void OnResourceStart()
|
|
||||||
{
|
{
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -25,8 +25,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
public static List<JobPoint> JobPoints = new List<JobPoint>();
|
public static List<JobPoint> JobPoints = new List<JobPoint>();
|
||||||
|
|
||||||
[ServerEvent(Event.ResourceStart)]
|
public static void LoadPositionManager()
|
||||||
public void OnResourceStart()
|
|
||||||
{
|
{
|
||||||
#region DutyPoints
|
#region DutyPoints
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user