This commit is contained in:
VegaZ
2018-10-15 17:07:48 +02:00
12 changed files with 414 additions and 0 deletions

View File

@@ -599,8 +599,13 @@ namespace reallife_gamemode.Server.Commands
if (player.IsInVehicle)
{
Vehicle vehicle = player.Vehicle;
<<<<<<< HEAD
SaveManager.SaveVehicleData((VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate,
Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), vehicle.Locked, vehicle.EngineStatus, Convert.ToByte(vehicle.Dimension));
=======
SaveData.SaveVehicleData((VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate,
Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), vehicle.Locked, Convert.ToByte(vehicle.Dimension));
>>>>>>> feature/client-player-keys
}
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
break;

66
Server/Events/Key.cs Normal file
View File

@@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
using System.Text;
using GTANetworkAPI;
using Newtonsoft.Json;
using reallife_gamemode.Server.Util;
/**
* @overview Life of German Reallife - Event Key (Key.cs)
* @author VegaZ
* @copyright (c) 2008 - 2018 Life of German
*/
namespace reallife_gamemode.Server.Events
{
public class Key : Script
{
[RemoteEvent("keyPress:I")]
public void KeyPressI(Client player)
{
List<Client> players = NAPI.Pools.GetAllPlayers();
List<ListPlayer> ListPlayers = new List<ListPlayer>();
foreach(Client listPlayer in players)
{
var lPlayer = new ListPlayer();
lPlayer.Id = listPlayer.Handle.Value;
lPlayer.Name = listPlayer.Name;
lPlayer.Ping = listPlayer.Ping;
ListPlayers.Add(lPlayer);
}
player.TriggerEvent("fetchPlayerList", JsonConvert.SerializeObject(ListPlayers));
}
[RemoteEvent("keyPress:N")]
public void KeyPressN(Client player)
{
if (NAPI.Player.IsPlayerInAnyVehicle(player))
{
bool engineStatus = NAPI.Vehicle.GetVehicleEngineStatus(player.Vehicle);
if (engineStatus == false)
{
player.Vehicle.EngineStatus = true;
}
else
{
player.Vehicle.EngineStatus = false;
}
}
}
[RemoteEvent("keyPress:X")]
public void KeyPressX(Client player)
{
if (NAPI.Player.IsPlayerInAnyVehicle(player))
{
if (player.Seatbelt == false)
{
player.Seatbelt = true;
}
else
{
player.Seatbelt = false;
}
}
}
}
}

78
Server/Events/SaveData.cs Normal file
View File

@@ -0,0 +1,78 @@
using GTANetworkAPI;
using System;
using System.Collections.Generic;
using System.Text;
namespace reallife_gamemode.Server.Events
{
public class SaveData : Script
{
[RemoteEvent("OnSaveBlipData")]
public void OnSaveBlipData(Client player, string blipSprite, string blipName, string blipScale, string blipColor,
string blipAlpha, string blipDrawDistance, string blipShortRange, string blipRotation, string blipDimension)
{
float x = player.Position.X;
float y = player.Position.Y;
float z = player.Position.Z;
short sprite = short.Parse(blipSprite);
string name = blipName;
float scale = float.Parse(blipScale);
byte color = Convert.ToByte(blipColor);
byte alpha = Convert.ToByte(blipAlpha);
float drawDistance = float.Parse(blipDrawDistance);
bool shortRange = bool.Parse(blipShortRange);
float rotation = float.Parse(blipRotation);
byte dimension = Convert.ToByte(blipDimension);
NAPI.Blip.CreateBlip(uint.Parse(blipSprite), new Vector3(x,y,z), scale, color, name, alpha, drawDistance, shortRange, short.Parse(blipRotation), dimension);
using (var saveData = new Model.DatabaseContext())
{
var dataSet = new Server.Saves.SavedBlip
{
Sprite = sprite,
PositionX = x,
PositionY = y,
PositionZ = z,
Name = blipName,
Scale = scale,
Color = color,
Alpha = alpha,
DrawDistance = drawDistance,
ShortRange = shortRange,
Rotation = rotation,
Dimension = dimension,
Active = true
};
saveData.Blips.Add(dataSet);
saveData.SaveChanges();
}
}
public static void SaveVehicleData(VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading,
string vehicleNumberPlate, byte vehiclePrimaryColor, byte vehicleSecondaryColor, bool vehicleLocked, byte vehicleDimension)
{
using (var saveData = new Model.DatabaseContext())
{
var dataSet = new Server.Saves.SavedVehicle
{
Model = vehicleModel,
PositionX = vehiclePosition.X,
PositionY = vehiclePosition.Y,
PositionZ = vehiclePosition.Z,
Heading = vehicleHeading,
NumberPlate = vehicleNumberPlate,
PrimaryColor = vehiclePrimaryColor,
SecondaryColor = vehicleSecondaryColor,
Locked = vehicleLocked,
Engine = false,
Dimension = vehicleDimension,
Active = true
};
saveData.Vehicles.Add(dataSet);
saveData.SaveChanges();
}
}
}
}

View File

@@ -19,7 +19,11 @@ namespace reallife_gamemode.Server.Extensions
{
public static User GetUser(this Client client, DatabaseContext context = null)
{
<<<<<<< HEAD
if (!client.IsLoggedIn()) return null;
=======
>>>>>>> feature/client-player-keys
using (DatabaseContext dbContext = new DatabaseContext())
if(context == null)
{
@@ -36,7 +40,70 @@ namespace reallife_gamemode.Server.Extensions
public static bool IsLoggedIn(this Client player)
{
<<<<<<< HEAD
return player.HasData("isLoggedIn") ? player.GetData("isLoggedIn") : false;
=======
if(context == null)
{
using(context = new DatabaseContext())
{
User u = client.GetUser();
if (u == null) return null;
return u.GetFaction();
}
}
else
{
User u = client.GetUser();
if (u == null) return null;
return u.GetFaction();
}
}
public static bool IsLoggedIn(Client player)
{
return player.GetData("isLoggedIn");
}
public static void BanPlayer(Client admin, Client target, string reason, int mins)
{
using (var banUser = new DatabaseContext())
{
int unixTimestamp = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
Ban user;
if (mins == 0)
{
NAPI.Chat.SendChatMessageToAll("!{#FF4040}[BAN] " + target.Name + " wurde von " + admin.Name + " permanent gebannt. [" + reason + "]");
user = new Ban { UserId = GetUser(target).Id, Reason = reason, BannedBy = admin.Name, Applied = unixTimestamp, UntilDateTime = unixTimestamp };
//TODO user.Kick();
mins--;
}
else
{
NAPI.Chat.SendChatMessageToAll("!{#FF4040}[BAN] " + target.Name + " wurde von " + admin.Name + " für " + mins + " Minuten gebannt. [" + reason + "]");
user = new Ban { UserId = GetUser(target).Id, Reason = reason, BannedBy = admin.Name, Applied = unixTimestamp, UntilDateTime = unixTimestamp + mins * 60 };
//TODO user.Kick();
}
banUser.Bans.Add(user);
banUser.SaveChanges();
var targetUser = banUser.Users.FirstOrDefault(u => u.Name == target.Name);
targetUser.BanId = user.Id;
banUser.SaveChanges();
}
}
public static void UnbanPlayer(Client admin, Client target)
{
using (var unbanUser = new DatabaseContext())
{
var targetUser = unbanUser.Bans.FirstOrDefault(u => u.Id == target.GetUser(unbanUser).BanId);
unbanUser.Bans.Remove(targetUser);
unbanUser.SaveChanges();
}
admin.SendChatMessage(target.Name + " wurde entbannt.");
//TODO ***Admin Info: {ADMIN-NAME} hat {USER-NAME} entbannt.
>>>>>>> feature/client-player-keys
}
}
}

View File

@@ -27,7 +27,11 @@ namespace reallife_gamemode.Server.Services
{
player.SendChatMessage("~r~[FEHLER]~s~ Der Spieler wurde nicht gefunden.");
}
<<<<<<< HEAD
=======
>>>>>>> feature/client-player-keys
public static void PlayerNotLoggedIn(Client player)
{
player.SendChatMessage("~r~[FEHLER]~s~ Du bist nicht eingeloggt.");
@@ -36,7 +40,10 @@ namespace reallife_gamemode.Server.Services
{
player.SendChatMessage("~r~[FEHLER]~s~ Die Aktion wurde nicht ausgeführt.");
}
<<<<<<< HEAD
=======
>>>>>>> feature/client-player-keys
public static void BroadcastFaction(string message, List<Faction> factions)
{
foreach (Client c in NAPI.Pools.GetAllPlayers())
@@ -55,6 +62,7 @@ namespace reallife_gamemode.Server.Services
public static void BroadcastFaction(string message, Faction faction)
{
BroadcastFaction(message, new List<Faction> { faction });
<<<<<<< HEAD
}
public static void BroadcastAdmin(string message, AdminLevel minLevel)
@@ -66,6 +74,8 @@ namespace reallife_gamemode.Server.Services
p.SendChatMessage(message);
}
});
=======
>>>>>>> feature/client-player-keys
}
}
}

20
Server/Util/ListPlayer.cs Normal file
View File

@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Text;
using GTANetworkAPI;
/**
* @overview Life of German Reallife - Util ListPlayer ListPlayer.cs
* @author VegaZ
* @copyright (c) 2008 - 2018 Life of German
*/
namespace reallife_gamemode.Server.Util
{
public class ListPlayer
{
public int Id { get; set; }
public string Name { get; set; }
public int Ping { get; set; }
}
}