#arma3_scripting
1 messages ยท Page 386 of 1
Can you please post the full error from your RPT?
You can't use str _side, Reddog.
}
_tree tvAdd [ [], format ["%1", _x]];
_t>
10:04:41 Error position: <_tree tvAdd [ [], format ["%1", _x]];
_t>
10:04:41 Error Missing ;
10:04:41 File C:\Users\Gavin\Documents\Arma 3 - Other Profiles\LCpl%2e%20Reddog\missions\Snippets & How To's\ALiVE_Testing_1.Malden\rdg_ALiVEConsole\rdg_fnc_Console.sqf, line 42
10:04:41 Error in expression <_Profiles call ALiVE_fnc_InspectHash;
}
_tree tvAdd [ [], format ["%1", _x]];
_t>
10:04:41 Error position: <_tree tvAdd [ [], format ["%1", _x]];
_t>
10:04:41 Error Missing ;
10:04:41 File C:\Users\Gavin\Documents\Arma 3 - Other Profiles\LCpl%2e%20Reddog\missions\Snippets & How To's\ALiVE_Testing_1.Malden\rdg_ALiVEConsole\rdg_fnc_Console.sqf, line 42```
Well... You are missing a ;
if (_debug) then {
_Profiles call ALiVE_fnc_InspectHash;
} <---- Right there
_tree tvAdd [ [], format ["%1", _x]];
And formatting a string like that still doesn't make sense.
This is what happens when you put the opening { in newlines. See the else line. Bad habit.
ffs.
i couldn't give a shit about formatting right now.
and i couldn't give a shit about whether it makes sense or not.
i do give a shit about it working.
With proper formatting, this could've been avoided. Not giving a shit was your initial problem.
once it's working i'll refactor etc.
Sounds like twice the work.
thanks ever so much for your help and advice
In the end you could have solved this by just reading the error message Arma gave you. It told you about a missing ; and even showed you exactly where.
Huh? no
10:04:41 Error in expression <_Profiles call ALiVE_fnc_InspectHash;
}
_tree tvAdd [ [], format ["%1", _x]];
_t>
10:04:41 Error position: <_tree tvAdd [ [], format ["%1", _x]];
k thx bye
Error position: <_tree tvAdd [ [], format ["%1", _x]];
The hostility is in your head, Quiksilver.
The error is directly before the _tree and the next thing before the _tree is the closing bracket where you are missing the ;
You could also have written
if (_debug) then {
_Profiles call ALiVE_fnc_InspectHash;
}
;_tree tvAdd [ [], format ["%1", _x]];
So what now? That's exactly the line and exactly the position the error message told you.
Looks like a commented line in a .INI file.
Still favoring to replace them all with commas.
Might be worth mentioning that using a code editor with linter capabilities helps catch some of these sorts of error. I know there is an SQF linter for VS Code, and there was squint. Not seen one for Atom.
Atom is life lol
Atom is slow. Why would you ever use a slow text editor?
it also crashes on files longer than 3 000 lines
YOU think this is terrible it doesnt make atom terrible
no, it's objectively terrible
It doesnt you should get a new pc lol
no offense but i can edit sqm mission with a tons of lines without getting slowed or crash
What is VS ?
I like atom.. But sometimes I accidentally click on a texture or model and have to wait a couple seconds till it stops freezing
I have the new way to get the position of an object! It will revolutionize everything
_position = parseSimpleArray format ["%1", getPos _unit];
Will it fail for scientific notation?
I can only give you the same answer as for everything in SQF: maybe.
This function can be used for what exactly ?
You can use it to get the position of the object inside the _unit variable
It is a little less precise as other ways. But less precision makes everything faster as we know.
Oh okay, but there shouldnt be space in it right ? Just read the wiki
Which space? There are 6
no spaces are permitted between array elements: [1,2,3] - correct, [1, 2, 3] - incorrect!
only double quotes " supported for Strings: ["hello"] - correct, ['hello'] - incorrect!
use " to escape ", for example ["hello"] converted to string should look like this: "[""hello""]"
no spaces should exist before or after array brackets: "[1,2,3]" - correct, "[1,2,3] " - incorrect!
My bad lol
Is there a way to unnest an array?
As in - turn [["first","hello1"],["second","hello2"],["third","hello3"]] into ["first","hello1","second","hello2","third","hello3"].
Hi scripters,
is it possible to acquire the script handle (for later terminate) from the data received by diag_activeSQFScripts?
nope
@lone glade - could you elaborate?
the command simply doesn't provide the handle
only the name assigned via scriptname, file path, if it's running and the line it's at
I was addressing my question, the one before IrLED.
aaah
you pretty much append / use + to merge all three arrays into one
pretty much:
_myNewArray = [];
{_myNewArray append _x} foreach _myOldArray;
Thanks @lone glade.
There are other ways to kill scheduled scripts though. I could look into it. PM me @south pasture I'll be afk for an hour now but I might have time later.
I guess you only need that for testing on your server and not for a real usage like a script that you want to redistribute with missions.
@south pasture spawn etc return the script handle
Either use a passed object plus set variable to get it inside the scheduled script or a global variable
@queen cargo thing is that the "legacy" code has loads of anonymous spawns... need to start managing them
rewrite it entirely
@tough abyss only one level or multiple? And why you need to unnest?
Come join me in my candy Van @south pasture I have what you need
@south pasture rewriting it then is the only option unless selling your soul to @still forum is an option
)))
bad*
does anyone know how to make invisible backpacks? Or atleast give me some hints. I tried to make an invisible texture, but when I drop the bag on the ground, it still invisible, cant add any textures on it. What I want to have is that on the player, the backpack is invisible, when dropped, the bp becomes visible again, feel free to give any kind of tips
Should it always hide that specific backpack or should it hide all backpacks on this specific unit?
You can add textures to backpacks on ground. But you can't just use cursorTarget to get the backpack object
I forgot what the invisible texture is. My code makes it black. : /
// initPlayerLocal.sqf
private _fnc_initHideBackpack = {
params ["_unit"];
private _fnc_hideBackpack = {
params ["_unit"];
private _backpack = backpackContainer _unit;
private _textures = getObjectTextures _backpack;
if (_textures param [0, "#(rgb,8,8,3)color(0,0,0,0)"] != "#(rgb,8,8,3)color(0,0,0,0)") then {
_backpack setVariable ["commy_textures", _textures, true];
{
_backpack setObjectTextureGlobal [_forEachIndex, "#(rgb,8,8,3)color(0,0,0,0)"];
} forEach _textures;
};
};
_unit call _fnc_hideBackpack;
_unit addEventHandler ["Take", _fnc_hideBackpack];
_unit addEventHandler ["Put", {
params ["", "_container"];
{
private _backpack = _x;
private _textures = _backpack getVariable "commy_textures";
if (!isNil "_textures") then {
_backpack setVariable ["commy_textures", nil, true];
{
_backpack setObjectTextureGlobal [_forEachIndex, _x];
} forEach _textures;
};
} forEach everyBackpack _container;
}];
};
player call _fnc_initHideBackpack;
Here's the code for black. Replace with the transparent texture in the 3 places.
thanks man
@tough abyss
memoryPointsGetInDriver
memoryPointsGetInDriverDir
memoryPointsGetInGunner
memoryPointsGetInGunnerDir
memoryPointsGetInCargo
memoryPointsGetInCargoDir
memoryPointsGetInCoDriver
memoryPointsGetInCoDriverDir
when creating a lightsource, what value do you change to adjust the ambient light brightness? (effect on the environment)
@X39#2180 - already did what I had to with the arrays, thanks anyway ๐
setLightBrightness and https://community.bistudio.com/wiki/setLightAttenuation
the wiki says that setLightBrightness and setLightIntensity do the same thing, so I shouldn't use both?
I am trying to use playSound3D, does anyone know where i can find a list of sound files?
Ingame config viewer. CfgSounds
thanks
the path listed in the cfg isnt similar to the wiki examples, is that alright?
What if they're both right?
Also, the wiki linked me to this: https://community.bistudio.com/wiki/Arma_3:_SoundFiles
Isn't this what you want?
Delete the leading \ before A3 and add .wss if the filepath has no extension. That is what playSound3D needs, because reasons.
thanks, it works great
{
case (_lightNum in [1,2,3,4]): {
[0, 0, 1]
};
case (_lightNum in [5,6,7,8]): {
[1, 0, 0]
};
};```
```_LP setLightAmbient _color;
_LP setLightColor _color;```
```16:31:29 Error in expression <_pos ];
_x setLightBrightness 0.005;
_x setLightAmbient _color;
_x setLightColor>
16:31:29 Error position: <setLightAmbient _color;
_x setLightColor>
16:31:29 Error setlightambient: Type Bool, expected Array```
type bool?
If the condition is not matched by any case and there is no default, it returns true.
but it can only possible be 1,2,3,4,5,6,7 or 8
It obviously isn't.
I'm inclined to believe you, but I can't seem to find where it isn't one of those values: https://pastebin.com/raw/K6pgTVxC
case 1;
case 2;
case 3;
case 4: { [0, 0, 1] };
[_vehicle,7] call call _createLight;
So _lightNum is nil
call _createLight; reports nil
im intrigued that doesnt throw more errors
๐๐ป
Another mystery solved. That makes #350.
atleast now I know switch returns a bool in that circumstance
eagle eyes 1 , tools 0
I initially had 3 cases in the switch block
thats why I wasn't using a simple if else
but I changed it now
can I use call compile format to find a local variable?
_beaconRpos = _vehicle selectionPosition ["mirrorlb_beacon_r", "Memory"];
_pos = call compile format ["_%1pos",_light]```
for example, if _light is "beaconL"
Sounds unnecessarily complicated.
@agile pumice what are you trying to do with that? Can't think of a reason why you would want that
you could probably just use an array with the variables and look it up by an index or whatever
or use getVariable with a formatted variable name
I just went with a switch block lol
just trying to reduce the amount of lines of code
why is lightattachto so jittery on moving vehicles ๐ฆ
Never was
I guess it's attached to the PhysX Geo, wich is also not moving smoothly with the model itself (at least, it reacts/looks the same way)
this is correct
i dont wanna have to write another oneachframe handler XD
Nope, they are all the same
If you move it, it starts lagging
The only "workaround" would be creating (3D-Model) with a Lightsource and attach it via attachTo.
Yup. Make a onEachFrame handler in Intercept.
Not really worth getting Intercept for that if not already using it. But everyone should be using Intercept anyway Kappa
Get an empty model with a light source and create that
Hey, question
Answer!
Is it possible to "hide" a backpack on a character via script?
Like, keep the attributes of it but just have the model invisible on the character
Ah
I guess you can basically set a transparent texture on it
ok
did some more research on the texture stuff, found this
if (side player == opfor) then { unitBackpack player setObjectTextureGlobal [0,""]} ;
it works, but I'm having issues with getting it to apply to a non-opfor character
even changing it to if (side player == independent) then { unitBackpack player setObjectTextureGlobal [0,""]} ; does not work
any ideas why it works for opfor but not others?
I think I just don't know the proper name for independent or something
I tried it for blufor and it was fine
Does this work?
if (side player in [WEST,independent,east]) then{
unitBackpack player setObjectTextureGlobal [0,""];};
Works for me in editor
As an independent soldier
Does it give you an error?
that's the right syntax for independent, so you must've made a typo in game
also yes, you can do <SIDE> in <ARRAY of SIDES>
actually, I'm pretty sure it's just an issue with modded unit I'm trying to apply it to
just keep in mind sides are their own types and not strings
I tried it with a vanilla indy unit and it worked there
It's possible the modded backpacks don't have a hiddenSelection ๐ฎ
I suspect that's the issue
Test it with vanilla units of that side and see if it works for their backpacks. If it does, but not with the modded ones, there ya go.
yep, that's the case
D:
so, another question then. The script also does not work on packs added via arsenal
like, if I copy a loadout from editor and add it in into the init it won't work, it needs to be spawned on the unit
So what you're saying is you get a backpack and it's visible, so you want to auto-hide it?
From the arsenal
well, first of all don't do that because that's stupid (copying the BIS old as fuck loadout format in init)
inits are called on the player local machine when he joins the server
so phronk, basically what I want to do is hide a certain backpack. It doesn't spawn by default on any units though so I need to add it via init
I wonder if hideObjectGlobal works here
if it doesn't work directly on the backpack you can try to reference the weapon holder directly
if(backpack player=="myBackbackClassname")then{ code };
If you want to make it so that if the player drops/picks up the backpack, you'll need to add a Take eventHandler which calls that code to hide it
if you want it to take more than one backpack classname into consideration, you can try it like this: if(backpack player in ["backpackClassname1","backpackClassname2","backpackClassname3"])then{ code };
Although it might be better to define that array of backpacks prior to the if()then{} check for better efficiency
_backpacksToHide=["backpackClassname1","backpackClassname2","backpackClassname3"];
mmm, I think I found the issue
It's again exclusive to the modded backpacks I was trying to use
๐ฑ
I should have checked that first lol
What mod is it?
The Star Wars opposition mod
Basically, the mod has "jetpack" backpacks which allow charcaters to launch up in the air around 10 meters or so
. . .
I'm trying to make the jetpack invisible so the effect could be used as a "force jump" for characters like Vader or a jedi
Oh okay, yeah I honestly never checked out the Star Wars mods. I'm surprised they didn't add hiddenSelections, seemed like a solid team, if I'm thinking of the right project.
oh well, was worth a shot
Better luck next time. ๐
I take it with no hiddenselctions I can't do anything on my end to fix that?
Not that I know of, personally.
see my previous comment above, also they have to use a func or onKeyDown event for what you describe
If you can find out what the function is that the backpack calls, maybe try to give the unit an addAction or something to call it
The one to make the player jump up
Or write your own lol
yeah, it's not that hard
Unfortunately I'm pretty ignorant when it comes to scripting, but I'll send the suggestions to a buddy of mine who might be able to use that advice better than myself
Thanks for the help guys, I appreciate it
For starters to get you in the (possibly) right direction, look into the setVelocity command on the biwiki
That and maybe setVectorDirAndUp
IDK
thanks
No problem. Good luck.
hat would be the easiest way to create a cable between TWO POINTS in arma
that though is affected by physx
I just want to state got from [x1,y1,z1] to [x2,y2,z2]
Is it actually a real rope like the helicopter rope ?
there's no other "cable" or "rope" stuff, all ropes are the same thing
not only that but those can be shot at and cut
ok but I don't seem to be able to create it
does it need to be a vehicle?
or can it be between two houses for instance
@compact maple I'd like to draw a line between two points. It does not need to behave like a physx rope.
I need the closes thing to an understroyable cable between objects
Lol so CAN you create it between 2 players head ?
no
I have a cableway
and I need to connect all pylons
I can do it with p3d but it's practically impossible to have those lines connected and rotated correctly
so I am trying to dynamically generate a cable
I was simply asking
Oh okay i tought it was a rope,literally, like if the rope lenght 5 meters and you attache theses points to the head of 2 p'aysrs they cant run away more than 5m
lol
no
it's practically impossible to have cable lines of > 100m length and line up perfectly
first, you need 3 objects of 50m because at 100m you are reaching the size limitations
plus, putting them down the rotation angles are obviously very hard to get, if not impossible
so I was hoping to make them dynamically
but I seem to be unable to create a rope
Bis did it with pylons and cables
cables and pylons
OBJECTS?
yeah I did my own models
the hard part is how to draw it though.
it's not the model, is how you position the cables
and have the correct length
yeah its hard , probably 6- 12 months i would imagine for proper job and good alingment
modesl > position > scripts > mp locality etc 6 -12 months for a proper job or 1 month for a life server accepted quality
and in green
I need a bit of advice here, weโre working a mod using advanced sling loading, once the vehicle deletes, how could we move the passenger into the helicopter?
land and ask him to climb aboard
i think its a combination of these commands and Moveincargo https://community.bistudio.com/wiki/assignAsCargo unassign and assign etc
Its for MEDEVACs so the goal is to lift the person, once it gets close to the helicopter, he is moved inside, the board is deleted and a new one is spawned in the helicopter
How would we go about spawning the backpack into the helicopter upon deletion?
i guess you give it a varname and move it before deletion
have a look that site i linked scripting commands v good
6 months for placing a cable ??
@compact maple you reffering to my calculation ?
is there a way to getPos for a memory point?
not the object, the exact coordinates of a memory point
I know there's https://community.bistudio.com/wiki/selectionPosition
then I guess you just need to vectorAdd?
oh yeah that too
thank you
thanks! ๐
good day guys, im loking for a sector script so if the independent control the sector the flag get a addaction in base for halo jump. ? can some one help me.
so a marker get green of the ind control the zone, and than it will give a addaction for halo jump, but if tay lose it it will deseper the action for halo jump
๐
so you are basically asking someone to write a script for your
well tyes, if some one have the time for it
if (_this select 1 isEqualTo west) then {flag addAction ["Exec the file", "somescript.sqf"]}
can ido somthing like this
yesm but its a exempel for somthing if i can go an do this
i take out the west and add independent
depends where you put it
yes
and that isn't really taking over an area
hmm
Hey, another question
Is there any way to keybind an action?
Like instead of using a script bound on the action menu could I keybind it?
I have two points in space
what is the best way to get vectorUp of the line that crosses them?
isn't this the vector from A to B?
what I'm referring to (to be more clear) is
I have two points A and B, I'd like to put a cable that starts in A and ends in B, so I have to set vectorUp on the cable
(forget about distances and stuff, I need just the angle)
I probably need a 90 deg cartesian on this angle
There are infinitely many orthogonal vectors to any vector. You need at least 2 vectors to have a unique up vector.
Cross product is what you need.
Or if it's a cable, maybe just setVectorDir
set to which value
Depends on the model I guess.
Is the cable your model?
yes
Make it so [0,0,0] model space is one end of the cable.
And it goes straight into one direction that is either x or (oxygen) z.
So not upwards.
flat.
yes
Then you setPos it into one end.
setdir, i can get relative easily
i donโt get it
Why?
then you need a vertical cable
No?
to use vectorfromto
VectorFromTo needs 2 Points - Point of Object and Endpoint
vectorFromTo -> setVectorDir
ok so i have a horizontal cable, use setvectordir to vectorfromto?
Yes.
But that requires your cable to start at [0,0,0] model space and go to e.g. [1,0,0]
That would be the easiest. You don't really need the upvector since the cable is a 2d object.
(VectorStuff is bรคh)
No one cares which side is up as long as it points in the right direction.
yep
setVectorDirAndUp if you still wish to adjust VectorUp*
Dir and Up are orthogonal vectors, otherwise setVectorDirAndUp fails.
letโs say that I have 2 points in space
A and B
i need to have cables โline upโ
vectorFromTo
to cover all of the distance between A and B
+Distance
so ok, first element pos is point A
You need 20 cables if the distance is 20 meters and the cable is 1 meter.
yes
All would have the same direction vector.
but how do i compute the intermediate pos
simply xyz coordinates separately in %?
so z = (z2 - z1) * percentage
same for x and y
A vectorAdd _dir, as long as _dir has magnitude 1
lost you
There are vector commands for all this. You don't need to do the math yourself.
_dir being?
vectorFromTo
ok
It's always a unit vector (= mag 1)
A = [0,0,0];
B = [1,0,0];
vectorDir = [1,0,0] (right?)
Yes, but again, depends on the model. You might have to mess around with the model's direction in oxygen.
I'm not 100 on that. Oxygen is weird with y being upwards and all that.
To completely discourage you, I might add that you could use the katenoide curve for a hanging cable (hyperbolic cosine).
nonono
๐
ahahah
I already have chairs going around and working in MP
al I need is ti have the damn cables line up appropriately
Or just use a Rope and check for the position of the next segment, then move it to that position.
iirc that was possible (to check for the segment).
rope has too many issue for this use case
it can be shot, it is a physx object, it needs to be attached to a physx object with a simulation, etc
lol
NO
NONONONONO
๐
But this is where the real fun begins ๐ฆ
y = a cosh (x/a) = a/2 * (e^(x/a) + e^(-x/a))
lol
Now I'm hungry for macaronis.
*Macronis
Macronies.
Klugscheiรer
Pretty sure I got it right the first time and everything else was off.
I only have fusilli, and napoli sauce.
Anyone that doesn't have a poorly functioning brain wants to give me a pointer on how to convert hex color code to arma rgba values?
In SQF? Is the hex thing a string?
yeah, just normal "#A7A7A7"
RGBA from 0 to 1 or 0 to 255?
0 to 1, i can manage to make that translation myself though
๐
@little eagle google-fu came up with
getColorFromHex = {
private ["_hex","_r","_g","_b","_nums","_return"];
_nums = toArray "0123456789ABCDEF"; //for converting hex nibbles to base 10 equivalents
_hex = toArray (_this select 0);
_hex = _hex - [(_hex select 0)]; //remove the '#' at the beginning
_r = (_nums find (_hex select 0)) * 16 + (_nums find (_hex select 1));
_g = (_nums find (_hex select 2)) * 16 + (_nums find (_hex select 3));
_b = (_nums find (_hex select 4)) * 16 + (_nums find (_hex select 5));
//divide by 255 (0xFF) because game wants a num between 0 and 1
_return = format ["%1,%2,%3",(_r/255),(_g/255),(_b/255)];
_return
};
So all good
I have something better. Gimme a minute.
kk
i swear i've seen it before too somewhere, but couldn't find it, looked through BIS functions but didn't see it
"#A7A7A7" call {
params ["_color"];
_color = [
_color select [1,2],
_color select [3,2],
_color select [5,2]
];
_color apply {call compile format ["0x%1", _x] / 255}
};
I found a use for compile format. Kill me ๐ ๐จ
I have a bit of code that runs in an onEachFrame handler, but when I try and retrieve the variable, its nil. When i test the code in debug, it works
ed4_hud_button_direct_left = worldtoscreen ed4_hud_button_direct_left;
if(count ed4_hud_button_direct_left < 2) then {ed4_hud_button_direct_left = [0,0];};```
Place something that can be blown up nearby?
Yeah. Hide a drone somewhere.
Or something that fits the scene.
I'm not sure, they might be still able to take splash damage from e.g. explosions, but maybe not.
Could always not hide it, but give it a transparent texture.
Of course they would show up on the radar/map in scrub mode.
^ If not, everything would be nil.
Didnt hidden map objects get destroyed at some point?
nope
Otherwise an ammo box.
Those shouldn't show on the radar and you can make them transparent without hiding them.
lasertarget is probably indestructible.
ammo box
attach it
setObjectTextureGlobal something full alpha
Explosion eh
Oh, those balloons from Marksman
Create them by script if you want to avoid dependency
@quicksilver right at the top _vehicle = vehicle player;
eagle, inside the OEF code block or outside of it?
inside
right above where ed4_hud_button_direct_left is initially defined
well its on a constant loop
its only defined once
Can you post it^^?
at the top
adding the onEachFrame via BIS_fnc_addStackedEventHandler
if (_EH != "") then {
"Added OEF_FordCVPI to onEachFrame stack" call BIS_fnc_log;
};``` gives me the statement in the log
so I know its adding the handler correctly
Hmm, I see you working with the ui namespace. Maybe you try to access the variable from the wrong namespac.e
the only thing using the ui namespace is ed4_hud_helpertext
and I get the proper namespace when getting that variable
_EH = ["OEF_FordCVPI", "onEachFrame", {ED4_Vehicles_Ford_CVPI_fnc_worldToScreen}] call BIS_fnc_addStackedEventHandler;
This looks wrong. Should be:
_EH = ["OEF_FordCVPI", "onEachFrame", ED4_Vehicles_Ford_CVPI_fnc_worldToScreen] call BIS_fnc_addStackedEventHandler;
Otherwise you have a function that returns a piece of code.
Without ever executing it.
Alternatively:
_EH = ["OEF_FordCVPI", "onEachFrame", {call ED4_Vehicles_Ford_CVPI_fnc_worldToScreen}] call BIS_fnc_addStackedEventHandler;
I think you just solved it
: )
Mission EH does stack.
haha
lmao
commy, I wrote my own hex to base 10 color code a while back, and it was probably 6x the length as yurs
XD
the longer the better tbh
Be glad there is potential for optimization.
๐
I had this huge 10k line list of color arrays by hex and decimal and I could insert a hex or decimal color code, and retrive a stirng that identified the color
was it? I use the missioneventhandler for my draw3D script
but assumed the bis function was for stacking multiple handlers, so I didn't use it for that purpose
Stacked has a few benefits though. It can pass args, you have strings as identifiers that can easily overwrite, and some events can make use of the return values still (or could, they broke it at some point - no idea if fixed)
eagle, stacked was the upgrade from the plain onEachFrame etc. sqf commands, that overwrote each other. Mission EH is the upgrade from that making it native C++ events instead of a SQF function framework.
its night time ๐
you still want to cache eagle
Is there any easy way or command to get all controls of a controlsgroup?
The command allControls requires a display as argument
@rotund cypress I can't remember any easy way to be honest
Do you have to get them dynamically?
Yes kinda
I can get them dynamically by doing something but it would be not needed code if there was some other way
@rotund cypress You can use allControls on the display to get all controls and then filter for the ones that are in the control group using https://community.bistudio.com/wiki/ctrlParentControlsGroup
Are the controls under a controlsgroup return by allControls though however? @tame portal
I think yes, give it a try though
Given that you cannot get all controls of a group, allControls should also contain the ones in the groups
Oh nevermind
"
Returns a list of all controls for desired existing display. Returned controls also include controls from control groups"
That should work fine then ๐
Cheers mate, will use this method.
Hey, what happens if I put an on hit event handler onto a prop object like a house in multi player
Is there any easy way or command to get all controls of a controlsgroup?
that should be easy enough actually
with what optix says
params ["_control"];
private _allControls = allControls (ctrlParent _control);
_allControls select { (ctrlParentControlsGroup _x) isEqualTo _control };
@rotund cypress that should do it then
although, i guess that doesnt'support nested
I did something like that
Anyone aware how to remove the borders on rscEdits and rscCombos?
I've tried all the colour settings (e.g. colorBorder, etc) and no luck
That's it
I used to have it but I entirely forgot about it
Cheers @meager granite
@-CML-CaptainMittens#8413 When you add it you will have added a hit event handler. What did you expect to happen?
In general.. "When I do that then that will have been done by me" is true.
@meager granite whats does 0x200 mean ?
@compact maple It's a binary flag
Basically the game will do a logical operation "does the style for the control that's being rendered have flag 0x200 set? Yes? Then render no border"
0x200 == 512 in decimal
It's just a fancy way of writing a number.
Not exactly ... @little eagle it's way more easy to read which bits are set from a hex number than from a base10 number
And? It's still just a fancy number.
@little eagle regarding what we talked about yesterday, i.e. settings a cable to go from A to B knowing only coodinates. I do:
private _direction = _start vectorFromTo _end;
_cable setVectorDir _direction;
This sets the appropriate direction but not the inclination. How do I set the vectorUp of the cable?
You mean the thing is still flat after you used setVectorDir?
yep
the direction is good
but it is flat
I need set vectorUp otherwise it is flat
private _vdir = _start vectorFromTo _end;
private _vlat = vectorNormalized (_vdir vectorCrossProduct [0,0,1]);
private _vup = _vlat vectorCrossProduct _vdir;
_projectile setVectorDirAndUp [_vdir, _vup];
_projectile would be your cable.
oops
fixed
still flat...
Oh okay thanks ๐
Show the code, SCAR
private _cable = "Bosnia_Cablecar_Cable" createVehicle _start;
_cable setPos _start;
private _vdir = _start vectorFromTo _end;
private _vlat = vectorNormalized (_vdir vectorCrossProduct [0,0,1]);
private _vup = _vlat vectorCrossProduct _vdir;
_cable setVectorDirAndUp [_vdir, _vup];
two positions ATL
You need to do your vector math in the ASL system.
why would that matter?
You need a flat topology. Otherwise your z is dependent on the x,y.
Yes it matters.
ah
ok, trying that, I'll be back
that seems definitely better
will resume and add all the multiple pieces
so to compute the points I just need to A vectorAdd _dir
I mean, the middlepoints
with _dir being vectorFromTo
I'm 87% sure you don't need the vectorUp stuff. setVectorDir should be enough. The 13% rest is reserved for Arma.
A1 = A0 vectorAdd _dir
A2 = A1 vectorAdd _dir
A3 = A2 vectorAdd _dir
etc.
B should then be between A(n-1) and An
Dunno how else to explain it.
FYI
private _cable = "Bosnia_Cablecar_Cable" createVehicle _start;
_cable setPosASL _start;
_cable setVectorDir (_start vectorFromTo _end);
this does not do it
Still flat?
this does:
private _vdir = _start vectorFromTo _end;
private _vlat = vectorNormalized (_vdir vectorCrossProduct [0,0,1]);
private _vup = _vlat vectorCrossProduct _vdir;
private _cable = "Bosnia_Cablecar_Cable" createVehicle _start;
_cable setPosASL _start;
_cable setVectorDirAndUp [_vdir, _vup];
Is it still flat with just setVectorDir?
yes
Figures. That's a bug then.
ยฏ_(ใ)_/ยฏ
Eh, that vectorCross thingy stuff you can always use instead of setVectorDir.
fuck
it works and am building my cables dynamically, but approximations are killing it
I guess I'd better compute the dir on every 1m iteration
after 150m the destination is slightly off
Uhm.
this is a life safer, if I can get it to work
pretty sure it's a flota number approx
after 150m, the cable arrives like 5cm to the right of _end
so I'm gonna try to recompute on every 1m slice
Oh, that's much better than what I thought.
๐
Do the cables stick together neatly at least?
yep
Nice.
wonderflly
yes
because then i don't need to do this cable alignment crap in EDEN or TB
which is crazy and would never work anyways
I'm getting the formulas for arc length and catenary.
I don't think so. 150 segments is a lot and we just make it a big A.
well it's a 1.5km cable line with 60 seats
ok recomputing at every 1m interval looks AWESOME
Pics please : )
coming up
so, chairs are not in yet in these images
but they are fully working and functional
even in MP
thanks @little eagle ๐
Lol nice work !!
these and other nice things will be in an upcoming 25x25 terrain
Nice work
Can it be done ?
yeah
Sure, it's relatively easy math. Solved 300 years ago.
Show us xD
I'm wondering if you could superpose two catenaries to emulate wind blowing from the side..
Wait what did I miss
It sounds like someone is trying to do PhysX in SQF
Well I got the bit that you're making a chair lift :P
OPTiX, just some boring vector math to create cables - that don't even hang.
How about placing them according to a function created according to start and end position
I mean the rope segments
Make it a bit curved aswell :P
That's what we did. To get a realistic curve, one would have to play around with hyperbolic cosine, but the ropes are stiff (for now).
Oh I mean stiff looks fine
yeah I'm fine with that
more realistic cables \[T]/
volumetric fog!
Can't you use the ropes in ArmA?
- they need a vehicle with physx
They have to be hanging slightly, so they don't tear in the cold.
so I'd need to turn my pylons etc to CARS
Is there a way to get the positions of the rope segments?
Dummy rope to read the positions of the segments?
That's boring though.
You're boring.
I'll make my cable car with ropes. And PhysX, and explosions.
(explosions are not a bug)
Blackjack and hookers.
In the cable cars? I'd call it a genius idea if it wasn't proposed by the enemy.
Well, TIL that I can add setVectorDir to the looong list of broken commands.
Is there a list of commands with unknown use?
serverTime should be in there
But that's only partially not working as intended
If you lower the bar too much, you'd just get the "list of all scripting commands" again.
@tough abyss tested it now and returns true on wipeout
ah, it's working only on primary turret
so either pilot camera or primary gunner
basically it was converted condition from MFD so I primarily tested it with planes & helicopters
maybe for next patch (1.80)
someone is on it
Would be great to have laserTarget work with other turrets as well, can't return laser target of Strider too.
I am using:
private _relDir = _chair getRelDir _destPos;
_chair setDir (getDir _chair) + _relDir;
to set the direction of a chair towards its destination
for some reason, this doesn't always work
any ideas?
_chair setDir (_chair getDir _destPos);
is there any reason you arent using this? ^
Hello guys, I am trying to create a dialog on the inventory display (IDD602), but nothing show up.
I have try the same code with the map display (IDD12) and this is working. Any idea what's going wrong ?
Is there a way to remove the explosive damage of a vehicle?
Was hoping for some help (tried internet, but ambiguous question returns nothing/not related results) with this: if(_weaponType = "weaponClassName") then {... I am trying to spawn units with different loadouts, and if the weapon is a machinegun, I need to clear room for ammo instead of grenades/smokes/pistol ammo.
export a virtual arsenal loadout, paste it in notepad. will have the code you need
@astral tendon allowdamage false for nearby objects
(and some you don't, but it should be obvious after some time with the biki)
or just an eventhandler handledamage
i want the vehicle to explode but i dont wanna the explosion to do damage
then you can use the handledamage EVH
can you handle me some exemple?
I'm on mobile
the way it works is that you can use if
and check if the damage comes from an explosion
@inner swallow I have the weapon class, but it returns error. My code is: if (_primaryWeapon = "LMG_03_F") then {... The _primaryWeapon is randomly selected from a list, but when the script hits this part, it says it doesnt recognize "LMG_03_F"?
but then this will negates any explosive damage? like a grenade?
@astral tendon https://community.bistudio.com/wiki/Arma_3:_Event_Handlers#Explosion "Explosion"
@astral tendon add event handler, make it setDamage 0 when Explosion event happens.
and then it blocks every explosion
@astral tendon setDamage vehicle+crew 0
๐ฟ
and that won't prevent a deadly explosion.
hang on
what I would do
is to check whether a vehicle is nearby in the handledamage
and if it's alive
or it's damage
if so
exitwith {false}
_car = _this select 0;
if ({alive _x} count (crew _car) == 0) then {_car setDamage 1}}];
this is the event handle in the vehicle that will explode when the crew is dead
is there a way to check first if there is players or blufor close to that vehicle before se the damage to 1?
setDamage [1, false]
to prevent the explosion?
i say players because this is a coop scenario
@wispy lynx use == not =
or even better
Anyone know if there's a way to create a custom view point while still allowing the player to have normal control of their character?
isEqualTo
Or that
@inner swallow Thanks, I'll give it a try.
@wispy lynx reason is, = is assignment, and == or isEqualTo are used for comparison. The if statement works on a Boolean value.
Basically, i need someone to be able to drive a vehicle, but not be looking in the driver seat.
@kindred lichen the only command I know for creating a different view is camCreate
@little eagle That works but i wish the explosion still happens
@simple solstice camcreate stops you from controlling your player though.
the vehicle just spawn burned
So you want the explosion to be just visual?
@astral tendon then to that script add a foreach with _x allowDamage false for nearby players
yes
and then true it after some time
@astral tendon you need to delay the check a bit, the units probably aren't alive at the very start of the mission before they're spawned.
guess commy has a better solution so you can wait for him :D
@inner swallow Works! Thanks for the help & the explanation. I'm learning this script stuff so the reasoning helps with understanding the how/why. Now on to figuring out how to assign grenades if GL equiped weapon.... ๐
You're welcome ๐
Good luck with that! Should be simple enough (rifles with GLs are a different class), but ask here if you need help, of course.
I'd create a particle with the same effect (VehicleExplosionEffectsBig), but I have no idea if that's possible with just missions.
@simple solstice holy, shit, i figured it out, player remoteControl Target;. Let's you control the body of another unit without leaving your current view.
I know with config, no idea how a mission would do it.
You'd think you scrubs would've found a way, but you're disappointing as usual.
I think you have to create a particle for every class inside VehicleExplosionEffectsBig and then apply
private _fire = "#particlesource" createVehicleLocal [0,0,0];
_fire setParticleClass _ParticleClass;
_fire attachTo [_vehicle, _position];
for all of them.
_fire is just one of many particles.
Could be _X
allowDamage false would be easier imo
what is the global equivalent for "player"?
You have to handle locality with allowDamage and then the latency probably kills you anyway.
allPlayers ?
example
_car = _this select 0;
if ({alive _x} count (crew _car) == 0 AND Player distance _car >= 10) then {_car setDamage 1}}];
count (allPlayers inAreaArray [getPosASL _car, 5, 5]) == 0
@little eagle that works but how i change the distance? is those 5s?
make sense
For a circle, both numbers have to be the same.
@tough abyss yea but this is not even appear once
All good, thanks @little eagle
yay
I'm ashamed to answer question when commy is around
he will always find a better solution
Sorry if this isn't the right place but I wonder if anyone has a soultion to adding a vehicle spawner to a mission? The script im using right now is kind of flawed https://hastebin.com/aqanuvakin.bash the major issues are that more then 1 person can use it at the same time and sometimes when a player uses this not all other players can see the vehicle.
You can't?
does anyone know if the locality of a vehicle changes when a cargo unit enters the vehicle, or only the driver?
Driver.
thereโs sonething i am not understanding, which is locality of triggered events.
says that effect is local.
local to the Machine where it's added
e.g. you add it to player1 -> won't get executed on Player2
yes. but if in the callback you have a global command such as setPos on the vehicle?
i would expect the local client to have a global effect
So if you create a Vehicle and the owner of it is the Server -> If somebody gets in -> "getIn" is triggered on the Server
triggered local, ok, but then it depends on what you do in there.
setPos is global
exactly
my point is: getin is triggered on the server OK but if in the callback you use functions with global effects iโd expect they have global effect
the docs say โlocal effectโ but what is meant i guess is โlocally triggeredโ
Again:
Vehicle is create on player1.
On Player1 the command gets executed (e.g. systemchat "bla")
If Player2 gets in the Veh -> ONLY player1 gets the systemchat msg
(example for locality)
The wiki claims Fuel, Engine and Gear have global effects, but that's just wrong.
they mean LOCALLY TRIGGERED not LOCAL EFFECT
Eventhandlers.
EngineOn? Or wich one do you mean, Commy
Engine eh fires if you turn on or off the motor.
anyone know the pboname for the default arma3 textures?
Ah, yeah, Commy
Fuel eh fires if you run out of fuel or refuel from 0.
Note that I capitalize eventhandlers to distinguish them from potential commands, which use camel case.
...
A3_ui_f or A3_data_f
Pbo also A3_ui_data_f or whatever it's name was. It uses the same path as a3_ui_f ingame for the magic folder.
shit theres no way to remove a units thermals is there now?
_vehicle disableTIEquipment true;
Dunno about Zeus. Maybe there's a module, maybe not. Never use it.
can someone point be in the right direction this line isn't working in the init of an object this addAction ["Vehicle Garage", execvm "scripts\open.sqf"];
dang I crie a little bit
@candid jay local effect means that the the effect of a command is local, i.e. must be executed per client
So you need to make sure it's run for everyone, or run it just on server and use remoteExec
local argument means that the variable must be local to that machine
a trigger that is local will run the on activation code locally, however if you run a global effect command from a local trigger it will execute for everyone
(but if it gets triggered on n machines, then the effect will be n times for everyone)
(where n is a whole number)
yep
that was my understanding.
it was the words โlocal effectโ that didnโt ring right to me.
no, itโs a local trigger, the effect depends on what is in the callback
anyway all good
It's addEventHandler that has the local effects really.
is there a better description about the Waypoint Types? like Sentry, what that does and how IA acts
what is the difference between the draw3d and eachframe EH https://community.bistudio.com/wiki/Arma_3:_Event_Handlers/addMissionEventHandler#EachFrame
also, between that method and BIS_fnc_addStackedEventHandler?
Does a request from 1 player to another have to be sent to the server? Or can the player directly request a script execution on the client?
is there a way to set an object to face a specific, relative point? towards a different object, for example
https://community.bistudio.com/wiki/getRelDir
e.g.:
_Obj setDir (_StartPos getRelDir _TargetPos);```
@plucky willow
+Bookmark this Page:
https://community.bistudio.com/wiki/Category:Scripting_Commands_Arma_3
wow that page is amazing
this does the same as the Show/hide module ?
because it does not seens to diable simulation
Don't forget to bookmark the A3 functions page too.
hey guys, I am working on my own server side mod and I am having some issues getting it loaded my launch command is as follows
arma3server_x64.exe -port=2302 "-config=C:\Users\ryan\Documents\ArmA Server\serverfiles\server.cfg" "-profiles=C:\Users\ryan\Documents\ArmA Server\serverfiles\server" -name=server -mod=@extDB3;@serverfiles; -autoinit
I see both extDB3 and serverfiles being loaded, but I have a diag_log in my @serverfiles init.sqf that doesn't get logged
I see @timber cypressDB3's logging it does when it loads
any ideas?
sorry @timber cypress , didnt mean to tag you
When you're worried about doing that use code blocks
`like this`
yeah forgot @ will tag people
Especially with every mod folder starting with @
exactly
do you have any ideas about my issue? lol
been working on it for hours and i am so lost
hopefully. i found someone with same issue on BI forums, but there were no answers lol
If AI group/unit changes it's locality, what information will be lost? wp, fsm state, setVariable values, behaviour? Will it retain basic danger reactions, or will be complete dummy?
So I got this code
_this setObjectMaterialGlobal [0,"a3\characters_f\BLUFOR\Data\clothing1_ti_ca.paa"];
_this setObjectMaterialGlobal [0,"a3\characters_f\BLUFOR\Data\vests_ti_ca.paa"];
which
basicly takes the bluefor thermal map and put it on said unit
it does it for the vest and clothing
but how would I do the same for helmet and uniform?
I tried
_this setObjectMaterialGlobal [0,"a3\characters_f_exp\OPFOR\Data\headgear_vipersp_ti_ca.paa"];
``` but this just crashes the game
You can't do that to headgear, vests or facewear, only as separate config entries through mod
i c,any mods that do that?
@eXandric#6898 maybe it's the trailing ; in your mod list? -mod=@extDB3;@serverfiles;
@candid jay eachFrame runs before Simulation. Draw3D after.
stackedEH is just a scripted "scheduler" vs a in-engine "scheduler" that calls your handlers. You should always prefer the engine one. Unless you need to pass variables which the stackedEH can but engine can't.
diag_log (findDisplay 100000);
dialogDestroy = (findDisplay 100000) displayAddEventHandler ["onDestroy", "systemChat 'Hi'];
dialogUnload = (findDisplay 100000) displayAddEventHandler ["onUnload", "systemChat 'Hi'];
//returns
No Display
diag_log allDisplays;
//returns
[Display #0,Display #313,Display #46,Display #100000,Display #12,Display #63]
Why can I do allDisplays and find it but when I request the specifc display it can't.
"systemChat 'Hi'];
missing "
@still forum thank you. Thereโs a note though to use stackedEH to keep compatibility with other mods: https://community.bistudio.com/wiki/onEachFrame
I guess because onEachFrame is the same for every script running?
@jade abyss I checked my code and I got it there. same problem.
wasn't it onLoad in the .cpp?
In my config it's:
onLoad
onUnload
cpp example:
onLoad = "systemchat format ['Display loaded:%1', _this select 0]";
onUnload = "systemchat format ['Display UNloaded:%1', _this select 0]";```
Anyone ever created a UI with createCtrl on the inventory display ?
I do _display = findDisplay 602;
findDisplay works only one frame after the display is created, presumably because createDialog is scheduled to the ui scripting window, which happens after the simulation stuff.
You have to remove the on for onEvent outside of config.
Missing closing quote marks in both lines.
Destroy only works for controls, not displays.
Not all displays trigger Unload. It only happens when the display is closed by button with exit code (ButtonOK idc=1, ButtonCancel idc=2) or closeDisplay.
To circumvent findDisplay being retarded I cooked up this one once:
private _display = allDisplays;
createDialog "RscDisplayEmpty";
_display = (allDisplays - _display) select 0;
Maybe that helps. createDisplay also returns the created display, but not createDialog.
@compact maple
Example:
player addEventHandler
[
"InventoryOpened",
{
_InterfaceInteract = [] spawn
{
disableSerialization;
waitUntil { !(isNull (findDisplay 602)) };
_NewCtrl = (findDisplay 602) ctrlCreate ["RscText",1928];
_NewCtrl ctrlSetPosition [-0.07, 0.96, 0.36, 0.05];
_NewCtrl ctrlSetBackgroundColor [0, 0, 0, 0.65];
_NewCtrl ctrlCommit 0;
};
};
];```
Well, if you have the spawn there, waitUntil findDisplay will pass first try anyway.
The spawn'd code block is also executed one frame later. Though maybe they create the display a few frames after InventoryOpened triggers.
I had issues without it (scripts not beeing loaded)
Thats the only reason why that waitUntil is in there. Something is fishy there
This is way I hook into the onLoad events themselves instead...
Yep, directly in config would be the better choice, but he asked for scripted one
(otherwise he could create it in the config itself ยฏ_(ใ)_/ยฏ )
I think TFAR had it like this once for some display, and if you were fast enough to close it, the scheduled thread wasn't finished and then pop up a script error.
Hm, never had that ยฏ_(ใ)_/ยฏ
Yeah, sadly most devs don't test under heavy load = slower fps and saturated scheduler from all the bunnies and fish.
Yep
I had a CombatArea with 200 AI's running from left to right and a 2nd one where 50vs50 shooting eachother (for extra load on the CPU) *allowDamage false on all AI
Where can I find the placeable vegetation models in configs? Can't find them myself
Thanks you guys for the help And the explanations will give it a try !
If AI group/unit changes it's locality, what information will be lost? wp, fsm state, setVariable values, behaviour? Will it retain basic danger reactions, or will be complete dummy?
Object namespace variables persist, dunno about the rest.
FSM State should be lost and started on the new Owner
all, what is the difference in just setting in initServer.sqf
missionNamespace setVariable ["Bosnia_CC_chairs", _chairs, true];
and
addMissionEventHandler ["PlayerConnected",
{
missionNamespace setVariable ["Bosnia_CC_chairs", _chairs, _owner];
}];
My understanding is that if _chairs is an array of objects that have local values set on their namespaces, the second will ensure that JIP receive those too
while the first one will send over only the original values
is this correct?
Also, second one is only for MP
2.) seems like a waste of time when you could just do 1.) instead.
well
the difference is that Bosnia_CC_chairs has local variable set on the namespace
so when JIP join in you want those to be updated to the JIP client
with 1 they would receive the original variables, not the updated ones
_chairs = [_chair]
missionNamespace setVariable ["Bosnia_CC_chairs", _chairs, true];
_chair setVariable ["myvar", 1];
in this case, in 1 the JIP would not have the variable set
in 2, the JIP would
I don't think this works as you think it does.
@candid jay There can only ever be one onEachFrame if some other mod sets it it removes the one set by the first mod.
@tender fossil This is #arma3_scripting. #arma3_scripting is not #arma3_config or #arma3_scenario or #arma3_terrain
right, hence the โcompatibilityโ concerns
@still forum Are you sure? hmm...
always. But sometimes I'm still wrong
I am pretty sure, that you can add multiple
e.g. i had one for an Overlay for the position and another one who was added for Medic/Repair stuff
addMissionEventhandler with onEachFrame as parameter yes.
Ah yeah
Oh, onEachFrame is also a standalone command. Never used it (knew of it)...
Better that way.
That's a good thing. Keep it that way
(note in Description just4Info for others)
https://community.bistudio.com/wiki/onEachFrame
looked in the mirror? ๐
Or the mission one (which is also stackable)
yes
Ok I suck at vectors and I'm drunk. So, can some kind intelligent soul tell me wtf vector function I can use to achieve the same thing in a one liner?
_pos params ["_x1", "_y1", "_z1"];
_destPos params ["_x2", "_y2", "_z2"];
private _x = _x1 + (_timePortion * (_x2 - _x1));
private _y = _y1 + (_timePortion * (_y2 - _y1));
private _z = _z1 + (_timePortion * (_z2 - _z1));
private _newPos = [_x, _y, _z];
i'm sure this must be a one liner thing
does this even remotely looks right?
private _newPos = _pos vectorAdd ((_destPos vectorDiff _pos) vectorMultiply _timePortion)
lgtm
or alternatively
private _vdir = _pos vectorFromTo _destPos;
private _newPos = _pos vectorAdd _vdir;
wtf too much wine damn it
ah shit no
this one doesn't have the portion
I don't think so, because now you always add a vector length 1, not length timePortion.
yeah
so maybe
private _vdir = _pos vectorFromTo _destPos;
private _newPos = _pos vectorAdd (_vdir vectorMultiply _timePortion);
Btw, I found this video that explains how to derive the formula for the catenary: https://www.youtube.com/watch?v=O2MCBzw6kVg
The classical problem of the catenary. You require knowledge of hyperbolic functions to solve the integration part. Check out www.gaussianmath.com for an ind...
I always wanted to do this since I was like 9 and built a lift with a string and legos.
Modeling is too difficult for me. No artistic talents and I never practiced either.
models, we have
you want my pylons? lol
let me finish this work then it's all a matter of vertices
anyway everything is now created dynamically
// compute pos
private _vdir = _pos vectorFromTo _end;
private _vlat = vectorNormalized (_vdir vectorCrossProduct [0, 0, 1]);
private _vup = _vlat vectorCrossProduct _vdir;
// create cable
private _cable = "Bosnia_Cablecar_Cable" createVehicleLocal _pos;
_cable setPosASL _pos;
_cable setVectorDirAndUp [_vdir, _vup];
// get to next position
_pos = _pos vectorAdd _vdir;
_pos and _end are two poles, right?
yep, this is a portion in a loop
at the very beginning private _pos = _start;
so _start and _end are the two points to connect
this basically builds all the portions in between, but in this case linearly
Ah, _start and _end are two poles then.
rgr
though I will change that
because the cableway is 1.3km so that's 2,600 cable objects
kinda of unnecessary
will do 10m cables or so
I guess I'll only have to _pos = _pos vectorAdd (_vdir vectorMultiply 10);
or maybe not
again, too much damn wine
The problem is that the formals for the catenary that I found assume both end points to be at the same height, but that is obviously not even close to true for a lift. So this changes the second integration constant , and I'm not sure exactly how yet.
oh yes
and btw
that would mean sticking to 1m objects
and not really sure it would look better
because they'd still be 1m chunks
Also I don't undertsand the step at 6:25, I think he missed a crucial step there.
you know.. \ _ /
I think it would look great. It would only hang a bit, and if you've ever looked at other games, hanging lines are always approximated at close distance.
cant you d the play record and grab the positions etc that it spits out as a viable array for what you want ?