#arma3_scripting

1 messages · Page 454 of 1

chilly wigeon
#

because in the format you're using it, the first arg is the condition if the value should be counted

#

Since the 3rd element is false, the condition returns false, and is not counted.

#

Or I'm dumb

wary vine
#

i tested it, it works.

chilly wigeon
#

you're asking if it would work like that

#

not why

wary vine
#

I tested after i asked.

chilly wigeon
#

ah

tough abyss
#

Anyone familiar with call BIS_fnc_reviveOnState; ?

winter rose
#

no, but I can be

#

« Used to execute specific code localy on every client whenever unit's state changes. » @tough abyss

tough abyss
#

Any way to make it work in MP? I'm trying to make something call it for a player other than the person using it.

winter rose
#

there is reviveOnStateJIP, but IDK if it would work like that

#

reviveOnState:

    Parameters:
        _this select 0: STRING - Variable that carries the state value over the network, defined by macro VAR_TRANSFER_STATE.
        _this select 1: SCALAR - State.
        _this select 2: OBJECT - Unit to set the status for.
#

same for the JIP version

tough abyss
#

Hmm

winter rose
#

if you want to execute the code on the machine, use remoteExecCall

#
["param0", param1, targetedUnit] remoteExecCall ["BIS_fnc_reviveOnState", targetedUnit];
tough abyss
#

Think it would work for what I'm doing? I'm having a vehicle execute the code on an injured player in the revive state.

winter rose
#

no idea sorry.

tough abyss
#

I'll find out here in a bit, gotta find a second player or boot up two armas lol

astral tendon
#

Anyidea to know what unit the AI is aiming at? assignedTarget still returns when the AI have no visual on the unit and also when its dead.

winter rose
#

what for?

tough abyss
#

You still around @winter rose ?

winter rose
#

Soon™ not, but shoot

tough abyss
#

those param0 and param1 of the remoteexeccall you posted, that would be the parameters I had before right? And where did you find the info for the reviveonstate?

#

I can't find much on it

winter rose
#

Check the functions viewer in the editor

#

Where did you hear from it?

tough abyss
#

googled it

#

trying to find a solution to revive people the same way holding enter does using the vanilla revive

#

it was in a snippet someone posted and it did what i needed lol but beyond that i havne't seen a wiki page

#

But it's cucking me, I can't figure out how to make a drone revive someone lol

winter rose
#

setUnconscious false?

tough abyss
#

I tried that but it didn't seem to work

#

BIS_fnc_reviveOnState was the closest thing to work so far, it acts as if a player sat and revived you

#

I just can't figure out how to make it run off a vehicle.

winter rose
#

not sure I understand what you are trying to achieve

tough abyss
#

I'll pm you

#

@little eagle you around m8

little eagle
#

aaa?

tough abyss
#

You have a clue about the BIS_fnc_reviveOnState ?

little eagle
#

Never seen it, neber heard of it.

tough abyss
#

😦

astral tendon
#

What the hell is targetAge?

#

Also, assignedTarget does not work with UAV units, its returns <NULL-object> even though he is aiming at a enemy unit but have orders to hold fire.

obsidian kiln
#

how I can retrieve a variable name from a outer scope?

#

like, executing [obj1spawnready] execvm "spawn.sqf"

#

and inside spawn.sqf have a _activation = _this select 0 but retrieving the variable name rather than if it's true or false

little eagle
#

Pass them as argument. Variables carry over into child scopes. Your problem is it being a different script instance.

obsidian kiln
#

what im trying to is to have a while inside the execvm to see if obj1spawnready became true

#

at some point of the mission

#

but without knowing the exact name of obj1spawnready beforehand, it could be any variable name

#

i need to use format or something? getvariable from missionnamespace?

little eagle
#
"obj1spawnready" spawn {
    params ["_variable"];
     waitUntil {missionNamespace getVariable _variable};
};
obsidian kiln
#

oh i see, will try it, thanks

obsidian kiln
#

it worked without issues, thanks

still forum
#

@wary vine There is already a wiki bot. But it's secrit

dusky forge
#

These places running 255 slots how do they really get away with it? Assuming there is some combination they are using in server.cfg

still forum
#

Like.. Just setting available slots to 255 is easy.. You just place that many playable units and you're golden

dusky forge
#

Ah wrong chat but I meant highly script intensive both on the client and server and without a lot of lag

still forum
#

run all scripts scheduled and your scripts won't lag out anything

#

The scripts themselves that is. If the scripts spawn hundreds of objects everywhere they will still lag stuff

muted tapir
#

Is there any way of getting the position of the shit + click map marker? I didn't find anything on the onMapSingleClick page nor it's listed in the allMapMarkers array.

#

I know I could just get the location from the _pos parameter

still forum
#

Someone asked that same recently. Can't remember seeing a answer

muted tapir
#

but you can move the marker later on

#

oh

#

well... I'll try to find some way around it 😛

quasi rover
#

I use this code: (nearestBuilding _position) allowDamage false; to protect building where the task object is placed . Nevertheless, the building is sometimes destroyed by tank, launcher, explosive charge or CAS. Is there stronger protection to keep the building alive?

still forum
#

Hit or HandleDamage eventhandler maybe

quasi rover
#

you mean, _object addEventHandler ["HandleDamage", {0}] something like that.. ?

winter rose
#

allowDamage should work for buildings. There also may be a module to allowDamage, I'm not sure

quasi rover
#

Thx, allowDamage is executed on the server, just after the object for task is placed. no SetDamage 1 , the building is destroyed by player by mistake or unintentionally.

winter rose
#

yes but I want you to try if this is the proper building; (nearestBuilding _position) allowDamage false; may target like a road sign or a shed, so be sure that it returns the building you really want first

#

well, according to BiKi Finds the nearest building to a given object or position. A "building" is defined as an object that is of class "House" and contains a path LOD.
But it's still good to be sure 👀

#

This command doesn't return any house or building placed in editor (with createVehicle). Use nearestObjects instead

quasi rover
#

Oh, I see. actually the '_position' is the location where the object is placed. _position comes from buildingPos .

molten folio
#
combinedspawner = {
    switch (_condition) do {
        case "Uniform":{
                _selected  = lbData [2222, lbCurSel 2222];
                _TomWalker_Player = player;
                _TomWalker_Player addUniform _selected;
            };
            case "Vest": {
                _selected  = lbData [2222, lbCurSel 2222];
                _TomWalker_Player = player;
                _TomWalker_Player addVest _selected;
            };
            case "bag": {
                _selected  = lbData [2222, lbCurSel 2222];
                _TomWalker_Player = player;
                _TomWalker_Player addBackpack _selected;
            };
            case "head": {
                _selected  = lbData [2222, lbCurSel 2222];
                _TomWalker_Player = player;
                _TomWalker_Player addHeadgear _selected;
            };
            case "Item": {
                _selected  = lbData [2222, lbCurSel 2222];
                _TomWalker_Player = player;
                _TomWalker_Player linkItem _selected;
            };
            case "Glass": {
                _selected  = lbData [2222, lbCurSel 2222];
                _TomWalker_Player = player;
                _TomWalker_Player addGoggles _selected;
            };
            case "Vehicle": {
                _selected  = lbData [2222, lbCurSel 2222];
                _TomWalker_Player = player;
                _selected createVehicle position _TomWalker_Player;
            };
            case "Weapon":{
                _selected  = lbData [2222, lbCurSel 2222];
                _TomWalker_Player = player;
                _TomWalker_Player addWeaponGlobal _selected;
            };
        };
};``` i got this Switch function but how do i get it working like should i make it into a button or just call it when the meu is opened?
#

i got a RscList for each gear

winter rose
#

@quasi rover
what? no

nearestBuilding _thePositionFromWhereYouLookAround;
_building buildingPos 1; // finds a pos inside a building
#

@molten folio unsure what you want really

still forum
#

@molten folio you should run that whenever you want to run that.

#
_TomWalker_Player = player;
_TomWalker_Player addWeaponGlobal _selected;

What is that? Why are you creating that useless variable?

#

and _selected is also always the same. That script could be 3x smaller

molten folio
#

_selected is the selected thing in the RscList

still forum
#

It's always the same though. In each switch case

molten folio
#

got one list for all Gear , Gear are switched by buttons

still forum
#

Why do you duplicate the same code everywhere

molten folio
#

so i just put it at the top?

still forum
#
combinedspawner = {
    private _selected  = lbData [2222, lbCurSel 2222];
    private _TomWalker_Player = player;
    switch (_condition) do {
            case "Uniform": {      _TomWalker_Player addUniform _selected;             };
            case "Vest":    {      _TomWalker_Player addVest _selected;                };
            case "bag":     {      _TomWalker_Player addBackpack _selected;            };
            case "head":    {      _TomWalker_Player addHeadgear _selected;            };
            case "Item":    {      _TomWalker_Player linkItem _selected;               };
            case "Glass":   {      _TomWalker_Player addGoggles _selected;             };
            case "Vehicle": {      _selected createVehicle position _TomWalker_Player; };
            case "Weapon":  {      _TomWalker_Player addWeaponGlobal _selected;        };
    };
};
#

And I cannot tell you when you want to call that code. You have to know that yourself.

molten folio
#
buttonSetAction [1004, "[] spawn combinedspawner"];```
#

Works

#

Thanks @still forum

still forum
#

I didn't even do anything. I just told you to think for yourself :D
The script also works without my changes. It's just uglier

molten folio
#

ye i didnt put the condition

#

xDDD

#

_condition was still there

molten folio
#

Anyone got a good SQF plugin for Visual Studios?

winter rose
#

Not Visual Studio itself, but VS Code yes there are

thorn saffron
#

Is there a way to make AI group leader give the "Take Cover" order? The one that player can give as a leader

peak plover
#

I don't think so

#

Take cover probably does sth to ai fsm

still forum
#

@mossy lion bad boi!

mossy lion
#

😨

unborn ether
#

There is no way to command AI to intentionally take cover. The only way of achieving this is to use setBehaviour to set "STEALTH". This is not accurately what you expect, but AI will stop running open, and will try to seek anything to hide behind, even non-absolute covers, like bushes.

#

@thorn saffron

meager heart
#

also eh's Hit, FiredNear you can do so many things with them...

unborn ether
#

Hit and HandleDamage is fine, but when somebody is acutally hit. FiredNear has a limit of 56 meters AFAIK, so if somebody shoots around - nothing will happen

meager heart
#

yeah FiredNear < limited distance

#

(using it for nades/smoke)

thorn saffron
#

Well there is the "Take Cover" order you can give. It would be nice if you could trigger it via script

winter rose
mossy lion
#

What did i wrong @still forum

still forum
#

The example simply doesn't work

#

passing a position although it takes a object

mossy lion
#

I dont know why and what i did there... 😅

thorn saffron
#

@winter rose Well, that comands does absolutely nothing I want to do. All it does is report enemy position

winter rose
#

That's the closest I could find, so far

thorn saffron
#

Its completely unrelated to actually finding cover

#

It seems there is no way of actually making a unit find cover without writing the function yourself. There is no scripting command in A3 that does that. That's... sub-optimal.

winter rose
#

oh right 👀
I don't know why but I kept in mind this command returned a possible hiding place from a menace -_- nevermind

#

BIS_fnc_findSafePos is mentioned in findCover

#

but no, useless.

thorn saffron
#

BIS_fnc_findSafePos just finds a spot that is not obstructed, also unrelated

#

So yeah, a massive milsim game with no actual scripting command to make AI take cover. Just brilliant.

digital hollow
#

Are there any vanilla fsm scripts exposed for use with doFSM perhaps?

little eagle
#

Why would you ask this?

digital hollow
#

For Taro's purpose.

little eagle
#

Well, the nice thing is, that you can script everything yourself.

peak plover
#

Arguyments are global

#

Does this mean that I can just add inventory closed on the server

#

And it will run if client closes his inventory?

#

A bit hard to believe, but

little eagle
#

The eventhandler will only fire on the machine that added it, but AG means that it will fire for remote units.

winter rose
#

oh maybe it's valid for an non-local AI opening its inventory… really not sure though

peak plover
#

So a non local player should run ?

little eagle
#

If machine A adds it to machine B's avatar, and B opens the inventory, the eventhandler will fire on A's machine. If the wiki is correct that is.

winter rose
#

I think it won't. but maybe when the unit B becomes local it will trigger

little eagle
#

Why do you think it won't? The wiki clearly says AG.

#

Are you saying you know that the wiki is wrong?

winter rose
#

I say that I think it is not the behaviour the game will have

#

one has to try to be sure

little eagle
#

GetIn etc. also are AG on the wiki, and they also fire for remote units.

#

If it didn't fire for remote units and behaved as you described, then that would be a bug.

#

Or at least an error on the wiki.

winter rose
#

yeah, but I would be surprised such inventory GUI event would be broadcast

little eagle
#

It should say AL then. Like killed or respawn.

#

It's not the gui opening though. That has no event unless you use CBA.

winter rose
#

if it works, I will be happily surprised and gladly admit I am wrong 🙂

#

I may be wrong, actually.

little eagle
#

You may also be right. I don't claim to know.

winter rose
#

who has a server so we can try? 👀

rough heart
#

Aint it more a case of on which machine the event handler gets assigned to a player/vehicle/object/ai?

little eagle
#

I wrote everything already. No need to heat this up again.

rough heart
#

You could still assign a event handler on a server to a ai/vehicle/player and that would get executed on the server only.

#

whatever ¯_(ツ)_/¯

little eagle
#

And yeah, you're right.

#

It fires only on the machine that added the event, and it fires for remote units.

#

That's all.

still forum
#

You should rather heat up this ---> 🍕

rough heart
#

Oh pizza ❤

#

Commy, i think dedmen is offering to get us pizza

little eagle
#

I'll be eating baguette later.

rough heart
#

Baguette is good as well.

gleaming oyster
#

Heating up lamb from the crock pot

winter rose
#

eat my baguette, sacrebleu! 🇫🇷

little eagle
#

As long as it's not garnished with 🐌 🐸 .

rough heart
#

Or cow eye balls

#

bull penis

winter rose
#

never ate the last two

#

frogs and snails, on the other hand…

rough heart
#

Seen that shit in a shop in france 🤢

winter rose
#

sheep brain, my great-grandmother liked to eat that

#

fried on a pan iirc

rough heart
#

Oh god...

#

imma leave now

winter rose
#

oops

rough heart
#

before im gonna start puking all over the place 😂

winter rose
#

guts?

#

in China too, pork stomach

#

well nvm anytime we go food I'm #offtopic_arma 👀
DON'T mention frogs or snails to avoid such situation 😝

edgy dune
#

How compare is sqf to javascript?

still forum
#

SQF compares with == or isEqualTo
and javascript compares with == or ===

molten folio
#

is it possible to count how many name in a RscList?

still forum
#

"name"?

wary vine
#

lbSize ?

still forum
#

A control can only have one name. It's classname

wary vine
#

it counts how many index's are in the listbox.

still forum
#

Good idea to delete that. Was just getting ready to swing the hammer

molten folio
#

XDDDD

astral tendon
#
// exemple playSound [soundName, isSpeech]
["s1_spottedcontact_1", true] remoteExec ["playSound"]; // dont play with isSpeech
["s1_spottedcontact_1"] remoteExec ["playSound"]; //plays

What is wrong?

still forum
#

STRING playSound BOOL doesn't exist

#

there is playSound STRING or playSound ARRAY I guess you want the array variant

#

I guess [["s1_spottedcontact_1", true]] remoteExec ["playSound"]; should work then

digital hollow
#

Yup. See this example on remoteExec page.

titleText ["Test Message", "PLAIN", 1];
[["Test Message", "PLAIN", 1]] remoteExec ["titleText"];
molten folio
#

no one saw that....

little eagle
#

Saw what?

molten folio
#

nothing

astral tendon
#

I see thanks.

#

I mean, the Dedmen message.

still forum
#

I see everything.. I didn't see in this case but I can look it up!

#

Okey I saw it now and I'm disappointed.

wary vine
#

ok am i wrong in saying

 switch (true) do {
case (bool) :{};
}; ``` should work ?
little eagle
#

Almost.

wary vine
#

hm

#

I thought I have seen it like this before xD

#

maybe i was imagining things xD

little eagle
#

You have a : where a ; should be.

wary vine
#

oh type

#

typo

little eagle
#

Thus: "almost".

thorn saffron
#

Ok, so "Find Cover" order is something completely different from the Danger stance. In danger behaviour units will not look for actual cover if you just change the behaviour.
"Find Cover" makes units "Hide" something that even has its own UI description. This means that arma 3 does have all the proper code already in the engine. There is just no (known to me) script command that can trigger that "Hide" behaviour.

civic oracle
#

https://files.catbox.moe/fv42ev.webm does anyone know how to stop this and make it so people spawn in without needing to respawn the first time? After they get killed respawning sounds right

little eagle
#

I have an idea.

#
// init.sqf
0 spawn {
    private _respawnDelay = playerRespawnTime;
    setPlayerRespawnTime 0;
    sleep 1;
    setPlayerRespawnTime _respawnDelay;
};
civic oracle
#

I put this in a txt in my document folder/

little eagle
#

Do you know what init.sqf is?

meager heart
#

also will helps

//--- description.ext
respawnOnStart = -1;
little eagle
#

Yeah, that would be even better I think. Does this have a eden attribute?

meager heart
#

not sure about eden tbh 🤷

#

will check...

civic oracle
#

do I put it here?

little eagle
#

You can put it there too I think.

#

May need

#

0 spawn {

#

->

#

0 = 0 spawn {

civic oracle
#

// init.sqf
0 = 0 spawn {
private _respawnDelay = playerRespawnTime;
setPlayerRespawnTime 0;
sleep 1;
setPlayerRespawnTime _respawnDelay;
};

meager heart
#

nothing in eden about it

molten folio
#
private _display = findDisplay 12344321;
private _counter = _display displayCtrl 33334;
_counter ctrlSetStructuredText parseText format["<t size='1.2px'>Total Authroized Civilians</t>",(lbSize _list)];```
#

not working need help

#

plz

meager heart
#

remove // init.sqf @civic oracle

civic oracle
#

ok going to try it out now

#

no sorry it still asks me to respawn at the start

little eagle
#

Open your mission folder.

#

Create a file and name it
description.ext

#

And put

#
respawnOnStart = -1;

Inside

civic oracle
#

success! that worked thank you

little eagle
#

sldt1ck said it first.

civic oracle
#

oh I was doing that in the init file not the documents sorry, thank you both.,

meager heart
#

takes 🍪 x2
passes 🍪 to commy

digital hollow
#

What happened to the other one?

little eagle
#

gulp

tough abyss
#

How would one go about moving all inventory contents from one container to another?

little eagle
#

lol

#

Turn off the pc, wait for A4.

molten folio
#

anyone got a link to all Rsc?

meager heart
winter rose
#

than*

little eagle
#

thanks

winter rose
#

👍 got your back

little eagle
#

thenks 🤔

winter rose
#

your whalecum

little eagle
#

😐 💥 🔫 🤔

meager heart
#

yeah... it's* than* sank yuo

#

fixet*

little eagle
#

thx

meager heart
#

💐 /(°_°✿)\

little eagle
#

aww

meager heart
#

little eagle
#

🐄 💨 🙊

meager heart
#

so rude

little eagle
#

💩

meager heart
#

poor monkey 😔

little eagle
#

👉🏼 👌🏼

meager heart
#

no, thx

little eagle
#

k :sad:

still forum
#

so many emoji

molten folio
meager heart
#

probably by hands, also i think that was human... 🤔

little eagle
#

ListNBox?

#

Maybe it's just a lot of controls.

#

Or controls groups.

#

Do whatever you like.

unborn ether
#

@molten folio This is made with controls groups in controls group with controls for each column, navigation bar is formed separetely according to scales.

molten folio
#

aight

meager heart
#

multiline structured text with huge whitespaces 🤔

wary vine
#

@unborn ether hes a newbie, it would be easier for him to use listnbox, which is very similar in look

unborn ether
#

@wary vine Yes, but there are a lot of reasons why not listnbox

wary vine
#

but for him, I think listnbox would be the way to go.

unborn ether
#

yeah, pretty much i think

green quail
#

Would anyone here be familiar with a way to script a means for AI to actively chase down players in an attempt to attack them in melee (example- bayonet charge) please tag me if you can help or know someone that can.

errant jasper
#

I modify a projectile's path slightly using setVectorDirAndUp and setVelocity. For the shooter it works and looks fine. But for remote players, the impacts are correct, but the tracers fire the original path from the barrel. So for remote client it looks like the weapon shoots at one point and hits a different place. How to avoid this problem?

quasi rover
#

There are 2 supply crates, far away each other and both have virtual arsenal in the mission. if I disabled load/save button on one supply crate like this:

[missionNamespace, "arsenalOpened", {
        disableSerialization;
        params ["_display"];
        _display displayAddEventHandler ["keydown", "_this select 3"];
        {(_display displayCtrl _x) ctrlShow false} forEach [44151, 44150, 44146, 44147, 44148, 44149, 44346];
    }] call BIS_fnc_addScriptedEventHandler; 

both supply crates also have the same loadout restriction. Is there an way one crate has loadout restiction and the other has not?

meager heart
#

with that EH controls are not disabled, they just hidden, if you will press CTRL+R < random loadout or CTRL+L < load...
everything will work, to fix that you will need something like this

(_display displayCtrl _x) ctrlEnable false;
(_display displayCtrl _x) ctrlShow false;
``` at the same time ^
and for the different restrictions...
```sqf
[_objectA, _list_backpacksA, false, false] call BIS_fnc_addVirtualBackpackCargo;

_list_backpacksA < backpacks list for the _objectA...

#

also better option will be ace arsenal... if you are using ace mod @quasi rover

#

(cant tag if people are offline 🤔)

quasi rover
#

@meager heart Thx, and I mean, I want one crate has full open virtual arsenal like ["AmmoboxInit",[ammobox,true,{true}]] spawn BIS_fnc_arsenal, and the other crate has disabled-load/save button. but if I once disable load/save button and shortcut key on the other crate, the full open virtual arsenal crate also has disabled load/save button. that is not my intention. and not using ace mod, sorry.

willow rover
meager heart
#

maybe you can just check distance, if player distance <box name>👌 then hide buttons else show, @quasi rover

quasi rover
#

Thx for giving me a tip. 😅

meager heart
#

np

#

gl hf

#

keep your stick in the ice o7 😄

kindred lichen
#

Hey,

I finished my bull dozer script

//put into init of a vehicle 
  this addEventHandler ["EpeContactStart", { 
 obj2 = (_this select 1); 
 if ( obj2 iskindOf "building") then  
 {  
  obj2 hideObjectGlobal true; 
 }; 
 }]; 

Basically it'll just delete any building the vehicle drives into

#

I'm making a mission where IDF forces are clearing out the west bank, so I had to have bulldozers.

#

super simple, and fairly arcade, but might be fun for a change.

radiant needle
#

So I want to get coordinates of where player is aiming, and screenToWorld [0.5,0.5]; gets me very close, however if player is breathing heavy the crosshair obviously wont be at 0.5,0.5

#

Is there a way to reliably get where the actual crosshair/sight/scope is aiming?

little eagle
#

Only intersections with the terrain or also objects like buildings and rocks and piers?

radiant needle
#

only terrain

little eagle
#

Try this:

private _unit = player;
private _range = 1000;

private _dir = _unit weaponDirection currentWeapon _unit;
private _pos0 = AGLToASL positionCameraToWorld [0,0,0];
private _pos1 = _pos0 vectorAdd (_dir vectorMultiply _range);

lineIntersectsSurfaces [
    _pos0,
    _pos1,
    cameraOn, objNull,
    true, 1,
    "NONE", "NONE"
] param [0, []] param [0, [0,0,0]] // return
#

requires the player to carry a weapon, reports [0,0,0] if no intersection.

gleaming oyster
#

Quick q here, are HC's contained in allPlayers ? I want to check if client is hc remote to the local client

radiant needle
#

Will this work with something like a grenade launcher where the muzzle doesnt point where the sight points?

#

Wait if the player uses a laser desg, could I just use position laserTarget

little eagle
#

It will point whereever the primary muzzle points.

radiant needle
#

Or is that like cursorTarget where it needs to be aiming at an actual object

little eagle
#

Drew, you're all over the place. Is he using a grenade launcher or a binocular?

radiant needle
#

The player is able to radio in for a precision strike

#

so I was thinking any weapon, but if laser desg is more accurate, I'd prefer that

#

I just didnt want a player to be aiming with a GL when they did it and have the strike hit in zimbabwe

little eagle
#

Try what I wrote first.

radiant needle
#

Worst case I guess I just check the muzzle and if it's a GL, just default to screenToWorld

little eagle
#
currentWeapon _unit
->
(weaponState _unit # 1)

With parenthesis. But not sure weapon direction does muzzles and not weapons only.

radiant needle
#

Problem with like GL's is if the sight is aimed at 0 degrees to the horizon, the weapon (and muzzle) may be aiming 45 degrees upwards

little eagle
#

Did you read what I wrote?

radiant needle
#

So your first thing does work

#

with standard weapons

#

Haven't tried the 2nd thing though

#

What's it supposed to do?

little eagle
#

Use the current muzzle instead of the primary muzzle of the current weapon.

#

currentMuzzle is just a broken command, therefore the slightly uglier weaponState.

radiant needle
#

Won't the GL muzzle be parallel with the primary muzzle?

little eagle
#

No.

#

Muzzles are a type of weapon property. We're not comparing muzzle directions.

#

W: ET had you have to use the binculars to call in air strikes. Maybe that's what you want to do too, as it eliminates your secondary muzzles conundrum.

astral tendon
#

Any way to change the icon size? I am using other icons in the vanila files.

minor lance
#

Hello!

#

is there any script to connect to a VANT? WWithout opening vant menú?

astral tendon
#

VANT?

little eagle
#

^

astral tendon
#

That is UAV in spanish?

astral tendon
#

Hey commy, do you know about my question?

little eagle
#

No, probably not possible if not advertised by the function.

astral tendon
#

Seens like it cant take Structured Text either.

minor lance
#

Im spanish but dont knoww the name I mean Connect to a remote turret vía the VANT terminal but do it with script. I put a name on the turret (thing_1) and tried that command and nothing happened

#

returned false

astral tendon
#

So your UAV have a variable?

minor lance
#

yes

astral tendon
#
player connectTerminalToUAV (sierra1 select 0)

This is how connect to my UAV, sierra1 is its variable

inner swallow
#

Stupid question but is the UAV an empty vehicle?

minor lance
#

Its a camera

inner swallow
#

Is it yellow?

astral tendon
#

oh yeah, there is that

minor lance
#

i send a picture

#

No

#

Its not rideable

astral tendon
#

Because UAVs need a special crew

#

never saw that before

inner swallow
#

Ah. Um.

#

Did you make this?

#

If yes, check if the UAV has B_UAV_AI or something as crew

minor lance
#

class StaticWeapon: LandVehicle

inner swallow
#

Could you show us the screenshot from the editor?

astral tendon
#

oh, and your UAV needs to be in the same side as yours

minor lance
#

crew="B_UAV_AI";

#

yes

inner swallow
#

Okay then that should work 🤔

minor lance
#

Nope

inner swallow
#

I dunno, it's a mod so there could be something else going wrong

minor lance
#

It cannot be accessed via interaction

#

only via vant

inner swallow
#

Is the VANT terminal a vanilla thing?

minor lance
#

yes

astral tendon
#

you used my command I gived to you?

minor lance
#

yes

#

Not working

astral tendon
#

it returns false?

minor lance
#

When I connect to the camera, i get tha action "Take control of VANT turret"

#

yes return false

#

WWhen I connect via VANT, it returns true

astral tendon
#

wait, then you are already connected?

minor lance
#

Yes

astral tendon
#

so i think that is why, the command only connects you, not give the control

minor lance
#

Bit i need to enter the turret

#

but

#

And how can I control

#

via script

#

I knoww its possible

#

but dont know how

little eagle
#

???

minor lance
#

nope

little eagle
#

What do you mean "nope"?

minor lance
#

that shows the bottom left "map like" window

#

not get turret control

astral tendon
#

i think is this

minor lance
#

OMG

#

yes

#

little eagle
#

Which one?

minor lance
#

I used the 3 of them

#

player connectTerminalToUAV camara;
showUAVFeed false;
player action ["SwitchToUAVGunner", getConnectedUAV player];

little eagle
#
player connectTerminalToUAV camara;
player action ["SwitchToUAVGunner", camara];

should do the same.

minor lance
#

yep

#

And now

#

the last question

#

Can I force it to be allways 1st person view?

little eagle
#

Are you playing vanilla Arma or with mods?

minor lance
#

Mods

little eagle
#

With CBA?

minor lance
#

Yes

little eagle
#

sec

#
// init.sqf
["cameraView", {
    if (cameraOn == camera) then {
        gunner cameraOn switchCamera "GUNNER";
    };
}] call CBA_fnc_addPlayerEventHandler;
#

This into init.sqf

#

If it doesn't work, then try:
gunner cameraOn switchCamera "GUNNER";
->
cameraOn switchCamera "GUNNER";
Not sure if the gunner part is needed or breaks it.

minor lance
#

well

astral tendon
#

but is that SP only?

minor lance
#

now i se camera but moving player hahaha

little eagle
#

?

minor lance
#

Its not the gunner

#

cameraOn switchCamera "GUNNER";

#

this makes me to control the player but with the camera view (UAV view)

little eagle
#

And
gunner cameraOn switchCamera "GUNNER";
?

minor lance
#

Error

#

the first gunner is not correct

little eagle
#

So neither of them work?

minor lance
#

the gunner cameraOn switchCamera "GUNNER";

#

works

#

but only for player

little eagle
#

🤔

minor lance
#

I wwant to force it so the player can be only in first person while in the camera

#

I can do

#

gunner cameraOn switchCamera "GUNNER";
player connectTerminalToUAV camara;
player action ["SwitchToUAVGunner", camara];

#

So the player is in 1st person before entering the camera and it will be fine

#

just need to add a keyhandler to aviod changing to 3rd person

little eagle
#
// init.sqf
["cameraView", {
    if (cameraOn == camera) then {
        gunner cameraOn switchCamera "GUNNER";
    };
}] call CBA_fnc_addPlayerEventHandler;

That's what this ^ does though.

minor lance
#

It does but its not correct

#

I can control the player

#

not the camera itself

little eagle
#
["cameraView", {
    if (cameraOn == camera) then {
        player switchCamera "GUNNER";
        player action ["SwitchToUAVGunner", camara];
    };
}] call CBA_fnc_addPlayerEventHandler;

This maybe?

#

That's a weird bug.

astral tendon
#

I actually had that bug back in Arma 2 were I was in my friend views and i was in my body, i even record that

minor lance
#

Yep

#

That is totally working

astral tendon
#

Nice.

little eagle
#

Cool.

minor lance
#

the thing is that i have like 40 cameras XDD

#

i would need to use typeof

astral tendon
#

Good luck, lol

minor lance
#

so its all cameras not just 1

little eagle
#

Sure, you can ajust it to your need.

#

The eventhandler fires whenever the cameraView changes.

minor lance
#

Yes

astral tendon
#

Hey commy, use spawn inside of a schedule with while seens to break the schedule as we talked before

little eagle
#

Huh?

#

I'm an old man with bad memory.

minor lance
#

Thanks guys

#

you are awesome ❤

little eagle
#

ikr?

astral tendon
#

no problem

#

I had a problem were my debug console stop working and when i try to use the config button more bugs happens

#
_unit = _this;

while {Alive _unit AND _unit getVariable "arest" == "free" AND CanKillHostage == 0} do {
    if (!captive _unit AND _unit getVariable "arest" == "free" AND !(currentMuzzle _unit isEqualTo "") AND CanKillHostage == 0 AND isnil {_unit getVariable "Gased"}) then {
    sleep 5;
    if (!captive _unit AND _unit getVariable "arest" == "free" AND !(currentMuzzle _unit isEqualTo "") AND CanKillHostage == 0 AND isnil {_unit getVariable "Gased"}) then {CanKillHostage = 1};
        };
    sleep 1;
};

this was used with 10 units with spawn

#

that caused to brake the game

#

then i just move that to a script file and called with _unit execVM 'HostageSpoter.sqf';

#

and i did not have the same problem

#

before was _unit spawn {_that code}

minor lance
#

And what happened?

astral tendon
#

Rip Arma 3

minor lance
#

XD

astral tendon
#

though, what is the big deal with execVM and spawn? arent they the same thing?

minor lance
#

player spawn {_unit = _this;

while {Alive _unit AND _unit getVariable ["arest", "free"] isEqualTo "free" AND CanKillHostage isEqualTo 0} do {
if (!captive _unit AND _unit getVariable ["arest", "free"] == "free" AND !(currentMuzzle _unit isEqualTo "") AND CanKillHostage == 0 AND isnil {_unit getVariable "Gased"}) then {
sleep 5;
if (!captive _unit AND _unit getVariable ["arest", "free"] == "free" AND !(currentMuzzle _unit isEqualTo "") AND CanKillHostage == 0 AND isnil {_unit getVariable "Gased"}) then {CanKillHostage = 1};
};
sleep 1;
};}

#

that is working for me

astral tendon
#

yup, now multiplay by 10 units using that

minor lance
#

you execute on server or on player?

astral tendon
#

on the player local units

#

basicly my "bots"

#

and Arma fart to death

minor lance
#

ah

#

its AI

lone glade
#

jesus christ.... the things I read here

minor lance
#

I dont know IF AI can have loops themselfs

#

By the wway @little eagle Can i disconnect the player from The uav vía script too?

little eagle
#
player connectTerminalToUAV objNull;

?

minor lance
#

thats disconnect but im still inside the camera

little eagle
#
getConnectedUAV player action ["BackFromUAV", player];
minor lance
#

the showhud make something like it XD

#

Its weird

#

camera action ["BackFromUAV", player];

#

this make sit

#

it*

#

😉

#

thanks

little eagle
#

👌🏼

still forum
#

@astral tendon execVM "filepath" is the same as spawn compile preprocessFileLineNumbers "filepath"

astral tendon
#

Though, why one breaked and the other not?

little eagle
#

A fluke.

inner swallow
#

a question, we're having a discussion internally about where to use setSkill on a vehicle so that the accuracy of the gunner reduces

#

it seems setting it on the gunner AI doesn't have an effect unless the AI gets out of the vehicle

#

and setting this in the vehicle init seems to have unclear results, i remember getting it to work once, but there are claims that it doesn't work

#

Anyone have more concrete info?

tough abyss
#
    removeAllItems;
    addWeapon "SMG_01_Holo_F";
    addMagazines ["30Rnd_45ACP_Mag_SMG_01_Tracer_Red", 8];
    addUniform "U_O_CombatUniform_oucamo";
    addBackpack "B_Carryall_oucamo";
    addItemToBackpack "FirstAidKit";
    addItem "NVGoggles";
    addHeadGear "H_HelmetB";
};```
#

this addAction[localize""STR_Remove_Headgear"",life_fnc_headgear,"""",0,false,false,"""",' isNull objectParent player && player distance _target < 4 '];";

#

hmm... doesn't want to work

#

defined in functions.hpp and stringtable is correctly configured

#

however in-game nothing happens when middle mouse button is pressed

meager heart
#

_units < units group vehicle

_units apply {    
    _x setskill ["aimingAccuracy", 0.25 + random 0.25];
};

works for me... @inner swallow

inner swallow
#

🤔

#

No but does that actually affect them?

meager heart
#

yes

inner swallow
#

So their aim and stuff became worse?

#

Like, in practice?

meager heart
#

yep, also after they will dismount/mount multiple times...

inner swallow
#

Hmm interesting.

#

Thanks. I have a suspicion that the commander's skill is what determines this stuff

meager heart
#

vehicles are weird a bit, i'm always set it for vehicle group and seems ok... 🤷

#

(not for commander/gunner)

#

also you can check skill with skill

thorn saffron
#

Could you guys help me out a little bit? I need a simple script for the console that would report my current animation name as well as "collisionShape" name for that animation.

molten folio
#

anyone before worked with lnbAddRow

drowsy hollow
#

I tried placing an HMG-Offroad with only a gunner slotted, and used setSkill with aimingAccuracy of 0.0001 (and other values) on the gunner and the vehicle itself, but I didn't notice any difference in the actual aiming accuracy.
I could try with other vehicles and fully slotted vehicles as well though.
Using the diagnostics executable, I found that the AIDynamicError and AISuppression values are always 0 when mounted as gunner.

inner swallow
#

(above is part of the same discussion i was talking about, when i said we're having a discussion internally)

meager heart
#
0 spawn {
    private _veh = "B_G_Offroad_01_armed_F" createVehicle (player modelToWorld [0,20,0]);
    createVehicleCrew _veh;
    private _units = units group _veh;
    
    hint str [
        gunner _veh skillFinal "aimingAccuracy",
        gunner _veh skillFinal "spotDistance",
        gunner _veh skillFinal "spotTime"
    ];

    sleep 5; 

    _units apply {
        _x setskill ["aimingAccuracy", 1];
        _x setskill ["spotDistance", 1];
        _x setskill ["spotTime", 1];
    };

    hint str [
        gunner _veh skillFinal "aimingAccuracy",
        gunner _veh skillFinal "spotDistance",
        gunner _veh skillFinal "spotTime"
    ];
};
```in to debug console ^ 😀
drowsy hollow
#

yes, skillFinal and skill show the correct skill. but the actual accuracy doesn't change, does it?

#

as in: the deadliness of the technical.

inner swallow
#

yeah, that's what i meant by

So their aim and stuff became worse?
Like, in practice?```
#

the values assigned change correctly

#

but we're trying to figure out if the skill of the turret is affected by the skill of the gunner

tough abyss
#

It certainly does in UAVs in our game, but we set the skill for all units not just the gunners so if it is determined by the driver/gunner/commander doesn't matter. But definitely use setSubSkill for the accuracy and any checks for the absolute skill in the end should be checked with finalSkill.

#

If you just want something sensible to happen just grab our CF_BAI mod and it'll set all your AI up with the skills listed in its config by subskill, it will also do the dynamic stuff we talked about in regards to foilage.

inner swallow
#

hmm thanks

drowsy hollow
#

I did some more testing (on the dev branch) and it seems that the skill has only very little effect on the gunner (while mounted). Offroad HMG gunners (with skill 0) will still headshot everyone with their first shot but their bursts are generally less accurate. With skill 1 usually most (if not all) bullets hit their target.

So I suppose the skill does have a slight influence on gunners, but they will always be basically snipers even with skill set to 0.
(When testing, I set the following subskills: 'aimingAccuracy', 'aimingShake', 'aimingSpeed', 'spotDistance', 'spotTime', 'commanding', 'general' )

little eagle
#

There is skill and then there is skillFinal, which also takes into account the difficulty settings.

#

setSkill only influences the scripted / skill part of the whole.

drowsy hollow
#

I appreciate the help, but regarding skill and skillFinal:

the values assigned change correctly
but we're trying to figure out if the skill of the turret is affected by the skill of the gunner

The discussion is not about the values (you get from skill/skillFinal), it's about the actual deadliness and how accurate the bullets hit their targets.

little eagle
#

Yeah, I'm just saying that you could also lower the skill in the difficulty settings.

drowsy hollow
#

skillFinal does seem to be affected by setSkill, but it has slightly different values (probably due to game difficulty settings).

little eagle
#

skillFinal is affected by setSkill, it's just not the same number.

#

If you compare ai behavior, then you have to look at skillFinal. Otherwise you have this unknown influence of your difficulty settings.

drowsy hollow
#

The skillFinal values for the above mentioned testing were:

When setting it (all subskills) to 0:
['aimingAccuracy','aimingShake','aimingSpeed','spotDistance','spotTime','commanding','general'] apply {(gunner (vehicles#0)) skillFinal _x}
=> 
[1.17549e-038,1.17549e-038,0.5,1.17549e-038,1.17549e-038,1.17549e-038,1.17549e-038]
which is basically [0,0,0,0,0,0,0]
`
when setting skill to 1:
['aimingAccuracy','aimingShake','aimingSpeed','spotDistance','spotTime','commanding','general'] apply {(gunner (vehicles#0)) skillFinal _x}
=> 
[0.8,0.8,0.9,0.8,0.8,0.8,0.8]

My point is, there should be a whole lot more difference in the deadliness( / accuracy of bullets / number of bullets hitting the target object), between those two.

(So yes, there is this small unknown influence of your difficulty settings but it's not important for the point of this discussion.)

little eagle
#

Can't go lower than 0. That's true.

drowsy hollow
#

So, in short, my point is:
No matter which value you set, they will always snipe down everyone with headshots.
This surely must be a bug, right?

little eagle
#

Na.

inner swallow
#

?

little eagle
#

This is Arma. You wait an hour and then die in a second.

inner swallow
#

lol

little eagle
#

Wrong channel I'd say.

inner swallow
#

well, i suppose the original question was "does setSkill affect vehicles" so dunno

#

but there's no AI related channel is there?

drowsy hollow
#

(There's #arma3_ai but I think it's more about modding?)

little eagle
#

My thing is, what can this channel do about this? It's for scripting related questions. It's not like there is an alternative command one could use.

drowsy hollow
#

Assuming one would agree that this is an issue with gunner-ai, which channel would be best suited to bring this up?

tough abyss
#

It used to affect the skill more but this is all part of the package of changes in regards to spotting distance etc that came out with Tac Ops DLC. We had to dramatically increase the distance from max and min skills and rebalanced all the firing modes as well.

little eagle
#

One of those I have muted.

tough abyss
#

We usually talk about it in AI_modifications, although honestly everytime we talk about it the usual trolls come out and tell us it isn't a problem and we are just stupid and complaining so don't expect to discuss this and its impact unmolested

little eagle
#

The best this channel could offer is a script to artificially add dispersion to the weapon.

tough abyss
#

We adjust the config for x/y dispersion and hence rebalance all the guns in the base game + RHS

little eagle
#

Would be an interesting topic, because you'd have to do it on every machine, and to keep stuff synched, you could use the seed syntax of the random function.

tough abyss
#

So it is more a config fix than a scripting one at this point. That combined with cf_bai that sets the sub skills and adjusts as the game goes on based on various things.

#

But the range has come down on all the subskills. Spotting is the really obvious one as 0 is now 200m and maximum (as in skillFinal spotting) of 1.0 is 305m for infantry. But the same thing in regards to accuracy happened as well.

little eagle
tough abyss
#

Before tac ops for example in vanilla a base accuracy of 0.15 was low enough for the AI to miss you so much they could run through all their magazines at 20m. At 0.35 they would hit you in a shot or two. But now those numbers are utterly different but 0 is > 0.15 used to be so you can't make the game that easy anymore without a config setting.

little eagle
#

I'm for scripted arificial dispersion tbh.

#

Sadly the seed syntax of random doesn't support gausian apparently.

#

So you may have to use the noise map, urg,

drowsy hollow
#

scripted arificial dispersion
you mean by changing the up/dir/velocity vectors of the bullets, or did you have something else in mind?

tough abyss
#

A configurable way to set dispersion using CBA settings based on classes of weapons and synced to all clients and such so it was consistent I think would be less maintenance than what we do with a weapons pbo that overrides the appropriate values in the various base classes.

little eagle
#

Exactly that, Shado.

#

As I said, it's the best you can get from this channel about that.

#

That sounds like a cool idea, Bright.

tough abyss
#

This is the beginning of an example for what we do in our vanilla mod:
class CfgWeapons {
...
class LauncherCore : Default {
aiDispersionCoefX = 12;
aiDispersionCoefY = 12;
minRange = 20;
minRangeProbab = 0.7;
midRange = 250;
midRangeProbab = 0.5;
maxRange = 400;
maxRangeProbab = 0.15;
};

drowsy hollow
#

That script also was my initial idea to solve the gunner problem, but then I thought it must be a bug in setSkill for gunner-ai, or there must be some other way to set the gunner/turret skill. Apparently that's not the case.
So, I'd appreciate it if anyone wants to help with that dispersion script.

little eagle
#

It's for vehicle mounted machine guns?

cunning storm
#

Anyone else run into an issue where dynamic groups only work for some players on a dedicated server?

tough abyss
#

Have entries like that for just about everything in the game and the key things are aiDispersionCoefX and Y for adjusting the actual skill.

drowsy hollow
#

yes, vehicle mounted machine guns (e.g. Offroad_01_armed_base_F)

little eagle
#

Vanilla?

#

Or with mods.

tough abyss
#

The issue is we solve two problems with the mod, we solve the now broken skill values in the game but we also apply our balance for somewhat short range engagements since we don't use optics, so while the dispersion values and such are of value to others the range resetting problem isn't.

little eagle
#

Candle, it would be way less restarting and testing if you could change the numbers while the game is running.

tough abyss
#

Well it isn't that bad actually because most of it is copy pasting values onto other weapons and in practice there are 20 or so unique combinations.

#

I thought 1tac also had a similar list in their mods as well.

little eagle
#

I just want an excuse to do some more vector math for fun, lol

drowsy hollow
#

Vanilla? Or with mods. If that was directed at me: I'm looking for a vanilla solution.

little eagle
#

Ok.

tough abyss
#

Apparently not with SK having the problem. But weapons mod is the reason why I haven't really complained about that aspect, because we fixed it long ago when apex released and rebalanced so that jungle combat wasn't completely insane and when it came back with tac ops we had already been running our settings anyway so we didn't notice the rebalance as much.

#

Spotting is my remaining issue as I haven't fully solved it yet, that one is hidden and more tricky but I will get there. But the weapons solution is relatively high maintenance and puts a lot of dependencies out on things like RHS and NiArms (although they are separate PBOs so we could release those as optionals or separately I guess).

inner swallow
#

Yeah I was talking vanilla too

tough abyss
#

@inner swallow grab @CF_BAI, @CF_weapons (will need ASR_AI, RHS all 4 pieces and NiArms but can remove PBOs) and that will at least get you as far as we got on the issue. We haven't done all the weapons but it is worth a test to see if the combo solves the issue you are having.

meager heart
#

Spotting is my remaining issue
setUnitTrait camouflageCoef(for the target) and setskill spotDistance + setskill spotTime (for the shooter) > less spotting issues ? 🤔

grave bridge
#

how can I get a position by clicking on map using onMapSingleClick? I'm not sure how this method works

little eagle
#

_pos

inner swallow
#

@tough abyss hmm that won't work for the mainland unfortunately, unless those can be run server side only

tough abyss
#

Config changes like this need to be everywhere unfortunately.

#

Afraid not sldt1ck the problem is more fundamental than just tweaking the values around the edges, as I said the maximum out of combat spotting the AI can have on a spotDistance of 1.0 is 305m. Even with a spotTime of 0 they respond immediately when you cross that line so spotTime has almost no practice impact at all. Even minimal caouflageCoef changes make no difference as well.

#

It is a bug and a pretty serious one, but we keep going over the same territory on how to fix it over and over. Only BI can fix it, but we have to work around it just as we have with the dispersion values to make aiming skill work again.

still forum
grave bridge
#

yea, but I'm kinda new to scripting in arma... how can I store the result as an array ?

edgy dune
still forum
#

As an array?

#

What are you trying to do? I don't know what you mean by array.

#

@edgy dune That question doesn't make sense. key codes are key codes. And controls are controls.

grave bridge
#

I want to get coordinates by clicking on a location on map

still forum
#

Yeah. onMapSingleClick executes it's code when someone clicks. And the coordinates are in the _pos variable

#

controls usually have one or more key codes associated to them. A control doesn't have "one" key code. @edgy dune

edgy dune
#

I gotchu

#

makes sense

tame portal
#

@edgy dune Do you mean the 20 buttons you can specify in that special menu?

#

user actions or something whatever they are called

still forum
#

That are custom controls yes.

#

for the custom controls user action 1-20? <-- Considering he said he means the user actions from 1 to 20.. I guess he means the 20 useractions.

edgy dune
#

So how would I detect say crtl being pressed vs ctl c for example?

#

@tame portal and yes

still forum
#

Detect where?

tame portal
#

@edgy dune you can get what key codes are assigned to an action with this command

#

in this list are the names of the actions

#

under "Custom Controls"

edgy dune
#

Here lemme show you what I mean

tame portal
#

"User1" to "User20"

#

mind the first comment on actionKeys though, it contains some useful information when having to take CTRL, ALT, etc. into consideration

#

oh nevermind apparently that doesnt work 😄

edgy dune
#

XD, here give me a second to show what I mean

still forum
tame portal
#

@still forum How would one find out (in the keyhandler) whether someone pressed User Action 1?

#

I think thats also the question Namenai is going for

still forum
#

reliably? impossible.

tame portal
#

Hm

#

@edgy dune Is that what you meant?

edgy dune
#

Oh

#

yea

#

I was thinking I would do something like this

//Assing the keyHandler script ,which is down below, to the display EH
_display = findDisplay 46; 
_display displaySetEventHandler ["KeyDown",_keyHandler];


_keyHandler = {

switch (_this select 1) do  { 

    //This is ran 'left control' is pressed
    case 0x1D:  
    { 
      //do stuff
    }; 

    //This is ran if 'c' is pressed
    case 0x2E:  
    { 
      //do stuff
    }; 

    //Would this be how to check if 'left control' and 'c' where pressed?
    
    case (0x1D && 0x2E):  
    { 
      //do stuff
    }; 

};




}
#

RIP white spaces

still forum
#

//Would this be how to check if 'left control' and 'c' where pressed?

#

no

#

because the state of _ctrl is in _this

#

and you shall user that

tame portal
#

the parameters in your keyhandler contain information about the state of ctrl, alt and so on

edgy dune
#

I see

still forum
#

I'm not sure if keyDown fires for ctrl/shift/alt

#

but it will fire when c is pressed and you can then check the _ctrl state

edgy dune
#

oh so theres a diffrence between onKeyDown and keyDown

still forum
#

no

tame portal
#

@edgy dune instead of using _this directly, use this instead, it makes it more clear for you

#
        params [
            "_display",
            "_keyCode",
            "_isShift",
            "_isCtrl",
            "_isAlt"
        ];
still forum
#

They are the same thing. onKeyDown is the name of the config entry. and KeyDown is the name of the eventhandler

tame portal
#

what youre extracting from _this is the second parameter, the key code

#

however theres more in _this than just the key code

edgy dune
#

@tame portal ahh thx that makes it clearer

tame portal
#

there are also booleans representing the state of shift, ctrl and alt at the time of pressing a button

#

so if you want to check if ctrl and c, you can do

#
if (_isShift && _keyCode isEqualTo 0x2E) {
#

however as dedmen mentioned earlier apparently there isnt a reliable way to find out if the given input in your key handler is a specific user action

little eagle
#
#include "\a3\ui_f\hpp\defineDIKCodes.inc"

DIK_A
edgy dune
#

oh thats shame for the user actions, but atleast I can do multiple keys down

still forum
#

it works fine for useractions that use neither of ctrl/shift/alt

#

but you just cannot know that the user didn't use them

#

Instead use CBA hotkeys if you have CBA. They are easier to use and work

edgy dune
#

Yea I got cba, ill look into that then

still forum
edgy dune
#

thx

tame portal
#

cba is 1.1% ruby?

#

🤔

still forum
#

yep.

tame portal
#

and also python? was there a reason to not use python for what ruby is doing?

#

or just someones preference

meager heart
#

few weeks (+ -) ago, we had question here about "sniper script" with similar problem and after some testing was found only one issue with spot distances, actual range was affected by rain (close to what you just said like... ~300 ish meters or so), other than* that nothing... 🤷 @tough abyss

winter rose
#

then*… oh no wait

grave bridge
#

onMapSingleClick "pox=_pos";
this addAction ["posasd", {hint format["position %1",pox]}];

#

why does it always show Z as 0 ?

#

no matter where I click on map, the Z is always 0

still forum
#

because how would you select height on a 2D surface?

grave bridge
#

doesn't it read coordinates from map? with height included? why would there be 3rd value there then

still forum
#

yeah

#

height is included

#

it's height is 0 above terrain

grave bridge
#

oh crap, that's too bad...

still forum
#

why?

#

Do you need position in ASL format?

grave bridge
#

do you know any other way to get full coordinates from the map by clicking somewhere?

#

yes

still forum
little eagle
#

Is it really always 0? Or is it some negative z when you click on the sea?

grave bridge
#

always 0

little eagle
#

ATLToASL then

#

As Dedmen said.

#

It converts the above terrain level coordinate to above sea level coordinates,

still forum
#

Someone should add to the wiki that the position is ATL

meager heart
#

also player onMapSingleClick {}; < does support {}

cunning storm
#

I am trying to implement groupsMenu on a dedicated server.

#

I think that the script will only work for the first player on the server.

#

if (!isNull player) then

#

GRPMNU_groupActions = player

#

Do I need to do something like this? _player = _x;

#

if (!isNull _player) then

gleaming oyster
#

@cunning storm No, please paste your entire script. player is the: Person controlled by player.

grave bridge
#

yup, it works now, thanks @little eagle and @still forum

gleaming oyster
#

Not sure why you'd ever do that in script

cunning storm
#

if (!isNull player) then { GRPMNU_groupActions = player addAction["<t color='#EB7FAF'>Groups Menu</t>", "scripts\groupsMenu\groupActions.sqf", nil,-200, false, false, "", "_target == vehicle _this || _target == _this"]; player addEventHandler ["Respawn", { GRPMNU_groupActions = player addAction["<t color='#EB7FAF'>Groups Menu</t>", "scripts\groupsMenu\groupActions.sqf", nil,-200, false, false, "", "_target == vehicle _this || _target == _this"]; }]; };

#

That is the initGroups.sqf

gleaming oyster
cunning storm
#

It works for the first player, but, not the 2nd.

gleaming oyster
#

what do you mean 2nd player?

#

if you store this inside say iniPlayerLocal or init.sqf this should be executed for each connecting client

cunning storm
#

On a dedicated server. When another person logs in. They don't see the menu.

gleaming oyster
#

where is initGroups.sqf executed??

cunning storm
#

Ah. I am doing it in init.sqf

#

So I need to move it to the local one?

#

if (!isServer) then { execVM "scripts\groupsMenu\initGroups.sqf"; };

gleaming oyster
#

\`\ sqf

\`\

little eagle
#

if (hasInterface) then {

edgy dune
#

So I got a nice little error here ```sqf
_keyHandler={
hint format["%1",time];
};

_display = findDisplay 46;
_display displaySetEventHandler ["KeyDown",_keyHandler];
``` Now the wiki says that the params are a string and code, so thats what, I think, I have given it, but I get a error saying expected string, got code well it pretty much says that. Why is it saying this?

gleaming oyster
#
_keyHandler = "hint format['%1',time];";
_display = findDisplay 46;
_display displaySetEventHandler["KeyDown",_keyHandler];
edgy dune
#

oh I didnt know that format would still work inside the "

#

why does it have to be inside the " tho?

gleaming oyster
#

Because that's what it reads as {}, not sure on the specifics for sure. But it works just like {}, except to escape the string you need a single quote ' or double quotes ""

edgy dune
#

oh so "" would read as just a normal " inside the larger "

gleaming oyster
#
_handler = "hint format[""%1"",time]"
#
_handler = "hint format['%1',time]"
edgy dune
#

oh I c both are the same

gleaming oyster
#

Yep, and

_handler = "hint format["%1",time];"; //stops at [ 
#

does not work

edgy dune
#

ah thx,

meager heart
#

🤔

gleaming oyster
#

@meager heart Throw me into the fire if you will, but not sure on the specifics

meager heart
#

is it order ? like... do i have to... or ? 😄

gleaming oyster
#

Put me out of my misery man 🔥 🚶 💨

edgy dune
#

fire bender

meager heart
#

ok

#

puts mudnut out of his misery man

gleaming oyster
#

screams in agony

green quail
#

Would anyone here be familiar with a way to script a means for AI to actively chase down players in an attempt to attack them in melee (example- bayonet charge) please tag me if you can help or know someone that can.

austere hawk
#

@green quail look at any zombie survival mod for A3 or A2 basically. Epoch, dayz, etc

#

i think rupert or someone else also made a sword fight mod for A2 (medieval knights charging each other) that got to have something like this too

little eagle
meager heart
#

if you mean seed random randomrange afaik there are none

orchid saffron
#

Is it possible to include a .hpp file to the mission that exists only in a server mod and not in the client? Because i don´t know if my path is wrong or it is not possible.

little eagle
#

description.ext is bugged when refering external / addon space files on a dedicated server when packed.

#

Otherwise it all works fine, but you need relative paths of course, not absolute paths.

orchid saffron
#

like i´m doing #include "\myModName\pboname\macros.hpp"

#

but i get an error

little eagle
#

description.ext?

orchid saffron
#

Yes so impossible

little eagle
#

: description.ext is bugged when refering external / addon space files on a dedicated server when packed.

orchid saffron
#

feels bad

little eagle
#

Just put the file into the mission.

#

That works.

#

It's annoying, but that is how it is.

astral tendon
#

the Deleted event handle triggers when the units is about to be deleted or when it was deleted?

radiant egret
#

are there any time or date eventhandlers in arma available to execute stuff on a specific date/time ? couldnt find any usefull EH in the wiki which i could use, im currently using CBA_fnc_waitUntilAndExecute to comapre 2 times but im not so sure about the performance. ty

still forum
#

@astral tendon about to be. Why else would it get the unit as variable if it doesn't exist anymore

astral tendon
#

Thanks 👌🏿

little eagle
errant jasper
#

@little eagle Its the same approach I use to adjust shots. But only the hit location is properly synced for me in MP. For non-local machines from the shooter, the tracer fires the original path. Do you know how to fix this?

little eagle
#

This uses seeds for randomization.

#

So the dispersion should be the same anywhere.

#

seed is based on the ammo count of the shooter.

#

For non-local machines from the shooter, the tracer fires the original path.
You need to run the fired eh everywhere, as these projectiles are local objects.

errant jasper
#

Interesting, didn't know that. I created a T&E system like the one in ACE 2. So should be simple to fix then since I will just synchronize the parameter used to control the shooting immediately, rather than delay it until others enter the vehicle.

#

So if bullets are all local, how does Arma know which one is the right one? So it does not apply damage equal to the number of clients on? This is done inside the engine?

#

Hmm, that must mean that the engine uses same technique you implemented. Cause otherwise, then even rounds not modified by scripting would not be synchronized anyway?

little eagle
#

It still knows the instigator even if it's a local object.

#

Some engine magic.

#

Arma engine probably uses different math. I have this adjusted so that it uses as few sqf commands as possible -> load everything from script to code.

#

The real challenge here is using seeded randomization. The newish random syntax makes this relatively easy to do though.

#

Without seed, it would obviously be different everywhere.

errant jasper
#

Yup. Even went to implement my own hash function before the random commands. But pretty hard to with 32 bit floating numbers. Not a lot of room for arithmetic without losing digits.

little eagle
#

You mean a lookup table?

errant jasper
#

No, I was making a general hashing function. Sequence of numbers in, fixed-length number out

#

Basically the idea was the same, propagate the same global state without actually sending - e.g. make each client construct the same hash from the same input...

#

Example could be wanting to damage many buildings on the map without sending traffic. Input the classname, x,y z coords and the get deterministic hash number out. Based on that apply changes or not.

little eagle
#

What's the benefit of that compared to a 1000 element lookup table? Without dll, this seems pretty slow.

errant jasper
#

I guess there is not that much benefit after all. Mostly way more randomness than 1000 - could get it up to 16 bits long before arithmetic operations caused losing precision. And yeah, I struggled making it decent without making it slow.

grave bridge
#

hi, I'm trying to get an azimuth with getDir:
`playerpos = position player;
onMapSingleClick "targetpos = ATLToASL _pos; _alt";
azimuth = playerpos getDir targetpos;
when I try to read it, it says that azimuth is an undefinied variable.

little eagle
#

jesus

grave bridge
#

btw how do I paste a code on discord to make it more clear lol

gleaming oyster
little eagle
#

```sqf

```

gleaming oyster
#

^

astral tendon
#

/\

little eagle
#

🔼

grave bridge
#
onMapSingleClick "targetpos = ATLToASL _pos; _alt";
azimuth = playerpos getDir targetpos; ```
#

yey

#

sorry for beeing a total noob, but this scripting language is such a pain for me

little eagle
#

This script does nothing.

grave bridge
#

yes, but then I add
this addAction ["posasd", {hint format["position %1",azimuth]}];
to show the azimuth as hint

#

but it shows that the azmiuth is undefinied variable. it shows targetpos with no problem

meager heart
#

posasd everyone 👋

little eagle
#
["commy_test", "onMapSingleClick", {
    private _azimuth = player getDir _pos;
    systemChat str _azimuth;
}] call BIS_fnc_addStackedEventHandler
grave bridge
#

that works, thanks !

errant jasper
#

Are setVariable variables synchronized to objects before the CBA runs the 'init' handler from CBA_fnc_addClassEventHandler?

little eagle
#

Before init, there is no object reference you could use setVar on.

#

And setVar public even fails during init event resulting in a only local variable.

#

So I'd say "no".

errant jasper
#

I am setVariable'ing during gameplay. Then JIPs check whether the object needs special handling, their init runs later.

#

Maybe CBA_fnc_globalEventJIP is a better choice.

little eagle
#

So you already tried and it was undefined?

#

You could try initPost eventhandler instead of init.

errant jasper
#

I tried in the editor using initialization line, set it to true. Then in preInit I ran the addClassEventHandler to add the init handling. When the handler ran, it read it as false (the default fallback).

#

But using globalEventJip the code is much prettier and shorter.

little eagle
#

👍🏼

obsidian kiln
#

do respawn addeventhandlers replace older ones or they stack?

warm gorge
#

Is there anyway I can disable default Arma weather through scripting without setting weather values to 0 on a loop?

tough abyss
#

Anyone familiar with the vanilla revive system?

#

@obsidian kiln from my experience they don't stack but it seems like it depends on where its called from

obsidian kiln
#

can you use sleep on FSM ?

#

because the supposed solution as delay that is using a State: _timer = time + 10; Next yellow condition: time > _timer seems that is still checking every frame if time > _timer which is not performance friendly or am i wrong?

unborn ether
#

@fycj#4699 Not really, comparing numbers is not that intensive.

#

oh, he left. ok

little eagle
#

No one answered them sunday morning.

winter rose
#

I see him online

#

@fycj#4699

#

but can't tag him. oh.

little eagle
#

Maybe discord is bugged again.

jade abyss
#

pff, Highlightingnoobs

winter rose
#

@fycj#4699 test 😄

little eagle
#

whistles

jade abyss
#

¯_(ツ)_/¯

inner swallow
#

but snake man swears that people are stupid if discord breaks

tough abyss
#

He might have blocked you or have turned off notifications from this discord to avoid people randomly tagging him.

meager heart
#

afaik that happens when people are in stealth mode

little eagle
#

Explain this then: @obsidian kiln

jade abyss
#

😂

little eagle
#

<@jade abyss>

jade abyss
#

Yes, thats me

little eagle
#

<@jade abyss>

winter rose
#

bless you

jade abyss
#

Yes, thats me

little eagle
#

Hmm, forgot how this goes.

jade abyss
#

@little eagle

storm crow
#

@storm crow

jade abyss
#

Or that

little eagle
#

@radiant lantern

jade abyss
#

noob @little eagle

storm crow
#

Backslash infront of the mention.

little eagle
#

@jade abyss

#

YES

meager heart
#

HAX

little eagle
#

@meager heart

meager heart
#

😔

#

@little eagle 🤔

#

with id

little eagle
#

\@commy2#9913

winter rose
#

@little eagle works?

#

weee

little eagle
#

Yep.

meager heart
#

@winter rose test

little eagle
#

\@winter rose

#

Try this.

winter rose
#

👀

#

yay, now you all know my secret ID 😄

little eagle
#

Can I bad you with that?

winter rose
#

you can FBI me I think

#

no webcamz plz, I is no dressed (@meager heart no English correction plz 😄 )

little eagle
#

Redirict a CIA drone to your home.

meager heart
#

okej*

winter rose
#

lolspeek is allowed on the interwebz

#

there is even LOLCODE programming language, so there!

little eagle
#

lol

winter rose
#

code

meager heart
little eagle
#

Would SQF look better or worse after this tool?

meager heart
#
BTW If statement
BOTH SAEM a AN b
O RLY?
    YA RLY
        BTW If
    MEBBE BOTH SAEM b AN c
        BTW ElseIf
    NO WAI
        BTW Else
OIC
#

lolcode ^ 😮

#

so thats negative about sqf

little eagle
#
O RLY?
    YA RLY

    NO WAI
OIC

😂

astral tendon
#
[] spawn {
waitUntil {
    true;
    hint "this should not apear";  // it did
    true; //with out this it will keep looping
     };
};

Did i got something wrong? I though that once the waituntil got the true it would stop executing the code, but the true must be the last one to work?

#

"If the very first execution of the code returns true the command will exit immediately"

errant jasper
#

waitUntil {expr} stops running when expr evaluates to true. Your expr is made of a sequence expression that is made of multiple expression/statements. The result of a sequence expression is the result of the last expressions/statements. In your case you have 3 expression: true, hint X; and true. All expressions are evaluated, and the result of the sequence expression is the last - in this case true. Then it stops.

#

Or simplified, in waitUntil {expr}, waitUntil does not look into expr to see the different parts. Rather the entirety of expr is evaluated, and the result then given to waitUntil.

#

Also above, I should have written waitUntil expr instead of waitUntil {expr}.

astral tendon
#

exitwtih is a execption?

[] spawn {
waitUntil {
if (true) exitWith {true};
hint "??"; // do not show
      };
};
still forum
#

exitWith ends the expression

#

No. That's not an exception that is just exactly what it does.

errant jasper
#

Can you exit the waitUntil like that? Remember reading exitWith had some funkyness with certain scopes.

still forum
#

He said it works.. So please answer that question yourself...

astral tendon
#

That is some good piece of info, my thoughs on waituntil were wrong for long time.

still forum
#

You have to exitWith true. false or anything else won't exit it. Because exitWith just jumps to the end of the script. And waitUntil still wants a true to exit

errant jasper
#

Ah, of course, makes sense.

astral tendon
#
[] spawn {
waitUntil {
hint "?????"; // still running
if (true) exitWith {false};
hint "??"; // nope
      };
};
#

that is right.

still forum
#

uh.. Yes. Like I just said.

grave bridge
#

local variables inside event handlers don't work outside of them even if they are in the same script ?

still forum
#

What?

#

eventhandler scripts are seperate scripts

#

they aren't the same

#

If you just think about when eventhandler scripts execute. vs when your script executes it should be clear

little eagle
#

addEventHandler etc. puts a code block in memory and the script continues.
When the eventhandler is executed this code block is run. It's then a different script instance, and local variables don't carry over.
One solution is to store the arguments inside a object namespace variable via setVariable and to read them then inside the eventhandler code block via getVariable.

grave bridge
#

Basically what I'm trying to do is to pull out position values to use in further calculations:

 targetpos = ATLToASL _pos;
 targetposX = targetpos select 0;
 targetposY = targetpos select 1;
 targetposZ = targetpos select 2;
 hint format["X coords = %1\n Y coords = %2\n Zcoords = %3", targetposX, targetposY, targetposZ ];
}] call BIS_fnc_addStackedEventHandler;```
little eagle
#

What do you mean, pull out?

#

You have to do the further calculations all inside the eventhandler.

#

Also, you should start to use local variables (begin with underscore), so your scripts don't start conflicting variables with each other and with those from others.

grave bridge
#

yea I know, I'm just using globals for testing purposes in the editor, where locals just can't be used

#

or maybe can, but only in event handlers I guess

little eagle
#

That's not true.

grave bridge
#

what I mean is I'm testing it in character's init panel, not an sqf file

little eagle
#

Just wrap you code into:

call {

};
#

Also, consider using the debug console instead. For your own sanity.

grave bridge
#

thanks for the tip 👌

obsidian kiln
#

@unborn ether @little eagle @winter rose discord just bugged, it was 5 am when i askedl ol

grave bridge
#

in some cases, my calculations return a value -1.#IND which I guess is indefinite.
this value is <0 but still

    if (elevation < 0) then {do something}```
the if statement doesn't "do something". is there any solution to this?
#

it seems like that's not a value at all lol

#

for now I just use a workaround
if !(elevation >0), but I'm just curious

errant jasper
#

@grave bridge Any comparion with NaN will be false. Perhaps, you can use the finite command.

#

Ideally, you should probably not generate those numbers at all.

little eagle
#

@grave bridge

if (!finite _elevation) then {
    //do something
};
grave bridge
#

many thanks

edgy dune
#

with getvariable and setvariable, is using missionNamespace basicly saying instead of attaching a variable to a object, attach it to the mission it self?

#

like this ```sqf
missionNamespace getVariable "variableName";

obsidian kiln
#

yes

#

and if the mission restart the variables get wiped out

#

i don't know saving functionality though

inner swallow
#

^Profilenamespace

still forum
#

@edgy dune missionNamespace getVariable "variableName"; is the same as variableName in a normal script. missionNamespace is the default namespace. And it's not really "attached" to the mission. It's more like a global object that everyone has

quasi rover
#

why boundingBox(or boundingBoxReal) value of "data terminal" is too big, compared to other object such as ammo box or supply crate ? 😮
esp. z-value.

ammo box: [[-1.84154,-1.8197,-0.799121],[1.84154,1.8197,0.799121]]
supply box: [[-0.792432,-0.520492,-0.899068],[0.792432,0.520492,0.899068]]
data terminal: [[-2.40953,-2.40575,-4.78978],[2.40953,2.40575,4.78978]]
dim terrace
#

it has 4 points in res lod which extends it's bounding box

#

it was made like that in order to force rendering of it even when far away

#

right now it could be solved with featureType = 2 in cfg but removing those points would probably break plenty of missions

quasi rover
#

thx for explanation and detail pic.
then, Is there any way to obtain the size of data terminal? @dim terrace

astral tendon
#

I dont really get what HandleIdentity does, he fires when the unit with the EH is created or if any unit is created?

winter rose
#

if setIdentity is used I guess

astral tendon
#

and EntityRespawned is a Unit that is created?

austere granite
#

entityCreated is a entity that is created :3

still forum
astral tendon
#

That meas the palyer? though i dont think that AI units can respawn

still forum
astral tendon
#

Is that about the same as use lockIdentity when the unit is initialized?

still forum
#

Sounds like it yeah

astral tendon
#

Is there any EH when a AI unit is created?

still forum
#

CBA has a EH for when any entity is created

#

I don't know if vanilla has one. I atleast can't see one

astral tendon
#

I was thinking about doing that for new units created while the mission is on going, put scripts and stuff, my backup plan was aplying that script to a Trigger executing evrey 5 seconds, though, I think that is not friendly to perfomace.

meager heart
#

Is there any EH when a AI unit is created?
init ? 🤔

winter rose
#

only if defined
maybe in missionEventHandler though

#

nope. only when killed/respawned

meager heart
unborn ether
#

Yes, its config only EH

#

¯_(ツ)_/¯

meager heart
#

sad_face.paa

unborn ether
#

You can simulate that with really nasty loop, where playableUnits and entities is used.

#

or maybe just entities but that one missing units in vehs afaik

meager heart
#

for the missions maybe just

private _coolUnitDude = <class_name> createUnit [_coolPosition, _coolGroup];
_coolUnitDude call tag_fnc_myCoolInitFunction;
```huehue* 👀
languid fable
#

Does anyone know if you can modify the VCOM Mod settings on a server?

#

This would be through a script but it doesn't seem the VCOM Settings file changes anything

digital jacinth
#

why not just use XEH on CAManBase and post_init event?

#

I have several missions which need to edit AI after they are spawned, especially with zeus.

#

and it works just fine with an extended eventhandler defined in the description.ext

still forum
#

That's why I asked if he has CBA

#

With CBA that's literally a one liner

digital jacinth
#

pretty much

little eagle
#

init is technically not config only, but there is no way to obtain an object reference before the eventhandler is executed, and it never fires again afterwards.

winter rose
#

even on a respawn? I didn't test that one

little eagle
#

init never triggers on respawn, except for vehicle respawn, and vehicle respawn deletes all eventhandlers.

winter rose
#

thanks

little eagle
#

I think XEH init has a reapply_on_respawn flag, at least the config version. I personally hate that, makes things even more confusing.

digital jacinth
#

tbh xeh only for AI, respawning Ai should not be a thing. Players can be handler easily with iniplayerlocal.sqf and respawn EH

astral tendon
#

Is there any reason to pack missions to PBO? like performace wise?

winter rose
#

"performance", sharing, Steam-sharing, playing

#

why don't you want?

gleaming oyster
#

I don't think servers read unpacked missions

astral tendon
#

I did not think it was wort worie about it, i just send it straight to workshop.

gleaming oyster
#

It'll be packed

winter rose
#

you can have the server to read it with allow file patching I think

warm bronze
#

Hey, trying to knock down all the trees in an area in Leskovets.
any reason why this isn't cutting it?

[] spawn {    
    {
        _x setdamage [1, false];
        sleep 0.02;
    } foreach ((getMarkerPos "NukePos") nearObjects ["TREE", 700])+((getMarkerPos "NukePos") nearObjects ["SMALL TREE", 700])+((getMarkerPos "NukePos") nearObjects ["BUSH", 700])}; 
gleaming oyster
#

I believe the steam ws tool for the editor will pack your mission

#

it does mine

still forum
#

linux servers might crash when reading a mission from a folder.

#

@warm bronze that's not how nearObjects works

warm bronze
#

cheers dedmen, worked perfectly. On a side not if i destroyed everything in say 500m like that, would that destroy frames so to speak?

still forum
#

if it plays explosion particle effects then yes

#

otherwise no

warm bronze
#

cheers

thorn saffron
#

Ok, I still can't quite grasp how to set up functions in separate files and then call them.
I've got the functions.hpp called by the description.ext

class taro
{
    tag = "taro";
    class functions
    {
        file = "taro_shop\functions";
        
        class showGunShopDialog {};
        class weaponPrices {};
    };
};```
``taro_fnc_showGunShopDialog`` is called by an action and it works. Now in that function I want to call ``taro_fn_weaponPrices`` with this
```sqf
_weaponPrice = [_weaponClass] call taro_fn_weaponPrices;```
However I get the undefined variable in expression error, like the ``taro_fn_weaponPrices`` is not existing.
meager heart
#

taro_fn_weaponPrices > taro_fnc_weaponPrices 👌

winter rose
#

^ fnC yes

#

@thorn saffron

thorn saffron
#

i knew it was something small 😄

little eagle
#

Hey, at least the error message was correct for once.