Finished interior system
This commit is contained in:
31
Client/Gui/interiors.js
Normal file
31
Client/Gui/interiors.js
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
var keyBound = false;
|
||||||
|
var interiorId = -1;
|
||||||
|
var enterExit = undefined;
|
||||||
|
|
||||||
|
mp.events.add('InteriorManager_ClearHelpText', () => {
|
||||||
|
mp.game.ui.clearHelp(true);
|
||||||
|
|
||||||
|
enterExit = undefined;
|
||||||
|
|
||||||
|
if (keyBound) {
|
||||||
|
mp.keys.unbind(0x45, false, keyPressHandler);
|
||||||
|
keyBound = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
mp.events.add('InteriorManager_ShowHelpText', (interior, intId, entEx) => {
|
||||||
|
mp.game.ui.setTextComponentFormat('STRING');
|
||||||
|
mp.game.ui.addTextComponentSubstringPlayerName('Drücke ~INPUT_CONTEXT~, um ~b~' + interior + ' ~s~zu ' + (entEx === 0 ? 'betreten' : 'verlassen'));
|
||||||
|
mp.game.ui.displayHelpTextFromStringLabel(0, true, true, -1);
|
||||||
|
|
||||||
|
interiorId = intId;
|
||||||
|
enterExit = entEx;
|
||||||
|
|
||||||
|
mp.keys.bind(0x45, false, keyPressHandler);
|
||||||
|
keyBound = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
function keyPressHandler() {
|
||||||
|
if (globalData.InChat) return;
|
||||||
|
mp.events.callRemote('InteriorManager_UseTeleport', interiorId, enterExit);
|
||||||
|
}
|
||||||
@@ -17,6 +17,7 @@ const player = mp.players.local;
|
|||||||
mp.keys.bind(0x0D, false, function () {
|
mp.keys.bind(0x0D, false, function () {
|
||||||
if (chat === true) {
|
if (chat === true) {
|
||||||
chat = false;
|
chat = false;
|
||||||
|
globalData.InChat = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -94,6 +95,7 @@ mp.keys.bind(0x4E, false, function () {
|
|||||||
mp.keys.bind(0x54, false, function () {
|
mp.keys.bind(0x54, false, function () {
|
||||||
if (chat === false && showInv === false) {
|
if (chat === false && showInv === false) {
|
||||||
chat = true;
|
chat = true;
|
||||||
|
globalData.InChat = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,8 @@
|
|||||||
|
|
||||||
let globalData = {
|
let globalData = {
|
||||||
InTuning: false,
|
InTuning: false,
|
||||||
HideGui: false
|
HideGui: false,
|
||||||
|
InChat: false
|
||||||
};
|
};
|
||||||
|
|
||||||
mp.game.gameplay.enableMpDlcMaps(true);
|
mp.game.gameplay.enableMpDlcMaps(true);
|
||||||
@@ -25,6 +26,7 @@ require('./Gui/nametags.js');
|
|||||||
require('./Gui/playerlist.js');
|
require('./Gui/playerlist.js');
|
||||||
require('./Gui/Inventory/inventory.js');
|
require('./Gui/Inventory/inventory.js');
|
||||||
require('./Gui/vehiclemenu/main.js');
|
require('./Gui/vehiclemenu/main.js');
|
||||||
|
require('./Gui/interiors.js');
|
||||||
|
|
||||||
require('./Login/main.js');
|
require('./Login/main.js');
|
||||||
|
|
||||||
|
|||||||
2
Main.cs
2
Main.cs
@@ -48,9 +48,9 @@ namespace reallife_gamemode
|
|||||||
|
|
||||||
DatabaseHelper.InitDatabaseFirstTime();
|
DatabaseHelper.InitDatabaseFirstTime();
|
||||||
|
|
||||||
InteriorManager.LoadInteriors();
|
|
||||||
FactionHelper.CheckFactionBankAccounts();
|
FactionHelper.CheckFactionBankAccounts();
|
||||||
BusinessManager.LoadBusinesses();
|
BusinessManager.LoadBusinesses();
|
||||||
|
InteriorManager.LoadInteriors();
|
||||||
|
|
||||||
|
|
||||||
TempBlip tempBlip = new TempBlip()
|
TempBlip tempBlip = new TempBlip()
|
||||||
|
|||||||
@@ -2111,7 +2111,7 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
player.TriggerEvent("showTuningMenu");
|
player.TriggerEvent("showTuningMenu");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("interior", "~m~Benutzung: ~s~/interior [Add / Remove / SetEnterPosition / SetExitPosition] [Name]")]
|
[Command("interior", "~m~Benutzung: ~s~/interior [Add / Remove / SetEnterPosition / SetExitPosition] [Name / ID]")]
|
||||||
public void CmdAdminInterior(Client player, string option1, string option2)
|
public void CmdAdminInterior(Client player, string option1, string option2)
|
||||||
{
|
{
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
|
||||||
@@ -2131,11 +2131,6 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
switch(option1)
|
switch(option1)
|
||||||
{
|
{
|
||||||
case "add":
|
case "add":
|
||||||
if(InteriorManager.GetInteriorByName(option2) != null)
|
|
||||||
{
|
|
||||||
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Interior existiert schon.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
using(var dbContext = new DatabaseContext())
|
using(var dbContext = new DatabaseContext())
|
||||||
{
|
{
|
||||||
Interior interiorAdd = new Interior
|
Interior interiorAdd = new Interior
|
||||||
@@ -2150,23 +2145,18 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
case "remove":
|
case "remove":
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
{
|
{
|
||||||
Interior interiorRemove = InteriorManager.GetInteriorByName(option2, dbContext);
|
if(!int.TryParse(option2, out int intId))
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~r~[FEHLER]~s~ Es muss eine Nummer angegeben werden.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Interior interiorRemove = InteriorManager.GetInteriorById(intId, dbContext);
|
||||||
if(interiorRemove == null)
|
if(interiorRemove == null)
|
||||||
{
|
{
|
||||||
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Interior existiert nicht.");
|
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Interior existiert nicht.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TextLabel enT = InteriorManager.GetInteriorEnterTextLabel(interiorRemove);
|
|
||||||
TextLabel exT = InteriorManager.GetInteriorExitTextLabel(interiorRemove);
|
|
||||||
Marker enM = InteriorManager.GetInteriorEnterMarker(interiorRemove);
|
|
||||||
Marker exM = InteriorManager.GetInteriorExitMarkers(interiorRemove);
|
|
||||||
|
|
||||||
if (enT != null) enT.Delete();
|
|
||||||
if (exT != null) exT.Delete();
|
|
||||||
if (enM != null) enM.Delete();
|
|
||||||
if (exM != null) exM.Delete();
|
|
||||||
|
|
||||||
InteriorManager.DeleteInterior(interiorRemove);
|
InteriorManager.DeleteInterior(interiorRemove);
|
||||||
|
|
||||||
dbContext.Interiors.Remove(interiorRemove);
|
dbContext.Interiors.Remove(interiorRemove);
|
||||||
@@ -2177,7 +2167,12 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
case "setenterposition":
|
case "setenterposition":
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
{
|
{
|
||||||
Interior interior = InteriorManager.GetInteriorByName(option2, dbContext);
|
if (!int.TryParse(option2, out int intIdEnter))
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~r~[FEHLER]~s~ Es muss eine Nummer angegeben werden.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Interior interior = InteriorManager.GetInteriorById(intIdEnter, dbContext);
|
||||||
if (interior == null)
|
if (interior == null)
|
||||||
{
|
{
|
||||||
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Interior existiert nicht.");
|
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Interior existiert nicht.");
|
||||||
@@ -2185,14 +2180,21 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
}
|
}
|
||||||
interior.EnterPosition = player.Position;
|
interior.EnterPosition = player.Position;
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
|
InteriorManager.DeleteInterior(interior);
|
||||||
|
InteriorManager.LoadInterior(interior);
|
||||||
|
player.SendChatMessage("~b~[ADMIN]~s~ Die Eingangs-Position vom Interior ~y~" + interior.Name + "~s~ wurde gesetzt.");
|
||||||
InteriorManager.LoadInteriors();
|
InteriorManager.LoadInteriors();
|
||||||
}
|
}
|
||||||
player.SendChatMessage("~b~[ADMIN]~s~ Die Eingangs-Position vom Interior ~y~" + option2 + "~s~ wurde gesetzt.");
|
|
||||||
break;
|
break;
|
||||||
case "setexitposition":
|
case "setexitposition":
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
{
|
{
|
||||||
Interior interior = InteriorManager.GetInteriorByName(option2, dbContext);
|
if (!int.TryParse(option2, out int intIdExit))
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~r~[FEHLER]~s~ Es muss eine Nummer angegeben werden.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Interior interior = InteriorManager.GetInteriorById(intIdExit, dbContext);
|
||||||
if (interior == null)
|
if (interior == null)
|
||||||
{
|
{
|
||||||
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Interior existiert nicht.");
|
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Interior existiert nicht.");
|
||||||
@@ -2200,9 +2202,11 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
}
|
}
|
||||||
interior.ExitPosition = player.Position;
|
interior.ExitPosition = player.Position;
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
|
InteriorManager.DeleteInterior(interior);
|
||||||
|
InteriorManager.LoadInterior(interior);
|
||||||
|
player.SendChatMessage("~b~[ADMIN]~s~ Die Eingangs-Position vom Interior ~y~" + interior.Name + "~s~ wurde gesetzt.");
|
||||||
InteriorManager.LoadInteriors();
|
InteriorManager.LoadInteriors();
|
||||||
}
|
}
|
||||||
player.SendChatMessage("~b~[ADMIN]~s~ Die Ausgangs-Position vom Interior ~y~" + option2 + "~s~ wurde gesetzt.");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2297,45 +2301,6 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
|
|
||||||
/* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
|
/* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
|
||||||
|
|
||||||
//TEST COMMAND
|
|
||||||
[Command("own")]
|
|
||||||
public void CmdAdminOwn(Client player)
|
|
||||||
{
|
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
|
||||||
{
|
|
||||||
ChatService.NotAuthorized(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player.IsInVehicle)
|
|
||||||
{
|
|
||||||
Vehicle playerVehicle = player.Vehicle;
|
|
||||||
int playerSeat = player.VehicleSeat;
|
|
||||||
using (var saveVehicle = new DatabaseContext())
|
|
||||||
{
|
|
||||||
var dataSet = new UserVehicle
|
|
||||||
{
|
|
||||||
UserId = player.GetUser().Id,
|
|
||||||
Model = (VehicleHash)playerVehicle.Model,
|
|
||||||
PositionX = playerVehicle.Position.X,
|
|
||||||
PositionY = playerVehicle.Position.Y,
|
|
||||||
PositionZ = playerVehicle.Position.Z,
|
|
||||||
Heading = playerVehicle.Heading,
|
|
||||||
NumberPlate = playerVehicle.NumberPlate,
|
|
||||||
PrimaryColor = playerVehicle.PrimaryColor,
|
|
||||||
SecondaryColor = playerVehicle.SecondaryColor,
|
|
||||||
Locked = playerVehicle.Locked,
|
|
||||||
Active = true
|
|
||||||
};
|
|
||||||
saveVehicle.UserVehicles.Add(dataSet);
|
|
||||||
saveVehicle.SaveChanges();
|
|
||||||
|
|
||||||
player.SetIntoVehicle(dataSet.Spawn(playerVehicle), -1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
|
|
||||||
}
|
|
||||||
|
|
||||||
//TEST COMMAND
|
//TEST COMMAND
|
||||||
[Command("myvehicles")]
|
[Command("myvehicles")]
|
||||||
public void CmdAdminMyVehicles(Client player)
|
public void CmdAdminMyVehicles(Client player)
|
||||||
@@ -2383,37 +2348,6 @@ namespace reallife_gamemode.Server.Commands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO Ausführen bei Tastendruck wenn in Fahrzeug.
|
|
||||||
[Command("buyv")]
|
|
||||||
public void BuyShopVehicle(Client player)
|
|
||||||
{
|
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
|
||||||
{
|
|
||||||
ChatService.NotAuthorized(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player.IsInVehicle)
|
|
||||||
{
|
|
||||||
if (player.Vehicle.HasData("shopVehicleId"))
|
|
||||||
{
|
|
||||||
int shopVehicleId = player.Vehicle.GetData("shopVehicleId");
|
|
||||||
using (var getShopVehicle = new DatabaseContext())
|
|
||||||
{
|
|
||||||
ShopVehicle sVehicle = getShopVehicle.ShopVehicles.FirstOrDefault(u => u.Id == shopVehicleId);
|
|
||||||
Entities.Faction receiverUser = getShopVehicle.Factions.FirstOrDefault(u => u.Name == "LSPD");
|
|
||||||
BankManager.TransferMoney(player.GetUser(), receiverUser, sVehicle.Price, "Fahrzeug gekauft: " + NAPI.Vehicle.GetVehicleDisplayName(sVehicle.Model));
|
|
||||||
//TODO Anpassen
|
|
||||||
Vehicle boughtVehicle = NAPI.Vehicle.CreateVehicle(sVehicle.Model, new Vector3(sVehicle.PositionX, sVehicle.PositionY + 10, sVehicle.PositionZ + 0.5), sVehicle.Heading,
|
|
||||||
sVehicle.PrimaryColor, sVehicle.SecondaryColor, "LoG", 255, false, true, 0);
|
|
||||||
player.SetIntoVehicle(boughtVehicle, 0);
|
|
||||||
//TODO fügt das Fahrzeug als Userfahrzeug hinzu
|
|
||||||
CmdAdminOwn(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[Command("saveall")]
|
[Command("saveall")]
|
||||||
public void SaveAll(Client player)
|
public void SaveAll(Client player)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,12 +8,14 @@ using System.Text;
|
|||||||
|
|
||||||
namespace reallife_gamemode.Server.Managers
|
namespace reallife_gamemode.Server.Managers
|
||||||
{
|
{
|
||||||
public class InteriorManager
|
public class InteriorManager : Script
|
||||||
{
|
{
|
||||||
public static Dictionary<int, NetHandle> _interiorEnterTextLabels = new Dictionary<int, NetHandle>();
|
public static Dictionary<int, NetHandle> _interiorEnterTextLabels = new Dictionary<int, NetHandle>();
|
||||||
public static Dictionary<int, NetHandle> _interiorExitTextLabels = new Dictionary<int, NetHandle>();
|
public static Dictionary<int, NetHandle> _interiorExitTextLabels = new Dictionary<int, NetHandle>();
|
||||||
public static Dictionary<int, NetHandle> _interiorEnterMarkers = new Dictionary<int, NetHandle>();
|
public static Dictionary<int, NetHandle> _interiorEnterMarkers = new Dictionary<int, NetHandle>();
|
||||||
public static Dictionary<int, NetHandle> _interiorExitMarkers = new Dictionary<int, NetHandle>();
|
public static Dictionary<int, NetHandle> _interiorExitMarkers = new Dictionary<int, NetHandle>();
|
||||||
|
public static Dictionary<int, NetHandle> _interiorEnterColShapes = new Dictionary<int, NetHandle>();
|
||||||
|
public static Dictionary<int, NetHandle> _interiorExitColShapes = new Dictionary<int, NetHandle>();
|
||||||
|
|
||||||
public static Interior GetInteriorByName(string name, DatabaseContext dbContext = null)
|
public static Interior GetInteriorByName(string name, DatabaseContext dbContext = null)
|
||||||
{
|
{
|
||||||
@@ -30,50 +32,116 @@ namespace reallife_gamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Interior GetInteriorById(int id, DatabaseContext dbContext = null)
|
||||||
|
{
|
||||||
|
if (dbContext == null)
|
||||||
|
{
|
||||||
|
using (dbContext = new DatabaseContext())
|
||||||
|
{
|
||||||
|
return dbContext.Interiors.Where(i => i.Id == id).FirstOrDefault();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return dbContext.Interiors.Where(i => i.Id == id).FirstOrDefault();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void LoadInteriors()
|
public static void LoadInteriors()
|
||||||
{
|
{
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
{
|
{
|
||||||
foreach (Interior interior in dbContext.Interiors)
|
foreach (Interior interior in dbContext.Interiors)
|
||||||
{
|
{
|
||||||
TextLabel enT = GetInteriorEnterTextLabel(interior);
|
LoadInterior(interior);
|
||||||
TextLabel exT = GetInteriorExitTextLabel(interior);
|
|
||||||
Marker enM = GetInteriorEnterMarker(interior);
|
|
||||||
Marker exM = GetInteriorExitMarkers(interior);
|
|
||||||
|
|
||||||
if (enT != null) enT.Delete();
|
|
||||||
if (exT != null) exT.Delete();
|
|
||||||
if (enM != null) enM.Delete();
|
|
||||||
if (exM != null) exM.Delete();
|
|
||||||
if (interior.EnterPosition != null)
|
|
||||||
{
|
|
||||||
NAPI.Util.ConsoleOutput("enterposition not null");
|
|
||||||
_interiorEnterTextLabels[interior.Id] = NAPI.TextLabel.CreateTextLabel("~y~" + interior.Name + "\n~s~Eingang", interior.EnterPosition, 10f, 1f, 0, new Color(255, 255, 255));
|
|
||||||
_interiorEnterMarkers[interior.Id] = NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, interior.EnterPosition.Subtract(new Vector3(0, 0, 1.5)), new Vector3(), new Vector3(), 1.0f, new Color(255, 255, 255));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(interior.ExitPosition != null)
|
|
||||||
{
|
|
||||||
NAPI.Util.ConsoleOutput("exitposition not null");
|
|
||||||
_interiorExitTextLabels[interior.Id] = NAPI.TextLabel.CreateTextLabel("~y~" + interior.Name + "\n~s~Ausgang", interior.ExitPosition, 10f, 1f, 0, new Color(255, 255, 255));
|
|
||||||
_interiorExitMarkers[interior.Id] = NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, interior.ExitPosition.Subtract(new Vector3(0, 0, 1.5)), new Vector3(), new Vector3(), 1.0f, new Color(255, 255, 255));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
dbContext.SaveChanges();
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void LoadInterior(Interior interior)
|
||||||
|
{
|
||||||
|
if (interior.EnterPosition != null)
|
||||||
|
{
|
||||||
|
_interiorEnterTextLabels[interior.Id] = NAPI.TextLabel.CreateTextLabel("~y~" + interior.Name + "\n~s~Eingang", interior.EnterPosition, 10f, 1f, 0, new Color(255, 255, 255));
|
||||||
|
_interiorEnterMarkers[interior.Id] = NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, interior.EnterPosition.Subtract(new Vector3(0, 0, 1.7)), new Vector3(), new Vector3(), 2.0f, new Color(255, 255, 255, 100));
|
||||||
|
_interiorEnterColShapes[interior.Id] = NAPI.ColShape.CreateSphereColShape(interior.EnterPosition, 1.5f);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (interior.ExitPosition != null)
|
||||||
|
{
|
||||||
|
_interiorExitTextLabels[interior.Id] = NAPI.TextLabel.CreateTextLabel("~y~" + interior.Name + "\n~s~Ausgang", interior.ExitPosition, 10f, 1f, 0, new Color(255, 255, 255));
|
||||||
|
_interiorExitMarkers[interior.Id] = NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, interior.ExitPosition.Subtract(new Vector3(0, 0, 1.7)), new Vector3(), new Vector3(), 1.6f, new Color(255, 255, 255, 100));
|
||||||
|
_interiorExitColShapes[interior.Id] = NAPI.ColShape.CreateSphereColShape(interior.ExitPosition, 1.3f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DeleteInterior(Interior interior)
|
public static void DeleteInterior(Interior interior)
|
||||||
{
|
{
|
||||||
|
TextLabel enT = GetInteriorEnterTextLabel(interior);
|
||||||
|
TextLabel exT = GetInteriorExitTextLabel(interior);
|
||||||
|
Marker enM = GetInteriorEnterMarker(interior);
|
||||||
|
Marker exM = GetInteriorExitMarkers(interior);
|
||||||
|
ColShape enC = GetInteriorEnterColShape(interior);
|
||||||
|
ColShape exC = GetInteriorExitColShape(interior);
|
||||||
|
|
||||||
|
if (enT != null) enT.Delete();
|
||||||
|
if (exT != null) exT.Delete();
|
||||||
|
if (enM != null) enM.Delete();
|
||||||
|
if (exM != null) exM.Delete();
|
||||||
|
if (enC != null) enC.Delete();
|
||||||
|
if (exC != null) exC.Delete();
|
||||||
|
|
||||||
_interiorEnterTextLabels.Remove(interior.Id);
|
_interiorEnterTextLabels.Remove(interior.Id);
|
||||||
_interiorExitTextLabels.Remove(interior.Id);
|
_interiorExitTextLabels.Remove(interior.Id);
|
||||||
_interiorEnterMarkers.Remove(interior.Id);
|
_interiorEnterMarkers.Remove(interior.Id);
|
||||||
_interiorExitMarkers.Remove(interior.Id);
|
_interiorExitMarkers.Remove(interior.Id);
|
||||||
|
_interiorEnterColShapes.Remove(interior.Id);
|
||||||
|
_interiorExitColShapes.Remove(interior.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TextLabel GetInteriorEnterTextLabel(Interior interior) => NAPI.Pools.GetAllTextLabels().Find(t => t.Handle.Value == _interiorEnterTextLabels.FirstOrDefault(x => x.Key == interior.Id).Value.Value);
|
public static TextLabel GetInteriorEnterTextLabel(Interior interior) => NAPI.Pools.GetAllTextLabels().Find(t => t.Handle.Value == _interiorEnterTextLabels.FirstOrDefault(x => x.Key == interior.Id).Value.Value);
|
||||||
public static TextLabel GetInteriorExitTextLabel(Interior interior) => NAPI.Pools.GetAllTextLabels().Find(t => t.Handle.Value == _interiorExitTextLabels.FirstOrDefault(x => x.Key == interior.Id).Value.Value);
|
public static TextLabel GetInteriorExitTextLabel(Interior interior) => NAPI.Pools.GetAllTextLabels().Find(t => t.Handle.Value == _interiorExitTextLabels.FirstOrDefault(x => x.Key == interior.Id).Value.Value);
|
||||||
|
|
||||||
public static Marker GetInteriorEnterMarker(Interior interior) => NAPI.Pools.GetAllMarkers().Find(t => t.Handle.Value == _interiorEnterMarkers.FirstOrDefault(x => x.Key == interior.Id).Value.Value);
|
public static Marker GetInteriorEnterMarker(Interior interior) => NAPI.Pools.GetAllMarkers().Find(t => t.Handle.Value == _interiorEnterMarkers.FirstOrDefault(x => x.Key == interior.Id).Value.Value);
|
||||||
public static Marker GetInteriorExitMarkers(Interior interior) => NAPI.Pools.GetAllMarkers().Find(t => t.Handle.Value == _interiorExitMarkers.FirstOrDefault(x => x.Key == interior.Id).Value.Value);
|
public static Marker GetInteriorExitMarkers(Interior interior) => NAPI.Pools.GetAllMarkers().Find(t => t.Handle.Value == _interiorExitMarkers.FirstOrDefault(x => x.Key == interior.Id).Value.Value);
|
||||||
|
|
||||||
|
public static ColShape GetInteriorEnterColShape(Interior interior) => NAPI.Pools.GetAllColShapes().Find(t => t.Handle.Value == _interiorEnterColShapes.FirstOrDefault(x => x.Key == interior.Id).Value.Value);
|
||||||
|
public static ColShape GetInteriorExitColShape(Interior interior) => NAPI.Pools.GetAllColShapes().Find(t => t.Handle.Value == _interiorExitColShapes.FirstOrDefault(x => x.Key == interior.Id).Value.Value);
|
||||||
|
|
||||||
|
public static int GetInteriorIdFromEnterColShape(NetHandle handle) => _interiorEnterColShapes.FirstOrDefault(c => c.Value.Value == handle.Value).Key;
|
||||||
|
public static int GetInteriorIdFromExitColShape(NetHandle handle) => _interiorExitColShapes.FirstOrDefault(c => c.Value.Value == handle.Value).Key;
|
||||||
|
|
||||||
|
[ServerEvent(Event.PlayerEnterColshape)]
|
||||||
|
public void InteriorManagerPlayerEnterColshapeEvent(ColShape colShape, Client player)
|
||||||
|
{
|
||||||
|
int enterId = GetInteriorIdFromEnterColShape(colShape);
|
||||||
|
int exitId = GetInteriorIdFromExitColShape(colShape);
|
||||||
|
if(enterId != 0)
|
||||||
|
{
|
||||||
|
Interior interior = GetInteriorById(enterId);
|
||||||
|
player.TriggerEvent("InteriorManager_ShowHelpText", interior.Name, interior.Id, 0);
|
||||||
|
}
|
||||||
|
else if(exitId != 0)
|
||||||
|
{
|
||||||
|
Interior interior = GetInteriorById(exitId);
|
||||||
|
player.TriggerEvent("InteriorManager_ShowHelpText", interior.Name, interior.Id, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[ServerEvent(Event.PlayerExitColshape)]
|
||||||
|
public void InteriorManagerPlayerExitColshapeEvent(ColShape colShape, Client player)
|
||||||
|
{
|
||||||
|
if(GetInteriorIdFromEnterColShape(colShape) != 0 || GetInteriorIdFromExitColShape(colShape) != 0)
|
||||||
|
{
|
||||||
|
player.TriggerEvent("InteriorManager_ClearHelpText");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[RemoteEvent("InteriorManager_UseTeleport")]
|
||||||
|
public void InteriorManagerUseTeleportEvent(Client player, int id, int enterExit)
|
||||||
|
{
|
||||||
|
Interior interior = GetInteriorById(id);
|
||||||
|
player.Position = enterExit == 0 ? interior.ExitPosition : interior.EnterPosition;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user