diff --git a/VORP-Character/VORP-Character.sln b/VORP-Character/VORP-Character.sln
index 76a9867..699c14e 100644
--- a/VORP-Character/VORP-Character.sln
+++ b/VORP-Character/VORP-Character.sln
@@ -3,11 +3,16 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "vorpcharacter_cl", "vorpcharacter_cl\vorpcharacter_cl.csproj", "{51083C52-7FE7-422E-AED9-023D0903C6E6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VORP.Character.Client", "vorpcharacter_cl\VORP.Character.Client.csproj", "{51083C52-7FE7-422E-AED9-023D0903C6E6}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "vorpcharacter_sv", "vorpcharacter_sv\vorpcharacter_sv.csproj", "{EAF3ACC4-8378-4923-ADD0-5959DC21DA03}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VORP.Character.Server", "vorpcharacter_sv\VORP.Character.Server.csproj", "{EAF3ACC4-8378-4923-ADD0-5959DC21DA03}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "VORP.Shared", "VORP.Shared\VORP.Shared.shproj", "{5FDA9865-AB7C-4D8E-8E29-D445FD6D6303}"
EndProject
Global
+ GlobalSection(SharedMSBuildProjectFiles) = preSolution
+ VORP.Shared\VORP.Shared.projitems*{5fda9865-ab7c-4d8e-8e29-d445fd6d6303}*SharedItemsImports = 13
+ EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Development|Any CPU = Development|Any CPU
diff --git a/VORP-Character/VORP.Shared/Models/Position.cs b/VORP-Character/VORP.Shared/Models/Position.cs
new file mode 100644
index 0000000..678a061
--- /dev/null
+++ b/VORP-Character/VORP.Shared/Models/Position.cs
@@ -0,0 +1,102 @@
+using System.Runtime.Serialization;
+
+namespace Vorp.Shared.Models
+{
+ [DataContract]
+ public class Position
+ {
+ [DataMember(Name = "x")]
+ public float X { get; set; }
+
+ [DataMember(Name = "y")]
+ public float Y { get; set; }
+
+ [DataMember(Name = "z")]
+ public float Z { get; set; }
+
+ [DataMember(Name = "heading")]
+ public float H { get; set; }
+
+ public Position()
+ {
+ }
+
+ public Position(float x, float y, float z, float heading)
+ {
+ X = x;
+ Y = y;
+ Z = z;
+ H = heading;
+ }
+
+ public Position(float x, float y, float z)
+ {
+ X = x;
+ Y = y;
+ Z = z;
+ }
+
+ public Position Subtract(Position position)
+ {
+ X = X - position.X;
+ Y = Y - position.Y;
+ Z = Z - position.Z;
+ H = H - position.H;
+
+ return this;
+ }
+
+ public Position Add(Position position)
+ {
+ X = X + position.X;
+ Y = Y + position.Y;
+ Z = Z + position.Z;
+ H = H + position.H;
+
+ return this;
+ }
+
+ public Position Clone()
+ {
+ return new Position(X, Y, Z, H);
+ }
+
+ public Vector3 ToVector3()
+ {
+ return new Vector3(X, Y, Z);
+ }
+
+ public override string ToString()
+ {
+ return JsonConvert.SerializeObject(this);
+ }
+ }
+
+ public static class VectorExtensions
+ {
+ public static Position ToPosition(this Vector3 vector3, float heading = 0f)
+ {
+ return new Position(vector3.X, vector3.Y, vector3.Z, heading);
+ }
+ }
+
+ public class RotatablePosition
+ {
+ public float X { get; set; }
+ public float Y { get; set; }
+ public float Z { get; set; }
+ public float Yaw { get; set; }
+ public float Pitch { get; set; }
+ public float Roll { get; set; }
+
+ public RotatablePosition(float x, float y, float z, float yaw, float pitch, float roll)
+ {
+ X = x;
+ Y = y;
+ Z = z;
+ Yaw = yaw;
+ Pitch = pitch;
+ Roll = roll;
+ }
+ }
+}
diff --git a/VORP-Character/VORP.Shared/VORP.Shared.projitems b/VORP-Character/VORP.Shared/VORP.Shared.projitems
new file mode 100644
index 0000000..a30e67b
--- /dev/null
+++ b/VORP-Character/VORP.Shared/VORP.Shared.projitems
@@ -0,0 +1,14 @@
+
+
+
+ $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
+ true
+ 5fda9865-ab7c-4d8e-8e29-d445fd6d6303
+
+
+ VORP.Shared
+
+
+
+
+
\ No newline at end of file
diff --git a/VORP-Character/VORP.Shared/VORP.Shared.shproj b/VORP-Character/VORP.Shared/VORP.Shared.shproj
new file mode 100644
index 0000000..350bcc0
--- /dev/null
+++ b/VORP-Character/VORP.Shared/VORP.Shared.shproj
@@ -0,0 +1,13 @@
+
+
+
+ 5fda9865-ab7c-4d8e-8e29-d445fd6d6303
+ 14.0
+
+
+
+
+
+
+
+
diff --git a/VORP-Character/build/vorp_character/vorpcharacter_cl.net.dll b/VORP-Character/build/vorp_character/VORP.Character.Client.net.dll
similarity index 74%
rename from VORP-Character/build/vorp_character/vorpcharacter_cl.net.dll
rename to VORP-Character/build/vorp_character/VORP.Character.Client.net.dll
index 8039c7f..eedfbdd 100644
Binary files a/VORP-Character/build/vorp_character/vorpcharacter_cl.net.dll and b/VORP-Character/build/vorp_character/VORP.Character.Client.net.dll differ
diff --git a/VORP-Character/build/vorp_character/VORP.Character.Server.net.dll b/VORP-Character/build/vorp_character/VORP.Character.Server.net.dll
new file mode 100644
index 0000000..46a7f21
Binary files /dev/null and b/VORP-Character/build/vorp_character/VORP.Character.Server.net.dll differ
diff --git a/VORP-Character/build/vorp_character/fxmanifest.lua b/VORP-Character/build/vorp_character/fxmanifest.lua
index 3201d5b..7f0b14b 100644
--- a/VORP-Character/build/vorp_character/fxmanifest.lua
+++ b/VORP-Character/build/vorp_character/fxmanifest.lua
@@ -3,11 +3,11 @@ fx_version 'adamant'
rdr3_warning 'I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships.'
client_scripts {
- 'vorpcharacter_cl.net.dll'
+ '*.Client.net.dll'
}
server_scripts {
- 'vorpcharacter_sv.net.dll'
+ '*.Server.net.dll'
}
files {
@@ -16,4 +16,6 @@ files {
'Newtonsoft.Json.dll',
}
-debug_enabled 'false'
\ No newline at end of file
+debug_enabled 'false'
+vorp_core_csharp_new 'true'
+vorp_database_resource 'ghmattimysql'
\ No newline at end of file
diff --git a/VORP-Character/build/vorp_character/vorpcharacter_sv.net.dll b/VORP-Character/build/vorp_character/vorpcharacter_sv.net.dll
deleted file mode 100644
index 5ff1fa7..0000000
Binary files a/VORP-Character/build/vorp_character/vorpcharacter_sv.net.dll and /dev/null differ
diff --git a/VORP-Character/vorpcharacter_cl/Cache.cs b/VORP-Character/vorpcharacter_cl/Cache.cs
index 76cf188..c840d7d 100644
--- a/VORP-Character/vorpcharacter_cl/Cache.cs
+++ b/VORP-Character/vorpcharacter_cl/Cache.cs
@@ -1,6 +1,6 @@
using CitizenFX.Core.Native;
-namespace VorpCharacter
+namespace VORP.Character.Client
{
public class Cache
{
diff --git a/VORP-Character/vorpcharacter_cl/Diagnostics/Logger.cs b/VORP-Character/vorpcharacter_cl/Diagnostics/Logger.cs
index cfc30c7..30c489b 100644
--- a/VORP-Character/vorpcharacter_cl/Diagnostics/Logger.cs
+++ b/VORP-Character/vorpcharacter_cl/Diagnostics/Logger.cs
@@ -1,7 +1,7 @@
using CitizenFX.Core.Native;
using System;
-namespace VorpCharacter.Diagnostics
+namespace VORP.Character.Client.Diagnostics
{
class Logger
{
diff --git a/VORP-Character/vorpcharacter_cl/Enums/eAttributeCore.cs b/VORP-Character/vorpcharacter_cl/Enums/eAttributeCore.cs
index 76679aa..34e5c1d 100644
--- a/VORP-Character/vorpcharacter_cl/Enums/eAttributeCore.cs
+++ b/VORP-Character/vorpcharacter_cl/Enums/eAttributeCore.cs
@@ -1,4 +1,4 @@
-namespace VorpCharacter.Enums
+namespace VORP.Character.Client.Enums
{
public enum eAttributeCore : int
{
diff --git a/VORP-Character/vorpcharacter_cl/Enums/eControl.cs b/VORP-Character/vorpcharacter_cl/Enums/eControl.cs
index 93dec99..d8b96fc 100644
--- a/VORP-Character/vorpcharacter_cl/Enums/eControl.cs
+++ b/VORP-Character/vorpcharacter_cl/Enums/eControl.cs
@@ -1,4 +1,4 @@
-namespace VorpCharacter.Enums
+namespace VORP.Character.Client.Enums
{
public enum eControl : uint
{
diff --git a/VORP-Character/vorpcharacter_cl/Enums/eModel.cs b/VORP-Character/vorpcharacter_cl/Enums/eModel.cs
index 7a73255..5532a03 100644
--- a/VORP-Character/vorpcharacter_cl/Enums/eModel.cs
+++ b/VORP-Character/vorpcharacter_cl/Enums/eModel.cs
@@ -1,4 +1,4 @@
-namespace VorpCharacter.Enums
+namespace VORP.Character.Client.Enums
{
public enum eModel : uint
{
diff --git a/VORP-Character/vorpcharacter_cl/Enums/ePedComponent.cs b/VORP-Character/vorpcharacter_cl/Enums/ePedComponent.cs
index fe8a06e..3985397 100644
--- a/VORP-Character/vorpcharacter_cl/Enums/ePedComponent.cs
+++ b/VORP-Character/vorpcharacter_cl/Enums/ePedComponent.cs
@@ -1,4 +1,4 @@
-namespace VorpCharacter.Enums
+namespace VORP.Character.Client.Enums
{
public enum ePedComponent : uint
{
diff --git a/VORP-Character/vorpcharacter_cl/Enums/ePedFaceFeature.cs b/VORP-Character/vorpcharacter_cl/Enums/ePedFaceFeature.cs
index 454fc95..194bd11 100644
--- a/VORP-Character/vorpcharacter_cl/Enums/ePedFaceFeature.cs
+++ b/VORP-Character/vorpcharacter_cl/Enums/ePedFaceFeature.cs
@@ -1,4 +1,4 @@
-namespace VorpCharacter.Enums
+namespace VORP.Character.Client.Enums
{
public enum ePedFaceFeature : uint
{
diff --git a/VORP-Character/vorpcharacter_cl/Extensions/Common.cs b/VORP-Character/vorpcharacter_cl/Extensions/Common.cs
index 5d9971a..64e0575 100644
--- a/VORP-Character/vorpcharacter_cl/Extensions/Common.cs
+++ b/VORP-Character/vorpcharacter_cl/Extensions/Common.cs
@@ -1,7 +1,7 @@
using CitizenFX.Core;
-using VorpCharacter.Model;
+using VORP.Character.Client.Model;
-namespace VorpCharacter.Extensions
+namespace VORP.Character.Client.Extensions
{
static class Common
{
diff --git a/VORP-Character/vorpcharacter_cl/Menus/ClothesMenu.cs b/VORP-Character/vorpcharacter_cl/Menus/ClothesMenu.cs
index 7ee259d..041854a 100644
--- a/VORP-Character/vorpcharacter_cl/Menus/ClothesMenu.cs
+++ b/VORP-Character/vorpcharacter_cl/Menus/ClothesMenu.cs
@@ -1,11 +1,11 @@
using CitizenFX.Core;
using MenuAPI;
using System.Collections.Generic;
-using VorpCharacter.Extensions;
-using VorpCharacter.Script;
-using VorpCharacter.Utils;
+using VORP.Character.Client.Extensions;
+using VORP.Character.Client.Script;
+using VORP.Character.Client.Utils;
-namespace VorpCharacter.Menus
+namespace VORP.Character.Client.Menus
{
class ClothesMenu
{
diff --git a/VORP-Character/vorpcharacter_cl/Menus/FaceMenu.cs b/VORP-Character/vorpcharacter_cl/Menus/FaceMenu.cs
index 65394c9..d43d222 100644
--- a/VORP-Character/vorpcharacter_cl/Menus/FaceMenu.cs
+++ b/VORP-Character/vorpcharacter_cl/Menus/FaceMenu.cs
@@ -1,10 +1,10 @@
using CitizenFX.Core;
using MenuAPI;
using System.Collections.Generic;
-using VorpCharacter.Extensions;
-using VorpCharacter.Script;
+using VORP.Character.Client.Extensions;
+using VORP.Character.Client.Script;
-namespace VorpCharacter.Menus
+namespace VORP.Character.Client.Menus
{
class FaceMenu
{
diff --git a/VORP-Character/vorpcharacter_cl/Menus/MainMenu.cs b/VORP-Character/vorpcharacter_cl/Menus/MainMenu.cs
index 8382bb5..a8a5e26 100644
--- a/VORP-Character/vorpcharacter_cl/Menus/MainMenu.cs
+++ b/VORP-Character/vorpcharacter_cl/Menus/MainMenu.cs
@@ -2,11 +2,11 @@
using MenuAPI;
using System.Collections.Generic;
using System.Linq;
-using VorpCharacter.Extensions;
-using VorpCharacter.Script;
-using VorpCharacter.Utils;
+using VORP.Character.Client.Extensions;
+using VORP.Character.Client.Script;
+using VORP.Character.Client.Utils;
-namespace VorpCharacter.Menus
+namespace VORP.Character.Client.Menus
{
class MainMenu
{
diff --git a/VORP-Character/vorpcharacter_cl/Menus/SkinMenu.cs b/VORP-Character/vorpcharacter_cl/Menus/SkinMenu.cs
index 794438d..b5f987c 100644
--- a/VORP-Character/vorpcharacter_cl/Menus/SkinMenu.cs
+++ b/VORP-Character/vorpcharacter_cl/Menus/SkinMenu.cs
@@ -3,11 +3,11 @@
using MenuAPI;
using System.Collections.Generic;
using System.Linq;
-using VorpCharacter.Extensions;
-using VorpCharacter.Script;
-using VorpCharacter.Utils;
+using VORP.Character.Client.Extensions;
+using VORP.Character.Client.Script;
+using VORP.Character.Client.Utils;
-namespace VorpCharacter.Menus
+namespace VORP.Character.Client.Menus
{
/*
* Note:
diff --git a/VORP-Character/vorpcharacter_cl/Model/Config.cs b/VORP-Character/vorpcharacter_cl/Model/Config.cs
index 1e3687d..3b12936 100644
--- a/VORP-Character/vorpcharacter_cl/Model/Config.cs
+++ b/VORP-Character/vorpcharacter_cl/Model/Config.cs
@@ -1,7 +1,7 @@
using System.Collections.Generic;
using System.Runtime.Serialization;
-namespace VorpCharacter.Model
+namespace VORP.Character.Client.Model
{
[DataContract]
public class Male
diff --git a/VORP-Character/vorpcharacter_cl/Model/Position.cs b/VORP-Character/vorpcharacter_cl/Model/Position.cs
index 4160df8..00e409c 100644
--- a/VORP-Character/vorpcharacter_cl/Model/Position.cs
+++ b/VORP-Character/vorpcharacter_cl/Model/Position.cs
@@ -1,4 +1,4 @@
-namespace VorpCharacter.Model
+namespace VORP.Character.Client.Model
{
public class Position
{
diff --git a/VORP-Character/vorpcharacter_cl/Model/VorpPlayer.cs b/VORP-Character/vorpcharacter_cl/Model/VorpPlayer.cs
index 33a0a5e..c994963 100644
--- a/VORP-Character/vorpcharacter_cl/Model/VorpPlayer.cs
+++ b/VORP-Character/vorpcharacter_cl/Model/VorpPlayer.cs
@@ -1,7 +1,7 @@
using CitizenFX.Core;
using static CitizenFX.Core.Native.API;
-namespace VorpCharacter.Model
+namespace VORP.Character.Client.Model
{
public static class VorpPlayer
{
diff --git a/VORP-Character/vorpcharacter_cl/PluginManager.cs b/VORP-Character/vorpcharacter_cl/PluginManager.cs
index c2cfd1a..1d05e15 100644
--- a/VORP-Character/vorpcharacter_cl/PluginManager.cs
+++ b/VORP-Character/vorpcharacter_cl/PluginManager.cs
@@ -3,11 +3,11 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
-using VorpCharacter.Diagnostics;
-using VorpCharacter.Model;
+using VORP.Character.Client.Diagnostics;
+using VORP.Character.Client.Model;
using static CitizenFX.Core.Native.API;
-namespace VorpCharacter
+namespace VORP.Character.Client
{
public class PluginManager : BaseScript
{
diff --git a/VORP-Character/vorpcharacter_cl/Script/CreateCharacter.cs b/VORP-Character/vorpcharacter_cl/Script/CreateCharacter.cs
index 974eda3..6e23e15 100644
--- a/VORP-Character/vorpcharacter_cl/Script/CreateCharacter.cs
+++ b/VORP-Character/vorpcharacter_cl/Script/CreateCharacter.cs
@@ -6,13 +6,13 @@
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
-using VorpCharacter.Enums;
-using VorpCharacter.Extensions;
-using VorpCharacter.Model;
-using VorpCharacter.Utils;
+using VORP.Character.Client.Enums;
+using VORP.Character.Client.Extensions;
+using VORP.Character.Client.Model;
+using VORP.Character.Client.Utils;
using static CitizenFX.Core.Native.API;
-namespace VorpCharacter.Script
+namespace VORP.Character.Client.Script
{
public class CreateCharacter : BaseScript
{
diff --git a/VORP-Character/vorpcharacter_cl/Script/LoadPlayer.cs b/VORP-Character/vorpcharacter_cl/Script/LoadPlayer.cs
index ecf460d..dde7fe8 100644
--- a/VORP-Character/vorpcharacter_cl/Script/LoadPlayer.cs
+++ b/VORP-Character/vorpcharacter_cl/Script/LoadPlayer.cs
@@ -7,18 +7,18 @@
using System.Dynamic;
using System.Linq;
using System.Threading.Tasks;
-using VorpCharacter.Diagnostics;
-using VorpCharacter.Enums;
-using VorpCharacter.Utils;
+using VORP.Character.Client.Diagnostics;
+using VORP.Character.Client.Enums;
+using VORP.Character.Client.Utils;
using static CitizenFX.Core.Native.API;
-namespace VorpCharacter.Script
+namespace VORP.Character.Client.Script
{
public class LoadPlayer : BaseScript
{
public static LoadPlayer Instance { get; private set; }
public static Dictionary cache_skin = new Dictionary();
- public static Dictionary cache_cloths = new Dictionary();
+ public static Dictionary cache_cloths = new Dictionary();
public static bool IsCurrentlyRunningSetup = false;
public LoadPlayer()
@@ -86,7 +86,7 @@ private async void ReloadCharacterSkin(string part = "")
if (!string.IsNullOrEmpty(clothes))
{
- cache_cloths = JsonConvert.DeserializeObject>(clothes);
+ cache_cloths = JsonConvert.DeserializeObject>(clothes);
#if DEVELOPMENT
Logger.Debug($"Loaded clothes from resource store");
#endif
@@ -117,7 +117,7 @@ private async void reloadPlayerComps(ExpandoObject sskin, ExpandoObject scloth)
skin[s.Key] = s.Value.ToString();
}
- Dictionary cloths = new Dictionary();
+ Dictionary cloths = new Dictionary();
foreach (var s in scloth)
{
@@ -149,7 +149,7 @@ public async Task LoadPlayerSkin(string s_skin, string s_cloths)
skin[s.Key] = s.Value.ToString();
}
- Dictionary cloths = new Dictionary();
+ Dictionary cloths = new Dictionary();
foreach (var s in jCloth)
{
@@ -197,7 +197,7 @@ public static async void ApplyDefaultSkinSettings(int pedHandle)
Utilities.UpdatePedVariation(pedHandle);
}
- public async Task SetupCharacter(bool isPlayer, Dictionary skin, Dictionary clothes)
+ public async Task SetupCharacter(bool isPlayer, Dictionary skin, Dictionary clothes)
{
try
{
@@ -491,7 +491,7 @@ private static void SetPedFaceTextures(int pedHandle, Dictionary
Utilities.UpdatePedVariation(pedHandle, true);
}
- public static void SetPedComponents(Dictionary clothes, int pedHandle)
+ public static void SetPedComponents(Dictionary clothes, int pedHandle)
{
SetPlayerComponent(pedHandle, ePedComponent.Hats, "Hat", clothes);
SetPlayerComponent(pedHandle, ePedComponent.EyeWear, "EyeWear", clothes);
@@ -553,7 +553,7 @@ public static uint ConvertValue(string s)
}
// what does this do really?
- public static void SetPlayerComponent(int pedHandle, ePedComponent pedComponent, string component, Dictionary clothes)
+ public static void SetPlayerComponent(int pedHandle, ePedComponent pedComponent, string component, Dictionary clothes)
{
if (!clothes.ContainsKey(component)) return;
@@ -566,7 +566,7 @@ public static void SetPlayerComponent(int pedHandle, ePedComponent pedComponent,
Utilities.SetComponent(pedHandle, pedComponent, clothes[component]);
}
- private async Task IsLoaded(Dictionary skin, Dictionary clothes)
+ private async Task IsLoaded(Dictionary skin, Dictionary clothes)
{
await Delay(1500);
bool loaded = Utilities.IsPedReadyToRender(Cache.PlayerPedId);
diff --git a/VORP-Character/vorpcharacter_cl/Script/SelectCharacter.cs b/VORP-Character/vorpcharacter_cl/Script/SelectCharacter.cs
index ae4b419..8ba330b 100644
--- a/VORP-Character/vorpcharacter_cl/Script/SelectCharacter.cs
+++ b/VORP-Character/vorpcharacter_cl/Script/SelectCharacter.cs
@@ -5,12 +5,13 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
-using VorpCharacter.Diagnostics;
-using VorpCharacter.Enums;
-using VorpCharacter.Extensions;
-using VorpCharacter.Utils;
+using VORP.Character.Client.Diagnostics;
+using VORP.Character.Client.Enums;
+using VORP.Character.Client.Extensions;
+using VORP.Character.Client.Model;
+using VORP.Character.Client.Utils;
-namespace VorpCharacter.Script
+namespace VORP.Character.Client.Script
{
public class SelectCharacter : BaseScript
{
@@ -54,14 +55,14 @@ private async void SpawnCharacter(dynamic myChar)
string json_skin = myChar[0].skin;
string json_components = myChar[0].components;
string json_coords = myChar[0].coords;
- JObject jPos = JObject.Parse(json_coords);
+ Position position = JsonConvert.DeserializeObject(json_coords);
// TriggerEvent("vorpcharacter:loadPlayerSkin", json_skin, json_components); // WHY?! just call the class method
await LoadPlayer.Instance.LoadPlayerSkin(json_skin, json_components);
API.DoScreenFadeOut(1000);
await Delay(800);
- Vector3 playerCoords = new Vector3(jPos["x"].ToObject(), jPos["y"].ToObject(), jPos["z"].ToObject());
+ Vector3 playerCoords = position.AsVector();
bool isDead = false;
try
{
@@ -71,10 +72,17 @@ private async void SpawnCharacter(dynamic myChar)
{
Debug.WriteLine(e.Message);
}
- float heading = jPos["heading"].ToObject();
+ float heading = position.H;
TriggerEvent("vorp:initCharacter", playerCoords, heading, isDead);
- await Delay(1000);
+ await Delay(2000);
+ int playerPedId = API.PlayerPedId();
+ API.SetEntityCoords(playerPedId, position.X, position.Y, position.Z, false, false, false, true);
+ API.SetEntityHeading(playerPedId, position.H);
API.DoScreenFadeIn(1000);
+ while(API.IsScreenFadingIn())
+ {
+ await BaseScript.Delay(100);
+ }
}
catch (Exception ex)
{
@@ -215,7 +223,7 @@ public async Task CharSelect()
string json_skin = myChars[selectedChar].skin; // make this a class
string json_components = myChars[selectedChar].components;
string json_coords = myChars[selectedChar].coords;
- JObject jPos = JObject.Parse(json_coords);
+ Position pos = JsonConvert.DeserializeObject(json_coords);
await LoadPlayer.Instance.LoadPlayerSkin(json_skin, json_components);
@@ -227,7 +235,7 @@ public async Task CharSelect()
API.SetCamActive(mainCamera, false);
API.DestroyCam(mainCamera, true);
API.RenderScriptCams(true, true, 1000, true, true, 0);
- Vector3 playerCoords = new Vector3(jPos["x"].ToObject(), jPos["y"].ToObject(), jPos["z"].ToObject());
+ Vector3 playerCoords = pos.AsVector();
bool isDead = false;
try
{
@@ -237,9 +245,13 @@ public async Task CharSelect()
{
Debug.WriteLine(e.Message);
}
- float heading = jPos["heading"].ToObject();
+ float heading = pos.H;
TriggerEvent("vorp:initCharacter", playerCoords, heading, isDead);
+ int playerPedId = API.PlayerPedId();
+ API.SetEntityCoords(playerPedId, pos.X, pos.Y, pos.Z, false, false, false, true);
+ API.SetEntityHeading(playerPedId, pos.H);
+
await Delay(1000);
API.DoScreenFadeIn(1000);
@@ -390,7 +402,7 @@ public async Task LoadNpcComps(string skin_json, string cloths_json)
skin[s.Key] = s.Value.ToString();
}
- Dictionary clothes = new Dictionary();
+ Dictionary clothes = new Dictionary();
foreach (var s in jcomp)
{
diff --git a/VORP-Character/vorpcharacter_cl/Utils/Commands.cs b/VORP-Character/vorpcharacter_cl/Utils/Commands.cs
index dfae0d6..455b2b6 100644
--- a/VORP-Character/vorpcharacter_cl/Utils/Commands.cs
+++ b/VORP-Character/vorpcharacter_cl/Utils/Commands.cs
@@ -1,10 +1,10 @@
using CitizenFX.Core;
using CitizenFX.Core.Native;
using System;
-using VorpCharacter.Extensions;
-using VorpCharacter.Script;
+using VORP.Character.Client.Extensions;
+using VORP.Character.Client.Script;
-namespace VorpCharacter.Utils
+namespace VORP.Character.Client.Utils
{
public class Commands : BaseScript
{
diff --git a/VORP-Character/vorpcharacter_cl/Utils/Micellanea.cs b/VORP-Character/vorpcharacter_cl/Utils/Micellanea.cs
index 8095ff7..65615cf 100644
--- a/VORP-Character/vorpcharacter_cl/Utils/Micellanea.cs
+++ b/VORP-Character/vorpcharacter_cl/Utils/Micellanea.cs
@@ -1,7 +1,7 @@
using CitizenFX.Core.Native;
using System.Threading.Tasks;
-namespace VorpCharacter.Utils
+namespace VORP.Character.Client.Utils
{
public class Miscellanea
{
diff --git a/VORP-Character/vorpcharacter_cl/Utils/SkinsUtils.cs b/VORP-Character/vorpcharacter_cl/Utils/SkinsUtils.cs
index d2b85a0..93c1ffb 100644
--- a/VORP-Character/vorpcharacter_cl/Utils/SkinsUtils.cs
+++ b/VORP-Character/vorpcharacter_cl/Utils/SkinsUtils.cs
@@ -2,7 +2,7 @@
using System;
using System.Collections.Generic;
-namespace VorpCharacter.Utils
+namespace VORP.Character.Client.Utils
{
public class SkinsUtils : BaseScript
{
@@ -9114,7 +9114,6 @@ public void GetSkinUtils(string key, dynamic cb)
public static List BOOTS_MALE = new List()
{
- 0x38B4CA64,
0xE90F4791,
0xDF063937,
0xC9B70445,
@@ -9276,194 +9275,7 @@ public void GetSkinUtils(string key, dynamic cb)
0xE953A7C5,
0xD716034A,
0x8112D739,
- 0x03420118,
- 0x0395F7F3,
- 0x063D5611,
- 0x0939BB82,
- 0x095D1462,
- 0x0A19AE06,
- 0x0C6C767D,
- 0x114F9366,
- 0x11A11C2E,
- 0x138B28BE,
- 0x16F1960A,
- 0x17343501,
- 0x189227AA,
- 0x191B28F3,
- 0x191F0FE6,
- 0x192C2A4B,
- 0x19EB1B3D,
- 0x1B3EFDA7,
- 0x1CCEE58D,
- 0x1E08E51C,
- 0x1E3AA477,
- 0x1EF2B6A3,
- 0x1FC0B86D,
- 0x201930F9,
- 0x2243222E,
- 0x24CBC01D,
- 0x25C9CD3B,
- 0x2A72FB29,
- 0x2EA6B02C,
- 0x300CE1C1,
- 0x312A5CC0,
- 0x32430B41,
- 0x3B194911,
- 0x3B67ED55,
- 0x3C4F730A,
- 0x3DB4BCC7,
- 0x3DDA6C7B,
- 0x3E8B73D3,
- 0x3F9485C5,
- 0x40568254,
- 0x4230AD6B,
- 0x432FFAD1,
- 0x44789999,
- 0x46D4EB51,
- 0x4818E747,
- 0x48391E97,
- 0x4B87586C,
- 0x4E362308,
- 0x4E36EF4C,
- 0x4E9704F8,
- 0x4FAF30C2,
- 0x50BAA670,
- 0x546BF6A8,
- 0x55A09342,
- 0x55C73C36,
- 0x55F7BA14,
- 0x5710BCAD,
- 0x5884EBD1,
- 0x5A4C3D3F,
- 0x5D8BB19C,
- 0x60419361,
- 0x609E2906,
- 0x61A69CF2,
- 0x631D56E2,
- 0x637D2E60,
- 0x63EFF0E9,
- 0x64106871,
- 0x641250CB,
- 0x64634F62,
- 0x649C233F,
- 0x64BDD7A0,
- 0x66A58EA8,
- 0x67491827,
- 0x6750478B,
- 0x68332C52,
- 0x6846D489,
- 0x6974A5C3,
- 0x6BF4B18E,
- 0x6DB0E4ED,
- 0x6DC742F4,
- 0x6DF3526B,
- 0x7250F549,
- 0x73AF434A,
- 0x750CE304,
- 0x782DFFEB,
- 0x7A02028F,
- 0x7A05F807,
- 0x7AAB4F5D,
- 0x7CD7CC8D,
- 0x7D2AA35E,
- 0x7E325609,
- 0x7EAAE4BB,
- 0x8022A6FF,
- 0x812C0B02,
- 0x8239E741,
- 0x847234D2,
- 0x8555F2CD,
- 0x857AC60D,
- 0x88F28C53,
- 0x890CEC20,
- 0x8A74D646,
- 0x8A81FD04,
- 0x8AD91AAC,
- 0x8D39289A,
- 0x8DD8426A,
- 0x8FFD8459,
- 0x90442F13,
- 0x93519F75,
- 0x958A2F0F,
- 0x95BA306E,
- 0x9AA788F7,
- 0x9BEB45FE,
- 0x9DA4C9D4,
- 0x9DE197AE,
- 0x9FF4A7ED,
- 0xA08EED0B,
- 0xA1264647,
- 0xA16E3BAE,
- 0xA4856FC4,
- 0xA74AA63E,
- 0xA8EB9902,
- 0xA9761A3F,
- 0xA9DFE462,
- 0xAA0CE241,
- 0xAA183BF9,
- 0xADB89CCD,
- 0xAEB52702,
- 0xAF1FB79B,
- 0xAF55B8B1,
- 0xB043C88B,
- 0xB3C54190,
- 0xB3F54B95,
- 0xB8E37861,
- 0xBA84D0F4,
- 0xBB6D22C7,
- 0xBB8B3872,
- 0xBC42F16F,
- 0xBC52606D,
- 0xBCE0531C,
- 0xBD1FFF39,
- 0xBD67C467,
- 0xC1644333,
- 0xC3876F12,
- 0xC3C41616,
- 0xC4875039,
- 0xC51C1AF6,
- 0xC5E8D324,
- 0xC63AB2C2,
- 0xC6C83449,
- 0xC99989B6,
- 0xCBA8733B,
- 0xCE305EC5,
- 0xCF12F781,
- 0xCF6C22D2,
- 0xD3FC9EB7,
- 0xD4837059,
- 0xD5F6BCAB,
- 0xD6FB09E0,
- 0xD7484F15,
- 0xD7ACDB46,
- 0xD7FD5647,
- 0xD8A7A217,
- 0xDC925FDD,
- 0xE079D1B1,
- 0xE20F3ADC,
- 0xE210CABB,
- 0xE5B5C43C,
- 0xE5EBD480,
- 0xE711531B,
- 0xE9447E75,
- 0xE9EB9D6E,
- 0xEFD964AF,
- 0xF3F960C3,
- 0xF476468D,
- 0xF48EB2B4,
- 0xF57F940E,
- 0xF5C23C25,
- 0xF69C7BC6,
- 0xF6BA67E1,
- 0xF6D71DD4,
- 0xF75CDF81,
- 0xF86B8EE6,
- 0xF8B77317,
- 0xFA2ED202,
- 0xFCF27DDE,
- 0xFD530B63,
- 0xFD985535,
- 0xFF2273C5,
+ 0x38B4CA64,
0xF2F4775D,
0x058F9C97,
0xBB73885C,
@@ -9650,6 +9462,10 @@ public void GetSkinUtils(string key, dynamic cb)
0x451793B6,
0x0D10A3A9,
0x9D19C2DD,
+ 0xE5EBD480,
+ 0x812C0B02,
+ 0x5A4C3D3F,
+ 0x641250CB,
0x31BB4E15,
0xDC81A3A3,
0xCD1F04DE,
@@ -9660,6 +9476,10 @@ public void GetSkinUtils(string key, dynamic cb)
0xB1FBCE94,
0xD99D9A1F,
0x2B27BDB6,
+ 0x19EB1B3D,
+ 0x7EAAE4BB,
+ 0x6DC742F4,
+ 0x637D2E60,
0x8ABCAA9F,
0xC6972257,
0x195A47E0,
@@ -9710,6 +9530,10 @@ public void GetSkinUtils(string key, dynamic cb)
0x4FD9275E,
0x5D5CC265,
0x0AD88C6E,
+ 0x191B28F3,
+ 0x3E8B73D3,
+ 0xD3FC9EB7,
+ 0xE20F3ADC,
0xEEB7CE03,
0xF9B5E3FF,
0x0B3A8708,
@@ -9870,15 +9694,212 @@ public void GetSkinUtils(string key, dynamic cb)
0xAA6F79CD,
0x9D87DFFE,
0xADBD7F3D,
+ 0xCE305EC5,
+ 0x44789999,
+ 0x55C73C36,
+ 0x631D56E2,
+ 0x7250F549,
+ 0xA9DFE462,
+ 0xC51C1AF6,
+ 0xD5F6BCAB,
+ 0xE079D1B1,
+ 0xFD530B63,
+ 0x782DFFEB,
+ 0x2A72FB29,
+ 0xD7FD5647,
+ 0xC63AB2C2,
+ 0x8DD8426A,
+ 0x8022A6FF,
+ 0x32430B41,
+ 0xA4856FC4,
+ 0xDC925FDD,
+ 0xC6C83449,
+ 0xD7484F15,
0x1983444E,
+ 0x913D71FD,
+ 0x5F4C0E1B,
+ 0x6DEAAB58,
+ 0x3C3C47FC,
+ 0x4A77E473,
+ 0x10ABF0D8,
+ 0x26D31D2A,
+ 0x895CE24C,
+ 0x9F920EBA,
+ 0x7A13C28A,
0x68C13C09,
+ 0xA190EBD4,
+ 0x2FC68841,
+ 0x3CB5A21F,
+ 0x4EF3469A,
+ 0x87E9B87A,
+ 0x9A2C5CFF,
+ 0xA43D7121,
+ 0x368615B4,
+ 0x53A84FF8,
+ 0xEE810487,
0x9C08385F,
0xC9CAA474,
0x727BABB3,
0x6BF311D8,
+ 0x432FFAD1,
+ 0x6DB0E4ED,
+ 0xA74AA63E,
+ 0x857AC60D,
0x22B62CE4,
0x0825A807,
0xE1EE57AB,
+ 0x03420118,
+ 0x0395F7F3,
+ 0x063D5611,
+ 0x0939BB82,
+ 0x095D1462,
+ 0x0A19AE06,
+ 0x0C6C767D,
+ 0x114F9366,
+ 0x11A11C2E,
+ 0x138B28BE,
+ 0x16F1960A,
+ 0x17343501,
+ 0x189227AA,
+ 0x191F0FE6,
+ 0x192C2A4B,
+ 0x1B3EFDA7,
+ 0x1CCEE58D,
+ 0x1E08E51C,
+ 0x1E3AA477,
+ 0x1EF2B6A3,
+ 0x1FC0B86D,
+ 0x201930F9,
+ 0x2243222E,
+ 0x24CBC01D,
+ 0x25C9CD3B,
+ 0x2EA6B02C,
+ 0x300CE1C1,
+ 0x312A5CC0,
+ 0x3B194911,
+ 0x3B67ED55,
+ 0x3C4F730A,
+ 0x3DB4BCC7,
+ 0x3DDA6C7B,
+ 0x3F9485C5,
+ 0x40568254,
+ 0x4230AD6B,
+ 0x46D4EB51,
+ 0x4818E747,
+ 0x48391E97,
+ 0x4B87586C,
+ 0x4E362308,
+ 0x4E36EF4C,
+ 0x4E9704F8,
+ 0x4FAF30C2,
+ 0x50BAA670,
+ 0x546BF6A8,
+ 0x55A09342,
+ 0x55F7BA14,
+ 0x5710BCAD,
+ 0x5884EBD1,
+ 0x5D8BB19C,
+ 0x60419361,
+ 0x609E2906,
+ 0x61A69CF2,
+ 0x63EFF0E9,
+ 0x64106871,
+ 0x64634F62,
+ 0x649C233F,
+ 0x64BDD7A0,
+ 0x66A58EA8,
+ 0x67491827,
+ 0x6750478B,
+ 0x68332C52,
+ 0x6846D489,
+ 0x6974A5C3,
+ 0x6BF4B18E,
+ 0x6DF3526B,
+ 0x73AF434A,
+ 0x750CE304,
+ 0x7A02028F,
+ 0x7A05F807,
+ 0x7AAB4F5D,
+ 0x7CD7CC8D,
+ 0x7D2AA35E,
+ 0x7E325609,
+ 0x8239E741,
+ 0x847234D2,
+ 0x8555F2CD,
+ 0x88F28C53,
+ 0x890CEC20,
+ 0x8A74D646,
+ 0x8A81FD04,
+ 0x8AD91AAC,
+ 0x8D39289A,
+ 0x8FFD8459,
+ 0x90442F13,
+ 0x93519F75,
+ 0x958A2F0F,
+ 0x95BA306E,
+ 0x9AA788F7,
+ 0x9BEB45FE,
+ 0x9DA4C9D4,
+ 0x9DE197AE,
+ 0x9FF4A7ED,
+ 0xA08EED0B,
+ 0xA1264647,
+ 0xA16E3BAE,
+ 0xA8EB9902,
+ 0xA9761A3F,
+ 0xAA0CE241,
+ 0xAA183BF9,
+ 0xADB89CCD,
+ 0xAEB52702,
+ 0xAF1FB79B,
+ 0xAF55B8B1,
+ 0xB043C88B,
+ 0xB3C54190,
+ 0xB3F54B95,
+ 0xB8E37861,
+ 0xBA84D0F4,
+ 0xBB6D22C7,
+ 0xBB8B3872,
+ 0xBC42F16F,
+ 0xBC52606D,
+ 0xBCE0531C,
+ 0xBD1FFF39,
+ 0xBD67C467,
+ 0xC1644333,
+ 0xC3876F12,
+ 0xC3C41616,
+ 0xC4875039,
+ 0xC5E8D324,
+ 0xC99989B6,
+ 0xCBA8733B,
+ 0xCF12F781,
+ 0xCF6C22D2,
+ 0xD4837059,
+ 0xD6FB09E0,
+ 0xD7ACDB46,
+ 0xD8A7A217,
+ 0xE210CABB,
+ 0xE5B5C43C,
+ 0xE711531B,
+ 0xE82DEAC8,
+ 0xE9447E75,
+ 0xE9EB9D6E,
+ 0xEFD964AF,
+ 0xF3F960C3,
+ 0xF476468D,
+ 0xF48EB2B4,
+ 0xF57F940E,
+ 0xF5C23C25,
+ 0xF69C7BC6,
+ 0xF6BA67E1,
+ 0xF6D71DD4,
+ 0xF75CDF81,
+ 0xF86B8EE6,
+ 0xF8B77317,
+ 0xFA2ED202,
+ 0xFCF27DDE,
+ 0xFD985535,
+ 0xFF2273C5
};
public static List BOOTS_FEMALE = new List()
diff --git a/VORP-Character/vorpcharacter_cl/Utils/Utilities.cs b/VORP-Character/vorpcharacter_cl/Utils/Utilities.cs
index 2647b48..36c183c 100644
--- a/VORP-Character/vorpcharacter_cl/Utils/Utilities.cs
+++ b/VORP-Character/vorpcharacter_cl/Utils/Utilities.cs
@@ -3,15 +3,14 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
-using VorpCharacter.Diagnostics;
-using VorpCharacter.Enums;
+using VORP.Character.Client.Diagnostics;
+using VORP.Character.Client.Enums;
using static CitizenFX.Core.Native.API;
-namespace VorpCharacter.Utils
+namespace VORP.Character.Client.Utils
{
internal class Utilities
{
- const int MAX_COMPONENT_CHANGE_DELAY = 10;
public static Random RANDOM = new Random();
public static void SetAttributeCoreValue(int pedHandle, eAttributeCore attribute, int value)
@@ -45,7 +44,7 @@ public static bool IsPedReadyToRender(int pedHandle)
return Function.Call((Hash)0xA0BC8FAED8CFEB3C, pedHandle);
}
- public static void RemoveTagFromMetaPed(int pedHandle, uint component, int p2 = 0, int delay = MAX_COMPONENT_CHANGE_DELAY)
+ public static void RemoveTagFromMetaPed(int pedHandle, uint component, int p2 = 0)
{
Function.Call((Hash)0xD710A5007C2AC539, pedHandle, component, p2);
UpdatePedVariation(pedHandle);
@@ -80,11 +79,10 @@ public static void SetPedFaceFeature(int pedHandle, ePedFaceFeature pedFaceFeatu
if (updateVariation) UpdatePedVariation(pedHandle);
}
- public static async Task SetPedFaceFeature(int pedHandle, ePedFaceFeature pedFaceFeature, float value, bool updateVariation = false, int delay = MAX_COMPONENT_CHANGE_DELAY)
+ public static async Task SetPedFaceFeature(int pedHandle, ePedFaceFeature pedFaceFeature, float value, bool updateVariation = false)
{
Function.Call((Hash)0x5653AB26C82938CF, pedHandle, (uint)pedFaceFeature, value);
if (updateVariation) UpdatePedVariation(pedHandle);
- await BaseScript.Delay(delay);
}
public static void SetComponent(int pedHandle, ePedComponent componentCategory, long componentHash)
diff --git a/VORP-Character/vorpcharacter_cl/vorpcharacter_cl.csproj b/VORP-Character/vorpcharacter_cl/VORP.Character.Client.csproj
similarity index 91%
rename from VORP-Character/vorpcharacter_cl/vorpcharacter_cl.csproj
rename to VORP-Character/vorpcharacter_cl/VORP.Character.Client.csproj
index 7f0b87d..d599a67 100644
--- a/VORP-Character/vorpcharacter_cl/vorpcharacter_cl.csproj
+++ b/VORP-Character/vorpcharacter_cl/VORP.Character.Client.csproj
@@ -7,12 +7,13 @@
{51083C52-7FE7-422E-AED9-023D0903C6E6}
Library
Properties
- VorpCharacter
- vorpcharacter_cl.net
- v4.5.2
+ VORP.Character
+ VORP.Character.Client.net
+ v4.7.2
512
true
latest
+
true
@@ -91,13 +92,13 @@
-
+
Always
-
+
Always
-
+
Always
diff --git a/VORP-Character/vorpcharacter_sv/Resources/server-config.json b/VORP-Character/vorpcharacter_sv/Config/server-config.json
similarity index 100%
rename from VORP-Character/vorpcharacter_sv/Resources/server-config.json
rename to VORP-Character/vorpcharacter_sv/Config/server-config.json
diff --git a/VORP-Character/vorpcharacter_sv/Diagnostics/Logger.cs b/VORP-Character/vorpcharacter_sv/Diagnostics/Logger.cs
index cfc30c7..a389014 100644
--- a/VORP-Character/vorpcharacter_sv/Diagnostics/Logger.cs
+++ b/VORP-Character/vorpcharacter_sv/Diagnostics/Logger.cs
@@ -1,7 +1,7 @@
using CitizenFX.Core.Native;
using System;
-namespace VorpCharacter.Diagnostics
+namespace VORP.Character.Server.Diagnostics
{
class Logger
{
diff --git a/VORP-Character/vorpcharacter_sv/Extensions/Common.cs b/VORP-Character/vorpcharacter_sv/Extensions/Common.cs
index 57e5281..78add67 100644
--- a/VORP-Character/vorpcharacter_sv/Extensions/Common.cs
+++ b/VORP-Character/vorpcharacter_sv/Extensions/Common.cs
@@ -1,10 +1,16 @@
-using CitizenFX.Core;
-
-namespace VorpCharacter.Extensions
+namespace VORP.Character.Server.Extensions
{
static class Common
{
- public static dynamic GetCoreUser(this Player player) => PluginManager.CORE.getUser(int.Parse(player.Handle));
+ public static dynamic GetCoreUser(this Player player)
+ {
+ if (PluginManager.USE_CORE_EXPORTS)
+ {
+ return PluginManager.Instance.ExportRegistry["vorp_core"].GetUser(player.Handle);
+ }
+
+ return PluginManager.CORE.getUser(int.Parse(player.Handle));
+ }
public static dynamic GetCoreUserCharacter(this Player player) => player.GetCoreUser().getUsedCharacter;
public static dynamic GetCoreUserCharacters(this Player player) => player.GetCoreUser().getUserCharacters;
public static string SteamHandle(this Player player) => $"steam:{player.Identifiers["steam"]}";
diff --git a/VORP-Character/vorpcharacter_sv/Models/Discord/DiscordAvatar.cs b/VORP-Character/vorpcharacter_sv/Models/Discord/DiscordAvatar.cs
index e5a6029..18deae3 100644
--- a/VORP-Character/vorpcharacter_sv/Models/Discord/DiscordAvatar.cs
+++ b/VORP-Character/vorpcharacter_sv/Models/Discord/DiscordAvatar.cs
@@ -1,6 +1,6 @@
using System.Runtime.Serialization;
-namespace VorpCharacter.Models.Discord
+namespace VORP.Character.Server.Models.Discord
{
[DataContract]
public class DiscordAvatar
diff --git a/VORP-Character/vorpcharacter_sv/Models/Discord/Member.cs b/VORP-Character/vorpcharacter_sv/Models/Discord/Member.cs
index e1b570b..36a0121 100644
--- a/VORP-Character/vorpcharacter_sv/Models/Discord/Member.cs
+++ b/VORP-Character/vorpcharacter_sv/Models/Discord/Member.cs
@@ -1,7 +1,7 @@
using Newtonsoft.Json;
using System;
-namespace VorpCharacter.Models.Discord
+namespace VORP.Character.Server.Models.Discord
{
public partial class Member
{
diff --git a/VORP-Character/vorpcharacter_sv/Models/DiscordConfig.cs b/VORP-Character/vorpcharacter_sv/Models/DiscordConfig.cs
index 9a793a6..a82100a 100644
--- a/VORP-Character/vorpcharacter_sv/Models/DiscordConfig.cs
+++ b/VORP-Character/vorpcharacter_sv/Models/DiscordConfig.cs
@@ -1,8 +1,8 @@
using System.Collections.Generic;
using System.Runtime.Serialization;
-using VorpCharacter.Web.Discord.Entity;
+using VORP.Character.Server.Web.Discord.Entity;
-namespace VorpCharacter.Models
+namespace VORP.Character.Server.Models
{
[DataContract]
public class DiscordConfig
diff --git a/VORP-Character/vorpcharacter_sv/Models/ServerConfig.cs b/VORP-Character/vorpcharacter_sv/Models/ServerConfig.cs
index a6ecc53..1a7abb2 100644
--- a/VORP-Character/vorpcharacter_sv/Models/ServerConfig.cs
+++ b/VORP-Character/vorpcharacter_sv/Models/ServerConfig.cs
@@ -1,6 +1,6 @@
using System.Runtime.Serialization;
-namespace VorpCharacter.Models
+namespace VORP.Character.Server.Models
{
[DataContract]
public class ServerConfig
diff --git a/VORP-Character/vorpcharacter_sv/PluginManager.cs b/VORP-Character/vorpcharacter_sv/PluginManager.cs
index 8510c28..9119761 100644
--- a/VORP-Character/vorpcharacter_sv/PluginManager.cs
+++ b/VORP-Character/vorpcharacter_sv/PluginManager.cs
@@ -1,11 +1,12 @@
-using CitizenFX.Core;
+global using CitizenFX.Core;
+global using VORP.Character.Server.Diagnostics;
+global using static CitizenFX.Core.Native.API;
using System;
using System.Threading.Tasks;
-using VorpCharacter.Diagnostics;
-using VorpCharacter.Web;
-using static CitizenFX.Core.Native.API;
+using VORP.Character.Server.Script;
+using VORP.Character.Server.Web;
-namespace VorpCharacter
+namespace VORP.Character.Server
{
public class PluginManager : BaseScript
{
@@ -13,12 +14,15 @@ public class PluginManager : BaseScript
public static PlayerList PlayerList;
public static dynamic CORE;
public static int MAX_ALLOWED_CHARACTERS;
+ public static bool USE_CORE_EXPORTS = false;
+ public static string VORP_DATABASE_RESOURCE = "ghmattimysql";
public EventHandlerDictionary EventRegistry => EventHandlers;
public ExportDictionary ExportRegistry => Exports;
- string _GHMattiMySqlResourceState => GetResourceState("ghmattimysql");
+ string _MySqlResourceState => GetResourceState(VORP_DATABASE_RESOURCE);
readonly public DiscordClient DiscordClient = new();
+ readonly public CharacterApi CharacterApi = new();
public PluginManager()
{
@@ -36,12 +40,12 @@ public PluginManager()
async Task VendorReady()
{
- string dbResource = _GHMattiMySqlResourceState;
+ string dbResource = _MySqlResourceState;
if (dbResource == "missing")
{
while (true)
{
- Logger.Error($"ghmattimysql resource not found! Please make sure you have the resource!");
+ Logger.Error($"{VORP_DATABASE_RESOURCE} resource not found! Please make sure you have the resource!");
await Delay(1000);
}
}
@@ -49,12 +53,26 @@ async Task VendorReady()
while (!(dbResource == "started"))
{
await Delay(500);
- dbResource = _GHMattiMySqlResourceState;
+ StartResource(VORP_DATABASE_RESOURCE);
+ await Delay(500);
+ dbResource = _MySqlResourceState;
}
}
async void Setup()
{
+ USE_CORE_EXPORTS = GetResourceMetadata(GetCurrentResourceName(), "vorp_core_csharp_new", 0) == "true";
+
+ if (USE_CORE_EXPORTS)
+ {
+ Logger.Info($"Using VORP-CORE Exports.");
+ }
+
+ DiscordClient.Init();
+ CharacterApi.Init();
+
+ AddEvents();
+
await VendorReady(); // wait till ghmattimysql resource has started
TriggerEvent("getCore", new Action((dic) =>
@@ -67,10 +85,6 @@ async void Setup()
cb(MAX_ALLOWED_CHARACTERS);
}));
}));
-
- RegisterScript(DiscordClient);
-
- AddEvents();
}
@@ -98,10 +112,13 @@ void AddEvents()
if (resourceName != GetCurrentResourceName()) return;
Logger.Info($"Stopping VORP Character");
-
- UnregisterScript(DiscordClient);
}));
}
+ public void Hook(string eventName, Delegate @delegate)
+ {
+ Logger.Debug($"Registered Legacy Event Handler '{eventName}'");
+ EventHandlers.Add(eventName, @delegate);
+ }
}
}
diff --git a/VORP-Character/vorpcharacter_sv/Properties/Resources.Designer.cs b/VORP-Character/vorpcharacter_sv/Properties/Resources.Designer.cs
index 3eb90e1..aa20bea 100644
--- a/VORP-Character/vorpcharacter_sv/Properties/Resources.Designer.cs
+++ b/VORP-Character/vorpcharacter_sv/Properties/Resources.Designer.cs
@@ -8,7 +8,7 @@
//
//------------------------------------------------------------------------------
-namespace VorpCharacter.Properties {
+namespace VORP.Character.Server.Properties {
using System;
@@ -39,7 +39,7 @@ internal Resources() {
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VorpCharacter.Properties.Resources", typeof(Resources).Assembly);
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VORP.Character.Server.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
@@ -59,24 +59,5 @@ internal Resources() {
resourceCulture = value;
}
}
-
- ///
- /// Looks up a localized string similar to {
- /// "discord": {
- /// "webHooks": [
- /// {
- /// "name": "vorp_character",
- /// "avatar": "myAvatarUrl",
- /// "url": "myWebhookUrl"
- /// }
- /// ]
- /// }
- ///}.
- ///
- internal static string server_config {
- get {
- return ResourceManager.GetString("server_config", resourceCulture);
- }
- }
}
}
diff --git a/VORP-Character/vorpcharacter_sv/Properties/Resources.resx b/VORP-Character/vorpcharacter_sv/Properties/Resources.resx
index 7e95373..7c0911e 100644
--- a/VORP-Character/vorpcharacter_sv/Properties/Resources.resx
+++ b/VORP-Character/vorpcharacter_sv/Properties/Resources.resx
@@ -118,7 +118,4 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- ..\Resources\server-config.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252
-
\ No newline at end of file
diff --git a/VORP-Character/vorpcharacter_sv/Script/CharacterApi.cs b/VORP-Character/vorpcharacter_sv/Script/CharacterApi.cs
index aabe756..313cd5a 100644
--- a/VORP-Character/vorpcharacter_sv/Script/CharacterApi.cs
+++ b/VORP-Character/vorpcharacter_sv/Script/CharacterApi.cs
@@ -1,40 +1,34 @@
-using CitizenFX.Core;
-using CitizenFX.Core.Native;
+using CitizenFX.Core.Native;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
-using VorpCharacter.Diagnostics;
-using VorpCharacter.Extensions;
+using VORP.Character.Server.Extensions;
-namespace VorpCharacter.Script
+namespace VORP.Character.Server.Script
{
- public class CharacterApi : BaseScript
+ public class CharacterApi
{
- public static CharacterApi Instance { get; private set; }
-
- public CharacterApi() // MOVE TO CORE v2
+ public void Init()
{
- Instance = this;
-
//Event for create new character
- EventHandlers["vorp_CreateNewCharacter"] += new Action(CreateNewCharacter);
+ PluginManager.Instance.Hook("vorp_CreateNewCharacter", new Action(CreateNewCharacter));
//Event for select characters
- EventHandlers["vorp_GoToSelectionMenu"] += new Action(GoToSelectionMenu);
+ PluginManager.Instance.Hook("vorp_GoToSelectionMenu", new Action(GoToSelectionMenu));
//Event for spawn unique character
- EventHandlers["vorp_SpawnUniqueCharacter"] += new Action(SpawnUniqueCharacter);
+ PluginManager.Instance.Hook("vorp_SpawnUniqueCharacter", new Action(SpawnUniqueCharacter));
//Event for save the new character
- EventHandlers["vorp_SaveNewCharacter"] += new Action(SaveNewCharacter);
- EventHandlers["vorp_updateexisting"] += new Action(SaveNewCharacter2);
+ PluginManager.Instance.Hook("vorp_SaveNewCharacter", new Action(SaveNewCharacter));
+ PluginManager.Instance.Hook("vorp_updateexisting", new Action(SaveNewCharacter2));
//Event for delete the character
- EventHandlers["vorp_DeleteCharacter"] += new Action(DeleteCharacter);
+ PluginManager.Instance.Hook("vorp_DeleteCharacter", new Action(DeleteCharacter));
- EventHandlers["vorp_CharSelectedCharacter"] += new Action(SelectCharacter);
+ PluginManager.Instance.Hook("vorp_CharSelectedCharacter", new Action(SelectCharacter));
- EventHandlers["vorpcharacter:getPlayerComps"] += new Action(getPlayerComps);
- EventHandlers["vorpcharacter:setPlayerSkinChange"] += new Action(setPlayerSkinChange);
- EventHandlers["vorpcharacter:setPlayerCompChange"] += new Action(setPlayerCompChange);
- EventHandlers["vorpcharacter:getPlayerSkin"] += new Action(getPlayerSkin);
+ PluginManager.Instance.Hook("vorpcharacter:getPlayerComps", new Action(getPlayerComps));
+ PluginManager.Instance.Hook("vorpcharacter:setPlayerSkinChange", new Action(setPlayerSkinChange));
+ PluginManager.Instance.Hook("vorpcharacter:setPlayerCompChange", new Action(setPlayerCompChange));
+ PluginManager.Instance.Hook("vorpcharacter:getPlayerSkin", new Action(getPlayerSkin));
// maybe worth protecting this with ACE Permissions?
API.RegisterCommand("createcharacter", new Action, string>((source, args, rawCommand) =>
@@ -60,8 +54,7 @@ public CharacterApi() // MOVE TO CORE v2
}
}), false);
- Logger.Info($"VORP Character CharacterApi");
-
+ Logger.Info($"INIT VORP Character CharacterApi");
}
private void SpawnUniqueCharacter(int source)
@@ -120,7 +113,7 @@ private void DeleteCharacter([FromSource] Player player, int charid)
dynamic CoreUser = player.GetCoreUser();
if (CoreUser == null) return;
CoreUser.removeCharacter(charid);
- PluginManager.Instance.DiscordClient.SendDiscordEmbededMessage("vorp_character", $"VORP Character Sentry", $"Deleted Character", $"User: {player.Name}", Web.DiscordColor.Red);
+ PluginManager.Instance.DiscordClient.SendDiscordEmbededMessageAsync("vorp_character", $"VORP Character Sentry", $"Deleted Character", $"User: {player.Name}", Web.DiscordColor.Red);
}
private async void SaveNewCharacter([FromSource] Player player, dynamic skin, dynamic components, string name)
@@ -147,10 +140,10 @@ private async void SaveNewCharacter([FromSource] Player player, dynamic skin, dy
Dictionary scloth = JsonConvert.DeserializeObject>(compsPlayer);
Dictionary sskin = JsonConvert.DeserializeObject>(skinPlayer);
player.TriggerEvent("vorpcharacter:reloadPlayerComps", sskin, scloth);
- await Delay(2000);
- TriggerEvent("vorp_NewCharacter", int.Parse(player.Handle));
+ await BaseScript.Delay(2000);
+ BaseScript.TriggerEvent("vorp_NewCharacter", int.Parse(player.Handle));
- PluginManager.Instance.DiscordClient.SendDiscordEmbededMessage("vorp_character", $"VORP Character Sentry", $"Created Character", $"User: {player.Name}", Web.DiscordColor.Green);
+ PluginManager.Instance.DiscordClient.SendDiscordEmbededMessageAsync("vorp_character", $"VORP Character Sentry", $"Created Character", $"User: {player.Name}", Web.DiscordColor.Green);
}
catch (Exception e)
{
@@ -174,8 +167,8 @@ private async void SaveNewCharacter2([FromSource] Player player, dynamic skin, d
{
Dictionary scloth = JsonConvert.DeserializeObject>(compsPlayer);
Dictionary sskin = JsonConvert.DeserializeObject>(skinPlayer);
- Exports["ghmattimysql"].execute("UPDATE characters SET `firstname` = ? , `lastname` = ?, `skinPlayer` = ?, `compPlayer` = ? WHERE `identifier` = ? AND `charidentifier` = ? ", new object[] { firstname, lastname, skinPlayer, compsPlayer, sid, UserCharacter });
- await Delay(0);
+ PluginManager.Instance.ExportRegistry[PluginManager.VORP_DATABASE_RESOURCE].execute("UPDATE characters SET `firstname` = ? , `lastname` = ?, `skinPlayer` = ?, `compPlayer` = ? WHERE `identifier` = ? AND `charidentifier` = ? ", new object[] { firstname, lastname, skinPlayer, compsPlayer, sid, UserCharacter });
+ await BaseScript.Delay(0);
player.TriggerEvent("vorpcharacter:reloadPlayerComps", sskin, scloth);
}
catch (Exception e)
diff --git a/VORP-Character/vorpcharacter_sv/vorpcharacter_sv.csproj b/VORP-Character/vorpcharacter_sv/VORP.Character.Server.csproj
similarity index 92%
rename from VORP-Character/vorpcharacter_sv/vorpcharacter_sv.csproj
rename to VORP-Character/vorpcharacter_sv/VORP.Character.Server.csproj
index 63ad8e5..491de41 100644
--- a/VORP-Character/vorpcharacter_sv/vorpcharacter_sv.csproj
+++ b/VORP-Character/vorpcharacter_sv/VORP.Character.Server.csproj
@@ -7,12 +7,13 @@
{EAF3ACC4-8378-4923-ADD0-5959DC21DA03}
Library
Properties
- VorpCharacter
- vorpcharacter_sv.net
- v4.5.2
+ VORP.Character.Server
+ VORP.Character.Server.net
+ v4.7.2
512
true
latest
+
true
@@ -93,10 +94,11 @@
ResXFileCodeGenerator
Resources.Designer.cs
+ Designer
-
+
Always
diff --git a/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/DiscordWebhook.cs b/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/DiscordWebhook.cs
index ff8c98c..431239e 100644
--- a/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/DiscordWebhook.cs
+++ b/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/DiscordWebhook.cs
@@ -1,6 +1,6 @@
using System.Runtime.Serialization;
-namespace VorpCharacter.Web.Discord.Entity
+namespace VORP.Character.Server.Web.Discord.Entity
{
[DataContract]
public class DiscordWebhook
diff --git a/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/Embed.cs b/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/Embed.cs
index a2d4d84..781578f 100644
--- a/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/Embed.cs
+++ b/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/Embed.cs
@@ -1,7 +1,7 @@
using Newtonsoft.Json;
using System.Collections.Generic;
-namespace VorpCharacter.Web.Discord.Entity
+namespace VORP.Character.Server.Web.Discord.Entity
{
public class Embed
{
diff --git a/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/EmbedAuthor.cs b/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/EmbedAuthor.cs
index 745174b..952be85 100644
--- a/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/EmbedAuthor.cs
+++ b/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/EmbedAuthor.cs
@@ -1,6 +1,6 @@
using Newtonsoft.Json;
-namespace VorpCharacter.Web.Discord.Entity
+namespace VORP.Character.Server.Web.Discord.Entity
{
public class EmbedAuthor
{
diff --git a/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/EmbedThumbnail.cs b/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/EmbedThumbnail.cs
index 5ef02c1..41e9748 100644
--- a/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/EmbedThumbnail.cs
+++ b/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/EmbedThumbnail.cs
@@ -1,6 +1,6 @@
using Newtonsoft.Json;
-namespace VorpCharacter.Web.Discord.Entity
+namespace VORP.Character.Server.Web.Discord.Entity
{
public class EmbedThumbnail
{
diff --git a/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/Field.cs b/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/Field.cs
index 4516cad..12a1ee4 100644
--- a/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/Field.cs
+++ b/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/Field.cs
@@ -1,6 +1,6 @@
using Newtonsoft.Json;
-namespace VorpCharacter.Web.Discord.Entity
+namespace VORP.Character.Server.Web.Discord.Entity
{
public class Field
{
diff --git a/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/Webhook.cs b/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/Webhook.cs
index 2569c31..4cb7d0d 100644
--- a/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/Webhook.cs
+++ b/VORP-Character/vorpcharacter_sv/Web/Discord/Entity/Webhook.cs
@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Threading.Tasks;
-namespace VorpCharacter.Web.Discord.Entity
+namespace VORP.Character.Server.Web.Discord.Entity
{
public class Webhook
{
diff --git a/VORP-Character/vorpcharacter_sv/Web/DiscordClient.cs b/VORP-Character/vorpcharacter_sv/Web/DiscordClient.cs
index 4390b50..4538ae6 100644
--- a/VORP-Character/vorpcharacter_sv/Web/DiscordClient.cs
+++ b/VORP-Character/vorpcharacter_sv/Web/DiscordClient.cs
@@ -1,15 +1,13 @@
-using CitizenFX.Core;
-using CitizenFX.Core.Native;
+using CitizenFX.Core.Native;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
-using VorpCharacter.Diagnostics;
-using VorpCharacter.Models;
-using VorpCharacter.Web.Discord.Entity;
+using VORP.Character.Server.Models;
+using VORP.Character.Server.Web.Discord.Entity;
-namespace VorpCharacter.Web
+namespace VORP.Character.Server.Web
{
public enum WebhookChannel
{
@@ -26,7 +24,7 @@ public enum DiscordColor : int
Orange = 16757575
}
- public class DiscordClient : BaseScript
+ public class DiscordClient
{
static Request request = new Request();
public Dictionary Webhooks = new Dictionary();
@@ -36,8 +34,9 @@ public class DiscordClient : BaseScript
private static Regex _compiledUnicodeRegex = new Regex(@"[^\u0000-\u007F]", RegexOptions.Compiled);
- internal DiscordClient()
+ public void Init()
{
+ Logger.Info("INIT Character Discord Webhooks");
UpdateWebhooks();
}
@@ -47,7 +46,7 @@ public String StripUnicodeCharactersFromString(string inputValue)
}
[Tick]
- private async Task OnDiscordWebhookUpdate()
+ private async Task OnDiscordWebhookUpdateAsync()
{
if ((API.GetGameTimer() - lastUpdate) > 120000)
{
@@ -69,11 +68,12 @@ private async Task OnDiscordWebhookUpdate()
await BaseScript.Delay(10000);
}
- private async Task UpdateWebhooks()
+ private void UpdateWebhooks()
{
try
{
- ServerConfig serverConfig = JsonConvert.DeserializeObject(Properties.Resources.server_config);
+ string serverConfigFile = API.LoadResourceFile(API.GetCurrentResourceName(), "/config/server-config.json");
+ ServerConfig serverConfig = JsonConvert.DeserializeObject(serverConfigFile);
DiscordBotKey = serverConfig.DiscordConfig.Key;
serverConfig.DiscordConfig.WebHooks.ForEach(x =>
{
@@ -90,7 +90,7 @@ private async Task UpdateWebhooks()
}
}
- public async Task SendDiscordEmbededMessage(string webHookName, string name, string title, string description, DiscordColor discordColor)
+ public async Task SendDiscordEmbededMessageAsync(string webHookName, string name, string title, string description, DiscordColor discordColor)
{
try
{
diff --git a/VORP-Character/vorpcharacter_sv/Web/HttpClient.cs b/VORP-Character/vorpcharacter_sv/Web/HttpClient.cs
index 24da3b6..4c44ddc 100644
--- a/VORP-Character/vorpcharacter_sv/Web/HttpClient.cs
+++ b/VORP-Character/vorpcharacter_sv/Web/HttpClient.cs
@@ -1,4 +1,3 @@
-using CitizenFX.Core;
using CitizenFX.Core.Native;
using Newtonsoft.Json;
using System;
@@ -6,7 +5,7 @@
using System.Net;
using System.Threading.Tasks;
-namespace VorpCharacter.Web
+namespace VORP.Character.Server.Web
{
public struct RequestResponse
{