Jump to content
eldarius

Delete Marker <nul> in a array

Recommended Posts

Hello everyone,

I try to get all marker with the color opfor in my map,

When i use the method AllMapMarkers and Apply for sort my array i obtain an array that contains <null> for markers that do not fit in the condition.

how do i remove nulls from my array?

I tried this ->

private _MarkersOpfor = allMapMarkers apply {if(((getMarkerColor _x) == "ColorOPFOR")) then ({_x})};

{_MarkersOpfor = _MarkersOpfor - [objNull]} forEach _MarkersOpfor;

Thanks for your help 😉

Share this post


Link to post
Share on other sites

 

"colorOPFOR" ?? I know "ColorEAST"

 

private _MarkersOpfor = allMapMarkers apply {if(((markerColor _x) == "ColorEAST")) then ({_x} else {""})}; {_MarkersOpfor = _MarkersOpfor - [""]} forEach _MarkersOpfor;

works, but the faster way is simple:

_MarkersOpfor = allMapMarkers select {markerColor _x isEqualTo "ColorEAST"};

 

  • Like 1

Share this post


Link to post
Share on other sites

So simple...

Thanks you @pierremgi !

I think you'r code run but when i test this i have no result (return empty array)

I try this ->

allMapMarkers apply {markerColor _x}

And result this

["Default","Default","Default","ColorWEST","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorBLUFOR","ColorOPFOR","ColorBLUFOR","ColorBLUFOR","ColorBLUFOR","ColorOPFOR","ColorBLUFOR","ColorOPFOR","ColorOPFOR","ColorBLUFOR","ColorOPFOR","ColorBLUFOR","ColorOPFOR","ColorBLUFOR","ColorBLUFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorBLUFOR","ColorBLUFOR","ColorOPFOR","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorBLUFOR","ColorBLUFOR","ColorOPFOR","ColorBLUFOR","ColorBLUFOR","ColorBLUFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorBLUFOR","ColorBLUFOR","ColorBLUFOR","ColorBLUFOR","ColorBLUFOR","ColorBLUFOR","ColorBLUFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorBLUFOR","ColorBLUFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorBLUFOR","ColorOPFOR","ColorBLUFOR","ColorOPFOR","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","Default","ColorGrey","ColorGrey","ColorGrey","ColorGrey","ColorGrey","ColorGrey","ColorGrey","ColorGrey","ColorGrey","ColorGrey","ColorGrey","ColorGrey","ColorGrey","ColorGrey","ColorGrey","ColorGrey","ColorGREEN","ColorGrey","ColorGreen","colorgreen","ColorKhaki","ColorKhaki","ColorKhaki","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorOPFOR","ColorRED","ColorRED","ColorYellow","ColorYellow","ColorEAST","ColorEAST"]


Okay perfect, i have an marker color "ColorOPFOR ,

but if i want run you'r code

allMapMarkers select {markerColor _x isEqualTo "ColorOPFOR" };

And 

allMapMarkers select {(markerColor _x) isEqualTo "ColorOPFOR" };

And

allMapMarkers select {(markerColor _x) == "ColorOPFOR" };

Empty array...

you have an idea ?

Thanks you 😉

PS : I tried this 

private _a = allMapMarkers apply {markerColor _x};
_element = _a select 1; //return "Default" 

_element isEqualTo "Default"; //return True

But this not run

private _a = allMapMarkers apply {markerColor _x};
_a select {_x isEqualTo "Default"};

I think arma kidding me ...

Share this post


Link to post
Share on other sites

ok i find the first error ^^

Grrr i like Ctrl-c + Ctrl-v
 

Error in expression <lect {markerColor _x isEqualTo "Default"};>
10:46:48   Error position: <};>
10:46:48   Error Missing ;
10:46:48 File new_2.sqf..., line 1

you don't see like me in my visual code but an insecable space is between "Default" and "};"...

just a last one question and i close this topic

For run my code in the file "myCode"

_MarkersOpfor = allMapMarkers select {(markerColor _x) isEqualTo "ColorOPFOR"};

I use execVM "myCode"

allMapMarkers run ok, but not ->
allMapMarkers select {(markerColor _x) isEqualTo "ColorOPFOR"};

When i test the console in game and i run this in global, no problem all run fine.

How to run this code correctly ?

Thanks

Share this post


Link to post
Share on other sites
29 minutes ago, eldarius said:

How to run this code correctly ?

I guess you need this:

_marker = allMapMarkers select (allMapMarkers findIf { (markerColor _x) == "ColorOPFOR" });

 

  • Confused 1

Share this post


Link to post
Share on other sites

Hello @Schatten thank you for you'r answer,

i think my question it's a bad formulation
 

Quote

_marker = allMapMarkers select (allMapMarkers findIf { (markerColor _x) == "ColorOPFOR" });


this method return the first element in the array who respect the condition, i need all markers who respect condition .

My currently problem is for the execution of this line of code
 

_MarkersOpfor = allMapMarkers select {(markerColor _x) isEqualTo "ColorOPFOR"};

i execute this with execVM and he not run...

but if i execute in my console with global, he run

how run it correctly ?

Share this post


Link to post
Share on other sites
4 minutes ago, eldarius said:

i execute this with execVM and he not run...

How exactly do you run it?

 

56 minutes ago, eldarius said:

I use execVM "myCode"

You should pass path to a file:

execVM "myCode.sqf";

 

Share this post


Link to post
Share on other sites

This is my execution line

execVM "UC\GAIA_UC\unit_start.sqf";

 

i think, after test, this line of code (situate in unit_start.sqf)

_MarkersOpfor = allMapMarkers select {(markerColor _x) isEqualTo "ColorOPFOR"};

 

she run only in global and don't work with "execvm"

But replace execVM with what ?

 

Share this post


Link to post
Share on other sites

I didn't know "ColorOPFOR" but as you can see, both exists ("ColorOPFOR", and "ColorEAST" from opfor choice in editor in marker color!!)

 

so, _markersOpfor = allMapMarkers select {markerColor _x in ["ColorOPFOR","ColorEAST"]};   should work. It's case sensitive like isEqualTo is.

 

_markersOpfor is a local variable existing in a local scope (see this page). If you execVM the code, _markersOpfor is not defined outside the code.

I don't know if there is a good reason for using execVM your code, but this code must treat all _markersOpfor things.

 

execVM, spawn, call ... you need to understand how variables are passed anyway.

call can return data for local scopes. execVM and spawn "returns" handles, not data (except global ones of course).

 

So, if you need help, you must paste what your code is supposed to be. With a single line, no way.

 

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×