Archived
Private
Public Access
1
0

Update 29.10.2022

This commit is contained in:
2022-10-29 18:17:27 +02:00
parent 2a1d18cb9d
commit 494fb2d8c5
355 changed files with 408588 additions and 155997 deletions

View File

@@ -0,0 +1,205 @@
using CitizenFX.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using CitizenFX.Core.Native;
namespace Mosleys.Shared {
public sealed class Config {
private sealed class SectionScript {
private const char SplitChar = ' ';
private const string SectionStart = "{";
private const string SectionEnd = "}";
private const string CommentPrefix = "//";
private readonly string _fileName;
private readonly List<Tuple<string, Dictionary<string, string>>> _loadedData =
new List<Tuple<string, Dictionary<string, string>>>();
private readonly List<string> _allSections = new List<string>();
public SectionScript(string fileName, bool load = false) {
_fileName = fileName;
if (!load)
return;
Read();
}
public string this[string section, string key, string result = ""] =>
GetValue(section, key, result);
public T GetValue<T>(string section, string key, T result) {
if (!SectionExists(section))
return result;
string data = GetData(section, key, result.ToString());
try {
return (T)Convert.ChangeType(data, typeof(T));
}
catch (InvalidCastException) {
return result;
}
}
public Vector3 GetVector3(string section, string key, Vector3 result) {
if (!SectionExists(section))
return result;
string data = GetData(section, key, result.ToString());
data = data.Replace("[", "").Replace("]", "").Replace(" ", "");
return new Vector3(data.Split(',').Select(Convert.ToSingle).ToArray());
}
public Vector4 GetVector4(string section, string key, Vector4 result) {
if (!SectionExists(section))
return result;
string data = GetData(section, key, result.ToString());
data = data.Replace("[", "").Replace("]", "").Replace(" ", "");
return new Vector4(data.Split(',').Select(Convert.ToSingle).ToArray());
}
public int[] GetIntArray(string section, string key, int[] result) {
if (!SectionExists(section))
return result;
string data = GetData(section, key, result.ToString());
data = data.Replace("[", "").Replace("]", "").Replace(" ", "");
return data.Split(',').Select(n => Convert.ToInt32(n)).ToArray();
}
public Vector4[] GetVector4Array(string section) {
List<Vector4> vectors = new List<Vector4>();
foreach (Tuple<string, Dictionary<string, string>> tuple in _loadedData) {
if (!tuple.Item1.Equals(section)) continue;
foreach (var key in tuple.Item2.Values) {
var data = key.Replace("[", "").Replace("]", "").Replace(" ", "");
var vector = new Vector4(data.Split(',').Select(Convert.ToSingle).ToArray());
vectors.Add(vector);
}
}
return vectors.ToArray();
}
public string GetData(string section, string key, string result) {
foreach (Tuple<string, Dictionary<string, string>> tuple in _loadedData) {
if (tuple.Item1.Equals(section))
return tuple.Item2.ContainsKey(key) ? tuple.Item2[key] : result;
}
return result;
}
public bool SectionExists(string section) => _allSections.Contains(section);
public void Read() {
_loadedData.Clear();
_allSections.Clear();
string str1 = "";
Dictionary<string, string> source = new Dictionary<string, string>();
string str2 = API.LoadResourceFile(API.GetCurrentResourceName(), _fileName);
char[] chArray = { '\n' };
foreach (string str3 in str2.Split(chArray).Select(str => str.Trim())) {
string text = str3.Replace("\r", "");
if (!string.IsNullOrEmpty(text) && !string.IsNullOrWhiteSpace(text)) {
if (text.StartsWith(SectionStart)) {
str1 = text.Substring(1);
if (text.EndsWith(SectionEnd) && !str1.Contains(SectionStart)) {
str1 = str1.Remove(str1.Length - 1, 1);
_loadedData.Add(
new Tuple<string, Dictionary<string, string>>(str1,
new Dictionary<string, string>()));
if (!_allSections.Contains(str1))
_allSections.Add(str1);
source.Clear();
}
}
else if (text.EndsWith(SectionEnd) || text.StartsWith(SectionEnd)) {
Dictionary<string, string> dictionary =
source.ToDictionary(
entry => entry.Key,
entry => entry.Value);
_loadedData.Add(new Tuple<string, Dictionary<string, string>>(str1, dictionary));
if (!_allSections.Contains(str1))
_allSections.Add(str1);
source.Clear();
}
else if (!text.StartsWith(CommentPrefix)) {
Tuple<string, string> data = ConvertToData(text);
if (!source.ContainsKey(data.Item1))
source.Add(data.Item1, data.Item2);
}
}
}
}
private Tuple<string, string> ConvertToData(string text) {
int length = text.IndexOf(SplitChar);
if (length == -1)
return new Tuple<string, string>(text, "");
string str = "";
if (length - 1 < text.Length)
str = text.Substring(length + 1, text.Length - length - 1);
return new Tuple<string, string>(text.Substring(0, length), str);
}
}
public static Config LoadConfig() {
var script = new SectionScript("settings.ini", true);
var config = new Config {
Blip = new BlipConfig {
Position = script.GetVector3("[Blip]", "Position", Vector3.Zero),
Sprite = (BlipSprite)script.GetValue("[Blip]", "Sprite", 380),
Color = (BlipColor)script.GetValue("[Blip]", "Color", 44),
Scale = script.GetValue("[Blip]", "Scale", 1.0f)
},
MenuTitle = script.GetValue("[General]", "MenuTitle", "Mosley's"),
ExhibitPrice = script.GetValue("[General]", "ExhibitPrice", 500),
TestDriveTime = script.GetValue("[General]", "TestDriveTime", 90000),
SpawnRadius = script.GetValue("[General]", "SpawnRadius", 100f),
MinSellPrice = script.GetValue("[General]", "MinSellPrice", 1000),
SellBill = script.GetValue("[General]", "SellBill", 0.1f),
ForbiddenVehicleClasses =
script.GetIntArray("[General]", "ForbiddenVehicleClasses", Array.Empty<int>()),
SellLocation = script.GetVector3("[General]", "SellLocation", Vector3.Zero),
SpawnLocation = script.GetVector4("[General]", "SpawnLocation", Vector4.Zero),
TestDriveLocation = script.GetVector4("[General]", "TestDriveLocation", Vector4.Zero),
DigitalShowPoint = script.GetVector3("[General]", "DigitalShowPoint", Vector3.Zero),
DigitalCamera = script.GetVector4("[General]", "DigitalCamera", Vector4.Zero),
CarSlots = script.GetVector4Array("[CarSlots]")
};
return config;
}
public BlipConfig Blip;
public string MenuTitle;
public int ExhibitPrice;
public int TestDriveTime;
public float SpawnRadius;
public int MinSellPrice;
public float SellBill;
public int[] ForbiddenVehicleClasses;
public Vector3 SellLocation;
public Vector4 SpawnLocation;
public Vector4 TestDriveLocation;
public Vector3 DigitalShowPoint;
public Vector4 DigitalCamera;
public Vector4[] CarSlots;
}
public struct BlipConfig {
public Vector3 Position;
public BlipSprite Sprite;
public BlipColor Color;
public float Scale;
}
}

View File

@@ -0,0 +1,17 @@
namespace Nexd.ESX.Client
{
using CitizenFX.Core;
public static partial class ESX
{
public static partial class Game
{
public static class Utils
{
public static dynamic Raw => ESX.Raw.Game.Utils;
public static void DrawText3D(Vector3 coords, string text, double size, dynamic font) => Raw.DrawText3D(coords, text, size, font);
}
}
}
}

View File

@@ -0,0 +1,89 @@
namespace Nexd.ESX.Client
{
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using CitizenFX.Core;
public static partial class ESX
{
public static partial class Game
{
public static dynamic Raw => ESX.Raw.Game;
public static void DeleteObject(string obj) => Raw.DeleteObject(obj);
public static void DeleteVehicle(string vehicle) => Raw.DeleteVehicle(vehicle);
public static dynamic GetClosestObject([Optional()] Vector3 coords, [Optional()] dynamic modelFilter) => Raw.GetClosestObject(coords, modelFilter);
public static Ped GetClosestPed([Optional()] Vector3 coords, [Optional()] dynamic modelFilter) => new Ped(Raw.GetClosestPed(coords, modelFilter));
public static Player GetClosestPlayer([Optional()] Vector3 coords) => new Player(Raw.GetClosestPlayer(coords));
public static Vehicle GetClosestVehicle([Optional()] Vector3 coords, [Optional()] dynamic modelFilter) => new Vehicle(Raw.GetClosestVehicle(coords, modelFilter));
public static dynamic GetObjects() => Raw.GetObjects();
public static dynamic GetPedMugshot(string ped, bool transparent = true) => Raw.GetPedMugshot(ped, transparent);
public static Vehicle GetVehicleInDirection() => new Vehicle(Raw.GetVehicleInDirection());
public static VehicleProperties GetVehicleProperties(Vehicle vehicle) => new VehicleProperties(Raw.GetVehicleProperties(vehicle.Handle));
public static VehicleProperties GetVehicleProperties(int vehicle) => new VehicleProperties(Raw.GetVehicleProperties(vehicle));
public static bool IsSpawnPointClear([Optional()] Vector3 coords, double maxDistance) => Raw.IsSpawnPointClear(coords, maxDistance);
public static void SetVehicleProperties(Vehicle vehicle, VehicleProperties properties) => Raw.SetVehicleProperties(vehicle.Handle, properties.GetRaw());
public static void SpawnLocalObject(string hash, Vector3 coords, [Optional()] Action<int> callback) => Raw.SpawnLocalObject(hash, coords, callback);
public static void SpawnLocalObject(int hash, Vector3 coords, [Optional()] Action<int> callback) => Raw.SpawnLocalObject(hash, coords, callback);
public static void SpawnObject(string hash, Vector3 coords, [Optional()] Action<int> callback) => Raw.SpawnObject(hash, coords, callback);
public static void SpawnObject(int hash, Vector3 coords, [Optional()] Action<int> callback) => Raw.SpawnObject(hash, coords, callback);
public static void SpawnLocalVehicle(string hash, Vector3 coords, double heading, [Optional()] Action<int> callback) => Raw.SpawnLocalVehicle(hash, coords, heading, callback);
public static void SpawnLocalVehicle(int hash, Vector3 coords, double heading, [Optional()] Action<int> callback) => Raw.SpawnLocalVehicle(hash, coords, heading, callback);
public static void SpawnVehicle(string hash, Vector3 coords, double heading, [Optional()] Action<int> callback) => Raw.SpawnVehicle(hash, coords, heading, callback);
public static void SpawnVehicle(int hash, Vector3 coords, double heading, [Optional()] Action<int> callback) => Raw.SpawnVehicle(hash, coords, heading, callback);
public static void Teleport(string entity, Vector3 coords, [Optional()] Action callback) => Raw.Teleport(entity, coords, callback);
public static List<Ped> GetPeds([Optional()] bool onlyOtherPeds)
{
var data = Raw.GetPeds(onlyOtherPeds);
List<Ped> peds = new List<Ped>();
foreach (var i in data)
peds.Add(new Ped(i));
return peds;
}
public static List<Player> GetPlayers(bool onlyOtherPlayers = false, bool returnKeyValue = false, bool returnPeds = false)
{
var data = Raw.GetPlayers(onlyOtherPlayers, returnKeyValue, returnPeds);
List<Player> players = new List<Player>();
foreach (var i in data)
players.Add(new Player(i));
return players;
}
public static List<Player> GetPlayersInArea([Optional()] Vector3 coords, double maxDistance)
{
var data = Raw.GetPlayersInArea(coords, maxDistance);
List<Player> players = new List<Player>();
foreach (var i in data)
players.Add(new Player(i));
return players;
}
public static List<Vehicle> GetVehicles()
{
var data = Raw.GetVehicles();
List<Vehicle> vehicles = new List<Vehicle>();
foreach (var i in data)
vehicles.Add(new Vehicle(i));
return vehicles;
}
public static List<Vehicle> GetVehiclesInArea([Optional()] Vector3 coords, double maxDistance)
{
var data = Raw.GetVehiclesInArea(coords, maxDistance);
List<Vehicle> vehicles = new List<Vehicle>();
foreach (var i in data)
vehicles.Add(new Vehicle(i));
return vehicles;
}
}
}
}

View File

@@ -0,0 +1,15 @@
namespace Nexd.ESX.Client
{
public static partial class ESX
{
public static partial class Scaleform
{
public class Utils
{
public static dynamic Raw => ESX.Raw.Scaleform.Utils;
public static int RequestScaleformMovie(string movie) => Raw.RequestScaleformMovie(movie);
}
}
}
}

View File

@@ -0,0 +1,15 @@
namespace Nexd.ESX.Client
{
public static partial class ESX
{
public static partial class Scaleform
{
public static dynamic Raw => ESX.Raw.Scaleform;
public static void ShowBreakingNews(string title, string message, string bottom, int sec) => Raw.ShowBreakingNews(title, message, bottom, sec);
public static void ShowFreemodeMessage(string title, string message, int sec) => Raw.ShowFreemodeMessage(title, message, sec);
public static void ShowPopupWarning(string title, string message, string footer, int sec) => Raw.ShowPopupWarning(title, message, footer, sec);
public static void ShowTrafficMovie(int sec) => Raw.ShowTrafficMovie(sec);
}
}
}

View File

@@ -0,0 +1,20 @@
namespace Nexd.ESX.Client
{
using System;
using System.Runtime.InteropServices;
public static partial class ESX
{
public static class Streaming
{
public static dynamic Raw => ESX.Raw.Streaming;
public static int RequestAnimDict(string animDict, [Optional()] Action callback) => Raw.RequestAnimDict(animDict, callback);
public static int RequestAnimSet(string animSet, [Optional()] Action callback) => Raw.RequestAnimSet(animSet, callback);
public static int RequestModel(string model, [Optional()] Action callback) => Raw.RequestModel(model, callback);
public static int RequestNamedPtfxAsset(string assetName, [Optional()] Action callback) => Raw.RequestNamedPtfxAsset(assetName, callback);
public static int RequestStreamedTextureDict(string textureDict, [Optional()] Action callback) => Raw.RequestStreamedTextureDict(textureDict, callback);
public static int RequestWeaponAsset(string hash, [Optional()] Action callback) => Raw.RequestWeaponAsset(hash, callback);
}
}
}

View File

@@ -0,0 +1,18 @@
namespace Nexd.ESX.Client
{
public static partial class ESX
{
public static partial class UI
{
public class HUD
{
public static dynamic Raw => ESX.Raw.UI.HUD;
public static void RegisterElement(string name, int index, int priority, string html, dynamic data) => Raw.RegisterElement(name, index, priority, html, data);
public static void RemoveElement(string name) => Raw.RemoveElement(name);
public static void SetDisplay(double opacity) => Raw.SetDisplay(opacity);
public static void UpdateElement(string name, dynamic data) => Raw.UpdateElement(name, data);
}
}
}
}

View File

@@ -0,0 +1,90 @@
namespace Nexd.ESX.Client
{
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
public static partial class ESX
{
public static partial class UI
{
public class Menu
{
public static dynamic Raw => ESX.Raw.UI.Menu;
public dynamic RawInstance;
public Menu(dynamic data) => RawInstance = data;
public Menu() => RawInstance = new System.Dynamic.ExpandoObject();
public Menu(string menuType, string nameSpace, string menuName)
{
RawInstance = new System.Dynamic.ExpandoObject();
RawInstance.name = menuName;
RawInstance.type = menuType;
RawInstance.@namespace = nameSpace;
RawInstance.data = new MenuData();
}
public string type
{
get => RawInstance.type;
set => RawInstance.type = value;
}
public string @namespace
{
get => RawInstance.@namespace;
set => RawInstance.@namespace = value;
}
public string name
{
get => RawInstance.name;
set => RawInstance.name = value;
}
public MenuData data
{
get => new MenuData(RawInstance.data);
set => RawInstance.data = value;
}
public void Close() => Close(this);
public static void Close(string type, string @namespace, string name) => Raw.Close(type, @namespace, name);
public static void Close(Menu menu) => Raw.Close(menu.type, menu.@namespace, menu.name);
public static void CloseAll() => Raw.CloseAll();
public static Menu GetOpened(string type, string @namespace, string name) => new Menu(Raw.GetOpened(type, @namespace, name));
public static bool IsOpen(string type, string @namespace, string name) => Raw.RawIsOpen(type, @namespace, name);
public static Menu Open(
string type,
string @namespace,
string name,
MenuData data,
[Optional()] Action<dynamic, dynamic> submit,
[Optional()] Action<dynamic, dynamic> cancel,
[Optional()] Action<dynamic, dynamic> change, [Optional()] Action close) =>
new Menu(Raw.Open(type, @namespace, name, data.Raw, submit, cancel, change, close));
public static void RegisterType(string type, [Optional()] Action<string, string, dynamic> open, [Optional()] Action<string, Menu> close) => Raw.RegisterType(type, open, close);
public static List<Menu> GetOpenedMenus()
{
var data = Raw.GetOpenedMenus();
List<Menu> menus = new List<Menu>();
foreach (var i in data)
menus.Add(new Menu(i));
return menus;
}
}
}
}
}

View File

@@ -0,0 +1,10 @@
namespace Nexd.ESX.Client
{
public static partial class ESX
{
public static partial class UI
{
public static dynamic Raw => ESX.Raw.UI;
}
}
}

View File

@@ -0,0 +1,63 @@
namespace Nexd.ESX.Client
{
using System;
using CitizenFX.Core;
public static partial class ESX
{
private static dynamic Raw;
static ESX() => BaseScript.TriggerEvent("esx:getSharedObject", new object[] { new Action<dynamic>(esx => { Raw = esx; }) });
public static void TriggerServerCallback(string name, Action<dynamic> callback, dynamic args = null) => Raw.TriggerServerCallback(name, callback, args);
public static PlayerData GetPlayerData() => new PlayerData(Raw.GetPlayerData());
public static bool IsPlayerLoaded() => Raw.IsPlayerLoaded();
public static void SetPlayerData(dynamic key, dynamic value) => Raw.SetPlayerData(key, value);
public static void ShowInventory() => Raw.ShowInventory();
public static void ShowHelpNotification(string message, bool thisFrame = false, bool beep = true, int duration = -1) => Raw.ShowHelpNotification(message, thisFrame, beep, duration);
public static void ShowAdvancedNotification(
string sender,
string subject,
string message,
NotificationPicture notificationPicture = NotificationPicture.CHAR_MULTIPLAYER,
IconType iconType = IconType.ChatBox,
bool flash = false,
bool savetoBreif = true,
HudColor hudColor = HudColor.HUD_COLOUR_DEFAULT)
{
if (hudColor != HudColor.HUD_COLOUR_DEFAULT)
{
Raw.ShowAdvancedNotification(sender, subject, message, notificationPicture.ToString(), (int)iconType, flash, savetoBreif, (int)hudColor);
return;
}
Raw.ShowAdvancedNotification(sender, subject, message, notificationPicture.ToString(), (int)iconType, flash, savetoBreif, null);
}
public static void ShowAdvancedNotification(
string sender,
string subject,
string message,
string textureDict,
IconType iconType,
bool flash = false,
bool savetoBreif = true,
HudColor hudColor = HudColor.HUD_COLOUR_DEFAULT)
{
if (hudColor != HudColor.HUD_COLOUR_DEFAULT)
{
Raw.ShowAdvancedNotification(sender, subject, message, textureDict, (int)iconType, flash, savetoBreif, (int)hudColor);
return;
}
Raw.ShowAdvancedNotification(sender, subject, message, textureDict, (int)iconType, flash, savetoBreif, null);
}
public static void ShowNotification(string message, HudColor hudColor = HudColor.HUD_COLOUR_DEFAULT)
{
if(hudColor != HudColor.HUD_COLOUR_DEFAULT) CitizenFX.Core.Native.API.ThefeedNextPostBackgroundColor((int)hudColor);
Raw.ShowNotification(message);
}
}
}

View File

@@ -0,0 +1,231 @@
namespace Nexd.ESX.Client
{
public enum HudColor : int
{
HUD_COLOUR_PURE_WHITE,
HUD_COLOUR_WHITE,
HUD_COLOUR_BLACK,
HUD_COLOUR_GREY,
HUD_COLOUR_GREYLIGHT,
HUD_COLOUR_GREYDARK,
HUD_COLOUR_RED,
HUD_COLOUR_REDLIGHT,
HUD_COLOUR_REDDARK,
HUD_COLOUR_BLUE,
HUD_COLOUR_BLUELIGHT,
HUD_COLOUR_BLUEDARK,
HUD_COLOUR_YELLOW,
HUD_COLOUR_YELLOWLIGHT,
HUD_COLOUR_YELLOWDARK,
HUD_COLOUR_ORANGE,
HUD_COLOUR_ORANGELIGHT,
HUD_COLOUR_ORANGEDARK,
HUD_COLOUR_GREEN,
HUD_COLOUR_GREENLIGHT,
HUD_COLOUR_GREENDARK,
HUD_COLOUR_PURPLE,
HUD_COLOUR_PURPLELIGHT,
HUD_COLOUR_PURPLEDARK,
HUD_COLOUR_PINK,
HUD_COLOUR_RADAR_HEALTH,
HUD_COLOUR_RADAR_ARMOUR,
HUD_COLOUR_RADAR_DAMAGE,
HUD_COLOUR_NET_PLAYER1,
HUD_COLOUR_NET_PLAYER2,
HUD_COLOUR_NET_PLAYER3,
HUD_COLOUR_NET_PLAYER4,
HUD_COLOUR_NET_PLAYER5,
HUD_COLOUR_NET_PLAYER6,
HUD_COLOUR_NET_PLAYER7,
HUD_COLOUR_NET_PLAYER8,
HUD_COLOUR_NET_PLAYER9,
HUD_COLOUR_NET_PLAYER10,
HUD_COLOUR_NET_PLAYER11,
HUD_COLOUR_NET_PLAYER12,
HUD_COLOUR_NET_PLAYER13,
HUD_COLOUR_NET_PLAYER14,
HUD_COLOUR_NET_PLAYER15,
HUD_COLOUR_NET_PLAYER16,
HUD_COLOUR_NET_PLAYER17,
HUD_COLOUR_NET_PLAYER18,
HUD_COLOUR_NET_PLAYER19,
HUD_COLOUR_NET_PLAYER20,
HUD_COLOUR_NET_PLAYER21,
HUD_COLOUR_NET_PLAYER22,
HUD_COLOUR_NET_PLAYER23,
HUD_COLOUR_NET_PLAYER24,
HUD_COLOUR_NET_PLAYER25,
HUD_COLOUR_NET_PLAYER26,
HUD_COLOUR_NET_PLAYER27,
HUD_COLOUR_NET_PLAYER28,
HUD_COLOUR_NET_PLAYER29,
HUD_COLOUR_NET_PLAYER30,
HUD_COLOUR_NET_PLAYER31,
HUD_COLOUR_NET_PLAYER32,
HUD_COLOUR_SIMPLEBLIP_DEFAULT,
HUD_COLOUR_MENU_BLUE,
HUD_COLOUR_MENU_GREY_LIGHT,
HUD_COLOUR_MENU_BLUE_EXTRA_DARK,
HUD_COLOUR_MENU_YELLOW,
HUD_COLOUR_MENU_YELLOW_DARK,
HUD_COLOUR_MENU_GREEN,
HUD_COLOUR_MENU_GREY,
HUD_COLOUR_MENU_GREY_DARK,
HUD_COLOUR_MENU_HIGHLIGHT,
HUD_COLOUR_MENU_STANDARD,
HUD_COLOUR_MENU_DIMMED,
HUD_COLOUR_MENU_EXTRA_DIMMED,
HUD_COLOUR_BRIEF_TITLE,
HUD_COLOUR_MID_GREY_MP,
HUD_COLOUR_NET_PLAYER1_DARK,
HUD_COLOUR_NET_PLAYER2_DARK,
HUD_COLOUR_NET_PLAYER3_DARK,
HUD_COLOUR_NET_PLAYER4_DARK,
HUD_COLOUR_NET_PLAYER5_DARK,
HUD_COLOUR_NET_PLAYER6_DARK,
HUD_COLOUR_NET_PLAYER7_DARK,
HUD_COLOUR_NET_PLAYER8_DARK,
HUD_COLOUR_NET_PLAYER9_DARK,
HUD_COLOUR_NET_PLAYER10_DARK,
HUD_COLOUR_NET_PLAYER11_DARK,
HUD_COLOUR_NET_PLAYER12_DARK,
HUD_COLOUR_NET_PLAYER13_DARK,
HUD_COLOUR_NET_PLAYER14_DARK,
HUD_COLOUR_NET_PLAYER15_DARK,
HUD_COLOUR_NET_PLAYER16_DARK,
HUD_COLOUR_NET_PLAYER17_DARK,
HUD_COLOUR_NET_PLAYER18_DARK,
HUD_COLOUR_NET_PLAYER19_DARK,
HUD_COLOUR_NET_PLAYER20_DARK,
HUD_COLOUR_NET_PLAYER21_DARK,
HUD_COLOUR_NET_PLAYER22_DARK,
HUD_COLOUR_NET_PLAYER23_DARK,
HUD_COLOUR_NET_PLAYER24_DARK,
HUD_COLOUR_NET_PLAYER25_DARK,
HUD_COLOUR_NET_PLAYER26_DARK,
HUD_COLOUR_NET_PLAYER27_DARK,
HUD_COLOUR_NET_PLAYER28_DARK,
HUD_COLOUR_NET_PLAYER29_DARK,
HUD_COLOUR_NET_PLAYER30_DARK,
HUD_COLOUR_NET_PLAYER31_DARK,
HUD_COLOUR_NET_PLAYER32_DARK,
HUD_COLOUR_BRONZE,
HUD_COLOUR_SILVER,
HUD_COLOUR_GOLD,
HUD_COLOUR_PLATINUM,
HUD_COLOUR_GANG1,
HUD_COLOUR_GANG2,
HUD_COLOUR_GANG3,
HUD_COLOUR_GANG4,
HUD_COLOUR_SAME_CREW,
HUD_COLOUR_FREEMODE,
HUD_COLOUR_PAUSE_BG,
HUD_COLOUR_FRIENDLY,
HUD_COLOUR_ENEMY,
HUD_COLOUR_LOCATION,
HUD_COLOUR_PICKUP,
HUD_COLOUR_PAUSE_SINGLEPLAYER,
HUD_COLOUR_FREEMODE_DARK,
HUD_COLOUR_INACTIVE_MISSION,
HUD_COLOUR_DAMAGE,
HUD_COLOUR_PINKLIGHT,
HUD_COLOUR_PM_MITEM_HIGHLIGHT,
HUD_COLOUR_SCRIPT_VARIABLE,
HUD_COLOUR_YOGA,
HUD_COLOUR_TENNIS,
HUD_COLOUR_GOLF,
HUD_COLOUR_SHOOTING_RANGE,
HUD_COLOUR_FLIGHT_SCHOOL,
HUD_COLOUR_NORTH_BLUE,
HUD_COLOUR_SOCIAL_CLUB,
HUD_COLOUR_PLATFORM_BLUE,
HUD_COLOUR_PLATFORM_GREEN,
HUD_COLOUR_PLATFORM_GREY,
HUD_COLOUR_FACEBOOK_BLUE,
HUD_COLOUR_INGAME_BG,
HUD_COLOUR_DARTS,
HUD_COLOUR_WAYPOINT,
HUD_COLOUR_MICHAEL,
HUD_COLOUR_FRANKLIN,
HUD_COLOUR_TREVOR,
HUD_COLOUR_GOLF_P1,
HUD_COLOUR_GOLF_P2,
HUD_COLOUR_GOLF_P3,
HUD_COLOUR_GOLF_P4,
HUD_COLOUR_WAYPOINTLIGHT,
HUD_COLOUR_WAYPOINTDARK,
HUD_COLOUR_PANEL_LIGHT,
HUD_COLOUR_MICHAEL_DARK,
HUD_COLOUR_FRANKLIN_DARK,
HUD_COLOUR_TREVOR_DARK,
HUD_COLOUR_OBJECTIVE_ROUTE,
HUD_COLOUR_PAUSEMAP_TINT,
HUD_COLOUR_PAUSE_DESELECT,
HUD_COLOUR_PM_WEAPONS_PURCHASABLE,
HUD_COLOUR_PM_WEAPONS_LOCKED,
HUD_COLOUR_END_SCREEN_BG,
HUD_COLOUR_CHOP,
HUD_COLOUR_PAUSEMAP_TINT_HALF,
HUD_COLOUR_NORTH_BLUE_OFFICIAL,
HUD_COLOUR_SCRIPT_VARIABLE_2,
HUD_COLOUR_H,
HUD_COLOUR_HDARK,
HUD_COLOUR_T,
HUD_COLOUR_TDARK,
HUD_COLOUR_HSHARD,
HUD_COLOUR_CONTROLLER_MICHAEL,
HUD_COLOUR_CONTROLLER_FRANKLIN,
HUD_COLOUR_CONTROLLER_TREVOR,
HUD_COLOUR_CONTROLLER_CHOP,
HUD_COLOUR_VIDEO_EDITOR_VIDEO,
HUD_COLOUR_VIDEO_EDITOR_AUDIO,
HUD_COLOUR_VIDEO_EDITOR_TEXT,
HUD_COLOUR_HB_BLUE,
HUD_COLOUR_HB_YELLOW,
HUD_COLOUR_VIDEO_EDITOR_SCORE,
HUD_COLOUR_VIDEO_EDITOR_AUDIO_FADEOUT,
HUD_COLOUR_VIDEO_EDITOR_TEXT_FADEOUT,
HUD_COLOUR_VIDEO_EDITOR_SCORE_FADEOUT,
HUD_COLOUR_HEIST_BACKGROUND,
HUD_COLOUR_VIDEO_EDITOR_AMBIENT,
HUD_COLOUR_VIDEO_EDITOR_AMBIENT_FADEOUT,
HUD_COLOUR_GB,
HUD_COLOUR_G,
HUD_COLOUR_B,
HUD_COLOUR_LOW_FLOW,
HUD_COLOUR_LOW_FLOW_DARK,
HUD_COLOUR_G1,
HUD_COLOUR_G2,
HUD_COLOUR_G3,
HUD_COLOUR_G4,
HUD_COLOUR_G5,
HUD_COLOUR_G6,
HUD_COLOUR_G7,
HUD_COLOUR_G8,
HUD_COLOUR_G9,
HUD_COLOUR_G10,
HUD_COLOUR_G11,
HUD_COLOUR_G12,
HUD_COLOUR_G13,
HUD_COLOUR_G14,
HUD_COLOUR_G15,
HUD_COLOUR_ADVERSARY,
HUD_COLOUR_DEGEN_RED,
HUD_COLOUR_DEGEN_YELLOW,
HUD_COLOUR_DEGEN_GREEN,
HUD_COLOUR_DEGEN_CYAN,
HUD_COLOUR_DEGEN_BLUE,
HUD_COLOUR_DEGEN_MAGENTA,
HUD_COLOUR_STUNT_1,
HUD_COLOUR_STUNT_2,
HUD_COLOUR_SPECIAL_RACE_SERIES,
HUD_COLOUR_SPECIAL_RACE_SERIES_DARK,
HUD_COLOUR_CS,
HUD_COLOUR_CS_DARK,
HUD_COLOUR_TECH_GREEN,
HUD_COLOUR_TECH_GREEN_DARK,
HUD_COLOUR_TECH_RED,
HUD_COLOUR_TECH_GREEN_VERY_DARK,
HUD_COLOUR_DEFAULT //not a real value, used in logic
}
}

View File

@@ -0,0 +1,12 @@
namespace Nexd.ESX.Client
{
public enum IconType : int
{
ChatBox = 1,
Email = 2,
AddFriendRequest = 3,
RightJumpingWindow = 7,
RP = 8,
Dollar = 9
}
}

View File

@@ -0,0 +1,172 @@
namespace Nexd.ESX.Client
{
public enum NotificationPicture
{
CHAR_ABIGAIL,
CHAR_ALL_PLAYERS_CONF,
CHAR_AMANDA,
CHAR_AMMUNATION,
CHAR_ANDREAS,
CHAR_ANTONIA,
CHAR_ARTHUR,
CHAR_ASHLEY,
CHAR_BANK_BOL,
CHAR_BANK_FLEECA,
CHAR_BANK_MAZE,
CHAR_BARRY,
CHAR_BEVERLY,
CHAR_BIKESITE,
CHAR_BLANK_ENTRY,
CHAR_BLIMP,
CHAR_BLOCKED,
CHAR_BOATSITE,
CHAR_BROKEN_DOWN_GIRL,
CHAR_BUGSTARS,
CHAR_CALL911,
CHAR_CARSITE,
CHAR_CARSITE2,
CHAR_CASTRO,
CHAR_CHAT_CALL,
CHAR_CHEF,
CHAR_CHENG,
CHAR_CHENGSR,
CHAR_CHOP,
CHAR_CRIS,
CHAR_DAVE,
CHAR_DEFAULT,
CHAR_DENISE,
CHAR_DETONATEBOMB,
CHAR_DETONATEPHONE,
CHAR_DEVIN,
CHAR_DIAL_A_SUB,
CHAR_DOM,
CHAR_DOMESTIC_GIRL,
CHAR_DREYFUSS,
CHAR_DR_FRIEDLANDER,
CHAR_EPSILON,
CHAR_ESTATE_AGENT,
CHAR_FACEBOOK,
CHAR_FILMNOIR,
CHAR_FLOYD,
CHAR_FRANKLIN,
CHAR_FRANK_TREV_CONF,
CHAR_GAYMILITARY,
CHAR_HAO,
CHAR_HITCHER_GIRL,
CHAR_HUMANDEFAULT,
CHAR_HUNTER,
CHAR_JIMMY,
CHAR_JIMMY_BOSTON,
CHAR_JOE,
CHAR_JOSEF,
CHAR_JOSH,
CHAR_LAMAR,
CHAR_LAZLOW,
CHAR_LESTER,
CHAR_LESTER_DEATHWISH,
CHAR_LEST_FRANK_CONF,
CHAR_LEST_MIKE_CONF,
CHAR_LIFEINVADER,
CHAR_LS_CUSTOMS,
CHAR_LS_TOURIST_BOARD,
CHAR_MANUEL,
CHAR_MARNIE,
CHAR_MARTIN,
CHAR_MARY_ANN,
CHAR_MAUDE,
CHAR_MECHANIC,
CHAR_MICHAEL,
CHAR_MIKE_FRANK_CONF,
CHAR_MIKE_TREV_CONF,
CHAR_MILSITE,
CHAR_MINOTAUR,
CHAR_MOLLY,
CHAR_MP_ARMY_CONTACT,
CHAR_MP_BIKER_BOSS,
CHAR_MP_BIKER_MECHANIC,
CHAR_MP_BRUCIE,
CHAR_MP_DETONATEPHONE,
CHAR_MP_FAM_BOSS,
CHAR_MP_FIB_CONTACT,
CHAR_MP_FM_CONTACT,
CHAR_MP_GERALD,
CHAR_MP_JULIO,
CHAR_MP_MECHANIC,
CHAR_MP_MERRYWEATHER,
CHAR_MP_MEX_BOSS,
CHAR_MP_MEX_DOCKS,
CHAR_MP_MEX_LT,
CHAR_MP_MORS_MUTUAL,
CHAR_MP_PROF_BOSS,
CHAR_MP_RAY_LAVOY,
CHAR_MP_ROBERTO,
CHAR_MP_SNITCH,
CHAR_MP_STRETCH,
CHAR_MP_STRIPCLUB_PR,
CHAR_MRS_THORNHILL,
CHAR_MULTIPLAYER,
CHAR_NIGEL,
CHAR_OMEGA,
CHAR_ONEIL,
CHAR_ORTEGA,
CHAR_OSCAR,
CHAR_PATRICIA,
CHAR_PEGASUS_DELIVERY,
CHAR_PLANESITE,
CHAR_PROPERTY_ARMS_TRAFFICKING,
CHAR_PROPERTY_BAR_AIRPORT,
CHAR_PROPERTY_BAR_BAYVIEW,
CHAR_PROPERTY_BAR_CAFE_ROJO,
CHAR_PROPERTY_BAR_COCKOTOOS,
CHAR_PROPERTY_BAR_ECLIPSE,
CHAR_PROPERTY_BAR_FES,
CHAR_PROPERTY_BAR_HEN_HOUSE,
CHAR_PROPERTY_BAR_HI_MEN,
CHAR_PROPERTY_BAR_HOOKIES,
CHAR_PROPERTY_BAR_IRISH,
CHAR_PROPERTY_BAR_LES_BIANCO,
CHAR_PROPERTY_BAR_MIRROR_PARK,
CHAR_PROPERTY_BAR_PITCHERS,
CHAR_PROPERTY_BAR_SINGLETONS,
CHAR_PROPERTY_BAR_TEQUILALA,
CHAR_PROPERTY_BAR_UNBRANDED,
CHAR_PROPERTY_CAR_MOD_SHOP,
CHAR_PROPERTY_CAR_SCRAP_YARD,
CHAR_PROPERTY_CINEMA_DOWNTOWN,
CHAR_PROPERTY_CINEMA_MORNINGWOOD,
CHAR_PROPERTY_CINEMA_VINEWOOD,
CHAR_PROPERTY_GOLF_CLUB,
CHAR_PROPERTY_PLANE_SCRAP_YARD,
CHAR_PROPERTY_SONAR_COLLECTIONS,
CHAR_PROPERTY_TAXI_LOT,
CHAR_PROPERTY_TOWING_IMPOUND,
CHAR_PROPERTY_WEED_SHOP,
CHAR_RON,
CHAR_SAEEDA,
CHAR_SASQUATCH,
CHAR_SIMEON,
CHAR_SOCIAL_CLUB,
CHAR_SOLOMON,
CHAR_STEVE,
CHAR_STEVE_MIKE_CONF,
CHAR_STEVE_TREV_CONF,
CHAR_STRETCH,
CHAR_STRIPPER_CHASTITY,
CHAR_STRIPPER_CHEETAH,
CHAR_STRIPPER_FUFU,
CHAR_STRIPPER_INFERNUS,
CHAR_STRIPPER_JULIET,
CHAR_STRIPPER_NIKKI,
CHAR_STRIPPER_PEACH,
CHAR_STRIPPER_SAPPHIRE,
CHAR_TANISHA,
CHAR_TAXI,
CHAR_TAXI_LIZ,
CHAR_TENNIS_COACH,
CHAR_TOW_TONYA,
CHAR_TRACEY,
CHAR_TREVOR,
CHAR_WADE,
CHAR_YOUTUBE
}
}

View File

@@ -0,0 +1,72 @@
namespace Nexd.ESX.Client
{
using System.Collections.Generic;
public static partial class ESX
{
public static partial class UI
{
public class MenuData
{
public dynamic Raw;
public MenuData(dynamic data) => Raw = data;
public MenuData()
{
Raw = new System.Dynamic.ExpandoObject();
Raw.title = new System.Dynamic.ExpandoObject();
Raw.align = new System.Dynamic.ExpandoObject();
Raw.elements = new System.Dynamic.ExpandoObject();
Raw.elements.head = new System.Dynamic.ExpandoObject();
Raw.elements.rows = new System.Dynamic.ExpandoObject();
}
public List<MenuElement> elements
{
get
{
List<MenuElement> temp = new List<MenuElement>();
foreach (var i in Raw.elements)
temp.Add(new MenuElement(i));
return temp;
}
set => Raw.elements = value;
}
public MenuElement current => new MenuElement(Raw.current);
public string title
{
get => Raw.title;
set => Raw.title = value;
}
public string align
{
get => Raw.align;
set => Raw.align = value;
}
public string[] head
{
get => Raw.elements.head;
set => Raw.elements.head = value;
}
public dynamic rows
{
get => Raw.elements.rows;
set => Raw.elements.rows = value;
}
public string type {
get => Raw.type;
set => Raw.type = value;
}
}
}
}
}

View File

@@ -0,0 +1,66 @@
namespace Nexd.ESX.Client
{
public static partial class ESX
{
public static partial class UI
{
public class MenuElement
{
public dynamic Raw;
public MenuElement(dynamic data) => Raw = data;
public MenuElement(dynamic label, dynamic value, dynamic customdata = null, string type = "default")
{
Raw = new System.Dynamic.ExpandoObject();
Raw.label = label;
Raw.value = value;
Raw.type = type;
custom = customdata;
}
public MenuElement()
{
Raw = new System.Dynamic.ExpandoObject();
Raw.label = new System.Dynamic.ExpandoObject();
Raw.value = new System.Dynamic.ExpandoObject();
Raw.name = new System.Dynamic.ExpandoObject();
Raw.options = new System.Dynamic.ExpandoObject();
Raw.type = "default";
custom = new System.Dynamic.ExpandoObject();
}
public dynamic label
{
get => Raw.label;
set => Raw.label = value;
}
public dynamic name {
get => Raw.name;
set => Raw.name = value;
}
public dynamic value
{
get => Raw.value;
set => Raw.value = value;
}
public dynamic options {
get => Raw.options;
set => Raw.options = value;
}
public string type
{
get => Raw.type;
set => Raw.type = value;
}
public dynamic custom { get; set; }
}
}
}
}

View File

@@ -0,0 +1,67 @@
namespace Nexd.ESX.Client
{
using System.Collections.Generic;
using CitizenFX.Core;
using Nexd.ESX.Shared;
public class PlayerData
{
public dynamic Raw;
public PlayerData() { }
public PlayerData(dynamic data) => Raw = data;
public Job job => new Job(Raw.job);
public Vector3 coords => new Vector3((float)Raw.coords.x, (float)Raw.coords.y, (float)Raw.coords.z);
public double heading => Raw.coords.heading;
public double maxWeight => Raw.maxWeight;
public List<Shared.Weapon> loadout
{
get
{
List<Shared.Weapon> temp = new List<Shared.Weapon>();
var loadout = Raw.loadout;
foreach (var i in loadout)
{
temp.Add(new Shared.Weapon(i));
}
return temp;
}
}
public Account[] accounts
{
get
{
Account[] accounts = new Account[3];
var raw = Raw.accounts;
for (int i = 0; i < 3; i++)
accounts[i] = new Account(raw[i]);
return accounts;
}
}
public List<InventoryItem> inventory
{
get
{
List<InventoryItem> inventory = new List<InventoryItem>();
var rawdata = Raw.inventory;
foreach (var i in rawdata)
{
inventory.Add(new InventoryItem(i));
}
return inventory;
}
}
}
}

View File

@@ -0,0 +1,334 @@
using System;
using System.Collections.Generic;
using System.Dynamic;
using CitizenFX.Core;
namespace Nexd.ESX.Client {
public class VehicleProperties {
private dynamic Raw;
public VehicleProperties() {
Raw = new ExpandoObject();
}
public VehicleProperties(dynamic data) => Raw = data;
public dynamic GetRaw() => Raw;
public int model {
get => Convert.ToInt32(Raw.model);
set => Raw.model = Convert.ToInt32(value);
}
public string plate {
get => Raw.plate;
set => Raw.plate = value;
}
public int plateIndex {
get => Raw.plateIndex;
set => Raw.plateIndex = value;
}
public double bodyHealth {
get => Raw.bodyHealth;
set => Raw.bodyHealth = value;
}
public double engineHealth {
get => Raw.engineHealth;
set => Raw.engineHealth = value;
}
public double tankHealth {
get => Raw.tankHealth;
set => Raw.tankHealth = value;
}
public double fuelLevel {
get => Raw.fuelLevel;
set => Raw.fuelLevel = value;
}
public double dirtLevel {
get => Raw.dirtLevel;
set => Raw.dirtLevel = value;
}
public VehicleColor color1 {
get => (VehicleColor)Raw.color1;
set => Raw.color1 = (int)value;
}
public VehicleColor color2 {
get => (VehicleColor)Raw.color2;
set => Raw.color2 = (int)value;
}
public VehicleColor pearlescentColor {
get => (VehicleColor)Raw.pearlescentColor;
set => Raw.pearlescentColor = (int)value;
}
public VehicleColor wheelColor {
get => (VehicleColor)Raw.wheelColor;
set => Raw.wheelColor = (int)value;
}
public VehicleWheelType wheels {
get => (VehicleWheelType)Raw.wheels;
set => Raw.wheels = (int)value;
}
public VehicleWindowTint windowTint {
get => (VehicleWindowTint)Raw.windowTint;
set => Raw.windowTint = (int)value;
}
public List<bool> neonEnabled {
get => Raw.neonEnabled;
set => Raw.neonEnabled = value;
}
public List<int> neonColor {
get => Raw.neonColor;
set => Raw.neonColor = value;
}
public List<object> extras {
get => Raw.extras;
set => Raw.extras = value;
}
public dynamic tyreSmokeColor {
get => Raw.tyreSmokeColor;
set => Raw.tyreSmokeColor = value;
}
public int modSpoilers {
get => Raw.modSpoilers;
set => Raw.modSpoilers = value;
}
public int modFrontBumper {
get => Raw.modFrontBumper;
set => Raw.modFrontBumper = value;
}
public int modRearBumper {
get => Raw.modRearBumper;
set => Raw.modRearBumper = value;
}
public int modSideSkirt {
get => Raw.modSideSkirt;
set => Raw.modSideSkirt = value;
}
public int modExhaust {
get => Raw.modExhaust;
set => Raw.modExhaust = value;
}
public int modFrame {
get => Raw.modFrame;
set => Raw.modFrame = value;
}
public int modGrille {
get => Raw.modGrille;
set => Raw.modGrille = value;
}
public int modHood {
get => Raw.modHood;
set => Raw.modHood = value;
}
public int modFender {
get => Raw.modFender;
set => Raw.modFender = value;
}
public int modRightFender {
get => Raw.modRightFender;
set => Raw.modRightFender = value;
}
public int modRoof {
get => Raw.modRoof;
set => Raw.modRoof = value;
}
public int modEngine {
get => Raw.modEngine;
set => Raw.modEngine = value;
}
public int modBrakes {
get => Raw.modBrakes;
set => Raw.modBrakes = value;
}
public int modTransmission {
get => Raw.modTransmission;
set => Raw.modTransmission = value;
}
public int modHorns {
get => Raw.modHorns;
set => Raw.modHorns = value;
}
public int modSuspension {
get => Raw.modSuspension;
set => Raw.modSuspension = value;
}
public int modArmor {
get => Raw.modArmor;
set => Raw.modArmor = value;
}
public int modTurbo {
get => Raw.modTurbo;
set => Raw.modTurbo = value;
}
public bool modSmokeEnabled {
get => Raw.modSmokeEnabled;
set => Raw.modSmokeEnabled = value;
}
public bool modXenon {
get => Raw.modXenon;
set => Raw.modXenon = value;
}
public int modFrontWheels {
get => Raw.modFrontWheels;
set => Raw.modFrontWheels = value;
}
public int modBackWheels {
get => Raw.modBackWheels;
set => Raw.modBackWheels = value;
}
public int modPlateHolder {
get => Raw.modPlateHolder;
set => Raw.modPlateHolder = value;
}
public int modVanityPlate {
get => Raw.modVanityPlate;
set => Raw.modVanityPlate = value;
}
public int modTrimA {
get => Raw.modTrimA;
set => Raw.modTrimA = value;
}
public int modOrnaments {
get => Raw.modOrnaments;
set => Raw.modOrnaments = value;
}
public int modDashboard {
get => Raw.modDashboard;
set => Raw.modDashboard = value;
}
public int modDial {
get => Raw.modDial;
set => Raw.modDial = value;
}
public int modDoorSpeaker {
get => Raw.modDoorSpeaker;
set => Raw.modDoorSpeaker = value;
}
public int modSeats {
get => Raw.modSeats;
set => Raw.modSeats = value;
}
public int modSteeringWheel {
get => Raw.modSteeringWheel;
set => Raw.modSteeringWheel = value;
}
public int modShifterLeavers {
get => Raw.modShifterLeavers;
set => Raw.modShifterLeavers = value;
}
public int modAPlate {
get => Raw.modAPlate;
set => Raw.modAPlate = value;
}
public int modSpeakers {
get => Raw.modSpeakers;
set => Raw.modSpeakers = value;
}
public int modTrunk {
get => Raw.modTrunk;
set => Raw.modTrunk = value;
}
public int modHydrolic {
get => Raw.modHydrolic;
set => Raw.modHydrolic = value;
}
public int modEngineBlock {
get => Raw.modEngineBlock;
set => Raw.modEngineBlock = value;
}
public int modAirFilter {
get => Raw.modAirFilter;
set => Raw.modAirFilter = value;
}
public int modStruts {
get => Raw.modStruts;
set => Raw.modStruts = value;
}
public int modArchCover {
get => Raw.modArchCover;
set => Raw.modArchCover = value;
}
public int modAerials {
get => Raw.modAerials;
set => Raw.modAerials = value;
}
public int modTrimB {
get => Raw.modTrimB;
set => Raw.modTrimB = value;
}
public int modTank {
get => Raw.modTank;
set => Raw.modTank = value;
}
/*public int modWindows
{
get => Raw.modWindows;
set => Raw.modWindows = value;
}*/
public int modLivery {
get => Raw.modLivery;
set => Raw.modLivery = value;
}
}
}

View File

@@ -0,0 +1,26 @@
namespace Nexd.ESX.Shared
{
using System;
public class Account
{
public enum AccountType : int
{
Cash = 0,
Bank = 1,
Black = 2
}
public dynamic Raw;
public string name => Raw.name;
public int money => Convert.ToInt32(Raw.money);
public string label => Raw.label;
public Account() { }
public Account(dynamic data) => Raw = data;
}
}

View File

@@ -0,0 +1,25 @@
namespace Nexd.ESX.Shared
{
public class InventoryItem
{
public dynamic Raw;
public string name => Raw.name;
public int count => Raw.count;
public string label => Raw.label;
public double weight => Raw.weight;
public bool usable => Raw.usable;
public bool rare => Raw.rare;
public bool canRemove => Raw.canRemove;
public InventoryItem() { }
public InventoryItem(dynamic data) => Raw = data;
}
}

View File

@@ -0,0 +1,29 @@
namespace Nexd.ESX.Shared
{
public class Job
{
public dynamic Raw;
public int id => Raw.id;
public string name => Raw.name;
public string label => Raw.label;
public int grade => Raw.grade;
public string grade_name => Raw.grade_name;
public string grade_label => Raw.grade_label;
public int grade_salary => Raw.grade_salary;
public dynamic skin_male => Raw.skin_male;
public dynamic skin_female => Raw.skin_female;
public Job() { }
public Job(dynamic data) => Raw = data;
}
}

View File

@@ -0,0 +1,35 @@
namespace Nexd.ESX.Shared
{
using System.Collections.Generic;
public class Weapon
{
public dynamic Raw;
public string name => Raw.name;
public int ammo => Raw.ammo;
public string label => Raw.label;
public int tintIndex => Raw.tintIndex;
public List<string> components
{
get
{
List<string> temp = new List<string>();
foreach (var i in Raw.components)
{
temp.Add(i);
}
return temp;
}
}
public Weapon() { }
public Weapon(dynamic data) => Raw = data;
}
}

View File

@@ -0,0 +1,6 @@
namespace Mosleys.Shared.Models {
public struct BuyData {
public string Uuid { get; set; }
public string Plate { get; set; }
}
}

View File

@@ -0,0 +1,11 @@
namespace Mosleys.Shared.Models {
public struct ExhibitUpdate {
public UpdateAction Action { get; set; }
public ExhibitVehicle Exhibit { get; set; }
}
public enum UpdateAction {
Update,
Delete
}
}

View File

@@ -0,0 +1,25 @@
using System;
using System.Dynamic;
namespace Mosleys.Shared.Models {
public class ExhibitVehicle {
public string Uuid { get; set; }
public string Owner { get; set; }
public string Description { get; set; }
public int Price { get; set; }
public int Slot { get; set; }
public ExpandoObject Vehicle { get; set; }
public bool TestDrive { get; set; }
public static ExhibitVehicle FromDynamic(dynamic data) {
var vehicle = new ExhibitVehicle();
vehicle.Uuid = data.Uuid;
vehicle.Owner = data.Owner;
vehicle.Description = data.Description;
vehicle.Price = Convert.ToInt32(data.Price);
vehicle.Slot = Convert.ToInt32(data.Slot);
vehicle.Vehicle = data.Vehicle;
vehicle.TestDrive = data.TestDrive;
return vehicle;
}
}
}

View File

@@ -0,0 +1,10 @@
using System.Dynamic;
namespace Mosleys.Shared.Models {
public struct SellData {
public int ParkingSpace { get; set; }
public string Description { get; set; }
public int Price { get; set; }
public ExpandoObject VehicleProperties { get; set; }
}
}

View File

@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{95000252-DA88-4A79-8958-CA70B42CE0F9}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Mosleys.Shared</RootNamespace>
<AssemblyName>Mosleys.Shared</AssemblyName>
<TargetFrameworkVersion>v4.8.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="CitizenFX.Core">
<HintPath>..\Librarys\CitizenFX.Core.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.CSharp">
<HintPath>..\Librarys\Microsoft.CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Config.cs" />
<Compile Include="ESX\Client\Enums\HudColor.cs" />
<Compile Include="ESX\Client\Enums\IconType.cs" />
<Compile Include="ESX\Client\Enums\NotificationPicture.cs" />
<Compile Include="ESX\Client\ESX.cs" />
<Compile Include="ESX\Client\ESX.Game.cs" />
<Compile Include="ESX\Client\ESX.Game.Utils.cs" />
<Compile Include="ESX\Client\ESX.Scaleform.cs" />
<Compile Include="ESX\Client\ESX.Scaleform.Utils.cs" />
<Compile Include="ESX\Client\ESX.Streaming.cs" />
<Compile Include="ESX\Client\ESX.UI.cs" />
<Compile Include="ESX\Client\ESX.UI.HUD.cs" />
<Compile Include="ESX\Client\ESX.UI.Menu.cs" />
<Compile Include="ESX\Client\Models\ESX.UI.MenuData.cs" />
<Compile Include="ESX\Client\Models\ESX.UI.MenuElement.cs" />
<Compile Include="ESX\Client\Models\PlayerData.cs" />
<Compile Include="ESX\Client\Models\VehicleProperties.cs" />
<Compile Include="ESX\Shared\Account.cs" />
<Compile Include="ESX\Shared\InventoryItem.cs" />
<Compile Include="ESX\Shared\Job.cs" />
<Compile Include="ESX\Shared\Weapon.cs" />
<Compile Include="Models\BuyData.cs" />
<Compile Include="Models\ExhibitUpdate.cs" />
<Compile Include="Models\ExhibitVehicle.cs" />
<Compile Include="Models\SellData.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SectionScript.cs" />
<Compile Include="ServerConfig.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="fxmanifest.lua">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="settings.ini">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -0,0 +1,35 @@
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Mosleys.Shared")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Mosleys.Shared")]
[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("95000252-DA88-4A79-8958-CA70B42CE0F9")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@@ -0,0 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using CitizenFX.Core;
using CitizenFX.Core.Native;
namespace Mosleys.Shared {
}

View File

@@ -0,0 +1,154 @@
using System;
using System.Collections.Generic;
using System.Linq;
using CitizenFX.Core.Native;
namespace Mosleys.Shared {
public sealed class ServerConfig {
private sealed class ServerSectionScript {
private const char SplitChar = ' ';
private const string SectionStart = "{";
private const string SectionEnd = "}";
private const string CommentPrefix = "//";
private readonly string _fileName;
private readonly List<Tuple<string, Dictionary<string, string>>> _loadedData =
new List<Tuple<string, Dictionary<string, string>>>();
private readonly List<string> _allSections = new List<string>();
public ServerSectionScript(string fileName, bool load = false) {
_fileName = fileName;
if (!load)
return;
Read();
}
public string this[string section, string key, string result = ""] =>
GetValue(section, key, result);
public T GetValue<T>(string section, string key, T result) {
if (!SectionExists(section))
return result;
string data = GetData(section, key, result.ToString());
try {
return (T)Convert.ChangeType(data, typeof(T));
}
catch (InvalidCastException) {
return result;
}
}
public int[] GetIntArray(string section, string key, int[] result) {
if (!SectionExists(section))
return result;
string data = GetData(section, key, result.ToString());
data = data.Replace("[", "").Replace("]", "").Replace(" ", "");
return data.Split(',').Select(n => Convert.ToInt32(n)).ToArray();
}
public float[] GetFloatArray(string section, string key, float[] result) {
if (!SectionExists(section))
return result;
string data = GetData(section, key, result.ToString());
data = data.Replace("[", "").Replace("]", "").Replace(" ", "");
return data.Split(',').Select(Convert.ToSingle).ToArray();
}
public float[][] GetFloatArray2d(string section) {
List<float[]> floats = new List<float[]>();
foreach (Tuple<string, Dictionary<string, string>> tuple in _loadedData) {
if (!tuple.Item1.Equals(section)) continue;
foreach (var key in tuple.Item2.Values) {
var data = key.Replace("[", "").Replace("]", "").Replace(" ", "");
var vector = data.Split(',').Select(Convert.ToSingle).ToArray();
floats.Add(vector);
}
}
return floats.ToArray();
}
public string GetData(string section, string key, string result) {
foreach (Tuple<string, Dictionary<string, string>> tuple in _loadedData) {
if (tuple.Item1.Equals(section))
return tuple.Item2.ContainsKey(key) ? tuple.Item2[key] : result;
}
return result;
}
public bool SectionExists(string section) => _allSections.Contains(section);
public void Read() {
_loadedData.Clear();
_allSections.Clear();
string str1 = "";
Dictionary<string, string> source = new Dictionary<string, string>();
string str2 = API.LoadResourceFile(API.GetCurrentResourceName(), _fileName);
char[] chArray = { '\n' };
foreach (string str3 in str2.Split(chArray).Select(str => str.Trim())) {
string text = str3.Replace("\r", "");
if (!string.IsNullOrEmpty(text) && !string.IsNullOrWhiteSpace(text)) {
if (text.StartsWith(SectionStart)) {
str1 = text.Substring(1);
if (text.EndsWith(SectionEnd) && !str1.Contains(SectionStart)) {
str1 = str1.Remove(str1.Length - 1, 1);
_loadedData.Add(
new Tuple<string, Dictionary<string, string>>(str1,
new Dictionary<string, string>()));
if (!_allSections.Contains(str1))
_allSections.Add(str1);
source.Clear();
}
}
else if (text.EndsWith(SectionEnd) || text.StartsWith(SectionEnd)) {
Dictionary<string, string> dictionary =
source.ToDictionary(
entry => entry.Key,
entry => entry.Value);
_loadedData.Add(new Tuple<string, Dictionary<string, string>>(str1, dictionary));
if (!_allSections.Contains(str1))
_allSections.Add(str1);
source.Clear();
}
else if (!text.StartsWith(CommentPrefix)) {
Tuple<string, string> data = ConvertToData(text);
if (!source.ContainsKey(data.Item1))
source.Add(data.Item1, data.Item2);
}
}
}
}
public Tuple<string, string> ConvertToData(string text) {
int length = text.IndexOf(SplitChar);
if (length == -1)
return new Tuple<string, string>(text, "");
string str = "";
if (length - 1 < text.Length)
str = text.Substring(length + 1, text.Length - length - 1);
return new Tuple<string, string>(text.Substring(0, length), str);
}
}
public ServerConfig() {
var script = new ServerSectionScript("settings.ini", true);
ExhibitPrice = script.GetValue("[General]", "ExhibitPrice", 500);
SellBill = script.GetValue("[General]", "SellBill", 0.1f);
TargetSociety = script.GetValue("[General]", "TargetSociety", "mechanic");
CarSlots = script.GetFloatArray2d("[CarSlots]");
}
public readonly int ExhibitPrice;
public readonly float SellBill;
public readonly string TargetSociety;
public readonly float[][] CarSlots;
}
}

View File

@@ -0,0 +1,21 @@
fx_version 'cerulean'
games { 'gta5' }
-- details
author 'Leon Hoppe'
description "Mosley's"
version '2.0'
files {
'Newtonsoft.Json.dll',
'Mosleys.Shared.dll',
'settings.ini'
}
client_scripts {
'Mosleys.Client.net.dll'
}
server_scripts {
'Mosleys.Server.net.dll'
}

View File

@@ -0,0 +1,42 @@
{[Blip]
Position [-41.5, -1676.1, 30]
Sprite 380
Color 44
Scale 1.0
}
{[General]
MenuTitle Mosley's
ExhibitPrice 500
TestDriveTime 90000
SpawnRadius 100.0
MinSellPrice 1000
SellBill 0.1
TargetSociety mechanic
ForbiddenVehicleClasses [10, 13, 14, 15, 16, 18, 19, 20, 21]
SellLocation [-30.6116, -1676.2323, 28.5]
SpawnLocation [3.556, -1652.677, 28.853, 229.645]
TestDriveLocation [-48.724, -1645.301, 29.034, 318.446]
DigitalShowPoint [-31.4151, -1663.9031, 29.5]
DigitalCamera [-24.2456, -1643.7988, 33.1410, 186.6901]
}
{[CarSlots]
0 [-24.969, -1651.355, 28.35, 258.833]
1 [-51.790, -1694.293, 28.35, 301.206]
2 [-56.162, -1690.660, 28.35, 298.664]
3 [-59.606, -1685.879, 28.35, 309.221]
4 [-53.514, -1678.981, 28.35, 301.604]
5 [-43.349, -1666.895, 28.35, 296.207]
6 [-35.946, -1657.419, 28.35, 144.485]
7 [-16.085, -1653.906, 28.35, 308.377]
8 [-27.076, -1657.913, 28.35, 286.712]
9 [-23.641, -1643.140, 28.35, 121.021]
10 [-18.106, -1645.940, 28.35, 132.801]
11 [-43.647, -1690.989, 28.35, 311.298]
12 [-47.901, -1688.066, 28.35, 306.442]
13 [-51.714, -1683.800, 28.35, 306.119]
}

View File

@@ -0,0 +1,21 @@
fx_version 'cerulean'
games { 'gta5' }
-- details
author 'Leon Hoppe'
description "Mosley's"
version '2.0'
files {
'Newtonsoft.Json.dll',
'Mosleys.Shared.dll',
'settings.ini'
}
client_scripts {
'Mosleys.Client.net.dll'
}
server_scripts {
'Mosleys.Server.net.dll'
}

View File

@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8.1", FrameworkDisplayName = ".NET Framework 4.8.1")]

View File

@@ -0,0 +1 @@
c84418636563b1fd6318339a01e7718fc7e6bb37

View File

@@ -0,0 +1,6 @@
D:\Programmierstuff\C#\Mosleys\Mosleys.Shared\bin\Release\fxmanifest.lua
D:\Programmierstuff\C#\Mosleys\Mosleys.Shared\bin\Release\Mosleys.Shared.dll
D:\Programmierstuff\C#\Mosleys\Mosleys.Shared\obj\Release\Mosleys.Shared.csproj.AssemblyReference.cache
D:\Programmierstuff\C#\Mosleys\Mosleys.Shared\obj\Release\Mosleys.Shared.csproj.CoreCompileInputs.cache
D:\Programmierstuff\C#\Mosleys\Mosleys.Shared\obj\Release\Mosleys.Shared.dll
D:\Programmierstuff\C#\Mosleys\Mosleys.Shared\bin\Release\settings.ini

View File

@@ -0,0 +1,42 @@
{[Blip]
Position [-41.5, -1676.1, 30]
Sprite 380
Color 44
Scale 1.0
}
{[General]
MenuTitle Mosley's
ExhibitPrice 500
TestDriveTime 90000
SpawnRadius 100.0
MinSellPrice 1000
SellBill 0.1
TargetSociety mechanic
ForbiddenVehicleClasses [10, 13, 14, 15, 16, 18, 19, 20, 21]
SellLocation [-30.6116, -1676.2323, 28.5]
SpawnLocation [3.556, -1652.677, 28.853, 229.645]
TestDriveLocation [-48.724, -1645.301, 29.034, 318.446]
DigitalShowPoint [-31.4151, -1663.9031, 29.5]
DigitalCamera [-24.2456, -1643.7988, 33.1410, 186.6901]
}
{[CarSlots]
0 [-24.969, -1651.355, 28.35, 258.833]
1 [-51.790, -1694.293, 28.35, 301.206]
2 [-56.162, -1690.660, 28.35, 298.664]
3 [-59.606, -1685.879, 28.35, 309.221]
4 [-53.514, -1678.981, 28.35, 301.604]
5 [-43.349, -1666.895, 28.35, 296.207]
6 [-35.946, -1657.419, 28.35, 144.485]
7 [-16.085, -1653.906, 28.35, 308.377]
8 [-27.076, -1657.913, 28.35, 286.712]
9 [-23.641, -1643.140, 28.35, 121.021]
10 [-18.106, -1645.940, 28.35, 132.801]
11 [-43.647, -1690.989, 28.35, 311.298]
12 [-47.901, -1688.066, 28.35, 306.442]
13 [-51.714, -1683.800, 28.35, 306.119]
}