#enfusion_scripting
1 messages · Page 5 of 1
The how would the collisiontriggercomponent be working then, if it doesn't rely on EOnContact?
since all the grenade effects are setup in the CollisionTriggerComponent
Timer?
by default
And what did you have this setup on, so I can try and test mine in a similar setting?
Ammo_Grenade_HEDP_M433.et
swapping the CollisionTriggerComponent for mine
but it seems strange that the EOnContact wouldn't work for them, given that the BaseTriggerComponent has the event protected void EOnContact(IEntity owner, IEntity other, Contact contact); as part of it
and when I try and override the EOnInit for it, it works fine
but the EOnContact doesn't
You have absolutely 0 idea what is actually happening in the CollisionTriggerComponent because none of it is exposed.
Yes, that is why I was asking questions on if anyone had any idea
Having an EOnContact method doen't mean that is what is being called by the CollisionTriggerComponent
like from discussions i've missed or info I haven't been able to find, and could be pointed too
Yeah, it's a long shot of messing with it. I found another way to do what I actually want to do, so it's not an end of the world thing, but it was more a case of wanting to see if I still could get it to actually do what I wanted
Anybody know anything about EPF_BasicRespawnSystemComponent breaking deployment screen?
It works with regular SCR version but when I add the epf version it breaks
Hello I'm getting an error related to this line of script in SCR_AmbientPatrolSystem
The line is this: SCR_AmbientPatrolSpawnPointComponent spawnpoint = m_aPatrols[spawnpointIndex];
Any idea what this could mean? I'm not using ambient patrols and the error happens even if I delete all the AI from the scenario
Can you post full error?
This is the one
I've tried everything. I've even started the scenario with nothing but just a spawn and it keeps happening
Do you have ambient spawn points in your scenario?
Nope I've never used them since I work exclusively on Scenario Framework and Ambient Patrols don't work there. Even then I decided to check but no I have nothing like that.
Something is causing the system to kick in, what if you place a dummy ambient spawn point sonewhere that does nothing?
God damn I tried that and the error is gone 
It's probably not a good way to get rid of the error, but at least it won't be annoying you in development
Yeah I'd like to know what is causing it in the first place but I've tried everything. Loading the world empty with just my own spawnpoint still triggers it is very weird
Thank you for the quick fix though!!
Simple getters even for c++ side it is best performing to repeat them. But depending on how long the chain is, you might still want to use a variable for better readability. Also if the method warns it does some expensive lookup Logic you don't want to call it often
does modded have any runtime performance impact? let’s say I want to modularize a class by splitting it into several files, so that each source file appends it’s own methods to a single class.
are there any downsides to having 20 usages of modded on a single class?
When i did this i had some problems with member variables due to the order of how they compiled or whatever.
If you like to split it with methodes it should be fine i guess.
Memory is the downside, and difficult to work with, since you will see many classes on the search on the right side
Agree.
It can be confusing even if just 2 or 3 splits.
Speaking from my own experiance.
thanks. in this particular case it’s about an utility class with static getters, basically a syntactic sugar to have shorthands for singletons access.
so in each singleton class file I want to append a getter to XXX_Global class, more or less.
it’s not about splitting a class logic horizontally, I agree that would be a bad design choice
while search window is fine to work with, I find it more cumbersome with context menu’s „go to definition” option, which usually opens the file with modded variant instead of the source class, even if variable/method to follow is not modded
Hey, I want to increase the number of people it takes to start the capturing of the base. I want it to be a minimum of 3 people on the point BUT would still want like the ratio aspect still active. can this be done within the engine or is it a script ????. any help would be much appreciated as I'm new to this. Many thanks
Sorry for the delay, this is a known issue related to road network which hangs up and causes a subsequent freeze check crash. We are already working on fixing it.
Ok thanks! Is that related to the save file at all? The fix I've found is to delete the save file and the boot loop will finally stop. It's like the file is rendered unloadable or something.
When I make an entity inheriting from the PolylineShapeEntity, the points do not seem to work correctly.
[EntityEditorProps(category: "GameScripted/", description: "")]
class TILW_PolylineTestClass : PolylineShapeEntityClass
{
}
class TILW_PolylineTest : PolylineShapeEntity
{
}
I can place the entity and add points to it, but these points will:
a) Not disappear when going back out of the vector tool, they are always displayed
b) Are not selectable in the vector tool, meaning you cannot select+edit placed points.
I assume this is a Workbench bug (and will make a feedback ticket in that case). Or is this something that is expected to not work for some reason I'm not aware of?
Our Server creates an entity (parachute model, in this case) and attaches the entity to moving player entities, using local transform + parent. This works, but the parachute attachment vector can be off when viewed from other clients. So the parachute appears on other clients like it's underneath player entities, depending on lag.
Is there a right way to attach an entity to another moving entity, so it appears in the correct position on clients? The code on the Server is something like this.
EntitySpawnParams spawnParams = new EntitySpawnParams();
spawnParams.Parent = playerEntity;
spawnParams.TransformMode = ETransformMode.LOCAL;
spawnParams.Transform[3] = "0 0.9 -0.05"; // Position relative to player entity
IEntity spawnedParachute = GetGame().SpawnEntityPrefab(parachuteResource, GetGame().GetWorld(), spawnParams);
I have a similar issue with my parachute but no there is no good way, and to have a character moved in as driver I even need to wait like 66ms otherwise it doesnt work, so even more lag.
Hm - yeah the problem seems to be between the server's idea of ETransformMode.LOCAL and how the clients perceive the parent entity's position., during the attachment.
And in my case I'm just simulating the parachute + player falling (no parachute vehicle). Having the NwkPhysicsMovementComponent makes them look nice, but they are still in the wrong place.
Ah ok I used this approach before I switched to a compartment and it was a bit prettier (parachute was almost instant, no delay) but this one is more proper
How about spawning it locally for each client inside the RPL bubble?
Is there a way to measure sub millisecond time, apart from Debug.Begin/EndTimeMeasure() which can only print the measurement?
I'm aware of System.GetTickCount(), but that only gives you a ms timestamp, so not precise enough.
What seems to work is create a new component, attached to the parachute entity, with a single function -> SetTransformBroadcast(vector transform) which is broadcast from the server, and each client does their own local transform. This makes everything 'look good' on the clients.
parachuteEntity.SetLocalTransform(FullTransform); // each client does a local transform, relative to their view of the player entity's position.
parachuteEntity.Update();
e.g. that is called by every client, for each parachute entity, where it's streamed in.
Lol I use this all the time for client-authoritative vehicles
Just send the transform, in some cases I also send velocity and angular velocity and apply it on other clients to smooth it out a little
I mean for movement
If you want to time a method, just execute it many times and take the average.
If you open debug menu and enable script profiler it will tell you time spent per function
In microseconds
if you us CTI gamemode and add SF slot in it, you need to put at least 1 ambient petrol and vehicle in it.
I was looking for a way to save it in a variable so I can do some processing, i. e. adding things up.
But I may look at the profiler as well, if that's not possible.
Unfortunately not a solution in my case. I primarily want to see how much splitting processing up across frames decreases efficiency otherwise gained from caching (which would be affected by doing the same thing many times).
What required to GameSystem be instantiated? (class inherited, added to ChimeraSystemsConfig.conf and nothing happen) or I need to do this manually?
never mind, restart WB just fix everything
does Enfusion support polymorphic dispatch?
say I have:
BaseSkill rifleSkill = new RifleSkill(); // RifleSkill inherits from BaseSkill
rifleSkill.SomeFunction();
will it call RifleSkill's SomeFunction, or BaseSkill's SomeFunction?
It does support polymorphic dispatch.
Is that a fancy name for overloading
its a part of overriding. some engines/languages don't support polymorphic dispatch, but they do support overriding
It allows you to call the same method on different objects and have each object execute its own appropriate implementation, simplifying code by letting you treat diverse types uniformly... sort of like an interface, but enfusion doesn't support interfaces
It also doesn't support the walrus operator
There are also languages that support both, e.g. virtual vs non-virtual methods in C++.
Aight why my world system aint running
class Bacon_6522EAB7461F248C_RobotSystem: BaseSystem {
protected ref array<Bacon_6522EAB7461F248C_RobotCharacter> m_Characters;
override static void InitInfo(WorldSystemInfo outInfo)
{
outInfo
.SetAbstract(false)
.SetLocation(ESystemLocation.Server)
.AddPoint(ESystemPoint.FixedFrame);
}
override event protected void OnUpdate(ESystemPoint point)
{
Print("Hello");
}
}

Also, how does the config from my screenshot get applied in published mod? Is it automatic?
Alright it works when I override chimera systems config, the mod config approach doesn't work
yeah ACE we modify chimera systems config
What's the best way to handle entities being registered and unregistered rapidly? This is for a mod that will often have 100 characters running around spawning and dying
Best in terms of performance
have a minimum timeout between registers and limit how many things can be registered/unregistered at any given time. so you'll do a register/unregister queue
But a queue means delay
yeah but does it need to be every frame? well, seems your system is using fixedFrame so what is that, every 30 frames?
Would it be efficient to store my entities in a set? In terms of adding and removing is that faster than an array? I guess if it checks if something already is in the set then probably not
Maybe I'm just overthinking it
I'm going to iterate over all 100 characters, a couple per frame probably
I just put fixed frame for learning purposes
yeah so make a queue then, with no timeout, and you'll need to change your system to Frame instead of FixedFrame
do a queue sort of like this, minus the timeout:
Simple array that contains all entities that you need, it removes without saving the order
Okie
Just don't call RemoveOrdered method (pr something similar name)
Is gettin the index to remove going to mess me up
Simple linear search 
Also, you can mark entity as deleted (just a bool on it) and delete all these entities from array in one run on next frame
I'm not sure of your requirements, but I came up with this yesterday for my system:
//! Removes a character from the system
void RemoveCharacter(SCR_ChimeraCharacter character)
{
int index = m_characters.Find(character);
if (index == -1)
return;
m_characters.Remove(index);
if (m_currentIndex > 0 && index < m_currentIndex && m_characters.Count() > index)
ProcessCharacter(m_characters[index]); // Process swapback character
}
My system has an array of characters, and processes at most 50 per frame.
This means when you just remove a processed character during an unfinished processing round, a still unprocessed character from the end of the array would be swapped back to the removal index, and not be processed. This removal method processes any characters that were swapped across the current index.
The technique avoids ordered removals (which is important for performance) without the need for a removal queue.
Registration is not a problem, you just add it to the end of the array.
Thank u all for the ideas boys
Since I'm attempting to determine if my mod is causing this, is there any way to correlate Replication 0x800XXXX errors with something in-game? Nothing else in my logs correlate to that Id, so I'm unsure what to do with that (seemingly unhelpful) error message.
RPL (E): RplSchedulerError: Generated task provided id of removed or never registered item! id=0x8000ECDC
RPL (E): RplSchedulerError: Generated task provided id of removed or never registered item! id=0x8000ECDC
RPL (E): RplSchedulerError: Generated task provided id of removed or never registered item! id=0x8000ECDC
There are more options:
- You can make magic with weak and strong refs
- You can store index in component on entity, and instead of calling array's Remove implement your-own that first swap indices between last and deleting entity, swap them in array, and delete last element from array)

Honestly kinda feeling like if systems are designed for modders to iterate over many entities, they should provide this functionality out of the box to be efficient
hello, anyone who worked with REST API calls, can help me with this simple POST:
override void EOnFrame(IEntity owner, float timeSlice)
{
m_TimeAccumulated += timeSlice;
if (m_TimeAccumulated < m_Interval)
return;
m_TimeAccumulated = 0;
vector pos = owner.GetOrigin();
PlayerController pc = GetGame().GetPlayerController();
if (!pc)
return;
int playerId = pc.GetPlayerId();
PrintFormat("[JRDX] playerId: %1", playerId);
string playerName = GetGame().GetPlayerManager().GetPlayerName(playerId);
JRDX_PlayerPosition position = new JRDX_PlayerPosition();
position.x = pos[0];
position.y = pos[1];
position.z = pos[2];
JRDX_PlayerPayload payload = new JRDX_PlayerPayload();
payload.playerId = playerName;
payload.position = position;
payload.Pack();
string body = payload.AsString();
PrintFormat("[JRDX] Sending payload: %1", body);
string contextURL = "http://localhost:8000/";
string contextType = "application/json";
RestContext context = GetGame().GetRestApi().GetContext(contextURL);
context.POST(m_Callback, "player", body);
}
missing data, apicode, apicode, uuid, message? wth that means?
Yes, this ended up looking quite nice on a 40 person server. You can see the transforms snap into place and the parachutes look quite nice now, and the phys movements now avoid the network jitter.
I've defined this component on an RPG and added the event handler component. Yet when i fire the RPG nothing happens
[ComponentEditorProps(category: "scripts/Game", description: "???????")]
class RED_MissileGuidanceComponentClass : ScriptComponentClass
{
}
class RED_MissileGuidanceComponent : ScriptComponent
{
protected override void OnPostInit(IEntity owner)
{
if (!GetGame().InPlayMode())
return;
if (!Replication.IsRunning() && !Replication.IsServer())
return;
EventHandlerManagerComponent eventHandlerManager = EventHandlerManagerComponent.Cast(owner.FindComponent(EventHandlerManagerComponent));
Print("BLUE.B"+eventHandlerManager);
eventHandlerManager.RegisterScriptHandler("OnProjectileShot", owner, OnProjectileShot);
}
void OnProjectileShot(int playerID, BaseWeaponComponent weapon, IEntity entity)
{
Print(playerID);
Print(entity);
}
}
Does the phys movement component interpolate? Like it looks fine on higher ping?
In my experience it was only updating transform when I looked at it as client but it was a while ago, so it looked like it was teleporting
How do you post with syntax coloring like that
Ask your server)
Just add \
replace cpp with whatever lang it is, like: py, c, c#
\ ?
```sqf
Code there
```
ahh, kk xD
Which is:
\`\`\`sqf
Code there
\`\`\`
ye ye, got it, escape the symbol
Server returns 422 code - which means it can't process provided data and message where it says that uid and apicode is missing in data
weird, since the request looks good [JRDX] Sending payload: {"playerId":"JasonREDUX","position":{"x":3116.08935546875,"y":15.96539306640625,"z":2745.7705078125}}
how can i set headers?
anyone in here pretty good at sciprting who could help me with something stupid simple?
why is the call even like that:
context.POST(m_Callback, "player", body);
it means will append "player" to the url? like "http://localhost:8000/" + "player" ? kinda weird
ive been trying for 3 hours to basically copy and paste something with 0 luck and don't understand why it wont work properly
So far so good, at 250+ ms ping. The interpolation appears acceptible.
just ask your question
theres a mod called improved shovels, the problem is it's for NATO only and I would like to get one going for RU. My theory is I can copy the original mod and the attributes of the E-Tool to the MPL and use the original mod as a dependancy.
I watched videos, tried over and over but I can't figure it out.
You can send multiple request to different end points on same URL
But it says that uid and apiCode is missing
So looks like it trying to check your credentials
well, i don't have any uuid or apicode
i wish to know how to set headers and then try again, is the only thing i see different
SetHeaders method
Search by this name in this chat for syntax
Could you DM me a video? I'm just excited to see it
Btw also don't use SCR_JsonApiStruct it is cursed
why?
It will stop working randomly and the parser is broken
kk, so i need to know how to make a json in there
SCR_JsonSaveContext and SCR_JsonLoadContext should work
It's probably not related to your problem just putting it out there
damn, but then have to rewrite the whole headers
i know, but good to know, just doing some test and learning stuff, simple tests
proto void RegisterScriptHandler(string eventName, Managed inst, func callback, bool delayed = true, bool singleUse = false);
What does Managed inst mean
Refcount class
So it's any class by default in Game scripts
When you write class MyClass it's actually class MyClass : Managed
ok
when you this does this refer to the class you are scripting in?
EventHandlerManagerComponent eh = EventHandlerManagerComponent.Cast(owner.FindComponent(EventHandlerManagerComponent));
Print("BLUE.eh"+eventHandlerManager);
eh.RegisterScriptHandler("OnProjectileShot", this, OnProjectileShot);
this is pointer to instance
Instance may have different type, that inherits from your
I have no clue why it not triggering the event
Your instance is live until it fires?
well i am not sure what "this" refers to which insatnce , my expectation is to load in and shoot the RPG
can someone help- me with my issue if they have a second
for this: #enfusion_scripting message - it's pointer to instance of your component
RED_MissileGuidanceComponent<0x000001D1965F17D0> (Owner : @"ENTITY:2305843009213693953" ('GenericEntity','Assets/Weapons/Launchers/RPG7/RPG7_body.xob') at <121.777000 1.000000 127.904999>)
this is the printout before i fire , if its not null its live aye?
Whats the proper way to create an instigator for the damage related stuff that is actually null? I dont want to give credit for the damage to the GM
Right and it should be the world?
will legit pay someone 5 smackaroos
I'm not sure but looks like this event not on weapon, but on shooter entity
All uses of this event by BIS is for player's entity and vehicle compartment ocupant
is not about ppl wont answer, 1st does not look like related to scripting(atleast for me), looks more like workbench work, i did somethign with rhs but long time ago, can't remember
supposedly you can write a script for it to work but that portion isn’t working
what u have so far?
I’ll send it give me two seconds
@random moat if it's true, you need to track who owns your weapon and add handler to shooter
Damn that complicates tings
appreciate your time
Hello, I'm looking for a script that automatically deletes all entities on a server every 5 minutes, as well as vehicles that don't work. Can you help me?
modded class SCR_ShovelImproved
{
override void EOnInit(IEntity owner)
{
super.EOnInit(owner);
// Set RU model instead of NATO
SetObjectMesh("{Game}/Prefabs/Items/Equipment/Accessories/ETool_MPL50/ETool_MPL50_FreeRoamBuilding_Gadget.et");
Print("RU version of Improved Shovel active!");
}
}
Is there an actual tutorial that goes through this script somewhere
all you want is to give the shovel to USSR faction?
Projectile isn't entity? You should be able to add component to it
yea i only want RU to have it since impoved shovels is the same thing but for NATIO only
Add a component to the projectile of the weapon? will i not run into the same thing , need to figure out when its shot?
Or is the entity created when its shot
No, it should be created on shot
then i think this is not the way, you need to rewrite Configs/Factions/USSR.conf
this is what i did to add RHS - MSV to USSR:
SCR_Faction : "{B122E3B10BB3404B}Configs/Factions/OPFOR.conf" {
m_aEntityCatalogs {
SCR_EntityCatalogMultiList "{623E8A5B77CA04E3}" : "{FABE1A78C3709433}Configs/EntityCatalog/RHS_MSV/MSV_EMR_Characters.conf" {
}
SCR_EntityCatalogMultiList "{623E8A5B722AFFAB}" : "{DB327CCD7CD65D3B}Configs/EntityCatalog/RHS_MSV/MSV_Groups.conf" {
}
SCR_EntityCatalogMultiList "{623E8A5B73421B06}" : "{4AB9A3D2B81A7855}Configs/EntityCatalog/RHS_MSV/MSV_InventoryItems.conf" {
}
SCR_EntityCatalogMultiList "{623E8A5B718D69C0}" : "{4817C4345C248B30}Configs/EntityCatalog/RHS_MSV/MSV_Vehicles.conf" {
}
SCR_EntityCatalog "{623E8A5B6F6C6620}" : "{C9C16833C8387421}Configs/EntityCatalog/RHS_MSV/MSV_WeaponTripod.conf" {
}
}
}
just try to replicate with the item you want to add, it would be only 1 element i guess, i can't remember, it's been 8 months not touching Reforger stuff
Would i be able to idenitfy who shot it easily without the eventhandler?
Not sure, but I think there are some info about instigator, or how damage system knows who shot projectile?
so basically just copy item ID?
the problem is i do want it to be the MPL50 not the Etool
no idea what is that xD
Etool is the NATO side shovel, MPL50 is the RU side shovel
how the hell i'm supossed to do that:
SCR_JsonSaveContext playerPos = new SCR_JsonSaveContext();
playerPos.WriteValue("x", pos[0]);
playerPos.WriteValue("y", pos[1]);
playerPos.WriteValue("z", pos[2]);
SCR_JsonSaveContext player = new SCR_JsonSaveContext();
player.WriteValue("playerId", playerName);
player.WriteValue("position", playerPos);
so what? add the item to the faction you want to, btw, i think i did this in the workbench, not by scripting
it is like you edit the loadouts and add what you want them to have
yea exactly, its something you should have to hit rank major for
and then you can get it from arsenal
first try simply add it to the loadout
i think u need to work whit this line and remove the others:
SCR_EntityCatalogMultiList "{623E8A5B73421B06}" : "{4AB9A3D2B81A7855}Configs/EntityCatalog/RHS_MSV/MSV_InventoryItems.conf" {}
ofc, replace with your object(shovel) path
something like:
SCR_EntityCatalogMultiList "{623E8A5B73421B06}" : "{TheModID}Configs/EntityCatalog/TheShovel/TheShovel_InventoryItems.conf" {}
but i would learn to do that in the workbench editor, not by scripting, will be easier
is the workbench editor a different program?
no, just the workbench
this is the first time ive ever messed with enfusion
but there are various tools, so wha i mean is world editor maybe
I guess on projectile wouldn't work because you have the ammo outside of the RPG for example
ah gotcha
so, you go world editor, open your mission, find the faction manager, find the faction USSR, edit loadout, add the items for the shovel
and maybe use the #reforger_workbench channel
yea i dropped a message in there and my buddy whop codes is now on so he's translating what youre saying also lol
thank you a lot im gonna try this and ill report back
what's your lang btw?
English, idk code really
Okay so i found how to change the tool and all, how do i add it as a downloadable mod now?
well everytime i try to do it my enfusion crashes
Hey, hopefully someone can help me on this, I replaced de animation of combat evade command (roll), I figured out that root motion by animation is used here. In the STM the tag IsMoveRolling is set, if I delete it there is no more root motion. I suppose this work like the example of SCR_CharacterCommandSwim, If I undersand correctly the CMD and the Tag have to be true at the same time to get the root motion.
The thing is I can't find where the CMD_Combat_Evade and his tag IsMoveRolling are used in script. This is definitely possible to use the movement speed of the animation by root motion but I don't know what script I should use to set the root motion or any example related to the roll animation. I already have my script to call the CMD when the action is pressed , I have a script made from the example of swim and the command is called in SCR_CharacterCommandHandler, the swim seems to have root motion by animation as well but I can't get those script right apparently I'm missing something, they compile but my animation play without root motion. I join the scripts in the case someone want to look at them and find what's wrong.
https://streamable.com/g00qho
If I can get the root motion in my animations I'll do an animation logic that can work with it, that would be awesome for the animations visual quality and way easier in blender.
maybe try #enfusion_animation ?
yeah delete this cross post or that one. pick one place
I tried both but I think there is more to do in script than animation editor
That's not allowed to ask in few channel if the question is related to all of those channel ?
Don't take it wrong but I'll delete it if a moderator tell me to do it
Is it custom scripted command?
If so, then there is some RootMotion related method in the inheritance chain. I forgot the exact name. Search for it
Then override it in your scripted command to return true.
Unfortunately i can not check the exact name right now as i am out of country
I did one try by taking example of SCR_CharacterCommandLoiter but I couldn't make it work so I started looking for an another solution. You talk about the method in the screenshot ? I'll keep going in that way if you recommend me to
After trying again with CharacterCommandScripted I have a result, now the animation show at least a little bit of movement drived by animation root motion https://streamable.com/bbqxl7 But still have to find what is bugging it
now it fully work, it was bugging because I forgot to set the tag in the STM x)
A beautifull root motion, except that it seems the command is "eating" Fire action, ADS and everything. I wonder if that's just how behave this method or if that's fixable
Not sure if a scripting issue but asking for help. I show a hint on the clients by sending it to the client.
protected void RpcDo_ShowHint(string title, string msg, int dur)```
Works nicely until it does not. With using dedicated server the client may start to showing them. The client log shows that this showing is triggered. If I do logout/login, it may be that the hint is not showing. Another logout/login may result it to show again.
The server log shows: ```(W): Notification data in 'SCR_NotificationsLogDisplay' has duplicate notification info key: 'PLAYER_ON_BLOCKLIST_JOINED'. There should only be one of each key!```. Unsure if this is related.
Any hints on where to look for the issue?
Should I do something when player logs out?
Hi guys, i'm looking at making some "mods" for server side only, and third party softwares.
especially, i'm looking at creating an online detailed dashboard. But i can't figure out if the servers have a public/private API (not talking abount the gaming internal API, but an API for external tools)
I don’t know if this is where I’d ask but is there a way to remove sandbags and razor wire off of the servers ?
How about a REST API?
From what? An existing map or from GM?
Yes, on the scenario side
i would like to know how mines ingame get triggered.
Attaching MT colliders (car wheel collision for example)to something onto character does not trigger mine when "smaking" mine with the thing.
Are these particular checks excluded with playable characters and only computed when vehicle goes over mines?
That's the idea, but i don't know if regorger's servers have a rest api
(haven't mention its to make an app for managing a reforger server with scoreboards)
You should try opening the script editor and searching for "rest", you may get an answer
So its internal only ? no third party app ?
You can use it to send data from the server
I'll take a look thanks
Use ExpressJS or something similar as your backend and interact with it.
Dashboard <--> Your Backend <--> Arma
Thanks that's helpfull
JS is a plague, I'd rather use FastAPI 😅
Serverside scripts are possible with dynamic script modules
They cant do everything modside scripts can but they can do stuff
Am I the only one that the intellisense is sometimes works sometimes dosnt even show anything?..
So we use wcs Everon right now and we ant to remove sand bags and what not how would I go about that
Yes from a wcs Everon map I would like to remove sand bags
Yes, I'll snap a video of a few styles of 'chutes I'm using.
Question on player entity bodies disappearing. We have garbage collection disabled.
Sometimes players get frustrated after dying and immediately disconnect (alt+f4). The body then disappears immediately. Logs show a player disconnect, then an immediate engine player delete.
I assume this is caused by vanilla BaseGameMode::OnPlayerDisconnected(). It does a
RplComponent.DeleteRplEntity(controlledEntity, false);
Any issues in changing that false to a true? Or what else should I be worried about?
I would suggest commenting that out and Killing the player character instead if not dead already
Lol, soul left the body kinda vibe
class SCR_GateOpenUser : ScriptedUserAction
{
[Attribute( defvalue: "Right Gate", uiwidget: UIWidgets.EditBox, desc: "Signal index of right gate door")]
private string m_sSignalName;
private int m_iSignalIndex;
const float MAX_SIGNAL_VALUE = 90.00;
private SignalsManagerComponent m_SignalsManager;
//------------------------------------------------------------------------------------------------
override bool CanBeShownScript(IEntity user)
{
return CanBePerformedScript(user);
}
//------------------------------------------------------------------------------------------------
override bool CanBePerformedScript(IEntity user)
{
if(!m_SignalsManager) // Do nothing if there is no signal manager
{
Print("SignalManger was not found", LogLevel.ERROR);
return false;
}
if (m_iSignalIndex < 0) // Check if signal index is valid
{
m_iSignalIndex = m_SignalsManager.FindSignal(m_sSignalName);
Print(m_iSignalIndex, LogLevel.NORMAL);
return false;
}
return true;
}
//---------------------------------------------------------
override void PerformAction(IEntity pOwnerEntity, IEntity pUserEntity)
{
float targetValue = Math.AbsFloat((m_SignalsManager.GetSignalValue(m_iSignalIndex)) - MAX_SIGNAL_VALUE);
m_SignalsManager.SetSignalValue(m_iSignalIndex, targetValue);
Print(m_iSignalIndex, LogLevel.NORMAL);
Print(targetValue, LogLevel.NORMAL);
}
//------------------------------------------------------------------------------------------------
override bool GetActionNameScript(out string outName)
{
if((m_SignalsManager.GetSignalValue(m_iSignalIndex)) == 0)
{
outName = "Open Gate Door";
} else
{
outName = "Close Gate Door";
}
return true;
}
//------------------------------------------------------------------------------------------------
override void Init(IEntity pOwnerEntity, GenericComponent pManagerComponent)
{
m_SignalsManager = SignalsManagerComponent.Cast(pOwnerEntity.FindComponent(SignalsManagerComponent));
}
}
in print im getting the right signal index, but when performing action signal just dont listen, is it a bug in workbunch or Im missing something?
Im able to find the signal index and Im able to change the value no errors, bone set to the correct bone in the procAnimation
I guess procedural animations are totally broken even trying just using the sample provided in github dosnt work lol
I'm modding a function in SCR_BaseGameMode. Vanilla function does a super.OnPlayerDisconnected() which I still want to call from my modded OnPlayerDisconnected().
What is the best way to call the original's super?
I can't seem to inject a new modded function into the vanilla SCR_BaseGameMode that gets me a reference to its super. But I'm probably missing something here...
It is based on the colliders and the weight of the object stepping on the mine. I did some experimenting by making different mine objects that have colliders that interact with the character collider, and I was able to get them to go off when people step on then
Just call super.OnPlayerDisconnected() inside your modded class, it always calls whatever is the parent class
Alternatively, if you want to be mean and hurtful, you can call vanilla.OnPlayerDisconnected() inside your method, but this might break compatibility with other mods that change OnPlayerDisconnected if they happen to compile before your mod
what
can you elaborate pls
You have to do it with scripts. Just override OnGameStart and search and delete them.
So how dies that work with the wcs Everon mod ? Just load it up in the arma tools and look for that and remove them then reimport and what re publish it ?
Are do I make a whole knew file
Are say im making a new Eden senerio I could just do it in that one correct
You can't remove stuff from other maps in the world editor. You have to make a script that does the removal on game start.
Basically, you make a script that overrides ArmaReforgerScripted::OnGameStart.
Okay so id make a script with that and then just add that to my mod list pretty much
Exactly
Is that in the world editor are in the script menu
I’ve never messed with the scripts
Script editor only
Can I send you somthing and you show me where I could add in there
Are mabye can tell me we have a file with stuff in it like ui so like load screen has a file for entity catalog and for somthing else
So can I stick that script any where in there
Have a look at the second bootcamp. Mario does an example of overriding ArmaReforgerScripted there
Okay awsome
I was just trying to avoid making another mod if I can just add that to are ore existing mod
wanted to ask is it possible load in server config config.json under missionHeader script code?
Hm, the super from my modded class function points to the vanilla class, not the parent of the vanilla class. I want to call the vanilla class's super.
Ah my bad. So even vanilla. would call the parent of your modded class.
can you please explain how?, i want to make anti personnel mines
Is there a way to inject a function into the vanilla class (not modded) to get its super reference, then call that from my modded function?
any way to change character movement speed easier? or do I have to modify every animation?
it doesn't look like the attribute variables are exposed. so we can't modify them on the fly...
What is your ultimate goal?
Researching if I can do some things if I made an RPG framework. Think SPECIAL from fallout or oblivion with weapon skills. Just kind of in the planning phase to see what's possible. Changing movement speed based on speed/agility/athletics, carry weight and melee damage with strength, a sort of nearby player ping for perception. You get the idea. But I would have to modify these things in runtime.
If you want a general increase to animation speed you can modify the animSpeedCoef. This works mid-mission "on the fly".
However this affects (almost) all animations so it's a neat addition for say a skill tree, but only if you keep the modifications to a minimum value.
For documentation see: https://community.bistudio.com/wiki/setAnimSpeedCoef
Do you know what channel you are in?
My bad lol
Lol
hello, I am trying to get a string I am putting into an Action component could someone please help?
I would like to try and use this Action Title
is anyone thats a seasoned programmer for Arma Reforger available?
that UIInfo tab contains where you would put the player shown action name
what you highlighted is just for the editor
@candid garnet so this one can be reached?
i'm not sure what you mean by reached
if you are looking to change the action name during runtime:
// In your own class, inherit from ScriptedUserAction
void ChangeActionName(string name)
{
UIInfo uiInfo = GetUIInfo();
uiInfo.SetName(name);
}
@candid garnet theres that component and I have a text in it and I want that text to show as prompt
but to do so, i have to get the text from the component in my script
in Unity you are able to grab a field from the component on an asset with like Component<component type>variable = variable().getvariableName()
i just want to get a text...
override bool GetActionNameScript(out string outName)
{
outName = "Thanks Zelik";
return true;
};
That's a weirdly convoluted way to do it...
Also last time I checked, setting the name in a ui info isn't at the instance level, meaning all of those actions would have their name changed.
So, the mines use the SCR_PressureTriggerComponent to go off. That relies on EOnContact, which means you need to have two colliders contact one another, and the object that steps or drives on the mine also needs to meet the weight requirement to set the mine off. That weight is setup in the SCR_PressureTriggerComponent, and the colliders need to be setup on whatever asset you add to the game for your mine / pressure based explosive.
The two ways to do that are either make an asset that has the proper interaction layers on the object, or adjust the RigidBody to have all the proper interaction layers you need for that object. Once that is done, just setup the weight as needed, and there you go, you should have a working mine for whatever you want.
@eager epoch @trim sail
I ended up adding a new string field to the component and output it instead of trying to get a field from a component that i couldnt reach
simple solution to hard problem apparently
There are no components that you can't reach
If an entity has a component you can get it from script.
Oh, you couldn't get the attribute from the component for some reason..
That can be "reached" if that's what you're talking about.
yeah you have to inherit from ScriptedUserAction in your own class
Not sure how to explain it to a new person
Not sure what that has to do with my response. lol
1.) making your own action inherit from ScriptedUserAction, it won't change all of the actions' text
2.) was referring to Kaiser
It will change the text for everyone of those actions that exist.
meaning, they all can't have different "action names"
I see your question before you deleted. The point I'm trying to make is, you shouldn't be changing the UIInfo name in order to change the "action name". The correct way to do it is like this #enfusion_scripting message
Also, it he was wanting the UIInfo from the context and not the action itself.
Yeah the question answered itself when I went to test it while waiting for answer
Has anyone else had an issue where SCR_HintManagerComponent.ShowHint stops showing the hint on a client after one or more logout/login cycles? This happens on dedicated server. The trigger to show it on the client (replication) works properly, but ShowHint just does not show.
Anyone have working examples of a rest callback they could share? Testing some stuff out and everything seems to just be running asynchronous. Use case is to use an external api response in a function
Is there an option to check interacting player UID? so I can check it against json file I have of players UIDs
If you have the player id you can always get the UID.
is there a special method for that?
If you're using an action, they usually give you the users entity that you can get it from.
Hmmm I dont see any method related to the UID, I mean the bohemia ID not just player UID in the server
string playerUID = GetGame().GetBackendApi().GetPlayerIdentityId(id);```
Id inception
Thank you!
A full example code is on the inline docs of the classes in script editor
Yes, thanks I did review that and used that as a reference point. It was pretty helpful. Can they work a little inconsistently when running in the workbench?
I've just had zero luck with getting the dedicated server plugin w/ peer to recognize my mod folder which makes it hard to get an accurate test
same...
The paramters and addons seem to want to do their own thing, no matter what I put there. So the peer just fails saying it can't find that addon each time.
Meanwhile, I can run localhost + peertool just fine.
Is there any reason why this keybind isn't working
GetGame().GetInputManager().AddActionListener("ArmDrone", EActionTrigger.VALUE, ArmDrone);
void ArmDrone(float value, EActionTrigger reason)
{
if (value == 1)
{
m_bIsArmed = !m_bIsArmed;
Print(m_bIsArmed);
}
}
Every other keybind I have works but this one, I'm so confused
What about if value > 0.98
Your action is in context right?
Yeah
Maybe just print the value first
Also check priority maybe some other context is overriding it
ArmDrone doesn't work, no matter the keybind
Oh i thought itd be something stealing F key
Could it be because i overrided chimeraInput like way back in 1.1 when I made the mod
Could it just have broke over the updates?
Cause this makes no sense as to why it's not firing
If I put the same keybind in another input class it works
Restarting doesn't fix it either
Wtf
Would be nice if it worked in multiplayer tho, clients never even see the weapon being fired
Hey guys what's the best way to find the reason for my server crashing? the dump file generated has a file size of 0 so there's nothing to look at there. Crash log shows this.
26.04 2025 16:06:27
Unhandled exception
Program: C:\TCAFiles\Users\erice\6316\ArmaReforgerServer.exe
Reason: Access violation. Illegal write by 0x7ffcc2c41af0 at 0x20
SymGetSymFromAddr:487, addr:0x7ffcc2c41af0
SymGetSymFromAddr:487, addr:0x7ff6598557d7
SymGetSymFromAddr:487, addr:0x7ff6598507f9
SymGetSymFromAddr:487, addr:0x7ff65963e672
SymGetSymFromAddr:487, addr:0x7ff65963e9ee
SymGetSymFromAddr:487, addr:0x7ff6588e08e2
SymGetSymFromAddr:487, addr:0x7ff6588f1ae7
SymGetSymFromAddr:487, addr:0x7ff6595f6284
SymGetSymFromAddr:487, addr:0x7ff6595f321b
SymGetSymFromAddr:487, addr:0x7ff65887180e
SymGetSymFromAddr:487, addr:0x7ff6595f2de8
SymGetSymFromAddr:487, addr:0x7ff658e5e3bc
SymGetSymFromAddr:487, addr:0x7ff659353468
SymGetSymFromAddr:487, addr:0x7ff65887095e
SymGetSymFromAddr:487, addr:0x7ff6595029ad
SymGetSymFromAddr:487, addr:0x7ff6594fcfc8
SymGetSymFromAddr:487, addr:0x7ff6594fcdf9
SymGetSymFromAddr:487, addr:0x7ff65882b52e
SymGetSymFromAddr:487, addr:0x7ff65882b1e2
SymGetSymFromAddr:487, addr:0x7ff6598f2508
[BaseThreadInitThunk]: ??? addr:0x7ffcca047ac4
SymGetSymFromAddr:487, addr:0x7ffccc4ea8c1
SymGetSymFromAddr:487, addr:0x7ffccc4ea8c1
Get the crash report guid from the console log, then create a feedback ticket, and then pray someone feels like telling you what the issue was. Nothing users can do unfortunately.
That is also in no way at all related to scripting...
my bad didn't see the troubleshooting channel until after I posted. Thank you
How do i get A.I. stuff from server to client?
I need some data from SCR_AIInfoComponent on the client but whenever i try Rpl Broadcast the RplId of the SCR_AIInfoComponent from server to client the id is -1.
What am i doing wrong?
post what you got so far
I'm using SCR_EditableCharacterComponent
//------------------------------------------------------------------------------------------------
protected void RplAIInfoComponentDelayed(SCR_AIInfoComponent infoComponent)
{
RplId infoComponentId = Replication.FindId(infoComponent);
Rpc(RplAIInfoComponent, infoComponentId);
Print("SCR_EditableCharacterComponent > RplAIInfoComponentDelayed" + " > " + infoComponent + " > " + infoComponentId);
}
//------------------------------------------------------------------------------------------------
[RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
protected void RplAIInfoComponent(RplId infoComponentId)
{
bool isServer = Replication.IsServer();
bool isClient = Replication.IsClient();
Managed infoComponentRpl = Replication.FindItem(infoComponentId);
SCR_AIInfoComponent infoComponent = SCR_AIInfoComponent.Cast(infoComponentRpl);
if (infoComponent)
m_InfoComponent = infoComponent;
if (isServer)
Print("SCR_EditableCharacterComponent > RplAIInfoComponent > IsServer > RplAIInfoComponent" + " > " + infoComponent);
else
Print("SCR_EditableCharacterComponent > RplAIInfoComponent > IsClient > RplAIInfoComponent" + " > " + infoComponent);
}
I tryed the same thing with RplSave and RplLoad but still SCR_AIInfoComponent RplId is -1.
Certain things you can do in script land can trigger these access violation errors, already ran into it a few times myself
SCR_AIInfoComponent has rpl stuff (rplrpc, rplprop and etc), on entity with RplComponent and inserted into replication system? Otherwise it will not have RplId
If this component doesn't replicated itself, then broadcasting its rplid will not replicate entire its state. So just create your own component/system, take required info from this component and broadcast to clients
Its inherited from GenericComponent which has Rpc and RplLoad/RplSave.
Not enough?
Alright i will do some more testing with this.
Thank you. 👍
No, it need to have RplProps, RplRpcs or Rpl callbacks
Idk what is Rpl callbacks, but this in Replication overview
Okay. 🥲
That's the realest comment I've seen this week, "idk what is Rpl callbacks"
Kinda deep when you think about it
I don't even know what Rpl callbacks are 🤨
Unless you're talking about the OnRplName or w/e it is 
The only place I've seen this is on Replication overview page in API Docs. It's mentioned 5 times as one of the replication conditions and it's never explained what it is.
Open Replication overview in Docs
It's fully describes what is Node, Item, Prop, Call... but never what is Callback
more black magic that won't have a use case for most from what I can see.
Maybe the callback is from pre 1.3 letting me know where my Registeringslotinfo keeps going
Maybe onRplName is the callback, called when rplProp values changes
That's what I thought originally, I mean that is technically a callback
or what is traditionally considered one
Then why is it separate from rpl property when it is part of it?
Reforger
For all we know it doesn't even exist anymore and just hasn't been scrubbed from the docs
definitely wouldn't be the first nor last time that sort of thing happens
I swear I'll begin to implement my own classes for absolutely anything instead of using any of the vanilla code. this codebase can't be trusted for the simplest things.
RandomGenerator.RandInt(180000, 480000) = 118677
I bet in next minor patch it will start returning negative numbers, because why not
1000% stay away from the built in systems as much as you can. It's a nightmare that will never stops. I did some super extreme stuff for random and even then it's still not fully random. 😩
"Don't use math.random functions they say... use RandomGenerator instead they say..."
Also them: uses Math.random functions in array.GetRandomElement 
yeah I had a feeling for a long time that there's something wrong with the sequences as well. GetRandomElement returned the same index for me several times in a row.
great, so I'm off to implementing my own random library now, instead of working on the mod itself 
Some things were built at times where other tools were not available yet. Not every known flaw is fixed immediately
Its paaaaaiiiiinnnnn
It is what I thought it would be. The maximum random number range is 0x7fff aka 32767 anything beyond that simply does not work due to the random algorithm used. There is a diag assert for it. I will request an update to the docs
@salami._. This function has its own will 
If you want full int32 range random you might need to generate enough of these value instances and bitshift them together. you could make yourself a utility method for full range randomness within ranges. I have sent off a ticket for it and we will see what the
team decides to do about it
thx. even if fixing this is a no-go because of a thousand things that may break further down the line, having this documented in that class file is ok
can anyone help a beginner?
when creating a weapon mod, the instructions say you have to create a script for a magazine well. but if you follow the instructions, the script that is in the instructions does not work. is there still code missing or am i just bad? :3
I’m still having a hard time figuring out where to go to make a mod to remove sandbags from are server if anyone could help that would be awsome
Hi guys. Any idea why 16 line has null pointer?
modded class SCR_GameModeCampaign : SCR_BaseGameMode
{
CQT_ScoreGameModeComponent m_ScoreComponent;
override void EOnInit(IEntity owner)
{
super.EOnInit(owner);
SCR_BaseGameMode gameMode = SCR_BaseGameMode.Cast(GetGame().GetGameMode());
m_ScoreComponent = CQT_ScoreGameModeComponent.Cast(gameMode.FindComponent(CQT_ScoreGameModeComponent));
}
override void OnStarted()
{
super.OnStarted();
m_ScoreComponent.Init(); // Null ???
}
override void OnPlayerKilledEx(notnull SCR_InstigatorContextData instigatorContextData)
{
super.OnPlayerKilledEx(instigatorContextData);
if (IsProxy())
return;
m_ScoreComponent.UpdateScore(instigatorContextData);
}
}
No component of your type, its simple.
PS Why are you GetGameMode while you are in GameMode instance already?
Also mb somehow INIT entity event is disabled for gamemode idk
found this in other components lol
Place brakepoint in eoninit and watch
it works in workbench but not on server
Updated code to this
modded class SCR_GameModeCampaign : SCR_BaseGameMode
{
protected CQT_ScoreGameModeComponent m_ScoreComponent;
override void EOnInit(IEntity owner)
{
super.EOnInit(owner);
m_ScoreComponent = CQT_ScoreGameModeComponent.Cast(this.FindComponent(CQT_ScoreGameModeComponent));
}
override void OnStarted()
{
super.OnStarted();
if (IsProxy())
return;
m_ScoreComponent.Init(); // null.......
}
override void OnPlayerKilledEx(notnull SCR_InstigatorContextData instigatorContextData)
{
super.OnPlayerKilledEx(instigatorContextData);
if (IsProxy())
return;
m_ScoreComponent.UpdateScore(instigatorContextData);
}
}
As before it works in workbench all good but not on Server...
this line has null pointer
m_ScoreComponent.Init();
This also doesn't work on server....
modded class SCR_GameModeCampaign : SCR_BaseGameMode
{
protected CQT_ScoreGameModeComponent m_ScoreComponent;
override void EOnInit(IEntity owner)
{
super.EOnInit(owner);
if (IsProxy())
return;
m_ScoreComponent = CQT_ScoreGameModeComponent.Cast(this.FindComponent(CQT_ScoreGameModeComponent));
m_ScoreComponent.Init();
}
override void OnPlayerKilledEx(notnull SCR_InstigatorContextData instigatorContextData)
{
super.OnPlayerKilledEx(instigatorContextData);
if (IsProxy())
return;
m_ScoreComponent.UpdateScore(instigatorContextData);
}
}
I have checked that all the additional components are set in base EOnInit method it means that these should be set at that point when I calling
CQT_ScoreGameModeComponent.Cast(this.FindComponent(CQT_ScoreGameModeComponent));
but for some reason component not found on server...
Any idea why is that?
is there any way to set time scale for slow motion?
I don't think it's implemented yet last I looked.
I have a map on which there is 4700 entities "GraniteStone".. it is an object which I need to delete manually each time.. I wanted to write a script that will remove them when the game starts.. have this but I get errors:
modded class SCR_BaseGameMode
{
override void OnGameStart()
{
super.OnGameStart();
Print("Starting Granite Stone Removal...");
RemoveGraniteStones();
}
void RemoveGraniteStones()
{
World world = GetGame().GetWorld();
if (!world)
{
Print("World not found!");
return;
}
array<IEntity> foundEntities = {};
world.QueryEntitiesByType(BaseWorldEntity, foundEntities);
foreach (IEntity entity : foundEntities)
{
if (!entity) continue;
ResourceName prefabName = entity.GetPrefab().GetPrefabName();
if (prefabName.Contains("Granite") || prefabName.Contains("Stone"))
{
Print("Deleting Granite Entity: " + prefabName);
world.DeleteEntity(entity);
}
}
}
}
I am still very fresh with it.. is there a way to even achieve it?
Post the errors
Create component that deletes its owner on init and add it to all prefabs you want to delete
Also afaik ids of world entities don't change between restarts, so in theory you can run heavy search script that collects all ids of entities you want to delete and then delete them on each start
Rpl callbacks are RplLoad, RplSave and others, should be in the doc
List is :
RplSave/RplLoad //< Used when streaming a node to a client
RplGive/RplGiven //< Used when giving ownership to a client
RplTake/RplTaken //< Used when taking ownership from a client
Do yoy have any examples?
It does not, if you don't have any update, but between updates it breaks, so relying on entity id is wrong for something like persistency
@sleek dove can I DM you in regards to this query?
The solution of Vlad is probably the easiest for you
Since unfortunately flags on entity is overridden you can't really just put Disable flag on the prefab enabled
Avoid DMing devs. It's not allowed.
If you have questions, just explain it here and we will help with it. or someone else in the communtiy will.
No worries, hence I asked
so going back to the screenshot, I can just overwrite granitestone and set to disabled
No problem. As NiiRoZz said. Vlad's is really the easiest for you. And it will do exactly as you wanted.
Thank you
I will try it, as deleting 4700 rocks in GM on the map start.. it is not only annoying but laggs GM completely
Disabled should work, since none of the placed entity should have flags overriden, you can try it, otherwise using the way of creating a component which delete the owner during EOnInit is probably the second easiest option
U could also use one of the world editor tools to mass update or replace
Hello, i’m trying to test with server localhost + peertool but i’m getting a duplicated id error, what am i doing wrong?
Had to change the exec to the one with Diag suffix
So, for a component/entity to be a rpl item, you need to override one of these methods, not just having them in base definition?
They are works with read-only base world?
Is it not possible to have a custom collision trigger component? EOnContact and EOnInit in it never fires
I dont understand why those are exposed in this case if they don't get called
My use case is I need to create an entity in the place where the projectile hits
And call some methods of that entity
And I want to retain the use of a projectile entity
Am I cooked?
Good point, though if you find the prefab in the resource manager, I'm pretty sure you can create configs for that prefab without overriding it (I'm yet to use it, I've just been seeing what they can all do lately)
Can you not change the effect that spawns and set it to the entity u need spawned?
I can, but how can I feed data to it when it spawns from the projectile?
I thought inherit collision trigger component and use EOnContact but it never fires
I've had the same issue with this, I wasn't able to get any of the stuff I was working on with these working
So if you do find a solution, please let me know, because I'm not sure if it's related to the projectile entity, or another aspect.
The things that appear to be most logical when developing are roadblocked lmao
Modding workflow in reforger encourages jank workarounds
Yeah. I remember I was able to get EOnInit working, but I could never get it to do anything with the EOnContact, at least using projectiles
Because what I was trying to do was merge the CollisionTriggerComponent and TimerTriggerComponent, but I couldn't get any of them to work, even just trying to modify them as one at a time
That's just arma in general, tons of jank workarounds for things that eventually get a solution years later and then people look back at your stuff and question if you have brain damage not understanding the context of the time 
EOnContact is physics based, projectile are not physics based, they have their own simulation. This is why you get nothing, you need to use the projectile effects to be able to detect hit with projectiles
Hm, so how should I go about accomplishing what I need? I need to pass information to an entity spawned by the collision trigger component
This is a UGL projectile btw, technically
For regular characters (not AI) is there a method that is triggered when a shot is fired nearby? Similar to the firedNear event in arma 3?
I am trying to make a folding bayonet script. When the bayonet folds out, I want to attach it to the slot on the weapon and when it folds in I want to detach it. On detach, I move the bayonet to a dummy entity that I have attached to the weapon (for storage). The script triggers on an inspection action, like this:
class BC_ToggleBayonetUserAction : SCR_InspectionUserAction
{
override protected void PerformActionInternal(SCR_InventoryStorageManagerComponent manager, IEntity pOwnerEntity, IEntity pUserEntity)
{
. . . // Calls animation command and fetches components/entities
if (isBayonetFoldingIn) // Store on the dummy attachment entity when folded
bayonetHelperCompAttachment.AddChildToEntity(bayonetHelperEntity, bayonetEntity);
dummyEntity.AddChild(bayonetEntity, EAddChildFlags.AUTO_TRANSFORM);
else // Store on the weapon when active
pOwnerEntity.AddChild(bayonetEntity, EAddChildFlags.AUTO_TRANSFORM);
It works perfectly when executed on the server side in workbench. But in peertool, the client sees the weapon swinging, but the stabbing is what the server sees (because the AddChild() didn't happen from the server's POV).
I have tried it a plethora of ways by using SetAttachment(), TryMoveItemToStorage , and several others and it always comes to the same result. I'm assuming the client doesn't have "authority" to call AddChild() (or SetAttachment(), etc.), but I honestly don't know what I am supposed to do.
I'm completely stumped — I have no idea how to get input working for my mod. I just want players to walk up to a ledge (the ledge detector already works), and when they do, a UI tooltip should show up in the bottom right that says something like “Press _ to perform action.” It seems like a basic feature, but I'm extremely lost. I’ve figured out it needs to be handled through ChimeraInput, but I have no clue how to set that up properly. Any help or guidance would be massively appreciated.
Keybinds are defined per context. there are different contexts active at different times (helicoptercontext, menucontext, etc.). I'm not sure which one you should use, but if you open the debug menu you can view which contexts are active and chose one which looks right. To do that you'll need to mod chimera input config and add a new action, and then add your action to the list of actions within the context inside the config. The alternative is to make your own context and then have a script on the player which triggers activating the context.
OnFrame:
if (something)
{
GetGame().GetInputManager().ActivateContext("YourContext");
}
Why are these in different order?
vector anglesXYZ = owner.GetAngles(); //X, Y, Z
vector anglesYXZ = Math3D.MatrixToAngles(mat); //Y, X, Z
Hmm I see, angles and YawPitchRoll is different.
I guess MatrixToAngles should be MatrixToYawPitchRoll then 🤔
owner.GetAngles(); //X, Y, Z
owner.SetAngles(); //X, Y, Z
owner.GetLocalYawPitchRoll(); //Y, X, Z
owner.SetYawPitchRoll(); //Y, X, Z
Math3D.MatrixToAngles(mat); //Y, X, Z
Does anyone know if its possible to get all Ranges from a Sight? GetCurrentSightsRange() return the current, but i need a array which all available ranges from the Scope.
Use PeerTool
code not work in Client
GetGame().GetMenuManager().CloseAllMenus();
Close menu in server only
doesnt it return an array with all the sights? maybe im misremembering
Only vector of the current selected

I replied to something before I read fully what you were asking
Do you think I should forget about it being a projectile and just make a generic entity that does something on collision? :/
Just make an effect after the entity spawned, and gather it somehow, not sure exactly what you want but probably something like this
I need to pass information to the warhead when it spawns
Well its not a warhead its "just an entity"
That information comes from who fired it
I did that once just made a map with all the projectiles 🤷
HCA_m_mPrjToLaunchTime.Insert(f_IEnt_Prj, t_fTimeCurrent);
HCA_m_mPrjToWeapon.Insert(f_IEnt_Prj, f_IEnt_Wpn);
omg
So I need a different approach if I dont want to overcomplicate things
There is any alternative for ForceWeatherTo from TimeAndWeatherManagerEntity? No matter how i try use it to change smooth the weather it always skip the transition time and make change instant.
Did you try to play around with BaseWeatherStateTransitionManager? You should be able to queue state transitions there.
Sadly not. After looking at code i didnt see what can i do difrenent compare to function so i didnt tried.
Use BaseWeatherStateTransitionManager::CreateStateTransition for creating the transition and then insert it as the next transition with BaseWeatherStateTransitionManager::InsertStateTransition.
Okay so I need to make ultra jank like a warhead that plays an impact sound and spawns a particle effect and then deletes itself after a few seconds because the trigger component included on projectiles cannot be scripted
Projectiles are generally very limited with regard to modding. No way to make more advanced simulations of their trajectories either.
I'm upset about the projectile entity I inherited having a collision trigger component that is used through arcane wizardry and any scripting changes I make to it are completely ignored by the game
dont give me editable things if editing those things doesnt edit those things
That's true
so now I have to spend an hour imitating what the projectile approach did to add 1 small feature to it
GL & HF
And now EOnContact fires underground when it collides with terrain so my entity spawns underground
I needed a way to pass data to it from outside when it blows up
Anyway whatever
I forgot pressing ctrl+c in behavior editor has a random chance of crashing wb and reverting my most recent changes
Regarding EPF, how do i figure out what is causing this?
Actually might've figured it out
No i have not
bumping this if anyone knows how to resolve 🙏
Look at the id, open the save data for it in the db, see if something looks wrong. Or else set a breakpoint
So is there a reason CallLater() gives a "static arrays are not supported" error, when passing it a BaseWorld?
It's pointless anyway, as there is a global getter for it.
oh i know i just find it really weird, i didn't test but idk if all things inheriting from pointer cause that error of if the world is a special case using the wrong error
Hello, this is the debug of the weapon animation graph, to send a custom variable here I'm forced to do a custom class of WeaponAnimationComponent or that's necessary just to change the behavior of the weapon like in the bootcamp n°10 ?
I tried to use the AnimationControllerComponent like I use CharacterAnimationComponent but it doesn't work. Character graph receive the variable but not the weapon graph. I also tried to used BaseItemAnimationComponent to synch but still doesn't work.
IDK if anyone here is familiar with the concept of reflection, at least that's the name in the C# space.
I've figured out how to dynamically get variable names / values from a type. However... can't figure out how to update/set those values. Does the engine right now support this? Only looks like retrieval of things is supported
for context, trying to build upon the json-schema standard to describe a set of data. Augmented it to include describing how the data would render in the UI. Was hoping as widgets are created I could use OnElementChanged to update the backing model's value. May need to get crafty on an alternative approach.
Example:
"title": "TrainWreck Settings"
"properties": {
"SpawnTimerInSeconds": {
"title": "Spawn Timer in Seconds",
"description": "Interval in which AI spawn",
"default": 2,
"type": "integer",
"ui": {
"type": "slider",
"min": 2,
"max": 500,
"step": 1,
"format": "%1 seconds"
}
}
}
why are you need this?
Want to dynamically generate a UI based on a schema, where I can have a concrete backing type for.
So.... for the example listed I have a
class TrainWreckSettings
{
float SpawnTimerInSeconds;
}
Want to expose this to an admin so that they can configure things at runtime. But make it generic enough so the broader community could perhaps benefit.
IDK what the final code would look like as I'm still researching but it'd be something like
ShowDialog<TrainWreckSettings>()
Maybe a path to the schema in the mod itself. IDK yet. But having this generate and hookup the UI for me would be huge in my opinion
polymorphism is enough for this - simple function in your class that describes what need to show in UI and what methods to use to retrieve and change values, each class inherits it and provide this info
That's true, that's one way of doing it. If reflection path was possible then it could be a lot less developer setup and bit more dynamic.
End result, being able to tweak a schema and poof I get a working/usable UI
Maybe instead of trying to reinvent the wheel, you could add your settings to the GM scenario properties.
Also your settings would automatically be part of session saves that way.
This is not reinventing the wheel. This would enable devs to provide a specification file following json-schema standards and have it generate the UI and the glue between the UI and backend code.
Verus having a developer do it for EVERY single thing they want.
You gotta send the variable to the weapon graph and the player graph. So it’s like controller.SetIntVariable() and SetIntVariable() for the weapon graph (idk if those are the exact function names)
That's what I did but that was not working, as for the player graph it was working. I thought maybe I'm forced to create a custom class of WeaponAnimationComponent but if i'm not wrong there is a mod conflict issue ?
Just have a look at Configs/Editor/AttributeLists/Edit.conf. It isn't really conceptually much different from what you propose with the JSON, except that you have to define the read and write methods in a derived class of SCR_BaseEditorAttribute.
Did you add your new variable to the weapon graph in the animation workspace?
Yes
Sorry if I’m asking silly questions. Did you register the variable? I always registered my player and weapon variable separately (idk if that’s needed, but I did)
You meant at the top of the script like this ?
modded class SCR_PlayerController
{
protected ChimeraCharacter m_ControlledCharacter;
protected CharacterAnimationComponent m_CharacterAnimComponent;
protected TAnimGraphCommand m_CmdRackBolt;
protected WeaponAnimationComponent m_WeaponAnimComponent;
or the "BindVariableBool" ?
Sorry, I mean Bind, not Register.
But yeah
I tried like this and also another way but I don't have that one anymore
Oh I figured you were doing the variables in a custom weapon animation component. I’m not super familiar with that class, so I’m just going to venture a guess. Not sure when OnControlledEntityChanged is called, but I would guess that if the weapon is not in hand, then your variable would not be bound properly and it might be failing the null check before you set the variable. You can put a break point in the debugger to see if your variable is being set and if the variable index has been bound to an integer
For every test version the debugger showed that anything related to WeaponAnimationComponent or BaseWeaponManagerComponent was not read
But Character part almost always fine
Hello how do I add a script to a prefab? I've tried adding "Script Component" but it just says "Enabled" doesn't let me attach a script.
On the prefab entity there's a Script section with a plus sign to apparently add a script and it shows a dropdown list but when I chose one nothing really happens. what am I doing wrong?
Now I use another method SetWeaponReload to a new integer and it's the perfect way but I wanted to know why I can't send a variable to the weapon, like if i'm forced to create custom class or something
Don't use the Script section. It's bad practice tbh. Can you show the code of the script component you made?
I should have specified, I meant put a break point in the script debugger. That way you can see if it’s fetching the animation component from the weapon and if it’s actually trying to set the variable
I understood correctly, my answer wasn't clear, I meant for every version I did set the break point, that's how I guessed it not readed. I don't speak the coding language so I'm trying my best to not confuse you ^^
You can also try rebinding the variable constantly. Not great to keep in the code, but it might help debugging. I rebind mine every animation event lol
So you already succesfully registered an anim event sended by WeaponAnimationComponent without doing a custom *class of it ?
Actually I do that with events, not sure if it will overwrite variables
I always just use a custom weapon animation component and do everything there
You create a script component which allows you to attach it to things!
Oh ok, and that's fine for mod conflict issue ?
Thank you for your time 🍻
This is more an experiment than anything because I don't really know what I'm doing. Using a few AIs for research I managed to get this down (trying to attach a map marker to a vehicle so that I can see it on the map in real time at all times)
So I guess I have to attach this to the actual truck but even then not even sure if it would work at all. was just trying to experiment
[EntityEditorProps(category: "GameScripted/Whateveryouwant", description: "Purely to test something", color: "0 0 255 255")]
class WhateverYouWantClass : ScriptComponentClass{};
class WhateverYouWant : ScriptComponent
{
override void OnPostInit(IEntity owner)
{
}
}
Then on a prefab you can add this component to an entity!
Thank you 
It's a little weird to me that you have to define it sort of twice? One with the suffix class? I'm not 100% sure what the difference/purpose really is. Just following the conventions I've seen in the codebase
You could also use the Create New Script plugin in the script editor and set Type to Component to generate the file.
It's basically a version of the flyweight design pattern. You can store attributes shared by all instances on the *Class version.
Depending what you’re doing, yes. If you’re doing anim stuff for your custom gun, you just inherit from the animation component class that the gun uses and give it your own name. Then you replace the class in the prefab with your new one. If you’re trying to override vanilla gun animations, there’s a chance for conflicts. Maybe that’s when you would want to use a modded class? Not sure though
Ah ok that depend of the prefab hierachy itself, thank you man I understand better !
can anyone tell me what's wrong with this script?
[EntityEditorProps(category: "GameScripted/Frontline", description: "Adds a dynamic map marker to the vehicle.")]
class TruckMarkerComponentClass : ScriptComponentClass {}
class TruckMarkerComponent : ScriptComponent
{
override void OnPostInit(IEntity owner)
{
super.OnPostInit(owner);
if (!Replication.IsServer())
return;
SCR_MapMarkerManagerComponent markerManager = SCR_MapMarkerManagerComponent.GetInstance();
if (!markerManager)
return;
// Create a dynamic marker that follows this entity
SCR_MapMarkerEntity markerEnt = markerManager.InsertDynamicMarker(SCR_EMapMarkerType.DYNAMIC_EXAMPLE, owner, 0);
if (!markerEnt)
return;
Print("Dynamic marker inserted.");
}
}
It's printing on the log so at least the game recognizes it but it's not doing what I want it to do
Is there a way to escape a "? In other languages it's like "This is a quote:\"I am a quote\""
I want to call ffprobe in a Workbench plugin for checking the length of WAV files and as paths might contain spaces so I need something like this string command = "ffprobe "filepath" > output.txt"
Sorry, already found it: filepath = "\"" + filepath + "\"";
Did you try inserting some break points and running it with the debugger to see if it’s executing? It might be because you are only executing it on the server side, so the client side might be skipping it? The replication stuff hurts my head tho so not sure
Post your scripts in code blocks please.
It's way easier for us to read.
In your script you're returning for the client. Meaning the client will never get the dynamic marker added. You're only adding it for the server which doesn't even render UI(I.E. a map) unless it's a hosted game or workbench.
If everything is set up correctly, your script should show the marker for the listen server(workbench)
If it doesn't then you're not doing something correctly
how am I supposed to call the parent class constructor?
You can't, it will be called automatically
ooof, so how does it pass arguments then?
Automatically
You can have only one constructor and each child constructor must repeat arguments of parent
does order matter? like superclass parameters first, subclass follow?
Yes
You can extend them only on the end
thank you
How can i override a destructor? i also need to remove some materials, like the original class
//! Destructor
void ~SCR_2DPIPSightsComponent()
{
Destroy();
if(m_pMaterial) m_pMaterial = null;
// This should prevent some static leakness.
if (IsPIPEnabled()) SetPIPEnabled(false);
}
I suspect the only possible way is to hard-override the file.
I mean in the case you want to remove behavior from the original condtructor. If you just want to add behavior, you can make a destructor in the modded one.
Thanks, i like to add a destructor to the new one, but how?
class REAPER_2DPIPSightComponent: SCR_2DPIPSightsComponent {
//! Destructor
void ~REAPER_2DPIPSightsComponent()
{
Destroy();
if(m_pMaterial) m_pMaterial = null;
if(IsPIPEnabled()) SetPIPEnabled(false);
}
}
Scripts/Game/Weapon/REAPER_2DPIPSightComponent.c(526): error: Invalid destructor name '~REAPER_2DPIPSightsComponent'
You have an extra s in the dtor's name. It must exactly match the class name.
Or rather the s is missing in the class name
modded class SCR_FactionButton
{
bool UpdateButtons()
{
SCR_FactionManager factionManager = SCR_FactionManager.Cast(GetGame().GetFactionManager());
if (!factionManager || !m_Faction)
return false;
string factionKey = m_Faction.GetFactionKey();
PlayerController pc = GetGame().GetPlayerController();
if (!pc)
return false;
if (!AL_FactionHelper.IsFactionPlayable(m_Faction))
{
SetEnabled(false);
SetShouldUnlock(false);
return false;
}
string strPuid = AL_Helper.GetPlayerUID(pc.GetPlayerId());
EFactionAccessState access = AL_FactionHelper.CanJoinPoliceFaction(strPuid);
if (factionKey == "POLICE")
{
switch (access)
{
case EFactionAccessState.INVALID:
SetFactionName("Wait for sync...");
SetEnabled(false);
SetShouldUnlock(false);
return false;
case EFactionAccessState.DENIED:
SetFactionName("You do not have permission.");
SetEnabled(false);
SetShouldUnlock(false);
return false;
case EFactionAccessState.ALLOWED:
SetFactionName(m_Faction.GetFactionName());
break;
}
}
SetEnabled(true);
SetShouldUnlock(true);
Replication.BumpMe();
return true;
}
}
I have a problem with the list refreshing on the server only. It doesn't update on the client.
@vernal moat 🌹
what ?
is there a way to access the ammo config of a MagazineComponent programmatically?
I'm trying to get a default bullet type given a weapon prefab, so I got to the default magazine from the weapon through BaseMuzzleComponent::GetDefaultMagazineOrProjectileName, but now I can't find a way to get from the magazine to the bullet
Yes
You can access any attribute through BaseContainer::Get and you can get the base container of a component through SCR_BaseContainerTools::FindComponentSource.
@vernal moat you now ?
Okay sorry bro 🌹
For regular characters (not AI) is there a method that is triggered when a shot is fired nearby? Similar to the firedNear event in arma 3?
Not afaik. There isn't an equivalent method for everything that existed in Arma 3.
Making the comparison is just hindering your learning if you ask me.
There's a supression mod out there, could probably take a look at that and see how they're detecting it.
I just made the comparison so its easier for people like you to understand what i'm asking 🙂
seemed to work
I never modded Arma 3, so sadly I'll never understand. If I wanna do something in Reforger I find the Reforger way to do it. I don't make comparisons to other games.
The general rule is search for it, and if you can't find a way look and see if someone else has achieved something similar and learn from them. That's the arma way 
Just actually take the time to understand what they're doing don't go for a blind copy paste.
There is a SCR_AIDangerReaction_WeaponFired for AI but it seems the trigger is not exposed.
Last resort is to loop every player around when a shot is fired and set a variable on them. But defenitely not an ideal solution
I'm just waiting for Tonic to make a "life" framework
Never happening
just kidding, we are getting there. Almost up to your par
I think roleplay stuff in arma is stupid and pointless, go mod gta at that point it's more suited for that stuff and obviously more popular 😔
before i try reinventing the wheel, does EDF still work?
🙏
arma 2 takistan life is what we really need a modern day remaster of
also is there any normal way of being able to use a 64 bit value? You can typedef EntityID and use it's fromint() function to set the bits, but you can't read them back or increment past 0xffffffff still
I'm currently just using a class with two int's and manually handling changing each one but it's a memory hog for what should be 8 bytes
Not really. If you want a hackaround that will work then use WorldTimestamp
i've got my class working pretty well now so it should be okay i think
Although bigger issue, why does bit shifting stop working with values greater than 0x7fffffff?
0x7fffffff >> 4 = 0x07ffffff // all good
0x80000000 >> 4 = 0xf8000000 // not good at all
0xffffffff >> 24 = 0xffffffff // really not good
Shifting left works as expected though
because it's arithmetic bit shift, so it's almost equal to multiply or divide by 2, because of this, any negative integer still be negative after shifting - it's values greater then 0x7ffff...
Seconding that. Cherna/Takistan Life in A2 was so much fun
When it comes to GTA, it's better platform for hardcore roleplay, but I consider Arma a better platform for more arcade RP especially if the in-depth simulation of nature got utilized properly (as that's something that GTA doesn't have)
They really shut off any way of getting around only having signed integers huh. I'd like pay money for a uint right now
I think I may just be a grumpy c programmer
Okay so whats the way to get the world space matrix of a bone now that works? Not only GetBoneMatrix returns local matrix, but somehow it's usually wrong too
Ah okay GetBoneMatrix ignores the rotation of the entity
It's local, so you can get the world one by multiplying with the world transform of the entity.
If local, this would work only for points, not for transforms
And for the transforms it would work, they would have to be from root bones
Otherwise the transform hierarchy is lost
Surely Math3D.MatrixMultiply4(entityWorldTransform, localBoneMatrix, worldBoneMatrix) should work. It's basic linear algebra.
You are missing the hierarchy
If it was root bones, it would be fine
For a hierarchy of bones, it will not
Ah, I see
So the they are in the parent bone space instead of the entity space
So is there a way to get the change of basis to the world space? Or do you have to transform up until you get to root bone?
GetBoneLocalMatrix
Is that the one in the entity space or parent bone space?
So GetBoneMatrix is entity space?
idk what is up with the naming on this api, but GetBoneMatrix returns model space
The other one returns bone orientation in space of parent bone.
So if I plug it in here, I should get the world transform of the bone
If you want final in world space
then you have to do those two and then world space of entity itself
I can make a small example later today.
With the references in a world to see visually, I think it will help many.
Maybe it was a bit confusing. I meant with localBoneMatrix the one you get from GetBoneMatrix. I didn't even consider there is also GetBoneLocalMatrix 😅
Question about ref leaks. I have an in-game entity (a big Billboard) with a texture mapped to it. (via RTTextureWidget) That Widget has a RichTextWidget for text display, with a Script Component (BillboardTextureComponent : ScriptedWidgetComponent).
I'm getting a Leak error about BillboardTextureComponent on scenario transition, even though nothing else references it. (that I can discover) It's only referenced as a Script under the texture.
What should I look at to resolve, and what are the impacts of this overall?
Don't ref the component
Never ref something you are not actively creating and managing.
I am guessing there is no way to increase slotReservationTimeout over 300 due to it requiring backend also?
If you really want persistence, you should create or use a proper framework for it tbh.
For my use case just increasing that to 900 would have been enough but I guess you are still right.
can someone tell me please why this doesnt work when executed in remote console SCR_NotificationsComponent.SendLocal(ENotification.PLAYER_KICKED); console says executed successfully but nothing shows
just trying to wrap my head around the notifications
reposting: is anyone familiar with making cinematics? I need some tutoring. this is a long way over my head but im eager to learn and I have a goal to achieve. I just need help getting started.
what is this error means? invalid waypoint?
Function: 'NodeError'
Stack trace:
scripts/Game/AI/Utils/NodeError.c:8 Function NodeError
scripts/Game/AI/ScriptedNodes/Waypoints/SCR_AIGetDefendWaypointParameters.c:21 Function EOnTaskSimulate
01:47:16.028 WORLD : UpdateEntities
01:47:16.028 WORLD : Frame
01:47:16.028 SCRIPT (E): Virtual Machine Exception
Reason: Wrong class of provided Waypoint!
Yeah
Is replication through layouts possible? (Not doing anything, just a question)
or more so, is there certain limitations
It is not possible. UI is client side, you can simple replicate it. Currently only RplComponent (components and entities with this component) and BaseSystem can be replicated
Speaking about Systems: there is no way to make the systems work in edit mod?
When you create the config, go to workbench options, then go to where it says systems configs or something like that, then before you hit play in the world editor, do the dropdown box on the play button and select your system conf file
Nothing changes, my game system (or any other) still no instantiated in edit mode...
looks like I forced to make some workaround in components with custon "system" class to do this
restart workbench? if you added the debug methods as well, in the diag menu under systems yours should be there if successful
restart workbench?
yes
if you added the debug methods as well
OnDiag should be enough?
in the diag menu under systems yours should be there if successful
it's not even instantiated and there are no options in the "Systems" submenu that would work in the edit mode, only in play mode, and of course my submenu isn't added because my system class isn't instantiated...
I try vanila config and config that contains only my system
And I don't known how to retrieve this system even if it will be instantiated because during edit mode GetWorld returns "zero world" which throws null exception when you try to call FindSystem
How come you are trying to find the system? just do it in play mode
play mode
question isn't about play mode, but about edit mdoe, in play mode everything works fine
I just want to perform some checks to ensure that editor is setup everything right and provide additional visual information, and I want to use for this code from system itself, but currently it's impossible because I can't run system during edit (at least for initialization like for any component and entity), so I ask - it's possible to do this or not and I need to create some extra class that behaves like a system
You're gonna have to create some class that behaves like a system
thanks
Hey,
I am currently trying to add a custom config unfortunately it does not show up if I try to add one.
I used the SCR_XPRewardInfo respectively SCR_XPRewardList as template, basically just copying into a new scriptfile and renaming the classes, without success. Whenever I add a config it only suggests SCR_XPRewardList (my class just having TEST_ as prefix).
I have restarted the Workbench / reloaded the scripts multiple times without success.
Did I miss any step to register my class as config class?
Is there any documentation I missed about this topic?
No, and will never be
In BaseContainerProps attribute, you should have configRoot as parameter, if this is true, it can be a config file
No, this is purely UI
Sad 😢 it will be better to have at least initialization like for components or entities
In future, we want to have systems config being selectable in world, so you could have one world with multiple configs, so this would not be possible to achieve with it, but you can always create a plugin to validate your data
But based on what a UI can return to the local player you can use that info to RPC from the playercontroller hey?
Yes of course, it just that layout themselves have nothing replicated, you need to find other way to replicate it, and playercontroller is one way
This is how my file looks like, it is basically the same as SCR_XPRewardInfo. I omitted the most of it since it is the same as SCR_XPRewardInfo.
Name of file: TEST_RewardList.c
[BaseContainerProps()]
class TEST_Reward
{
[Attribute(defvalue: "0", uiwidget: UIWidgets.ComboBox, desc: "ID of this reward.", enums: ParamEnumArray.FromEnum(SCR_EXPRewards))]
protected SCR_EXPRewards m_eRewardID;
[...]
}
[BaseContainerProps(configRoot: true)]
class TEST_RewardList
{
[Attribute()]
protected ref array<ref TEST_Rewards> m_aRewardList;
[...]
}
folder for this file?
Are you able to set your own contexts in chimeraInputCommon.conf?
I’m looking for the location to remove sand bags from the game
You add them to the config and activate them via script
Can they not be activated with an action?
GetGame().GetInputManager().ActivateContext("ActionMenuGadgetContext");
doesn't seem to activate it
It has to be activated on frame or by passing a duration
Oh ok, that should be helpful thank you
bumping this if anyone can help 🙏
[WorkbenchToolAttribute(name: "Vector2", wbModules: { "WorldEditor"}, awesomeFontCode: 0xF023)]
class VectorTool2: WorldEditorTool
{
override void OnActivate()
{
WorldEditor we = Workbench.GetModule(WorldEditor);
WorldEditorAPI m_api = we.GetApi();
IEntity ent = m_api.SourceToEntity(m_api.GetSelectedEntity());
m_api.ToggleGeneratorEvents(true);
Print("set scaling");
ent.SetScale(0.1);
ent.SetScale(1.0);
Print("scaled up");
m_api.ToggleGeneratorEvents(false);
m_api.EndEntityAction();
Print("end");
}
}
Hi everyone! Trying to force trigger generation of WallGeneratorEntity with scaling
But script do nothing
I have it in scripts/Mission/config
You need to place your scripts in any Module subfolder (for example, scripts/Game or scripts/GameCode)
Scripts outside of these folders are ignored
List of moduels you can see in project options or in remote console
The best option for you is Game
Soo scripts/Game/config should work then?
Yes
At least if there are no vanilla important script with this name
Which may breaks scripts entirely
Better to prefix your files with some TAG
I have
Thank you! It was the directory... 😄
Is there some documentation about this somewhere?
2nd Yellow sign
Thank you
at least use scripts/game
Anyway to enable diag trajectories like this video through a script on the normal game version?
https://www.youtube.com/watch?v=Y5GAeLI5Xk8
If I want to slightly modify a script from a dependency how do I go about it? because I can't override a script and if I duplicate it, it gives me script error
Why can't you override it?
There's no override option just Duplicate to
but when I duplicate it I can't edit it
not sure if this is how it's meant to work tho, I'm new to this
thanks
Why does this not work?
string foo = "Double quotes: \"\"";
But this does with a whitespace in between?
string foo = "Double quotes: \" \"";
is it throw error on compilation?
because there are broken syntax highlighting with escape quotes
Yeah it does. I just found how its done in vanilla code
\"" + "\" But why 
Anyone knows of any unobvious reasons not to mod SCR_PlayerController?
no, there are one big reason to mod this class
Does anyone know if it's possible to modify wheeled simulation values whilst the game is running? Like say I wanted to give a vehicle a nox switch or smth
Only what is in string helper class. No regex
Depends, a lot of them are not exposed
Yeah I have been investigating, I am trying to work out a way to give a vehicle more grip when a button is pushed.
Placejka is what controls wheel grip and slip
Yes but none of that seems to be exposed
yeah =\
Not sure how to do that, currently just trying to use the stuff in VehicleWheeledSimulation to do this, im hoping somehow by improving the gearbox efficency and also the longitudinal friction I can find a way to make the vehicle be able to climb things easier but not be a rocket
you would do all that in placejka, lots of variables to tweak stuff like that
maybe somehow spawn an extra set of invisible wheels for extra grip? if that is even exposed
Ah if theres variables for tweaking the pacejka simulation whilst the game is running I would love to know where as thats exactly what I want to do
For the gearbox efficency does anyone know if this has any impact on torque? or how to modify the torque the engine produces at run time
gearbox efficiency cannot be over 1.0 or it breaks it
high ratios result in way more torque
i usually do 2:1 for transmissions and try to keep differential ratio realistic so i will look it up for whatever vehicle im using
most subarus use 4.11:1
so to visualize it, gearbox ratio is from engine to gearbox
so for every 2 turns of the engine its 1 turn of the transmission, then to axle differentials in my case it was 4.11 turns of transmission per 1 turn of axle
the higher you make those ratios it results in less rpm but more torque
Gotcha, well I have set it to above 1 for this specific case only when the button is pressed. I do wish it was possible to change some of these ratios whilst the game is running, there's loads of stuff that would be really cool to simulate like high/low range etc.
yeah all that would be nice to have, high\low range, 2wd to 4wd, lockable diffs, could even make some kind of traction control stuff
You know what would be nice, gear ratios that work so my vehicle doesnt turn out to be incapable of going forward but launch at mach 5 in reverse with the same gear ratios
Hi, guys, can you tell me if there is any mod or if it is possible to create a mod where I put bohemiaId and this ID does not get in line or has priority equal to admin?
What if you use an existing logic of the administrators? Because today the administrator has priority in the queue if the server is full, correct?
No, only way to do give priority is via the admin section in the server config and its maxed at 20. I suppose you might be able to remove the admin role from that player uid with custom scripting after they connect to the server but that's not something that I've explored.
In the server config file u can do that
Whitelist rcon? I don't see another config for this, I looked everywhere, I don't know if it would be that simple to have the option to release the queue for certain players in the config
Anyone figured out how to get an SQL server sorted using enfusion yet?
Not possible for two reasons:
- You can't use Enfusion. You can only use Reforger.
- There's not SQL bindings or functionality in Reforger.
Why not just put the DB behind a REST API?
Not sure what can be modified on the vehicle side, but for terrain surface materials, there is a friction coefficient that can be modified. Specifically in the physmat files.
might be wrong but I believe BI have a strong stance on no priority queue for normal players, only for admins/gm of the server in the config like people have told you
If you’re looking for the config options you can find it on the wiki
Why would you want to "release the queue for certain players in the config," you're not selling priority queue (for donations) are you?
Q: how would one script in a vehicle prefab limiter to limit the numbers of active vehicles by type ( ie: limit active attack helicopters to 2 per team )
Anyone know how to call notifications for testing?
Does the declarative config language used for cfg / layout files have a name?
I just use a chat command to trigger them.
You could probably do it with some onclick type of thing but UI work is tough
Can you show me an example of that
Sorry noob
Of calling vanilla notification or your custom layout?
Like calling the notification such as player left player joined and all the other enums
That's what I did, but I really don't like having to run a separate program
Apologies, you know what I meant by Enfusion though 😉
Considering there is no reforger scripting channel
Is there any plan to add extensions like in Arma 3
Guess that gives... an answer
not really, I believe this refers to being able to override native methods, not implement your own cpp code
Then use a proper tool to ease the set up like docker compose.
Good point
I can do that, but even with arma 3 scripting being... that... it was nice to be able to write external code for it
Like extdb3
Sadly from statements made in the past they don't plan on doing extension support anytime soon (if at all). The closest you can get is with erm.. InterceptAR but you'd have to write your own plugin, plus it's outdated and doesn't work atm but if you let dedmen know he'll probably fix it..?
The only real way that won't break over game patches is sadly with the REST system...
Damn
Means I can write whatever, but still annoying
Is dedmen not purely focused on perf branch for a3 then?
I briefly talked to him about it and he told me to let him know whenever it wasn't working, that was about it. I don't know much of what he is up to.
Oh well, will have to see in the future, for now will just use REST
I plan to have a look at server extension support and will certainly make an internal draft, but this is a topic for next year at the earliest. A post roadmap item so to speak.
Until then we have improvements to usability/bugs of the restapi designed already and hopefully are able to develop those soon.
I intend to also setup a public db proxy for common interfaces that would be used by the upcoming persistence functionality, so if you only want to test something or have low throughput data, you can just yeet some database somewhere and let my proxy give you the http communication to it. Self hosted proxy then once you exceed what I can give people for free or when you have sensitive data you don't want to trust me with.
It's not bad per se just annoying setting up an additional layer. Probably for the better in the long run though.
From our experience, Tonic you will agree, most life servers for example ended up wanting to have some kind of custom admin panel anyway, or stats for their websites. So just db + game was only used by dev servers and those "i play with my 3 friends" nieche setups. So at some point you probably will want some kind of http app involved in your gamemode setup anyway
I'm not gonna lie, I was amazed that even a rest system existed in the game, just having that is a big step up from working on previous titles. Me personally though I'd like server-side extensions for a lot of reasons not just database but that's just cause i'm more comfortable with doing stuff in C++ and if I need very specific functionality I'd have that ability 
This
Rest is awesome but niche things would be nice to have the extensions
But for sure a pist roadmap thing
There's more important stuff to handle first lmao
How InterceptAR initially started out is how I'd like to see server-side extension integration, with a few extras.
We fully understand and just by the pure volume of devs who previously often wrote extensions as modders it is definitely a hot topic. Nobody is against it, but we have to see where it fits in terms of priority and how we do it. Do we just warm up RVExtension interface with a new name? Only allowing primitive data exchange via string? Do we maybe offer some headers to pass around strong c++ types like a vector or entity or component? Do we offer what was later added in A3 with the extension -> game active event push? They all have advantages and drawbacks.
And after all those things are considered we have to make things safer. A3 extensions were very easily exploitable by bad actors. Yes I know the server admin chose to install them themselves, but the amount of times people just follow a youtube guide, download data from some mega.nz link and unpack into their server directory on their home pc ... yikes. We try not to cripple power by putting up unreasonable safety nets, but if we see some new middle ground we might want to explore that. (Maybe scanning what apis the extension tries to acess or something, who knows).
I am not sure if the official support will go the way dedmen played around with. Maybe, maybe not. He tinkered around to see whats possible, but those approaches are high maintainence - and as thus no longer working.
What kind of use cases are there that aren't actually better solved by http calls
Writing gamemode logic in python @hearty oracle
, advanced log sinks, making use of mutli threaded calculations for e.g. "better ballistics" I think I saw in A3 at some point.
wait did RVExtension support python? Pls god no..
That madman made a whole new gamemode in python yeah
And it was probably easier than in sqf
so long as he didn't use a for loop....
https://github.com/overfl0/Pythia (see the readme for frontline gamemode demo)
honestly it was probably faster than sqf LMAO
Ah well it didnt cross my mind that those things are commonly done
And then went on giving lectures at programming conferences about it 🙃
There was a lot done with extensions.
What we have now is more versatile than sqf and all of that jazz no doubt but there's still a place for allowing custom extensions. At least on the server-side, I don't think client based extensions should ever be a thing again that was such a terrible security hole not to mention a hassle because if I remember correctly you'd have to get some whitelisting done via battleye.
The only use case really for client-based extensions was ACRE and TFAR but honestly meh. Plus with things being cross-platform now a days it just wouldn't really be a thing.
Wait RVExtension got callbacks? aaaa that would of been useful...
There is any function that returns position part in vector form from a transformation matrix?
either call IEntity.GetOrigin() or just mat[3]
So mat[3] returns origin for transformation?
I think so
I need to get current position of current camera in current world, but only thing I found - returns transform
Yeah, use the last vector in transform matrix and you will receive the position
Also, what is coordinates returns ProjectionFromWorldToSvreen? It isn't pixels, I need it in form of SafeZone from previous Arma, so 0.5 in center and 1.0 in bottom righ and etc
There are comments that it returns some "reference" resolution, where I can find info about this "reference"?
it isn't pixels
At least I try to divide this by current resolution at it may results in values greater then 1.0 while point is definitely on screen, so it's not SafeZone-like. Or I do something wrong?
Look for a function called DPIScaling or something can't remember off the top of head but it should take in coords from WorldToScreen and spit out coordinates with the proper scaling
there's still a place for allowing custom extensions. At least on the server-side
And it was probably easier than in sqf
honestly it was probably faster than sqf LMAO
FYI: All of the above sentences.
Besides the time spent on building the extension to write extensions ( because that doesn't count, right? 🥲 ), it was then much faster to write and do iterations of my code in Python that I would ever be able to do in SQF. Unit testing everything was also a breeze.
Using an extension (be it in Python or anything else) opened up the gates to use all the libraries already available for a given language. Do you really want to reimplement computing isolines in SQF, in a buggy way, when you already have numpy and matplotlib that have been used by thousands of scientists daily over the years with all the bugs ironed out by them, already? (I didn't)
Plus you get all the real mutithreading/multiprocessing speed improvements (yes, applies to Python as well).
_As a side note, I don't get the hate that Python used to get in a community using SQF, where types are nonexistent and speed is abysmall (and those who complain about indentation have never had any Code Review done at work, at a real job), but I don't want to start that discussion here 🤷♂️ _
@solid hearth @ocean kernel
Personally, I kinda understand the reasons for the lack of extensions for Enfusion (although it makes me a bit sad).
Especially if we now have a cross-platform system, forcing everyone to use the scripting language makes it easier to ensure everyone can play the same game (inb4 PS5 has no mods 😛 ).
However, it's nice to hear that there are options that are being considered to allow extensions in the future @torn bane 😄 👍
They hate us cuz they anus
the real question is, have you tried plugging in data to train an ai then send back to make an ai 🤨
I think someone eventually will find a way to train an agent to play the game and it will be fun to see
I ditched arma 3 well before things got interesting and I imagine having access to tensor libs and stuff there might be some interesting stuff you could achieve.
I've never done any AI work in Arma so can't really comment on that. The Pythia extenion has the same limitations as any other extension, so you have to (de)serialize anything you pass in either way.
If you think that's something that would slow whatever you would do too much, then you probably would be stuck with Intercept anyway 😦
oh jesus christ i'm getting old... I just realized I ditched arma 3 a decade ago
Also, there's Arma AI, theres LLM AI and there's ML AI and all are called AI so I don't even know which one you're talking about 😅
(and even then, I'm not really proficient in either of these).
Un/Serializing data really kicks some projects performance in the nuts
3458439 byte numpy arrays
You only played it for a light few years?
If there would be something that would not need passing data in and out of Arma, but would let you have a state on the extension/library side that you'd just incrementally update, then anything would be doable, I suppose
Otherwise, Intercept(AR)
I was more thinking towards ML, I just wouldn't even know where you'd begin trying to translate data to plug in. But I played arma 3 from the very start (the day alpha dropped) till 2015 then I ditched everything bohemia related entirely and got sucked into mmos.
There isn't really a good file format for storing matrices or data in general atm... At the moment I abuse config files for storing matrices I got from ML workflows 😅
Side effect is if anyone dares to open those in WB, it probably crashes it.
Given that it can crash just by opening and then closing it, yeah.. highly likely.
Blursed config
Maybe plugins on client not really needed but I like how MSFS handles it; you compile your plugins to WASM, then they run sandboxed in the game such that it's cross platform and secure. As a modder you write C/C++ that runs on both PC and Xbox.
How are modded scripts loaded? Are they auto loaded?
Absolutely no custom code on consoles, not c++ or other low level languages that thave the power to escape if the sandbox is misconfigured. That will unlikely ever happen due to MS and Sony. Script languages are already pushing the boundries on what was some time ago entirely locked down
They're real sticklers about that but with good reason 
Time to write a WASM intepreter in Enfusion Script 🤔
Lmao, I see nothing wrong here 😂
Wait a second, why tf do you have Wallace as a mutual
It's straight up not possible with Microsoft's security model either. AFAIK ERA (GameOS) games aren't even allowed JIT
pretty sure if it needed to happen for something mods would need to go through msft's packaging/signing infrastructure which would greatly complicate things too
I did not know that, cross platform must be absolute agony
Wdym? Like cross play?
The Xbox security model basically defines that the security processor is the only thing that can map executable code pages, and that code must be signed by Microsoft. There’s one exception to this: the SRA VM used for applications can JIT because of Microsoft Edge and .NET applications.
Really good overview of it by one of the architects: https://youtu.be/U7VwtOrwceo
https://PlatformSecuritySummit.com/2019/speaker/chen
Every game console since the first Atari was more or less designed to prevent the piracy of games and yet every single game console has been successfully modified to enable piracy. However, this trend has come to an end. Both the Xbox One and the PS4 have now been on the market for close to 6...
Will have a lookey, cheers
wild, didn’t expect to see a doar-e mutual here
How or where does the SlotManagerComponent register compartments if checked?
CompartmentManager only sees the ones directly on it
compartmentManager.GetCompartments(compartments);
Hmm nvm works now 
does anyone have good resources/tutorials for scripting? The wiki seems to be very incomplete/bare bones right now
Find an online source that teaches OOP.
I do know programming but I don't really understand how enfusion/workbench does things and where to find the code I can extend (like the SCR_ stuff)
Oh ok I'll dig through that. Thanks 🙂
The official Bootcamp series is quite good: https://www.youtube.com/watch?v=Fgl_mAHReP4&list=PLfUcrRpCM_fKjkTrkV-bqnknVbFCPA3YU
I recommend watching the first two videos (Introduction to Enfusion, Modding Patterns and Workflow) and #4, User Interface and HUD. #4 still touches on some scripting stuff.
https://reforger.armaplatform.com/news/modding-boot-camps-introduction
This Modding Boot Camp seminar was originally held on the Arma Discord Server on November 20th, 2024.
Join Modding Supervisor Mario Enríquez for our first Modding Boot Camp, where he gives a quick overview of the Arma Reforger Tools and Workbench.
00:00 - Modding Boot Cam...
Also read up on ECS: Entity Component System
@severe jolt Both the replication ones and the 3rd animation one also touch heavily on scripts 😉
Replication samples when 
does anybody know what script controls the list of entities in the bottom right in GM mode?
Yeah but it's not the bootcamp one is it.
Guys anyone know how i insert my logo hud in game?
HUD component on the player controller
Been stuck at this for over an hour now, Ive tried everything I believe in ActionsManagerComponents and on my script.. nadda. UI appears basic, action key and thats it. Was hoping tohave it with the progress wheel.
Hey
Have you got this working ?
Been stuck at this for over an hour now
Hello, I can't find the function to set the weapons that is hands back to the inventory or their slot I don't know exactly how that works, can someone orient me please ? I looked in CharacterControllerComponent and InputContext, CharacterCommandHandlerComponent, WeaponComponent and all the base class of those components.
Anyway to enable diag trajectories like this video through a script on the normal game version?
https://www.youtube.com/watch?v=Y5GAeLI5Xk8
@rich pecan can you send me a friend request? I'd like to talk about your JIP issues if you're still having them.
Is there a script invoker i can use that i put on the projectile or the weapon that triggers when fired?
I like doing stuff like this inside a scripted aim modifier
I mean you could still have it on a component in the weapon, but the actual fired call could come from the aim modifier
Or muzzle effect component I think as well
sorry could guide me a bit more , I want to make a component to place on the projectile or the weapon that triggers on fired, i struggled to get it working and all the examples i see the invoker is placed on the player
Inside bacon ravage there is a scripted aim modifier that gives zombies infinite ammo
Maybe that could give you some ideas
Hi. Is it possible to override private variable to protected?
[Attribute()]
private FactionKey m_sFaction;
I tried to think how can I intercept this value and update it in runtime while initialization, but seems this is impossible!
Modded class can access private method but not variable...
what? just write now and it works (m_bIncludeMe is private)
modded class SCR_AIDebugTask {
void SCR_AIDebugTask() {
m_bIncludeMe = true;
};
bool MyFunc() {
return m_bIncludeMe;
};
};
Original:
class SCR_AIDebugTask : AITaskScripted
{
[Attribute("0", UIWidgets.CheckBox, "Message prefixed with ref to self")]
private bool m_bIncludeMe;
I downloaded a mod and it's the only one I can't see in Arma Reforged Tools, what could be happening? I have already scanned the project
rescan folder where it is downloaded or manually add gproj of this mod
@pliant ingot I go to existing project and import gproj but it still doesn't appear in Enfusin Workbench projects
Have you compiled it?
This didn't compile for me.
says variable is private. And also documentation doesn't say that private variable can be accessed from modded class.
yes, another example with SCR_BaseGameMode:
Then idk, mb GUID collision with some other added mod or it's not fully downloaded or brake during download
Ok, many thanks for detailed example. I'll try again. I did exactly the same thing and it simply spammed into console with bunch of private fields, on compilation.
maybe some lag...
You prob tried to do it on an extended class and not a modded one
Or on the wrong constructor override
have any of you guys done anything with scripting for cinematics? @minor agate ive watched your installments a few times but scripting is over my head. Im a cinematographer and i really wish the learning curve was not as steep as it is. i would love to be able to learn this a little easier purely for makeing cinematics for my future content.
How do I get specific dependencies from another mod and not use it completely?
What do you mean by "specific dependencies"?
Is this what you mean?
Not possible access private variable of original class inside modded class.
That's not the problem. You do know that the getter already exists? Why do you want to add another one? 😅
lol I need to set data. Getter is an example of more base issue
They all have getters. Use the getters!
Look at this
This is different code with setter
lol
please see the picture first
Read the error. It's triggered by the code in the left window, not the one in the right!
Left side code is original code, you can not change inbuilt code lol
This why I asking developers why is that.
Try it yourself, try to add a setter method to this class
SCR_EditableEntityUIInfo
Then If you have something we can talk. Otherwice is useless, sorry but obvious.
Oh wait, I see what is happening. If you generate an instance of a class inside a method of it, you can access protected and private members.
Not sure why you get the errors then
You saying you have different behaviour in workbench than I do? lol wtf
No, I haven't tested it yet, but what is your ultimate goal?
You have to be careful of what you are trying to do. The UI info is shared by all instances, so if you want to change it for a specific instance, it won't work that way.
Some mods like RHS has set some custom faction like "AS_RF_blabla" instead of US or USSR
So I need script to update this on Initialization moment so all the vehicles to be added in Conflict Depots
Something like that.
I have tried to override this method. It is good enough place for my double "If" statement.
But this is impossible too.
Yeah, I can reproduce it. Looks to me like modded breaks accessing protected/private variables this way...
UI Infos aren't meant to be altered at runtime.
Seems like a new bug
Not the actual issue here anyway
So I guess what you could try to do is override CopyFrom and use your getters
Ill report it internally
might need a hard-override though
Also not my point but, thanks for the info
I'm trying to override the method of a class. I havent change anything except "override" instead of protected.
And this also throws the same errors at compilation...
Thank you god! 
I think hard-override is the only possibility right now
My point is literally that, UI Infos aren't meant to be altered at runtime.
Ignoring the protected or private in your override mods them to become public
If you ignore them, you make them public
MHM! That is a good tip! Thanks
Same if they were protected and you did override private ...
You would make them private
And vice versa
Though restricting access almost certainly will break something 😅
Waiting for a new version. Before that happens all prefabs with this component need to be overriden manually to adapt their faction to your factionKeys...

Again, you could make a copy of SCR_EditableEntityUIInfo.c. Files that have the same path and name in your mod complety override the vanilla one.
Is this really possible?
How to achieve identical path?
Yes, I've done it a couple of times in the past.
Just copy the file to your mod and keep the same name
The mod folder isn't relevant for whether the paths are the same.
Though from what I remember, you may still get a lock on your file in the script editor, so you may have to temporarily rename it for editing and then rename it back.
Trying to do so now )))
Generally, I would only use this approach as a last resort, as it is less maintainable. Basically you have to check after every update that BI didn't change the file.
Hey all, wanted to report something that seemed to change with the script garbage collection sometime around 1.3.
Im the main developer of Overthrow and we use Arkensor's amazing Persistence Framework to persist the world and up until 1.3 it worked with no issues whatsoever.
After 1.3 it seems that during shutdown (which EPF catches and blocks in order to perform a save) some managed class member refs are already destroyed by the time we try to save them. Namely ref map<string,ref object> types. Its intermittent and we have tried everything to provide a solid set of replication steps in order to submit a formal bug report but have failed. So just wanted to mention it here as something for bohemia to be aware of. We will continue to try and narrow it down with replication steps as well as obviously try to exclude EPF itself (or us) as being the cause.
if any enfusion devs may know off the top of their head what change in 1.3 may have caused this (including any workaround ideas) please @ me ❤️
I'm failing to figure out what sets "Global supply usage" to "Yes" in Conflict missions but its "No" by default in an MPTest. I see that its set by SCR_EnableGlobalResourceTypeEditorAttribute but its not referenced anywhere but in Edit.conf
maybe you have tried already, but since it sounds like you know what is set but not how, you can try using my site to do a full text search
Yeah I have the addons unpacked and doing string search through them, still couldn't figure it out
Matches are Edit.conf, SCR_RespawnEnabledEditorAttribute and the class itself
The folder is relevant for scripts
As scripts do not have meta files
Seems like a bug on EPF tbh which is not official from us, its a mod from Arkensor on his spare time.
yes I speak to him, hes aware and has also been looking into it
I found a likely culprit today that we are testing
If you are using it, and you do not want it to die while EPF is being destroyed then ref the map somewhere were you are using it
Otherwise it will be destroyed. Same deal as smart pointers


