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

This commit is contained in:
michael.reiswich
2021-05-17 23:56:57 +02:00
34 changed files with 767 additions and 330 deletions

View File

@@ -0,0 +1,134 @@
import * as NativeUI from '../libs/NativeUI';
var fieldSelectColShape = mp.colshapes.newCircle(2415.229, 4993.037, 46.230038);
const Menu = NativeUI.Menu;
var fieldMenu: NativeUI.Menu;
const Point = NativeUI.Point;
const UIMenuListItem = NativeUI.UIMenuListItem;
const ItemsCollection = NativeUI.ItemsCollection;
const UIMenuItem = NativeUI.UIMenuItem;
const Color = NativeUI.Color;
let sendItem = new UIMenuItem("Starten", "Route starten");
sendItem.BackColor = new Color(13, 71, 161);
sendItem.HighlightedBackColor = new Color(25, 118, 210);
let cancelItem = new UIMenuItem("Abbrechen", "");
cancelItem.BackColor = new Color(213, 0, 0);
cancelItem.HighlightedBackColor = new Color(229, 57, 53);
let screenRes = mp.game.graphics.getScreenResolution(0, 0);
var checkpoint = new mp.Vector3(2416.3723, 4993.94, 45);
export default function farmerFieldList(globalData: IGlobalData) {
var skillSelect;
var skill = 60;
var fieldSelected = false;
var fieldSelect;
mp.events.add(RageEnums.EventKey.PLAYER_EXIT_COLSHAPE, (colshape) => {
if (colshape == fieldSelectColShape) {
if (fieldMenu && fieldMenu.Visible) {
fieldMenu.Close();
}
}
});
mp.events.add('SERVER:selectField', () => {
skill = 100;
if (!globalData.InMenu) {
globalData.InMenu = true;
skillSelect = ["Knecht (1)", "Hilfsarbeiter (2)", "Ackersmann (3)", "Landwirt (4)", "Ökonom (5)"];
fieldMenu = new Menu("Bus Job", "", new Point(0, screenRes.y / 3), null, null);
fieldMenu.AddItem(new UIMenuListItem("Stufe wählen", "", new ItemsCollection(skillSelect)));
fieldSelect = "Anfänger";
fieldMenu.AddItem(sendItem);
fieldMenu.AddItem(cancelItem);
fieldMenu.Visible = true;
fieldMenu.ListChange.on((item, index) => {
switch (item.Text) {
case "Stufe wählen":
fieldSelect = String(item.SelectedItem.DisplayText);
break;
}
});
fieldMenu.ItemSelect.on((item) => {
if (item.Text === "Starten") {
if (fieldSelect == skillSelect[1] && skill < 5) {
mp.game.audio.playSoundFrontend(1, "Hack_Failed", "DLC_HEIST_BIOLAB_PREP_HACKING_SOUNDS", true);
}
else if (fieldSelect == skillSelect[2] && skill < 10) {
mp.game.audio.playSoundFrontend(1, "Hack_Failed", "DLC_HEIST_BIOLAB_PREP_HACKING_SOUNDS", true);
}
else if (fieldSelect == skillSelect[3] && skill < 25) {
mp.game.audio.playSoundFrontend(1, "Hack_Failed", "DLC_HEIST_BIOLAB_PREP_HACKING_SOUNDS", true);
}
else if (fieldSelect == skillSelect[4] && skill < 50) {
mp.game.audio.playSoundFrontend(1, "Hack_Failed", "DLC_HEIST_BIOLAB_PREP_HACKING_SOUNDS", true);
}
else {
mp.events.callRemote("CLIENT:StartFieldSelected", fieldSelect);
fieldSelected = true;
fieldMenu.Close();
globalData.InMenu = false;
}
} else if (item.Text === "Abbrechen") {
fieldMenu.Close();
}
});
fieldMenu.MenuClose.on(() => {
if (!fieldSelected) {
//mp.events.callRemote("CLIENT:Job_StopJob");
}
fieldSelected = false;
globalData.InMenu = false;
});
}
});
var activeCheckpoint;
var activeBlip = null;
var myVar;
var activeCheckpointId;
mp.events.add('farmerSetCheckpoint', (position, markerId, markerSize, cpId) => {
activeCheckpointId = cpId;
activeCheckpoint = mp.markers.new(markerId, position, markerSize, {
color: [255, 0, 0, 150],
visible: true,
dimension: 0
});
activeBlip = mp.blips.new(1, position,
{
color: 33,
alpha: 255,
shortRange: false,
});
activeBlip.setRoute(true);
activeBlip.setRouteColour(33);
clearInterval(myVar);
myVar = setInterval(checkpointTimer, 50);
});
function checkpointTimer() {
let dist = mp.game.gameplay.getDistanceBetweenCoords(mp.players.local.position.x, mp.players.local.position.y, 0, checkpoint.x, checkpoint.y, 0, false);
if (dist <= 2) {
clearInterval(myVar);
activeCheckpoint.destroy();
}
}
}

View File

@@ -57,7 +57,6 @@ const muellbaseVector2 = new mp.Vector3(454.88348, -2158.1938, 5.9788494);
const muellbaseVector3 = new mp.Vector3(529.06635, -2088.4097, 8.303088);
const krankenhausVector1 = new mp.Vector3(-508.50705, -351.24368, 34);
//const krankenhausVector2 = new mp.Vector3(-437.00146, -357.10526, 32.735916
const krankenhausVector2 = new mp.Vector3(-442.62323, -356.99185, 33);
const krankenhausVector3 = new mp.Vector3(-448.9346, -297.23972, 33.68);
const krankenhausVector4 = new mp.Vector3(-504.952, -315.21698, 35.04881);

View File

@@ -36,12 +36,12 @@ export default function tuning(globalData: IGlobalData) {
{ Slot: 8, Name: "Extra 1", Price: 2000 },
{ Slot: 9, Name: "Extra 2", Price: 2000 },
{ Slot: 10, Name: "Dach", Price: 1500 },
{ Slot: 11, Name: "Motor", BasePercentage: 20, PriceIncreasePerLevel: 7.5 },
{ Slot: 12, Name: "Bremsen", BasePercentage: 5, PriceIncreasePerLevel: 2.5 },
{ Slot: 13, Name: "Getriebe", BasePercentage: 10, PriceIncreasePerLevel: 2.5 },
{ Slot: 11, Name: "Motor", BasePercentage: 6.25, PriceIncreasePerLevel: 6.25 },
{ Slot: 12, Name: "Bremsen", BasePercentage: 2.5, PriceIncreasePerLevel: 2.5 },
{ Slot: 13, Name: "Getriebe", BasePercentage: 3.75, PriceIncreasePerLevel: 3.75 },
{ Slot: 14, Name: "Hupe", Price: 500 },
{ Slot: 15, Name: "Federung", Price: 2000 },
{ Slot: 18, Name: "Turbo", BasePercentage: 45, PriceIncreasePerLevel: 0 },
{ Slot: 18, Name: "Turbo", BasePercentage: 25, PriceIncreasePerLevel: 0 },
{ Slot: 22, Name: "Licht", Price: 500 },
{ Slot: -2, Name: "Reifen", Price: 2500 },
{ Slot: -1, Name: "Lackierung", Price: 1000 },

View File

@@ -10,9 +10,7 @@ export default function () {
});
mp.events.addDataHandler("vehicleAdminSpeed2", (entity, newValue2) => {
if (!entity.isAVehicle()) return;
//entity.setEngineTorqueMultiplier(newValue2);
TorqueEntity = entity;
TorqueValue = newValue2;
entity.setEngineTorqueMultiplier(newValue2);
});
/*mp.events.add('render', () => {
let vehicle = mp.players.local.vehicle;

View File

@@ -271,6 +271,9 @@ antiAfk(globalData);
import ammunation from './Interaction/ammunation/ammunation';
ammunation(globalData);
import farmerFieldList from './Jobs/FarmerFieldSelect';
farmerFieldList(globalData);
import handsup from './Player/handsup';
handsup();

View File

@@ -10,6 +10,10 @@ game.events.add('SERVER:Vehicle:UpdateData', (vehId, dataStr) => {
setVehicleData(vehicle, data);
});
game.events.add("SERVER:Vehicle:SetDefaultEngineBehavior", () => {
mp.game.vehicle.defaultEngineBehaviour = false;
});
game.events.onPlayerEnterVehicle((vehicle, seat) => {
while (!game.players.local.inVehicle) {
game.wait(0);

View File

@@ -10,6 +10,7 @@ using ReallifeGamemode.Server.Core.Extensions;
using System.Linq;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Common;
using Microsoft.Extensions.Logging;
namespace ReallifeGamemode.Server.Core.Managers
{
@@ -451,6 +452,8 @@ namespace ReallifeGamemode.Server.Core.Managers
return;
}
Log.LogInformation("Player {0} did a withdraw of {1} dollars from house {2}", player.Name, amount, house.Id);
user.BankAccount.Balance += amount;
house.BankAccount.Balance -= amount;

View File

@@ -6,12 +6,13 @@ using ReallifeGamemode.Server.Types;
using ReallifeGamemode.Server.Core.Extensions;
using Microsoft.EntityFrameworkCore;
using System.Linq;
using Microsoft.Extensions.Logging;
namespace ReallifeGamemode.Server.Core.Menus
{
internal class PoliceDepartment : Script
{
private const int WEAPONLICENSE_PRICE = 5000;
public PoliceDepartment()
{
@@ -40,13 +41,15 @@ namespace ReallifeGamemode.Server.Core.Menus
var account = user.BankAccount;
if (account.Balance < 5000)
if (account.Balance < WEAPONLICENSE_PRICE)
{
player.SendMessage("Du hast nicht genug Geld auf der Bank (5.000$)!", ChatPrefix.Error);
return;
}
account.Balance -= 5000;
Log.LogInformation("Player {0} bought a weapon license for {1} dollars", player.Name, WEAPONLICENSE_PRICE);
account.Balance -= WEAPONLICENSE_PRICE;
player.SendMessage("Du hast den Waffenschein erfolgreich erworben.", ChatPrefix.Info);

View File

@@ -4,18 +4,20 @@
* @copyright (c) 2008 - 2021 Life of German
*/
using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Finance;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Services;
using System;
namespace ReallifeGamemode.Server.Bank
{
class bank : Script
class Bank : Script
{
private static TextLabel informationLabel;
private static TextLabel factionInformationLabel;
@@ -25,6 +27,7 @@ namespace ReallifeGamemode.Server.Bank
private static ColShape _factioncolShape;
public static Vector3 Position { get; }
private static readonly ILogger logger = LogManager.GetLogger<Bank>();
public static void Setup()
{
@@ -92,6 +95,7 @@ namespace ReallifeGamemode.Server.Bank
}
else
{
logger.LogInformation("Player {0} did a deposit of {1} dollars at the bank", player.Name, amount);
player.SendNotification($"~w~Du hast $~g~{amount} ~w~eingezahlt.");
player.GetUser(dbContext).Handmoney -= amount;
player.GetUser(dbContext).BankAccount.Balance += amount;
@@ -115,6 +119,7 @@ namespace ReallifeGamemode.Server.Bank
}
else
{
logger.LogInformation("Player {0} did a withdraw of {1} dollars at the bank", player.Name, amount);
player.SendNotification($"~w~Du hast $~g~{amount} ~w~abgehoben.");
player.GetUser(dbContext).Handmoney += amount;
player.GetUser(dbContext).BankAccount.Balance -= amount;
@@ -130,34 +135,40 @@ namespace ReallifeGamemode.Server.Bank
int amount = Int32.Parse(stringAmount);
Player target = PlayerService.GetPlayerByNameOrId(nameOrId);
if (!target.IsLoggedIn())
{
player.SendNotification($"~r~Dieser Spieler ist nicht Online.");
return;
}
using (var dbContext = new DatabaseContext())
{
if (player.GetUser().PlayedMinutes < 180)
User user = player.GetUser(dbContext);
if (user.PlayedMinutes < 180)
{
player.SendNotification("~r~Du kannst Geld erst ab 3 Spielstunden vergeben");
return;
}
if (player.GetUser(dbContext) == target.GetUser(dbContext))
User targetUser = target.GetUser(dbContext);
if (user == targetUser)
{
player.SendNotification($"~r~Du kannst dir selber kein Geld überweisen.");
return;
}
else if (!target.IsLoggedIn())
{
player.SendNotification($"~r~Dieser Spieler ist nicht Online.");
}
else if (amount <= 0 || (int)(amount * 1.05) > player.GetUser(dbContext).BankAccount.Balance)
else if (amount <= 0 || (int)(amount * 1.05) > user.BankAccount.Balance)
{
player.SendNotification($"~r~Dieser Betrag kann nicht überwiesen werden.");
return;
}
else
{
logger.LogInformation("Player {0} did a transfer of {1} dollars to {2}", user.Name, amount, targetUser.Name);
player.SendNotification($"~w~Du hast {target.Name} $~g~{amount} ~w~Überwiesen.");
target.SendNotification($"~w~{player.Name} hat dir $~g~{amount} ~w~Überwiesen.");
player.GetUser(dbContext).BankAccount.Balance -= (int)(amount * 1.05);
target.GetUser(dbContext).otheramount += amount;
user.BankAccount.Balance -= (int)(amount * 1.05);
targetUser.otheramount += amount;
dbContext.SaveChanges();
}
}
@@ -170,17 +181,23 @@ namespace ReallifeGamemode.Server.Bank
using (var dbContext = new DatabaseContext())
{
User user = player.GetUser(dbContext);
if (user.FactionId == null)
{
return;
}
if (amount <= 0 || amount > player.GetUser(dbContext).BankAccount.Balance)
if (amount <= 0 || amount > user.BankAccount.Balance)
{
player.SendNotification($"~r~Dieser Betrag ist ungültig.");
return;
}
else
{
logger.LogInformation("Player {0} did a faction payin of {1} dollars to faction {2}", user.Name, amount, user.Faction.Id);
player.SendNotification($"~w~Du hast $~g~{amount}~w~ in die Fraktionskasse eingezahlt.");
player.GetUser(dbContext).BankAccount.Balance -= amount;
player.GetUser(dbContext).Faction.BankAccount.Balance += amount;
user.BankAccount.Balance -= amount;
user.Faction.BankAccount.Balance += amount;
dbContext.SaveChanges();
}
}
@@ -193,23 +210,28 @@ namespace ReallifeGamemode.Server.Bank
int amount = Int32.Parse(stringAmount);
Player target = PlayerService.GetPlayerByNameOrId(nameOrId);
using (var dbContext = new DatabaseContext())
{
if (!target.IsLoggedIn())
{
player.SendNotification($"~r~Dieser Spieler ist nicht Online.");
return;
}
else if (amount <= 0 || (int)(amount * 1.05) > player.GetUser(dbContext).Faction.BankAccount.Balance)
using (var dbContext = new DatabaseContext())
{
User user = player.GetUser(dbContext);
User targetUser = target.GetUser(dbContext);
if (amount <= 0 || (int)(amount * 1.05) > user.Faction.BankAccount.Balance)
{
player.SendNotification($"~r~Dieser Betrag kann nicht überwiesen werden.");
return;
}
else
{
player.SendNotification($"~w~Du hast {target.Name} $~g~{amount} ~w~Überwiesen.");
player.GetUser(dbContext).Faction.BankAccount.Balance -= (int)(amount * 1.05);
target.GetUser(dbContext).otheramount += amount;
logger.LogInformation("Player {0} did a faction transfer of {1} dollars from faction {2} to {3}", user.Name, amount, user.Faction.Id, target);
player.SendNotification($"Du hast ~g~{amount.ToMoneyString()}~s~ an ~y~{targetUser.Name}~s~ überwiesen");
target.SendNotification($"Dir wurden ~g~{amount.ToMoneyString()}~s~ von ~y~{user.Name}~s~ überwiesen");
user.Faction.BankAccount.Balance -= (int)(amount * 1.05);
targetUser.otheramount += amount;
dbContext.SaveChanges();
}
}

View File

@@ -532,25 +532,6 @@ namespace ReallifeGamemode.Server.Commands
}
}
[Command("bitcoin", "~m~/bitcoin [ID]")]
public void CmdAdminBitcoin(Player player, string name)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
Player target = PlayerService.GetPlayerByNameOrId(name);
if (target == null || !target.IsLoggedIn())
{
ChatService.PlayerNotFound(player);
return;
}
target.TriggerEvent("CLIENT:PlaySound", "fun/bitcoinnect", "mp3", 50);
}
#endregion Support
#region Admin
@@ -567,7 +548,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("remspawnschutz", "~m~Benutzung: ~s~/rmss [Target]", Alias = "rmss")]
public void CmdAdminRmss(Player player, String targetname)
public void CmdAdminRemSpawnSchutz(Player player, String targetname)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
@@ -620,7 +601,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("ac", "~m~Benutzung: ~s~/ac [Nachricht]", GreedyArg = true)]
public void CmdAdminA(Player player, string message)
public void CmdAdminChat(Player player, string message)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
@@ -1062,110 +1043,8 @@ namespace ReallifeGamemode.Server.Commands
}
}
[Command("destroyped", "~m~Benutzung: ~s~/destroyped [PedNr]")]
public void CmdAdminAddPPed(Player player, int PedNr)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
player.TriggerEvent("CLIENT:DestroyPed", PedNr);
//NAPI.Ped.CreatePed(PedHash.Bankman, new Vector3(player.Position.X, player.Position.Y, player.Position.Z), player.Heading, dimension);
}
[Command("addpped", "~m~Benutzung: ~s~/addpped [PedNr] [model] [dimension] [Dynamic] [Freezed] [Collision(0-3)] [Weapon] [AttackProof] [Fire/Explosion-Proof] [DrownProof]")]
public void CmdAdminAddPPed(Player player, Array PedNr, string model, uint dimension = 0, bool dynamic = false, bool freeze = false, int collision = 0, string weapon = "none", bool attackproof = false, bool fireexplosionproof = false, bool drownproof = false)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
player.TriggerEvent("CLIENT:AddPed", PedNr, model, player.Position.X, player.Position.Y, player.Position.Z, player.Heading, dimension, dynamic, freeze, collision, weapon, attackproof, fireexplosionproof, drownproof);
//NAPI.Ped.CreatePed(PedHash.Bankman, new Vector3(player.Position.X, player.Position.Y, player.Position.Z), player.Heading, dimension);
}
[Command("addmped", "~m~Benutzung: ~s~/addmped [model] [dimension]")]
public void CmdAdminAddMPed(Player player, int model, uint dimension = 0)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
player.TriggerEvent("CLIENT:AddPedModel", model, player.Position.X, player.Position.Y, player.Position.Z, player.Heading, dimension);
//NAPI.Ped.CreatePed(PedHash.Bankman, new Vector3(player.Position.X, player.Position.Y, player.Position.Z), player.Heading, dimension);
}
[Command("addgped", "~m~Benutzung: ~s~/addgped")]
public void CmdAdminAddGPed(Player player, int model, uint dimension = 0)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
//player.TriggerEvent("CLIENT:AddPed", model, player.Position.X, player.Position.Y, player.Position.Z, player.Heading, dimension);
Ped Peter = NAPI.Ped.CreatePed(PedHash.Bankman, new Vector3(player.Position.X, player.Position.Y, player.Position.Z), player.Heading, dimension);
//Peter.freezePosition(true);
}
[Command("addgpedmore", "~m~Benutzung: ~s~/addgpedMore")]
public void CmdAdminAddGPedMore(Player player, int model, uint dimension = 0)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
//player.TriggerEvent("CLIENT:AddPed", model, player.Position.X, player.Position.Y, player.Position.Z, player.Heading, dimension);
Ped Peter = NAPI.Ped.CreatePed(PedHash.ChickenHawk, new Vector3(player.Position.X + 1, player.Position.Y, player.Position.Z + 2), player.Heading, dimension);
Ped Peter2 = NAPI.Ped.CreatePed(PedHash.MovAlien01, new Vector3(player.Position.X + 2, player.Position.Y, player.Position.Z), player.Heading, dimension);
Ped Peter3 = NAPI.Ped.CreatePed(PedHash.Chimp, new Vector3(player.Position.X + 3, player.Position.Y, player.Position.Z), player.Heading, dimension);
Ped Peter4 = NAPI.Ped.CreatePed(PedHash.Boar, new Vector3(player.Position.X + 4, player.Position.Y, player.Position.Z), player.Heading, dimension);
Ped Peter5 = NAPI.Ped.CreatePed(PedHash.BradCadaverCutscene, new Vector3(player.Position.X + 5, player.Position.Y, player.Position.Z + 2), player.Heading, dimension);
Ped Peter6 = NAPI.Ped.CreatePed(PedHash.Cat, new Vector3(player.Position.X - 1, player.Position.Y, player.Position.Z), player.Heading, dimension);
Ped Peter7 = NAPI.Ped.CreatePed(PedHash.Chop, new Vector3(player.Position.X - 2, player.Position.Y, player.Position.Z), player.Heading, dimension);
Ped Peter8 = NAPI.Ped.CreatePed(PedHash.Cormorant, new Vector3(player.Position.X - 3, player.Position.Y, player.Position.Z), player.Heading, dimension);
Ped Peter9 = NAPI.Ped.CreatePed(PedHash.Cow, new Vector3(player.Position.X - 4, player.Position.Y, player.Position.Z), player.Heading, dimension);
Ped Peter10 = NAPI.Ped.CreatePed(PedHash.Deer, new Vector3(player.Position.X - 5, player.Position.Y, player.Position.Z), player.Heading, dimension);
Ped Peter11 = NAPI.Ped.CreatePed(PedHash.Coyote, new Vector3(player.Position.X, player.Position.Y + 1, player.Position.Z), player.Heading, dimension);
Ped Peter12 = NAPI.Ped.CreatePed(PedHash.Crow, new Vector3(player.Position.X, player.Position.Y + 2, player.Position.Z + 2), player.Heading, dimension);
Ped Peter13 = NAPI.Ped.CreatePed(PedHash.Humpback, new Vector3(player.Position.X, player.Position.Y + 3, player.Position.Z), player.Heading, dimension);
Ped Peter14 = NAPI.Ped.CreatePed(PedHash.Husky, new Vector3(player.Position.X, player.Position.Y + 4, player.Position.Z), player.Heading, dimension);
Ped Peter15 = NAPI.Ped.CreatePed(PedHash.JohnnyKlebitz, new Vector3(player.Position.X, player.Position.Y + 5, player.Position.Z - 1), player.Heading, dimension);
Ped Peter16 = NAPI.Ped.CreatePed(PedHash.Pig, new Vector3(player.Position.X, player.Position.Y - 1, player.Position.Z), player.Heading, dimension);
Ped Peter17 = NAPI.Ped.CreatePed(PedHash.Pigeon, new Vector3(player.Position.X, player.Position.Y - 2, player.Position.Z), player.Heading, dimension);
Ped Peter18 = NAPI.Ped.CreatePed(PedHash.Poodle, new Vector3(player.Position.X, player.Position.Y - 3, player.Position.Z), player.Heading, dimension);
Ped Peter19 = NAPI.Ped.CreatePed(PedHash.Pug, new Vector3(player.Position.X, player.Position.Y - 4, player.Position.Z), player.Heading, dimension);
Ped Peter20 = NAPI.Ped.CreatePed(PedHash.Rabbit, new Vector3(player.Position.X, player.Position.Y - 5, player.Position.Z), player.Heading, dimension);
Ped Peter21 = NAPI.Ped.CreatePed(PedHash.Rat, new Vector3(player.Position.X + 1, player.Position.Y + 1, player.Position.Z), player.Heading, dimension);
Ped Peter22 = NAPI.Ped.CreatePed(PedHash.Retriever, new Vector3(player.Position.X + 2, player.Position.Y + 2, player.Position.Z), player.Heading, dimension);
Ped Peter23 = NAPI.Ped.CreatePed(PedHash.Rhesus, new Vector3(player.Position.X + 3, player.Position.Y + 3, player.Position.Z), player.Heading, dimension);
Ped Peter24 = NAPI.Ped.CreatePed(PedHash.Rottweiler, new Vector3(player.Position.X + 4, player.Position.Y + 4, player.Position.Z), player.Heading, dimension);
Ped Peter25 = NAPI.Ped.CreatePed(PedHash.Seagull, new Vector3(player.Position.X + 5, player.Position.Y + 5, player.Position.Z + 2), player.Heading, dimension);
Ped Peter26 = NAPI.Ped.CreatePed(PedHash.Shepherd, new Vector3(player.Position.X - 1, player.Position.Y - 1, player.Position.Z), player.Heading, dimension);
Ped Peter27 = NAPI.Ped.CreatePed(PedHash.Stingray, new Vector3(player.Position.X - 2, player.Position.Y - 2, player.Position.Z), player.Heading, dimension);
Ped Peter28 = NAPI.Ped.CreatePed(PedHash.Westy, new Vector3(player.Position.X - 3, player.Position.Y - 3, player.Position.Z), player.Heading, dimension);
Ped Peter29 = NAPI.Ped.CreatePed(PedHash.MountainLion, new Vector3(player.Position.X - 4, player.Position.Y - 4, player.Position.Z), player.Heading, dimension);
Ped Peter30 = NAPI.Ped.CreatePed(PedHash.FatCult01AFM, new Vector3(player.Position.X - 5, player.Position.Y - 5, player.Position.Z), player.Heading, dimension);
Ped Peter31 = NAPI.Ped.CreatePed(PedHash.FatCult01AFM, new Vector3(player.Position.X + 1, player.Position.Y - 3, player.Position.Z), player.Heading, dimension);
Ped Peter32 = NAPI.Ped.CreatePed(PedHash.FatCult01AFM, new Vector3(player.Position.X + 3, player.Position.Y - 1, player.Position.Z), player.Heading, dimension);
Ped Peter33 = NAPI.Ped.CreatePed(PedHash.FatCult01AFM, new Vector3(player.Position.X - 1, player.Position.Y + 3, player.Position.Z), player.Heading, dimension);
Ped Peter34 = NAPI.Ped.CreatePed(PedHash.Acult01AMM, new Vector3(player.Position.X - 3, player.Position.Y + 1, player.Position.Z), player.Heading, dimension);
Ped Peter35 = NAPI.Ped.CreatePed(PedHash.Acult01AMM, new Vector3(player.Position.X + 5, player.Position.Y + 1, player.Position.Z), player.Heading, dimension);
Ped Peter36 = NAPI.Ped.CreatePed(PedHash.Acult01AMO, new Vector3(player.Position.X + 1, player.Position.Y - 5, player.Position.Z), player.Heading, dimension);
Ped Peter37 = NAPI.Ped.CreatePed(PedHash.Acult01AMO, new Vector3(player.Position.X + 4, player.Position.Y - 2, player.Position.Z), player.Heading, dimension);
Ped Peter38 = NAPI.Ped.CreatePed(PedHash.Acult01AMY, new Vector3(player.Position.X - 5, player.Position.Y + 2, player.Position.Z), player.Heading, dimension);
Ped Peter39 = NAPI.Ped.CreatePed(PedHash.Acult01AMY, new Vector3(player.Position.X - 4, player.Position.Y - 1, player.Position.Z), player.Heading, dimension);
//Peter.freezePosition(true);
}
[Command("gotox", "~m~Benutzung: ~s~/gotox [X] [Y] [Z]")]
public void CmdAdminGotoxyz(Player player, float x, float y, float z)
public void CmdAdminGotox(Player player, float x, float y, float z)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
@@ -1515,7 +1394,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("aclear", "~m~Benutzung: ~s~/aclear [Spieler] [Grund]", GreedyArg = true)]
public void CmdFactionClear(Player player, string nameOrId, string reason)
public void CmdAdminClear(Player player, string nameOrId, string reason)
{
User user = player.GetUser();
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
@@ -1650,7 +1529,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("vcolor", "~m~Benutzung: ~s~/vcolor [Farb-ID1] [Farb-ID2]")]
public void CmdAdminColor(Player player, int color1, int color2)
public void CmdAdminVColor(Player player, int color1, int color2)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
@@ -1766,7 +1645,7 @@ namespace ReallifeGamemode.Server.Commands
public void CmdAdminUnshow(Player player)
{
User user = player.GetUser();
if (!user.IsAdmin(AdminLevel.HEADADMIN))
if (!user.IsAdmin(AdminLevel.ADMIN))
{
ChatService.NotAuthorized(player);
return;
@@ -1834,7 +1713,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("setsvar", "~m~Benutzung:~s~ /setsvar [ID] [WERT]")]
public void CmdAdmSetSvar(Player player, int varId, int varValue)
public void CmdAdminSetSvar(Player player, int varId, int varValue)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.PROJEKTLEITUNG) ?? true)
{
@@ -1845,7 +1724,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("createturf", "~m~Benutzung:~s~ /createturf [radius]")]
public void CmdAdmCreateTurf(Player player, float option)
public void CmdAdminCreateTurf(Player player, float option)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -1867,7 +1746,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("cancleturf", "~m~Benutzung:~s~ /cancleturf")]
public void CmdAdmCancleTurf(Player player)
public void CmdAdminCancleTurf(Player player)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -1878,7 +1757,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("reloadturfs", "~m~Benutzung:~s~ /ReloadTurfs")]
public void CmdAdmReloadTurf(Player player)
public void CmdAdminReloadTurf(Player player)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -1890,7 +1769,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("deleteturf", "~m~Benutzung:~s~ /DeleteTurfs")]
public void CmdAdmDeleteTurf(Player player)
public void CmdAdminDeleteTurf(Player player)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -1901,7 +1780,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("setturfpoint", "~m~Benutzung:~s~ /setturfpoint")]
public void CmdAdmSetTurfPoint(Player player)
public void CmdAdminSetTurfPoint(Player player)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -1943,7 +1822,7 @@ namespace ReallifeGamemode.Server.Commands
}
ChatService.SendMessage(target, "~r~WARNINFO: ~w~Dir wurde von " + adminPlayername + " ein Warn entfernt: " + reason);
ChatService.Broadcast("~y~INFO: ~w~" + targetPlayername + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " ein Warn entfernt: " + reason);
ChatService.BroadcastAdmin("~y~INFO: ~w~" + targetPlayername + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " ein Warn entfernt: " + reason, AdminLevel.ADMIN);
}
[Command("setskill", "~m~Benutzung: ~s~/setskill [Playerid] [Bus/Pilot] [Menge]")]
@@ -2124,7 +2003,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("setweather", "~m~Benutzung: ~s~/setweather [Wetter]")]
public void CmdAdminSetweather(Player player, string weather)
public void CmdAdminSetWeather(Player player, string weather)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -2174,7 +2053,7 @@ namespace ReallifeGamemode.Server.Commands
[Command("showtuningmenu", "~m~Benutzung: ~s~/showtuningmenu", Alias = "stm")]
public void CmdAdminShowtuningmenu(Player player)
public void CmdAdminShowTuningMenu(Player player)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -2269,7 +2148,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("sethandmoney", "~m~Benutzung: ~s~/sethandmoney [Name/ID] [Menge]")]
public void CmdAdminSetUserHandMoney(Player admin, string targetname, int amount)
public void CmdAdminSetHandMoney(Player admin, string targetname, int amount)
{
if (!admin.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -2287,6 +2166,7 @@ namespace ReallifeGamemode.Server.Commands
{
var user = target.GetUser(context);
user.Handmoney = amount;
logger.LogInformation("Admin {0} set the handmoney of player {1} to {2} dollars", admin.Name, target.Name, amount);
context.SaveChanges();
//target.TriggerEvent("SERVER:SET_HANDMONEY", amount);
}
@@ -2295,7 +2175,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("givehandmoney", "~m~Benutzung: ~s~/givehandmoney [Name/ID] [Menge]")]
public void CmdAdminGiveUserHandMoney(Player admin, string targetname, int amount)
public void CmdAdminGiveHandMoney(Player admin, string targetname, int amount)
{
if (!admin.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -2313,6 +2193,7 @@ namespace ReallifeGamemode.Server.Commands
{
var user = target.GetUser(context);
user.Handmoney += amount;
logger.LogInformation("Admin {0} added {2} dollarsto the handmoney of player {1}", admin.Name, target.Name, amount);
context.SaveChanges();
//target.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney);
}
@@ -2321,7 +2202,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("quicksavemode", "~m~Benutzung: ~s~/quicksavemode [Modus]: ~g~blip, ~g~atm")]
public void CmdAdminSetQuickSaveMode(Player player, string mode)
public void CmdAdminQuickSaveMode(Player player, string mode)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -2371,7 +2252,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("setshopitem", "~m~Benutzung: ~s~/setshopitem [Item ID]")]
public void CmdAdminSetItemInShop(Player player, int itemId)
public void CmdAdminSetShopItem(Player player, int itemId)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -2417,7 +2298,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("rmshopitem", "~m~Benutzung: ~s~/rmshopitem [Item ID]")]
public void CmdAdminRemoveItemInShop(Player player, int itemId)
public void CmdAdminRmShopItem(Player player, int itemId)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -3226,7 +3107,7 @@ namespace ReallifeGamemode.Server.Commands
//
[Command("managefactionranks", "~m~Benutzung: ~s~/managefactionranks [Fraktions-ID]", Alias = "mfr")]
public void CmdFactionManageFactionRanks(Player player, int factionID)
public void CmdAdminManageFactionRanks(Player player, int factionID)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -3340,7 +3221,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("setmoney", "~m~Benutzung: ~s~/setmoney [Name] [Menge]")]
public void SetPlayerMoney(Player player, string receiver, int amount)
public void CmdAdminSetMoney(Player player, string receiver, int amount)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -3356,6 +3237,7 @@ namespace ReallifeGamemode.Server.Commands
using (var dbContext = new DatabaseContext())
{
logger.LogInformation("Admin {0} set the bank account of {1} to {2} dollars", player.Name, target.Name, amount);
target.GetUser(dbContext).BankAccount.Balance = amount;
dbContext.SaveChanges();
}
@@ -3364,7 +3246,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("givemoney", "~m~Benutzung: ~s~/givemoney [Name] [Menge]")]
public void GivePlayerMoney(Player player, string receiver, int amount)
public void GiveAdminGiveMoney(Player player, string receiver, int amount)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -3381,6 +3263,7 @@ namespace ReallifeGamemode.Server.Commands
using (var dbContext = new DatabaseContext())
{
logger.LogInformation("Admin {0} added {1} dollars to the bank account of {2}", player.Name, amount, target.Name);
target.GetUser(dbContext).BankAccount.Balance += amount;
dbContext.SaveChanges();
}
@@ -3389,7 +3272,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("setbusinessowner", "~m~Benutzung: ~s~/setbusinessowner [Name] [Business ID]")]
public void CmdAdminSetbusinessowner(Player player, string name, int businessid)
public void CmdAdminSetBusinessOwner(Player player, string name, int businessid)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -3470,7 +3353,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("setbusinessbankbalance", "~m~Benutzung: ~s~/setbusinessbankbalance [Business ID] [Menge]")]
public void CmdAdminGivebusinessbankbalance(Player player, int businessid, int amount)
public void CmdAdminSetBusinessBankBalance(Player player, int businessid, int amount)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
@@ -4002,7 +3885,7 @@ namespace ReallifeGamemode.Server.Commands
}
[Command("blind", "~m~Benutzung: ~s~/blind [Spieler] [Mode]")]
public void CmdBlind(Player player, string name, int mode)
public void CmdAdminBlind(Player player, string name, int mode)
{
if (!player.IsLoggedIn()) return;
@@ -4073,7 +3956,7 @@ namespace ReallifeGamemode.Server.Commands
[RemoteEvent("Noclip")]
public void Noclip(Player player)
{
if (!player.GetUser().IsAdmin(AdminLevel.HEADADMIN))
if (!player.GetUser().IsAdmin(AdminLevel.ADMIN))
{
return;
}

View File

@@ -1,9 +1,10 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using GTANetworkAPI;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Entities.Logs.Chat;
using ReallifeGamemode.Database.Models;
@@ -15,6 +16,7 @@ using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Types;
using ReallifeGamemode.Server.Util;
using ReallifeGamemode.Services;
using ReallifeGamemode.Server.Log;
/**
* @overview Life of German Reallife - Faction Commands (Faction.cs)
@@ -26,6 +28,8 @@ namespace ReallifeGamemode.Server.Commands
{
internal class FactionCommands : Script
{
private static readonly ILogger logger = LogManager.GetLogger<FactionCommands>();
#region Chat Commands
[Command("f", "~m~Benutzung: ~s~/f [Nachricht]", GreedyArg = true)]
@@ -233,7 +237,20 @@ namespace ReallifeGamemode.Server.Commands
[Command("giverank", "~m~Benutzung: ~s~/giverank [Name] [Rang]", GreedyArg = true)]
public void CmdFactionGiverank(Player player, string name, string rank)
{
if (player.GetUser()?.FactionId == null || player.GetUser().FactionLeader == false)
if (!player.IsLoggedIn())
{
return;
}
using var dbContext = new DatabaseContext();
User user = player.GetUser(dbContext);
if (user == null)
{
return;
}
if (user.FactionId == null || !user.FactionLeader)
{
ChatService.NotAuthorized(player);
return;
@@ -246,29 +263,33 @@ namespace ReallifeGamemode.Server.Commands
return;
}
if (target.GetUser()?.FactionId != player.GetUser()?.FactionId)
User targetUser = target.GetUser(dbContext);
if (targetUser == null)
{
ChatService.PlayerNotFound(player);
return;
}
if (targetUser.FactionId != user.FactionId)
{
ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Fraktion");
return;
}
using (var dbContext = new DatabaseContext())
{
FactionRank fr = dbContext.FactionRanks.FirstOrDefault(r => r.Order == int.Parse(rank) && r.FactionId == player.GetUser(dbContext).FactionId);
FactionRank fr = dbContext.FactionRanks.FirstOrDefault(r => r.Order == int.Parse(rank) && r.FactionId == user.FactionId);
if (fr == null)
{
ChatService.ErrorMessage(player, "Dieser Rang existiert nicht");
return;
}
target.GetUser(dbContext).FactionRankId = fr.Id;
targetUser.FactionRankId = fr.Id;
ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " den Rang '" + fr.RankName + "' (" + fr.Order + ") gegeben.");
ChatService.SendMessage(target, "!{02FCFF}Du hast von " + player.Name + " den Rang '" + fr.RankName + "' (" + fr.Order + ")' erhalten.");
dbContext.SaveChanges();
}
}
[Command("lc", "~m~Benutzung: ~s~/lc [Nachricht]", GreedyArg = true)]
public void CmdFactionLc(Player player, string message)
@@ -413,17 +434,19 @@ namespace ReallifeGamemode.Server.Commands
return;
}
if (deadPlayerUser.Handmoney >= 100)
if (deadPlayerUser.Handmoney >= Medic.ReviveIncome)
{
deadPlayerUser.Handmoney -= 100;
deadPlayerUser.Handmoney -= Medic.ReviveIncome;
}
else
{
int bankMoney = 100 - deadPlayerUser.Handmoney;
int bankMoney = Medic.ReviveIncome - deadPlayerUser.Handmoney;
deadPlayerUser.Handmoney = 0;
deadPlayerUser.BankAccount.Balance -= bankMoney;
}
logger.LogInformation("Player {0} has been revived by {1} for {2} dollars", deadPlayer.Name, player.Name, Medic.ReviveIncome);
player.PlayAnimation("amb@medic@standing@kneel@enter", "enter", 0);
deadPlayer.TriggerEvent("onPlayerRevived");

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
@@ -13,17 +14,22 @@ using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Types;
using ReallifeGamemode.Server.Util;
using ReallifeGamemode.Services;
using ReallifeGamemode.Server.Log;
namespace ReallifeGamemode.Server.Commands
{
internal class UserCommands : Script
{
private static readonly ILogger logger = LogManager.GetLogger<UserCommands>();
private const int SMS_PRICE = 5;
[Command("rent", "~m~rent stop")]
public void CmdUserStopRent(Player player, String option = "")
{
if (!player.IsLoggedIn()) return;
if (option != "stop")
if (option.ToLower() != "stop")
{
player.SendChatMessage("Mit \"/rent stop\" kannst du die Miete kündigen");
return;
@@ -113,13 +119,15 @@ namespace ReallifeGamemode.Server.Commands
using (var dbContext = new DatabaseContext())
{
User user = player.GetUser(dbContext);
if (user.BankAccount.Balance < 5)
if (user.BankAccount.Balance < SMS_PRICE)
{
ChatService.ErrorMessage(player, "Dafür hast du nicht genug Geld auf deinem Bankkonto");
return;
}
user.BankAccount.Balance -= 5;
logger.LogInformation("Player {0} sent a sms to {1} for {2} dollars", player.Name, target.Name, SMS_PRICE);
user.BankAccount.Balance -= SMS_PRICE;
dbContext.SaveChanges();
}

View File

@@ -6,17 +6,24 @@ using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Util;
using System;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Server.Log;
namespace ReallifeGamemode.Server.DrivingSchool
{
internal class DrivingSchool : Script
{
private static readonly ILogger logger = LogManager.GetLogger<DrivingSchool>();
private static TextLabel informationLabel;
private static Marker marker;
private static ColShape _colShape;
public static Vector3 Position { get; }
private const int FAILPOINTS = 2;
private const int CAR_LICENSE_PRICE = 2500;
private const int BIKE_LICENSE_PRICE = 3500;
private readonly IReadOnlyCollection<Vector3> BikeRoute = new List<Vector3>
{
new Vector3(-741.98, -1283.46, 6.17),
@@ -129,7 +136,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
return;
}
if (user.Handmoney < 2500)
if (user.Handmoney < CAR_LICENSE_PRICE)
{
client.SendNotification("~r~[FEHLER]~s~ Du hast nicht genug Geld auf der Hand($2.500)!", true);
return;
@@ -138,7 +145,8 @@ namespace ReallifeGamemode.Server.DrivingSchool
using (var dbContext = new DatabaseContext())
{
User payer = client.GetUser(dbContext);
payer.Handmoney -= 2500;
payer.Handmoney -= CAR_LICENSE_PRICE;
logger.LogInformation("Player {0} bought the driving school (car) for {1} dollars", client.Name, CAR_LICENSE_PRICE);
// client.TriggerEvent("SERVER:SET_HANDMONEY", payer.Handmoney);
dbContext.SaveChanges();
}
@@ -275,7 +283,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
client.SendChatMessage("~b~[INFO]~s~ Du besitzt schon einen Motorradschein.");
return;
}
if (user.Handmoney < 3500)
if (user.Handmoney < BIKE_LICENSE_PRICE)
{
client.SendNotification("~r~[FEHLER]~s~Du hast nicht genug Geld auf der Hand($3.500)!", true);
return;
@@ -284,7 +292,8 @@ namespace ReallifeGamemode.Server.DrivingSchool
using (var dbContext = new DatabaseContext())
{
User payer = client.GetUser(dbContext);
payer.Handmoney -= 3500;
payer.Handmoney -= BIKE_LICENSE_PRICE;
logger.LogInformation("Player {0} bought the driving school (bike) for {1} dollars", client.Name, BIKE_LICENSE_PRICE);
// client.TriggerEvent("SERVER:SET_HANDMONEY", payer.Handmoney);
dbContext.SaveChanges();
}

View File

@@ -1,8 +1,10 @@
using System.Collections.Generic;
using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Util;
@@ -15,8 +17,12 @@ namespace ReallifeGamemode.Server.DrivingSchool
private static ColShape _colShape1;
public static Vector3 Position { get; }
private static readonly ILogger logger = LogManager.GetLogger<PlaneSchool>();
private const int CHECKPOINT_MARKER_ID = 6;
private const int PLANE_LICENSE_PRICE = 5000;
private readonly IReadOnlyCollection<Vector3> planeRoute = new List<Vector3>
{
new Vector3(-1114.39, -2333.09, 14.87),
@@ -74,7 +80,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
client.SendChatMessage("~b~[INFO]~s~ Du besitzt schon einen Flugschein.");
return;
}
if (user.Handmoney < 5000)
if (user.Handmoney < PLANE_LICENSE_PRICE)
{
client.SendNotification("~r~Du brauchst ~g~$5.000~r~ auf der Hand, um die Prüfung starten zu können.", true);
return;
@@ -82,7 +88,8 @@ namespace ReallifeGamemode.Server.DrivingSchool
using (var dbContext = new DatabaseContext())
{
User payer = client.GetUser(dbContext);
payer.Handmoney -= 5000;
payer.Handmoney -= PLANE_LICENSE_PRICE;
logger.LogInformation("Player {0} bought the plane school for {1} dollars", client.Name, PLANE_LICENSE_PRICE);
//client.TriggerEvent("SERVER:SET_HANDMONEY", payer.Handmoney);
dbContext.SaveChanges();
}
@@ -171,7 +178,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
case 14:
user.TriggerEvent("renderTextOnScreen", "Setzen Sie zum Landeanflug an. Drücken Sie 'G', um das Fahrwerk auszufahren.");
CheckPointHandle.StartCheckPointRoute(user, planeRouteEnd, 5000, CHECKPOINT_MARKER_ID, 12, 5, true, "planeSchoolEventEnd");
CheckPointHandle.StartCheckPointRoute(user, planeRouteEnd, PLANE_LICENSE_PRICE, CHECKPOINT_MARKER_ID, 12, 5, true, "planeSchoolEventEnd");
break;
}
}

View File

@@ -3,6 +3,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Linq;
using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
@@ -19,6 +20,7 @@ using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Types;
using ReallifeGamemode.Server.Util;
using ReallifeGamemode.Server.WeaponDeal;
using ReallifeGamemode.Server.Log;
/**
* @overview Life of German Reallife - Event Key (Key.cs)
@@ -30,6 +32,8 @@ namespace ReallifeGamemode.Server.Events
{
public class Key : Script
{
private static readonly ILogger logger = LogManager.GetLogger<Key>();
#region User Key
[RemoteEvent("keyPress:NUM2")]
@@ -171,7 +175,7 @@ namespace ReallifeGamemode.Server.Events
isActive = JobBase.GetPlayerInJob().Contains(player),
};
var memberList = dbContext.Users.Where(f => f.FactionId == u.FactionId && u.FactionId != 0).OrderByDescending(f => f.FactionRank.Order).ThenBy(f => f.Name).Select(m => new
var memberList = dbContext.Users.Where(f => f.FactionId == u.FactionId && u.FactionId != null && u.FactionId != 0).OrderByDescending(f => f.FactionRank.Order).ThenBy(f => f.Name).Select(m => new
{
username = m.Name,
factionRank = m.FactionRank.Order,
@@ -293,6 +297,8 @@ namespace ReallifeGamemode.Server.Events
dbContext.VehicleItems.Remove(v);
}
logger.LogInformation("Player {0} took the weapon deal item {1} (amount: {2}) out of weapon vehicle {3}", player.Name, v.VehicleId, itemToAdd, v.VehicleId);
InventoryManager.AddItemToInventory(player, v.ItemId, itemToAdd);
nearestBehindVehiclePoint.usePoint(player);
dbContext.SaveChanges();
@@ -392,6 +398,8 @@ namespace ReallifeGamemode.Server.Events
continue;
}
logger.LogInformation("Player {0} put the weapon deal item \"{1}\" (amount: {2}) in weapon rack of faction {3}", player.Name, weapon.WeaponModel, item.Amount, user.FactionId);
weapon.Ammount += item.Amount;
ChatService.SendMessage(player, $"~y~[WT] ~s~Du hast eine ~y~Kiste abgeladen ~s~(Inhalt: {item.Amount}x {iItem.Name}).");
unloadedWeaponPackage = true;
@@ -585,6 +593,43 @@ namespace ReallifeGamemode.Server.Events
}
}
if (player.Position.DistanceTo(FarmerJob.POSITION_SCHEUNE) <= 1.5)
{
if (JobManager.GetJob<FarmerJob>().GetUsersInJob().Contains(player))
{
player.TriggerEvent("SERVER:selectField");
return;
}
}
if (player.Position.DistanceTo(FarmerJob.POSITION_FAHRZEUGHALLE) <= 1.5)
{
if (FarmerJob.playersWaitingForVehicle.Contains(player) || true)
{
FarmerJob.spawnVehicle(player);
return;
}
}
if (CharacterCreator.surgeryPoint.DistanceTo(player.Position) <= 1.5)
{
if (user.GetData<bool>("duty"))
{
player.SendNotification("~r~Im Dienst kannst du nicht operiert werden", false);
return;
}
if (JobBase.GetPlayerInJob().Contains(player))
{
player.SendNotification("~r~Im aktiven Job kannst du nicht operiert werden", false);
return;
}
if (user.Wanteds > 0)
{
player.SendNotification("~r~Wenn du gesucht wirst kannst du nicht operiert werden", false);
return;
}
}
//if (CharacterCreator.surgeryPoint.DistanceTo(player.Position) <= 1.5)
//{
// if (user.GetData<bool>("duty"))
@@ -963,7 +1008,7 @@ namespace ReallifeGamemode.Server.Events
}
[RemoteEvent("keyPress:Z")]
public void KeyPressX(Player player)
public void KeyPressZ(Player player)
{
if (!player.IsLoggedIn() || player.GetData<bool>("isDead")) return;

View File

@@ -6,11 +6,15 @@ using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using System;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Server.Log;
namespace ReallifeGamemode.Server.Events
{
public class UpdateCharacterCloth : Script
{
private static readonly ILogger logger = LogManager.GetLogger<UpdateCharacterCloth>();
[RemoteEvent("updateDutyProp")]
public void UpdateDutyProp(Player player, int componentId, int componentVariation)
{
@@ -280,7 +284,8 @@ namespace ReallifeGamemode.Server.Events
}
}
if(data[0] == 2){
if (data[0] == 2)
{
User payer = client.GetUser(dbContext);
payer.GetCharacter(dbContext);
payer.Character.Hair = Convert.ToByte(data[2]);
@@ -288,6 +293,7 @@ namespace ReallifeGamemode.Server.Events
}
client.GetUser(dbContext).Handmoney -= data[6];
logger.LogInformation("Player {0} bought clothing for {1} dollars: slot = {2}, cloth = {3}, texture = {4}", client.Name, data[6], data[0], data[2], data[1]);
dbContext.SaveChanges();
//client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney);
}

View File

@@ -140,14 +140,9 @@ namespace ReallifeGamemode.Server.Events
{
ServerVehicle carlocked = v.GetServerVehicle(dbContext);
if (state == true)
if (carlocked != null)
{
carlocked.Locked = true;
dbContext.SaveChanges();
}
else
{
carlocked.Locked = false;
carlocked.Locked = state;
dbContext.SaveChanges();
}
}
@@ -208,14 +203,9 @@ namespace ReallifeGamemode.Server.Events
{
ServerVehicle carlocked = vehicle.GetServerVehicle(dbContext);
if (state == true)
if (carlocked != null)
{
carlocked.Locked = true;
dbContext.SaveChanges();
}
else
{
carlocked.Locked = false;
carlocked.Locked = state;
dbContext.SaveChanges();
}
}

View File

@@ -130,7 +130,7 @@ namespace ReallifeGamemode.Server.Events
player.SendNotification("Du hast nicht genügend Geld bei dir");
return;
}
logger.LogInformation("Player {0} bought a {1} in ammunation", user.Name, weaponmodel);
logger.LogInformation("Player {0} bought a weapon {1} in ammunation for {2} dollars", user.Name, weaponmodel, price);
user.Handmoney -= price;
dbContext.SaveChanges();
player.GiveWeapon(NAPI.Util.WeaponNameToModel(weaponmodel), ammo);

View File

@@ -3,10 +3,12 @@ using System.Collections.Generic;
using System.Linq;
using GTANetworkAPI;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Admin;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Types;
@@ -22,6 +24,8 @@ namespace ReallifeGamemode.Server.Extensions
{
public static class PlayerExtension
{
private static ILogger Logger => LogManager.GetLogger(typeof(PlayerExtension));
/// <summary>
/// Gibt das User-Objekt eines Player's zurück.
/// Gibt nichts zurück, wenn der Player nicht eingeloggt ist
@@ -108,6 +112,8 @@ namespace ReallifeGamemode.Server.Extensions
faction.BankAccount.Balance += factionMoney;
}
Logger.LogInformation("Player {0} was sent to jail for {1} seconds, executive factions got {2} dollars each", user.Name, time, factionMoney);
user.Wanteds = 0;
user.JailTime = time;
}
@@ -216,12 +222,13 @@ namespace ReallifeGamemode.Server.Extensions
internal static void GiveWanteds(this User user, Player cop, int amount, string reason)
{
if (user.Wanteds + amount > 50)
int newWanteds = user.Wanteds + amount;
if (newWanteds > 50)
{
ChatService.ErrorMessage(cop, "Die Wanteds dürfen ein Limit von 50 nicht überschreiten");
return;
newWanteds = 50;
}
int newWanteds = user.Wanteds + amount;
using (var dbContext = new DatabaseContext())
{
User dbUser = dbContext.Users.Where(u => u.Id == user.Id).FirstOrDefault();

View File

@@ -9,6 +9,8 @@ using ReallifeGamemode.Database.Models;
using Microsoft.EntityFrameworkCore;
using System;
using ReallifeGamemode.Server.Extensions;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Server.Log;
/**
* @overview Life of German Reallife - Server Factions Medic Medic.cs
@@ -20,6 +22,8 @@ namespace ReallifeGamemode.Server.Factions.Medic
{
public class Medic : Script
{
private static readonly ILogger logger = LogManager.GetLogger<Medic>();
public static List<MedicTask> ReviveTasks = new List<MedicTask>();
public static List<MedicTask> HealTasks = new List<MedicTask>();
public static List<MedicTask> FireTasks = new List<MedicTask>();
@@ -141,6 +145,8 @@ namespace ReallifeGamemode.Server.Factions.Medic
targetUser.BankAccount.Balance -= bankMoney;
}
logger.LogInformation("Player {0} accepted a heal for {1} dollars from medic {2}", target.Name, activeDecision.dPrice, activeDecision.dMedic.Name);
dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += activeDecision.dPrice / 2;
activeDecision.dMedic.GetUser(dbContext).Wage += activeDecision.dPrice / 2;

View File

@@ -9,9 +9,11 @@ using System.Collections.Generic;
using System.Linq;
using GTANetworkAPI;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Wanted;
@@ -19,13 +21,15 @@ namespace ReallifeGamemode.Server.Finance
{
public class Economy
{
private static readonly ILogger logger = LogManager.GetLogger<Economy>();
public static Dictionary<int, Paycheck> Paychecks { get; set; } = new Dictionary<int, Paycheck>();
public static (int, float, float) GetEconomyClass(Player client, int wage)
{
int bankAccount = client.GetUser().BankAccount.Balance;
float financialHelp = -(float)Math.Pow(1.0001, -(bankAccount + client.GetUser().Handmoney)) * -1000;
float financialInterest = 1 - (float)Math.Pow(1.00006, -wage) * 1;
float financialInterest = 1 - (float)Math.Pow(1.000041, -wage) * 1;
if (financialInterest >= 0.7)
financialInterest = 0.7f;
@@ -162,6 +166,15 @@ namespace ReallifeGamemode.Server.Finance
}
}
logger.LogInformation("Player {0} has a payday of {1} dollars. old balance: {2}, new balance: {3}, wage: {4}, interest: {5}, other: {6}",
client.Name,
paycheck.Amount,
u.BankAccount.Balance,
u.BankAccount.Balance + paycheck.Amount,
paycheck.Wage,
paycheck.FinancialInterest,
paycheck.otheramount);
u.BankAccount.Balance += paycheck.Amount;
u.Wage = 0;
u.otheramount = 0;
@@ -173,7 +186,7 @@ namespace ReallifeGamemode.Server.Finance
.Where(hR => hR.UserId == u.Id);
dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += (int)(paycheck.HealthInsurance * 0.1);
logger.LogInformation("Medic faction got a health insurance payment of {0} dollars from player {1}", paycheck.HealthInsurance * 0.1, client.Name);
if (rentals.Any())
{
foreach (var rental in rentals)
@@ -181,6 +194,7 @@ namespace ReallifeGamemode.Server.Finance
if (rental?.House?.BankAccount != null)
{
rental.House.BankAccount.Balance += (int)(rental.House.RentalFee * 0.7);
logger.LogInformation("House {0} got a rentalfee of {1} from paycheck from user {2}", rental.House.Id, rental.House.RentalFee * 0.7, u.Name);
}
}
}

View File

@@ -5,16 +5,20 @@ using System.Threading.Tasks;
using System.Timers;
using GTANetworkAPI;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Services;
namespace ReallifeGamemode.Server.Gangwar
{
public class Turf
{
private static readonly ILogger logger = LogManager.GetLogger<Turf>();
public int TurfID { get; set; }
public string TurfName { get; set; }
public int Color { get; set; }
@@ -276,6 +280,7 @@ namespace ReallifeGamemode.Server.Gangwar
a.TriggerEvent("CLIENT:loose");
}
ownerFaction.BankAccount.Balance += 15000;
logger.LogInformation("Gang {0} successfully defended the turf {1} against gang {2} and gained {3} dollars", getOwner(), getName(), getAttacker(), 15000);
}
else if (getOwner() != FactionName)
{
@@ -292,6 +297,7 @@ namespace ReallifeGamemode.Server.Gangwar
if (a != null)
a.TriggerEvent("CLIENT:win");
}
logger.LogInformation("Gang {0} successfully took over the turf {1} from gang {2} and gained {3} dollars", getAttacker(), getName(), getOwner(), 10000);
this.Owner = FactionName;
attackerFaction.BankAccount.Balance += 10000;
Turfs turf = dbContext.Turfs.Where(t => t.Id == getId()).FirstOrDefault();

View File

@@ -0,0 +1,176 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GTANetworkAPI;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
namespace ReallifeGamemode.Server.Job
{
public class FarmerJob : JobBase
{
public override int Id => 5;
public override string Name => "Farmer";
public override bool NeedVehicleToStart => false;
public override bool Deactivated => true;
private static FarmerJob _Instance;
public static Vector3 POSITION_JOB_START = new Vector3(2434.2983, 4976.952, 46.571423);
public static Vector3 POSITION_SCHEUNE = new Vector3(2416.3723, 4993.94, 45);
public static Vector3 POSITION_SCHEUNE_LABEL = new Vector3(2416.3723, 4993.94, 46);
public static Vector3 POSITION_FAHRZEUGHALLE = new Vector3(2494.346, 4964.773, 43.5833);
public static Vector3 POSITION_FAHRZEUGHALLE_LABEL = new Vector3(2494.346, 4964.773, 44.5833);
private static TextLabel labelScheune = null;
private static TextLabel labelFahrzeughalle = null;
public static List<Player> playersWaitingForVehicle = new List<Player>();
public static Dictionary<Player, String> playerHasField = new Dictionary<Player, String>();
private static readonly Dictionary<Vector3, float> VEHICLE_SPAWNS = new Dictionary<Vector3, float>
{
{ new Vector3(2500.026, 4982.7485, 44.50283), (float)-148.8139 },
{ new Vector3(2511.2246, 4981.6924, 44.722702), (float)139.25208 },
{ new Vector3(2518.3486, 4977.3125, 44.716434), (float)131.3338 },
{ new Vector3(2522.8215, 4966.823, 44.53701), (float)118.17867 }
};
private static int spawnIndex = 0;
public static readonly List<Vector3> CHECKPOINTS_FIELD1 = new List<Vector3>()
{
new Vector3(2335.83984375, 5114.8525390625, 47.83000183105469),
new Vector3(2295.81201171875, 5153.26123046875, 54.64070129394531),
new Vector3(2277.558837890625, 5139.4453125, 53.3763542175293),
new Vector3(2318.217041015625, 5099.271484375, 46.98373031616211),
new Vector3(2283.467041015625, 5066.1025390625, 45.97780227661133),
new Vector3(),
new Vector3(),
new Vector3(),
new Vector3(),
new Vector3(),
new Vector3(),
new Vector3(),
new Vector3(),
new Vector3(),
new Vector3(),
new Vector3(),
new Vector3(),
new Vector3(),
new Vector3(),
new Vector3()
};
public FarmerJob()
{
JobStart += FarmerDriverJobJobStart;
JobStop += FarmerDriverJobJobStop;
}
public static FarmerJob GetInstance()
{
if (_Instance == null)
_Instance = new FarmerJob();
return _Instance;
}
private void FarmerDriverJobJobStart(Player player)
{
labelScheune = NAPI.TextLabel.CreateTextLabel("Scheune - Drücke ~y~E ~w~um ein Feld auszuwählen", POSITION_SCHEUNE_LABEL, 15, 1, 0, new Color(255, 255, 255), false, 0);
player.SendChatMessage("~y~[JOB]~w~ Begebe dich zur Scheune um Felder zu pachten");
player.TriggerEvent("farmerSetCheckpoint", POSITION_SCHEUNE, 1, 1, "scheune");
}
private void FarmerDriverJobJobStop(Player player)
{
player.SendChatMessage("Job stop");
}
[RemoteEvent("CLIENT:StartFieldSelected")]
public void startFieldSelected(Player player, String field)
{
labelScheune.Delete();
labelFahrzeughalle = NAPI.TextLabel.CreateTextLabel("Fahrzeughalle - Drücke ~y~E ~w~um dir ein Fahrzeug zu holen", POSITION_FAHRZEUGHALLE_LABEL, 15, 1, 0, new Color(255, 255, 255), false, 0);
player.SendChatMessage("~y~[JOB]~w~ Begebe dich zur nun zur Fahrzeughalle um dein Fahrzeug abzuholen");
player.TriggerEvent("farmerSetCheckpoint", POSITION_FAHRZEUGHALLE, 1, 1, "fahrzeughalle");
playersWaitingForVehicle.Add(player);
playerHasField.Add(player, field);
}
public static void spawnVehicle(Player player)
{
if (!playerHasField.ContainsKey(player))
playerHasField.Add(player, "Landwirt (4)");
player.SendChatMessage("player " + player.Name + " with field " + playerHasField[player]);
//NEXT: verschiedene spawnpositionen für fahrzeuge in VEHICLE_SPAWNS
//Vector3 spawnPoint = VEHICLE_SPAWNS[spawnIndex++ % VEHICLE_SPAWNS.Count];
Random rnd = new Random();
spawnIndex = rnd.Next(VEHICLE_SPAWNS.Count);
Vector3 spawnPoint = VEHICLE_SPAWNS.ElementAt(spawnIndex).Key;
float vehicleHeading = VEHICLE_SPAWNS[spawnPoint];
Vehicle vehicle = null;
if (playerHasField[player] == "Knecht (1)")
{
vehicle = NAPI.Vehicle.CreateVehicle(0x61D6BA8C, spawnPoint, vehicleHeading, 111, 111, "JOB");
} else if (playerHasField[player] == "Hilfsarbeiter (2)")
{
vehicle = NAPI.Vehicle.CreateVehicle(0x61D6BA8C, spawnPoint, vehicleHeading, 111, 111, "JOB");
}
else if (playerHasField[player] == "Ackersmann (3)")
{
vehicle = NAPI.Vehicle.CreateVehicle(0x843B73DE, spawnPoint, vehicleHeading, 111, 111, "JOB");
}
else if (playerHasField[player] == "Landwirt (4)")
{
vehicle = NAPI.Vehicle.CreateVehicle(0x843B73DE, spawnPoint, vehicleHeading, 111, 111, "JOB");
}
else if (playerHasField[player] == "Ökonom(5)")
{
vehicle = NAPI.Vehicle.CreateVehicle(0x843B73DE, spawnPoint, vehicleHeading, 111, 111, "JOB");
}
vehicle.NumberPlate = "JOB-" + vehicle.Id;
_CHANGING_VEHICLE.Add(player);
if (playerVehiclePair.ContainsKey(player))
{
Vehicle previousVehicle = null;
if (playerVehiclePair[player] != null)
previousVehicle = playerVehiclePair[player];
playerVehiclePair.Remove(player);
previousVehicle?.Delete();
}
playerVehiclePair.Add(player, vehicle);
player.SetIntoVehicle(vehicle.Handle, 0);
}
public override void LastCheckpoint(Player player)
{
//nothing
}
public override void StartJobEndTimer(Player player)
{
//nothing
}
public override bool CheckVehicle(Player player, Vehicle vehicle)
{
//nothig, kack jobsystem
return false;
}
}
}

View File

@@ -24,8 +24,8 @@ namespace ReallifeGamemode.Server.Job
public const string INTERMEDIATE = "Fortgeschrittener";
public const string PROFESSIONAL = "Profi";
public const int WAGE_BEGINNER = 350;
public const int WAGE_INTERMEDIATE = 950;
public const int WAGE_BEGINNER = 600;
public const int WAGE_INTERMEDIATE = 1300;
public const uint VEHICLE_BEGINNER = (uint)VehicleHash.Cuban800;
public const uint VEHICLE_INTERMEDIATE = (uint)VehicleHash.Velum2;
@@ -152,6 +152,8 @@ namespace ReallifeGamemode.Server.Job
private void _JobStop(Player player)
{
player.TriggerEvent("SERVER:Vehicle:SetDefaultEngineBehavior");
if (!playerVehiclePair.ContainsKey(player))
return;

View File

@@ -142,7 +142,7 @@ namespace ReallifeGamemode.Server
DrivingSchool.DrivingSchool.Setup();
PlaneSchool.Setup();
Gangwar.Gangwar.loadTurfs();
Bank.bank.Setup();
Bank.Bank.Setup();
Introduction.Setup();
PositionManager.LoadPositionManager();
LoadManager.LoadLoadManager();

View File

@@ -2,9 +2,11 @@
using System.Linq;
using System.Numerics;
using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
/**
* @overview Life of German Reallife - Managers ATMManager (ATMManager.cs)
@@ -18,6 +20,8 @@ namespace ReallifeGamemode.Server.Managers
{
public static List<ColShape> ATMColShapes = new List<ColShape>();
private static readonly ILogger logger = LogManager.GetLogger<ATMManager>();
public static void InitATMs()
{
var addedATMs = 0;
@@ -121,6 +125,7 @@ namespace ReallifeGamemode.Server.Managers
var updateBankMoneyIn = user.BankAccount;
var updateATMBalanceIn = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM);
user.Handmoney -= inputField1;
logger.LogInformation("Player {0} did a deposit of {1} dollars at atm {2}", client.Name, inputField1, nearATM);
updateBankMoneyIn.Balance += inputField1;
updateATMBalanceIn.Balance += inputField1;
//client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney);
@@ -149,6 +154,7 @@ namespace ReallifeGamemode.Server.Managers
var updateATMBalanceOut = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM);
updateHandMoneyOut.Handmoney += inputField1;
user.BankAccount.Balance -= inputField1;
logger.LogInformation("Player {0} did a withdraw of {1} dollars at atm {2}", client.Name, inputField1, nearATM);
updateATMBalanceOut.Balance -= inputField1;
//client.TriggerEvent("SERVER:SET_HANDMONEY", updateHandMoneyOut.Handmoney);
}

View File

@@ -1,11 +1,13 @@
using System.Linq;
using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Events;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
namespace ReallifeGamemode.Server.Managers
{
@@ -14,6 +16,8 @@ namespace ReallifeGamemode.Server.Managers
public static Vector3 surgeryPoint = new Vector3(342.30032, -1397.7542, 32.50923);
public const int SURGERY_PRICE = 15000;
private static readonly ILogger logger = LogManager.GetLogger<CharacterCreator>();
public CharacterCreator()
{
//LoadSurgery();
@@ -273,6 +277,7 @@ namespace ReallifeGamemode.Server.Managers
}
else
{
logger.LogInformation("Player {0} bought a surgery for {1} dollars", player.Name, SURGERY_PRICE);
user.BankAccount.Balance -= SURGERY_PRICE;
}
saveCharacter.Remove(oldChar);

View File

@@ -1,9 +1,11 @@
using System.Linq;
using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Types;
@@ -11,8 +13,11 @@ namespace ReallifeGamemode.Server.Managers
{
internal class CityHallManager : Script
{
private const int GROUP_PRICE = 50000;
private static readonly Vector3 _cityHallPosition = new Vector3(273.22, -278.14, 53.9);
private static readonly ILogger logger = LogManager.GetLogger<CityHallManager>();
public static void LoadCityHall()
{
NAPI.Marker.CreateMarker(GTANetworkAPI.MarkerType.VerticalCylinder, _cityHallPosition.Subtract(new Vector3(0, 0, 1.7)), new Vector3(), new Vector3(), 1.0f, new Color(255, 255, 255));
@@ -57,13 +62,14 @@ namespace ReallifeGamemode.Server.Managers
u.Group = group;
u.GroupRank = GroupRank.OWNER;
if (player.GetUser(dbContext).BankAccount.Balance < 50000)
if (u.BankAccount.Balance < GROUP_PRICE)
{
ChatService.ErrorMessage(player, "Du hast nicht genug Geld");
return;
}
player.GetUser(dbContext).BankAccount.Balance -= 50000;
logger.LogInformation("Player {0} created a group for {1} dollars", player.Name, GROUP_PRICE);
u.BankAccount.Balance -= GROUP_PRICE;
dbContext.SaveChanges();
ChatService.BroadcastGroup($"Die Gruppe \"{name}\" wurde erfolgreich erstellt.", group);

View File

@@ -16,6 +16,8 @@ using ReallifeGamemode.Server.Events;
using System;
using ReallifeGamemode.Server.Core.API;
using ReallifeGamemode.Server.Factions.Medic;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Server.Log;
/**
* @overview Life of German Reallife - Managers Interaction (InteractionManager.cs)
@@ -27,6 +29,8 @@ namespace ReallifeGamemode.Server.Managers
{
public class InteractionManager : Script
{
private static readonly ILogger logger = LogManager.GetLogger<InteractionManager>();
#region Eigeninteraktionen Taste-M
[RemoteEvent("CLIENT:InteractionMenu_AcceptInvite")]
@@ -51,7 +55,7 @@ namespace ReallifeGamemode.Server.Managers
return;
}
using (var dbContext = new DatabaseContext(true))
using (var dbContext = new DatabaseContext())
{
User u = leader.GetUser(dbContext);
User own = player.GetUser(dbContext);
@@ -493,6 +497,8 @@ namespace ReallifeGamemode.Server.Managers
GTANetworkAPI.Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(userVehicle);
user.BankAccount.Balance += backPrice;
logger.LogInformation("Player {0} sold his uservehicle {1} for {2} dollars", player.Name, userVehicle.Model.ToString(), backPrice);
ChatService.SendMessage(player, $"~b~[INFO]~s~ Du hast durch den Autoverkauf ~g~{backPrice.ToMoneyString()}~s~ erhalten.");
VehicleManager.DeleteVehicle(veh);
@@ -505,6 +511,8 @@ namespace ReallifeGamemode.Server.Managers
var backPrice = (int)(factionVehicle.BuyPrice * 1.5 * 0.4);
user.Faction.BankAccount.Balance += backPrice;
logger.LogInformation("Player {0} sold thr factionvehicle {1} of faction {2} for {3} dollars", player.Name, factionVehicle.Model.ToString(), user.Faction.Id, backPrice);
ChatService.SendMessage(player, $"~b~[INFO]~s~ Die Fraktionskasse hat ~g~{backPrice.ToMoneyString()}~s~ erhalten.");
VehicleManager.DeleteVehicle(VehicleManager.GetVehicleFromServerVehicle(factionVehicle));
@@ -733,6 +741,7 @@ namespace ReallifeGamemode.Server.Managers
fibBankAccount.Balance += (int)(ticket_amount / 100 * 60);
lspdBankAccount.Balance += (int)(ticket_amount / 100 * 40);
}
logger.LogInformation("Player {0} accepted a ticket of {1} dollars", player.Name, ticket_amount);
dbContext.SaveChanges();
}
target.ResetData("ticket_boolean");
@@ -798,6 +807,7 @@ namespace ReallifeGamemode.Server.Managers
if (amount > 0 && amount <= 5000)
{
logger.LogInformation("Player {0} did a local payment of {1} dollars to player {2}", player.Name, amount, target.Name);
player.SendNotification($"~w~Du hast ~y~{targetname} ~w~{amount.ToMoneyString()} gegeben.");
target.SendNotification($"~w~ Du hast von ~y~{playername} ~w~{amount.ToMoneyString()} erhalten.", true);

View File

@@ -14,6 +14,8 @@ using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Util;
using ReallifeGamemode.Services;
using ReallifeGamemode.Server.Types;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Server.Log;
/**
* @overview Life of German Reallife - Managers InventoryManager (InventoryManager.cs)
@@ -25,6 +27,9 @@ namespace ReallifeGamemode.Server.Managers
{
public class InventoryManager : Script
{
private const int MAX_USER_INVENTORY = 40000;
private static readonly ILogger logger = LogManager.GetLogger<InventoryManager>();
public static List<IItem> itemList;
private static Dictionary<int, (int[], int[])> TradeItems { get; set; } = new Dictionary<int, (int[], int[])>();
@@ -224,7 +229,7 @@ namespace ReallifeGamemode.Server.Managers
using (var context = new DatabaseContext())
{
List<UserItem> userItems = context.UserItems.ToList().FindAll(i => i.UserId == user.Id);
List<UserItem> userItems = context.UserItems.Where(i => i.UserId == user.Id).ToList();
foreach (var item in userItems)
{
IItem iItem = GetItemById(item.ItemId);
@@ -381,7 +386,7 @@ namespace ReallifeGamemode.Server.Managers
int setAmount = 0;
for (int i = 1; i <= amount; i++)
{
if (GetUserInventoryWeight(player) + (i * GetItemById(itemId).Gewicht) > 40000)
if (GetUserInventoryWeight(player) + (i * GetItemById(itemId).Gewicht) > MAX_USER_INVENTORY)
{
break;
}
@@ -608,6 +613,14 @@ namespace ReallifeGamemode.Server.Managers
return;
}
logger.LogInformation("Player {0} bought the item {1} for {2} dollars", client.Name, shopItem.Name, shopItem.Price);
if (GetUserInventoryWeight(client) + shopItem.Gewicht > MAX_USER_INVENTORY)
{
return;
}
UserItem item = dbContext.UserItems.Where(i => i.ItemId == shopItem.Id && i.UserId == user.Id).FirstOrDefault();
if (item == null)
{

View File

@@ -9,6 +9,7 @@ using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Shop.Ammunation;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Job;
namespace ReallifeGamemode.Server.Managers
@@ -207,11 +208,18 @@ namespace ReallifeGamemode.Server.Managers
jobId = 4,
Skill = 0
};
JobPoint jobPointFarmer = new JobPoint()
{
Position = FarmerJob.POSITION_JOB_START,
jobId = 5,
Skill = 0
};
JobPoints.Add(jobPointRefuseCollector);
JobPoints.Add(jobPointPilot);
JobPoints.Add(jobPointPilot2);
JobPoints.Add(jobPointBusDriver);
JobPoints.Add(jobPointFarmer);
foreach (JobPoint p in JobPoints)
{
@@ -240,6 +248,11 @@ namespace ReallifeGamemode.Server.Managers
NAPI.TextLabel.CreateTextLabel("Busfahrer - Dr\u00fccke ~y~E~s~ um Job zu starten/beenden", p.Position, 15, 1, 0, new Color(255, 255, 255), false, 0);
NAPI.Blip.CreateBlip(513, p.Position, 1f, 16, "Busfahrer", 255, 0, true);
}
if (p.jobId == 5)
{
NAPI.TextLabel.CreateTextLabel("Farmer - Dr\u00fccke ~y~E~s~ um Job zu starten/beenden", p.Position, 15, 1, 0, new Color(255, 255, 255), false, 0);
NAPI.Blip.CreateBlip(369, p.Position, 1f, 16, "Farmer", 255, 0, true);
}
}
#endregion JobPoints

View File

@@ -2,14 +2,17 @@
using System.Collections.Generic;
using System.Linq;
using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
namespace ReallifeGamemode.Server.Managers
{
internal class TuningManager : Script
{
private static readonly ILogger logger = LogManager.GetLogger<TuningManager>();
private static List<ColShape> tuningGarages = new List<ColShape>();
public static void LoadTuningGarages()
@@ -220,6 +223,7 @@ namespace ReallifeGamemode.Server.Managers
ServerVehicle sV = player.Vehicle.GetServerVehicle(dbContext);
if (sV == null) return;
logger.LogInformation("Player {0} bought a tuning part for server vehicle {1}, slot: {2}, mod: {3} for {4} dollars", player.Name, sV.Id, slot, index, price);
VehicleMod vMod = dbContext.VehicleMods.FirstOrDefault(m => m.ServerVehicleId == sV.Id && m.Slot == slot);
if (vMod == null && index != -1)
@@ -265,7 +269,7 @@ namespace ReallifeGamemode.Server.Managers
veh.SecondaryColor = color;
}
using var dbContext = new DatabaseContext(true);
using var dbContext = new DatabaseContext();
ServerVehicle serverVeh = VehicleManager.GetServerVehicleFromVehicle(veh, dbContext);
if (serverVeh == null)
@@ -311,6 +315,7 @@ namespace ReallifeGamemode.Server.Managers
if (serverVehicle != null)
{
logger.LogInformation("Player {0} bought wheels for server vehicle {1}, type: {2}, wheels: {3} for {4} dollars", player.Name, serverVehicle.Id, wheelType, wheelIndex, price);
VehicleMod typeMod = dbContext.VehicleMods.Where(m => m.ServerVehicleId == serverVehicle.Id && m.Slot == -2).FirstOrDefault();
if (typeMod == null)
{

View File

@@ -2,9 +2,11 @@
using System.Collections.Generic;
using System.Text;
using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Services;
@@ -12,6 +14,7 @@ namespace ReallifeGamemode.Server.Util
{
class Rentcar : Script
{
private static readonly ILogger logger = LogManager.GetLogger<Rentcar>();
//In Sekunden
public static int PAY_TIMER = 180;
@@ -49,18 +52,23 @@ namespace ReallifeGamemode.Server.Util
{
noobspawnVehicleProperties.Add(new RentcarProperty("bmx", 10));
noobspawnVehicleProperties.Add(new RentcarProperty("faggio3", 50));
noobspawnVehicleProperties.Add(new RentcarProperty("panto", 200));
stadthalleVehicleProperties.Add(new RentcarProperty("bmx", 10));
stadthalleVehicleProperties.Add(new RentcarProperty("faggio3", 50));
stadthalleVehicleProperties.Add(new RentcarProperty("panto", 200));
knastVehicleProperties.Add(new RentcarProperty("bmx", 10));
knastVehicleProperties.Add(new RentcarProperty("faggio3", 50));
knastVehicleProperties.Add(new RentcarProperty("panto", 200));
paletoVehicleProperties.Add(new RentcarProperty("bmx", 10));
paletoVehicleProperties.Add(new RentcarProperty("faggio3", 50));
paletoVehicleProperties.Add(new RentcarProperty("panto", 200));
lamesaVehicleProperties.Add(new RentcarProperty("bmx", 10));
lamesaVehicleProperties.Add(new RentcarProperty("faggio3", 50));
lamesaVehicleProperties.Add(new RentcarProperty("panto", 200));
}
public static void cancelRent(Player player)
@@ -69,6 +77,7 @@ namespace ReallifeGamemode.Server.Util
{
User user = player.GetUser(dbContext);
user.BankAccount.Balance -= mapPlayerRentcarBill[player.Name].Item2;
logger.LogInformation("Player {0} cancelled a rent and payed {1} dollars", player.Name, mapPlayerRentcarBill[player.Name].Item2);
dbContext.SaveChanges();
}

View File

@@ -20,9 +20,15 @@ namespace ReallifeGamemode.Server.WeaponDeal
public static readonly VehicleHash WEAPON_DEAL_GANG_VEHICLE_HASH = VehicleHash.Gburrito2;
public static readonly VehicleHash WEAPON_DEAL_STAATSFRAK_VEHICLE_HASH = VehicleHash.Policet;
private const int WEAPON_AMOUNT_GANG = 2;
private const int WEAPON_AMOUNT_COP = 4;
private const int WEAPON_AMOUNT_COP_STUNGUN = 4;
private const int WEAPON_AMOUNT_GANG = 1;
private const int WEAPON_AMOUNT_GANG_PISTOL50 = 3;
private const int WEAPON_AMOUNT_GANG_ARMOR = 2;
private const int WEAPON_AMOUNT_COP = 3;
private const int WEAPON_AMOUNT_COP_ARMOR = 4;
private const int WEAPON_AMOUNT_COP_PISTOLS = 5;
private const int WEAPON_AMOUNT_COP_SNIPER = 1;
public static bool checkWeaponDbyVehicle(Vehicle vehicle)
{
if ((vehicle.HasData("WeaponDealLoad") && vehicle.GetData<bool>("WeaponDealLoad") == true) ||
@@ -43,7 +49,7 @@ namespace ReallifeGamemode.Server.WeaponDeal
return;
}
using (var context = new DatabaseContext(true))
using (var context = new DatabaseContext())
{
FactionVehicle factionVehicle = context.FactionVehicles.Where(f => f.Model == WEAPON_DEAL_GANG_VEHICLE_HASH || f.Model == WEAPON_DEAL_STAATSFRAK_VEHICLE_HASH)
.ToList()
@@ -129,11 +135,27 @@ namespace ReallifeGamemode.Server.WeaponDeal
InventoryManager.RemoveAllItemsfromVehicleInventory(fVeh);
Faction fac = context.Factions.Where(f => f.Id == user.FactionId).FirstOrDefault();
fac.WeaponDealTime = (fac.Id == 1 | fac.Id == 3) ? 180 : 60;
if (WEAPON_DEAL_STAATSFRAK_IDS.Contains(fac.Id))
{
fac.WeaponDealTime = 180;
}
else
{
fac.WeaponDealTime = 60;
}
context.SaveChanges();
}
}
/*
public static void WeaponDealTimer()
{
System.Timers.Timer timer = new System.Timers.Timer(60000);
timer.Start();
timer.Elapsed += Timer_Elapsed;
}
*/
public static void Timer_Elapsed()
{
using (var context = new DatabaseContext())
@@ -191,11 +213,11 @@ namespace ReallifeGamemode.Server.WeaponDeal
if (owners.Any(o => WEAPON_DEAL_GANG_IDS.Contains(o))) // Gang WT
{
VehicleItem item = new VehicleItem() { ItemId = 2, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_GANG * oMembers }; //pistol50
VehicleItem item = new VehicleItem() { ItemId = 2, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_GANG_PISTOL50 * oMembers }; //pistol50
InventoryManager.AddItemToVehicleInventory(fVeh, item.ItemId, item.Amount);
VehicleItem item3 = new VehicleItem() { ItemId = 9, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_GANG * oMembers }; //PumpShotgun
InventoryManager.AddItemToVehicleInventory(fVeh, item3.ItemId, item3.Amount);
VehicleItem item2 = new VehicleItem() { ItemId = 10, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_GANG * oMembers }; //Schutzweste
VehicleItem item2 = new VehicleItem() { ItemId = 10, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_GANG_ARMOR * oMembers }; //Schutzweste
InventoryManager.AddItemToVehicleInventory(fVeh, item2.ItemId, item2.Amount);
VehicleItem item4 = new VehicleItem() { ItemId = 7, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_GANG * oMembers }; //CompactRifle
InventoryManager.AddItemToVehicleInventory(fVeh, item4.ItemId, item4.Amount);
@@ -204,34 +226,34 @@ namespace ReallifeGamemode.Server.WeaponDeal
}
else if (owners.Contains(1)) // LSPD
{
VehicleItem item = new VehicleItem() { ItemId = 1, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //pistol
VehicleItem item = new VehicleItem() { ItemId = 1, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP_PISTOLS * oMembers }; //pistol
InventoryManager.AddItemToVehicleInventory(fVeh, item.ItemId, item.Amount);
VehicleItem item2 = new VehicleItem() { ItemId = 2, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //Pistol50
VehicleItem item2 = new VehicleItem() { ItemId = 2, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP_PISTOLS * oMembers }; //Pistol50
InventoryManager.AddItemToVehicleInventory(fVeh, item2.ItemId, item2.Amount);
VehicleItem item3 = new VehicleItem() { ItemId = 5, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //SMG
InventoryManager.AddItemToVehicleInventory(fVeh, item3.ItemId, item3.Amount);
VehicleItem item4 = new VehicleItem() { ItemId = 9, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //PumpShotgun
InventoryManager.AddItemToVehicleInventory(fVeh, item4.ItemId, item4.Amount);
VehicleItem item5 = new VehicleItem() { ItemId = 10, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //Schutzweste
VehicleItem item5 = new VehicleItem() { ItemId = 10, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP_ARMOR * oMembers }; //Schutzweste
InventoryManager.AddItemToVehicleInventory(fVeh, item5.ItemId, item5.Amount);
VehicleItem item6 = new VehicleItem() { ItemId = 11, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP_STUNGUN * oMembers }; //Stungun
VehicleItem item6 = new VehicleItem() { ItemId = 11, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //Stungun
InventoryManager.AddItemToVehicleInventory(fVeh, item6.ItemId, item6.Amount);
VehicleItem item7 = new VehicleItem() { ItemId = 14, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP_STUNGUN * oMembers }; // AssaultSmg
VehicleItem item7 = new VehicleItem() { ItemId = 14, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; // AssaultSmg
InventoryManager.AddItemToVehicleInventory(fVeh, item7.ItemId, item7.Amount);
}
else if (owners.Contains(3)) // FIB
{
VehicleItem item = new VehicleItem() { ItemId = 3, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //pistol_mk2
VehicleItem item = new VehicleItem() { ItemId = 3, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP_PISTOLS * oMembers }; //pistol_mk2
InventoryManager.AddItemToVehicleInventory(fVeh, item.ItemId, item.Amount);
VehicleItem item2 = new VehicleItem() { ItemId = 4, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //Combatpistol
VehicleItem item2 = new VehicleItem() { ItemId = 4, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP_PISTOLS * oMembers }; //Combatpistol
InventoryManager.AddItemToVehicleInventory(fVeh, item2.ItemId, item2.Amount);
VehicleItem item3 = new VehicleItem() { ItemId = 6, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //Carbinrifle
InventoryManager.AddItemToVehicleInventory(fVeh, item3.ItemId, item3.Amount);
VehicleItem item4 = new VehicleItem() { ItemId = 8, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //Sniperrifle
VehicleItem item4 = new VehicleItem() { ItemId = 8, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP_SNIPER * oMembers }; //Sniperrifle
InventoryManager.AddItemToVehicleInventory(fVeh, item4.ItemId, item4.Amount);
VehicleItem item5 = new VehicleItem() { ItemId = 10, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //Schutzweste
VehicleItem item5 = new VehicleItem() { ItemId = 10, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP_ARMOR * oMembers }; //Schutzweste
InventoryManager.AddItemToVehicleInventory(fVeh, item5.ItemId, item5.Amount);
VehicleItem item6 = new VehicleItem() { ItemId = 11, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP_STUNGUN * oMembers }; //Stungun
VehicleItem item6 = new VehicleItem() { ItemId = 11, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //Stungun
InventoryManager.AddItemToVehicleInventory(fVeh, item6.ItemId, item6.Amount);
VehicleItem item7 = new VehicleItem() { ItemId = 12, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //CombatPDW
InventoryManager.AddItemToVehicleInventory(fVeh, item7.ItemId, item7.Amount);