add option to park vehicles in vehicle menu

This commit is contained in:
hydrant
2019-05-11 22:10:53 +02:00
parent 7b19a83e12
commit 41d756c4d2
8 changed files with 83 additions and 39 deletions

View File

@@ -41,6 +41,8 @@ export default function vehicleMenu() {
case 3: // Türen case 3: // Türen
showDoorsMenu(); showDoorsMenu();
break; break;
case 7: // Parken
mp.events.callRemote("CLIENT:VehicleMenu_ParkCar");
} }
}); });

View File

@@ -13,17 +13,17 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Remove="Gui\vehiclemenu\web\**" />
<Compile Remove="tmp\**" /> <Compile Remove="tmp\**" />
<EmbeddedResource Remove="Gui\vehiclemenu\web\**" />
<EmbeddedResource Remove="tmp\**" /> <EmbeddedResource Remove="tmp\**" />
<None Remove="Gui\vehiclemenu\web\**" />
<None Remove="tmp\**" /> <None Remove="tmp\**" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="assets\css\atm\" /> <Folder Include="assets\css\atm\" />
<Folder Include="assets\img\atm\" /> <Folder Include="assets\img\atm\" />
<Folder Include="Gui\vehiclemenu\web\css\" />
<Folder Include="Gui\vehiclemenu\web\font\" />
<Folder Include="Gui\vehiclemenu\web\img\" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -78,8 +78,8 @@
<span class="arrow"></span> <span class="arrow"></span>
<div class="bg"></div> <div class="bg"></div>
<div class="label"> <div class="label">
<!--<p>Personalausweis ansehen</p> <p>Fahrzeug parken</p>
<img class="m" src="package://assets/img/vehiclemenu/i10.png">--> <img class="m" src="package://assets/img/vehiclemenu/park.png">
</div> </div>
</li> </li>
<li class="" tabindex="8"> <li class="" tabindex="8">

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -1,6 +1,7 @@
using GTANetworkAPI; using GTANetworkAPI;
using ReallifeGamemode.Server.Entities; using ReallifeGamemode.Server.Entities;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Models;
using ReallifeGamemode.Server.Util; using ReallifeGamemode.Server.Util;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@@ -37,8 +38,17 @@ namespace ReallifeGamemode.Server.Events
} }
else if (sV is FactionVehicle fV) else if (sV is FactionVehicle fV)
{ {
if (fV.FactionId != u.FactionId && !state) if (fV.FactionId != u.FactionId && !state && !u.IsAdmin(AdminLevel.ADMIN3))
{ {
player.SendNotification("~r~Du hast keinen Schlüssel.");
return;
}
}
else if (sV is GroupVehicle gV)
{
if(gV.GroupId != u.Group.Id && !state && !u.IsAdmin(AdminLevel.ADMIN3))
{
player.SendNotification("~r~Du hast keinen Schlüssel.");
return; return;
} }
} }
@@ -76,20 +86,75 @@ namespace ReallifeGamemode.Server.Events
} }
else if (sV is UserVehicle uV) else if (sV is UserVehicle uV)
{ {
if (uV.UserId != u.Id && !u.IsAdmin(AdminLevel.ADMIN3)) if (uV.UserId != u.Id)
{ {
return; return;
} }
} }
} }
VehicleStreaming.SetLockStatus(v, !state);
state = !state; state = !state;
VehicleStreaming.SetLockStatus(v, state);
string msg = "Fahrzeug "; string msg = "Fahrzeug ";
msg += state ? "~g~abgeschlossen" : "~r~aufgeschlossen"; msg += state ? "~g~abgeschlossen" : "~r~aufgeschlossen";
player.SendNotification(msg); player.SendNotification(msg);
} }
} }
[RemoteEvent("CLIENT:VehicleMenu_ParkCar")]
public void VehicleMenuParkCarEvent(Client player)
{
if (player.IsInVehicle && player.VehicleSeat == -1)
{
Vehicle v = player.Vehicle;
User u = player.GetUser();
if (u == null) return;
using (var dbContext = new DatabaseContext())
{
ServerVehicle sV = v.GetServerVehicle(dbContext);
if (sV == null) return;
if (sV is UserVehicle uV)
{
if (uV.UserId != u.Id)
{
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken.");
return;
}
}
else if(sV is FactionVehicle fV)
{
if(fV.FactionId != u.FactionId || !u.FactionLeader)
{
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken.");
return;
}
}
else if(sV is GroupVehicle gV)
{
if (gV.GroupId != u.Group.Id || u.GroupRank < GroupRank.MANAGER)
{
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken.");
return;
}
}
Vector3 pos = v.Position;
sV.PositionX = pos.X;
sV.PositionY = pos.Y;
sV.PositionZ = pos.Z;
sV.Heading = v.Heading;
player.SendNotification("~g~Das Fahrzeug wurde geparkt.");
dbContext.SaveChanges();
}
}
}
[RemoteEvent("VehicleMenu_ToggleSingleDoor")] [RemoteEvent("VehicleMenu_ToggleSingleDoor")]
public void VehicleMenuToggleSingleDoorEvent(Client player, int door) public void VehicleMenuToggleSingleDoorEvent(Client player, int door)
{ {

View File

@@ -1,6 +1,7 @@
using GTANetworkAPI; using GTANetworkAPI;
using ReallifeGamemode.Server.Entities; using ReallifeGamemode.Server.Entities;
using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Models;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
@@ -9,9 +10,9 @@ namespace ReallifeGamemode.Server.Extensions
{ {
public static class VehicleExtension public static class VehicleExtension
{ {
public static ServerVehicle GetServerVehicle(this Vehicle veh) public static ServerVehicle GetServerVehicle(this Vehicle veh, DatabaseContext context = null)
{ {
return VehicleManager.GetServerVehicleFromVehicle(veh); return VehicleManager.GetServerVehicleFromVehicle(veh, context);
} }
} }
} }

View File

@@ -159,16 +159,6 @@ namespace ReallifeGamemode.Server.Managers
user.PositionZ = pos.Z; user.PositionZ = pos.Z;
} }
foreach (ServerVehicle veh in saveAll.ServerVehicles)
{
Vehicle v = VehicleManager.GetVehicleFromServerVehicle(veh);
veh.PositionX = v.Position.X;
veh.PositionY = v.Position.Y;
veh.PositionZ = v.Position.Z;
veh.Heading = v.Heading;
}
saveAll.SaveChanges(); saveAll.SaveChanges();
} }
} }

View File

@@ -162,27 +162,13 @@ namespace ReallifeGamemode.Server.Managers
public static ServerVehicle GetServerVehicleFromVehicle(Vehicle veh, DatabaseContext dbContext = null) public static ServerVehicle GetServerVehicleFromVehicle(Vehicle veh, DatabaseContext dbContext = null)
{ {
if (dbContext == null) dbContext = dbContext ?? new DatabaseContext();
foreach (KeyValuePair<int, NetHandle> pair in _serverVehicles)
{ {
using (dbContext = new DatabaseContext()) if (pair.Value == veh.Handle)
{ {
foreach (KeyValuePair<int, NetHandle> pair in _serverVehicles) return dbContext.ServerVehicles.Find(pair.Key);
{
if (pair.Value == veh.Handle)
{
return dbContext.ServerVehicles.Find(pair.Key);
}
}
}
}
else
{
foreach (KeyValuePair<int, NetHandle> pair in _serverVehicles)
{
if (pair.Value == veh.Handle)
{
return dbContext.ServerVehicles.Find(pair.Key);
}
} }
} }