diff --git a/Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap-theme.css b/Client/Dependences/bootstrap-3.3.7/css/bootstrap-theme.css
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap-theme.css
rename to Client/Dependences/bootstrap-3.3.7/css/bootstrap-theme.css
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap-theme.css.map b/Client/Dependences/bootstrap-3.3.7/css/bootstrap-theme.css.map
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap-theme.css.map
rename to Client/Dependences/bootstrap-3.3.7/css/bootstrap-theme.css.map
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap-theme.min.css b/Client/Dependences/bootstrap-3.3.7/css/bootstrap-theme.min.css
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap-theme.min.css
rename to Client/Dependences/bootstrap-3.3.7/css/bootstrap-theme.min.css
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap-theme.min.css.map b/Client/Dependences/bootstrap-3.3.7/css/bootstrap-theme.min.css.map
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap-theme.min.css.map
rename to Client/Dependences/bootstrap-3.3.7/css/bootstrap-theme.min.css.map
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap.css b/Client/Dependences/bootstrap-3.3.7/css/bootstrap.css
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap.css
rename to Client/Dependences/bootstrap-3.3.7/css/bootstrap.css
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap.css.map b/Client/Dependences/bootstrap-3.3.7/css/bootstrap.css.map
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap.css.map
rename to Client/Dependences/bootstrap-3.3.7/css/bootstrap.css.map
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap.min.css b/Client/Dependences/bootstrap-3.3.7/css/bootstrap.min.css
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap.min.css
rename to Client/Dependences/bootstrap-3.3.7/css/bootstrap.min.css
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap.min.css.map b/Client/Dependences/bootstrap-3.3.7/css/bootstrap.min.css.map
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/css/bootstrap.min.css.map
rename to Client/Dependences/bootstrap-3.3.7/css/bootstrap.min.css.map
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.eot b/Client/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.eot
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.eot
rename to Client/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.eot
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.svg b/Client/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.svg
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.svg
rename to Client/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.svg
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.ttf b/Client/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.ttf
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.ttf
rename to Client/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.ttf
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.woff b/Client/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.woff
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.woff
rename to Client/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.woff
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.woff2 b/Client/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.woff2
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.woff2
rename to Client/Dependences/bootstrap-3.3.7/fonts/glyphicons-halflings-regular.woff2
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/js/bootstrap.js b/Client/Dependences/bootstrap-3.3.7/js/bootstrap.js
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/js/bootstrap.js
rename to Client/Dependences/bootstrap-3.3.7/js/bootstrap.js
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/js/bootstrap.min.js b/Client/Dependences/bootstrap-3.3.7/js/bootstrap.min.js
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/js/bootstrap.min.js
rename to Client/Dependences/bootstrap-3.3.7/js/bootstrap.min.js
diff --git a/Client/Login/Dependences/bootstrap-3.3.7/js/npm.js b/Client/Dependences/bootstrap-3.3.7/js/npm.js
similarity index 100%
rename from Client/Login/Dependences/bootstrap-3.3.7/js/npm.js
rename to Client/Dependences/bootstrap-3.3.7/js/npm.js
diff --git a/Client/Login/Dependences/jquery-3.3.1.min.js b/Client/Dependences/jquery-3.3.1.min.js
similarity index 100%
rename from Client/Login/Dependences/jquery-3.3.1.min.js
rename to Client/Dependences/jquery-3.3.1.min.js
diff --git a/Client/Login/login.html b/Client/Login/login.html
index 35d14c3f..03edc5c2 100644
--- a/Client/Login/login.html
+++ b/Client/Login/login.html
@@ -1,5 +1,5 @@
@@ -7,7 +7,7 @@
-
+
diff --git a/Client/Save/main.js b/Client/Save/main.js
new file mode 100644
index 00000000..b40e649f
--- /dev/null
+++ b/Client/Save/main.js
@@ -0,0 +1,33 @@
+/**
+ * @overview Life of German Reallife - Save Main main.js
+ * @author VegaZ
+ * @copyright (c) 2008 - 2018 Life of German
+ */
+var saveBrowser;
+
+mp.events.add('saveBlip', () => {
+
+ saveBrowser = mp.browsers.new('package://Save/save.html');
+ mp.gui.chat.activate(false);
+ mp.gui.cursor.show(true, true);
+});
+
+mp.events.add('saveData', (blipSprite, blipName, blipScale, blipColor, blipAlpha, blipDrawDistance, blipShortRange, blipRotation, blipDimension) => {
+ if (saveBrowser) {
+ saveBrowser.destroy();
+ }
+
+ mp.events.callRemote('OnSaveBlipData', blipSprite, blipName, blipScale, blipColor, blipAlpha,
+ blipDrawDistance, blipShortRange, blipRotation, blipDimension);
+ mp.gui.chat.push(blipShortRange);
+ mp.gui.cursor.show(false, false);
+ mp.gui.chat.activate(true);
+});
+
+mp.events.add('cancelData', () => {
+ if (saveBrowser) {
+ saveBrowser.destroy();
+ }
+ mp.gui.cursor.show(false, false);
+ mp.gui.chat.activate(true);
+});
\ No newline at end of file
diff --git a/Client/Save/save.html b/Client/Save/save.html
new file mode 100644
index 00000000..b6122bcb
--- /dev/null
+++ b/Client/Save/save.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Blip speichern, bitte fülle die Tabelle aus:
+
+
+
Model ID:
+
+
+
+
Name:
+
+
+
+
Skalierung:
+
+
+
+
+
Farbe:
+
+
+
+
Transparenz:
+
+
+
+
Draw Distance:
+
+
+
+
Short Range:
+
+ Zeigt das Blip nur innerhalb der Minimap
+
+
+
+
Rotation:
+
+
+
+
Dimension:
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Client/Save/save.js b/Client/Save/save.js
new file mode 100644
index 00000000..33a1ed72
--- /dev/null
+++ b/Client/Save/save.js
@@ -0,0 +1,28 @@
+/**
+ * @overview Life of German Reallife - Login Login login.js
+ * @author VegaZ
+ * @copyright (c) 2008 - 2018 Life of German
+ */
+
+function saveData() {
+ let blipSprite = document.getElementById("blipSprite").value;
+ let blipName = document.getElementById("blipName").value;
+ let blipScale = document.getElementById("blipScale").value;
+ let blipColor = document.getElementById("blipColor").value;
+ let blipAlpha = document.getElementById("blipAlpha").value;
+ let blipDrawDistance = document.getElementById("blipSprite").value;
+ let blipShortRange = document.getElementById("blipShortRange").checked;
+ let blipRotation = document.getElementById("blipRotation").value;
+ let blipDimension = document.getElementById("blipDimension").value;
+
+ mp.trigger("saveData", blipSprite, blipName, blipScale, blipColor, blipAlpha, blipDrawDistance, blipShortRange, blipRotation, blipDimension);
+}
+
+function cancelData() {
+ mp.trigger("cancelData");
+}
+
+function getType() {
+ mp.gui.chat.push("getType");
+ return typ;
+}
\ No newline at end of file
diff --git a/Client/Save/style.css b/Client/Save/style.css
new file mode 100644
index 00000000..e295d68d
--- /dev/null
+++ b/Client/Save/style.css
@@ -0,0 +1,184 @@
+/**
+ * @overview Life of German Reallife - Save CSS style.css
+ * @author Orangebox, hydrant, VegaZ
+ * @copyright (c) 2008 - 2018 Life of German
+ */
+
+.save-page {
+ margin: auto;
+}
+
+.isa_info, .isa_success, .isa_warning, .isa_error {
+ margin: 10px 0px;
+ padding: 12px;
+ display: none;
+}
+
+.isa_info {
+ color: #00529B;
+ background-color: #BDE5F8;
+}
+
+.isa_success {
+ color: #4F8A10;
+ background-color: #DFF2BF;
+}
+
+.isa_warning {
+ color: #9F6000;
+ background-color: #FEEFB3;
+}
+
+.isa_error {
+ color: #D8000C;
+ background-color: #FFBABA;
+}
+
+.isa_info i, .isa_success i, .isa_warning i, .isa_error i {
+ margin: 10px 22px;
+ font-size: 2em;
+ vertical-align: middle;
+}
+
+.form {
+ margin-left: 36%;
+ position: absolute;
+ z-index: 1;
+ background: rgba(255, 255, 255, .85);
+ padding: 20px;
+ text-align: center;
+ box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
+}
+
+input {
+ font-family: "Roboto", sans-serif;
+ outline: 0;
+ background: #f2f2f2;
+ width: 100%;
+ border: 0;
+ margin: 5px 0 5px 0;
+ padding: 12px;
+ box-sizing: border-box;
+ font-size: 12px;
+}
+ input.colorPicker {
+ font-family: "Roboto", sans-serif;
+ outline: 0;
+ background: #f2f2f2;
+ width: 100%;
+ border: 0;
+ margin: 5px 0 5px 0;
+ padding: 0px;
+ box-sizing: border-box;
+ font-size: 12px;
+ }
+
+ input#blipShortRange {
+ margin: 10px 0 10px 0;
+ }
+
+button {
+ font-family: "Roboto", sans-serif;
+ text-transform: uppercase;
+ outline: 0;
+ background: #31c474;
+ width: 40%;
+ border: 0;
+ padding: 15px;
+ color: #FFFFFF;
+ font-size: 14px;
+ -webkit-transition: all 0.3s ease;
+ transition: all 0.3s ease;
+ cursor: pointer;
+}
+
+ button:hover, .form button:active, .form button:focus {
+ background: #31bd40;
+ }
+
+.cancelBtn {
+ background-color: orangered;
+}
+
+.cancelBtn:hover, .cancelBtn:focus, .cancelBtn:active {
+ background-color: #ff0223 !important;
+}
+
+table {
+ align-self: center;
+}
+.message {
+ margin: 15px 0 0;
+ font-size: 12px;
+}
+
+.message a {
+ color: #0035A5;
+ text-decoration: none;
+}
+
+.register-form {
+ display: none;
+}
+
+
+.container {
+ position: relative;
+ z-index: 1;
+ max-width: 300px;
+ margin: 0 auto;
+}
+
+.container:before, .container:after {
+ content: "";
+ display: block;
+ clear: both;
+}
+
+.container .info {
+ margin: 50px auto;
+ text-align: center;
+}
+
+.info h1 {
+ margin: 0 0 15px;
+ padding: 0;
+ font-size: 36px;
+ font-weight: 300;
+ color: #1a1a1a;
+}
+
+.info span {
+ color: #4d4d4d;
+ font-size: 12px;
+}
+
+.info span a {
+ color: #000000;
+ text-decoration: none;
+}
+
+.info span .fa {
+ color: #EF3B3A;
+}
+
+body {
+ font-family: "Roboto", sans-serif;
+ -webkit-font-smoothing: antialiased;
+ overflow: hidden;
+}
+tr{
+
+}
+td {
+ align-content: stretch;
+ padding-left: 10px;
+ padding-right: 10px;
+ box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 0 0 0 rgba(0, 0, 0, 0.24);
+ border-top: 2px double gray;
+ border-bottom: 2px double gray;
+ border-width: 0.5px;
+}
+table{
+ margin-bottom: 20px;
+}
\ No newline at end of file
diff --git a/Client/index.js b/Client/index.js
index 51689880..6545bd99 100644
--- a/Client/index.js
+++ b/Client/index.js
@@ -4,4 +4,6 @@
* @copyright (c) 2008 - 2018 Life of German
*/
-require('./Login/main.js');
\ No newline at end of file
+require('./Login/main.js');
+require('./Save/main.js');
+require('./Save/save.js');
\ No newline at end of file
diff --git a/Model/DatabaseContext.cs b/Model/DatabaseContext.cs
index 509e43d2..bbf819e3 100644
--- a/Model/DatabaseContext.cs
+++ b/Model/DatabaseContext.cs
@@ -1,8 +1,10 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
+using System.Configuration;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.Extensions.Configuration;
/**
* @overview Life of German Reallife - DatabaseContext.cs
@@ -37,5 +39,12 @@ namespace reallife_gamemode.Model
public DbSet Factions { get; set; }
public DbSet FactionRanks { get; set; }
public DbSet Users { get; set; }
+
+ public DbSet Blips { get; set; }
+ public DbSet Markers { get; set; }
+ public DbSet Peds { get; set; }
+ public DbSet Pickups { get; set; }
+ public DbSet TextLabels { get; set; }
+ public DbSet Vehicles { get; set; }
}
}
diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs
index 5fa3dd81..d8fc5780 100644
--- a/Server/Commands/Admin.cs
+++ b/Server/Commands/Admin.cs
@@ -1,10 +1,9 @@
using System;
-using System.Collections.Generic;
using System.Linq;
-using System.Text;
using GTANetworkAPI;
using reallife_gamemode.Model;
using reallife_gamemode.Server.Entities;
+using reallife_gamemode.Server.Events;
using reallife_gamemode.Server.Extensions;
using reallife_gamemode.Server.Services;
using reallife_gamemode.Server.Util;
@@ -46,7 +45,7 @@ namespace reallife_gamemode.Server.Commands
player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan schon in einem Fahrzeug.");
return;
}
-
+
Vehicle v = NAPI.Vehicle.CreateVehicle(hash, player.Position, player.Rotation.Z, color1, color2);
player.SetIntoVehicle(v.Handle, -1);
@@ -102,7 +101,7 @@ namespace reallife_gamemode.Server.Commands
Client target = ClientService.GetClientByName(name);
- if(target == null)
+ if (target == null)
{
ChatService.PlayerNotFound(player);
return;
@@ -153,13 +152,13 @@ namespace reallife_gamemode.Server.Commands
}
option = option.ToLower();
-
- if(option == "load")
+
+ if (option == "load")
{
NAPI.World.RequestIpl(name);
player.SendChatMessage("~g~Das IPL ~s~" + name + " ~g~wurde erfolgreich geladen");
}
- else if(option == "remove")
+ else if (option == "remove")
{
NAPI.World.RemoveIpl(name);
player.SendChatMessage("~g~Das IPL ~s~" + name + " ~g~wurde erfolgreich entladen");
@@ -194,7 +193,7 @@ namespace reallife_gamemode.Server.Commands
WeaponHash wHash = NAPI.Util.WeaponNameToModel(weapon);
- if(wHash == default(WeaponHash))
+ if (wHash == default(WeaponHash))
{
player.SendChatMessage("~r~[FEHLER]~s~ Diese Waffe existiert nicht.");
return;
@@ -241,7 +240,7 @@ namespace reallife_gamemode.Server.Commands
using (var dbContext = new DatabaseContext())
{
Entities.Faction f = dbContext.Factions.FirstOrDefault(x => x.Id == faction);
- if(f == null && faction != 0)
+ if (f == null && faction != 0)
{
player.SendChatMessage("~r~[FEHLER]~s~ Diese Fraktion existiert nicht (Liste: ~m~/factionlist).");
return;
@@ -249,7 +248,7 @@ namespace reallife_gamemode.Server.Commands
User u = dbContext.Users.SingleOrDefault(x => x.Name == target.Name);
- if(faction != 0)
+ if (faction != 0)
{
u.FactionId = f.Id;
u.FactionRankId = dbContext.FactionRanks.
@@ -270,5 +269,29 @@ namespace reallife_gamemode.Server.Commands
dbContext.SaveChanges();
}
}
+
+ [Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip, ~r~Marker, Ped, Pickup, TextLabel, ~g~Vehicle")]
+ public void CmdAdminSave(Client player, string typ)
+ {
+ switch (typ)
+ {
+ case "Blip":
+ player.TriggerEvent("saveBlip");
+ break;
+ case "Ped":
+
+ break;
+ case "Vehicle":
+ if (player.IsInVehicle)
+ {
+ Vehicle vehicle = player.Vehicle;
+ SaveData.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));
+ }
+ else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
+ break;
+
+ }
+ }
}
}
diff --git a/Server/Events/SaveData.cs b/Server/Events/SaveData.cs
new file mode 100644
index 00000000..01d32054
--- /dev/null
+++ b/Server/Events/SaveData.cs
@@ -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, bool vehicleEngine, 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 = vehicleEngine,
+ Dimension = vehicleDimension,
+ Active = true
+ };
+ saveData.Vehicles.Add(dataSet);
+ saveData.SaveChanges();
+ }
+ }
+
+ }
+}
diff --git a/Server/Managers/LoadManager.cs b/Server/Managers/LoadManager.cs
new file mode 100644
index 00000000..4384c916
--- /dev/null
+++ b/Server/Managers/LoadManager.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using GTANetworkAPI;
+using reallife_gamemode.Model;
+using reallife_gamemode.Server.Entities;
+
+/**
+* @overview Life of German Reallife - Managers LoadManager (LoadManager.cs)
+* @author VegaZ
+* @copyright (c) 2008 - 2018 Life of German
+*/
+
+namespace reallife_gamemode.Server.Managers
+{
+ public class LoadManager : Script
+ {
+ [ServerEvent(Event.ResourceStart)]
+ public void OnResourceStart()
+ {
+ using (var loadData = new DatabaseContext())
+ {
+ //LOAD ALL BLIPS
+ foreach (Saves.SavedBlip b in loadData.Blips)
+ {
+ if(b.Active == true)
+ {
+ NAPI.Blip.CreateBlip((uint) b.Sprite, new Vector3(b.PositionX, b.PositionY, b.PositionZ), b.Scale,
+ b.Color, b.Name, b.Alpha, b.DrawDistance, b.ShortRange, (short) b.Rotation, b.Dimension);
+ }
+ }
+ //LOAD ALL VEHICLES
+ foreach (Saves.SavedVehicle v in loadData.Vehicles)
+ {
+ if (v.Active == true)
+ {
+ NAPI.Vehicle.CreateVehicle((uint)v.Model, new Vector3(v.PositionX, v.PositionY, v.PositionZ), v.Heading, (int)(v.PrimaryColor),
+ v.SecondaryColor, v.NumberPlate, v.Alpha, v.Locked, v.Engine = false, v.Dimension);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/Server/Saves/SavedBlip.cs b/Server/Saves/SavedBlip.cs
new file mode 100644
index 00000000..f7b14343
--- /dev/null
+++ b/Server/Saves/SavedBlip.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/**
+ * @overview Life of German Reallife - Saves SavedBlip.cs
+ * @author VegaZ
+ * @copyright (c) 2008 - 2018 Life of German
+ */
+
+namespace reallife_gamemode.Server.Saves
+{
+ public class SavedBlip
+ {
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ [Required]
+ public short Sprite { get; set; }
+ [Required]
+ public float PositionX { get; set; }
+ [Required]
+ public float PositionY { get; set; }
+ [Required]
+ public float PositionZ { get; set; }
+ public string Name { get; set; }
+ public float Scale { get; set; }
+ public byte Color { get; set; }
+ public byte Alpha { get; set; }
+ public float DrawDistance { get; set; }
+ public bool ShortRange { get; set; }
+ public float Rotation { get; set; }
+ public byte Dimension { get; set; }
+ public bool Active { get; set; }
+ }
+}
diff --git a/Server/Saves/SavedMarker.cs b/Server/Saves/SavedMarker.cs
new file mode 100644
index 00000000..5670d0f7
--- /dev/null
+++ b/Server/Saves/SavedMarker.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/**
+ * @overview Life of German Reallife - Saves SavedMarker.cs
+ * @author VegaZ
+ * @copyright (c) 2008 - 2018 Life of German
+ */
+
+namespace reallife_gamemode.Server.Saves
+{
+ public class SavedMarker
+ {
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ public byte Type { get; set; }
+ public float PositionX { get; set; }
+ public float PositionY { get; set; }
+ public float PositionZ { get; set; }
+ public float Scale { get; set; }
+ public float DirectionX { get; set; }
+ public float DirectionY { get; set; }
+ public float DirectionZ { get; set; }
+ public float RotationX { get; set; }
+ public float RotationY { get; set; }
+ public float RotationZ { get; set; }
+ public byte ColorR { get; set; }
+ public byte ColorG { get; set; }
+ public byte ColorB { get; set; }
+ public byte ColorA { get; set; }
+ public bool Visible { get; set; }
+ public byte Dimension { get; set; }
+ public bool Active { get; set; }
+ }
+}
diff --git a/Server/Saves/SavedPed.cs b/Server/Saves/SavedPed.cs
new file mode 100644
index 00000000..627ec516
--- /dev/null
+++ b/Server/Saves/SavedPed.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/**
+ * @overview Life of German Reallife - Saves SavedPed.cs
+ * @author VegaZ
+ * @copyright (c) 2008 - 2018 Life of German
+ */
+
+namespace reallife_gamemode.Server.Saves
+{
+ public class SavedPed
+ {
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ public string HashModel { get; set; }
+ public float PositionX { get; set; }
+ public float PositionY { get; set; }
+ public float PositionZ { get; set; }
+ public float Heading { get; set; }
+ public byte Dimension { get; set; }
+ public bool Active { get; set; }
+ }
+}
diff --git a/Server/Saves/SavedPickup.cs b/Server/Saves/SavedPickup.cs
new file mode 100644
index 00000000..5c518de5
--- /dev/null
+++ b/Server/Saves/SavedPickup.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/**
+ * @overview Life of German Reallife - Saves SavedPickup.cs
+ * @author VegaZ
+ * @copyright (c) 2008 - 2018 Life of German
+ */
+
+namespace reallife_gamemode.Server.Saves
+{
+ public class SavedPickup
+ {
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ [StringLength(128)]
+ public float PositionX { get; set; }
+ public float PositionY { get; set; }
+ public float PositionZ { get; set; }
+ public float RotationX { get; set; }
+ public float RotationY { get; set; }
+ public float RotationZ { get; set; }
+ public bool Vehicle { get; set; }
+ public int RespawnTime { get; set; }
+ public byte Dimension { get; set; }
+ public bool Active { get; set; }
+ }
+}
diff --git a/Server/Saves/SavedTextLabel.cs b/Server/Saves/SavedTextLabel.cs
new file mode 100644
index 00000000..d367bfbf
--- /dev/null
+++ b/Server/Saves/SavedTextLabel.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/**
+ * @overview Life of German Reallife - Saves SavedTextLabel.cs
+ * @author VegaZ
+ * @copyright (c) 2008 - 2018 Life of German
+ */
+
+namespace reallife_gamemode.Server.Saves
+{
+ public class SavedTextLabel
+ {
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ [Required]
+ public string Text { get; set; }
+ [Required]
+ public float PositionX { get; set; }
+ [Required]
+ public float PositionY { get; set; }
+ [Required]
+ public float PositionZ { get; set; }
+ public bool LOS { get; set; }
+ public byte Font { get; set; }
+ public float DrawDistance { get; set; }
+ public byte ColorR { get; set; }
+ public byte ColorG { get; set; }
+ public byte ColorB { get; set; }
+ public byte ColorA { get; set; }
+ public byte Dimension { get; set; }
+ public bool Active { get; set; }
+ }
+}
diff --git a/Server/Saves/SavedVehicle.cs b/Server/Saves/SavedVehicle.cs
new file mode 100644
index 00000000..7653474c
--- /dev/null
+++ b/Server/Saves/SavedVehicle.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using GTANetworkAPI;
+
+/**
+ * @overview Life of German Reallife - Saves SavedVehicle.cs
+ * @author VegaZ
+ * @copyright (c) 2008 - 2018 Life of German
+ */
+
+namespace reallife_gamemode.Server.Saves
+{
+ public class SavedVehicle
+ {
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ public VehicleHash Model { get; set; }
+ public float PositionX { get; set; }
+ public float PositionY { get; set; }
+ public float PositionZ { get; set; }
+ public float Heading { get; set; }
+ [StringLength(8)]
+ public string NumberPlate { get; set; }
+ public byte Alpha { get; set; }
+ public byte PrimaryColor { get; set; }
+ public byte SecondaryColor { get; set; }
+ public bool Locked { get; set; }
+ public bool Engine { get; set; }
+ public byte Dimension { get; set; }
+ public bool Active { get; set; }
+ }
+}
diff --git a/meta.xml b/meta.xml
index 3bcdf84f..0ced7911 100644
--- a/meta.xml
+++ b/meta.xml
@@ -2,4 +2,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file