Merge branch 'develop' of ssh://development.life-of-german.org:451/log-gtav/reallife-gamemode into develop

This commit is contained in:
2021-04-06 21:21:09 +02:00
13 changed files with 1956 additions and 11 deletions

View File

@@ -249,6 +249,13 @@ class RageVehicle extends RageEntity implements IVehicle {
this.vehicle.setDoorShut(door, instantly);
}
get class(): number {
if (mp.vehicles.exists(this.vehicle)) {
return this.vehicle.getClass();
}
return -1;
}
}

View File

@@ -69,6 +69,7 @@ interface IVehicle extends IEntity {
setDoorsLocked(state: boolean);
setDoorShut(door: number, instantly: boolean);
setDoorOpen(door: number, loose: boolean, instantly: boolean);
class: number;
}
interface IEntityPool<TEntity> {

View File

@@ -9,7 +9,7 @@
export default function smoothThrottle() {
let GlobalDisable = false;
let DisableAntiReverse = true;
let DisableAntiReverse = false;
let DisableSmoothThrottle = false;
let BrakeSystem = false;
@@ -47,7 +47,7 @@ export default function smoothThrottle() {
return;
if (BrakeSystem) {
if (mp.players.local.vehicle !== null) {
if (mp.players.local.vehicle && mp.vehicles.exists(mp.players.local.vehicle)) {
if (!mp.players.local.vehicle.isSeatFree(-1)) //only do this if the vehicle has a driver (doesn't have to be the player who is rendering this)
{
//Optimize function calls to variables (probably doesn't make a difference)

View File

@@ -17,8 +17,8 @@ game.events.onPlayerEnterVehicle(async (vehicle, seat) => {
if (vehicle) {
var data: VehicleData = vehicle.getSharedData("VehicleData");
setVehicleData(vehicle, data);
if (vehicle.class == 16) mp.game.vehicle.defaultEngineBehaviour = true;
}
});
@@ -31,8 +31,8 @@ game.events.onPlayerExitVehicle(async () => {
if (veh) {
var data: VehicleData = veh.getSharedData("VehicleData");
setVehicleData(veh, data);
if (veh.class == 16) mp.game.vehicle.defaultEngineBehaviour = false;
}
});

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace ReallifeGamemode.Database.Migrations
{
public partial class UserNameUniqueIndex : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateIndex(
name: "IX_Users_Name",
table: "Users",
column: "Name",
unique: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_Users_Name",
table: "Users");
}
}
}

View File

@@ -1463,6 +1463,9 @@ namespace ReallifeGamemode.Database.Migrations
b.HasIndex("HouseId");
b.HasIndex("Name")
.IsUnique();
b.ToTable("Users");
});

View File

@@ -1,4 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Logging;
@@ -43,10 +45,16 @@ namespace ReallifeGamemode.Database.Models
.HasIndex(b => b.BusinessId)
.IsUnique(true);
modelBuilder.Entity<Entities.User>()
.HasIndex(u => u.BusinessId)
modelBuilder.Entity<Entities.User>(e =>
{
e.HasIndex(u => u.BusinessId)
.IsUnique(true);
e.HasIndex(u => u.Name)
.IsUnique(true);
});
modelBuilder.Entity<Entities.ServerVehicle>()
.Property(sv => sv.Active)
.HasDefaultValue(true);

View File

@@ -226,7 +226,7 @@ namespace ReallifeGamemode.Server.Commands
NAPI.Pools.GetAllPlayers().ForEach(p =>
{
User pUser = p.GetUser();
if (pUser.FactionLeader || pUser.IsAdmin(AdminLevel.ADMIN))
if ((pUser?.FactionLeader ?? false) || pUser.IsAdmin(AdminLevel.ADMIN))
{
ChatService.SendMessage(p, broadcastMsg);
}

View File

@@ -108,6 +108,7 @@ namespace ReallifeGamemode.Server.Commands
{
player.StopAnimation();
player.PlayAnimation("mp_am_hold_up", "handsup_base", (int)(AnimationFlags.Loop | AnimationFlags.OnlyAnimateUpperBody | AnimationFlags.AllowPlayerControl | AnimationFlags.Cancellable));
ChatService.SendInRange(player.Position, 20, $"~m~{player.Name} stellt sich...");
}
[Command("event", "~m~Benutzung: ~s~/event [Nachricht]", GreedyArg = true)]

View File

@@ -129,6 +129,11 @@ namespace ReallifeGamemode.Server.Managers
[ServerEvent(Event.PlayerEnterVehicle)]
public void CarDealerBusiness_PlayerEnterVehicle(Player player, Vehicle veh, int seat)
{
if(player.IsAdminDuty())
{
return;
}
ServerVehicle sVeh = veh.GetServerVehicle();
if (sVeh == null) return;
if (!(sVeh is ShopVehicle)) return;

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using GTANetworkAPI;
using ReallifeGamemode.Database.Entities;
@@ -115,6 +116,17 @@ namespace ReallifeGamemode.Server.Services
});
}
internal static void SendInRange(Vector3 position, int range, string message)
{
foreach(Player player in NAPI.Pools.GetAllPlayers())
{
if(player.Position.DistanceTo(position) <= range)
{
SendMessage(player, message);
}
}
}
public static void BroadcastGroup(string message, Group group)
{
message = $"!{{FF8080}}** Gruppe: {message}";

View File

@@ -25,7 +25,7 @@ Set-Variable resourcesDir -option Constant -value "dotnet\resources"
Set-Variable gamemodeDir -option Constant -value "reallife-gamemode"
Set-Variable assetsDir -option Constant -value "client_packages\assets"
Set-Variable indexJsDir -option Constant -value "client_packages"
Set-Variable dlcPacksDir -option Constant -value "source_dlcpacks"
Set-Variable dlcPacksDir -option Constant -value "client_packages\game_resources\dlcpacks"
Set-Variable fullBuildDir -option Constant -value "$serverProjectPath\$buildDirectory"
# create default config file if not exist