Skip to content

Commit d966056

Browse files
committed
General organisation, and added config file for #define statements
Signed-off-by: NarcoMarshDev <[email protected]>
1 parent 9f57587 commit d966056

File tree

9 files changed

+408
-111
lines changed

9 files changed

+408
-111
lines changed

resourceDatabase.rdb

188 Bytes
Binary file not shown.

scripts/Core/proto/ESE_Types.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1-
//#define ESE_EXPERIMENTAL
1+
// -----------------------------------------------------------------------------------------------------------
2+
// Enforce Script Extensions - By NarcoMarshmallow
3+
//
4+
// Message me @narcoleptic marshmallow #1188 on discord to give feedback or go to https://github.com/NarcoMarshDev
5+
//
6+
// These are all experiemental custom data types, which are not guaranteed to work in their current state, mostly due to modding core
7+
// classes being unsupported currently, as well as some not supporting inheritance. Very WIP, see ESE.c for more info
8+
// -----------------------------------------------------------------------------------------------------------
29

310
#ifdef ESE_EXPERIMENTAL
411

scripts/Game/!ESE_Config.c

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// -----------------------------------------------------------------------------------------------------------
2+
// Enforce Script Extensions - By NarcoMarshmallow
3+
//
4+
// Message me @narcoleptic marshmallow #1188 on discord to give feedback or go to https://github.com/NarcoMarshDev
5+
// -----------------------------------------------------------------------------------------------------------
6+
7+
8+
/** -------------------------------------------------------- READ THIS --------------------------------------------------------
9+
10+
Different functionality of ESE can be enabled or disabled by defining some different values. To do so, duplicate this file
11+
and name it ' !ESE_Config.c ' and then uncomment whatever #define statements you want, to enable those features.
12+
13+
-------------------------------------------------------- READ THIS --------------------------------------------------------
14+
15+
@code
16+
17+
#define ESE_VERBOSE
18+
- Enable verbose error logging on ESE methods
19+
20+
#define ESE_ENABLE_WIP
21+
- Enable work in progress methods, mostly broken but none should cause compilation errors or crash anything (hopefully).
22+
23+
#define ESE_EXPERIMENTAL
24+
- Enables experimental custom data types, this WILL PROBABLY CAUSE THE WORKBENCH TO CRASH ON STARTUP, despite compiling fine.
25+
If this happens just open your script in notepad or something and remove the #define and it will launch fine again.
26+
27+
#define ESE_OBSOLETE
28+
- Enables old versions of certain methods, may get replaced with an ESE_Obsolete class in the future containing all of them.
29+
30+
#define ESE_ALIASES_ALL
31+
- Enables all ESE shorthand name aliases, if you only want to use a specific set of aliases, use any of the following ones:
32+
#define ESE_ALIASES_MATERIALS - Useful material ResourceNames
33+
#define ESE_ALIASES_WEAPONS - All base game weapon ResourceNames
34+
#define ESE_ALIASES_ATTACHMENTS - All base game attachment ResourceNames
35+
#define ESE_ALIASES_MAGAZINES - All base game magazine ResourceNames
36+
#define ESE_ALIASES_MATH - Useful mathematical constants and such like
37+
38+
@endcode
39+
*/
40+
41+
#define ESE_VERBOSE
42+
//#define ESE_ENABLE_WIP
43+
//#define ESE_EXPERIMENTAL
44+
//#define ESE_OBSOLETE
45+
#define ESE_ALIASES_ALL
46+
//#define ESE_ALIASES_MATERIALS
47+
//#define ESE_ALIASES_WEAPONS
48+
//#define ESE_ALIASES_ATTACHMENTS
49+
//#define ESE_ALIASES_MAGAZINES
50+
//#define ESE_ALIASES_VEHICLES
51+
//#define ESE_ALIASES_MATH

scripts/Game/ESE.c

Lines changed: 78 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
//
1+
// -----------------------------------------------------------------------------------------------------------
22
// Enforce Script Extensions - By NarcoMarshmallow
33
//
44
// Message me @narcoleptic marshmallow #1188 on discord to give feedback or go to https://github.com/NarcoMarshDev
5-
//
6-
#define ESE_VERBOSE
7-
//#define ESE_ENABLE_WIP
5+
// -----------------------------------------------------------------------------------------------------------
6+
7+
8+
// Different functionality of ESE can be enabled or disabled by defining some different values, go to ESE_Config.c to see how
9+
810
class ESE
911
{
1012
// Base class for all ESE static methods, if we ever get modding support for core types many of these will get added to their respective classes as well
@@ -58,52 +60,6 @@ class ESE
5860
}
5961
return allChildren;
6062
}
61-
/**
62-
Creates new entity from prefab at a given position vector
63-
@code
64-
vector pos = someEntity.GetOrigin();
65-
ResourceName resName = "{3E413771E1834D2F}Prefabs/Weapons/Rifles/M16/Rifle_M16A2.et";
66-
67-
IEntity newEntity = ESE.SpawnPrefab(pos, resource);
68-
@endcode
69-
*/
70-
static IEntity SpawnPrefab(vector origin, ResourceName prefabName)
71-
{
72-
if (!prefabName)
73-
{
74-
Print("Missing Prefab: " + prefabName, LogLevel.ERROR);
75-
return null;
76-
}
77-
Resource prefab = Resource.Load(prefabName);
78-
EntitySpawnParams spawnParams;
79-
spawnParams.TransformMode = ETransformMode.WORLD;
80-
spawnParams.Transform[3] = origin;
81-
82-
return GetGame().SpawnEntityPrefab(prefab, GetGame().GetWorld(), spawnParams);
83-
}
84-
/**
85-
Creates new entity from prefab at a players position
86-
@code
87-
ResourceName resName = "{3E413771E1834D2F}Prefabs/Weapons/Rifles/M16/Rifle_M16A2.et";
88-
89-
IEntity newEntity = ESE.SpawnPrefabOnPlayer(playerId, resName);
90-
@endcode
91-
*/
92-
static IEntity SpawnPrefabOnPlayer(int playerId, ResourceName prefabName)
93-
{
94-
if (!prefabName)
95-
{
96-
Print("Missing Prefab: " + prefabName, LogLevel.ERROR);
97-
return null;
98-
}
99-
ChimeraCharacter player = ESE.GetPlayerEntity(playerId);
100-
Resource prefab = Resource.Load(prefabName);
101-
EntitySpawnParams spawnParams;
102-
spawnParams.TransformMode = ETransformMode.WORLD;
103-
player.GetWorldTransform(spawnParams.Transform);
104-
105-
return GetGame().SpawnEntityPrefab(prefab, player.GetWorld(), spawnParams);
106-
}
10763
// Deletes entity on server side
10864
static void DeleteEntity(IEntity ent)
10965
{
@@ -113,16 +69,35 @@ class ESE
11369

11470
// ================================ Player ================================
11571

116-
// Returns player controlled entity
72+
// Returns player controlled entity from given playerId
11773
static ChimeraCharacter GetPlayerEntity(int playerId)
11874
{
11975
return ChimeraCharacter.Cast( GetGame().GetPlayerManager().GetPlayerControlledEntity(playerId) );
12076
}
77+
78+
// Returns player controlled entity of local machine
79+
static ChimeraCharacter GetLocalPlayerEntity()
80+
{
81+
return ChimeraCharacter.Cast( GetGame().GetPlayerController().GetControlledEntity() );
82+
}
83+
12184
// Returns player id of given entity, returns 0 if not controlled by player
12285
static int GetPlayerId(IEntity ent)
12386
{
12487
return GetGame().GetPlayerManager().GetPlayerIdFromControlledEntity(ent);
12588
}
89+
90+
// Returns currently equipped weapon of given player character, returns null if weapon is holstered
91+
static BaseWeaponComponent GetCurrentWeapon(ChimeraCharacter player)
92+
{
93+
return player.GetCharacterController().GetWeaponManagerComponent().GetCurrentWeapon();
94+
}
95+
96+
static void HolsterCurrentWeapon(ChimeraCharacter player)
97+
{
98+
player.GetCharacterController().SelectWeapon(null);
99+
}
100+
126101
// Returns alive state of given entity
127102
static bool IsEntityAlive(IEntity entity)
128103
{
@@ -132,9 +107,11 @@ class ESE
132107
else
133108
return true;
134109
}
110+
111+
#ifdef ESE_ENABLE_WIP
135112
/**
136113
TODO - MAKE SURE THIS WORKS AS INTENDED ON LOCAL PLAYERS WHEN CALLED
137-
Returns if given entity is visible on local screen
114+
Returns true if given entity is visible on local screen, false otherwise
138115
@code
139116
@endcode
140117
*/
@@ -151,11 +128,59 @@ class ESE
151128
vector screenPos = workspace.ProjWorldToScreenNative(worldPos, GetGame().GetWorld());
152129
return screenPos[2] > 0 && screenPos[0] > 0 && screenPos[0] < width && screenPos[1] > 0 && screenPos[1] < height);
153130
}
131+
#endif
132+
/**
133+
Outputs all available magazines for a given weapon and character into a MagazineComponent array
134+
@code
135+
ChimeraCharacter player = ESE.GetLocalPlayerEntity();
136+
BaseWeaponComponent weapon = ESE.GetCurrentWeapon(player);
137+
array<MagazineComponent> arr = {};
154138
139+
ESE.FetchMagazines(player, weapon, arr);
140+
@endcode
141+
*/
142+
static void FetchMagazines(ChimeraCharacter character, BaseWeaponComponent weapon, inout array<MagazineComponent> magazines)
143+
{
144+
magazines.Clear();
145+
if (!character || !weapon || !weapon.GetCurrentMuzzle())
146+
return;
147+
148+
InventoryStorageManagerComponent inventory = character.GetCharacterController().GetInventoryStorageManager();
149+
if (!inventory)
150+
return;
151+
152+
BaseMuzzleComponent currentMuzzle = weapon.GetCurrentMuzzle();
153+
if (!currentMuzzle)
154+
return;
155+
156+
array<typename> components = {};
157+
array<IEntity> foundItems = {};
158+
components.Insert(MagazineComponent);
159+
160+
BaseMagazineWell targetWell = currentMuzzle.GetMagazineWell(); // Well, well, well
161+
if (!targetWell)
162+
return;
163+
164+
for (int i = inventory.FindItemsWithComponents(foundItems,components, EStoragePurpose.PURPOSE_ANY) -1; i > -1; i--)
165+
{
166+
MagazineComponent magComp = MagazineComponent.Cast(foundItems[i].FindComponent(MagazineComponent));
167+
if (!magComp)
168+
continue;
169+
170+
BaseMagazineWell well = magComp.GetMagazineWell();
171+
if (!well)
172+
continue;
173+
174+
if (!well.Type().IsInherited(targetWell.Type()))
175+
continue;
176+
177+
magazines.Insert(magComp);
178+
}
179+
}
155180
// ================================ WIP ================================
156181
#ifdef ESE_ENABLE_WIP
157182

158-
//*
183+
/**
159184
TODO - Not sure why it's not working but don't use it for now, may have to go back to the GetParent() -> GetAllChildren() type system
160185
*/
161186
static void GetAllSiblings(IEntity ent, notnull inout array<IEntity> allSiblings)

scripts/Game/ESE_Aliases.c

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
// -----------------------------------------------------------------------------------------------------------
2+
// Enforce Script Extensions - By NarcoMarshmallow
3+
//
4+
// Message me @narcoleptic marshmallow #1188 on discord to give feedback or go to https://github.com/NarcoMarshDev
5+
// -----------------------------------------------------------------------------------------------------------
6+
class ESE_Aliases
7+
{
8+
// TESTING, REMOVE BEFORE RELEASE!!!
9+
//#define ESE_ALIASES_ALL
10+
11+
// Pre-processor enable all other defs if ESE_ALIASES_ALL is defined
12+
#ifdef ESE_ALIASES_ALL
13+
#define ESE_ALIASES_MATERIALS
14+
#define ESE_ALIASES_WEAPONS
15+
#define ESE_ALIASES_ATTACHMENTS
16+
#define ESE_ALIASES_MAGAZINES
17+
#define ESE_ALIASES_VEHICLES
18+
#define ESE_ALIASES_MATH
19+
#endif
20+
21+
// ---------------------------------------------------------------- MATERIALS ---------------------------------------------------------------- //
22+
23+
#ifdef ESE_ALIASES_MATERIALS
24+
static ResourceName MAT_CANBUILD = "{56EBF5038622AC95}Assets/Conflict/CanBuild.emat";
25+
static ResourceName MAT_CANNOTBUILD = "{14A9DCEA57D1C381}Assets/Conflict/CannotBuild.emat";
26+
#endif
27+
28+
// ----------------------------------------------------------------- WEAPONS ---------------------------------------------------------------- //
29+
30+
#ifdef ESE_ALIASES_WEAPONS
31+
// RIFLES
32+
static ResourceName WEP_AK74 = "{FA5C25BF66A53DCF}Prefabs/Weapons/Rifles/AK74/Rifle_AK74.et";
33+
static ResourceName WEP_AK74_GP25 = "{63E8322E2ADD4AA7}Prefabs/Weapons/Rifles/AK74/Rifle_AK74_GP25.et";
34+
static ResourceName WEP_M21 = "{B31929F65F0D0279}Prefabs/Weapons/Rifles/M14/Rifle_M21.et";
35+
static ResourceName WEP_M21_ARTII = "{81EB948E6414BD6F}Prefabs/Weapons/Rifles/M14/Rifle_M21_ARTII.et";
36+
static ResourceName WEP_M16A2 = "{3E413771E1834D2F}Prefabs/Weapons/Rifles/M16/Rifle_M16A2.et";
37+
static ResourceName WEP_M16A2_M203 = "{5A987A8A13763769}Prefabs/Weapons/Rifles/M16/Rifle_M16A2_M203.et";
38+
static ResourceName WEP_SVD = "{3EB02CDAD5F23C82}Prefabs/Weapons/Rifles/SVD/Rifle_SVD.et";
39+
static ResourceName WEP_SVD_PSO = "{6415B7923DE28C1B}Prefabs/Weapons/Rifles/SVD/Rifle_SVD_PSO.et";
40+
// LMGS
41+
static ResourceName WEP_M249 = "{D2B48DEBEF38D7D7}Prefabs/Weapons/MachineGuns/M249/MG_M249.et";
42+
static ResourceName WEP_M60 = "{D182DCDD72BF7E34}Prefabs/Weapons/MachineGuns/M60/MG_M60.et";
43+
static ResourceName WEP_PKM = "{A89BC9D55FFB4CD8}Prefabs/Weapons/MachineGuns/PKM/MG_PKM.et";
44+
static ResourceName WEP_RPK74 = "{A7AF84C6C58BA3E8}Prefabs/Weapons/MachineGuns/RPK74/MG_RPK74.et";
45+
// HANDGUNS
46+
static ResourceName WEP_M9 = "{1353C6EAD1DCFE43}Prefabs/Weapons/Handguns/M9/Handgun_M9.et";
47+
static ResourceName WEP_PM = "{C0F7DD85A86B2900}Prefabs/Weapons/Handguns/PM/Handgun_PM.et";
48+
// LAUNCHERS
49+
static ResourceName WEP_M72A3 = "{9C5C20FB0E01E64F}Prefabs/Weapons/Launchers/M72/Launcher_M72A3.et";
50+
static ResourceName WEP_RPG7 = "{7A82FE978603F137}Prefabs/Weapons/Launchers/RPG7/Launcher_RPG7.et";
51+
// FRAG GRENADES
52+
static ResourceName WEP_M67 = "{E8F00BF730225B00}Prefabs/Weapons/Grenades/Grenade_M67.et";
53+
static ResourceName WEP_RGD5 = "{645C73791ECA1698}Prefabs/Weapons/Grenades/Grenade_RGD5.et";
54+
// SMOKE GRENADES
55+
static ResourceName WEP_ANM8HC = "{9DB69176CEF0EE97}Prefabs/Weapons/Grenades/Smoke_ANM8HC.et";
56+
static ResourceName WEP_RDG2 = "{77EAE5E07DC4678A}Prefabs/Weapons/Grenades/Smoke_RDG2.et";
57+
static ResourceName WEP_M18_WHITE = "{AD2709F5F6F0D871}Prefabs/Weapons/Grenades/M18/Smoke_M18_Base.et";
58+
static ResourceName WEP_M18_GREEN = "{D41D22DD1B8E921E}Prefabs/Weapons/Grenades/M18/Smoke_M18_Green.et";
59+
static ResourceName WEP_M18_RED = "{3343A055A83CB30D}Prefabs/Weapons/Grenades/M18/Smoke_M18_Red.et";
60+
static ResourceName WEP_M18_VIOLET = "{14C1A0F061D9DDEE}Prefabs/Weapons/Grenades/M18/Smoke_M18_Violet.et";
61+
static ResourceName WEP_M18_YELLOW = "{9BBDEE253A16CC66}Prefabs/Weapons/Grenades/M18/Smoke_M18_Yellow.et";
62+
#endif
63+
64+
// ---------------------------------------------------------------- ATTACHMENTS ---------------------------------------------------------------- //
65+
66+
#ifdef ESE_ALIASES_ATTACHMENTS
67+
// SCOPES
68+
static ResourceName OPTIC_ARTII = "{D2018EDB1BBF4C88}Prefabs/Weapons/Attachments/Optics/Optic_ARTII.et";
69+
static ResourceName OPTIC_PSO1 = "{C850A33226B8F9C1}Prefabs/Weapons/Attachments/Optics/Optic_PSO1.et";
70+
// UGL'S
71+
static ResourceName UGL_M203 = "{43FDAF3FA0FF2299}Prefabs/Weapons/Attachments/Underbarrel/UGL_M203.et";
72+
static ResourceName UGL_GP25 = "{1ABABE3551512B0A}Prefabs/Weapons/Attachments/Underbarrel/UGL_GP25.et";
73+
// BAYONETS
74+
static ResourceName BAYONET_M9 = "{A4AF9C38A4179880}Prefabs/Weapons/Attachments/Bayonets/Bayonet_M9.et";
75+
static ResourceName BAYONET_6KH4 = "{C7534F7A79EA3331}Prefabs/Weapons/Attachments/Bayonets/Bayonet_6Kh4.et";
76+
// HANDGUARDS
77+
static ResourceName HGUARD_M16A2 = "{FB1A7F5BC7D935E2}Prefabs/Weapons/Attachments/Handguards/Handguard_M16A2/Handguard_M16.et";
78+
#endif
79+
80+
// ----------------------------------------------------------------- MAGAZINES ---------------------------------------------------------------- //
81+
82+
#ifdef ESE_ALIASES_MAGAZINES
83+
// MISSING FOR NOW BECAUSE THERE'S SO MANY OF THEM AND IT HURTS TO THINK ABOUT DOING
84+
#endif
85+
86+
// ----------------------------------------------------------------- VEHICLES ----------------------------------------------------------------- //
87+
88+
#ifdef ESE_ALIASES_VEHICLES
89+
// LIGHT VEHICLES
90+
static ResourceName VEH_M151A2 = "{F649585ABB3706C4}Prefabs/Vehicles/Wheeled/M151A2/M151A2.et";
91+
static ResourceName VEH_M151A2_TRANSPORT = "{47D94E1193A88497}Prefabs/Vehicles/Wheeled/M151A2/M151A2_transport.et";
92+
static ResourceName VEH_M151A2_M2HB = "{F6B23D17D5067C11}Prefabs/Vehicles/Wheeled/M151A2/M151A2_M2HB.et";
93+
94+
static ResourceName VEH_UAZ469 = "{259EE7B78C51B624}Prefabs/Vehicles/Wheeled/UAZ469/UAZ469.et";
95+
// TRUCKS
96+
static ResourceName VEH_M923A1 = "{9A0D72816DFFDB7F}Prefabs/Vehicles/Wheeled/M923A1/M923A1.et";
97+
static ResourceName VEH_M923A1_TRANSPORT = "{F1FBD0972FA5FE09}Prefabs/Vehicles/Wheeled/M923A1/M923A1_transport.et";
98+
static ResourceName VEH_M923A1_COVERED = "{81FDAD5EB644CC3D}Prefabs/Vehicles/Wheeled/M923A1/M923A1_transport_covered.et";
99+
static ResourceName VEH_M923A1_TANKER = "{2BE1F8B9299B67C1}Prefabs/Vehicles/Wheeled/M923A1/M923A1_tanker.et";
100+
static ResourceName VEH_M923A1_COMMAND = "{36BDCC88B17B3BFA}Prefabs/Vehicles/Wheeled/M923A1/M923A1_command.et";
101+
static ResourceName VEH_URAL4320 = "{4597626AF36C0858}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320.et";
102+
static ResourceName VEH_URAL4320_TRANSPORT = "{16C1F16C9B053801}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_transport.et";
103+
static ResourceName VEH_URAL4320_COVERED = "{D9B91FAB817A6033}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_transport_covered.et";
104+
static ResourceName VEH_URAL4320_TANKER = "{4C81D7ED8F8C0D87}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_tanker.et";
105+
static ResourceName VEH_URAL4320_COMMAND = "{1BABF6B33DA0AEB6}Prefabs/Vehicles/Wheeled/Ural4320/Ural4320_command.et";
106+
// MEDIUM VEHICLES
107+
static ResourceName VEH_M998 = "{5674FAEB9AB7BDD0}Prefabs/Vehicles/Wheeled/M998/M998.et";
108+
static ResourceName VEH_M998_COVERED = "{B55C6990A6A9411B}Prefabs/Vehicles/Wheeled/M998/M998_covered.et";
109+
static ResourceName VEH_M998_COVERED_LONG = "{9B1BF9644E0378D6}Prefabs/Vehicles/Wheeled/M998/M998_covered_long.et";
110+
111+
static ResourceName VEH_M1025 = "{4A71F755A4513227}Prefabs/Vehicles/Wheeled/M998/M1025.et";
112+
static ResourceName VEH_M1025_ARMED_EMPTY = "{B120CDDBEF8DB007}Prefabs/Vehicles/Wheeled/M998/M1025_armed_base.et";
113+
static ResourceName VEH_M1025_ARMED_M2HB = "{3EA6F47D95867114}Prefabs/Vehicles/Wheeled/M998/M1025_armed_M2HB.et";
114+
115+
static ResourceName VEH_BTR70 = "{C012BB3488BEA0C2}Prefabs/Vehicles/Wheeled/BTR70/BTR70.et";
116+
#endif
117+
}

0 commit comments

Comments
 (0)