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 muellbaseVector3 = new mp.Vector3(529.06635, -2088.4097, 8.303088);
const krankenhausVector1 = new mp.Vector3(-508.50705, -351.24368, 34); 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 krankenhausVector2 = new mp.Vector3(-442.62323, -356.99185, 33);
const krankenhausVector3 = new mp.Vector3(-448.9346, -297.23972, 33.68); const krankenhausVector3 = new mp.Vector3(-448.9346, -297.23972, 33.68);
const krankenhausVector4 = new mp.Vector3(-504.952, -315.21698, 35.04881); 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: 8, Name: "Extra 1", Price: 2000 },
{ Slot: 9, Name: "Extra 2", Price: 2000 }, { Slot: 9, Name: "Extra 2", Price: 2000 },
{ Slot: 10, Name: "Dach", Price: 1500 }, { Slot: 10, Name: "Dach", Price: 1500 },
{ Slot: 11, Name: "Motor", BasePercentage: 20, PriceIncreasePerLevel: 7.5 }, { Slot: 11, Name: "Motor", BasePercentage: 6.25, PriceIncreasePerLevel: 6.25 },
{ Slot: 12, Name: "Bremsen", BasePercentage: 5, PriceIncreasePerLevel: 2.5 }, { Slot: 12, Name: "Bremsen", BasePercentage: 2.5, PriceIncreasePerLevel: 2.5 },
{ Slot: 13, Name: "Getriebe", BasePercentage: 10, PriceIncreasePerLevel: 2.5 }, { Slot: 13, Name: "Getriebe", BasePercentage: 3.75, PriceIncreasePerLevel: 3.75 },
{ Slot: 14, Name: "Hupe", Price: 500 }, { Slot: 14, Name: "Hupe", Price: 500 },
{ Slot: 15, Name: "Federung", Price: 2000 }, { 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: 22, Name: "Licht", Price: 500 },
{ Slot: -2, Name: "Reifen", Price: 2500 }, { Slot: -2, Name: "Reifen", Price: 2500 },
{ Slot: -1, Name: "Lackierung", Price: 1000 }, { Slot: -1, Name: "Lackierung", Price: 1000 },

View File

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

View File

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

View File

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

View File

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

View File

@@ -6,12 +6,13 @@ using ReallifeGamemode.Server.Types;
using ReallifeGamemode.Server.Core.Extensions; using ReallifeGamemode.Server.Core.Extensions;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.Linq; using System.Linq;
using Microsoft.Extensions.Logging;
namespace ReallifeGamemode.Server.Core.Menus namespace ReallifeGamemode.Server.Core.Menus
{ {
internal class PoliceDepartment : Script internal class PoliceDepartment : Script
{ {
private const int WEAPONLICENSE_PRICE = 5000;
public PoliceDepartment() public PoliceDepartment()
{ {
@@ -40,13 +41,15 @@ namespace ReallifeGamemode.Server.Core.Menus
var account = user.BankAccount; 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); player.SendMessage("Du hast nicht genug Geld auf der Bank (5.000$)!", ChatPrefix.Error);
return; 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); player.SendMessage("Du hast den Waffenschein erfolgreich erworben.", ChatPrefix.Info);

View File

@@ -4,18 +4,20 @@
* @copyright (c) 2008 - 2021 Life of German * @copyright (c) 2008 - 2021 Life of German
*/ */
using GTANetworkAPI; using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json; using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Finance; using ReallifeGamemode.Server.Finance;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Services; using ReallifeGamemode.Services;
using System; using System;
namespace ReallifeGamemode.Server.Bank namespace ReallifeGamemode.Server.Bank
{ {
class bank : Script class Bank : Script
{ {
private static TextLabel informationLabel; private static TextLabel informationLabel;
private static TextLabel factionInformationLabel; private static TextLabel factionInformationLabel;
@@ -25,6 +27,7 @@ namespace ReallifeGamemode.Server.Bank
private static ColShape _factioncolShape; private static ColShape _factioncolShape;
public static Vector3 Position { get; } public static Vector3 Position { get; }
private static readonly ILogger logger = LogManager.GetLogger<Bank>();
public static void Setup() public static void Setup()
{ {
@@ -92,6 +95,7 @@ namespace ReallifeGamemode.Server.Bank
} }
else 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.SendNotification($"~w~Du hast $~g~{amount} ~w~eingezahlt.");
player.GetUser(dbContext).Handmoney -= amount; player.GetUser(dbContext).Handmoney -= amount;
player.GetUser(dbContext).BankAccount.Balance += amount; player.GetUser(dbContext).BankAccount.Balance += amount;
@@ -115,6 +119,7 @@ namespace ReallifeGamemode.Server.Bank
} }
else 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.SendNotification($"~w~Du hast $~g~{amount} ~w~abgehoben.");
player.GetUser(dbContext).Handmoney += amount; player.GetUser(dbContext).Handmoney += amount;
player.GetUser(dbContext).BankAccount.Balance -= amount; player.GetUser(dbContext).BankAccount.Balance -= amount;
@@ -130,34 +135,40 @@ namespace ReallifeGamemode.Server.Bank
int amount = Int32.Parse(stringAmount); int amount = Int32.Parse(stringAmount);
Player target = PlayerService.GetPlayerByNameOrId(nameOrId); Player target = PlayerService.GetPlayerByNameOrId(nameOrId);
if (!target.IsLoggedIn())
{
player.SendNotification($"~r~Dieser Spieler ist nicht Online.");
return;
}
using (var dbContext = new DatabaseContext()) 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"); player.SendNotification("~r~Du kannst Geld erst ab 3 Spielstunden vergeben");
return; 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."); player.SendNotification($"~r~Du kannst dir selber kein Geld überweisen.");
return; return;
} }
else if (!target.IsLoggedIn()) else if (amount <= 0 || (int)(amount * 1.05) > user.BankAccount.Balance)
{
player.SendNotification($"~r~Dieser Spieler ist nicht Online.");
}
else if (amount <= 0 || (int)(amount * 1.05) > player.GetUser(dbContext).BankAccount.Balance)
{ {
player.SendNotification($"~r~Dieser Betrag kann nicht überwiesen werden."); player.SendNotification($"~r~Dieser Betrag kann nicht überwiesen werden.");
return; return;
} }
else 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."); player.SendNotification($"~w~Du hast {target.Name} $~g~{amount} ~w~Überwiesen.");
target.SendNotification($"~w~{player.Name} hat dir $~g~{amount} ~w~Überwiesen."); target.SendNotification($"~w~{player.Name} hat dir $~g~{amount} ~w~Überwiesen.");
player.GetUser(dbContext).BankAccount.Balance -= (int)(amount * 1.05); user.BankAccount.Balance -= (int)(amount * 1.05);
target.GetUser(dbContext).otheramount += amount; targetUser.otheramount += amount;
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
} }
@@ -170,17 +181,23 @@ namespace ReallifeGamemode.Server.Bank
using (var dbContext = new DatabaseContext()) 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."); player.SendNotification($"~r~Dieser Betrag ist ungültig.");
return; return;
} }
else 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.SendNotification($"~w~Du hast $~g~{amount}~w~ in die Fraktionskasse eingezahlt.");
player.GetUser(dbContext).BankAccount.Balance -= amount; user.BankAccount.Balance -= amount;
player.GetUser(dbContext).Faction.BankAccount.Balance += amount; user.Faction.BankAccount.Balance += amount;
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
} }
@@ -193,23 +210,28 @@ namespace ReallifeGamemode.Server.Bank
int amount = Int32.Parse(stringAmount); int amount = Int32.Parse(stringAmount);
Player target = PlayerService.GetPlayerByNameOrId(nameOrId); Player target = PlayerService.GetPlayerByNameOrId(nameOrId);
using (var dbContext = new DatabaseContext())
{
if (!target.IsLoggedIn()) if (!target.IsLoggedIn())
{ {
player.SendNotification($"~r~Dieser Spieler ist nicht Online."); 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."); player.SendNotification($"~r~Dieser Betrag kann nicht überwiesen werden.");
return; return;
} }
else else
{ {
player.SendNotification($"~w~Du hast {target.Name} $~g~{amount} ~w~Überwiesen."); logger.LogInformation("Player {0} did a faction transfer of {1} dollars from faction {2} to {3}", user.Name, amount, user.Faction.Id, target);
player.GetUser(dbContext).Faction.BankAccount.Balance -= (int)(amount * 1.05); player.SendNotification($"Du hast ~g~{amount.ToMoneyString()}~s~ an ~y~{targetUser.Name}~s~ überwiesen");
target.GetUser(dbContext).otheramount += amount; 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(); 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 #endregion Support
#region Admin #region Admin
@@ -567,7 +548,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("remspawnschutz", "~m~Benutzung: ~s~/rmss [Target]", Alias = "rmss")] [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) if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{ {
@@ -620,7 +601,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("ac", "~m~Benutzung: ~s~/ac [Nachricht]", GreedyArg = true)] [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) 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]")] [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) 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)] [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(); User user = player.GetUser();
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) 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]")] [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) if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{ {
@@ -1766,7 +1645,7 @@ namespace ReallifeGamemode.Server.Commands
public void CmdAdminUnshow(Player player) public void CmdAdminUnshow(Player player)
{ {
User user = player.GetUser(); User user = player.GetUser();
if (!user.IsAdmin(AdminLevel.HEADADMIN)) if (!user.IsAdmin(AdminLevel.ADMIN))
{ {
ChatService.NotAuthorized(player); ChatService.NotAuthorized(player);
return; return;
@@ -1834,7 +1713,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("setsvar", "~m~Benutzung:~s~ /setsvar [ID] [WERT]")] [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) if (!player.GetUser()?.IsAdmin(AdminLevel.PROJEKTLEITUNG) ?? true)
{ {
@@ -1845,7 +1724,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("createturf", "~m~Benutzung:~s~ /createturf [radius]")] [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) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -1867,7 +1746,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("cancleturf", "~m~Benutzung:~s~ /cancleturf")] [Command("cancleturf", "~m~Benutzung:~s~ /cancleturf")]
public void CmdAdmCancleTurf(Player player) public void CmdAdminCancleTurf(Player player)
{ {
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -1878,7 +1757,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("reloadturfs", "~m~Benutzung:~s~ /ReloadTurfs")] [Command("reloadturfs", "~m~Benutzung:~s~ /ReloadTurfs")]
public void CmdAdmReloadTurf(Player player) public void CmdAdminReloadTurf(Player player)
{ {
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -1890,7 +1769,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("deleteturf", "~m~Benutzung:~s~ /DeleteTurfs")] [Command("deleteturf", "~m~Benutzung:~s~ /DeleteTurfs")]
public void CmdAdmDeleteTurf(Player player) public void CmdAdminDeleteTurf(Player player)
{ {
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -1901,7 +1780,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("setturfpoint", "~m~Benutzung:~s~ /setturfpoint")] [Command("setturfpoint", "~m~Benutzung:~s~ /setturfpoint")]
public void CmdAdmSetTurfPoint(Player player) public void CmdAdminSetTurfPoint(Player player)
{ {
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true) 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.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]")] [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]")] [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) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -2174,7 +2053,7 @@ namespace ReallifeGamemode.Server.Commands
[Command("showtuningmenu", "~m~Benutzung: ~s~/showtuningmenu", Alias = "stm")] [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) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -2244,14 +2123,14 @@ namespace ReallifeGamemode.Server.Commands
[Command("wepmod", "~m~Benutzung: ~s~/wepmod [Variable]")] [Command("wepmod", "~m~Benutzung: ~s~/wepmod [Variable]")]
public void CmdWeaponModifier(Player player, float modifier) public void CmdWeaponModifier(Player player, float modifier)
{ {
player.SendChatMessage("Modifier steht auf" + modifier); player.SendChatMessage("Modifier steht auf " + modifier);
player.TriggerEvent("SERVER:WeaponModifier2", player, modifier, 1); player.TriggerEvent("SERVER:WeaponModifier2", player, modifier, 1);
} }
[Command("wepmmod", "~m~Benutzung: ~s~/wepmmod [Variable]")] [Command("wepmmod", "~m~Benutzung: ~s~/wepmmod [Variable]")]
public void CmdWeaponMeeleModifier(Player player, float modifier) public void CmdWeaponMeeleModifier(Player player, float modifier)
{ {
player.SendChatMessage("MeeleModifier steht auf" + modifier); player.SendChatMessage("MeeleModifier steht auf " + modifier);
player.TriggerEvent("SERVER:WeaponModifier2", player, 1, modifier); player.TriggerEvent("SERVER:WeaponModifier2", player, 1, modifier);
} }
@@ -2269,7 +2148,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("sethandmoney", "~m~Benutzung: ~s~/sethandmoney [Name/ID] [Menge]")] [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) if (!admin.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -2287,6 +2166,7 @@ namespace ReallifeGamemode.Server.Commands
{ {
var user = target.GetUser(context); var user = target.GetUser(context);
user.Handmoney = amount; user.Handmoney = amount;
logger.LogInformation("Admin {0} set the handmoney of player {1} to {2} dollars", admin.Name, target.Name, amount);
context.SaveChanges(); context.SaveChanges();
//target.TriggerEvent("SERVER:SET_HANDMONEY", amount); //target.TriggerEvent("SERVER:SET_HANDMONEY", amount);
} }
@@ -2295,7 +2175,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("givehandmoney", "~m~Benutzung: ~s~/givehandmoney [Name/ID] [Menge]")] [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) if (!admin.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -2313,6 +2193,7 @@ namespace ReallifeGamemode.Server.Commands
{ {
var user = target.GetUser(context); var user = target.GetUser(context);
user.Handmoney += amount; user.Handmoney += amount;
logger.LogInformation("Admin {0} added {2} dollarsto the handmoney of player {1}", admin.Name, target.Name, amount);
context.SaveChanges(); context.SaveChanges();
//target.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney); //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")] [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) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -2371,7 +2252,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("setshopitem", "~m~Benutzung: ~s~/setshopitem [Item ID]")] [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) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -2417,7 +2298,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("rmshopitem", "~m~Benutzung: ~s~/rmshopitem [Item ID]")] [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) 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")] [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) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -3340,7 +3221,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("setmoney", "~m~Benutzung: ~s~/setmoney [Name] [Menge]")] [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) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -3356,6 +3237,7 @@ namespace ReallifeGamemode.Server.Commands
using (var dbContext = new DatabaseContext()) 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; target.GetUser(dbContext).BankAccount.Balance = amount;
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
@@ -3364,7 +3246,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("givemoney", "~m~Benutzung: ~s~/givemoney [Name] [Menge]")] [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) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -3381,6 +3263,7 @@ namespace ReallifeGamemode.Server.Commands
using (var dbContext = new DatabaseContext()) 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; target.GetUser(dbContext).BankAccount.Balance += amount;
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
@@ -3389,7 +3272,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("setbusinessowner", "~m~Benutzung: ~s~/setbusinessowner [Name] [Business ID]")] [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) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -3470,7 +3353,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("setbusinessbankbalance", "~m~Benutzung: ~s~/setbusinessbankbalance [Business ID] [Menge]")] [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) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -4002,7 +3885,7 @@ namespace ReallifeGamemode.Server.Commands
} }
[Command("blind", "~m~Benutzung: ~s~/blind [Spieler] [Mode]")] [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; if (!player.IsLoggedIn()) return;
@@ -4073,7 +3956,7 @@ namespace ReallifeGamemode.Server.Commands
[RemoteEvent("Noclip")] [RemoteEvent("Noclip")]
public void Noclip(Player player) public void Noclip(Player player)
{ {
if (!player.GetUser().IsAdmin(AdminLevel.HEADADMIN)) if (!player.GetUser().IsAdmin(AdminLevel.ADMIN))
{ {
return; return;
} }

View File

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

View File

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

View File

@@ -6,17 +6,24 @@ using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Util; using ReallifeGamemode.Server.Util;
using System; using System;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Server.Log;
namespace ReallifeGamemode.Server.DrivingSchool namespace ReallifeGamemode.Server.DrivingSchool
{ {
internal class DrivingSchool : Script internal class DrivingSchool : Script
{ {
private static readonly ILogger logger = LogManager.GetLogger<DrivingSchool>();
private static TextLabel informationLabel; private static TextLabel informationLabel;
private static Marker marker; private static Marker marker;
private static ColShape _colShape; private static ColShape _colShape;
public static Vector3 Position { get; } public static Vector3 Position { get; }
private const int FAILPOINTS = 2; 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> private readonly IReadOnlyCollection<Vector3> BikeRoute = new List<Vector3>
{ {
new Vector3(-741.98, -1283.46, 6.17), new Vector3(-741.98, -1283.46, 6.17),
@@ -129,7 +136,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
return; 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); client.SendNotification("~r~[FEHLER]~s~ Du hast nicht genug Geld auf der Hand($2.500)!", true);
return; return;
@@ -138,7 +145,8 @@ namespace ReallifeGamemode.Server.DrivingSchool
using (var dbContext = new DatabaseContext()) using (var dbContext = new DatabaseContext())
{ {
User payer = client.GetUser(dbContext); 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); // client.TriggerEvent("SERVER:SET_HANDMONEY", payer.Handmoney);
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
@@ -232,7 +240,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
} }
} }
*/ */
switch(checkpoint) switch (checkpoint)
{ {
case 25: case 25:
case 26: case 26:
@@ -275,7 +283,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
client.SendChatMessage("~b~[INFO]~s~ Du besitzt schon einen Motorradschein."); client.SendChatMessage("~b~[INFO]~s~ Du besitzt schon einen Motorradschein.");
return; 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); client.SendNotification("~r~[FEHLER]~s~Du hast nicht genug Geld auf der Hand($3.500)!", true);
return; return;
@@ -284,7 +292,8 @@ namespace ReallifeGamemode.Server.DrivingSchool
using (var dbContext = new DatabaseContext()) using (var dbContext = new DatabaseContext())
{ {
User payer = client.GetUser(dbContext); 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); // client.TriggerEvent("SERVER:SET_HANDMONEY", payer.Handmoney);
dbContext.SaveChanges(); dbContext.SaveChanges();
} }

View File

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

View File

@@ -3,6 +3,7 @@ using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using GTANetworkAPI; using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json; using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
@@ -19,6 +20,7 @@ using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Types;
using ReallifeGamemode.Server.Util; using ReallifeGamemode.Server.Util;
using ReallifeGamemode.Server.WeaponDeal; using ReallifeGamemode.Server.WeaponDeal;
using ReallifeGamemode.Server.Log;
/** /**
* @overview Life of German Reallife - Event Key (Key.cs) * @overview Life of German Reallife - Event Key (Key.cs)
@@ -30,6 +32,8 @@ namespace ReallifeGamemode.Server.Events
{ {
public class Key : Script public class Key : Script
{ {
private static readonly ILogger logger = LogManager.GetLogger<Key>();
#region User Key #region User Key
[RemoteEvent("keyPress:NUM2")] [RemoteEvent("keyPress:NUM2")]
@@ -171,7 +175,7 @@ namespace ReallifeGamemode.Server.Events
isActive = JobBase.GetPlayerInJob().Contains(player), 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, username = m.Name,
factionRank = m.FactionRank.Order, factionRank = m.FactionRank.Order,
@@ -293,6 +297,8 @@ namespace ReallifeGamemode.Server.Events
dbContext.VehicleItems.Remove(v); 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); InventoryManager.AddItemToInventory(player, v.ItemId, itemToAdd);
nearestBehindVehiclePoint.usePoint(player); nearestBehindVehiclePoint.usePoint(player);
dbContext.SaveChanges(); dbContext.SaveChanges();
@@ -392,6 +398,8 @@ namespace ReallifeGamemode.Server.Events
continue; 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; weapon.Ammount += item.Amount;
ChatService.SendMessage(player, $"~y~[WT] ~s~Du hast eine ~y~Kiste abgeladen ~s~(Inhalt: {item.Amount}x {iItem.Name})."); ChatService.SendMessage(player, $"~y~[WT] ~s~Du hast eine ~y~Kiste abgeladen ~s~(Inhalt: {item.Amount}x {iItem.Name}).");
unloadedWeaponPackage = true; 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 (CharacterCreator.surgeryPoint.DistanceTo(player.Position) <= 1.5)
//{ //{
// if (user.GetData<bool>("duty")) // if (user.GetData<bool>("duty"))
@@ -963,7 +1008,7 @@ namespace ReallifeGamemode.Server.Events
} }
[RemoteEvent("keyPress:Z")] [RemoteEvent("keyPress:Z")]
public void KeyPressX(Player player) public void KeyPressZ(Player player)
{ {
if (!player.IsLoggedIn() || player.GetData<bool>("isDead")) return; if (!player.IsLoggedIn() || player.GetData<bool>("isDead")) return;

View File

@@ -6,11 +6,15 @@ using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;
using System; using System;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Server.Log;
namespace ReallifeGamemode.Server.Events namespace ReallifeGamemode.Server.Events
{ {
public class UpdateCharacterCloth : Script public class UpdateCharacterCloth : Script
{ {
private static readonly ILogger logger = LogManager.GetLogger<UpdateCharacterCloth>();
[RemoteEvent("updateDutyProp")] [RemoteEvent("updateDutyProp")]
public void UpdateDutyProp(Player player, int componentId, int componentVariation) 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); User payer = client.GetUser(dbContext);
payer.GetCharacter(dbContext); payer.GetCharacter(dbContext);
payer.Character.Hair = Convert.ToByte(data[2]); payer.Character.Hair = Convert.ToByte(data[2]);
@@ -288,6 +293,7 @@ namespace ReallifeGamemode.Server.Events
} }
client.GetUser(dbContext).Handmoney -= data[6]; 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(); dbContext.SaveChanges();
//client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney); //client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney);
} }

View File

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

View File

@@ -130,7 +130,7 @@ namespace ReallifeGamemode.Server.Events
player.SendNotification("Du hast nicht genügend Geld bei dir"); player.SendNotification("Du hast nicht genügend Geld bei dir");
return; 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; user.Handmoney -= price;
dbContext.SaveChanges(); dbContext.SaveChanges();
player.GiveWeapon(NAPI.Util.WeaponNameToModel(weaponmodel), ammo); player.GiveWeapon(NAPI.Util.WeaponNameToModel(weaponmodel), ammo);

View File

@@ -3,10 +3,12 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using GTANetworkAPI; using GTANetworkAPI;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json; using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Admin; using ReallifeGamemode.Server.Admin;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Types;
@@ -22,6 +24,8 @@ namespace ReallifeGamemode.Server.Extensions
{ {
public static class PlayerExtension public static class PlayerExtension
{ {
private static ILogger Logger => LogManager.GetLogger(typeof(PlayerExtension));
/// <summary> /// <summary>
/// Gibt das User-Objekt eines Player's zurück. /// Gibt das User-Objekt eines Player's zurück.
/// Gibt nichts zurück, wenn der Player nicht eingeloggt ist /// Gibt nichts zurück, wenn der Player nicht eingeloggt ist
@@ -108,6 +112,8 @@ namespace ReallifeGamemode.Server.Extensions
faction.BankAccount.Balance += factionMoney; 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.Wanteds = 0;
user.JailTime = time; user.JailTime = time;
} }
@@ -216,12 +222,13 @@ namespace ReallifeGamemode.Server.Extensions
internal static void GiveWanteds(this User user, Player cop, int amount, string reason) 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"); 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()) using (var dbContext = new DatabaseContext())
{ {
User dbUser = dbContext.Users.Where(u => u.Id == user.Id).FirstOrDefault(); 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 Microsoft.EntityFrameworkCore;
using System; using System;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Server.Log;
/** /**
* @overview Life of German Reallife - Server Factions Medic Medic.cs * @overview Life of German Reallife - Server Factions Medic Medic.cs
@@ -20,6 +22,8 @@ namespace ReallifeGamemode.Server.Factions.Medic
{ {
public class Medic : Script public class Medic : Script
{ {
private static readonly ILogger logger = LogManager.GetLogger<Medic>();
public static List<MedicTask> ReviveTasks = new List<MedicTask>(); public static List<MedicTask> ReviveTasks = new List<MedicTask>();
public static List<MedicTask> HealTasks = new List<MedicTask>(); public static List<MedicTask> HealTasks = new List<MedicTask>();
public static List<MedicTask> FireTasks = new List<MedicTask>(); public static List<MedicTask> FireTasks = new List<MedicTask>();
@@ -84,7 +88,7 @@ namespace ReallifeGamemode.Server.Factions.Medic
public static void UpdateReviveSperre() public static void UpdateReviveSperre()
{ {
var allRevivedPlayers = NAPI.Pools.GetAllPlayers().Where(c => c.HasData("reviveSperre")); var allRevivedPlayers = NAPI.Pools.GetAllPlayers().Where(c => c.HasData("reviveSperre"));
foreach(var player in allRevivedPlayers) foreach (var player in allRevivedPlayers)
{ {
var timeLeft = player.GetData<int>("reviveSperre"); var timeLeft = player.GetData<int>("reviveSperre");
@@ -101,7 +105,7 @@ namespace ReallifeGamemode.Server.Factions.Medic
public static void CheckHealDecisionDistance() public static void CheckHealDecisionDistance()
{ {
foreach(var healAuftrag in HealDecisions.ToList()) foreach (var healAuftrag in HealDecisions.ToList())
{ {
if (healAuftrag.dMedic.Position.DistanceTo(healAuftrag.dTarget.Position) > 5) if (healAuftrag.dMedic.Position.DistanceTo(healAuftrag.dTarget.Position) > 5)
{ {
@@ -117,9 +121,9 @@ namespace ReallifeGamemode.Server.Factions.Medic
public static void MakeHealDecision(Player target, bool decision) public static void MakeHealDecision(Player target, bool decision)
{ {
var activeDecision = HealDecisions.FirstOrDefault(d => d.dTarget == target); var activeDecision = HealDecisions.FirstOrDefault(d => d.dTarget == target);
if(decision == false) if (decision == false)
{ {
activeDecision.dMedic.SendNotification(activeDecision.dTarget.Name + " hat den Heal ~r~abgelehnt",false); activeDecision.dMedic.SendNotification(activeDecision.dTarget.Name + " hat den Heal ~r~abgelehnt", false);
activeDecision.dTarget.SendNotification("Du hast den Heal ~r~abgelehnt", false); activeDecision.dTarget.SendNotification("Du hast den Heal ~r~abgelehnt", false);
} }
else else
@@ -141,6 +145,8 @@ namespace ReallifeGamemode.Server.Factions.Medic
targetUser.BankAccount.Balance -= bankMoney; 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; 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; activeDecision.dMedic.GetUser(dbContext).Wage += activeDecision.dPrice / 2;
@@ -166,7 +172,7 @@ namespace ReallifeGamemode.Server.Factions.Medic
var taskTimeLeft = Math.Abs((int)(((DateTimeOffset)actualTime).ToUnixTimeSeconds() - ((DateTimeOffset)task.Time).ToUnixTimeSeconds() - reviveTaskTime)); var taskTimeLeft = Math.Abs((int)(((DateTimeOffset)actualTime).ToUnixTimeSeconds() - ((DateTimeOffset)task.Time).ToUnixTimeSeconds() - reviveTaskTime));
task.TimeLeft = taskTimeLeft; task.TimeLeft = taskTimeLeft;
var medic = PlayerService.GetPlayerByNameOrId(task.MedicName); var medic = PlayerService.GetPlayerByNameOrId(task.MedicName);
if(medic != null) medic.TriggerEvent("setTaskTimeLeft", taskTimeLeft); if (medic != null) medic.TriggerEvent("setTaskTimeLeft", taskTimeLeft);
} }
} }
} }
@@ -176,14 +182,14 @@ namespace ReallifeGamemode.Server.Factions.Medic
{ {
if (HealTasks.Count != 0) if (HealTasks.Count != 0)
{ {
foreach(var task in HealTasks) foreach (var task in HealTasks)
{ {
if(task.MedicName != "none") if (task.MedicName != "none")
{ {
var medic = PlayerService.GetPlayerByNameOrId(task.MedicName); var medic = PlayerService.GetPlayerByNameOrId(task.MedicName);
var victim = PlayerService.GetPlayerByNameOrId(task.Victim); var victim = PlayerService.GetPlayerByNameOrId(task.Victim);
if(medic == null || victim == null) if (medic == null || victim == null)
{ {
continue; continue;
} }

View File

@@ -9,9 +9,11 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using GTANetworkAPI; using GTANetworkAPI;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Wanted; using ReallifeGamemode.Server.Wanted;
@@ -19,13 +21,15 @@ namespace ReallifeGamemode.Server.Finance
{ {
public class Economy 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 Dictionary<int, Paycheck> Paychecks { get; set; } = new Dictionary<int, Paycheck>();
public static (int, float, float) GetEconomyClass(Player client, int wage) public static (int, float, float) GetEconomyClass(Player client, int wage)
{ {
int bankAccount = client.GetUser().BankAccount.Balance; int bankAccount = client.GetUser().BankAccount.Balance;
float financialHelp = -(float)Math.Pow(1.0001, -(bankAccount + client.GetUser().Handmoney)) * -1000; 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) if (financialInterest >= 0.7)
financialInterest = 0.7f; 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.BankAccount.Balance += paycheck.Amount;
u.Wage = 0; u.Wage = 0;
u.otheramount = 0; u.otheramount = 0;
@@ -173,7 +186,7 @@ namespace ReallifeGamemode.Server.Finance
.Where(hR => hR.UserId == u.Id); .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); 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()) if (rentals.Any())
{ {
foreach (var rental in rentals) foreach (var rental in rentals)
@@ -181,6 +194,7 @@ namespace ReallifeGamemode.Server.Finance
if (rental?.House?.BankAccount != null) if (rental?.House?.BankAccount != null)
{ {
rental.House.BankAccount.Balance += (int)(rental.House.RentalFee * 0.7); 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 System.Timers;
using GTANetworkAPI; using GTANetworkAPI;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json; using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Services;
namespace ReallifeGamemode.Server.Gangwar namespace ReallifeGamemode.Server.Gangwar
{ {
public class Turf public class Turf
{ {
private static readonly ILogger logger = LogManager.GetLogger<Turf>();
public int TurfID { get; set; } public int TurfID { get; set; }
public string TurfName { get; set; } public string TurfName { get; set; }
public int Color { get; set; } public int Color { get; set; }
@@ -203,7 +207,7 @@ namespace ReallifeGamemode.Server.Gangwar
public void enter(Player client) public void enter(Player client)
{ {
User user = client.GetUser(); User user = client.GetUser();
if(user == null || user.FactionId == null) if (user == null || user.FactionId == null)
{ {
return; return;
} }
@@ -276,6 +280,7 @@ namespace ReallifeGamemode.Server.Gangwar
a.TriggerEvent("CLIENT:loose"); a.TriggerEvent("CLIENT:loose");
} }
ownerFaction.BankAccount.Balance += 15000; 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) else if (getOwner() != FactionName)
{ {
@@ -292,6 +297,7 @@ namespace ReallifeGamemode.Server.Gangwar
if (a != null) if (a != null)
a.TriggerEvent("CLIENT:win"); 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; this.Owner = FactionName;
attackerFaction.BankAccount.Balance += 10000; attackerFaction.BankAccount.Balance += 10000;
Turfs turf = dbContext.Turfs.Where(t => t.Id == getId()).FirstOrDefault(); 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 INTERMEDIATE = "Fortgeschrittener";
public const string PROFESSIONAL = "Profi"; public const string PROFESSIONAL = "Profi";
public const int WAGE_BEGINNER = 350; public const int WAGE_BEGINNER = 600;
public const int WAGE_INTERMEDIATE = 950; public const int WAGE_INTERMEDIATE = 1300;
public const uint VEHICLE_BEGINNER = (uint)VehicleHash.Cuban800; public const uint VEHICLE_BEGINNER = (uint)VehicleHash.Cuban800;
public const uint VEHICLE_INTERMEDIATE = (uint)VehicleHash.Velum2; public const uint VEHICLE_INTERMEDIATE = (uint)VehicleHash.Velum2;
@@ -152,6 +152,8 @@ namespace ReallifeGamemode.Server.Job
private void _JobStop(Player player) private void _JobStop(Player player)
{ {
player.TriggerEvent("SERVER:Vehicle:SetDefaultEngineBehavior");
if (!playerVehiclePair.ContainsKey(player)) if (!playerVehiclePair.ContainsKey(player))
return; return;

View File

@@ -142,7 +142,7 @@ namespace ReallifeGamemode.Server
DrivingSchool.DrivingSchool.Setup(); DrivingSchool.DrivingSchool.Setup();
PlaneSchool.Setup(); PlaneSchool.Setup();
Gangwar.Gangwar.loadTurfs(); Gangwar.Gangwar.loadTurfs();
Bank.bank.Setup(); Bank.Bank.Setup();
Introduction.Setup(); Introduction.Setup();
PositionManager.LoadPositionManager(); PositionManager.LoadPositionManager();
LoadManager.LoadLoadManager(); LoadManager.LoadLoadManager();
@@ -182,7 +182,7 @@ namespace ReallifeGamemode.Server
} }
Player player = PlayerService.GetPlayerByNameOrId(user); Player player = PlayerService.GetPlayerByNameOrId(user);
if(player == null) if (player == null)
{ {
return; return;
} }

View File

@@ -2,9 +2,11 @@
using System.Linq; using System.Linq;
using System.Numerics; using System.Numerics;
using GTANetworkAPI; using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
/** /**
* @overview Life of German Reallife - Managers ATMManager (ATMManager.cs) * @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>(); public static List<ColShape> ATMColShapes = new List<ColShape>();
private static readonly ILogger logger = LogManager.GetLogger<ATMManager>();
public static void InitATMs() public static void InitATMs()
{ {
var addedATMs = 0; var addedATMs = 0;
@@ -112,7 +116,7 @@ namespace ReallifeGamemode.Server.Managers
//client.TriggerEvent("SERVER:WORLD_INTERACTION:ATM_ERROR", 0, checkATM.Balance); //client.TriggerEvent("SERVER:WORLD_INTERACTION:ATM_ERROR", 0, checkATM.Balance);
client.SendNotification("~r~Nicht genügend Geld auf der Hand!"); client.SendNotification("~r~Nicht genügend Geld auf der Hand!");
} }
else if(inputField1 < 0) else if (inputField1 < 0)
{ {
client.SendNotification("~r~Ungültiger Betrag!"); client.SendNotification("~r~Ungültiger Betrag!");
} }
@@ -121,6 +125,7 @@ namespace ReallifeGamemode.Server.Managers
var updateBankMoneyIn = user.BankAccount; var updateBankMoneyIn = user.BankAccount;
var updateATMBalanceIn = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); var updateATMBalanceIn = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM);
user.Handmoney -= inputField1; user.Handmoney -= inputField1;
logger.LogInformation("Player {0} did a deposit of {1} dollars at atm {2}", client.Name, inputField1, nearATM);
updateBankMoneyIn.Balance += inputField1; updateBankMoneyIn.Balance += inputField1;
updateATMBalanceIn.Balance += inputField1; updateATMBalanceIn.Balance += inputField1;
//client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney); //client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney);
@@ -149,6 +154,7 @@ namespace ReallifeGamemode.Server.Managers
var updateATMBalanceOut = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); var updateATMBalanceOut = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM);
updateHandMoneyOut.Handmoney += inputField1; updateHandMoneyOut.Handmoney += inputField1;
user.BankAccount.Balance -= 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; updateATMBalanceOut.Balance -= inputField1;
//client.TriggerEvent("SERVER:SET_HANDMONEY", updateHandMoneyOut.Handmoney); //client.TriggerEvent("SERVER:SET_HANDMONEY", updateHandMoneyOut.Handmoney);
} }

View File

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

View File

@@ -1,9 +1,11 @@
using System.Linq; using System.Linq;
using GTANetworkAPI; using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json; using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Types;
@@ -11,8 +13,11 @@ namespace ReallifeGamemode.Server.Managers
{ {
internal class CityHallManager : Script 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 Vector3 _cityHallPosition = new Vector3(273.22, -278.14, 53.9);
private static readonly ILogger logger = LogManager.GetLogger<CityHallManager>();
public static void LoadCityHall() 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)); 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.Group = group;
u.GroupRank = GroupRank.OWNER; 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"); ChatService.ErrorMessage(player, "Du hast nicht genug Geld");
return; 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(); dbContext.SaveChanges();
ChatService.BroadcastGroup($"Die Gruppe \"{name}\" wurde erfolgreich erstellt.", group); ChatService.BroadcastGroup($"Die Gruppe \"{name}\" wurde erfolgreich erstellt.", group);

View File

@@ -16,6 +16,8 @@ using ReallifeGamemode.Server.Events;
using System; using System;
using ReallifeGamemode.Server.Core.API; using ReallifeGamemode.Server.Core.API;
using ReallifeGamemode.Server.Factions.Medic; using ReallifeGamemode.Server.Factions.Medic;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Server.Log;
/** /**
* @overview Life of German Reallife - Managers Interaction (InteractionManager.cs) * @overview Life of German Reallife - Managers Interaction (InteractionManager.cs)
@@ -27,6 +29,8 @@ namespace ReallifeGamemode.Server.Managers
{ {
public class InteractionManager : Script public class InteractionManager : Script
{ {
private static readonly ILogger logger = LogManager.GetLogger<InteractionManager>();
#region Eigeninteraktionen Taste-M #region Eigeninteraktionen Taste-M
[RemoteEvent("CLIENT:InteractionMenu_AcceptInvite")] [RemoteEvent("CLIENT:InteractionMenu_AcceptInvite")]
@@ -51,7 +55,7 @@ namespace ReallifeGamemode.Server.Managers
return; return;
} }
using (var dbContext = new DatabaseContext(true)) using (var dbContext = new DatabaseContext())
{ {
User u = leader.GetUser(dbContext); User u = leader.GetUser(dbContext);
User own = player.GetUser(dbContext); User own = player.GetUser(dbContext);
@@ -485,7 +489,7 @@ namespace ReallifeGamemode.Server.Managers
var user = player.GetUser(dbContext); var user = player.GetUser(dbContext);
ServerVehicle serverVehicle = dbContext.ServerVehicles.FirstOrDefault(v => v.Id == id); ServerVehicle serverVehicle = dbContext.ServerVehicles.FirstOrDefault(v => v.Id == id);
if(serverVehicle is UserVehicle) if (serverVehicle is UserVehicle)
{ {
UserVehicle userVehicle = dbContext.UserVehicles.Where(v => v.Id == id && v.UserId == user.Id).FirstOrDefault(); UserVehicle userVehicle = dbContext.UserVehicles.Where(v => v.Id == id && v.UserId == user.Id).FirstOrDefault();
var vehPrice = userVehicle.Price; var vehPrice = userVehicle.Price;
@@ -493,18 +497,22 @@ namespace ReallifeGamemode.Server.Managers
GTANetworkAPI.Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(userVehicle); GTANetworkAPI.Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(userVehicle);
user.BankAccount.Balance += backPrice; user.BankAccount.Balance += backPrice;
ChatService.SendMessage(player, $"~b~[INFO]~s~ Du hast durch den Autoverkauf ~g~{backPrice.ToMoneyString()} ~s~erhalten."); 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); VehicleManager.DeleteVehicle(veh);
dbContext.UserVehicles.Remove(userVehicle); dbContext.UserVehicles.Remove(userVehicle);
player.SendNotification("~g~Du hast dein Fahrzeug verkauft"); player.SendNotification("~g~Du hast dein Fahrzeug verkauft");
} }
else if(serverVehicle is FactionVehicle) else if (serverVehicle is FactionVehicle)
{ {
FactionVehicle factionVehicle = dbContext.FactionVehicles.FirstOrDefault(v => v.Id == id); FactionVehicle factionVehicle = dbContext.FactionVehicles.FirstOrDefault(v => v.Id == id);
var backPrice = (int)(factionVehicle.BuyPrice * 1.5 * 0.4); var backPrice = (int)(factionVehicle.BuyPrice * 1.5 * 0.4);
user.Faction.BankAccount.Balance += backPrice; 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."); ChatService.SendMessage(player, $"~b~[INFO]~s~ Die Fraktionskasse hat ~g~{backPrice.ToMoneyString()}~s~ erhalten.");
VehicleManager.DeleteVehicle(VehicleManager.GetVehicleFromServerVehicle(factionVehicle)); VehicleManager.DeleteVehicle(VehicleManager.GetVehicleFromServerVehicle(factionVehicle));
@@ -733,6 +741,7 @@ namespace ReallifeGamemode.Server.Managers
fibBankAccount.Balance += (int)(ticket_amount / 100 * 60); fibBankAccount.Balance += (int)(ticket_amount / 100 * 60);
lspdBankAccount.Balance += (int)(ticket_amount / 100 * 40); lspdBankAccount.Balance += (int)(ticket_amount / 100 * 40);
} }
logger.LogInformation("Player {0} accepted a ticket of {1} dollars", player.Name, ticket_amount);
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
target.ResetData("ticket_boolean"); target.ResetData("ticket_boolean");
@@ -798,6 +807,7 @@ namespace ReallifeGamemode.Server.Managers
if (amount > 0 && amount <= 5000) 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."); player.SendNotification($"~w~Du hast ~y~{targetname} ~w~{amount.ToMoneyString()} gegeben.");
target.SendNotification($"~w~ Du hast von ~y~{playername} ~w~{amount.ToMoneyString()} erhalten.", true); 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.Server.Util;
using ReallifeGamemode.Services; using ReallifeGamemode.Services;
using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Types;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Server.Log;
/** /**
* @overview Life of German Reallife - Managers InventoryManager (InventoryManager.cs) * @overview Life of German Reallife - Managers InventoryManager (InventoryManager.cs)
@@ -25,6 +27,9 @@ namespace ReallifeGamemode.Server.Managers
{ {
public class InventoryManager : Script public class InventoryManager : Script
{ {
private const int MAX_USER_INVENTORY = 40000;
private static readonly ILogger logger = LogManager.GetLogger<InventoryManager>();
public static List<IItem> itemList; public static List<IItem> itemList;
private static Dictionary<int, (int[], int[])> TradeItems { get; set; } = new Dictionary<int, (int[], int[])>(); 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()) 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) foreach (var item in userItems)
{ {
IItem iItem = GetItemById(item.ItemId); IItem iItem = GetItemById(item.ItemId);
@@ -381,7 +386,7 @@ namespace ReallifeGamemode.Server.Managers
int setAmount = 0; int setAmount = 0;
for (int i = 1; i <= amount; i++) 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; break;
} }
@@ -608,6 +613,14 @@ namespace ReallifeGamemode.Server.Managers
return; 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(); UserItem item = dbContext.UserItems.Where(i => i.ItemId == shopItem.Id && i.UserId == user.Id).FirstOrDefault();
if (item == null) if (item == null)
{ {

View File

@@ -9,6 +9,7 @@ using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Shop.Ammunation; using ReallifeGamemode.Server.Shop.Ammunation;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Job;
namespace ReallifeGamemode.Server.Managers namespace ReallifeGamemode.Server.Managers
@@ -207,11 +208,18 @@ namespace ReallifeGamemode.Server.Managers
jobId = 4, jobId = 4,
Skill = 0 Skill = 0
}; };
JobPoint jobPointFarmer = new JobPoint()
{
Position = FarmerJob.POSITION_JOB_START,
jobId = 5,
Skill = 0
};
JobPoints.Add(jobPointRefuseCollector); JobPoints.Add(jobPointRefuseCollector);
JobPoints.Add(jobPointPilot); JobPoints.Add(jobPointPilot);
JobPoints.Add(jobPointPilot2); JobPoints.Add(jobPointPilot2);
JobPoints.Add(jobPointBusDriver); JobPoints.Add(jobPointBusDriver);
JobPoints.Add(jobPointFarmer);
foreach (JobPoint p in JobPoints) 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.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); 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 #endregion JobPoints

View File

@@ -2,14 +2,17 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using GTANetworkAPI; using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
namespace ReallifeGamemode.Server.Managers namespace ReallifeGamemode.Server.Managers
{ {
internal class TuningManager : Script internal class TuningManager : Script
{ {
private static readonly ILogger logger = LogManager.GetLogger<TuningManager>();
private static List<ColShape> tuningGarages = new List<ColShape>(); private static List<ColShape> tuningGarages = new List<ColShape>();
public static void LoadTuningGarages() public static void LoadTuningGarages()
@@ -220,6 +223,7 @@ namespace ReallifeGamemode.Server.Managers
ServerVehicle sV = player.Vehicle.GetServerVehicle(dbContext); ServerVehicle sV = player.Vehicle.GetServerVehicle(dbContext);
if (sV == null) return; 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); VehicleMod vMod = dbContext.VehicleMods.FirstOrDefault(m => m.ServerVehicleId == sV.Id && m.Slot == slot);
if (vMod == null && index != -1) if (vMod == null && index != -1)
@@ -265,7 +269,7 @@ namespace ReallifeGamemode.Server.Managers
veh.SecondaryColor = color; veh.SecondaryColor = color;
} }
using var dbContext = new DatabaseContext(true); using var dbContext = new DatabaseContext();
ServerVehicle serverVeh = VehicleManager.GetServerVehicleFromVehicle(veh, dbContext); ServerVehicle serverVeh = VehicleManager.GetServerVehicleFromVehicle(veh, dbContext);
if (serverVeh == null) if (serverVeh == null)
@@ -311,6 +315,7 @@ namespace ReallifeGamemode.Server.Managers
if (serverVehicle != null) 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(); VehicleMod typeMod = dbContext.VehicleMods.Where(m => m.ServerVehicleId == serverVehicle.Id && m.Slot == -2).FirstOrDefault();
if (typeMod == null) if (typeMod == null)
{ {

View File

@@ -2,9 +2,11 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using GTANetworkAPI; using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Services;
@@ -12,6 +14,7 @@ namespace ReallifeGamemode.Server.Util
{ {
class Rentcar : Script class Rentcar : Script
{ {
private static readonly ILogger logger = LogManager.GetLogger<Rentcar>();
//In Sekunden //In Sekunden
public static int PAY_TIMER = 180; public static int PAY_TIMER = 180;
@@ -49,18 +52,23 @@ namespace ReallifeGamemode.Server.Util
{ {
noobspawnVehicleProperties.Add(new RentcarProperty("bmx", 10)); noobspawnVehicleProperties.Add(new RentcarProperty("bmx", 10));
noobspawnVehicleProperties.Add(new RentcarProperty("faggio3", 50)); noobspawnVehicleProperties.Add(new RentcarProperty("faggio3", 50));
noobspawnVehicleProperties.Add(new RentcarProperty("panto", 200));
stadthalleVehicleProperties.Add(new RentcarProperty("bmx", 10)); stadthalleVehicleProperties.Add(new RentcarProperty("bmx", 10));
stadthalleVehicleProperties.Add(new RentcarProperty("faggio3", 50)); stadthalleVehicleProperties.Add(new RentcarProperty("faggio3", 50));
stadthalleVehicleProperties.Add(new RentcarProperty("panto", 200));
knastVehicleProperties.Add(new RentcarProperty("bmx", 10)); knastVehicleProperties.Add(new RentcarProperty("bmx", 10));
knastVehicleProperties.Add(new RentcarProperty("faggio3", 50)); knastVehicleProperties.Add(new RentcarProperty("faggio3", 50));
knastVehicleProperties.Add(new RentcarProperty("panto", 200));
paletoVehicleProperties.Add(new RentcarProperty("bmx", 10)); paletoVehicleProperties.Add(new RentcarProperty("bmx", 10));
paletoVehicleProperties.Add(new RentcarProperty("faggio3", 50)); paletoVehicleProperties.Add(new RentcarProperty("faggio3", 50));
paletoVehicleProperties.Add(new RentcarProperty("panto", 200));
lamesaVehicleProperties.Add(new RentcarProperty("bmx", 10)); lamesaVehicleProperties.Add(new RentcarProperty("bmx", 10));
lamesaVehicleProperties.Add(new RentcarProperty("faggio3", 50)); lamesaVehicleProperties.Add(new RentcarProperty("faggio3", 50));
lamesaVehicleProperties.Add(new RentcarProperty("panto", 200));
} }
public static void cancelRent(Player player) public static void cancelRent(Player player)
@@ -69,6 +77,7 @@ namespace ReallifeGamemode.Server.Util
{ {
User user = player.GetUser(dbContext); User user = player.GetUser(dbContext);
user.BankAccount.Balance -= mapPlayerRentcarBill[player.Name].Item2; 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(); 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_GANG_VEHICLE_HASH = VehicleHash.Gburrito2;
public static readonly VehicleHash WEAPON_DEAL_STAATSFRAK_VEHICLE_HASH = VehicleHash.Policet; public static readonly VehicleHash WEAPON_DEAL_STAATSFRAK_VEHICLE_HASH = VehicleHash.Policet;
private const int WEAPON_AMOUNT_GANG = 2; private const int WEAPON_AMOUNT_GANG = 1;
private const int WEAPON_AMOUNT_COP = 4; private const int WEAPON_AMOUNT_GANG_PISTOL50 = 3;
private const int WEAPON_AMOUNT_COP_STUNGUN = 4; 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) public static bool checkWeaponDbyVehicle(Vehicle vehicle)
{ {
if ((vehicle.HasData("WeaponDealLoad") && vehicle.GetData<bool>("WeaponDealLoad") == true) || if ((vehicle.HasData("WeaponDealLoad") && vehicle.GetData<bool>("WeaponDealLoad") == true) ||
@@ -43,7 +49,7 @@ namespace ReallifeGamemode.Server.WeaponDeal
return; 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) FactionVehicle factionVehicle = context.FactionVehicles.Where(f => f.Model == WEAPON_DEAL_GANG_VEHICLE_HASH || f.Model == WEAPON_DEAL_STAATSFRAK_VEHICLE_HASH)
.ToList() .ToList()
@@ -129,11 +135,27 @@ namespace ReallifeGamemode.Server.WeaponDeal
InventoryManager.RemoveAllItemsfromVehicleInventory(fVeh); InventoryManager.RemoveAllItemsfromVehicleInventory(fVeh);
Faction fac = context.Factions.Where(f => f.Id == user.FactionId).FirstOrDefault(); 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(); 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() public static void Timer_Elapsed()
{ {
using (var context = new DatabaseContext()) 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 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); InventoryManager.AddItemToVehicleInventory(fVeh, item.ItemId, item.Amount);
VehicleItem item3 = new VehicleItem() { ItemId = 9, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_GANG * oMembers }; //PumpShotgun VehicleItem item3 = new VehicleItem() { ItemId = 9, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_GANG * oMembers }; //PumpShotgun
InventoryManager.AddItemToVehicleInventory(fVeh, item3.ItemId, item3.Amount); 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); InventoryManager.AddItemToVehicleInventory(fVeh, item2.ItemId, item2.Amount);
VehicleItem item4 = new VehicleItem() { ItemId = 7, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_GANG * oMembers }; //CompactRifle VehicleItem item4 = new VehicleItem() { ItemId = 7, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_GANG * oMembers }; //CompactRifle
InventoryManager.AddItemToVehicleInventory(fVeh, item4.ItemId, item4.Amount); InventoryManager.AddItemToVehicleInventory(fVeh, item4.ItemId, item4.Amount);
@@ -204,34 +226,34 @@ namespace ReallifeGamemode.Server.WeaponDeal
} }
else if (owners.Contains(1)) // LSPD 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); 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); InventoryManager.AddItemToVehicleInventory(fVeh, item2.ItemId, item2.Amount);
VehicleItem item3 = new VehicleItem() { ItemId = 5, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //SMG VehicleItem item3 = new VehicleItem() { ItemId = 5, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //SMG
InventoryManager.AddItemToVehicleInventory(fVeh, item3.ItemId, item3.Amount); InventoryManager.AddItemToVehicleInventory(fVeh, item3.ItemId, item3.Amount);
VehicleItem item4 = new VehicleItem() { ItemId = 9, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //PumpShotgun VehicleItem item4 = new VehicleItem() { ItemId = 9, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //PumpShotgun
InventoryManager.AddItemToVehicleInventory(fVeh, item4.ItemId, item4.Amount); 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); 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); 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); InventoryManager.AddItemToVehicleInventory(fVeh, item7.ItemId, item7.Amount);
} }
else if (owners.Contains(3)) // FIB 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); 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); InventoryManager.AddItemToVehicleInventory(fVeh, item2.ItemId, item2.Amount);
VehicleItem item3 = new VehicleItem() { ItemId = 6, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //Carbinrifle VehicleItem item3 = new VehicleItem() { ItemId = 6, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //Carbinrifle
InventoryManager.AddItemToVehicleInventory(fVeh, item3.ItemId, item3.Amount); 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); 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); 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); InventoryManager.AddItemToVehicleInventory(fVeh, item6.ItemId, item6.Amount);
VehicleItem item7 = new VehicleItem() { ItemId = 12, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //CombatPDW VehicleItem item7 = new VehicleItem() { ItemId = 12, VehicleId = factionVehicle.Id, Amount = WEAPON_AMOUNT_COP * oMembers }; //CombatPDW
InventoryManager.AddItemToVehicleInventory(fVeh, item7.ItemId, item7.Amount); InventoryManager.AddItemToVehicleInventory(fVeh, item7.ItemId, item7.Amount);